Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

https://github.com/ldyken53/TVCG-progiso
31 October 2024, 16:40:01 UTC
  • Code
  • Branches (3)
  • Releases (0)
  • Visits
    • Branches
    • Releases
    • HEAD
    • refs/heads/main
    • refs/heads/master
    • refs/heads/npm
    No releases to show
  • 1eea666
  • /
  • docs
  • /
  • main.js
Raw File Download
Take a new snapshot of a software origin

If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.

Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.
swh spinner

Processing "take a new snapshot" request ...

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
  • revision
  • snapshot
origin badgecontent badge
swh:1:cnt:3753817ef3cacabe67d3394b2bdadeb20e5243e3
origin badgedirectory badge
swh:1:dir:44bcbb3ec659da162386d57ae779c8f5d7947002
origin badgerevision badge
swh:1:rev:f93ee0c2285e5a4cfe5962a28ceb12cf0ce15352
origin badgesnapshot badge
swh:1:snp:6dbeb1fbe859f48945dd22bd530e60eb1a5ac9b6

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
  • revision
  • snapshot
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Tip revision: f93ee0c2285e5a4cfe5962a28ceb12cf0ce15352 authored by Landon Dyken on 17 October 2024, 22:37:18 UTC
Update README.md
Tip revision: f93ee0c
main.js
/*
 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "./node_modules/file-saver/dist/FileSaver.min.js":
/*!*******************************************************!*\
  !*** ./node_modules/file-saver/dist/FileSaver.min.js ***!
  \*******************************************************/
/***/ (function(module, exports, __webpack_require__) {

eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof __webpack_require__.g&&__webpack_require__.g.global===__webpack_require__.g?__webpack_require__.g:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g, true&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map\n\n//# sourceURL=webpack://webgpu-prog-iso/./node_modules/file-saver/dist/FileSaver.min.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/common.js":
/*!**********************************************!*\
  !*** ./node_modules/gl-matrix/esm/common.js ***!
  \**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ARRAY_TYPE\": () => (/* binding */ ARRAY_TYPE),\n/* harmony export */   \"EPSILON\": () => (/* binding */ EPSILON),\n/* harmony export */   \"RANDOM\": () => (/* binding */ RANDOM),\n/* harmony export */   \"equals\": () => (/* binding */ equals),\n/* harmony export */   \"setMatrixArrayType\": () => (/* binding */ setMatrixArrayType),\n/* harmony export */   \"toRadian\": () => (/* binding */ toRadian)\n/* harmony export */ });\n/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nvar EPSILON = 0.000001;\nvar ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nvar RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nfunction setMatrixArrayType(type) {\n  ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nfunction toRadian(a) {\n  return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n  var y = 0,\n      i = arguments.length;\n\n  while (i--) {\n    y += arguments[i] * arguments[i];\n  }\n\n  return Math.sqrt(y);\n};\n\n//# sourceURL=webpack://webgpu-prog-iso/./node_modules/gl-matrix/esm/common.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/mat3.js":
/*!********************************************!*\
  !*** ./node_modules/gl-matrix/esm/mat3.js ***!
  \********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": () => (/* binding */ add),\n/* harmony export */   \"adjoint\": () => (/* binding */ adjoint),\n/* harmony export */   \"clone\": () => (/* binding */ clone),\n/* harmony export */   \"copy\": () => (/* binding */ copy),\n/* harmony export */   \"create\": () => (/* binding */ create),\n/* harmony export */   \"determinant\": () => (/* binding */ determinant),\n/* harmony export */   \"equals\": () => (/* binding */ equals),\n/* harmony export */   \"exactEquals\": () => (/* binding */ exactEquals),\n/* harmony export */   \"frob\": () => (/* binding */ frob),\n/* harmony export */   \"fromMat2d\": () => (/* binding */ fromMat2d),\n/* harmony export */   \"fromMat4\": () => (/* binding */ fromMat4),\n/* harmony export */   \"fromQuat\": () => (/* binding */ fromQuat),\n/* harmony export */   \"fromRotation\": () => (/* binding */ fromRotation),\n/* harmony export */   \"fromScaling\": () => (/* binding */ fromScaling),\n/* harmony export */   \"fromTranslation\": () => (/* binding */ fromTranslation),\n/* harmony export */   \"fromValues\": () => (/* binding */ fromValues),\n/* harmony export */   \"identity\": () => (/* binding */ identity),\n/* harmony export */   \"invert\": () => (/* binding */ invert),\n/* harmony export */   \"mul\": () => (/* binding */ mul),\n/* harmony export */   \"multiply\": () => (/* binding */ multiply),\n/* harmony export */   \"multiplyScalar\": () => (/* binding */ multiplyScalar),\n/* harmony export */   \"multiplyScalarAndAdd\": () => (/* binding */ multiplyScalarAndAdd),\n/* harmony export */   \"normalFromMat4\": () => (/* binding */ normalFromMat4),\n/* harmony export */   \"projection\": () => (/* binding */ projection),\n/* harmony export */   \"rotate\": () => (/* binding */ rotate),\n/* harmony export */   \"scale\": () => (/* binding */ scale),\n/* harmony export */   \"set\": () => (/* binding */ set),\n/* harmony export */   \"str\": () => (/* binding */ str),\n/* harmony export */   \"sub\": () => (/* binding */ sub),\n/* harmony export */   \"subtract\": () => (/* binding */ subtract),\n/* harmony export */   \"translate\": () => (/* binding */ translate),\n/* harmony export */   \"transpose\": () => (/* binding */ transpose)\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nfunction create() {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(9);\n\n  if (_common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE != Float32Array) {\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[5] = 0;\n    out[6] = 0;\n    out[7] = 0;\n  }\n\n  out[0] = 1;\n  out[4] = 1;\n  out[8] = 1;\n  return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a   the source 4x4 matrix\n * @returns {mat3} out\n */\n\nfunction fromMat4(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[4];\n  out[4] = a[5];\n  out[5] = a[6];\n  out[6] = a[8];\n  out[7] = a[9];\n  out[8] = a[10];\n  return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nfunction clone(a) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(9);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nfunction fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(9);\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m10;\n  out[4] = m11;\n  out[5] = m12;\n  out[6] = m20;\n  out[7] = m21;\n  out[8] = m22;\n  return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nfunction set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m10;\n  out[4] = m11;\n  out[5] = m12;\n  out[6] = m20;\n  out[7] = m21;\n  out[8] = m22;\n  return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nfunction identity(out) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 1;\n  out[5] = 0;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 1;\n  return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction transpose(out, a) {\n  // If we are transposing ourselves we can skip a few steps but have to cache some values\n  if (out === a) {\n    var a01 = a[1],\n        a02 = a[2],\n        a12 = a[5];\n    out[1] = a[3];\n    out[2] = a[6];\n    out[3] = a01;\n    out[5] = a[7];\n    out[6] = a02;\n    out[7] = a12;\n  } else {\n    out[0] = a[0];\n    out[1] = a[3];\n    out[2] = a[6];\n    out[3] = a[1];\n    out[4] = a[4];\n    out[5] = a[7];\n    out[6] = a[2];\n    out[7] = a[5];\n    out[8] = a[8];\n  }\n\n  return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction invert(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2];\n  var a10 = a[3],\n      a11 = a[4],\n      a12 = a[5];\n  var a20 = a[6],\n      a21 = a[7],\n      a22 = a[8];\n  var b01 = a22 * a11 - a12 * a21;\n  var b11 = -a22 * a10 + a12 * a20;\n  var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n  var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n  if (!det) {\n    return null;\n  }\n\n  det = 1.0 / det;\n  out[0] = b01 * det;\n  out[1] = (-a22 * a01 + a02 * a21) * det;\n  out[2] = (a12 * a01 - a02 * a11) * det;\n  out[3] = b11 * det;\n  out[4] = (a22 * a00 - a02 * a20) * det;\n  out[5] = (-a12 * a00 + a02 * a10) * det;\n  out[6] = b21 * det;\n  out[7] = (-a21 * a00 + a01 * a20) * det;\n  out[8] = (a11 * a00 - a01 * a10) * det;\n  return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction adjoint(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2];\n  var a10 = a[3],\n      a11 = a[4],\n      a12 = a[5];\n  var a20 = a[6],\n      a21 = a[7],\n      a22 = a[8];\n  out[0] = a11 * a22 - a12 * a21;\n  out[1] = a02 * a21 - a01 * a22;\n  out[2] = a01 * a12 - a02 * a11;\n  out[3] = a12 * a20 - a10 * a22;\n  out[4] = a00 * a22 - a02 * a20;\n  out[5] = a02 * a10 - a00 * a12;\n  out[6] = a10 * a21 - a11 * a20;\n  out[7] = a01 * a20 - a00 * a21;\n  out[8] = a00 * a11 - a01 * a10;\n  return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2];\n  var a10 = a[3],\n      a11 = a[4],\n      a12 = a[5];\n  var a20 = a[6],\n      a21 = a[7],\n      a22 = a[8];\n  return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nfunction multiply(out, a, b) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2];\n  var a10 = a[3],\n      a11 = a[4],\n      a12 = a[5];\n  var a20 = a[6],\n      a21 = a[7],\n      a22 = a[8];\n  var b00 = b[0],\n      b01 = b[1],\n      b02 = b[2];\n  var b10 = b[3],\n      b11 = b[4],\n      b12 = b[5];\n  var b20 = b[6],\n      b21 = b[7],\n      b22 = b[8];\n  out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n  out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n  out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n  out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n  out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n  out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n  out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n  out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n  out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n  return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nfunction translate(out, a, v) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a10 = a[3],\n      a11 = a[4],\n      a12 = a[5],\n      a20 = a[6],\n      a21 = a[7],\n      a22 = a[8],\n      x = v[0],\n      y = v[1];\n  out[0] = a00;\n  out[1] = a01;\n  out[2] = a02;\n  out[3] = a10;\n  out[4] = a11;\n  out[5] = a12;\n  out[6] = x * a00 + y * a10 + a20;\n  out[7] = x * a01 + y * a11 + a21;\n  out[8] = x * a02 + y * a12 + a22;\n  return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nfunction rotate(out, a, rad) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a10 = a[3],\n      a11 = a[4],\n      a12 = a[5],\n      a20 = a[6],\n      a21 = a[7],\n      a22 = a[8],\n      s = Math.sin(rad),\n      c = Math.cos(rad);\n  out[0] = c * a00 + s * a10;\n  out[1] = c * a01 + s * a11;\n  out[2] = c * a02 + s * a12;\n  out[3] = c * a10 - s * a00;\n  out[4] = c * a11 - s * a01;\n  out[5] = c * a12 - s * a02;\n  out[6] = a20;\n  out[7] = a21;\n  out[8] = a22;\n  return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nfunction scale(out, a, v) {\n  var x = v[0],\n      y = v[1];\n  out[0] = x * a[0];\n  out[1] = x * a[1];\n  out[2] = x * a[2];\n  out[3] = y * a[3];\n  out[4] = y * a[4];\n  out[5] = y * a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat3.identity(dest);\n *     mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nfunction fromTranslation(out, v) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 1;\n  out[5] = 0;\n  out[6] = v[0];\n  out[7] = v[1];\n  out[8] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n *     mat3.identity(dest);\n *     mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nfunction fromRotation(out, rad) {\n  var s = Math.sin(rad),\n      c = Math.cos(rad);\n  out[0] = c;\n  out[1] = s;\n  out[2] = 0;\n  out[3] = -s;\n  out[4] = c;\n  out[5] = 0;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat3.identity(dest);\n *     mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nfunction fromScaling(out, v) {\n  out[0] = v[0];\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = v[1];\n  out[5] = 0;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 1;\n  return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nfunction fromMat2d(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = 0;\n  out[3] = a[2];\n  out[4] = a[3];\n  out[5] = 0;\n  out[6] = a[4];\n  out[7] = a[5];\n  out[8] = 1;\n  return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nfunction fromQuat(out, q) {\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var yx = y * x2;\n  var yy = y * y2;\n  var zx = z * x2;\n  var zy = z * y2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  out[0] = 1 - yy - zz;\n  out[3] = yx - wz;\n  out[6] = zx + wy;\n  out[1] = yx + wz;\n  out[4] = 1 - xx - zz;\n  out[7] = zy - wx;\n  out[2] = zx - wy;\n  out[5] = zy + wx;\n  out[8] = 1 - xx - yy;\n  return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nfunction normalFromMat4(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  var b00 = a00 * a11 - a01 * a10;\n  var b01 = a00 * a12 - a02 * a10;\n  var b02 = a00 * a13 - a03 * a10;\n  var b03 = a01 * a12 - a02 * a11;\n  var b04 = a01 * a13 - a03 * a11;\n  var b05 = a02 * a13 - a03 * a12;\n  var b06 = a20 * a31 - a21 * a30;\n  var b07 = a20 * a32 - a22 * a30;\n  var b08 = a20 * a33 - a23 * a30;\n  var b09 = a21 * a32 - a22 * a31;\n  var b10 = a21 * a33 - a23 * a31;\n  var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n  var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n  if (!det) {\n    return null;\n  }\n\n  det = 1.0 / det;\n  out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n  out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n  out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n  out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n  out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n  out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n  out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n  out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n  out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n  return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nfunction projection(out, width, height) {\n  out[0] = 2 / width;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = -2 / height;\n  out[5] = 0;\n  out[6] = -1;\n  out[7] = 1;\n  out[8] = 1;\n  return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n  return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n  return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nfunction add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  out[3] = a[3] + b[3];\n  out[4] = a[4] + b[4];\n  out[5] = a[5] + b[5];\n  out[6] = a[6] + b[6];\n  out[7] = a[7] + b[7];\n  out[8] = a[8] + b[8];\n  return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nfunction subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  out[3] = a[3] - b[3];\n  out[4] = a[4] - b[4];\n  out[5] = a[5] - b[5];\n  out[6] = a[6] - b[6];\n  out[7] = a[7] - b[7];\n  out[8] = a[8] - b[8];\n  return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nfunction multiplyScalar(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  out[3] = a[3] * b;\n  out[4] = a[4] * b;\n  out[5] = a[5] * b;\n  out[6] = a[6] * b;\n  out[7] = a[7] * b;\n  out[8] = a[8] * b;\n  return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  out[3] = a[3] + b[3] * scale;\n  out[4] = a[4] + b[4] * scale;\n  out[5] = a[5] + b[5] * scale;\n  out[6] = a[6] + b[6] * scale;\n  out[7] = a[7] + b[7] * scale;\n  out[8] = a[8] + b[8] * scale;\n  return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2],\n      a3 = a[3],\n      a4 = a[4],\n      a5 = a[5],\n      a6 = a[6],\n      a7 = a[7],\n      a8 = a[8];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3],\n      b4 = b[4],\n      b5 = b[5],\n      b6 = b[6],\n      b7 = b[7],\n      b8 = b[8];\n  return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nvar sub = subtract;\n\n//# sourceURL=webpack://webgpu-prog-iso/./node_modules/gl-matrix/esm/mat3.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/mat4.js":
/*!********************************************!*\
  !*** ./node_modules/gl-matrix/esm/mat4.js ***!
  \********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": () => (/* binding */ add),\n/* harmony export */   \"adjoint\": () => (/* binding */ adjoint),\n/* harmony export */   \"clone\": () => (/* binding */ clone),\n/* harmony export */   \"copy\": () => (/* binding */ copy),\n/* harmony export */   \"create\": () => (/* binding */ create),\n/* harmony export */   \"determinant\": () => (/* binding */ determinant),\n/* harmony export */   \"equals\": () => (/* binding */ equals),\n/* harmony export */   \"exactEquals\": () => (/* binding */ exactEquals),\n/* harmony export */   \"frob\": () => (/* binding */ frob),\n/* harmony export */   \"fromQuat\": () => (/* binding */ fromQuat),\n/* harmony export */   \"fromQuat2\": () => (/* binding */ fromQuat2),\n/* harmony export */   \"fromRotation\": () => (/* binding */ fromRotation),\n/* harmony export */   \"fromRotationTranslation\": () => (/* binding */ fromRotationTranslation),\n/* harmony export */   \"fromRotationTranslationScale\": () => (/* binding */ fromRotationTranslationScale),\n/* harmony export */   \"fromRotationTranslationScaleOrigin\": () => (/* binding */ fromRotationTranslationScaleOrigin),\n/* harmony export */   \"fromScaling\": () => (/* binding */ fromScaling),\n/* harmony export */   \"fromTranslation\": () => (/* binding */ fromTranslation),\n/* harmony export */   \"fromValues\": () => (/* binding */ fromValues),\n/* harmony export */   \"fromXRotation\": () => (/* binding */ fromXRotation),\n/* harmony export */   \"fromYRotation\": () => (/* binding */ fromYRotation),\n/* harmony export */   \"fromZRotation\": () => (/* binding */ fromZRotation),\n/* harmony export */   \"frustum\": () => (/* binding */ frustum),\n/* harmony export */   \"getRotation\": () => (/* binding */ getRotation),\n/* harmony export */   \"getScaling\": () => (/* binding */ getScaling),\n/* harmony export */   \"getTranslation\": () => (/* binding */ getTranslation),\n/* harmony export */   \"identity\": () => (/* binding */ identity),\n/* harmony export */   \"invert\": () => (/* binding */ invert),\n/* harmony export */   \"lookAt\": () => (/* binding */ lookAt),\n/* harmony export */   \"mul\": () => (/* binding */ mul),\n/* harmony export */   \"multiply\": () => (/* binding */ multiply),\n/* harmony export */   \"multiplyScalar\": () => (/* binding */ multiplyScalar),\n/* harmony export */   \"multiplyScalarAndAdd\": () => (/* binding */ multiplyScalarAndAdd),\n/* harmony export */   \"ortho\": () => (/* binding */ ortho),\n/* harmony export */   \"orthoNO\": () => (/* binding */ orthoNO),\n/* harmony export */   \"orthoZO\": () => (/* binding */ orthoZO),\n/* harmony export */   \"perspective\": () => (/* binding */ perspective),\n/* harmony export */   \"perspectiveFromFieldOfView\": () => (/* binding */ perspectiveFromFieldOfView),\n/* harmony export */   \"perspectiveNO\": () => (/* binding */ perspectiveNO),\n/* harmony export */   \"perspectiveZO\": () => (/* binding */ perspectiveZO),\n/* harmony export */   \"rotate\": () => (/* binding */ rotate),\n/* harmony export */   \"rotateX\": () => (/* binding */ rotateX),\n/* harmony export */   \"rotateY\": () => (/* binding */ rotateY),\n/* harmony export */   \"rotateZ\": () => (/* binding */ rotateZ),\n/* harmony export */   \"scale\": () => (/* binding */ scale),\n/* harmony export */   \"set\": () => (/* binding */ set),\n/* harmony export */   \"str\": () => (/* binding */ str),\n/* harmony export */   \"sub\": () => (/* binding */ sub),\n/* harmony export */   \"subtract\": () => (/* binding */ subtract),\n/* harmony export */   \"targetTo\": () => (/* binding */ targetTo),\n/* harmony export */   \"translate\": () => (/* binding */ translate),\n/* harmony export */   \"transpose\": () => (/* binding */ transpose)\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nfunction create() {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(16);\n\n  if (_common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE != Float32Array) {\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n  }\n\n  out[0] = 1;\n  out[5] = 1;\n  out[10] = 1;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nfunction clone(a) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(16);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  out[9] = a[9];\n  out[10] = a[10];\n  out[11] = a[11];\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4];\n  out[5] = a[5];\n  out[6] = a[6];\n  out[7] = a[7];\n  out[8] = a[8];\n  out[9] = a[9];\n  out[10] = a[10];\n  out[11] = a[11];\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nfunction fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(16);\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m03;\n  out[4] = m10;\n  out[5] = m11;\n  out[6] = m12;\n  out[7] = m13;\n  out[8] = m20;\n  out[9] = m21;\n  out[10] = m22;\n  out[11] = m23;\n  out[12] = m30;\n  out[13] = m31;\n  out[14] = m32;\n  out[15] = m33;\n  return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nfunction set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n  out[0] = m00;\n  out[1] = m01;\n  out[2] = m02;\n  out[3] = m03;\n  out[4] = m10;\n  out[5] = m11;\n  out[6] = m12;\n  out[7] = m13;\n  out[8] = m20;\n  out[9] = m21;\n  out[10] = m22;\n  out[11] = m23;\n  out[12] = m30;\n  out[13] = m31;\n  out[14] = m32;\n  out[15] = m33;\n  return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nfunction identity(out) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction transpose(out, a) {\n  // If we are transposing ourselves we can skip a few steps but have to cache some values\n  if (out === a) {\n    var a01 = a[1],\n        a02 = a[2],\n        a03 = a[3];\n    var a12 = a[6],\n        a13 = a[7];\n    var a23 = a[11];\n    out[1] = a[4];\n    out[2] = a[8];\n    out[3] = a[12];\n    out[4] = a01;\n    out[6] = a[9];\n    out[7] = a[13];\n    out[8] = a02;\n    out[9] = a12;\n    out[11] = a[14];\n    out[12] = a03;\n    out[13] = a13;\n    out[14] = a23;\n  } else {\n    out[0] = a[0];\n    out[1] = a[4];\n    out[2] = a[8];\n    out[3] = a[12];\n    out[4] = a[1];\n    out[5] = a[5];\n    out[6] = a[9];\n    out[7] = a[13];\n    out[8] = a[2];\n    out[9] = a[6];\n    out[10] = a[10];\n    out[11] = a[14];\n    out[12] = a[3];\n    out[13] = a[7];\n    out[14] = a[11];\n    out[15] = a[15];\n  }\n\n  return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction invert(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  var b00 = a00 * a11 - a01 * a10;\n  var b01 = a00 * a12 - a02 * a10;\n  var b02 = a00 * a13 - a03 * a10;\n  var b03 = a01 * a12 - a02 * a11;\n  var b04 = a01 * a13 - a03 * a11;\n  var b05 = a02 * a13 - a03 * a12;\n  var b06 = a20 * a31 - a21 * a30;\n  var b07 = a20 * a32 - a22 * a30;\n  var b08 = a20 * a33 - a23 * a30;\n  var b09 = a21 * a32 - a22 * a31;\n  var b10 = a21 * a33 - a23 * a31;\n  var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n  var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n  if (!det) {\n    return null;\n  }\n\n  det = 1.0 / det;\n  out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n  out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n  out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n  out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n  out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n  out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n  out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n  out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n  out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n  out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n  out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n  out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n  out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n  out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n  out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n  out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n  return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction adjoint(out, a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n  out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n  out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n  out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n  out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n  out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n  out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n  out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n  out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n  out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n  out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n  out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n  out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n  out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n  out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n  out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n  return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n  var b00 = a00 * a11 - a01 * a10;\n  var b01 = a00 * a12 - a02 * a10;\n  var b02 = a00 * a13 - a03 * a10;\n  var b03 = a01 * a12 - a02 * a11;\n  var b04 = a01 * a13 - a03 * a11;\n  var b05 = a02 * a13 - a03 * a12;\n  var b06 = a20 * a31 - a21 * a30;\n  var b07 = a20 * a32 - a22 * a30;\n  var b08 = a20 * a33 - a23 * a30;\n  var b09 = a21 * a32 - a22 * a31;\n  var b10 = a21 * a33 - a23 * a31;\n  var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n  return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction multiply(out, a, b) {\n  var a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3];\n  var a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7];\n  var a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11];\n  var a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15]; // Cache only the current line of the second matrix\n\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3];\n  out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[4];\n  b1 = b[5];\n  b2 = b[6];\n  b3 = b[7];\n  out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[8];\n  b1 = b[9];\n  b2 = b[10];\n  b3 = b[11];\n  out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  b0 = b[12];\n  b1 = b[13];\n  b2 = b[14];\n  b3 = b[15];\n  out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n  out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n  out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n  out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nfunction translate(out, a, v) {\n  var x = v[0],\n      y = v[1],\n      z = v[2];\n  var a00, a01, a02, a03;\n  var a10, a11, a12, a13;\n  var a20, a21, a22, a23;\n\n  if (a === out) {\n    out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n    out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n    out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n    out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n  } else {\n    a00 = a[0];\n    a01 = a[1];\n    a02 = a[2];\n    a03 = a[3];\n    a10 = a[4];\n    a11 = a[5];\n    a12 = a[6];\n    a13 = a[7];\n    a20 = a[8];\n    a21 = a[9];\n    a22 = a[10];\n    a23 = a[11];\n    out[0] = a00;\n    out[1] = a01;\n    out[2] = a02;\n    out[3] = a03;\n    out[4] = a10;\n    out[5] = a11;\n    out[6] = a12;\n    out[7] = a13;\n    out[8] = a20;\n    out[9] = a21;\n    out[10] = a22;\n    out[11] = a23;\n    out[12] = a00 * x + a10 * y + a20 * z + a[12];\n    out[13] = a01 * x + a11 * y + a21 * z + a[13];\n    out[14] = a02 * x + a12 * y + a22 * z + a[14];\n    out[15] = a03 * x + a13 * y + a23 * z + a[15];\n  }\n\n  return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nfunction scale(out, a, v) {\n  var x = v[0],\n      y = v[1],\n      z = v[2];\n  out[0] = a[0] * x;\n  out[1] = a[1] * x;\n  out[2] = a[2] * x;\n  out[3] = a[3] * x;\n  out[4] = a[4] * y;\n  out[5] = a[5] * y;\n  out[6] = a[6] * y;\n  out[7] = a[7] * y;\n  out[8] = a[8] * z;\n  out[9] = a[9] * z;\n  out[10] = a[10] * z;\n  out[11] = a[11] * z;\n  out[12] = a[12];\n  out[13] = a[13];\n  out[14] = a[14];\n  out[15] = a[15];\n  return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nfunction rotate(out, a, rad, axis) {\n  var x = axis[0],\n      y = axis[1],\n      z = axis[2];\n  var len = Math.hypot(x, y, z);\n  var s, c, t;\n  var a00, a01, a02, a03;\n  var a10, a11, a12, a13;\n  var a20, a21, a22, a23;\n  var b00, b01, b02;\n  var b10, b11, b12;\n  var b20, b21, b22;\n\n  if (len < _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON) {\n    return null;\n  }\n\n  len = 1 / len;\n  x *= len;\n  y *= len;\n  z *= len;\n  s = Math.sin(rad);\n  c = Math.cos(rad);\n  t = 1 - c;\n  a00 = a[0];\n  a01 = a[1];\n  a02 = a[2];\n  a03 = a[3];\n  a10 = a[4];\n  a11 = a[5];\n  a12 = a[6];\n  a13 = a[7];\n  a20 = a[8];\n  a21 = a[9];\n  a22 = a[10];\n  a23 = a[11]; // Construct the elements of the rotation matrix\n\n  b00 = x * x * t + c;\n  b01 = y * x * t + z * s;\n  b02 = z * x * t - y * s;\n  b10 = x * y * t - z * s;\n  b11 = y * y * t + c;\n  b12 = z * y * t + x * s;\n  b20 = x * z * t + y * s;\n  b21 = y * z * t - x * s;\n  b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n  out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n  out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n  out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n  out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n  out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n  out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n  out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n  out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n  out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n  out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n  out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n  out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged last row\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  }\n\n  return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateX(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a10 = a[4];\n  var a11 = a[5];\n  var a12 = a[6];\n  var a13 = a[7];\n  var a20 = a[8];\n  var a21 = a[9];\n  var a22 = a[10];\n  var a23 = a[11];\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged rows\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  } // Perform axis-specific matrix multiplication\n\n\n  out[4] = a10 * c + a20 * s;\n  out[5] = a11 * c + a21 * s;\n  out[6] = a12 * c + a22 * s;\n  out[7] = a13 * c + a23 * s;\n  out[8] = a20 * c - a10 * s;\n  out[9] = a21 * c - a11 * s;\n  out[10] = a22 * c - a12 * s;\n  out[11] = a23 * c - a13 * s;\n  return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateY(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a00 = a[0];\n  var a01 = a[1];\n  var a02 = a[2];\n  var a03 = a[3];\n  var a20 = a[8];\n  var a21 = a[9];\n  var a22 = a[10];\n  var a23 = a[11];\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged rows\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  } // Perform axis-specific matrix multiplication\n\n\n  out[0] = a00 * c - a20 * s;\n  out[1] = a01 * c - a21 * s;\n  out[2] = a02 * c - a22 * s;\n  out[3] = a03 * c - a23 * s;\n  out[8] = a00 * s + a20 * c;\n  out[9] = a01 * s + a21 * c;\n  out[10] = a02 * s + a22 * c;\n  out[11] = a03 * s + a23 * c;\n  return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateZ(out, a, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad);\n  var a00 = a[0];\n  var a01 = a[1];\n  var a02 = a[2];\n  var a03 = a[3];\n  var a10 = a[4];\n  var a11 = a[5];\n  var a12 = a[6];\n  var a13 = a[7];\n\n  if (a !== out) {\n    // If the source and destination differ, copy the unchanged last row\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n  } // Perform axis-specific matrix multiplication\n\n\n  out[0] = a00 * c + a10 * s;\n  out[1] = a01 * c + a11 * s;\n  out[2] = a02 * c + a12 * s;\n  out[3] = a03 * c + a13 * s;\n  out[4] = a10 * c - a00 * s;\n  out[5] = a11 * c - a01 * s;\n  out[6] = a12 * c - a02 * s;\n  out[7] = a13 * c - a03 * s;\n  return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nfunction fromTranslation(out, v) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nfunction fromScaling(out, v) {\n  out[0] = v[0];\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = v[1];\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = v[2];\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nfunction fromRotation(out, rad, axis) {\n  var x = axis[0],\n      y = axis[1],\n      z = axis[2];\n  var len = Math.hypot(x, y, z);\n  var s, c, t;\n\n  if (len < _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON) {\n    return null;\n  }\n\n  len = 1 / len;\n  x *= len;\n  y *= len;\n  z *= len;\n  s = Math.sin(rad);\n  c = Math.cos(rad);\n  t = 1 - c; // Perform rotation-specific matrix multiplication\n\n  out[0] = x * x * t + c;\n  out[1] = y * x * t + z * s;\n  out[2] = z * x * t - y * s;\n  out[3] = 0;\n  out[4] = x * y * t - z * s;\n  out[5] = y * y * t + c;\n  out[6] = z * y * t + x * s;\n  out[7] = 0;\n  out[8] = x * z * t + y * s;\n  out[9] = y * z * t - x * s;\n  out[10] = z * z * t + c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromXRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = c;\n  out[6] = s;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = -s;\n  out[10] = c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromYRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n  out[0] = c;\n  out[1] = 0;\n  out[2] = -s;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = 1;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = s;\n  out[9] = 0;\n  out[10] = c;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromZRotation(out, rad) {\n  var s = Math.sin(rad);\n  var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n  out[0] = c;\n  out[1] = s;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = -s;\n  out[5] = c;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 1;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslation(out, q, v) {\n  // Quaternion math\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  out[0] = 1 - (yy + zz);\n  out[1] = xy + wz;\n  out[2] = xz - wy;\n  out[3] = 0;\n  out[4] = xy - wz;\n  out[5] = 1 - (xx + zz);\n  out[6] = yz + wx;\n  out[7] = 0;\n  out[8] = xz + wy;\n  out[9] = yz - wx;\n  out[10] = 1 - (xx + yy);\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nfunction fromQuat2(out, a) {\n  var translation = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(3);\n  var bx = -a[0],\n      by = -a[1],\n      bz = -a[2],\n      bw = a[3],\n      ax = a[4],\n      ay = a[5],\n      az = a[6],\n      aw = a[7];\n  var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n  if (magnitude > 0) {\n    translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n    translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n    translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n  } else {\n    translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n    translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n    translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n  }\n\n  fromRotationTranslation(out, a, translation);\n  return out;\n}\n/**\n * Returns the translation vector component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslation,\n *  the returned vector will be the same as the translation vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive translation component\n * @param  {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nfunction getTranslation(out, mat) {\n  out[0] = mat[12];\n  out[1] = mat[13];\n  out[2] = mat[14];\n  return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslationScale\n *  with a normalized Quaternion paramter, the returned vector will be\n *  the same as the scaling vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive scaling factor component\n * @param  {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nfunction getScaling(out, mat) {\n  var m11 = mat[0];\n  var m12 = mat[1];\n  var m13 = mat[2];\n  var m21 = mat[4];\n  var m22 = mat[5];\n  var m23 = mat[6];\n  var m31 = mat[8];\n  var m32 = mat[9];\n  var m33 = mat[10];\n  out[0] = Math.hypot(m11, m12, m13);\n  out[1] = Math.hypot(m21, m22, m23);\n  out[2] = Math.hypot(m31, m32, m33);\n  return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n *  of a transformation matrix. If a matrix is built with\n *  fromRotationTranslation, the returned quaternion will be the\n *  same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nfunction getRotation(out, mat) {\n  var scaling = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(3);\n  getScaling(scaling, mat);\n  var is1 = 1 / scaling[0];\n  var is2 = 1 / scaling[1];\n  var is3 = 1 / scaling[2];\n  var sm11 = mat[0] * is1;\n  var sm12 = mat[1] * is2;\n  var sm13 = mat[2] * is3;\n  var sm21 = mat[4] * is1;\n  var sm22 = mat[5] * is2;\n  var sm23 = mat[6] * is3;\n  var sm31 = mat[8] * is1;\n  var sm32 = mat[9] * is2;\n  var sm33 = mat[10] * is3;\n  var trace = sm11 + sm22 + sm33;\n  var S = 0;\n\n  if (trace > 0) {\n    S = Math.sqrt(trace + 1.0) * 2;\n    out[3] = 0.25 * S;\n    out[0] = (sm23 - sm32) / S;\n    out[1] = (sm31 - sm13) / S;\n    out[2] = (sm12 - sm21) / S;\n  } else if (sm11 > sm22 && sm11 > sm33) {\n    S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n    out[3] = (sm23 - sm32) / S;\n    out[0] = 0.25 * S;\n    out[1] = (sm12 + sm21) / S;\n    out[2] = (sm31 + sm13) / S;\n  } else if (sm22 > sm33) {\n    S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n    out[3] = (sm31 - sm13) / S;\n    out[0] = (sm12 + sm21) / S;\n    out[1] = 0.25 * S;\n    out[2] = (sm23 + sm32) / S;\n  } else {\n    S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n    out[3] = (sm12 - sm21) / S;\n    out[0] = (sm31 + sm13) / S;\n    out[1] = (sm23 + sm32) / S;\n    out[2] = 0.25 * S;\n  }\n\n  return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *     mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslationScale(out, q, v, s) {\n  // Quaternion math\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  var sx = s[0];\n  var sy = s[1];\n  var sz = s[2];\n  out[0] = (1 - (yy + zz)) * sx;\n  out[1] = (xy + wz) * sx;\n  out[2] = (xz - wy) * sx;\n  out[3] = 0;\n  out[4] = (xy - wz) * sy;\n  out[5] = (1 - (xx + zz)) * sy;\n  out[6] = (yz + wx) * sy;\n  out[7] = 0;\n  out[8] = (xz + wy) * sz;\n  out[9] = (yz - wx) * sz;\n  out[10] = (1 - (xx + yy)) * sz;\n  out[11] = 0;\n  out[12] = v[0];\n  out[13] = v[1];\n  out[14] = v[2];\n  out[15] = 1;\n  return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     mat4.translate(dest, origin);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *     mat4.scale(dest, scale)\n *     mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n  // Quaternion math\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var xy = x * y2;\n  var xz = x * z2;\n  var yy = y * y2;\n  var yz = y * z2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  var sx = s[0];\n  var sy = s[1];\n  var sz = s[2];\n  var ox = o[0];\n  var oy = o[1];\n  var oz = o[2];\n  var out0 = (1 - (yy + zz)) * sx;\n  var out1 = (xy + wz) * sx;\n  var out2 = (xz - wy) * sx;\n  var out4 = (xy - wz) * sy;\n  var out5 = (1 - (xx + zz)) * sy;\n  var out6 = (yz + wx) * sy;\n  var out8 = (xz + wy) * sz;\n  var out9 = (yz - wx) * sz;\n  var out10 = (1 - (xx + yy)) * sz;\n  out[0] = out0;\n  out[1] = out1;\n  out[2] = out2;\n  out[3] = 0;\n  out[4] = out4;\n  out[5] = out5;\n  out[6] = out6;\n  out[7] = 0;\n  out[8] = out8;\n  out[9] = out9;\n  out[10] = out10;\n  out[11] = 0;\n  out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n  out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n  out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n  out[15] = 1;\n  return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nfunction fromQuat(out, q) {\n  var x = q[0],\n      y = q[1],\n      z = q[2],\n      w = q[3];\n  var x2 = x + x;\n  var y2 = y + y;\n  var z2 = z + z;\n  var xx = x * x2;\n  var yx = y * x2;\n  var yy = y * y2;\n  var zx = z * x2;\n  var zy = z * y2;\n  var zz = z * z2;\n  var wx = w * x2;\n  var wy = w * y2;\n  var wz = w * z2;\n  out[0] = 1 - yy - zz;\n  out[1] = yx + wz;\n  out[2] = zx - wy;\n  out[3] = 0;\n  out[4] = yx - wz;\n  out[5] = 1 - xx - zz;\n  out[6] = zy + wx;\n  out[7] = 0;\n  out[8] = zx + wy;\n  out[9] = zy - wx;\n  out[10] = 1 - xx - yy;\n  out[11] = 0;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = 0;\n  out[15] = 1;\n  return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction frustum(out, left, right, bottom, top, near, far) {\n  var rl = 1 / (right - left);\n  var tb = 1 / (top - bottom);\n  var nf = 1 / (near - far);\n  out[0] = near * 2 * rl;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = near * 2 * tb;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = (right + left) * rl;\n  out[9] = (top + bottom) * tb;\n  out[10] = (far + near) * nf;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[14] = far * near * 2 * nf;\n  out[15] = 0;\n  return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nfunction perspectiveNO(out, fovy, aspect, near, far) {\n  var f = 1.0 / Math.tan(fovy / 2),\n      nf;\n  out[0] = f / aspect;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = f;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[15] = 0;\n\n  if (far != null && far !== Infinity) {\n    nf = 1 / (near - far);\n    out[10] = (far + near) * nf;\n    out[14] = 2 * far * near * nf;\n  } else {\n    out[10] = -1;\n    out[14] = -2 * near;\n  }\n\n  return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nvar perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nfunction perspectiveZO(out, fovy, aspect, near, far) {\n  var f = 1.0 / Math.tan(fovy / 2),\n      nf;\n  out[0] = f / aspect;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = f;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[11] = -1;\n  out[12] = 0;\n  out[13] = 0;\n  out[15] = 0;\n\n  if (far != null && far !== Infinity) {\n    nf = 1 / (near - far);\n    out[10] = far * nf;\n    out[14] = far * near * nf;\n  } else {\n    out[10] = -1;\n    out[14] = -near;\n  }\n\n  return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction perspectiveFromFieldOfView(out, fov, near, far) {\n  var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n  var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n  var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n  var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n  var xScale = 2.0 / (leftTan + rightTan);\n  var yScale = 2.0 / (upTan + downTan);\n  out[0] = xScale;\n  out[1] = 0.0;\n  out[2] = 0.0;\n  out[3] = 0.0;\n  out[4] = 0.0;\n  out[5] = yScale;\n  out[6] = 0.0;\n  out[7] = 0.0;\n  out[8] = -((leftTan - rightTan) * xScale * 0.5);\n  out[9] = (upTan - downTan) * yScale * 0.5;\n  out[10] = far / (near - far);\n  out[11] = -1.0;\n  out[12] = 0.0;\n  out[13] = 0.0;\n  out[14] = far * near / (near - far);\n  out[15] = 0.0;\n  return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction orthoNO(out, left, right, bottom, top, near, far) {\n  var lr = 1 / (left - right);\n  var bt = 1 / (bottom - top);\n  var nf = 1 / (near - far);\n  out[0] = -2 * lr;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = -2 * bt;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = 2 * nf;\n  out[11] = 0;\n  out[12] = (left + right) * lr;\n  out[13] = (top + bottom) * bt;\n  out[14] = (far + near) * nf;\n  out[15] = 1;\n  return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nvar ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction orthoZO(out, left, right, bottom, top, near, far) {\n  var lr = 1 / (left - right);\n  var bt = 1 / (bottom - top);\n  var nf = 1 / (near - far);\n  out[0] = -2 * lr;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 0;\n  out[4] = 0;\n  out[5] = -2 * bt;\n  out[6] = 0;\n  out[7] = 0;\n  out[8] = 0;\n  out[9] = 0;\n  out[10] = nf;\n  out[11] = 0;\n  out[12] = (left + right) * lr;\n  out[13] = (top + bottom) * bt;\n  out[14] = near * nf;\n  out[15] = 1;\n  return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nfunction lookAt(out, eye, center, up) {\n  var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n  var eyex = eye[0];\n  var eyey = eye[1];\n  var eyez = eye[2];\n  var upx = up[0];\n  var upy = up[1];\n  var upz = up[2];\n  var centerx = center[0];\n  var centery = center[1];\n  var centerz = center[2];\n\n  if (Math.abs(eyex - centerx) < _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON && Math.abs(eyey - centery) < _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON && Math.abs(eyez - centerz) < _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON) {\n    return identity(out);\n  }\n\n  z0 = eyex - centerx;\n  z1 = eyey - centery;\n  z2 = eyez - centerz;\n  len = 1 / Math.hypot(z0, z1, z2);\n  z0 *= len;\n  z1 *= len;\n  z2 *= len;\n  x0 = upy * z2 - upz * z1;\n  x1 = upz * z0 - upx * z2;\n  x2 = upx * z1 - upy * z0;\n  len = Math.hypot(x0, x1, x2);\n\n  if (!len) {\n    x0 = 0;\n    x1 = 0;\n    x2 = 0;\n  } else {\n    len = 1 / len;\n    x0 *= len;\n    x1 *= len;\n    x2 *= len;\n  }\n\n  y0 = z1 * x2 - z2 * x1;\n  y1 = z2 * x0 - z0 * x2;\n  y2 = z0 * x1 - z1 * x0;\n  len = Math.hypot(y0, y1, y2);\n\n  if (!len) {\n    y0 = 0;\n    y1 = 0;\n    y2 = 0;\n  } else {\n    len = 1 / len;\n    y0 *= len;\n    y1 *= len;\n    y2 *= len;\n  }\n\n  out[0] = x0;\n  out[1] = y0;\n  out[2] = z0;\n  out[3] = 0;\n  out[4] = x1;\n  out[5] = y1;\n  out[6] = z1;\n  out[7] = 0;\n  out[8] = x2;\n  out[9] = y2;\n  out[10] = z2;\n  out[11] = 0;\n  out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n  out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n  out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n  out[15] = 1;\n  return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nfunction targetTo(out, eye, target, up) {\n  var eyex = eye[0],\n      eyey = eye[1],\n      eyez = eye[2],\n      upx = up[0],\n      upy = up[1],\n      upz = up[2];\n  var z0 = eyex - target[0],\n      z1 = eyey - target[1],\n      z2 = eyez - target[2];\n  var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n    z0 *= len;\n    z1 *= len;\n    z2 *= len;\n  }\n\n  var x0 = upy * z2 - upz * z1,\n      x1 = upz * z0 - upx * z2,\n      x2 = upx * z1 - upy * z0;\n  len = x0 * x0 + x1 * x1 + x2 * x2;\n\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n    x0 *= len;\n    x1 *= len;\n    x2 *= len;\n  }\n\n  out[0] = x0;\n  out[1] = x1;\n  out[2] = x2;\n  out[3] = 0;\n  out[4] = z1 * x2 - z2 * x1;\n  out[5] = z2 * x0 - z0 * x2;\n  out[6] = z0 * x1 - z1 * x0;\n  out[7] = 0;\n  out[8] = z0;\n  out[9] = z1;\n  out[10] = z2;\n  out[11] = 0;\n  out[12] = eyex;\n  out[13] = eyey;\n  out[14] = eyez;\n  out[15] = 1;\n  return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n  return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n  return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  out[3] = a[3] + b[3];\n  out[4] = a[4] + b[4];\n  out[5] = a[5] + b[5];\n  out[6] = a[6] + b[6];\n  out[7] = a[7] + b[7];\n  out[8] = a[8] + b[8];\n  out[9] = a[9] + b[9];\n  out[10] = a[10] + b[10];\n  out[11] = a[11] + b[11];\n  out[12] = a[12] + b[12];\n  out[13] = a[13] + b[13];\n  out[14] = a[14] + b[14];\n  out[15] = a[15] + b[15];\n  return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  out[3] = a[3] - b[3];\n  out[4] = a[4] - b[4];\n  out[5] = a[5] - b[5];\n  out[6] = a[6] - b[6];\n  out[7] = a[7] - b[7];\n  out[8] = a[8] - b[8];\n  out[9] = a[9] - b[9];\n  out[10] = a[10] - b[10];\n  out[11] = a[11] - b[11];\n  out[12] = a[12] - b[12];\n  out[13] = a[13] - b[13];\n  out[14] = a[14] - b[14];\n  out[15] = a[15] - b[15];\n  return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nfunction multiplyScalar(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  out[3] = a[3] * b;\n  out[4] = a[4] * b;\n  out[5] = a[5] * b;\n  out[6] = a[6] * b;\n  out[7] = a[7] * b;\n  out[8] = a[8] * b;\n  out[9] = a[9] * b;\n  out[10] = a[10] * b;\n  out[11] = a[11] * b;\n  out[12] = a[12] * b;\n  out[13] = a[13] * b;\n  out[14] = a[14] * b;\n  out[15] = a[15] * b;\n  return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  out[3] = a[3] + b[3] * scale;\n  out[4] = a[4] + b[4] * scale;\n  out[5] = a[5] + b[5] * scale;\n  out[6] = a[6] + b[6] * scale;\n  out[7] = a[7] + b[7] * scale;\n  out[8] = a[8] + b[8] * scale;\n  out[9] = a[9] + b[9] * scale;\n  out[10] = a[10] + b[10] * scale;\n  out[11] = a[11] + b[11] * scale;\n  out[12] = a[12] + b[12] * scale;\n  out[13] = a[13] + b[13] * scale;\n  out[14] = a[14] + b[14] * scale;\n  out[15] = a[15] + b[15] * scale;\n  return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2],\n      a3 = a[3];\n  var a4 = a[4],\n      a5 = a[5],\n      a6 = a[6],\n      a7 = a[7];\n  var a8 = a[8],\n      a9 = a[9],\n      a10 = a[10],\n      a11 = a[11];\n  var a12 = a[12],\n      a13 = a[13],\n      a14 = a[14],\n      a15 = a[15];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3];\n  var b4 = b[4],\n      b5 = b[5],\n      b6 = b[6],\n      b7 = b[7];\n  var b8 = b[8],\n      b9 = b[9],\n      b10 = b[10],\n      b11 = b[11];\n  var b12 = b[12],\n      b13 = b[13],\n      b14 = b[14],\n      b15 = b[15];\n  return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nvar sub = subtract;\n\n//# sourceURL=webpack://webgpu-prog-iso/./node_modules/gl-matrix/esm/mat4.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/quat.js":
/*!********************************************!*\
  !*** ./node_modules/gl-matrix/esm/quat.js ***!
  \********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": () => (/* binding */ add),\n/* harmony export */   \"calculateW\": () => (/* binding */ calculateW),\n/* harmony export */   \"clone\": () => (/* binding */ clone),\n/* harmony export */   \"conjugate\": () => (/* binding */ conjugate),\n/* harmony export */   \"copy\": () => (/* binding */ copy),\n/* harmony export */   \"create\": () => (/* binding */ create),\n/* harmony export */   \"dot\": () => (/* binding */ dot),\n/* harmony export */   \"equals\": () => (/* binding */ equals),\n/* harmony export */   \"exactEquals\": () => (/* binding */ exactEquals),\n/* harmony export */   \"exp\": () => (/* binding */ exp),\n/* harmony export */   \"fromEuler\": () => (/* binding */ fromEuler),\n/* harmony export */   \"fromMat3\": () => (/* binding */ fromMat3),\n/* harmony export */   \"fromValues\": () => (/* binding */ fromValues),\n/* harmony export */   \"getAngle\": () => (/* binding */ getAngle),\n/* harmony export */   \"getAxisAngle\": () => (/* binding */ getAxisAngle),\n/* harmony export */   \"identity\": () => (/* binding */ identity),\n/* harmony export */   \"invert\": () => (/* binding */ invert),\n/* harmony export */   \"len\": () => (/* binding */ len),\n/* harmony export */   \"length\": () => (/* binding */ length),\n/* harmony export */   \"lerp\": () => (/* binding */ lerp),\n/* harmony export */   \"ln\": () => (/* binding */ ln),\n/* harmony export */   \"mul\": () => (/* binding */ mul),\n/* harmony export */   \"multiply\": () => (/* binding */ multiply),\n/* harmony export */   \"normalize\": () => (/* binding */ normalize),\n/* harmony export */   \"pow\": () => (/* binding */ pow),\n/* harmony export */   \"random\": () => (/* binding */ random),\n/* harmony export */   \"rotateX\": () => (/* binding */ rotateX),\n/* harmony export */   \"rotateY\": () => (/* binding */ rotateY),\n/* harmony export */   \"rotateZ\": () => (/* binding */ rotateZ),\n/* harmony export */   \"rotationTo\": () => (/* binding */ rotationTo),\n/* harmony export */   \"scale\": () => (/* binding */ scale),\n/* harmony export */   \"set\": () => (/* binding */ set),\n/* harmony export */   \"setAxes\": () => (/* binding */ setAxes),\n/* harmony export */   \"setAxisAngle\": () => (/* binding */ setAxisAngle),\n/* harmony export */   \"slerp\": () => (/* binding */ slerp),\n/* harmony export */   \"sqlerp\": () => (/* binding */ sqlerp),\n/* harmony export */   \"sqrLen\": () => (/* binding */ sqrLen),\n/* harmony export */   \"squaredLength\": () => (/* binding */ squaredLength),\n/* harmony export */   \"str\": () => (/* binding */ str)\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n/* harmony import */ var _mat3_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mat3.js */ \"./node_modules/gl-matrix/esm/mat3.js\");\n/* harmony import */ var _vec3_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vec3.js */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var _vec4_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vec4.js */ \"./node_modules/gl-matrix/esm/vec4.js\");\n\n\n\n\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nfunction create() {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(4);\n\n  if (_common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n  }\n\n  out[3] = 1;\n  return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nfunction identity(out) {\n  out[0] = 0;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 1;\n  return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nfunction setAxisAngle(out, axis, rad) {\n  rad = rad * 0.5;\n  var s = Math.sin(rad);\n  out[0] = s * axis[0];\n  out[1] = s * axis[1];\n  out[2] = s * axis[2];\n  out[3] = Math.cos(rad);\n  return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n *  quaternion. If a quaternion is created with\n *  setAxisAngle, this method will return the same\n *  values as providied in the original parameter list\n *  OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n *  angle -90 is the same as the quaternion formed by\n *  [0, 0, 1] and 270. This method favors the latter.\n * @param  {vec3} out_axis  Vector receiving the axis of rotation\n * @param  {ReadonlyQuat} q     Quaternion to be decomposed\n * @return {Number}     Angle, in radians, of the rotation\n */\n\nfunction getAxisAngle(out_axis, q) {\n  var rad = Math.acos(q[3]) * 2.0;\n  var s = Math.sin(rad / 2.0);\n\n  if (s > _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON) {\n    out_axis[0] = q[0] / s;\n    out_axis[1] = q[1] / s;\n    out_axis[2] = q[2] / s;\n  } else {\n    // If s is zero, return any axis (no rotation - axis does not matter)\n    out_axis[0] = 1;\n    out_axis[1] = 0;\n    out_axis[2] = 0;\n  }\n\n  return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param  {ReadonlyQuat} a     Origin unit quaternion\n * @param  {ReadonlyQuat} b     Destination unit quaternion\n * @return {Number}     Angle, in radians, between the two quaternions\n */\n\nfunction getAngle(a, b) {\n  var dotproduct = dot(a, b);\n  return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nfunction multiply(out, a, b) {\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      aw = a[3];\n  var bx = b[0],\n      by = b[1],\n      bz = b[2],\n      bw = b[3];\n  out[0] = ax * bw + aw * bx + ay * bz - az * by;\n  out[1] = ay * bw + aw * by + az * bx - ax * bz;\n  out[2] = az * bw + aw * bz + ax * by - ay * bx;\n  out[3] = aw * bw - ax * bx - ay * by - az * bz;\n  return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nfunction rotateX(out, a, rad) {\n  rad *= 0.5;\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      aw = a[3];\n  var bx = Math.sin(rad),\n      bw = Math.cos(rad);\n  out[0] = ax * bw + aw * bx;\n  out[1] = ay * bw + az * bx;\n  out[2] = az * bw - ay * bx;\n  out[3] = aw * bw - ax * bx;\n  return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nfunction rotateY(out, a, rad) {\n  rad *= 0.5;\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      aw = a[3];\n  var by = Math.sin(rad),\n      bw = Math.cos(rad);\n  out[0] = ax * bw - az * by;\n  out[1] = ay * bw + aw * by;\n  out[2] = az * bw + ax * by;\n  out[3] = aw * bw - ay * by;\n  return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nfunction rotateZ(out, a, rad) {\n  rad *= 0.5;\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      aw = a[3];\n  var bz = Math.sin(rad),\n      bw = Math.cos(rad);\n  out[0] = ax * bw + ay * bz;\n  out[1] = ay * bw - ax * bz;\n  out[2] = az * bw + aw * bz;\n  out[3] = aw * bw - az * bz;\n  return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nfunction calculateW(out, a) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n  return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nfunction exp(out, a) {\n  var x = a[0],\n      y = a[1],\n      z = a[2],\n      w = a[3];\n  var r = Math.sqrt(x * x + y * y + z * z);\n  var et = Math.exp(w);\n  var s = r > 0 ? et * Math.sin(r) / r : 0;\n  out[0] = x * s;\n  out[1] = y * s;\n  out[2] = z * s;\n  out[3] = et * Math.cos(r);\n  return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nfunction ln(out, a) {\n  var x = a[0],\n      y = a[1],\n      z = a[2],\n      w = a[3];\n  var r = Math.sqrt(x * x + y * y + z * z);\n  var t = r > 0 ? Math.atan2(r, w) / r : 0;\n  out[0] = x * t;\n  out[1] = y * t;\n  out[2] = z * t;\n  out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n  return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nfunction pow(out, a, b) {\n  ln(out, a);\n  scale(out, out, b);\n  exp(out, out);\n  return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nfunction slerp(out, a, b, t) {\n  // benchmarks:\n  //    http://jsperf.com/quaternion-slerp-implementations\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      aw = a[3];\n  var bx = b[0],\n      by = b[1],\n      bz = b[2],\n      bw = b[3];\n  var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n  cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n  if (cosom < 0.0) {\n    cosom = -cosom;\n    bx = -bx;\n    by = -by;\n    bz = -bz;\n    bw = -bw;\n  } // calculate coefficients\n\n\n  if (1.0 - cosom > _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON) {\n    // standard case (slerp)\n    omega = Math.acos(cosom);\n    sinom = Math.sin(omega);\n    scale0 = Math.sin((1.0 - t) * omega) / sinom;\n    scale1 = Math.sin(t * omega) / sinom;\n  } else {\n    // \"from\" and \"to\" quaternions are very close\n    //  ... so we can do a linear interpolation\n    scale0 = 1.0 - t;\n    scale1 = t;\n  } // calculate final values\n\n\n  out[0] = scale0 * ax + scale1 * bx;\n  out[1] = scale0 * ay + scale1 * by;\n  out[2] = scale0 * az + scale1 * bz;\n  out[3] = scale0 * aw + scale1 * bw;\n  return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nfunction random(out) {\n  // Implementation of http://planning.cs.uiuc.edu/node198.html\n  // TODO: Calling random 3 times is probably not the fastest solution\n  var u1 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM();\n  var u2 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM();\n  var u3 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM();\n  var sqrt1MinusU1 = Math.sqrt(1 - u1);\n  var sqrtU1 = Math.sqrt(u1);\n  out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n  out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n  out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n  out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n  return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nfunction invert(out, a) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2],\n      a3 = a[3];\n  var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n  var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n  out[0] = -a0 * invDot;\n  out[1] = -a1 * invDot;\n  out[2] = -a2 * invDot;\n  out[3] = a3 * invDot;\n  return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nfunction conjugate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  out[2] = -a[2];\n  out[3] = a[3];\n  return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nfunction fromMat3(out, m) {\n  // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n  // article \"Quaternion Calculus and Fast Animation\".\n  var fTrace = m[0] + m[4] + m[8];\n  var fRoot;\n\n  if (fTrace > 0.0) {\n    // |w| > 1/2, may as well choose w > 1/2\n    fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n    out[3] = 0.5 * fRoot;\n    fRoot = 0.5 / fRoot; // 1/(4w)\n\n    out[0] = (m[5] - m[7]) * fRoot;\n    out[1] = (m[6] - m[2]) * fRoot;\n    out[2] = (m[1] - m[3]) * fRoot;\n  } else {\n    // |w| <= 1/2\n    var i = 0;\n    if (m[4] > m[0]) i = 1;\n    if (m[8] > m[i * 3 + i]) i = 2;\n    var j = (i + 1) % 3;\n    var k = (i + 2) % 3;\n    fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n    out[i] = 0.5 * fRoot;\n    fRoot = 0.5 / fRoot;\n    out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n    out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n    out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n  }\n\n  return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nfunction fromEuler(out, x, y, z) {\n  var halfToRad = 0.5 * Math.PI / 180.0;\n  x *= halfToRad;\n  y *= halfToRad;\n  z *= halfToRad;\n  var sx = Math.sin(x);\n  var cx = Math.cos(x);\n  var sy = Math.sin(y);\n  var cy = Math.cos(y);\n  var sz = Math.sin(z);\n  var cz = Math.cos(z);\n  out[0] = sx * cy * cz - cx * sy * sz;\n  out[1] = cx * sy * cz + sx * cy * sz;\n  out[2] = cx * cy * sz - sx * sy * cz;\n  out[3] = cx * cy * cz + sx * sy * sz;\n  return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n  return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nvar clone = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nvar fromValues = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nvar copy = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nvar set = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nvar add = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nvar scale = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nvar dot = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nvar lerp = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nvar length = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nvar len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nvar squaredLength = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nvar normalize = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nvar exactEquals = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nvar equals = _vec4_js__WEBPACK_IMPORTED_MODULE_1__.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nvar rotationTo = function () {\n  var tmpvec3 = _vec3_js__WEBPACK_IMPORTED_MODULE_2__.create();\n  var xUnitVec3 = _vec3_js__WEBPACK_IMPORTED_MODULE_2__.fromValues(1, 0, 0);\n  var yUnitVec3 = _vec3_js__WEBPACK_IMPORTED_MODULE_2__.fromValues(0, 1, 0);\n  return function (out, a, b) {\n    var dot = _vec3_js__WEBPACK_IMPORTED_MODULE_2__.dot(a, b);\n\n    if (dot < -0.999999) {\n      _vec3_js__WEBPACK_IMPORTED_MODULE_2__.cross(tmpvec3, xUnitVec3, a);\n      if (_vec3_js__WEBPACK_IMPORTED_MODULE_2__.len(tmpvec3) < 0.000001) _vec3_js__WEBPACK_IMPORTED_MODULE_2__.cross(tmpvec3, yUnitVec3, a);\n      _vec3_js__WEBPACK_IMPORTED_MODULE_2__.normalize(tmpvec3, tmpvec3);\n      setAxisAngle(out, tmpvec3, Math.PI);\n      return out;\n    } else if (dot > 0.999999) {\n      out[0] = 0;\n      out[1] = 0;\n      out[2] = 0;\n      out[3] = 1;\n      return out;\n    } else {\n      _vec3_js__WEBPACK_IMPORTED_MODULE_2__.cross(tmpvec3, a, b);\n      out[0] = tmpvec3[0];\n      out[1] = tmpvec3[1];\n      out[2] = tmpvec3[2];\n      out[3] = 1 + dot;\n      return normalize(out, out);\n    }\n  };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nvar sqlerp = function () {\n  var temp1 = create();\n  var temp2 = create();\n  return function (out, a, b, c, d, t) {\n    slerp(temp1, a, d, t);\n    slerp(temp2, b, c, t);\n    slerp(out, temp1, temp2, 2 * t * (1 - t));\n    return out;\n  };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view  the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up    the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nvar setAxes = function () {\n  var matr = _mat3_js__WEBPACK_IMPORTED_MODULE_3__.create();\n  return function (out, view, right, up) {\n    matr[0] = right[0];\n    matr[3] = right[1];\n    matr[6] = right[2];\n    matr[1] = up[0];\n    matr[4] = up[1];\n    matr[7] = up[2];\n    matr[2] = -view[0];\n    matr[5] = -view[1];\n    matr[8] = -view[2];\n    return normalize(out, fromMat3(out, matr));\n  };\n}();\n\n//# sourceURL=webpack://webgpu-prog-iso/./node_modules/gl-matrix/esm/quat.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/vec2.js":
/*!********************************************!*\
  !*** ./node_modules/gl-matrix/esm/vec2.js ***!
  \********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": () => (/* binding */ add),\n/* harmony export */   \"angle\": () => (/* binding */ angle),\n/* harmony export */   \"ceil\": () => (/* binding */ ceil),\n/* harmony export */   \"clone\": () => (/* binding */ clone),\n/* harmony export */   \"copy\": () => (/* binding */ copy),\n/* harmony export */   \"create\": () => (/* binding */ create),\n/* harmony export */   \"cross\": () => (/* binding */ cross),\n/* harmony export */   \"dist\": () => (/* binding */ dist),\n/* harmony export */   \"distance\": () => (/* binding */ distance),\n/* harmony export */   \"div\": () => (/* binding */ div),\n/* harmony export */   \"divide\": () => (/* binding */ divide),\n/* harmony export */   \"dot\": () => (/* binding */ dot),\n/* harmony export */   \"equals\": () => (/* binding */ equals),\n/* harmony export */   \"exactEquals\": () => (/* binding */ exactEquals),\n/* harmony export */   \"floor\": () => (/* binding */ floor),\n/* harmony export */   \"forEach\": () => (/* binding */ forEach),\n/* harmony export */   \"fromValues\": () => (/* binding */ fromValues),\n/* harmony export */   \"inverse\": () => (/* binding */ inverse),\n/* harmony export */   \"len\": () => (/* binding */ len),\n/* harmony export */   \"length\": () => (/* binding */ length),\n/* harmony export */   \"lerp\": () => (/* binding */ lerp),\n/* harmony export */   \"max\": () => (/* binding */ max),\n/* harmony export */   \"min\": () => (/* binding */ min),\n/* harmony export */   \"mul\": () => (/* binding */ mul),\n/* harmony export */   \"multiply\": () => (/* binding */ multiply),\n/* harmony export */   \"negate\": () => (/* binding */ negate),\n/* harmony export */   \"normalize\": () => (/* binding */ normalize),\n/* harmony export */   \"random\": () => (/* binding */ random),\n/* harmony export */   \"rotate\": () => (/* binding */ rotate),\n/* harmony export */   \"round\": () => (/* binding */ round),\n/* harmony export */   \"scale\": () => (/* binding */ scale),\n/* harmony export */   \"scaleAndAdd\": () => (/* binding */ scaleAndAdd),\n/* harmony export */   \"set\": () => (/* binding */ set),\n/* harmony export */   \"sqrDist\": () => (/* binding */ sqrDist),\n/* harmony export */   \"sqrLen\": () => (/* binding */ sqrLen),\n/* harmony export */   \"squaredDistance\": () => (/* binding */ squaredDistance),\n/* harmony export */   \"squaredLength\": () => (/* binding */ squaredLength),\n/* harmony export */   \"str\": () => (/* binding */ str),\n/* harmony export */   \"sub\": () => (/* binding */ sub),\n/* harmony export */   \"subtract\": () => (/* binding */ subtract),\n/* harmony export */   \"transformMat2\": () => (/* binding */ transformMat2),\n/* harmony export */   \"transformMat2d\": () => (/* binding */ transformMat2d),\n/* harmony export */   \"transformMat3\": () => (/* binding */ transformMat3),\n/* harmony export */   \"transformMat4\": () => (/* binding */ transformMat4),\n/* harmony export */   \"zero\": () => (/* binding */ zero)\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nfunction create() {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(2);\n\n  if (_common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n  }\n\n  return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nfunction clone(a) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(2);\n  out[0] = a[0];\n  out[1] = a[1];\n  return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nfunction fromValues(x, y) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(2);\n  out[0] = x;\n  out[1] = y;\n  return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nfunction copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nfunction set(out, x, y) {\n  out[0] = x;\n  out[1] = y;\n  return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction multiply(out, a, b) {\n  out[0] = a[0] * b[0];\n  out[1] = a[1] * b[1];\n  return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction divide(out, a, b) {\n  out[0] = a[0] / b[0];\n  out[1] = a[1] / b[1];\n  return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nfunction ceil(out, a) {\n  out[0] = Math.ceil(a[0]);\n  out[1] = Math.ceil(a[1]);\n  return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nfunction floor(out, a) {\n  out[0] = Math.floor(a[0]);\n  out[1] = Math.floor(a[1]);\n  return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction min(out, a, b) {\n  out[0] = Math.min(a[0], b[0]);\n  out[1] = Math.min(a[1], b[1]);\n  return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction max(out, a, b) {\n  out[0] = Math.max(a[0], b[0]);\n  out[1] = Math.max(a[1], b[1]);\n  return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nfunction round(out, a) {\n  out[0] = Math.round(a[0]);\n  out[1] = Math.round(a[1]);\n  return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nfunction scale(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n  var x = b[0] - a[0],\n      y = b[1] - a[1];\n  return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n  var x = b[0] - a[0],\n      y = b[1] - a[1];\n  return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n  var x = a[0],\n      y = a[1];\n  return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n  var x = a[0],\n      y = a[1];\n  return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nfunction negate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nfunction inverse(out, a) {\n  out[0] = 1.0 / a[0];\n  out[1] = 1.0 / a[1];\n  return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nfunction normalize(out, a) {\n  var x = a[0],\n      y = a[1];\n  var len = x * x + y * y;\n\n  if (len > 0) {\n    //TODO: evaluate use of glm_invsqrt here?\n    len = 1 / Math.sqrt(len);\n  }\n\n  out[0] = a[0] * len;\n  out[1] = a[1] * len;\n  return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n  return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nfunction cross(out, a, b) {\n  var z = a[0] * b[1] - a[1] * b[0];\n  out[0] = out[1] = 0;\n  out[2] = z;\n  return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nfunction lerp(out, a, b, t) {\n  var ax = a[0],\n      ay = a[1];\n  out[0] = ax + t * (b[0] - ax);\n  out[1] = ay + t * (b[1] - ay);\n  return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nfunction random(out, scale) {\n  scale = scale || 1.0;\n  var r = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2.0 * Math.PI;\n  out[0] = Math.cos(r) * scale;\n  out[1] = Math.sin(r) * scale;\n  return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat2(out, a, m) {\n  var x = a[0],\n      y = a[1];\n  out[0] = m[0] * x + m[2] * y;\n  out[1] = m[1] * x + m[3] * y;\n  return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat2d(out, a, m) {\n  var x = a[0],\n      y = a[1];\n  out[0] = m[0] * x + m[2] * y + m[4];\n  out[1] = m[1] * x + m[3] * y + m[5];\n  return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat3(out, a, m) {\n  var x = a[0],\n      y = a[1];\n  out[0] = m[0] * x + m[3] * y + m[6];\n  out[1] = m[1] * x + m[4] * y + m[7];\n  return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat4(out, a, m) {\n  var x = a[0];\n  var y = a[1];\n  out[0] = m[0] * x + m[4] * y + m[12];\n  out[1] = m[1] * x + m[5] * y + m[13];\n  return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nfunction rotate(out, a, b, rad) {\n  //Translate point to the origin\n  var p0 = a[0] - b[0],\n      p1 = a[1] - b[1],\n      sinC = Math.sin(rad),\n      cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n  out[0] = p0 * cosC - p1 * sinC + b[0];\n  out[1] = p0 * sinC + p1 * cosC + b[1];\n  return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nfunction angle(a, b) {\n  var x1 = a[0],\n      y1 = a[1],\n      x2 = b[0],\n      y2 = b[1],\n      // mag is the product of the magnitudes of a and b\n  mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n      // mag &&.. short circuits if mag == 0\n  cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n  return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nfunction zero(out) {\n  out[0] = 0.0;\n  out[1] = 0.0;\n  return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n  return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1];\n  var b0 = b[0],\n      b1 = b[1];\n  return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n  var vec = create();\n  return function (a, stride, offset, count, fn, arg) {\n    var i, l;\n\n    if (!stride) {\n      stride = 2;\n    }\n\n    if (!offset) {\n      offset = 0;\n    }\n\n    if (count) {\n      l = Math.min(count * stride + offset, a.length);\n    } else {\n      l = a.length;\n    }\n\n    for (i = offset; i < l; i += stride) {\n      vec[0] = a[i];\n      vec[1] = a[i + 1];\n      fn(vec, vec, arg);\n      a[i] = vec[0];\n      a[i + 1] = vec[1];\n    }\n\n    return a;\n  };\n}();\n\n//# sourceURL=webpack://webgpu-prog-iso/./node_modules/gl-matrix/esm/vec2.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/vec3.js":
/*!********************************************!*\
  !*** ./node_modules/gl-matrix/esm/vec3.js ***!
  \********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": () => (/* binding */ add),\n/* harmony export */   \"angle\": () => (/* binding */ angle),\n/* harmony export */   \"bezier\": () => (/* binding */ bezier),\n/* harmony export */   \"ceil\": () => (/* binding */ ceil),\n/* harmony export */   \"clone\": () => (/* binding */ clone),\n/* harmony export */   \"copy\": () => (/* binding */ copy),\n/* harmony export */   \"create\": () => (/* binding */ create),\n/* harmony export */   \"cross\": () => (/* binding */ cross),\n/* harmony export */   \"dist\": () => (/* binding */ dist),\n/* harmony export */   \"distance\": () => (/* binding */ distance),\n/* harmony export */   \"div\": () => (/* binding */ div),\n/* harmony export */   \"divide\": () => (/* binding */ divide),\n/* harmony export */   \"dot\": () => (/* binding */ dot),\n/* harmony export */   \"equals\": () => (/* binding */ equals),\n/* harmony export */   \"exactEquals\": () => (/* binding */ exactEquals),\n/* harmony export */   \"floor\": () => (/* binding */ floor),\n/* harmony export */   \"forEach\": () => (/* binding */ forEach),\n/* harmony export */   \"fromValues\": () => (/* binding */ fromValues),\n/* harmony export */   \"hermite\": () => (/* binding */ hermite),\n/* harmony export */   \"inverse\": () => (/* binding */ inverse),\n/* harmony export */   \"len\": () => (/* binding */ len),\n/* harmony export */   \"length\": () => (/* binding */ length),\n/* harmony export */   \"lerp\": () => (/* binding */ lerp),\n/* harmony export */   \"max\": () => (/* binding */ max),\n/* harmony export */   \"min\": () => (/* binding */ min),\n/* harmony export */   \"mul\": () => (/* binding */ mul),\n/* harmony export */   \"multiply\": () => (/* binding */ multiply),\n/* harmony export */   \"negate\": () => (/* binding */ negate),\n/* harmony export */   \"normalize\": () => (/* binding */ normalize),\n/* harmony export */   \"random\": () => (/* binding */ random),\n/* harmony export */   \"rotateX\": () => (/* binding */ rotateX),\n/* harmony export */   \"rotateY\": () => (/* binding */ rotateY),\n/* harmony export */   \"rotateZ\": () => (/* binding */ rotateZ),\n/* harmony export */   \"round\": () => (/* binding */ round),\n/* harmony export */   \"scale\": () => (/* binding */ scale),\n/* harmony export */   \"scaleAndAdd\": () => (/* binding */ scaleAndAdd),\n/* harmony export */   \"set\": () => (/* binding */ set),\n/* harmony export */   \"sqrDist\": () => (/* binding */ sqrDist),\n/* harmony export */   \"sqrLen\": () => (/* binding */ sqrLen),\n/* harmony export */   \"squaredDistance\": () => (/* binding */ squaredDistance),\n/* harmony export */   \"squaredLength\": () => (/* binding */ squaredLength),\n/* harmony export */   \"str\": () => (/* binding */ str),\n/* harmony export */   \"sub\": () => (/* binding */ sub),\n/* harmony export */   \"subtract\": () => (/* binding */ subtract),\n/* harmony export */   \"transformMat3\": () => (/* binding */ transformMat3),\n/* harmony export */   \"transformMat4\": () => (/* binding */ transformMat4),\n/* harmony export */   \"transformQuat\": () => (/* binding */ transformQuat),\n/* harmony export */   \"zero\": () => (/* binding */ zero)\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nfunction create() {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(3);\n\n  if (_common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n  }\n\n  return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nfunction clone(a) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(3);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nfunction fromValues(x, y, z) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(3);\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nfunction copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nfunction set(out, x, y, z) {\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction multiply(out, a, b) {\n  out[0] = a[0] * b[0];\n  out[1] = a[1] * b[1];\n  out[2] = a[2] * b[2];\n  return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction divide(out, a, b) {\n  out[0] = a[0] / b[0];\n  out[1] = a[1] / b[1];\n  out[2] = a[2] / b[2];\n  return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nfunction ceil(out, a) {\n  out[0] = Math.ceil(a[0]);\n  out[1] = Math.ceil(a[1]);\n  out[2] = Math.ceil(a[2]);\n  return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nfunction floor(out, a) {\n  out[0] = Math.floor(a[0]);\n  out[1] = Math.floor(a[1]);\n  out[2] = Math.floor(a[2]);\n  return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction min(out, a, b) {\n  out[0] = Math.min(a[0], b[0]);\n  out[1] = Math.min(a[1], b[1]);\n  out[2] = Math.min(a[2], b[2]);\n  return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction max(out, a, b) {\n  out[0] = Math.max(a[0], b[0]);\n  out[1] = Math.max(a[1], b[1]);\n  out[2] = Math.max(a[2], b[2]);\n  return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nfunction round(out, a) {\n  out[0] = Math.round(a[0]);\n  out[1] = Math.round(a[1]);\n  out[2] = Math.round(a[2]);\n  return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nfunction scale(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nfunction negate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  out[2] = -a[2];\n  return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nfunction inverse(out, a) {\n  out[0] = 1.0 / a[0];\n  out[1] = 1.0 / a[1];\n  out[2] = 1.0 / a[2];\n  return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nfunction normalize(out, a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var len = x * x + y * y + z * z;\n\n  if (len > 0) {\n    //TODO: evaluate use of glm_invsqrt here?\n    len = 1 / Math.sqrt(len);\n  }\n\n  out[0] = a[0] * len;\n  out[1] = a[1] * len;\n  out[2] = a[2] * len;\n  return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction cross(out, a, b) {\n  var ax = a[0],\n      ay = a[1],\n      az = a[2];\n  var bx = b[0],\n      by = b[1],\n      bz = b[2];\n  out[0] = ay * bz - az * by;\n  out[1] = az * bx - ax * bz;\n  out[2] = ax * by - ay * bx;\n  return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction lerp(out, a, b, t) {\n  var ax = a[0];\n  var ay = a[1];\n  var az = a[2];\n  out[0] = ax + t * (b[0] - ax);\n  out[1] = ay + t * (b[1] - ay);\n  out[2] = az + t * (b[2] - az);\n  return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction hermite(out, a, b, c, d, t) {\n  var factorTimes2 = t * t;\n  var factor1 = factorTimes2 * (2 * t - 3) + 1;\n  var factor2 = factorTimes2 * (t - 2) + t;\n  var factor3 = factorTimes2 * (t - 1);\n  var factor4 = factorTimes2 * (3 - 2 * t);\n  out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n  out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n  out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n  return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction bezier(out, a, b, c, d, t) {\n  var inverseFactor = 1 - t;\n  var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n  var factorTimes2 = t * t;\n  var factor1 = inverseFactorTimesTwo * inverseFactor;\n  var factor2 = 3 * t * inverseFactorTimesTwo;\n  var factor3 = 3 * factorTimes2 * inverseFactor;\n  var factor4 = factorTimes2 * t;\n  out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n  out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n  out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n  return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nfunction random(out, scale) {\n  scale = scale || 1.0;\n  var r = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2.0 * Math.PI;\n  var z = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2.0 - 1.0;\n  var zScale = Math.sqrt(1.0 - z * z) * scale;\n  out[0] = Math.cos(r) * zScale;\n  out[1] = Math.sin(r) * zScale;\n  out[2] = z * scale;\n  return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nfunction transformMat4(out, a, m) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n  w = w || 1.0;\n  out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n  out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n  out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n  return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nfunction transformMat3(out, a, m) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  out[0] = x * m[0] + y * m[3] + z * m[6];\n  out[1] = x * m[1] + y * m[4] + z * m[7];\n  out[2] = x * m[2] + y * m[5] + z * m[8];\n  return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nfunction transformQuat(out, a, q) {\n  // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n  var qx = q[0],\n      qy = q[1],\n      qz = q[2],\n      qw = q[3];\n  var x = a[0],\n      y = a[1],\n      z = a[2]; // var qvec = [qx, qy, qz];\n  // var uv = vec3.cross([], qvec, a);\n\n  var uvx = qy * z - qz * y,\n      uvy = qz * x - qx * z,\n      uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n  var uuvx = qy * uvz - qz * uvy,\n      uuvy = qz * uvx - qx * uvz,\n      uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n  var w2 = qw * 2;\n  uvx *= w2;\n  uvy *= w2;\n  uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n  uuvx *= 2;\n  uuvy *= 2;\n  uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n  out[0] = x + uvx + uuvx;\n  out[1] = y + uvy + uuvy;\n  out[2] = z + uvz + uuvz;\n  return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateX(out, a, b, rad) {\n  var p = [],\n      r = []; //Translate point to the origin\n\n  p[0] = a[0] - b[0];\n  p[1] = a[1] - b[1];\n  p[2] = a[2] - b[2]; //perform rotation\n\n  r[0] = p[0];\n  r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n  r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n  out[0] = r[0] + b[0];\n  out[1] = r[1] + b[1];\n  out[2] = r[2] + b[2];\n  return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateY(out, a, b, rad) {\n  var p = [],\n      r = []; //Translate point to the origin\n\n  p[0] = a[0] - b[0];\n  p[1] = a[1] - b[1];\n  p[2] = a[2] - b[2]; //perform rotation\n\n  r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n  r[1] = p[1];\n  r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n  out[0] = r[0] + b[0];\n  out[1] = r[1] + b[1];\n  out[2] = r[2] + b[2];\n  return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateZ(out, a, b, rad) {\n  var p = [],\n      r = []; //Translate point to the origin\n\n  p[0] = a[0] - b[0];\n  p[1] = a[1] - b[1];\n  p[2] = a[2] - b[2]; //perform rotation\n\n  r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n  r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n  r[2] = p[2]; //translate to correct position\n\n  out[0] = r[0] + b[0];\n  out[1] = r[1] + b[1];\n  out[2] = r[2] + b[2];\n  return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nfunction angle(a, b) {\n  var ax = a[0],\n      ay = a[1],\n      az = a[2],\n      bx = b[0],\n      by = b[1],\n      bz = b[2],\n      mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n      mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n      mag = mag1 * mag2,\n      cosine = mag && dot(a, b) / mag;\n  return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nfunction zero(out) {\n  out[0] = 0.0;\n  out[1] = 0.0;\n  out[2] = 0.0;\n  return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n  return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2];\n  return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n  var vec = create();\n  return function (a, stride, offset, count, fn, arg) {\n    var i, l;\n\n    if (!stride) {\n      stride = 3;\n    }\n\n    if (!offset) {\n      offset = 0;\n    }\n\n    if (count) {\n      l = Math.min(count * stride + offset, a.length);\n    } else {\n      l = a.length;\n    }\n\n    for (i = offset; i < l; i += stride) {\n      vec[0] = a[i];\n      vec[1] = a[i + 1];\n      vec[2] = a[i + 2];\n      fn(vec, vec, arg);\n      a[i] = vec[0];\n      a[i + 1] = vec[1];\n      a[i + 2] = vec[2];\n    }\n\n    return a;\n  };\n}();\n\n//# sourceURL=webpack://webgpu-prog-iso/./node_modules/gl-matrix/esm/vec3.js?");

/***/ }),

/***/ "./node_modules/gl-matrix/esm/vec4.js":
/*!********************************************!*\
  !*** ./node_modules/gl-matrix/esm/vec4.js ***!
  \********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"add\": () => (/* binding */ add),\n/* harmony export */   \"ceil\": () => (/* binding */ ceil),\n/* harmony export */   \"clone\": () => (/* binding */ clone),\n/* harmony export */   \"copy\": () => (/* binding */ copy),\n/* harmony export */   \"create\": () => (/* binding */ create),\n/* harmony export */   \"cross\": () => (/* binding */ cross),\n/* harmony export */   \"dist\": () => (/* binding */ dist),\n/* harmony export */   \"distance\": () => (/* binding */ distance),\n/* harmony export */   \"div\": () => (/* binding */ div),\n/* harmony export */   \"divide\": () => (/* binding */ divide),\n/* harmony export */   \"dot\": () => (/* binding */ dot),\n/* harmony export */   \"equals\": () => (/* binding */ equals),\n/* harmony export */   \"exactEquals\": () => (/* binding */ exactEquals),\n/* harmony export */   \"floor\": () => (/* binding */ floor),\n/* harmony export */   \"forEach\": () => (/* binding */ forEach),\n/* harmony export */   \"fromValues\": () => (/* binding */ fromValues),\n/* harmony export */   \"inverse\": () => (/* binding */ inverse),\n/* harmony export */   \"len\": () => (/* binding */ len),\n/* harmony export */   \"length\": () => (/* binding */ length),\n/* harmony export */   \"lerp\": () => (/* binding */ lerp),\n/* harmony export */   \"max\": () => (/* binding */ max),\n/* harmony export */   \"min\": () => (/* binding */ min),\n/* harmony export */   \"mul\": () => (/* binding */ mul),\n/* harmony export */   \"multiply\": () => (/* binding */ multiply),\n/* harmony export */   \"negate\": () => (/* binding */ negate),\n/* harmony export */   \"normalize\": () => (/* binding */ normalize),\n/* harmony export */   \"random\": () => (/* binding */ random),\n/* harmony export */   \"round\": () => (/* binding */ round),\n/* harmony export */   \"scale\": () => (/* binding */ scale),\n/* harmony export */   \"scaleAndAdd\": () => (/* binding */ scaleAndAdd),\n/* harmony export */   \"set\": () => (/* binding */ set),\n/* harmony export */   \"sqrDist\": () => (/* binding */ sqrDist),\n/* harmony export */   \"sqrLen\": () => (/* binding */ sqrLen),\n/* harmony export */   \"squaredDistance\": () => (/* binding */ squaredDistance),\n/* harmony export */   \"squaredLength\": () => (/* binding */ squaredLength),\n/* harmony export */   \"str\": () => (/* binding */ str),\n/* harmony export */   \"sub\": () => (/* binding */ sub),\n/* harmony export */   \"subtract\": () => (/* binding */ subtract),\n/* harmony export */   \"transformMat4\": () => (/* binding */ transformMat4),\n/* harmony export */   \"transformQuat\": () => (/* binding */ transformQuat),\n/* harmony export */   \"zero\": () => (/* binding */ zero)\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/gl-matrix/esm/common.js\");\n\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nfunction create() {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(4);\n\n  if (_common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE != Float32Array) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n  }\n\n  return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nfunction clone(a) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(4);\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nfunction fromValues(x, y, z, w) {\n  var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__.ARRAY_TYPE(4);\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  out[3] = w;\n  return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nfunction copy(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nfunction set(out, x, y, z, w) {\n  out[0] = x;\n  out[1] = y;\n  out[2] = z;\n  out[3] = w;\n  return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction add(out, a, b) {\n  out[0] = a[0] + b[0];\n  out[1] = a[1] + b[1];\n  out[2] = a[2] + b[2];\n  out[3] = a[3] + b[3];\n  return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction subtract(out, a, b) {\n  out[0] = a[0] - b[0];\n  out[1] = a[1] - b[1];\n  out[2] = a[2] - b[2];\n  out[3] = a[3] - b[3];\n  return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction multiply(out, a, b) {\n  out[0] = a[0] * b[0];\n  out[1] = a[1] * b[1];\n  out[2] = a[2] * b[2];\n  out[3] = a[3] * b[3];\n  return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction divide(out, a, b) {\n  out[0] = a[0] / b[0];\n  out[1] = a[1] / b[1];\n  out[2] = a[2] / b[2];\n  out[3] = a[3] / b[3];\n  return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nfunction ceil(out, a) {\n  out[0] = Math.ceil(a[0]);\n  out[1] = Math.ceil(a[1]);\n  out[2] = Math.ceil(a[2]);\n  out[3] = Math.ceil(a[3]);\n  return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nfunction floor(out, a) {\n  out[0] = Math.floor(a[0]);\n  out[1] = Math.floor(a[1]);\n  out[2] = Math.floor(a[2]);\n  out[3] = Math.floor(a[3]);\n  return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction min(out, a, b) {\n  out[0] = Math.min(a[0], b[0]);\n  out[1] = Math.min(a[1], b[1]);\n  out[2] = Math.min(a[2], b[2]);\n  out[3] = Math.min(a[3], b[3]);\n  return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction max(out, a, b) {\n  out[0] = Math.max(a[0], b[0]);\n  out[1] = Math.max(a[1], b[1]);\n  out[2] = Math.max(a[2], b[2]);\n  out[3] = Math.max(a[3], b[3]);\n  return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nfunction round(out, a) {\n  out[0] = Math.round(a[0]);\n  out[1] = Math.round(a[1]);\n  out[2] = Math.round(a[2]);\n  out[3] = Math.round(a[3]);\n  return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nfunction scale(out, a, b) {\n  out[0] = a[0] * b;\n  out[1] = a[1] * b;\n  out[2] = a[2] * b;\n  out[3] = a[3] * b;\n  return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n  out[0] = a[0] + b[0] * scale;\n  out[1] = a[1] + b[1] * scale;\n  out[2] = a[2] + b[2] * scale;\n  out[3] = a[3] + b[3] * scale;\n  return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  var w = b[3] - a[3];\n  return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n  var x = b[0] - a[0];\n  var y = b[1] - a[1];\n  var z = b[2] - a[2];\n  var w = b[3] - a[3];\n  return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var w = a[3];\n  return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var w = a[3];\n  return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nfunction negate(out, a) {\n  out[0] = -a[0];\n  out[1] = -a[1];\n  out[2] = -a[2];\n  out[3] = -a[3];\n  return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nfunction inverse(out, a) {\n  out[0] = 1.0 / a[0];\n  out[1] = 1.0 / a[1];\n  out[2] = 1.0 / a[2];\n  out[3] = 1.0 / a[3];\n  return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nfunction normalize(out, a) {\n  var x = a[0];\n  var y = a[1];\n  var z = a[2];\n  var w = a[3];\n  var len = x * x + y * y + z * z + w * w;\n\n  if (len > 0) {\n    len = 1 / Math.sqrt(len);\n  }\n\n  out[0] = x * len;\n  out[1] = y * len;\n  out[2] = z * len;\n  out[3] = w * len;\n  return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nfunction cross(out, u, v, w) {\n  var A = v[0] * w[1] - v[1] * w[0],\n      B = v[0] * w[2] - v[2] * w[0],\n      C = v[0] * w[3] - v[3] * w[0],\n      D = v[1] * w[2] - v[2] * w[1],\n      E = v[1] * w[3] - v[3] * w[1],\n      F = v[2] * w[3] - v[3] * w[2];\n  var G = u[0];\n  var H = u[1];\n  var I = u[2];\n  var J = u[3];\n  out[0] = H * F - I * E + J * D;\n  out[1] = -(G * F) + I * C - J * B;\n  out[2] = G * E - H * C + J * A;\n  out[3] = -(G * D) + H * B - I * A;\n  return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nfunction lerp(out, a, b, t) {\n  var ax = a[0];\n  var ay = a[1];\n  var az = a[2];\n  var aw = a[3];\n  out[0] = ax + t * (b[0] - ax);\n  out[1] = ay + t * (b[1] - ay);\n  out[2] = az + t * (b[2] - az);\n  out[3] = aw + t * (b[3] - aw);\n  return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nfunction random(out, scale) {\n  scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n  // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n  // http://projecteuclid.org/euclid.aoms/1177692644;\n\n  var v1, v2, v3, v4;\n  var s1, s2;\n\n  do {\n    v1 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2 - 1;\n    v2 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2 - 1;\n    s1 = v1 * v1 + v2 * v2;\n  } while (s1 >= 1);\n\n  do {\n    v3 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2 - 1;\n    v4 = _common_js__WEBPACK_IMPORTED_MODULE_0__.RANDOM() * 2 - 1;\n    s2 = v3 * v3 + v4 * v4;\n  } while (s2 >= 1);\n\n  var d = Math.sqrt((1 - s1) / s2);\n  out[0] = scale * v1;\n  out[1] = scale * v2;\n  out[2] = scale * v3 * d;\n  out[3] = scale * v4 * d;\n  return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nfunction transformMat4(out, a, m) {\n  var x = a[0],\n      y = a[1],\n      z = a[2],\n      w = a[3];\n  out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n  out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n  out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n  out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n  return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nfunction transformQuat(out, a, q) {\n  var x = a[0],\n      y = a[1],\n      z = a[2];\n  var qx = q[0],\n      qy = q[1],\n      qz = q[2],\n      qw = q[3]; // calculate quat * vec\n\n  var ix = qw * x + qy * z - qz * y;\n  var iy = qw * y + qz * x - qx * z;\n  var iz = qw * z + qx * y - qy * x;\n  var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n  out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n  out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n  out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n  out[3] = a[3];\n  return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nfunction zero(out) {\n  out[0] = 0.0;\n  out[1] = 0.0;\n  out[2] = 0.0;\n  out[3] = 0.0;\n  return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n  return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n  var a0 = a[0],\n      a1 = a[1],\n      a2 = a[2],\n      a3 = a[3];\n  var b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3];\n  return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n  var vec = create();\n  return function (a, stride, offset, count, fn, arg) {\n    var i, l;\n\n    if (!stride) {\n      stride = 4;\n    }\n\n    if (!offset) {\n      offset = 0;\n    }\n\n    if (count) {\n      l = Math.min(count * stride + offset, a.length);\n    } else {\n      l = a.length;\n    }\n\n    for (i = offset; i < l; i += stride) {\n      vec[0] = a[i];\n      vec[1] = a[i + 1];\n      vec[2] = a[i + 2];\n      vec[3] = a[i + 3];\n      fn(vec, vec, arg);\n      a[i] = vec[0];\n      a[i + 1] = vec[1];\n      a[i + 2] = vec[2];\n      a[i + 3] = vec[3];\n    }\n\n    return a;\n  };\n}();\n\n//# sourceURL=webpack://webgpu-prog-iso/./node_modules/gl-matrix/esm/vec4.js?");

/***/ }),

/***/ "./node_modules/jimp/browser/lib/jimp.js":
/*!***********************************************!*\
  !*** ./node_modules/jimp/browser/lib/jimp.js ***!
  \***********************************************/
/***/ (() => {

eval("/*! For license information please see jimp.js.LICENSE.txt */\n(()=>{var __webpack_modules__={236:(t,e,r)=>{var i=r(4618);function n(t,e){var r=new i(t,e);return function(t){return r.convert(t)}}n.BIN=\"01\",n.OCT=\"01234567\",n.DEC=\"0123456789\",n.HEX=\"0123456789abcdef\",t.exports=n},4618:t=>{\"use strict\";function e(t,e){if(!(t&&e&&t.length&&e.length))throw new Error(\"Bad alphabet\");this.srcAlphabet=t,this.dstAlphabet=e}e.prototype.convert=function(t){var e,r,i,n={},a=this.srcAlphabet.length,o=this.dstAlphabet.length,s=t.length,h=\"string\"==typeof t?\"\":[];if(!this.isValid(t))throw new Error('Number \"'+t+'\" contains of non-alphabetic digits ('+this.srcAlphabet+\")\");if(this.srcAlphabet===this.dstAlphabet)return t;for(e=0;e<s;e++)n[e]=this.srcAlphabet.indexOf(t[e]);do{for(r=0,i=0,e=0;e<s;e++)(r=r*a+n[e])>=o?(n[i++]=parseInt(r/o,10),r%=o):i>0&&(n[i++]=0);s=i,h=this.dstAlphabet.slice(r,r+1).concat(h)}while(0!==i);return h},e.prototype.isValid=function(t){for(var e=0;e<t.length;++e)if(-1===this.srcAlphabet.indexOf(t[e]))return!1;return!0},t.exports=e},5766:(t,e)=>{\"use strict\";e.byteLength=function(t){var e=h(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,a=h(t),o=a[0],s=a[1],l=new n(function(t,e,r){return 3*(e+r)/4-r}(0,o,s)),f=0,u=s>0?o-4:o;for(r=0;r<u;r+=4)e=i[t.charCodeAt(r)]<<18|i[t.charCodeAt(r+1)]<<12|i[t.charCodeAt(r+2)]<<6|i[t.charCodeAt(r+3)],l[f++]=e>>16&255,l[f++]=e>>8&255,l[f++]=255&e;return 2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[f++]=255&e),1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[f++]=e>>8&255,l[f++]=255&e),l},e.fromByteArray=function(t){for(var e,i=t.length,n=i%3,a=[],o=16383,s=0,h=i-n;s<h;s+=o)a.push(l(t,s,s+o>h?h:s+o));return 1===n?(e=t[i-1],a.push(r[e>>2]+r[e<<4&63]+\"==\")):2===n&&(e=(t[i-2]<<8)+t[i-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+\"=\")),a.join(\"\")};for(var r=[],i=[],n=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",o=0,s=a.length;o<s;++o)r[o]=a[o],i[a.charCodeAt(o)]=o;function h(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function l(t,e,i){for(var n,a,o=[],s=e;s<i;s+=3)n=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),o.push(r[(a=n)>>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},486:(t,e,r)=>{var i=r(5433),n=r(1651);t.exports={encode:i,decode:n}},1651:(t,e,r)=>{var i=r(8834).lW;function n(t,e){if(this.pos=0,this.buffer=t,this.is_with_alpha=!!e,this.bottom_up=!0,this.flag=this.buffer.toString(\"utf-8\",0,this.pos+=2),\"BM\"!=this.flag)throw new Error(\"Invalid BMP File\");this.parseHeader(),this.parseRGBA()}n.prototype.parseHeader=function(){if(this.fileSize=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.reserved=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.offset=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.headerSize=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.width=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.height=this.buffer.readInt32LE(this.pos),this.pos+=4,this.planes=this.buffer.readUInt16LE(this.pos),this.pos+=2,this.bitPP=this.buffer.readUInt16LE(this.pos),this.pos+=2,this.compress=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.rawSize=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.hr=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.vr=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.colors=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.importantColors=this.buffer.readUInt32LE(this.pos),this.pos+=4,16===this.bitPP&&this.is_with_alpha&&(this.bitPP=15),this.bitPP<15){var t=0===this.colors?1<<this.bitPP:this.colors;this.palette=new Array(t);for(var e=0;e<t;e++){var r=this.buffer.readUInt8(this.pos++),i=this.buffer.readUInt8(this.pos++),n=this.buffer.readUInt8(this.pos++),a=this.buffer.readUInt8(this.pos++);this.palette[e]={red:n,green:i,blue:r,quad:a}}}this.height<0&&(this.height*=-1,this.bottom_up=!1)},n.prototype.parseRGBA=function(){var t=\"bit\"+this.bitPP,e=this.width*this.height*4;this.data=new i(e),this[t]()},n.prototype.bit1=function(){var t=Math.ceil(this.width/8),e=t%4,r=this.height>=0?this.height-1:-this.height;for(r=this.height-1;r>=0;r--){for(var i=this.bottom_up?r:this.height-1-r,n=0;n<t;n++)for(var a=this.buffer.readUInt8(this.pos++),o=i*this.width*4+8*n*4,s=0;s<8&&8*n+s<this.width;s++){var h=this.palette[a>>7-s&1];this.data[o+4*s]=0,this.data[o+4*s+1]=h.blue,this.data[o+4*s+2]=h.green,this.data[o+4*s+3]=h.red}0!=e&&(this.pos+=4-e)}},n.prototype.bit4=function(){if(2==this.compress){this.data.fill(255);for(var t=0,e=this.bottom_up?this.height-1:0,r=!1;t<this.data.length;){var i=this.buffer.readUInt8(this.pos++),n=this.buffer.readUInt8(this.pos++);if(0==i){if(0==n){this.bottom_up?e--:e++,t=e*this.width*4,r=!1;continue}if(1==n)break;if(2==n){var a=this.buffer.readUInt8(this.pos++),o=this.buffer.readUInt8(this.pos++);this.bottom_up?e-=o:e+=o,t+=o*this.width*4+4*a}else{for(var s=this.buffer.readUInt8(this.pos++),h=0;h<n;h++)r?l.call(this,15&s):l.call(this,(240&s)>>4),1&h&&h+1<n&&(s=this.buffer.readUInt8(this.pos++)),r=!r;1==(n+1>>1&1)&&this.pos++}}else for(h=0;h<i;h++)r?l.call(this,15&n):l.call(this,(240&n)>>4),r=!r}function l(e){var r=this.palette[e];this.data[t]=0,this.data[t+1]=r.blue,this.data[t+2]=r.green,this.data[t+3]=r.red,t+=4}}else{var f=Math.ceil(this.width/2),u=f%4;for(o=this.height-1;o>=0;o--){var c=this.bottom_up?o:this.height-1-o;for(a=0;a<f;a++){n=this.buffer.readUInt8(this.pos++),t=c*this.width*4+2*a*4;var d=n>>4,p=15&n,m=this.palette[d];if(this.data[t]=0,this.data[t+1]=m.blue,this.data[t+2]=m.green,this.data[t+3]=m.red,2*a+1>=this.width)break;m=this.palette[p],this.data[t+4]=0,this.data[t+4+1]=m.blue,this.data[t+4+2]=m.green,this.data[t+4+3]=m.red}0!=u&&(this.pos+=4-u)}}},n.prototype.bit8=function(){if(1==this.compress){this.data.fill(255);for(var t=0,e=this.bottom_up?this.height-1:0;t<this.data.length;){var r=this.buffer.readUInt8(this.pos++),i=this.buffer.readUInt8(this.pos++);if(0==r){if(0==i){this.bottom_up?e--:e++,t=e*this.width*4;continue}if(1==i)break;if(2==i){var n=this.buffer.readUInt8(this.pos++),a=this.buffer.readUInt8(this.pos++);this.bottom_up?e-=a:e+=a,t+=a*this.width*4+4*n}else{for(var o=0;o<i;o++){var s=this.buffer.readUInt8(this.pos++);h.call(this,s)}!0&i&&this.pos++}}else for(o=0;o<r;o++)h.call(this,i)}function h(e){var r=this.palette[e];this.data[t]=0,this.data[t+1]=r.blue,this.data[t+2]=r.green,this.data[t+3]=r.red,t+=4}}else{var l=this.width%4;for(a=this.height-1;a>=0;a--){var f=this.bottom_up?a:this.height-1-a;for(n=0;n<this.width;n++)if(i=this.buffer.readUInt8(this.pos++),t=f*this.width*4+4*n,i<this.palette.length){var u=this.palette[i];this.data[t]=0,this.data[t+1]=u.blue,this.data[t+2]=u.green,this.data[t+3]=u.red}else this.data[t]=0,this.data[t+1]=255,this.data[t+2]=255,this.data[t+3]=255;0!=l&&(this.pos+=4-l)}}},n.prototype.bit15=function(){for(var t=this.width%3,e=parseInt(\"11111\",2),r=this.height-1;r>=0;r--){for(var i=this.bottom_up?r:this.height-1-r,n=0;n<this.width;n++){var a=this.buffer.readUInt16LE(this.pos);this.pos+=2;var o=(a&e)/e*255|0,s=(a>>5&e)/e*255|0,h=(a>>10&e)/e*255|0,l=a>>15?255:0,f=i*this.width*4+4*n;this.data[f]=l,this.data[f+1]=o,this.data[f+2]=s,this.data[f+3]=h}this.pos+=t}},n.prototype.bit16=function(){var t=this.width%2*2;this.maskRed=31744,this.maskGreen=992,this.maskBlue=31,this.mask0=0,3==this.compress&&(this.maskRed=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.maskGreen=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.maskBlue=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.mask0=this.buffer.readUInt32LE(this.pos),this.pos+=4);for(var e=[0,0,0],r=0;r<16;r++)this.maskRed>>r&1&&e[0]++,this.maskGreen>>r&1&&e[1]++,this.maskBlue>>r&1&&e[2]++;e[1]+=e[0],e[2]+=e[1],e[0]=8-e[0],e[1]-=8,e[2]-=8;for(var i=this.height-1;i>=0;i--){for(var n=this.bottom_up?i:this.height-1-i,a=0;a<this.width;a++){var o=this.buffer.readUInt16LE(this.pos);this.pos+=2;var s=(o&this.maskBlue)<<e[0],h=(o&this.maskGreen)>>e[1],l=(o&this.maskRed)>>e[2],f=n*this.width*4+4*a;this.data[f]=0,this.data[f+1]=s,this.data[f+2]=h,this.data[f+3]=l}this.pos+=t}},n.prototype.bit24=function(){for(var t=this.height-1;t>=0;t--){for(var e=this.bottom_up?t:this.height-1-t,r=0;r<this.width;r++){var i=this.buffer.readUInt8(this.pos++),n=this.buffer.readUInt8(this.pos++),a=this.buffer.readUInt8(this.pos++),o=e*this.width*4+4*r;this.data[o]=0,this.data[o+1]=i,this.data[o+2]=n,this.data[o+3]=a}this.pos+=this.width%4}},n.prototype.bit32=function(){if(3==this.compress){this.maskRed=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.maskGreen=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.maskBlue=this.buffer.readUInt32LE(this.pos),this.pos+=4,this.mask0=this.buffer.readUInt32LE(this.pos),this.pos+=4;for(var t=this.height-1;t>=0;t--)for(var e=this.bottom_up?t:this.height-1-t,r=0;r<this.width;r++){var i=this.buffer.readUInt8(this.pos++),n=this.buffer.readUInt8(this.pos++),a=this.buffer.readUInt8(this.pos++),o=this.buffer.readUInt8(this.pos++),s=e*this.width*4+4*r;this.data[s]=i,this.data[s+1]=n,this.data[s+2]=a,this.data[s+3]=o}}else for(t=this.height-1;t>=0;t--)for(e=this.bottom_up?t:this.height-1-t,r=0;r<this.width;r++)n=this.buffer.readUInt8(this.pos++),a=this.buffer.readUInt8(this.pos++),o=this.buffer.readUInt8(this.pos++),i=this.buffer.readUInt8(this.pos++),s=e*this.width*4+4*r,this.data[s]=i,this.data[s+1]=n,this.data[s+2]=a,this.data[s+3]=o},n.prototype.getData=function(){return this.data},t.exports=function(t){return new n(t)}},5433:(t,e,r)=>{var i=r(8834).lW;function n(t){this.buffer=t.data,this.width=t.width,this.height=t.height,this.extraBytes=this.width%4,this.rgbSize=this.height*(3*this.width+this.extraBytes),this.headerInfoSize=40,this.data=[],this.flag=\"BM\",this.reserved=0,this.offset=54,this.fileSize=this.rgbSize+this.offset,this.planes=1,this.bitPP=24,this.compress=0,this.hr=0,this.vr=0,this.colors=0,this.importantColors=0}n.prototype.encode=function(){var t=new i(this.offset+this.rgbSize);this.pos=0,t.write(this.flag,this.pos,2),this.pos+=2,t.writeUInt32LE(this.fileSize,this.pos),this.pos+=4,t.writeUInt32LE(this.reserved,this.pos),this.pos+=4,t.writeUInt32LE(this.offset,this.pos),this.pos+=4,t.writeUInt32LE(this.headerInfoSize,this.pos),this.pos+=4,t.writeUInt32LE(this.width,this.pos),this.pos+=4,t.writeInt32LE(-this.height,this.pos),this.pos+=4,t.writeUInt16LE(this.planes,this.pos),this.pos+=2,t.writeUInt16LE(this.bitPP,this.pos),this.pos+=2,t.writeUInt32LE(this.compress,this.pos),this.pos+=4,t.writeUInt32LE(this.rgbSize,this.pos),this.pos+=4,t.writeUInt32LE(this.hr,this.pos),this.pos+=4,t.writeUInt32LE(this.vr,this.pos),this.pos+=4,t.writeUInt32LE(this.colors,this.pos),this.pos+=4,t.writeUInt32LE(this.importantColors,this.pos),this.pos+=4;for(var e=0,r=3*this.width+this.extraBytes,n=0;n<this.height;n++){for(var a=0;a<this.width;a++){var o=this.pos+n*r+3*a;e++,t[o]=this.buffer[e++],t[o+1]=this.buffer[e++],t[o+2]=this.buffer[e++]}if(this.extraBytes>0){var s=this.pos+n*r+3*this.width;t.fill(0,s,s+this.extraBytes)}}return t},t.exports=function(t,e){return void 0===e&&(e=100),{data:new n(t).encode(),width:t.width,height:t.height}}},5137:(t,e,r)=>{var i=r(8834).lW;t.exports=function(t,e){if(i.isBuffer(t)&&i.isBuffer(e)){if(\"function\"==typeof t.equals)return t.equals(e);if(t.length!==e.length)return!1;for(var r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}}},8834:(t,e,r)=>{\"use strict\";var i=r(5766),n=r(4181);e.lW=s,e.h2=50;var a=2147483647;function o(t){if(t>a)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=s.prototype,e}function s(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return f(t)}return h(t,e,r)}function h(t,e,r){if(\"string\"==typeof t)return function(t,e){if(\"string\"==typeof e&&\"\"!==e||(e=\"utf8\"),!s.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|d(t,e),i=o(r),n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}(t,e);if(ArrayBuffer.isView(t))return u(t);if(null==t)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(F(t,ArrayBuffer)||t&&F(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('\"offset\" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('\"length\" is outside of buffer bounds');var i;return(i=void 0===e&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,e):new Uint8Array(t,e,r)).__proto__=s.prototype,i}(t,e,r);if(\"number\"==typeof t)throw new TypeError('The \"value\" argument must not be of type number. Received type number');var i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return s.from(i,e,r);var n=function(t){if(s.isBuffer(t)){var e=0|c(t.length),r=o(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?\"number\"!=typeof t.length||j(t.length)?o(0):u(t):\"Buffer\"===t.type&&Array.isArray(t.data)?u(t.data):void 0}(t);if(n)return n;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof t[Symbol.toPrimitive])return s.from(t[Symbol.toPrimitive](\"string\"),e,r);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t)}function l(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be of type number');if(t<0)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"')}function f(t){return l(t),o(t<0?0:0|c(t))}function u(t){for(var e=t.length<0?0:0|c(t.length),r=o(e),i=0;i<e;i+=1)r[i]=255&t[i];return r}function c(t){if(t>=a)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+a.toString(16)+\" bytes\");return 0|t}function d(t,e){if(s.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||F(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return z(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return D(t).length;default:if(n)return i?-1:z(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function p(t,e,r){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return B(this,e,r);case\"utf8\":case\"utf-8\":return S(this,e,r);case\"ascii\":return A(this,e,r);case\"latin1\":case\"binary\":return I(this,e,r);case\"base64\":return k(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return T(this,e,r);default:if(i)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),i=!0}}function m(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function g(t,e,r,i,n){if(0===t.length)return-1;if(\"string\"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),j(r=+r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if(\"string\"==typeof e&&(e=s.from(e,i)),s.isBuffer(e))return 0===e.length?-1:b(t,e,r,i,n);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):b(t,[e],r,i,n);throw new TypeError(\"val must be string, number or Buffer\")}function b(t,e,r,i,n){var a,o=1,s=t.length,h=e.length;if(void 0!==i&&(\"ucs2\"===(i=String(i).toLowerCase())||\"ucs-2\"===i||\"utf16le\"===i||\"utf-16le\"===i)){if(t.length<2||e.length<2)return-1;o=2,s/=2,h/=2,r/=2}function l(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(n){var f=-1;for(a=r;a<s;a++)if(l(t,a)===l(e,-1===f?0:a-f)){if(-1===f&&(f=a),a-f+1===h)return f*o}else-1!==f&&(a-=a-f),f=-1}else for(r+h>s&&(r=s-h),a=r;a>=0;a--){for(var u=!0,c=0;c<h;c++)if(l(t,a+c)!==l(e,c)){u=!1;break}if(u)return a}return-1}function _(t,e,r,i){r=Number(r)||0;var n=t.length-r;i?(i=Number(i))>n&&(i=n):i=n;var a=e.length;i>a/2&&(i=a/2);for(var o=0;o<i;++o){var s=parseInt(e.substr(2*o,2),16);if(j(s))return o;t[r+o]=s}return o}function y(t,e,r,i){return N(z(e,t.length-r),t,r,i)}function w(t,e,r,i){return N(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,i)}function v(t,e,r,i){return w(t,e,r,i)}function x(t,e,r,i){return N(D(e),t,r,i)}function E(t,e,r,i){return N(function(t,e){for(var r,i,n,a=[],o=0;o<t.length&&!((e-=2)<0);++o)i=(r=t.charCodeAt(o))>>8,n=r%256,a.push(n),a.push(i);return a}(e,t.length-r),t,r,i)}function k(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function S(t,e,r){r=Math.min(t.length,r);for(var i=[],n=e;n<r;){var a,o,s,h,l=t[n],f=null,u=l>239?4:l>223?3:l>191?2:1;if(n+u<=r)switch(u){case 1:l<128&&(f=l);break;case 2:128==(192&(a=t[n+1]))&&(h=(31&l)<<6|63&a)>127&&(f=h);break;case 3:a=t[n+1],o=t[n+2],128==(192&a)&&128==(192&o)&&(h=(15&l)<<12|(63&a)<<6|63&o)>2047&&(h<55296||h>57343)&&(f=h);break;case 4:a=t[n+1],o=t[n+2],s=t[n+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(h=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&h<1114112&&(f=h)}null===f?(f=65533,u=1):f>65535&&(f-=65536,i.push(f>>>10&1023|55296),f=56320|1023&f),i.push(f),n+=u}return function(t){var e=t.length;if(e<=M)return String.fromCharCode.apply(String,t);for(var r=\"\",i=0;i<e;)r+=String.fromCharCode.apply(String,t.slice(i,i+=M));return r}(i)}s.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(t){return!1}}(),s.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(s.prototype,\"parent\",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.buffer}}),Object.defineProperty(s.prototype,\"offset\",{enumerable:!0,get:function(){if(s.isBuffer(this))return this.byteOffset}}),\"undefined\"!=typeof Symbol&&null!=Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),s.poolSize=8192,s.from=function(t,e,r){return h(t,e,r)},s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,s.alloc=function(t,e,r){return function(t,e,r){return l(t),t<=0?o(t):void 0!==e?\"string\"==typeof r?o(t).fill(e,r):o(t).fill(e):o(t)}(t,e,r)},s.allocUnsafe=function(t){return f(t)},s.allocUnsafeSlow=function(t){return f(t)},s.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==s.prototype},s.compare=function(t,e){if(F(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),F(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(t)||!s.isBuffer(e))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var r=t.length,i=e.length,n=0,a=Math.min(r,i);n<a;++n)if(t[n]!==e[n]){r=t[n],i=e[n];break}return r<i?-1:i<r?1:0},s.isEncoding=function(t){switch(String(t).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},s.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===t.length)return s.alloc(0);var r;if(void 0===e)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var i=s.allocUnsafe(e),n=0;for(r=0;r<t.length;++r){var a=t[r];if(F(a,Uint8Array)&&(a=s.from(a)),!s.isBuffer(a))throw new TypeError('\"list\" argument must be an Array of Buffers');a.copy(i,n),n+=a.length}return i},s.byteLength=d,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var e=0;e<t;e+=2)m(this,e,e+1);return this},s.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var e=0;e<t;e+=4)m(this,e,e+3),m(this,e+1,e+2);return this},s.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var e=0;e<t;e+=8)m(this,e,e+7),m(this,e+1,e+6),m(this,e+2,e+5),m(this,e+3,e+4);return this},s.prototype.toString=function(){var t=this.length;return 0===t?\"\":0===arguments.length?S(this,0,t):p.apply(this,arguments)},s.prototype.toLocaleString=s.prototype.toString,s.prototype.equals=function(t){if(!s.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");return this===t||0===s.compare(this,t)},s.prototype.inspect=function(){var t=\"\",r=e.h2;return t=this.toString(\"hex\",0,r).replace(/(.{2})/g,\"$1 \").trim(),this.length>r&&(t+=\" ... \"),\"<Buffer \"+t+\">\"},s.prototype.compare=function(t,e,r,i,n){if(F(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError(\"out of range index\");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;for(var a=(n>>>=0)-(i>>>=0),o=(r>>>=0)-(e>>>=0),h=Math.min(a,o),l=this.slice(i,n),f=t.slice(e,r),u=0;u<h;++u)if(l[u]!==f[u]){a=l[u],o=f[u];break}return a<o?-1:o<a?1:0},s.prototype.includes=function(t,e,r){return-1!==this.indexOf(t,e,r)},s.prototype.indexOf=function(t,e,r){return g(this,t,e,r,!0)},s.prototype.lastIndexOf=function(t,e,r){return g(this,t,e,r,!1)},s.prototype.write=function(t,e,r,i){if(void 0===e)i=\"utf8\",r=this.length,e=0;else if(void 0===r&&\"string\"==typeof e)i=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");e>>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i=\"utf8\")):(i=r,r=void 0)}var n=this.length-e;if((void 0===r||r>n)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");i||(i=\"utf8\");for(var a=!1;;)switch(i){case\"hex\":return _(this,t,e,r);case\"utf8\":case\"utf-8\":return y(this,t,e,r);case\"ascii\":return w(this,t,e,r);case\"latin1\":case\"binary\":return v(this,t,e,r);case\"base64\":return x(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return E(this,t,e,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+i);i=(\"\"+i).toLowerCase(),a=!0}},s.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var M=4096;function A(t,e,r){var i=\"\";r=Math.min(t.length,r);for(var n=e;n<r;++n)i+=String.fromCharCode(127&t[n]);return i}function I(t,e,r){var i=\"\";r=Math.min(t.length,r);for(var n=e;n<r;++n)i+=String.fromCharCode(t[n]);return i}function B(t,e,r){var i,n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var a=\"\",o=e;o<r;++o)a+=(i=t[o])<16?\"0\"+i.toString(16):i.toString(16);return a}function T(t,e,r){for(var i=t.slice(e,r),n=\"\",a=0;a<i.length;a+=2)n+=String.fromCharCode(i[a]+256*i[a+1]);return n}function R(t,e,r){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function P(t,e,r,i,n,a){if(!s.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>n||e<a)throw new RangeError('\"value\" argument is out of bounds');if(r+i>t.length)throw new RangeError(\"Index out of range\")}function O(t,e,r,i,n,a){if(r+i>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function L(t,e,r,i,a){return e=+e,r>>>=0,a||O(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function C(t,e,r,i,a){return e=+e,r>>>=0,a||O(t,0,r,8),n.write(t,e,r,i,52,8),r+8}s.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t);var i=this.subarray(t,e);return i.__proto__=s.prototype,i},s.prototype.readUIntLE=function(t,e,r){t>>>=0,e>>>=0,r||R(t,e,this.length);for(var i=this[t],n=1,a=0;++a<e&&(n*=256);)i+=this[t+a]*n;return i},s.prototype.readUIntBE=function(t,e,r){t>>>=0,e>>>=0,r||R(t,e,this.length);for(var i=this[t+--e],n=1;e>0&&(n*=256);)i+=this[t+--e]*n;return i},s.prototype.readUInt8=function(t,e){return t>>>=0,e||R(t,1,this.length),this[t]},s.prototype.readUInt16LE=function(t,e){return t>>>=0,e||R(t,2,this.length),this[t]|this[t+1]<<8},s.prototype.readUInt16BE=function(t,e){return t>>>=0,e||R(t,2,this.length),this[t]<<8|this[t+1]},s.prototype.readUInt32LE=function(t,e){return t>>>=0,e||R(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},s.prototype.readUInt32BE=function(t,e){return t>>>=0,e||R(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},s.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||R(t,e,this.length);for(var i=this[t],n=1,a=0;++a<e&&(n*=256);)i+=this[t+a]*n;return i>=(n*=128)&&(i-=Math.pow(2,8*e)),i},s.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||R(t,e,this.length);for(var i=e,n=1,a=this[t+--i];i>0&&(n*=256);)a+=this[t+--i]*n;return a>=(n*=128)&&(a-=Math.pow(2,8*e)),a},s.prototype.readInt8=function(t,e){return t>>>=0,e||R(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},s.prototype.readInt16LE=function(t,e){t>>>=0,e||R(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt16BE=function(t,e){t>>>=0,e||R(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},s.prototype.readInt32LE=function(t,e){return t>>>=0,e||R(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},s.prototype.readInt32BE=function(t,e){return t>>>=0,e||R(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},s.prototype.readFloatLE=function(t,e){return t>>>=0,e||R(t,4,this.length),n.read(this,t,!0,23,4)},s.prototype.readFloatBE=function(t,e){return t>>>=0,e||R(t,4,this.length),n.read(this,t,!1,23,4)},s.prototype.readDoubleLE=function(t,e){return t>>>=0,e||R(t,8,this.length),n.read(this,t,!0,52,8)},s.prototype.readDoubleBE=function(t,e){return t>>>=0,e||R(t,8,this.length),n.read(this,t,!1,52,8)},s.prototype.writeUIntLE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||P(this,t,e,r,Math.pow(2,8*r)-1,0);var n=1,a=0;for(this[e]=255&t;++a<r&&(n*=256);)this[e+a]=t/n&255;return e+r},s.prototype.writeUIntBE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||P(this,t,e,r,Math.pow(2,8*r)-1,0);var n=r-1,a=1;for(this[e+n]=255&t;--n>=0&&(a*=256);)this[e+n]=t/a&255;return e+r},s.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,1,255,0),this[e]=255&t,e+1},s.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},s.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},s.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},s.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},s.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e>>>=0,!i){var n=Math.pow(2,8*r-1);P(this,t,e,r,n-1,-n)}var a=0,o=1,s=0;for(this[e]=255&t;++a<r&&(o*=256);)t<0&&0===s&&0!==this[e+a-1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},s.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e>>>=0,!i){var n=Math.pow(2,8*r-1);P(this,t,e,r,n-1,-n)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},s.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},s.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},s.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},s.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},s.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||P(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},s.prototype.writeFloatLE=function(t,e,r){return L(this,t,e,!0,r)},s.prototype.writeFloatBE=function(t,e,r){return L(this,t,e,!1,r)},s.prototype.writeDoubleLE=function(t,e,r){return C(this,t,e,!0,r)},s.prototype.writeDoubleBE=function(t,e,r){return C(this,t,e,!1,r)},s.prototype.copy=function(t,e,r,i){if(!s.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i<r&&(i=r),i===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError(\"targetStart out of bounds\");if(r<0||r>=this.length)throw new RangeError(\"Index out of range\");if(i<0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),t.length-e<i-r&&(i=t.length-e+r);var n=i-r;if(this===t&&\"function\"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(e,r,i);else if(this===t&&r<e&&e<i)for(var a=n-1;a>=0;--a)t[a+e]=this[a+r];else Uint8Array.prototype.set.call(t,this.subarray(r,i),e);return n},s.prototype.fill=function(t,e,r,i){if(\"string\"==typeof t){if(\"string\"==typeof e?(i=e,e=0,r=this.length):\"string\"==typeof r&&(i=r,r=this.length),void 0!==i&&\"string\"!=typeof i)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof i&&!s.isEncoding(i))throw new TypeError(\"Unknown encoding: \"+i);if(1===t.length){var n=t.charCodeAt(0);(\"utf8\"===i&&n<128||\"latin1\"===i)&&(t=n)}}else\"number\"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<r)throw new RangeError(\"Out of range index\");if(r<=e)return this;var a;if(e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(a=e;a<r;++a)this[a]=t;else{var o=s.isBuffer(t)?t:s.from(t,i),h=o.length;if(0===h)throw new TypeError('The value \"'+t+'\" is invalid for argument \"value\"');for(a=0;a<r-e;++a)this[a+e]=o[a%h]}return this};var U=/[^+/0-9A-Za-z-_]/g;function z(t,e){var r;e=e||1/0;for(var i=t.length,n=null,a=[],o=0;o<i;++o){if((r=t.charCodeAt(o))>55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===i){(e-=3)>-1&&a.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&a.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function D(t){return i.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(U,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function N(t,e,r,i){for(var n=0;n<i&&!(n+r>=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function F(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function j(t){return t!=t}},4181:(t,e)=>{e.read=function(t,e,r,i,n){var a,o,s=8*n-i-1,h=(1<<s)-1,l=h>>1,f=-7,u=r?n-1:0,c=r?-1:1,d=t[e+u];for(u+=c,a=d&(1<<-f)-1,d>>=-f,f+=s;f>0;a=256*a+t[e+u],u+=c,f-=8);for(o=a&(1<<-f)-1,a>>=-f,f+=i;f>0;o=256*o+t[e+u],u+=c,f-=8);if(0===a)a=1-l;else{if(a===h)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,i),a-=l}return(d?-1:1)*o*Math.pow(2,a-i)},e.write=function(t,e,r,i,n,a){var o,s,h,l=8*a-n-1,f=(1<<l)-1,u=f>>1,c=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:a-1,p=i?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=f):(o=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-o))<1&&(o--,h*=2),(e+=o+u>=1?c/h:c*Math.pow(2,1-u))*h>=2&&(o++,h/=2),o+u>=f?(s=0,o=f):o+u>=1?(s=(e*h-1)*Math.pow(2,n),o+=u):(s=e*Math.pow(2,u-1)*Math.pow(2,n),o=0));n>=8;t[r+d]=255&s,d+=p,s/=256,n-=8);for(o=o<<n|s,l+=n;l>0;t[r+d]=255&o,d+=p,o/=256,l-=8);t[r+d-p]|=128*m}},2699:t=>{\"use strict\";var e,r=\"object\"==typeof Reflect?Reflect:null,i=r&&\"function\"==typeof r.apply?r.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};e=r&&\"function\"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var n=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,t.exports.once=function(t,e){return new Promise((function(r,i){function n(r){t.removeListener(e,a),i(r)}function a(){\"function\"==typeof t.removeListener&&t.removeListener(\"error\",n),r([].slice.call(arguments))}m(t,e,a,{once:!0}),\"error\"!==e&&function(t,e,r){\"function\"==typeof t.on&&m(t,\"error\",e,{once:!0})}(t,n)}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var o=10;function s(t){if(\"function\"!=typeof t)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function l(t,e,r,i){var n,a,o,l;if(s(r),void 0===(a=t._events)?(a=t._events=Object.create(null),t._eventsCount=0):(void 0!==a.newListener&&(t.emit(\"newListener\",e,r.listener?r.listener:r),a=t._events),o=a[e]),void 0===o)o=a[e]=r,++t._eventsCount;else if(\"function\"==typeof o?o=a[e]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),(n=h(t))>0&&o.length>n&&!o.warned){o.warned=!0;var f=new Error(\"Possible EventEmitter memory leak detected. \"+o.length+\" \"+String(e)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");f.name=\"MaxListenersExceededWarning\",f.emitter=t,f.type=e,f.count=o.length,l=f,console&&console.warn&&console.warn(l)}return t}function f(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function u(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=f.bind(i);return n.listener=r,i.wrapFn=n,n}function c(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:\"function\"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r<e.length;++r)e[r]=t[r].listener||t[r];return e}(n):p(n,n.length)}function d(t){var e=this._events;if(void 0!==e){var r=e[t];if(\"function\"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function p(t,e){for(var r=new Array(e),i=0;i<e;++i)r[i]=t[i];return r}function m(t,e,r,i){if(\"function\"==typeof t.on)i.once?t.once(e,r):t.on(e,r);else{if(\"function\"!=typeof t.addEventListener)throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type '+typeof t);t.addEventListener(e,(function n(a){i.once&&t.removeEventListener(e,n),r(a)}))}}Object.defineProperty(a,\"defaultMaxListeners\",{enumerable:!0,get:function(){return o},set:function(t){if(\"number\"!=typeof t||t<0||n(t))throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+t+\".\");o=t}}),a.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(t){if(\"number\"!=typeof t||t<0||n(t))throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+t+\".\");return this._maxListeners=t,this},a.prototype.getMaxListeners=function(){return h(this)},a.prototype.emit=function(t){for(var e=[],r=1;r<arguments.length;r++)e.push(arguments[r]);var n=\"error\"===t,a=this._events;if(void 0!==a)n=n&&void 0===a.error;else if(!n)return!1;if(n){var o;if(e.length>0&&(o=e[0]),o instanceof Error)throw o;var s=new Error(\"Unhandled error.\"+(o?\" (\"+o.message+\")\":\"\"));throw s.context=o,s}var h=a[t];if(void 0===h)return!1;if(\"function\"==typeof h)i(h,this,e);else{var l=h.length,f=p(h,l);for(r=0;r<l;++r)i(f[r],this,e)}return!0},a.prototype.addListener=function(t,e){return l(this,t,e,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(t,e){return l(this,t,e,!0)},a.prototype.once=function(t,e){return s(e),this.on(t,u(this,t,e)),this},a.prototype.prependOnceListener=function(t,e){return s(e),this.prependListener(t,u(this,t,e)),this},a.prototype.removeListener=function(t,e){var r,i,n,a,o;if(s(e),void 0===(i=this._events))return this;if(void 0===(r=i[t]))return this;if(r===e||r.listener===e)0==--this._eventsCount?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit(\"removeListener\",t,r.listener||e));else if(\"function\"!=typeof r){for(n=-1,a=r.length-1;a>=0;a--)if(r[a]===e||r[a].listener===e){o=r[a].listener,n=a;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}(r,n),1===r.length&&(i[t]=r[0]),void 0!==i.removeListener&&this.emit(\"removeListener\",t,o||e)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(t){var e,r,i;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[t]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[t]),this;if(0===arguments.length){var n,a=Object.keys(r);for(i=0;i<a.length;++i)\"removeListener\"!==(n=a[i])&&this.removeAllListeners(n);return this.removeAllListeners(\"removeListener\"),this._events=Object.create(null),this._eventsCount=0,this}if(\"function\"==typeof(e=r[t]))this.removeListener(t,e);else if(void 0!==e)for(i=e.length-1;i>=0;i--)this.removeListener(t,e[i]);return this},a.prototype.listeners=function(t){return c(this,t,!0)},a.prototype.rawListeners=function(t){return c(this,t,!1)},a.listenerCount=function(t,e){return\"function\"==typeof t.listenerCount?t.listenerCount(e):d.call(t,e)},a.prototype.listenerCount=d,a.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},6551:(t,e,r)=>{var i=r(453);t.exports={create:function(t,e){if(t instanceof(e=e||(0,eval)(\"this\")).ArrayBuffer){var n=r(909);return new i(new n(t,0,t.byteLength,!0,e))}var a=r(3684);return new i(new a(t,0,t.length,!0))}}},3684:t=>{function e(t,e,r,i){this.buffer=t,this.offset=e||0,r=\"number\"==typeof r?r:t.length,this.endPosition=this.offset+r,this.setBigEndian(i)}e.prototype={setBigEndian:function(t){this.bigEndian=!!t},nextUInt8:function(){var t=this.buffer.readUInt8(this.offset);return this.offset+=1,t},nextInt8:function(){var t=this.buffer.readInt8(this.offset);return this.offset+=1,t},nextUInt16:function(){var t=this.bigEndian?this.buffer.readUInt16BE(this.offset):this.buffer.readUInt16LE(this.offset);return this.offset+=2,t},nextUInt32:function(){var t=this.bigEndian?this.buffer.readUInt32BE(this.offset):this.buffer.readUInt32LE(this.offset);return this.offset+=4,t},nextInt16:function(){var t=this.bigEndian?this.buffer.readInt16BE(this.offset):this.buffer.readInt16LE(this.offset);return this.offset+=2,t},nextInt32:function(){var t=this.bigEndian?this.buffer.readInt32BE(this.offset):this.buffer.readInt32LE(this.offset);return this.offset+=4,t},nextFloat:function(){var t=this.bigEndian?this.buffer.readFloatBE(this.offset):this.buffer.readFloatLE(this.offset);return this.offset+=4,t},nextDouble:function(){var t=this.bigEndian?this.buffer.readDoubleBE(this.offset):this.buffer.readDoubleLE(this.offset);return this.offset+=8,t},nextBuffer:function(t){var e=this.buffer.slice(this.offset,this.offset+t);return this.offset+=t,e},remainingLength:function(){return this.endPosition-this.offset},nextString:function(t){var e=this.buffer.toString(\"utf8\",this.offset,this.offset+t);return this.offset+=t,e},mark:function(){var t=this;return{openWithOffset:function(r){return r=(r||0)+this.offset,new e(t.buffer,r,t.endPosition-r,t.bigEndian)},offset:this.offset}},offsetFrom:function(t){return this.offset-t.offset},skip:function(t){this.offset+=t},branch:function(t,r){return r=\"number\"==typeof r?r:this.endPosition-(this.offset+t),new e(this.buffer,this.offset+t,r,this.bigEndian)}},t.exports=e},565:t=>{function e(t){return parseInt(t,10)}var r=3600,i=60;function n(t,r){t=t.map(e),r=r.map(e);var i=t[0],n=t[1]-1,a=t[2],o=r[0],s=r[1],h=r[2];return Date.UTC(i,n,a,o,s,h,0)/1e3}function a(t){var a=t.substr(0,10).split(\"-\"),o=t.substr(11,8).split(\":\"),s=t.substr(19,6).split(\":\").map(e),h=s[0]*r+s[1]*i,l=n(a,o);if(\"number\"==typeof(l-=h)&&!isNaN(l))return l}function o(t){var e=t.split(\" \"),r=n(e[0].split(\":\"),e[1].split(\":\"));if(\"number\"==typeof r&&!isNaN(r))return r}t.exports={parseDateWithSpecFormat:o,parseDateWithTimezoneFormat:a,parseExifDate:function(t){var e=19===t.length&&\":\"===t.charAt(4);return 25===t.length&&\"T\"===t.charAt(10)?a(t):e?o(t):void 0}}},909:t=>{function e(t,e,r,i,n,a){this.global=n,e=e||0,r=r||t.byteLength-e,this.arrayBuffer=t.slice(e,e+r),this.view=new n.DataView(this.arrayBuffer,0,this.arrayBuffer.byteLength),this.setBigEndian(i),this.offset=0,this.parentOffset=(a||0)+e}e.prototype={setBigEndian:function(t){this.littleEndian=!t},nextUInt8:function(){var t=this.view.getUint8(this.offset);return this.offset+=1,t},nextInt8:function(){var t=this.view.getInt8(this.offset);return this.offset+=1,t},nextUInt16:function(){var t=this.view.getUint16(this.offset,this.littleEndian);return this.offset+=2,t},nextUInt32:function(){var t=this.view.getUint32(this.offset,this.littleEndian);return this.offset+=4,t},nextInt16:function(){var t=this.view.getInt16(this.offset,this.littleEndian);return this.offset+=2,t},nextInt32:function(){var t=this.view.getInt32(this.offset,this.littleEndian);return this.offset+=4,t},nextFloat:function(){var t=this.view.getFloat32(this.offset,this.littleEndian);return this.offset+=4,t},nextDouble:function(){var t=this.view.getFloat64(this.offset,this.littleEndian);return this.offset+=8,t},nextBuffer:function(t){var e=this.arrayBuffer.slice(this.offset,this.offset+t);return this.offset+=t,e},remainingLength:function(){return this.arrayBuffer.byteLength-this.offset},nextString:function(t){var e=this.arrayBuffer.slice(this.offset,this.offset+t);return e=String.fromCharCode.apply(null,new this.global.Uint8Array(e)),this.offset+=t,e},mark:function(){var t=this;return{openWithOffset:function(r){return r=(r||0)+this.offset,new e(t.arrayBuffer,r,t.arrayBuffer.byteLength-r,!t.littleEndian,t.global,t.parentOffset)},offset:this.offset,getParentOffset:function(){return t.parentOffset}}},offsetFrom:function(t){return this.parentOffset+this.offset-(t.offset+t.getParentOffset())},skip:function(t){this.offset+=t},branch:function(t,r){return r=\"number\"==typeof r?r:this.arrayBuffer.byteLength-(this.offset+t),new e(this.arrayBuffer,this.offset+t,r,!this.littleEndian,this.global,this.parentOffset)}},t.exports=e},3332:t=>{t.exports={exif:{1:\"InteropIndex\",2:\"InteropVersion\",11:\"ProcessingSoftware\",254:\"SubfileType\",255:\"OldSubfileType\",256:\"ImageWidth\",257:\"ImageHeight\",258:\"BitsPerSample\",259:\"Compression\",262:\"PhotometricInterpretation\",263:\"Thresholding\",264:\"CellWidth\",265:\"CellLength\",266:\"FillOrder\",269:\"DocumentName\",270:\"ImageDescription\",271:\"Make\",272:\"Model\",273:\"StripOffsets\",274:\"Orientation\",277:\"SamplesPerPixel\",278:\"RowsPerStrip\",279:\"StripByteCounts\",280:\"MinSampleValue\",281:\"MaxSampleValue\",282:\"XResolution\",283:\"YResolution\",284:\"PlanarConfiguration\",285:\"PageName\",286:\"XPosition\",287:\"YPosition\",288:\"FreeOffsets\",289:\"FreeByteCounts\",290:\"GrayResponseUnit\",291:\"GrayResponseCurve\",292:\"T4Options\",293:\"T6Options\",296:\"ResolutionUnit\",297:\"PageNumber\",300:\"ColorResponseUnit\",301:\"TransferFunction\",305:\"Software\",306:\"ModifyDate\",315:\"Artist\",316:\"HostComputer\",317:\"Predictor\",318:\"WhitePoint\",319:\"PrimaryChromaticities\",320:\"ColorMap\",321:\"HalftoneHints\",322:\"TileWidth\",323:\"TileLength\",324:\"TileOffsets\",325:\"TileByteCounts\",326:\"BadFaxLines\",327:\"CleanFaxData\",328:\"ConsecutiveBadFaxLines\",330:\"SubIFD\",332:\"InkSet\",333:\"InkNames\",334:\"NumberofInks\",336:\"DotRange\",337:\"TargetPrinter\",338:\"ExtraSamples\",339:\"SampleFormat\",340:\"SMinSampleValue\",341:\"SMaxSampleValue\",342:\"TransferRange\",343:\"ClipPath\",344:\"XClipPathUnits\",345:\"YClipPathUnits\",346:\"Indexed\",347:\"JPEGTables\",351:\"OPIProxy\",400:\"GlobalParametersIFD\",401:\"ProfileType\",402:\"FaxProfile\",403:\"CodingMethods\",404:\"VersionYear\",405:\"ModeNumber\",433:\"Decode\",434:\"DefaultImageColor\",435:\"T82Options\",437:\"JPEGTables\",512:\"JPEGProc\",513:\"ThumbnailOffset\",514:\"ThumbnailLength\",515:\"JPEGRestartInterval\",517:\"JPEGLosslessPredictors\",518:\"JPEGPointTransforms\",519:\"JPEGQTables\",520:\"JPEGDCTables\",521:\"JPEGACTables\",529:\"YCbCrCoefficients\",530:\"YCbCrSubSampling\",531:\"YCbCrPositioning\",532:\"ReferenceBlackWhite\",559:\"StripRowCounts\",700:\"ApplicationNotes\",999:\"USPTOMiscellaneous\",4096:\"RelatedImageFileFormat\",4097:\"RelatedImageWidth\",4098:\"RelatedImageHeight\",18246:\"Rating\",18247:\"XP_DIP_XML\",18248:\"StitchInfo\",18249:\"RatingPercent\",32781:\"ImageID\",32931:\"WangTag1\",32932:\"WangAnnotation\",32933:\"WangTag3\",32934:\"WangTag4\",32995:\"Matteing\",32996:\"DataType\",32997:\"ImageDepth\",32998:\"TileDepth\",33405:\"Model2\",33421:\"CFARepeatPatternDim\",33422:\"CFAPattern2\",33423:\"BatteryLevel\",33424:\"KodakIFD\",33432:\"Copyright\",33434:\"ExposureTime\",33437:\"FNumber\",33445:\"MDFileTag\",33446:\"MDScalePixel\",33447:\"MDColorTable\",33448:\"MDLabName\",33449:\"MDSampleInfo\",33450:\"MDPrepDate\",33451:\"MDPrepTime\",33452:\"MDFileUnits\",33550:\"PixelScale\",33589:\"AdventScale\",33590:\"AdventRevision\",33628:\"UIC1Tag\",33629:\"UIC2Tag\",33630:\"UIC3Tag\",33631:\"UIC4Tag\",33723:\"IPTC-NAA\",33918:\"IntergraphPacketData\",33919:\"IntergraphFlagRegisters\",33920:\"IntergraphMatrix\",33921:\"INGRReserved\",33922:\"ModelTiePoint\",34016:\"Site\",34017:\"ColorSequence\",34018:\"IT8Header\",34019:\"RasterPadding\",34020:\"BitsPerRunLength\",34021:\"BitsPerExtendedRunLength\",34022:\"ColorTable\",34023:\"ImageColorIndicator\",34024:\"BackgroundColorIndicator\",34025:\"ImageColorValue\",34026:\"BackgroundColorValue\",34027:\"PixelIntensityRange\",34028:\"TransparencyIndicator\",34029:\"ColorCharacterization\",34030:\"HCUsage\",34031:\"TrapIndicator\",34032:\"CMYKEquivalent\",34118:\"SEMInfo\",34152:\"AFCP_IPTC\",34232:\"PixelMagicJBIGOptions\",34264:\"ModelTransform\",34306:\"WB_GRGBLevels\",34310:\"LeafData\",34377:\"PhotoshopSettings\",34665:\"ExifOffset\",34675:\"ICC_Profile\",34687:\"TIFF_FXExtensions\",34688:\"MultiProfiles\",34689:\"SharedData\",34690:\"T88Options\",34732:\"ImageLayer\",34735:\"GeoTiffDirectory\",34736:\"GeoTiffDoubleParams\",34737:\"GeoTiffAsciiParams\",34850:\"ExposureProgram\",34852:\"SpectralSensitivity\",34853:\"GPSInfo\",34855:\"ISO\",34856:\"Opto-ElectricConvFactor\",34857:\"Interlace\",34858:\"TimeZoneOffset\",34859:\"SelfTimerMode\",34864:\"SensitivityType\",34865:\"StandardOutputSensitivity\",34866:\"RecommendedExposureIndex\",34867:\"ISOSpeed\",34868:\"ISOSpeedLatitudeyyy\",34869:\"ISOSpeedLatitudezzz\",34908:\"FaxRecvParams\",34909:\"FaxSubAddress\",34910:\"FaxRecvTime\",34954:\"LeafSubIFD\",36864:\"ExifVersion\",36867:\"DateTimeOriginal\",36868:\"CreateDate\",37121:\"ComponentsConfiguration\",37122:\"CompressedBitsPerPixel\",37377:\"ShutterSpeedValue\",37378:\"ApertureValue\",37379:\"BrightnessValue\",37380:\"ExposureCompensation\",37381:\"MaxApertureValue\",37382:\"SubjectDistance\",37383:\"MeteringMode\",37384:\"LightSource\",37385:\"Flash\",37386:\"FocalLength\",37387:\"FlashEnergy\",37388:\"SpatialFrequencyResponse\",37389:\"Noise\",37390:\"FocalPlaneXResolution\",37391:\"FocalPlaneYResolution\",37392:\"FocalPlaneResolutionUnit\",37393:\"ImageNumber\",37394:\"SecurityClassification\",37395:\"ImageHistory\",37396:\"SubjectArea\",37397:\"ExposureIndex\",37398:\"TIFF-EPStandardID\",37399:\"SensingMethod\",37434:\"CIP3DataFile\",37435:\"CIP3Sheet\",37436:\"CIP3Side\",37439:\"StoNits\",37500:\"MakerNote\",37510:\"UserComment\",37520:\"SubSecTime\",37521:\"SubSecTimeOriginal\",37522:\"SubSecTimeDigitized\",37679:\"MSDocumentText\",37680:\"MSPropertySetStorage\",37681:\"MSDocumentTextPosition\",37724:\"ImageSourceData\",40091:\"XPTitle\",40092:\"XPComment\",40093:\"XPAuthor\",40094:\"XPKeywords\",40095:\"XPSubject\",40960:\"FlashpixVersion\",40961:\"ColorSpace\",40962:\"ExifImageWidth\",40963:\"ExifImageHeight\",40964:\"RelatedSoundFile\",40965:\"InteropOffset\",41483:\"FlashEnergy\",41484:\"SpatialFrequencyResponse\",41485:\"Noise\",41486:\"FocalPlaneXResolution\",41487:\"FocalPlaneYResolution\",41488:\"FocalPlaneResolutionUnit\",41489:\"ImageNumber\",41490:\"SecurityClassification\",41491:\"ImageHistory\",41492:\"SubjectLocation\",41493:\"ExposureIndex\",41494:\"TIFF-EPStandardID\",41495:\"SensingMethod\",41728:\"FileSource\",41729:\"SceneType\",41730:\"CFAPattern\",41985:\"CustomRendered\",41986:\"ExposureMode\",41987:\"WhiteBalance\",41988:\"DigitalZoomRatio\",41989:\"FocalLengthIn35mmFormat\",41990:\"SceneCaptureType\",41991:\"GainControl\",41992:\"Contrast\",41993:\"Saturation\",41994:\"Sharpness\",41995:\"DeviceSettingDescription\",41996:\"SubjectDistanceRange\",42016:\"ImageUniqueID\",42032:\"OwnerName\",42033:\"SerialNumber\",42034:\"LensInfo\",42035:\"LensMake\",42036:\"LensModel\",42037:\"LensSerialNumber\",42112:\"GDALMetadata\",42113:\"GDALNoData\",42240:\"Gamma\",44992:\"ExpandSoftware\",44993:\"ExpandLens\",44994:\"ExpandFilm\",44995:\"ExpandFilterLens\",44996:\"ExpandScanner\",44997:\"ExpandFlashLamp\",48129:\"PixelFormat\",48130:\"Transformation\",48131:\"Uncompressed\",48132:\"ImageType\",48256:\"ImageWidth\",48257:\"ImageHeight\",48258:\"WidthResolution\",48259:\"HeightResolution\",48320:\"ImageOffset\",48321:\"ImageByteCount\",48322:\"AlphaOffset\",48323:\"AlphaByteCount\",48324:\"ImageDataDiscard\",48325:\"AlphaDataDiscard\",50215:\"OceScanjobDesc\",50216:\"OceApplicationSelector\",50217:\"OceIDNumber\",50218:\"OceImageLogic\",50255:\"Annotations\",50341:\"PrintIM\",50560:\"USPTOOriginalContentType\",50706:\"DNGVersion\",50707:\"DNGBackwardVersion\",50708:\"UniqueCameraModel\",50709:\"LocalizedCameraModel\",50710:\"CFAPlaneColor\",50711:\"CFALayout\",50712:\"LinearizationTable\",50713:\"BlackLevelRepeatDim\",50714:\"BlackLevel\",50715:\"BlackLevelDeltaH\",50716:\"BlackLevelDeltaV\",50717:\"WhiteLevel\",50718:\"DefaultScale\",50719:\"DefaultCropOrigin\",50720:\"DefaultCropSize\",50721:\"ColorMatrix1\",50722:\"ColorMatrix2\",50723:\"CameraCalibration1\",50724:\"CameraCalibration2\",50725:\"ReductionMatrix1\",50726:\"ReductionMatrix2\",50727:\"AnalogBalance\",50728:\"AsShotNeutral\",50729:\"AsShotWhiteXY\",50730:\"BaselineExposure\",50731:\"BaselineNoise\",50732:\"BaselineSharpness\",50733:\"BayerGreenSplit\",50734:\"LinearResponseLimit\",50735:\"CameraSerialNumber\",50736:\"DNGLensInfo\",50737:\"ChromaBlurRadius\",50738:\"AntiAliasStrength\",50739:\"ShadowScale\",50740:\"DNGPrivateData\",50741:\"MakerNoteSafety\",50752:\"RawImageSegmentation\",50778:\"CalibrationIlluminant1\",50779:\"CalibrationIlluminant2\",50780:\"BestQualityScale\",50781:\"RawDataUniqueID\",50784:\"AliasLayerMetadata\",50827:\"OriginalRawFileName\",50828:\"OriginalRawFileData\",50829:\"ActiveArea\",50830:\"MaskedAreas\",50831:\"AsShotICCProfile\",50832:\"AsShotPreProfileMatrix\",50833:\"CurrentICCProfile\",50834:\"CurrentPreProfileMatrix\",50879:\"ColorimetricReference\",50898:\"PanasonicTitle\",50899:\"PanasonicTitle2\",50931:\"CameraCalibrationSig\",50932:\"ProfileCalibrationSig\",50933:\"ProfileIFD\",50934:\"AsShotProfileName\",50935:\"NoiseReductionApplied\",50936:\"ProfileName\",50937:\"ProfileHueSatMapDims\",50938:\"ProfileHueSatMapData1\",50939:\"ProfileHueSatMapData2\",50940:\"ProfileToneCurve\",50941:\"ProfileEmbedPolicy\",50942:\"ProfileCopyright\",50964:\"ForwardMatrix1\",50965:\"ForwardMatrix2\",50966:\"PreviewApplicationName\",50967:\"PreviewApplicationVersion\",50968:\"PreviewSettingsName\",50969:\"PreviewSettingsDigest\",50970:\"PreviewColorSpace\",50971:\"PreviewDateTime\",50972:\"RawImageDigest\",50973:\"OriginalRawFileDigest\",50974:\"SubTileBlockSize\",50975:\"RowInterleaveFactor\",50981:\"ProfileLookTableDims\",50982:\"ProfileLookTableData\",51008:\"OpcodeList1\",51009:\"OpcodeList2\",51022:\"OpcodeList3\",51041:\"NoiseProfile\",51043:\"TimeCodes\",51044:\"FrameRate\",51058:\"TStop\",51081:\"ReelName\",51089:\"OriginalDefaultFinalSize\",51090:\"OriginalBestQualitySize\",51091:\"OriginalDefaultCropSize\",51105:\"CameraLabel\",51107:\"ProfileHueSatMapEncoding\",51108:\"ProfileLookTableEncoding\",51109:\"BaselineExposureOffset\",51110:\"DefaultBlackRender\",51111:\"NewRawImageDigest\",51112:\"RawToPreviewGain\",51125:\"DefaultUserCrop\",59932:\"Padding\",59933:\"OffsetSchema\",65e3:\"OwnerName\",65001:\"SerialNumber\",65002:\"Lens\",65024:\"KDC_IFD\",65100:\"RawFile\",65101:\"Converter\",65102:\"WhiteBalance\",65105:\"Exposure\",65106:\"Shadows\",65107:\"Brightness\",65108:\"Contrast\",65109:\"Saturation\",65110:\"Sharpness\",65111:\"Smoothness\",65112:\"MoireFilter\"},gps:{0:\"GPSVersionID\",1:\"GPSLatitudeRef\",2:\"GPSLatitude\",3:\"GPSLongitudeRef\",4:\"GPSLongitude\",5:\"GPSAltitudeRef\",6:\"GPSAltitude\",7:\"GPSTimeStamp\",8:\"GPSSatellites\",9:\"GPSStatus\",10:\"GPSMeasureMode\",11:\"GPSDOP\",12:\"GPSSpeedRef\",13:\"GPSSpeed\",14:\"GPSTrackRef\",15:\"GPSTrack\",16:\"GPSImgDirectionRef\",17:\"GPSImgDirection\",18:\"GPSMapDatum\",19:\"GPSDestLatitudeRef\",20:\"GPSDestLatitude\",21:\"GPSDestLongitudeRef\",22:\"GPSDestLongitude\",23:\"GPSDestBearingRef\",24:\"GPSDestBearing\",25:\"GPSDestDistanceRef\",26:\"GPSDestDistance\",27:\"GPSProcessingMethod\",28:\"GPSAreaInformation\",29:\"GPSDateStamp\",30:\"GPSDifferential\",31:\"GPSHPositioningError\"}}},592:t=>{function e(t,e){switch(t){case 1:return e.nextUInt8();case 3:case 8:return e.nextUInt16();case 4:case 9:return e.nextUInt32();case 5:return[e.nextUInt32(),e.nextUInt32()];case 6:return e.nextInt8();case 10:return[e.nextInt32(),e.nextInt32()];case 11:return e.nextFloat();case 12:return e.nextDouble();default:throw new Error(\"Invalid format while decoding: \"+t)}}function r(t,r){var i,n,a=r.nextUInt16(),o=r.nextUInt16(),s=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}}(o),h=r.nextUInt32(),l=s*h;if(l>4&&(r=t.openWithOffset(r.nextUInt32())),2===o){var f=(i=r.nextString(h)).indexOf(\"\\0\");-1!==f&&(i=i.substr(0,f))}else if(7===o)i=r.nextBuffer(h);else if(0!==o)for(i=[],n=0;n<h;++n)i.push(e(o,r));return l<4&&r.skip(4-l),[a,i,o]}function i(t,e,i){var n,a,o=e.nextUInt16();for(a=0;a<o;++a)i((n=r(t,e))[0],n[1],n[2])}t.exports={IFD0:1,IFD1:2,GPSIFD:3,SubIFD:4,InteropIFD:5,parseTags:function(t,e){var r,n,a,o;try{r=function(t){if(\"Exif\\0\\0\"!==t.nextString(6))throw new Error(\"Invalid EXIF header\");var e=t.mark(),r=t.nextUInt16();if(18761===r)t.setBigEndian(!1);else{if(19789!==r)throw new Error(\"Invalid TIFF header\");t.setBigEndian(!0)}if(42!==t.nextUInt16())throw new Error(\"Invalid TIFF data\");return e}(t)}catch(t){return!1}var s=r.openWithOffset(t.nextUInt32()),h=this.IFD0;i(r,s,(function(t,r,i){switch(t){case 34853:a=r[0];break;case 34665:n=r[0];break;default:e(h,t,r,i)}}));var l=s.nextUInt32();if(0!==l){var f=r.openWithOffset(l);i(r,f,e.bind(null,this.IFD1))}if(a){var u=r.openWithOffset(a);i(r,u,e.bind(null,this.GPSIFD))}if(n){var c=r.openWithOffset(n),d=this.InteropIFD;i(r,c,(function(t,r,i){40965===t?o=r[0]:e(d,t,r,i)}))}if(o){var p=r.openWithOffset(o);i(r,p,e.bind(null,this.InteropIFD))}return!0}}},656:t=>{t.exports={parseSections:function(t,e){var r,i;for(t.setBigEndian(!0);t.remainingLength()>0&&218!==i;){if(255!==t.nextUInt8())throw new Error(\"Invalid JPEG section offset\");r=(i=t.nextUInt8())>=208&&i<=217||218===i?0:t.nextUInt16()-2,e(i,t.branch(0,r)),t.skip(r)}},getSizeFromSOFSection:function(t){return t.skip(1),{height:t.nextUInt16(),width:t.nextUInt16()}},getSectionName:function(t){var e,r;switch(t){case 216:e=\"SOI\";break;case 196:e=\"DHT\";break;case 219:e=\"DQT\";break;case 221:e=\"DRI\";break;case 218:e=\"SOS\";break;case 254:e=\"COM\";break;case 217:e=\"EOI\";break;default:t>=224&&t<=239?(e=\"APP\",r=t-224):t>=192&&t<=207&&196!==t&&200!==t&&204!==t?(e=\"SOF\",r=t-192):t>=208&&t<=215&&(e=\"RST\",r=t-208)}var i={name:e};return\"number\"==typeof r&&(i.index=r),i}}},453:(t,e,r)=>{var i=r(656),n=r(592),a=r(3814);function o(t,e,r,i,n,a,o){this.startMarker=t,this.tags=e,this.imageSize=r,this.thumbnailOffset=i,this.thumbnailLength=n,this.thumbnailType=a,this.app1Offset=o}function s(t){this.stream=t,this.flags={readBinaryTags:!1,resolveTagNames:!0,simplifyValues:!0,imageSize:!0,hidePointers:!0,returnTags:!0}}o.prototype={hasThumbnail:function(t){return!(!this.thumbnailOffset||!this.thumbnailLength||\"string\"==typeof t&&(\"image/jpeg\"===t.toLowerCase().trim()?6!==this.thumbnailType:\"image/tiff\"!==t.toLowerCase().trim()||1!==this.thumbnailType))},getThumbnailOffset:function(){return this.app1Offset+6+this.thumbnailOffset},getThumbnailLength:function(){return this.thumbnailLength},getThumbnailBuffer:function(){return this._getThumbnailStream().nextBuffer(this.thumbnailLength)},_getThumbnailStream:function(){return this.startMarker.openWithOffset(this.getThumbnailOffset())},getImageSize:function(){return this.imageSize},getThumbnailSize:function(){var t,e=this._getThumbnailStream();return i.parseSections(e,(function(e,r){\"SOF\"===i.getSectionName(e).name&&(t=i.getSizeFromSOFSection(r))})),t}},s.prototype={enableBinaryFields:function(t){return this.flags.readBinaryTags=!!t,this},enablePointers:function(t){return this.flags.hidePointers=!t,this},enableTagNames:function(t){return this.flags.resolveTagNames=!!t,this},enableImageSize:function(t){return this.flags.imageSize=!!t,this},enableReturnTags:function(t){return this.flags.returnTags=!!t,this},enableSimpleValues:function(t){return this.flags.simplifyValues=!!t,this},parse:function(){var t,e,s,h,l,f,u,c,d,p=this.stream.mark(),m=p.openWithOffset(0),g=this.flags;return g.resolveTagNames&&(u=r(3332)),g.resolveTagNames?(t={},c=function(e){return t[e.name]},d=function(e,r){t[e.name]=r}):(t=[],c=function(e){var r;for(r=0;r<t.length;++r)if(t[r].type===e.type&&t[r].section===e.section)return t.value},d=function(e,r){var i;for(i=0;i<t.length;++i)if(t[i].type===e.type&&t[i].section===e.section)return void(t.value=r)}),i.parseSections(m,(function(r,o){var c=o.offsetFrom(p);225===r?n.parseTags(o,(function(e,r,i,o){if(g.readBinaryTags||7!==o){if(513===r){if(s=i[0],g.hidePointers)return}else if(514===r){if(h=i[0],g.hidePointers)return}else if(259===r&&(l=i[0],g.hidePointers))return;if(g.returnTags)if(g.simplifyValues&&(i=a.simplifyValue(i,o)),g.resolveTagNames){var f=(e===n.GPSIFD?u.gps:u.exif)[r];f||(f=u.exif[r]),t.hasOwnProperty(f)||(t[f]=i)}else t.push({section:e,type:r,value:i})}}))&&(f=c):g.imageSize&&\"SOF\"===i.getSectionName(r).name&&(e=i.getSizeFromSOFSection(o))})),g.simplifyValues&&(a.castDegreeValues(c,d),a.castDateValues(c,d)),new o(p,t,e,s,h,l,f)}},t.exports=s},3814:(t,e,r)=>{var i=r(592),n=r(565),a=[{section:i.GPSIFD,type:2,name:\"GPSLatitude\",refType:1,refName:\"GPSLatitudeRef\",posVal:\"N\"},{section:i.GPSIFD,type:4,name:\"GPSLongitude\",refType:3,refName:\"GPSLongitudeRef\",posVal:\"E\"}],o=[{section:i.SubIFD,type:306,name:\"ModifyDate\"},{section:i.SubIFD,type:36867,name:\"DateTimeOriginal\"},{section:i.SubIFD,type:36868,name:\"CreateDate\"},{section:i.SubIFD,type:306,name:\"ModifyDate\"}];t.exports={castDegreeValues:function(t,e){a.forEach((function(r){var i=t(r);if(i){var n=t({section:r.section,type:r.refType,name:r.refName})===r.posVal?1:-1,a=(i[0]+i[1]/60+i[2]/3600)*n;e(r,a)}}))},castDateValues:function(t,e){o.forEach((function(r){var i=t(r);if(i){var a=n.parseExifDate(i);void 0!==a&&e(r,a)}}))},simplifyValue:function(t,e){return Array.isArray(t)&&1===(t=t.map((function(t){return 10===e||5===e?t[0]/t[1]:t}))).length&&(t=t[0]),t}}},8789:(module,__unused_webpack_exports,__nested_webpack_require_59601__)=>{\"use strict\";var Buffer=__nested_webpack_require_59601__(8834).lW;const Token=__nested_webpack_require_59601__(5010),strtok3=__nested_webpack_require_59601__(7378),{stringToBytes,tarHeaderChecksumMatches,uint32SyncSafeToken}=__nested_webpack_require_59601__(7044),supported=__nested_webpack_require_59601__(4078),minimumBytes=4100;async function fromStream(t){const e=await strtok3.fromStream(t);try{return await fromTokenizer(e)}finally{await e.close()}}async function fromBuffer(t){if(!(t instanceof Uint8Array||t instanceof ArrayBuffer||Buffer.isBuffer(t)))throw new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`Buffer\\` or \\`ArrayBuffer\\`, got \\`${typeof t}\\``);const e=t instanceof Buffer?t:Buffer.from(t);if(e&&e.length>1)return fromTokenizer(strtok3.fromBuffer(e))}function _check(t,e,r){r={offset:0,...r};for(const[i,n]of e.entries())if(r.mask){if(n!==(r.mask[i]&t[i+r.offset]))return!1}else if(n!==t[i+r.offset])return!1;return!0}async function fromTokenizer(t){try{return _fromTokenizer(t)}catch(t){if(!(t instanceof strtok3.EndOfStreamError))throw t}}async function _fromTokenizer(t){let e=Buffer.alloc(minimumBytes);const r=(t,r)=>_check(e,t,r),i=(t,e)=>r(stringToBytes(t),e);if(t.fileInfo.size||(t.fileInfo.size=Number.MAX_SAFE_INTEGER),await t.peekBuffer(e,{length:12,mayBeLess:!0}),r([66,77]))return{ext:\"bmp\",mime:\"image/bmp\"};if(r([11,119]))return{ext:\"ac3\",mime:\"audio/vnd.dolby.dd-raw\"};if(r([120,1]))return{ext:\"dmg\",mime:\"application/x-apple-diskimage\"};if(r([77,90]))return{ext:\"exe\",mime:\"application/x-msdownload\"};if(r([37,33]))return await t.peekBuffer(e,{length:24,mayBeLess:!0}),i(\"PS-Adobe-\",{offset:2})&&i(\" EPSF-\",{offset:14})?{ext:\"eps\",mime:\"application/eps\"}:{ext:\"ps\",mime:\"application/postscript\"};if(r([31,160])||r([31,157]))return{ext:\"Z\",mime:\"application/x-compress\"};if(r([255,216,255]))return{ext:\"jpg\",mime:\"image/jpeg\"};if(r([73,73,188]))return{ext:\"jxr\",mime:\"image/vnd.ms-photo\"};if(r([31,139,8]))return{ext:\"gz\",mime:\"application/gzip\"};if(r([66,90,104]))return{ext:\"bz2\",mime:\"application/x-bzip2\"};if(i(\"ID3\")){await t.ignore(6);const n=await t.readToken(uint32SyncSafeToken);return t.position+n>t.fileInfo.size?{ext:\"mp3\",mime:\"audio/mpeg\"}:(await t.ignore(n),fromTokenizer(t))}if(i(\"MP+\"))return{ext:\"mpc\",mime:\"audio/x-musepack\"};if((67===e[0]||70===e[0])&&r([87,83],{offset:1}))return{ext:\"swf\",mime:\"application/x-shockwave-flash\"};if(r([71,73,70]))return{ext:\"gif\",mime:\"image/gif\"};if(i(\"FLIF\"))return{ext:\"flif\",mime:\"image/flif\"};if(i(\"8BPS\"))return{ext:\"psd\",mime:\"image/vnd.adobe.photoshop\"};if(i(\"WEBP\",{offset:8}))return{ext:\"webp\",mime:\"image/webp\"};if(i(\"MPCK\"))return{ext:\"mpc\",mime:\"audio/x-musepack\"};if(i(\"FORM\"))return{ext:\"aif\",mime:\"audio/aiff\"};if(i(\"icns\",{offset:0}))return{ext:\"icns\",mime:\"image/icns\"};if(r([80,75,3,4])){try{for(;t.position+30<t.fileInfo.size;){await t.readBuffer(e,{length:30});const a={compressedSize:e.readUInt32LE(18),uncompressedSize:e.readUInt32LE(22),filenameLength:e.readUInt16LE(26),extraFieldLength:e.readUInt16LE(28)};if(a.filename=await t.readToken(new Token.StringType(a.filenameLength,\"utf-8\")),await t.ignore(a.extraFieldLength),\"META-INF/mozilla.rsa\"===a.filename)return{ext:\"xpi\",mime:\"application/x-xpinstall\"};if(a.filename.endsWith(\".rels\")||a.filename.endsWith(\".xml\"))switch(a.filename.split(\"/\")[0]){case\"_rels\":default:break;case\"word\":return{ext:\"docx\",mime:\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"};case\"ppt\":return{ext:\"pptx\",mime:\"application/vnd.openxmlformats-officedocument.presentationml.presentation\"};case\"xl\":return{ext:\"xlsx\",mime:\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"}}if(a.filename.startsWith(\"xl/\"))return{ext:\"xlsx\",mime:\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"};if(a.filename.startsWith(\"3D/\")&&a.filename.endsWith(\".model\"))return{ext:\"3mf\",mime:\"model/3mf\"};if(\"mimetype\"===a.filename&&a.compressedSize===a.uncompressedSize)switch(await t.readToken(new Token.StringType(a.compressedSize,\"utf-8\"))){case\"application/epub+zip\":return{ext:\"epub\",mime:\"application/epub+zip\"};case\"application/vnd.oasis.opendocument.text\":return{ext:\"odt\",mime:\"application/vnd.oasis.opendocument.text\"};case\"application/vnd.oasis.opendocument.spreadsheet\":return{ext:\"ods\",mime:\"application/vnd.oasis.opendocument.spreadsheet\"};case\"application/vnd.oasis.opendocument.presentation\":return{ext:\"odp\",mime:\"application/vnd.oasis.opendocument.presentation\"}}if(0===a.compressedSize){let o=-1;for(;o<0&&t.position<t.fileInfo.size;)await t.peekBuffer(e,{mayBeLess:!0}),o=e.indexOf(\"504B0304\",0,\"hex\"),await t.ignore(o>=0?o:e.length)}else await t.ignore(a.compressedSize)}}catch(s){if(!(s instanceof strtok3.EndOfStreamError))throw s}return{ext:\"zip\",mime:\"application/zip\"}}if(i(\"OggS\")){await t.ignore(28);const h=Buffer.alloc(8);return await t.readBuffer(h),_check(h,[79,112,117,115,72,101,97,100])?{ext:\"opus\",mime:\"audio/opus\"}:_check(h,[128,116,104,101,111,114,97])?{ext:\"ogv\",mime:\"video/ogg\"}:_check(h,[1,118,105,100,101,111,0])?{ext:\"ogm\",mime:\"video/ogg\"}:_check(h,[127,70,76,65,67])?{ext:\"oga\",mime:\"audio/ogg\"}:_check(h,[83,112,101,101,120,32,32])?{ext:\"spx\",mime:\"audio/ogg\"}:_check(h,[1,118,111,114,98,105,115])?{ext:\"ogg\",mime:\"audio/ogg\"}:{ext:\"ogx\",mime:\"application/ogg\"}}if(r([80,75])&&(3===e[2]||5===e[2]||7===e[2])&&(4===e[3]||6===e[3]||8===e[3]))return{ext:\"zip\",mime:\"application/zip\"};if(i(\"ftyp\",{offset:4})&&0!=(96&e[8])){const l=e.toString(\"binary\",8,12).replace(\"\\0\",\" \").trim();switch(l){case\"avif\":return{ext:\"avif\",mime:\"image/avif\"};case\"mif1\":return{ext:\"heic\",mime:\"image/heif\"};case\"msf1\":return{ext:\"heic\",mime:\"image/heif-sequence\"};case\"heic\":case\"heix\":return{ext:\"heic\",mime:\"image/heic\"};case\"hevc\":case\"hevx\":return{ext:\"heic\",mime:\"image/heic-sequence\"};case\"qt\":return{ext:\"mov\",mime:\"video/quicktime\"};case\"M4V\":case\"M4VH\":case\"M4VP\":return{ext:\"m4v\",mime:\"video/x-m4v\"};case\"M4P\":return{ext:\"m4p\",mime:\"video/mp4\"};case\"M4B\":return{ext:\"m4b\",mime:\"audio/mp4\"};case\"M4A\":return{ext:\"m4a\",mime:\"audio/x-m4a\"};case\"F4V\":return{ext:\"f4v\",mime:\"video/mp4\"};case\"F4P\":return{ext:\"f4p\",mime:\"video/mp4\"};case\"F4A\":return{ext:\"f4a\",mime:\"audio/mp4\"};case\"F4B\":return{ext:\"f4b\",mime:\"audio/mp4\"};case\"crx\":return{ext:\"cr3\",mime:\"image/x-canon-cr3\"};default:return l.startsWith(\"3g\")?l.startsWith(\"3g2\")?{ext:\"3g2\",mime:\"video/3gpp2\"}:{ext:\"3gp\",mime:\"video/3gpp\"}:{ext:\"mp4\",mime:\"video/mp4\"}}}if(i(\"MThd\"))return{ext:\"mid\",mime:\"audio/midi\"};if(i(\"wOFF\")&&(r([0,1,0,0],{offset:4})||i(\"OTTO\",{offset:4})))return{ext:\"woff\",mime:\"font/woff\"};if(i(\"wOF2\")&&(r([0,1,0,0],{offset:4})||i(\"OTTO\",{offset:4})))return{ext:\"woff2\",mime:\"font/woff2\"};if(r([212,195,178,161])||r([161,178,195,212]))return{ext:\"pcap\",mime:\"application/vnd.tcpdump.pcap\"};if(i(\"DSD \"))return{ext:\"dsf\",mime:\"audio/x-dsf\"};if(i(\"LZIP\"))return{ext:\"lz\",mime:\"application/x-lzip\"};if(i(\"fLaC\"))return{ext:\"flac\",mime:\"audio/x-flac\"};if(r([66,80,71,251]))return{ext:\"bpg\",mime:\"image/bpg\"};if(i(\"wvpk\"))return{ext:\"wv\",mime:\"audio/wavpack\"};if(i(\"%PDF\")){await t.ignore(1350);const f=10485760,u=Buffer.alloc(Math.min(f,t.fileInfo.size));return await t.readBuffer(u,{mayBeLess:!0}),u.includes(Buffer.from(\"AIPrivateData\"))?{ext:\"ai\",mime:\"application/postscript\"}:{ext:\"pdf\",mime:\"application/pdf\"}}if(r([0,97,115,109]))return{ext:\"wasm\",mime:\"application/wasm\"};if(r([73,73,42,0]))return i(\"CR\",{offset:8})?{ext:\"cr2\",mime:\"image/x-canon-cr2\"}:r([28,0,254,0],{offset:8})||r([31,0,11,0],{offset:8})?{ext:\"nef\",mime:\"image/x-nikon-nef\"}:r([8,0,0,0],{offset:4})&&(r([45,0,254,0],{offset:8})||r([39,0,254,0],{offset:8}))?{ext:\"dng\",mime:\"image/x-adobe-dng\"}:(e=Buffer.alloc(24),await t.peekBuffer(e),(r([16,251,134,1],{offset:4})||r([8,0,0,0],{offset:4}))&&r([0,254,0,4,0,1,0,0,0,1,0,0,0,3,1],{offset:9})?{ext:\"arw\",mime:\"image/x-sony-arw\"}:{ext:\"tif\",mime:\"image/tiff\"});if(r([77,77,0,42]))return{ext:\"tif\",mime:\"image/tiff\"};if(i(\"MAC \"))return{ext:\"ape\",mime:\"audio/ape\"};if(r([26,69,223,163])){async function c(){const e=await t.peekNumber(Token.UINT8);let r=128,i=0;for(;0==(e&r)&&0!==r;)++i,r>>=1;const n=Buffer.alloc(i+1);return await t.readBuffer(n),n}async function d(){const t=await c(),e=await c();e[0]^=128>>e.length-1;const r=Math.min(6,e.length);return{id:t.readUIntBE(0,t.length),len:e.readUIntBE(e.length-r,r)}}async function p(e,r){for(;r>0;){const e=await d();if(17026===e.id)return t.readToken(new Token.StringType(e.len,\"utf-8\"));await t.ignore(e.len),--r}}const m=await d();switch(await p(0,m.len)){case\"webm\":return{ext:\"webm\",mime:\"video/webm\"};case\"matroska\":return{ext:\"mkv\",mime:\"video/x-matroska\"};default:return}}if(r([82,73,70,70])){if(r([65,86,73],{offset:8}))return{ext:\"avi\",mime:\"video/vnd.avi\"};if(r([87,65,86,69],{offset:8}))return{ext:\"wav\",mime:\"audio/vnd.wave\"};if(r([81,76,67,77],{offset:8}))return{ext:\"qcp\",mime:\"audio/qcelp\"}}if(i(\"SQLi\"))return{ext:\"sqlite\",mime:\"application/x-sqlite3\"};if(r([78,69,83,26]))return{ext:\"nes\",mime:\"application/x-nintendo-nes-rom\"};if(i(\"Cr24\"))return{ext:\"crx\",mime:\"application/x-google-chrome-extension\"};if(i(\"MSCF\")||i(\"ISc(\"))return{ext:\"cab\",mime:\"application/vnd.ms-cab-compressed\"};if(r([237,171,238,219]))return{ext:\"rpm\",mime:\"application/x-rpm\"};if(r([197,208,211,198]))return{ext:\"eps\",mime:\"application/eps\"};if(r([40,181,47,253]))return{ext:\"zst\",mime:\"application/zstd\"};if(r([79,84,84,79,0]))return{ext:\"otf\",mime:\"font/otf\"};if(i(\"#!AMR\"))return{ext:\"amr\",mime:\"audio/amr\"};if(i(\"{\\\\rtf\"))return{ext:\"rtf\",mime:\"application/rtf\"};if(r([70,76,86,1]))return{ext:\"flv\",mime:\"video/x-flv\"};if(i(\"IMPM\"))return{ext:\"it\",mime:\"audio/x-it\"};if(i(\"-lh0-\",{offset:2})||i(\"-lh1-\",{offset:2})||i(\"-lh2-\",{offset:2})||i(\"-lh3-\",{offset:2})||i(\"-lh4-\",{offset:2})||i(\"-lh5-\",{offset:2})||i(\"-lh6-\",{offset:2})||i(\"-lh7-\",{offset:2})||i(\"-lzs-\",{offset:2})||i(\"-lz4-\",{offset:2})||i(\"-lz5-\",{offset:2})||i(\"-lhd-\",{offset:2}))return{ext:\"lzh\",mime:\"application/x-lzh-compressed\"};if(r([0,0,1,186])){if(r([33],{offset:4,mask:[241]}))return{ext:\"mpg\",mime:\"video/MP1S\"};if(r([68],{offset:4,mask:[196]}))return{ext:\"mpg\",mime:\"video/MP2P\"}}if(i(\"ITSF\"))return{ext:\"chm\",mime:\"application/vnd.ms-htmlhelp\"};if(r([253,55,122,88,90,0]))return{ext:\"xz\",mime:\"application/x-xz\"};if(i(\"<?xml \"))return{ext:\"xml\",mime:\"application/xml\"};if(r([55,122,188,175,39,28]))return{ext:\"7z\",mime:\"application/x-7z-compressed\"};if(r([82,97,114,33,26,7])&&(0===e[6]||1===e[6]))return{ext:\"rar\",mime:\"application/x-rar-compressed\"};if(i(\"solid \"))return{ext:\"stl\",mime:\"model/stl\"};if(i(\"BLENDER\"))return{ext:\"blend\",mime:\"application/x-blender\"};if(i(\"!<arch>\"))return await t.ignore(8),\"debian-binary\"===await t.readToken(new Token.StringType(13,\"ascii\"))?{ext:\"deb\",mime:\"application/x-deb\"}:{ext:\"ar\",mime:\"application/x-unix-archive\"};if(r([137,80,78,71,13,10,26,10])){async function g(){return{length:await t.readToken(Token.INT32_BE),type:await t.readToken(new Token.StringType(4,\"binary\"))}}await t.ignore(8);do{const b=await g();if(b.length<0)return;switch(b.type){case\"IDAT\":return{ext:\"png\",mime:\"image/png\"};case\"acTL\":return{ext:\"apng\",mime:\"image/apng\"};default:await t.ignore(b.length+4)}}while(t.position+8<t.fileInfo.size);return{ext:\"png\",mime:\"image/png\"}}if(r([65,82,82,79,87,49,0,0]))return{ext:\"arrow\",mime:\"application/x-apache-arrow\"};if(r([103,108,84,70,2,0,0,0]))return{ext:\"glb\",mime:\"model/gltf-binary\"};if(r([102,114,101,101],{offset:4})||r([109,100,97,116],{offset:4})||r([109,111,111,118],{offset:4})||r([119,105,100,101],{offset:4}))return{ext:\"mov\",mime:\"video/quicktime\"};if(r([73,73,82,79,8,0,0,0,24]))return{ext:\"orf\",mime:\"image/x-olympus-orf\"};if(i(\"gimp xcf \"))return{ext:\"xcf\",mime:\"image/x-xcf\"};if(r([73,73,85,0,24,0,0,0,136,231,116,216]))return{ext:\"rw2\",mime:\"image/x-panasonic-rw2\"};if(r([48,38,178,117,142,102,207,17,166,217])){async function _(){const e=Buffer.alloc(16);return await t.readBuffer(e),{id:e,size:Number(await t.readToken(Token.UINT64_LE))}}for(await t.ignore(30);t.position+24<t.fileInfo.size;){const y=await _();let w=y.size-24;if(_check(y.id,[145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101])){const v=Buffer.alloc(16);if(w-=await t.readBuffer(v),_check(v,[64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:\"asf\",mime:\"audio/x-ms-asf\"};if(_check(v,[192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:\"asf\",mime:\"video/x-ms-asf\"};break}await t.ignore(w)}return{ext:\"asf\",mime:\"application/vnd.ms-asf\"}}if(r([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:\"ktx\",mime:\"image/ktx\"};if((r([126,16,4])||r([126,24,4]))&&r([48,77,73,69],{offset:4}))return{ext:\"mie\",mime:\"application/x-mie\"};if(r([39,10,0,0,0,0,0,0,0,0,0,0],{offset:2}))return{ext:\"shp\",mime:\"application/x-esri-shape\"};if(r([0,0,0,12,106,80,32,32,13,10,135,10]))switch(await t.ignore(20),await t.readToken(new Token.StringType(4,\"ascii\"))){case\"jp2 \":return{ext:\"jp2\",mime:\"image/jp2\"};case\"jpx \":return{ext:\"jpx\",mime:\"image/jpx\"};case\"jpm \":return{ext:\"jpm\",mime:\"image/jpm\"};case\"mjp2\":return{ext:\"mj2\",mime:\"image/mj2\"};default:return}if(r([255,10])||r([0,0,0,12,74,88,76,32,13,10,135,10]))return{ext:\"jxl\",mime:\"image/jxl\"};if(r([0,0,1,186])||r([0,0,1,179]))return{ext:\"mpg\",mime:\"video/mpeg\"};if(r([0,1,0,0,0]))return{ext:\"ttf\",mime:\"font/ttf\"};if(r([0,0,1,0]))return{ext:\"ico\",mime:\"image/x-icon\"};if(r([0,0,2,0]))return{ext:\"cur\",mime:\"image/x-icon\"};if(r([208,207,17,224,161,177,26,225]))return{ext:\"cfb\",mime:\"application/x-cfb\"};if(await t.peekBuffer(e,{length:Math.min(256,t.fileInfo.size),mayBeLess:!0}),i(\"BEGIN:\")){if(i(\"VCARD\",{offset:6}))return{ext:\"vcf\",mime:\"text/vcard\"};if(i(\"VCALENDAR\",{offset:6}))return{ext:\"ics\",mime:\"text/calendar\"}}if(i(\"FUJIFILMCCD-RAW\"))return{ext:\"raf\",mime:\"image/x-fujifilm-raf\"};if(i(\"Extended Module:\"))return{ext:\"xm\",mime:\"audio/x-xm\"};if(i(\"Creative Voice File\"))return{ext:\"voc\",mime:\"audio/x-voc\"};if(r([4,0,0,0])&&e.length>=16){const x=e.readUInt32LE(12);if(x>12&&e.length>=x+16)try{const E=e.slice(16,x+16).toString();if(JSON.parse(E).files)return{ext:\"asar\",mime:\"application/x-asar\"}}catch(k){}}if(r([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:\"mxf\",mime:\"application/mxf\"};if(i(\"SCRM\",{offset:44}))return{ext:\"s3m\",mime:\"audio/x-s3m\"};if(r([71],{offset:4})&&(r([71],{offset:192})||r([71],{offset:196})))return{ext:\"mts\",mime:\"video/mp2t\"};if(r([66,79,79,75,77,79,66,73],{offset:60}))return{ext:\"mobi\",mime:\"application/x-mobipocket-ebook\"};if(r([68,73,67,77],{offset:128}))return{ext:\"dcm\",mime:\"application/dicom\"};if(r([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:\"lnk\",mime:\"application/x.ms.shortcut\"};if(r([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:\"alias\",mime:\"application/x.apple.alias\"};if(r([76,80],{offset:34})&&(r([0,0,1],{offset:8})||r([1,0,2],{offset:8})||r([2,0,2],{offset:8})))return{ext:\"eot\",mime:\"application/vnd.ms-fontobject\"};if(r([6,6,237,245,216,29,70,229,189,49,239,231,254,116,183,29]))return{ext:\"indd\",mime:\"application/x-indesign\"};if(await t.peekBuffer(e,{length:Math.min(512,t.fileInfo.size),mayBeLess:!0}),tarHeaderChecksumMatches(e))return{ext:\"tar\",mime:\"application/x-tar\"};if(r([255,254,255,14,83,0,107,0,101,0,116,0,99,0,104,0,85,0,112,0,32,0,77,0,111,0,100,0,101,0,108,0]))return{ext:\"skp\",mime:\"application/vnd.sketchup.skp\"};if(i(\"-----BEGIN PGP MESSAGE-----\"))return{ext:\"pgp\",mime:\"application/pgp-encrypted\"};if(e.length>=2&&r([255,224],{offset:0,mask:[255,224]})){if(r([16],{offset:1,mask:[22]}))return r([8],{offset:1,mask:[8]}),{ext:\"aac\",mime:\"audio/aac\"};if(r([2],{offset:1,mask:[6]}))return{ext:\"mp3\",mime:\"audio/mpeg\"};if(r([4],{offset:1,mask:[6]}))return{ext:\"mp2\",mime:\"audio/mpeg\"};if(r([6],{offset:1,mask:[6]}))return{ext:\"mp1\",mime:\"audio/mpeg\"}}}const stream=readableStream=>new Promise(((resolve,reject)=>{const stream=eval(\"require\")(\"stream\");readableStream.on(\"error\",reject),readableStream.once(\"readable\",(async()=>{const t=new stream.PassThrough;let e;e=stream.pipeline?stream.pipeline(readableStream,t,(()=>{})):readableStream.pipe(t);const r=readableStream.read(minimumBytes)||readableStream.read()||Buffer.alloc(0);try{const e=await fromBuffer(r);t.fileType=e}catch(t){reject(t)}resolve(e)}))})),fileType={fromStream,fromTokenizer,fromBuffer,stream};Object.defineProperty(fileType,\"extensions\",{get:()=>new Set(supported.extensions)}),Object.defineProperty(fileType,\"mimeTypes\",{get:()=>new Set(supported.mimeTypes)}),module.exports=fileType},5025:(t,e,r)=>{\"use strict\";const i=r(3569),n=r(8789),a={fromFile:async function(t){const e=await i.fromFile(t);try{return await n.fromTokenizer(e)}finally{await e.close()}}};Object.assign(a,n),Object.defineProperty(a,\"extensions\",{get:()=>n.extensions}),Object.defineProperty(a,\"mimeTypes\",{get:()=>n.mimeTypes}),t.exports=a},4078:t=>{\"use strict\";t.exports={extensions:[\"jpg\",\"png\",\"apng\",\"gif\",\"webp\",\"flif\",\"xcf\",\"cr2\",\"cr3\",\"orf\",\"arw\",\"dng\",\"nef\",\"rw2\",\"raf\",\"tif\",\"bmp\",\"icns\",\"jxr\",\"psd\",\"indd\",\"zip\",\"tar\",\"rar\",\"gz\",\"bz2\",\"7z\",\"dmg\",\"mp4\",\"mid\",\"mkv\",\"webm\",\"mov\",\"avi\",\"mpg\",\"mp2\",\"mp3\",\"m4a\",\"oga\",\"ogg\",\"ogv\",\"opus\",\"flac\",\"wav\",\"spx\",\"amr\",\"pdf\",\"epub\",\"exe\",\"swf\",\"rtf\",\"wasm\",\"woff\",\"woff2\",\"eot\",\"ttf\",\"otf\",\"ico\",\"flv\",\"ps\",\"xz\",\"sqlite\",\"nes\",\"crx\",\"xpi\",\"cab\",\"deb\",\"ar\",\"rpm\",\"Z\",\"lz\",\"cfb\",\"mxf\",\"mts\",\"blend\",\"bpg\",\"docx\",\"pptx\",\"xlsx\",\"3gp\",\"3g2\",\"jp2\",\"jpm\",\"jpx\",\"mj2\",\"aif\",\"qcp\",\"odt\",\"ods\",\"odp\",\"xml\",\"mobi\",\"heic\",\"cur\",\"ktx\",\"ape\",\"wv\",\"dcm\",\"ics\",\"glb\",\"pcap\",\"dsf\",\"lnk\",\"alias\",\"voc\",\"ac3\",\"m4v\",\"m4p\",\"m4b\",\"f4v\",\"f4p\",\"f4b\",\"f4a\",\"mie\",\"asf\",\"ogm\",\"ogx\",\"mpc\",\"arrow\",\"shp\",\"aac\",\"mp1\",\"it\",\"s3m\",\"xm\",\"ai\",\"skp\",\"avif\",\"eps\",\"lzh\",\"pgp\",\"asar\",\"stl\",\"chm\",\"3mf\",\"zst\",\"jxl\",\"vcf\"],mimeTypes:[\"image/jpeg\",\"image/png\",\"image/gif\",\"image/webp\",\"image/flif\",\"image/x-xcf\",\"image/x-canon-cr2\",\"image/x-canon-cr3\",\"image/tiff\",\"image/bmp\",\"image/vnd.ms-photo\",\"image/vnd.adobe.photoshop\",\"application/x-indesign\",\"application/epub+zip\",\"application/x-xpinstall\",\"application/vnd.oasis.opendocument.text\",\"application/vnd.oasis.opendocument.spreadsheet\",\"application/vnd.oasis.opendocument.presentation\",\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\"application/zip\",\"application/x-tar\",\"application/x-rar-compressed\",\"application/gzip\",\"application/x-bzip2\",\"application/x-7z-compressed\",\"application/x-apple-diskimage\",\"application/x-apache-arrow\",\"video/mp4\",\"audio/midi\",\"video/x-matroska\",\"video/webm\",\"video/quicktime\",\"video/vnd.avi\",\"audio/vnd.wave\",\"audio/qcelp\",\"audio/x-ms-asf\",\"video/x-ms-asf\",\"application/vnd.ms-asf\",\"video/mpeg\",\"video/3gpp\",\"audio/mpeg\",\"audio/mp4\",\"audio/opus\",\"video/ogg\",\"audio/ogg\",\"application/ogg\",\"audio/x-flac\",\"audio/ape\",\"audio/wavpack\",\"audio/amr\",\"application/pdf\",\"application/x-msdownload\",\"application/x-shockwave-flash\",\"application/rtf\",\"application/wasm\",\"font/woff\",\"font/woff2\",\"application/vnd.ms-fontobject\",\"font/ttf\",\"font/otf\",\"image/x-icon\",\"video/x-flv\",\"application/postscript\",\"application/eps\",\"application/x-xz\",\"application/x-sqlite3\",\"application/x-nintendo-nes-rom\",\"application/x-google-chrome-extension\",\"application/vnd.ms-cab-compressed\",\"application/x-deb\",\"application/x-unix-archive\",\"application/x-rpm\",\"application/x-compress\",\"application/x-lzip\",\"application/x-cfb\",\"application/x-mie\",\"application/mxf\",\"video/mp2t\",\"application/x-blender\",\"image/bpg\",\"image/jp2\",\"image/jpx\",\"image/jpm\",\"image/mj2\",\"audio/aiff\",\"application/xml\",\"application/x-mobipocket-ebook\",\"image/heif\",\"image/heif-sequence\",\"image/heic\",\"image/heic-sequence\",\"image/icns\",\"image/ktx\",\"application/dicom\",\"audio/x-musepack\",\"text/calendar\",\"text/vcard\",\"model/gltf-binary\",\"application/vnd.tcpdump.pcap\",\"audio/x-dsf\",\"application/x.ms.shortcut\",\"application/x.apple.alias\",\"audio/x-voc\",\"audio/vnd.dolby.dd-raw\",\"audio/x-m4a\",\"image/apng\",\"image/x-olympus-orf\",\"image/x-sony-arw\",\"image/x-adobe-dng\",\"image/x-nikon-nef\",\"image/x-panasonic-rw2\",\"image/x-fujifilm-raf\",\"video/x-m4v\",\"video/3gpp2\",\"application/x-esri-shape\",\"audio/aac\",\"audio/x-it\",\"audio/x-s3m\",\"audio/x-xm\",\"video/MP1S\",\"video/MP2P\",\"application/vnd.sketchup.skp\",\"image/avif\",\"application/x-lzh-compressed\",\"application/pgp-encrypted\",\"application/x-asar\",\"model/stl\",\"application/vnd.ms-htmlhelp\",\"model/3mf\",\"image/jxl\",\"application/zstd\"]}},7044:(t,e)=>{\"use strict\";e.stringToBytes=t=>[...t].map((t=>t.charCodeAt(0))),e.tarHeaderChecksumMatches=(t,e=0)=>{const r=parseInt(t.toString(\"utf8\",148,154).replace(/\\0.*$/,\"\").trim(),8);if(isNaN(r))return!1;let i=256;for(let r=e;r<e+148;r++)i+=t[r];for(let r=e+156;r<e+512;r++)i+=t[r];return r===i},e.uint32SyncSafeToken={get:(t,e)=>127&t[e+3]|t[e+2]<<7|t[e+1]<<14|t[e]<<21,len:4}},3243:(t,e,r)=>{\"use strict\";var i=r(9680),n=Object.prototype.toString,a=Object.prototype.hasOwnProperty,o=function(t,e,r){for(var i=0,n=t.length;i<n;i++)a.call(t,i)&&(null==r?e(t[i],i,t):e.call(r,t[i],i,t))},s=function(t,e,r){for(var i=0,n=t.length;i<n;i++)null==r?e(t.charAt(i),i,t):e.call(r,t.charAt(i),i,t)},h=function(t,e,r){for(var i in t)a.call(t,i)&&(null==r?e(t[i],i,t):e.call(r,t[i],i,t))};t.exports=function(t,e,r){if(!i(e))throw new TypeError(\"iterator must be a function\");var a;arguments.length>=3&&(a=r),\"[object Array]\"===n.call(t)?o(t,e,a):\"string\"==typeof t?s(t,e,a):h(t,e,a)}},2855:(t,e)=>{\"use strict\";function r(t,e,r,i){for(var n=t[e++],a=1<<n,o=a+1,s=o+1,h=n+1,l=(1<<h)-1,f=0,u=0,c=0,d=t[e++],p=new Int32Array(4096),m=null;;){for(;f<16&&0!==d;)u|=t[e++]<<f,f+=8,1===d?d=t[e++]:--d;if(f<h)break;var g=u&l;if(u>>=h,f-=h,g!==a){if(g===o)break;for(var b=g<s?g:m,_=0,y=b;y>a;)y=p[y]>>8,++_;var w=y;if(c+_+(b!==g?1:0)>i)return void console.log(\"Warning, gif stream longer than expected.\");r[c++]=w;var v=c+=_;for(b!==g&&(r[c++]=w),y=b;_--;)y=p[y],r[--v]=255&y,y>>=8;null!==m&&s<4096&&(p[s++]=m<<8|w,s>=l+1&&h<12&&(++h,l=l<<1|1)),m=g}else s=o+1,l=(1<<(h=n+1))-1,m=null}return c!==i&&console.log(\"Warning, gif stream shorter than expected.\"),r}try{e.GifWriter=function(t,e,r,i){var n=0,a=void 0===(i=void 0===i?{}:i).loop?null:i.loop,o=void 0===i.palette?null:i.palette;if(e<=0||r<=0||e>65535||r>65535)throw new Error(\"Width/Height invalid.\");function s(t){var e=t.length;if(e<2||e>256||e&e-1)throw new Error(\"Invalid code/color length, must be power of 2 and 2 .. 256.\");return e}t[n++]=71,t[n++]=73,t[n++]=70,t[n++]=56,t[n++]=57,t[n++]=97;var h=0,l=0;if(null!==o){for(var f=s(o);f>>=1;)++h;if(f=1<<h,--h,void 0!==i.background){if((l=i.background)>=f)throw new Error(\"Background index out of range.\");if(0===l)throw new Error(\"Background index explicitly passed as 0.\")}}if(t[n++]=255&e,t[n++]=e>>8&255,t[n++]=255&r,t[n++]=r>>8&255,t[n++]=(null!==o?128:0)|h,t[n++]=l,t[n++]=0,null!==o)for(var u=0,c=o.length;u<c;++u){var d=o[u];t[n++]=d>>16&255,t[n++]=d>>8&255,t[n++]=255&d}if(null!==a){if(a<0||a>65535)throw new Error(\"Loop count invalid.\");t[n++]=33,t[n++]=255,t[n++]=11,t[n++]=78,t[n++]=69,t[n++]=84,t[n++]=83,t[n++]=67,t[n++]=65,t[n++]=80,t[n++]=69,t[n++]=50,t[n++]=46,t[n++]=48,t[n++]=3,t[n++]=1,t[n++]=255&a,t[n++]=a>>8&255,t[n++]=0}var p=!1;this.addFrame=function(e,r,i,a,h,l){if(!0===p&&(--n,p=!1),l=void 0===l?{}:l,e<0||r<0||e>65535||r>65535)throw new Error(\"x/y invalid.\");if(i<=0||a<=0||i>65535||a>65535)throw new Error(\"Width/Height invalid.\");if(h.length<i*a)throw new Error(\"Not enough pixels for the frame size.\");var f=!0,u=l.palette;if(null==u&&(f=!1,u=o),null==u)throw new Error(\"Must supply either a local or global palette.\");for(var c=s(u),d=0;c>>=1;)++d;c=1<<d;var m=void 0===l.delay?0:l.delay,g=void 0===l.disposal?0:l.disposal;if(g<0||g>3)throw new Error(\"Disposal out of range.\");var b=!1,_=0;if(void 0!==l.transparent&&null!==l.transparent&&(b=!0,(_=l.transparent)<0||_>=c))throw new Error(\"Transparent color index.\");if((0!==g||b||0!==m)&&(t[n++]=33,t[n++]=249,t[n++]=4,t[n++]=g<<2|(!0===b?1:0),t[n++]=255&m,t[n++]=m>>8&255,t[n++]=_,t[n++]=0),t[n++]=44,t[n++]=255&e,t[n++]=e>>8&255,t[n++]=255&r,t[n++]=r>>8&255,t[n++]=255&i,t[n++]=i>>8&255,t[n++]=255&a,t[n++]=a>>8&255,t[n++]=!0===f?128|d-1:0,!0===f)for(var y=0,w=u.length;y<w;++y){var v=u[y];t[n++]=v>>16&255,t[n++]=v>>8&255,t[n++]=255&v}return n=function(t,e,r,i){t[e++]=r;var n=e++,a=1<<r,o=a-1,s=a+1,h=s+1,l=r+1,f=0,u=0;function c(r){for(;f>=r;)t[e++]=255&u,u>>=8,f-=8,e===n+256&&(t[n]=255,n=e++)}function d(t){u|=t<<f,f+=l,c(8)}var p=i[0]&o,m={};d(a);for(var g=1,b=i.length;g<b;++g){var _=i[g]&o,y=p<<8|_,w=m[y];if(void 0===w){for(u|=p<<f,f+=l;f>=8;)t[e++]=255&u,u>>=8,f-=8,e===n+256&&(t[n]=255,n=e++);4096===h?(d(a),h=s+1,l=r+1,m={}):(h>=1<<l&&++l,m[y]=h++),p=_}else p=w}return d(p),d(s),c(1),n+1===e?t[n]=0:(t[n]=e-n-1,t[e++]=0),e}(t,n,d<2?2:d,h),n},this.end=function(){return!1===p&&(t[n++]=59,p=!0),n},this.getOutputBuffer=function(){return t},this.setOutputBuffer=function(e){t=e},this.getOutputBufferPosition=function(){return n},this.setOutputBufferPosition=function(t){n=t}},e.GifReader=function(t){var e=0;if(71!==t[e++]||73!==t[e++]||70!==t[e++]||56!==t[e++]||56!=(t[e++]+1&253)||97!==t[e++])throw new Error(\"Invalid GIF 87a/89a header.\");var i=t[e++]|t[e++]<<8,n=t[e++]|t[e++]<<8,a=t[e++],o=a>>7,s=1<<1+(7&a);t[e++],t[e++];var h=null,l=null;o&&(h=e,l=s,e+=3*s);var f=!0,u=[],c=0,d=null,p=0,m=null;for(this.width=i,this.height=n;f&&e<t.length;)switch(t[e++]){case 33:switch(t[e++]){case 255:if(11!==t[e]||78==t[e+1]&&69==t[e+2]&&84==t[e+3]&&83==t[e+4]&&67==t[e+5]&&65==t[e+6]&&80==t[e+7]&&69==t[e+8]&&50==t[e+9]&&46==t[e+10]&&48==t[e+11]&&3==t[e+12]&&1==t[e+13]&&0==t[e+16])e+=14,m=t[e++]|t[e++]<<8,e++;else for(e+=12;;){if(!((I=t[e++])>=0))throw Error(\"Invalid block size\");if(0===I)break;e+=I}break;case 249:if(4!==t[e++]||0!==t[e+4])throw new Error(\"Invalid graphics extension block.\");var g=t[e++];c=t[e++]|t[e++]<<8,d=t[e++],0==(1&g)&&(d=null),p=g>>2&7,e++;break;case 254:for(;;){if(!((I=t[e++])>=0))throw Error(\"Invalid block size\");if(0===I)break;e+=I}break;default:throw new Error(\"Unknown graphic control label: 0x\"+t[e-1].toString(16))}break;case 44:var b=t[e++]|t[e++]<<8,_=t[e++]|t[e++]<<8,y=t[e++]|t[e++]<<8,w=t[e++]|t[e++]<<8,v=t[e++],x=v>>6&1,E=1<<1+(7&v),k=h,S=l,M=!1;v>>7&&(M=!0,k=e,S=E,e+=3*E);var A=e;for(e++;;){var I;if(!((I=t[e++])>=0))throw Error(\"Invalid block size\");if(0===I)break;e+=I}u.push({x:b,y:_,width:y,height:w,has_local_palette:M,palette_offset:k,palette_size:S,data_offset:A,data_length:e-A,transparent_index:d,interlaced:!!x,delay:c,disposal:p});break;case 59:f=!1;break;default:throw new Error(\"Unknown gif block: 0x\"+t[e-1].toString(16))}this.numFrames=function(){return u.length},this.loopCount=function(){return m},this.frameInfo=function(t){if(t<0||t>=u.length)throw new Error(\"Frame index out of range.\");return u[t]},this.decodeAndBlitFrameBGRA=function(e,n){var a=this.frameInfo(e),o=a.width*a.height,s=new Uint8Array(o);r(t,a.data_offset,s,o);var h=a.palette_offset,l=a.transparent_index;null===l&&(l=256);var f=a.width,u=i-f,c=f,d=4*(a.y*i+a.x),p=4*((a.y+a.height)*i+a.x),m=d,g=4*u;!0===a.interlaced&&(g+=4*i*7);for(var b=8,_=0,y=s.length;_<y;++_){var w=s[_];if(0===c&&(c=f,(m+=g)>=p&&(g=4*u+4*i*(b-1),m=d+(f+u)*(b<<1),b>>=1)),w===l)m+=4;else{var v=t[h+3*w],x=t[h+3*w+1],E=t[h+3*w+2];n[m++]=E,n[m++]=x,n[m++]=v,n[m++]=255}--c}},this.decodeAndBlitFrameRGBA=function(e,n){var a=this.frameInfo(e),o=a.width*a.height,s=new Uint8Array(o);r(t,a.data_offset,s,o);var h=a.palette_offset,l=a.transparent_index;null===l&&(l=256);var f=a.width,u=i-f,c=f,d=4*(a.y*i+a.x),p=4*((a.y+a.height)*i+a.x),m=d,g=4*u;!0===a.interlaced&&(g+=4*i*7);for(var b=8,_=0,y=s.length;_<y;++_){var w=s[_];if(0===c&&(c=f,(m+=g)>=p&&(g=4*u+4*i*(b-1),m=d+(f+u)*(b<<1),b>>=1)),w===l)m+=4;else{var v=t[h+3*w],x=t[h+3*w+1],E=t[h+3*w+2];n[m++]=v,n[m++]=x,n[m++]=E,n[m++]=255}--c}}}}catch(t){}},7604:(t,e,r)=>{\"use strict\";var i=r(8834).lW;class n{constructor(...t){if(0===t.length)throw new Error(\"constructor requires parameters\");const e=t[0];if(null!==e&&\"object\"==typeof e)if(e instanceof n){const t=e.bitmap;this.bitmap={width:t.width,height:t.height,data:new i(t.width*t.height*4)},t.data.copy(this.bitmap.data)}else{if(!(e.width&&e.height&&e.data))throw new Error(\"unrecognized constructor parameters\");this.bitmap=e}else{if(\"number\"!=typeof e||\"number\"!=typeof t[1])throw new Error(\"unrecognized constructor parameters\");{const r=e,n=t[1],a=t[2];this.bitmap={width:r,height:n},i.isBuffer(a)?this.bitmap.data=a:(this.bitmap.data=new i(r*n*4),\"number\"==typeof a&&this.fillRGBA(a))}}}blit(t,e,r,i,n,a,o){if(i+a>this.bitmap.width)throw new Error(\"copy exceeds width of source bitmap\");if(e+a>t.bitmap.width)throw new Error(\"copy exceeds width of target bitmap\");if(n+o>this.bitmap.height)throw new Error(\"copy exceeds height of source bitmap\");if(r+o>t.bitmap.height)throw new Erro(\"copy exceeds height of target bitmap\");const s=this.bitmap.data,h=t.bitmap.data,l=4*this.bitmap.width,f=4*t.bitmap.width,u=4*a;let c=n*l+4*i,d=r*f+4*e;for(;--o>=0;)s.copy(h,d,c,c+u),c+=l,d+=f;return this}fillRGBA(t){const e=this.bitmap.data,r=4*this.bitmap.height;let i=0;for(;i<r;)e.writeUInt32BE(t,i),i+=4;for(;i<e.length;)e.copy(e,i,0,r),i+=r;return this}getRGBA(t,e){const r=4*(e*this.bitmap.width+t);return this.bitmap.data.readUInt32BE(r)}getRGBASet(){const t=new Set,e=this.bitmap.data;for(let r=0;r<e.length;r+=4)t.add(e.readUInt32BE(r,!0));return t}greyscale(){const t=this.bitmap.data;return this.scan(0,0,this.bitmap.width,this.bitmap.height,((e,r,i)=>{const n=Math.round(.299*t[i]+.587*t[i+1]+.114*t[i+2]);t[i]=n,t[i+1]=n,t[i+2]=n})),this}reframe(t,e,r,i,a){const o=t<0?0:t,s=e<0?0:e,h=r+o>this.bitmap.width?this.bitmap.width-o:r,l=i+s>this.bitmap.height?this.bitmap.height-s:i,f=t<0?-t:0,u=e<0?-e:0;let c;if(void 0===a){if(o!==t||s!=e||h!==r||l!==i)throw new GifError(\"fillRGBA required for this reframing\");c=new n(r,i)}else c=new n(r,i,a);return this.blit(c,f,u,o,s,h,l),this.bitmap=c.bitmap,this}scale(t){if(1===t)return;if(!Number.isInteger(t)||t<1)throw new Error(\"the scale must be an integer >= 1\");const e=this.bitmap.width,r=this.bitmap.height,n=e*t*4,a=this.bitmap.data,o=new i(r*n*t);let s,h=0,l=0;for(let i=0;i<r;++i){s=l;for(let r=0;r<e;++r){const e=a.readUInt32BE(h,!0);for(let r=0;r<t;++r)o.writeUInt32BE(e,l),l+=4;h+=4}for(let e=1;e<t;++e)o.copy(o,l,s,l),l+=n,s+=n}return this.bitmap={width:e*t,height:r*t,data:o},this}scanAllCoords(t){const e=this.bitmap.width,r=this.bitmap.data.length;let i=0,n=0;for(let a=0;a<r;a+=4)t(i,n,a),++i===e&&(i=0,++n)}scanAllIndexes(t){const e=this.bitmap.data.length;for(let r=0;r<e;r+=4)t(r)}}t.exports=n},4364:(t,e)=>{\"use strict\";class r{constructor(t,e,r){this.width=r.width,this.height=r.height,this.loops=r.loops,this.usesTransparency=r.usesTransparency,this.colorScope=r.colorScope,this.frames=e,this.buffer=t}}r.GlobalColorsPreferred=0,r.GlobalColorsOnly=1,r.LocalColorsOnly=2;class i extends Error{constructor(t){super(t),t instanceof Error&&(this.stack=\"Gif\"+t.stack)}}e.Gif=r,e.GifError=i},6512:(t,e,r)=>{\"use strict\";var i=r(8834).lW;const n=r(2855),{Gif:a,GifError:o}=r(4364);function s(){const t=r(4602);return s=function(){return t},t}const{GifFrame:h}=r(5585),l=100;function f(t,e){const r=t.indexOf(e);return-1===r?null:r}function u(t,e){for(var r,i=0,n=t.length-1;i<=n;)if(t[r=Math.floor((i+n)/2)]>e)n=r-1;else{if(!(t[r]<e))return r;i=r+1}return null}function c(t){const e=t.colors;t.usesTransparency&&e.push(0);const r=e.length;let i=2;for(;r>i;)i<<=1;e.length=i,e.fill(0,r)}function d(t,e){let r=t.bitmap.width*t.bitmap.height;return r=Math.ceil(r*e/8),r+=Math.ceil(r/255),l+r+768}function p(t){let e=t.indexCount,r=0;for(--e;e;)++r,e>>=1;return r>0?r:1}function m(t,e,r,n,a){if(r.interlaced)throw new o(\"writing interlaced GIFs is not supported\");const s=function(t,e,r){const n=r.colors,a=n.length<=8?f:u,s=e.bitmap.data,h=new i(s.length/4);let l=n.length,c=0,d=0;for(;c<s.length;){if(0!==s[c+3]){const t=s.readUInt32BE(c,!0)>>8&16777215;h[d]=a(n,t)}else h[d]=l;c+=4,++d}if(r.usesTransparency){if(256===l)throw new o(`Frame ${t} already has 256 colorsand so can't use transparency`)}else l=null;return{buffer:h,transparentIndex:l}}(e,r,n),h={delay:r.delayCentisecs,disposal:r.disposalMethod,transparent:s.transparentIndex};a&&(c(n),h.palette=n.colors);try{let e,n=t.getOutputBuffer(),a=t.getOutputBufferPosition(),o=!0;for(;o;)if(e=t.addFrame(r.xOffset,r.yOffset,r.bitmap.width,r.bitmap.height,s.buffer,h),o=!1,e>=n.length-1){const e=new i(1.5*n.length);n.copy(e),t.setOutputBuffer(e),t.setOutputBufferPosition(a),n=e,o=!0}return n}catch(t){throw new o(t)}}e.GifCodec=class{constructor(t={}){this._transparentRGB=null,\"number\"==typeof t.transparentRGB&&0!==t.transparentRGB&&(this._transparentRGBA=256*t.transparentRGB),this._testInitialBufferSize=0}decodeGif(t){try{let e;try{e=new n.GifReader(t)}catch(t){throw new o(t)}const r=e.numFrames(),i=[],s={width:e.width,height:e.height,loops:e.loopCount(),usesTransparency:!1};for(let t=0;t<r;++t){const r=this._decodeFrame(e,t,s.usesTransparency);i.push(r.frame),r.usesTransparency&&(s.usesTransparency=!0)}return Promise.resolve(new a(t,i,s))}catch(t){return Promise.reject(t)}}encodeGif(t,e={}){try{if(null===t||0===t.length)throw new o(\"there are no frames\");const r=s().getMaxDimensions(t);return(e=Object.assign({},e)).width=r.maxWidth,e.height=r.maxHeight,void 0===e.loops&&(e.loops=0),e.colorScope=e.colorScope||a.GlobalColorsPreferred,Promise.resolve(this._encodeGif(t,e))}catch(t){return Promise.reject(t)}}_decodeFrame(t,e,r){let n,a;try{if(n=t.frameInfo(e),a=new i(t.width*t.height*4),t.decodeAndBlitFrameRGBA(e,a),n.width!==t.width||n.height!==t.height){if(n.y&&(a=a.slice(n.y*t.width*4)),t.width>n.width)for(let e=0;e<n.height;++e)a.copy(a,e*n.width*4,4*(n.x+e*t.width),4*(n.x+e*t.width)+4*n.width);a=a.slice(0,n.width*n.height*4)}}catch(t){throw new o(t)}let s=!1;if(null===this._transparentRGBA){if(!r)for(let t=3;t<a.length;t+=4)0===a[t]&&(s=!0,t=a.length)}else for(let t=3;t<a.length;t+=4)0===a[t]&&(a.writeUInt32BE(this._transparentRGBA,t-3),s=!0);return{frame:new h(n.width,n.height,a,{xOffset:n.x,yOffset:n.y,disposalMethod:n.disposal,interlaced:n.interlaced,delayCentisecs:n.delay}),usesTransparency:s}}_encodeGif(t,e){let r;if(e.colorScope===a.LocalColorsOnly)r=s().getColorInfo(t,0);else if(r=s().getColorInfo(t,256),!r.colors){if(e.colorScope===a.GlobalColorsOnly)throw new o(\"Too many color indexes for global color table\");e.colorScope=a.LocalColorsOnly}e.usesTransparency=r.usesTransparency;const h=r.palettes;return e.colorScope===a.LocalColorsOnly?function(t,e,r,s){const h={loop:e.loops};let l,f=new i(2e3);try{l=new n.GifWriter(f,e.width,e.height,h)}catch(t){throw new o(t)}for(let e=0;e<t.length;++e)f=m(l,e,t[e],s[e],!0);return new a(f.slice(0,l.end()),t,e)}(t,e,0,h):function(t,e,r,s){const h={colors:s.colors.slice(),usesTransparency:s.usesTransparency};c(h);const l={palette:h.colors,loop:e.loops};let f,u=new i(2e3);try{f=new n.GifWriter(u,e.width,e.height,l)}catch(t){throw new o(t)}for(let e=0;e<t.length;++e)u=m(f,e,t[e],s,!1);return new a(u.slice(0,f.end()),t,e)}(t,e,0,r)}_getSizeEstimateGlobal(t,e){if(this._testInitialBufferSize>0)return this._testInitialBufferSize;let r=968;const i=p(t);return e.forEach((t=>{r+=d(t,i)})),r}_getSizeEstimateLocal(t,e){if(this._testInitialBufferSize>0)return this._testInitialBufferSize;let r=200;for(let i=0;i<e.length;++i){const n=p(t[i]);r+=d(e[i],n)}return r}}},5585:(t,e,r)=>{\"use strict\";const i=r(7604),{GifError:n}=r(4364);class a extends i{constructor(...t){if(super(...t),t[0]instanceof a){const e=t[0];this.xOffset=e.xOffset,this.yOffset=e.yOffset,this.disposalMethod=e.disposalMethod,this.delayCentisecs=e.delayCentisecs,this.interlaced=e.interlaced}else{const e=t[t.length-1];let r={};\"object\"!=typeof e||e instanceof i||(r=e),this.xOffset=r.xOffset||0,this.yOffset=r.yOffset||0,this.disposalMethod=void 0!==r.disposalMethod?r.disposalMethod:a.DisposeToBackgroundColor,this.delayCentisecs=r.delayCentisecs||8,this.interlaced=r.interlaced||!1}}getPalette(){const t=new Set,e=this.bitmap.data;let r=0,i=!1;for(;r<e.length;){if(0===e[r+3])i=!0;else{const i=e.readUInt32BE(r,!0)>>8&16777215;t.add(i)}r+=4}const n=new Array(t.size),a=t.values();for(r=0;r<n.length;++r)n[r]=a.next().value;n.sort(((t,e)=>t-e));let o=n.length;return i&&++o,{colors:n,usesTransparency:i,indexCount:o}}}a.DisposeToAnything=0,a.DisposeNothing=1,a.DisposeToBackgroundColor=2,a.DisposeToPrevious=3,e.GifFrame=a},4602:(t,e,r)=>{\"use strict\";var i=r(8834).lW;const n=r(8522),a=r(2460),o=r(7604),{GifFrame:s}=r(5585),{GifError:h}=r(4364),{GifCodec:l}=r(6512),f=[\".jpg\",\".jpeg\",\".png\",\".bmp\"],u=new l;function c(t,e,r,i,n){const o=Array.isArray(t)?t:[t];if(n){if([\"FloydSteinberg\",\"FalseFloydSteinberg\",\"Stucki\",\"Atkinson\",\"Jarvis\",\"Burkes\",\"Sierra\",\"TwoSierra\",\"SierraLite\"].indexOf(n.ditherAlgorithm)<0)throw new Error(`Invalid ditherAlgorithm '${n.ditherAlgorithm}'`);void 0===n.serpentine&&(n.serpentine=!0),void 0===n.minimumColorDistanceToDither&&(n.minimumColorDistanceToDither=0),void 0===n.calculateErrorLikeGIMP&&(n.calculateErrorLikeGIMP=!1)}const s=new a.distance.Euclidean,h=new a.palette[e](s,r,i);let l;l=n?new a.image.ErrorDiffusionArray(s,a.image.ErrorDiffusionArrayKernel[n.ditherAlgorithm],n.serpentine,n.minimumColorDistanceToDither,n.calculateErrorLikeGIMP):new a.image.NearestColor(s);const f=[];o.forEach((t=>{const e=t.bitmap.data,r=new ArrayBuffer(e.length),i=new Uint32Array(r);for(let t=0,r=0;t<e.length;t+=4,++r)i[r]=e.readUInt32LE(t,!0);const n=a.utils.PointContainer.fromUint32Array(i,t.bitmap.width,t.bitmap.height);h.sample(n),f.push(n)}));const u=h.quantizeSync();for(let t=0;t<o.length;++t){const e=o[t].bitmap.data,r=l.quantizeSync(f[t],u).toUint32Array();for(let t=0,i=0;t<e.length;t+=4,++i)e.writeUInt32LE(r[i],t)}}e.cloneFrames=function(t){let e=[];return t.forEach((t=>{e.push(new s(t))})),e},e.getColorInfo=function(t,e){let r=!1;const i=[];for(let e=0;e<t.length;++e){let n=t[e].getPalette();if(n.usesTransparency&&(r=!0),n.indexCount>256)throw new h(`Frame ${e} uses more than 256 color indexes`);i.push(n)}if(0===e)return{usesTransparency:r,palettes:i};const n=new Set;i.forEach((t=>{t.colors.forEach((t=>{n.add(t)}))}));let a=n.size;if(r&&++a,e&&a>e)return{usesTransparency:r,palettes:i};const o=new Array(n.size),s=n.values();for(let t=0;t<o.length;++t)o[t]=s.next().value;return o.sort(((t,e)=>t-e)),{colors:o,indexCount:a,usesTransparency:r,palettes:i}},e.copyAsJimp=function(t,r){return e.shareAsJimp(t,new o(r))},e.getMaxDimensions=function(t){let e=0,r=0;return t.forEach((t=>{const i=t.xOffset+t.bitmap.width;i>e&&(e=i);const n=t.yOffset+t.bitmap.height;n>r&&(r=n)})),{maxWidth:e,maxHeight:r}},e.quantizeDekker=function(t,e,r){c(t,\"NeuQuantFloat\",e=e||256,0,r)},e.quantizeSorokin=function(t,e,r,i){let n;switch(e=e||256,r=r||\"min-pop\"){case\"min-pop\":n=2;break;case\"top-pop\":n=1;break;default:throw new Error(`Invalid quantizeSorokin histogram '${r}'`)}c(t,\"RGBQuant\",e,n,i)},e.quantizeWu=function(t,e,r,i){if(e=e||256,(r=r||5)<1||r>8)throw new Error(\"Invalid quantization quality\");c(t,\"WuQuant\",e,r,i)},e.read=function(t,e){return e=e||u,i.isBuffer(t)?e.decodeGif(t):(r=t,new Promise(((t,e)=>{n.readFile(r,((r,i)=>r?e(r):t(i)))}))).then((t=>e.decodeGif(t)));var r},e.shareAsJimp=function(t,e){const r=new t(e.bitmap.width,e.bitmap.height,0);return r.bitmap.data=e.bitmap.data,r},e.write=function(t,e,r,i){i=i||u;const a=t.match(/\\.[a-zA-Z]+$/);if(null!==a&&f.includes(a[0].toLowerCase()))throw new Error(`GIF '${t}' has an unexpected suffix`);return i.encodeGif(e,r).then((e=>function(t,e){return new Promise(((r,i)=>{n.writeFile(t,e,(t=>t?i(t):r()))}))}(t,e.buffer).then((()=>e))))}},9455:(t,e,r)=>{\"use strict\";const i=r(7604),{Gif:n,GifError:a}=r(4364),{GifCodec:o}=r(6512),{GifFrame:s}=r(5585),h=r(4602);t.exports={BitmapImage:i,Gif:n,GifCodec:o,GifFrame:s,GifUtil:h,GifError:a}},5048:(t,e,r)=>{var i;i=\"undefined\"!=typeof window?window:void 0!==r.g?r.g:\"undefined\"!=typeof self?self:{},t.exports=i},2333:(t,e)=>{e.read=function(t,e,r,i,n){var a,o,s=8*n-i-1,h=(1<<s)-1,l=h>>1,f=-7,u=r?n-1:0,c=r?-1:1,d=t[e+u];for(u+=c,a=d&(1<<-f)-1,d>>=-f,f+=s;f>0;a=256*a+t[e+u],u+=c,f-=8);for(o=a&(1<<-f)-1,a>>=-f,f+=i;f>0;o=256*o+t[e+u],u+=c,f-=8);if(0===a)a=1-l;else{if(a===h)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,i),a-=l}return(d?-1:1)*o*Math.pow(2,a-i)},e.write=function(t,e,r,i,n,a){var o,s,h,l=8*a-n-1,f=(1<<l)-1,u=f>>1,c=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:a-1,p=i?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=f):(o=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-o))<1&&(o--,h*=2),(e+=o+u>=1?c/h:c*Math.pow(2,1-u))*h>=2&&(o++,h/=2),o+u>=f?(s=0,o=f):o+u>=1?(s=(e*h-1)*Math.pow(2,n),o+=u):(s=e*Math.pow(2,u-1)*Math.pow(2,n),o=0));n>=8;t[r+d]=255&s,d+=p,s/=256,n-=8);for(o=o<<n|s,l+=n;l>0;t[r+d]=255&o,d+=p,o/=256,l-=8);t[r+d-p]|=128*m}},9680:t=>{\"use strict\";var e=Function.prototype.toString,r=/^\\s*class\\b/,i=function(t){try{var i=e.call(t);return r.test(i)}catch(t){return!1}},n=Object.prototype.toString,a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag;t.exports=function(t){if(!t)return!1;if(\"function\"!=typeof t&&\"object\"!=typeof t)return!1;if(\"function\"==typeof t&&!t.prototype)return!0;if(a)return function(t){try{return!i(t)&&(e.call(t),!0)}catch(t){return!1}}(t);if(i(t))return!1;var r=n.call(t);return\"[object Function]\"===r||\"[object GeneratorFunction]\"===r}},9748:t=>{t.exports=function(t){var r=e.call(t);return\"[object Function]\"===r||\"function\"==typeof t&&\"[object RegExp]\"!==r||\"undefined\"!=typeof window&&(t===window.setTimeout||t===window.alert||t===window.confirm||t===window.prompt)};var e=Object.prototype.toString},9307:(t,e,r)=>{r(6168),t.exports=self.fetch.bind(self)},2691:(t,e,r)=>{var i=r(706),n=r(770);t.exports={encode:i,decode:n}},770:(t,e,r)=>{var i=r(8834).lW,n=function(){\"use strict\";var t=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),e=4017,r=799,i=3406,n=2276,a=1567,o=3784,s=5793,h=2896;function l(){}function f(t,e){for(var r,i,n=0,a=[],o=16;o>0&&!t[o-1];)o--;a.push({children:[],index:0});var s,h=a[0];for(r=0;r<o;r++){for(i=0;i<t[r];i++){for((h=a.pop()).children[h.index]=e[n];h.index>0;){if(0===a.length)throw new Error(\"Could not recreate Huffman Table\");h=a.pop()}for(h.index++,a.push(h);a.length<=r;)a.push(s={children:[],index:0}),h.children[h.index]=s.children,h=s;n++}r+1<o&&(a.push(s={children:[],index:0}),h.children[h.index]=s.children,h=s)}return a[0].children}function u(e,r,i,n,a,o,s,h,l,f){i.precision,i.samplesPerLine,i.scanLines;var u=i.mcusPerLine,c=i.progressive,d=(i.maxH,i.maxV,r),p=0,m=0;function g(){if(m>0)return m--,p>>m&1;if(255==(p=e[r++])){var t=e[r++];if(t)throw new Error(\"unexpected marker: \"+(p<<8|t).toString(16))}return m=7,p>>>7}function b(t){for(var e,r=t;null!==(e=g());){if(\"number\"==typeof(r=r[e]))return r;if(\"object\"!=typeof r)throw new Error(\"invalid huffman sequence\")}return null}function _(t){for(var e=0;t>0;){var r=g();if(null===r)return;e=e<<1|r,t--}return e}function y(t){var e=_(t);return e>=1<<t-1?e:e+(-1<<t)+1}var w,v=0,x=0;function E(t,e,r,i,n){var a=r%u,o=(r/u|0)*t.v+i,s=a*t.h+n;void 0===t.blocks[o]&&f.tolerantDecoding||e(t,t.blocks[o][s])}function k(t,e,r){var i=r/t.blocksPerLine|0,n=r%t.blocksPerLine;void 0===t.blocks[i]&&f.tolerantDecoding||e(t,t.blocks[i][n])}var S,M,A,I,B,T,R=n.length;T=c?0===o?0===h?function(t,e){var r=b(t.huffmanTableDC),i=0===r?0:y(r)<<l;e[0]=t.pred+=i}:function(t,e){e[0]|=g()<<l}:0===h?function(e,r){if(v>0)v--;else for(var i=o,n=s;i<=n;){var a=b(e.huffmanTableAC),h=15&a,f=a>>4;if(0!==h)r[t[i+=f]]=y(h)*(1<<l),i++;else{if(f<15){v=_(f)+(1<<f)-1;break}i+=16}}}:function(e,r){for(var i=o,n=s,a=0;i<=n;){var h=t[i],f=r[h]<0?-1:1;switch(x){case 0:var u=b(e.huffmanTableAC),c=15&u;if(a=u>>4,0===c)a<15?(v=_(a)+(1<<a),x=4):(a=16,x=1);else{if(1!==c)throw new Error(\"invalid ACn encoding\");w=y(c),x=a?2:3}continue;case 1:case 2:r[h]?r[h]+=(g()<<l)*f:0==--a&&(x=2==x?3:0);break;case 3:r[h]?r[h]+=(g()<<l)*f:(r[h]=w<<l,x=0);break;case 4:r[h]&&(r[h]+=(g()<<l)*f)}i++}4===x&&0==--v&&(x=0)}:function(e,r){var i=b(e.huffmanTableDC),n=0===i?0:y(i);r[0]=e.pred+=n;for(var a=1;a<64;){var o=b(e.huffmanTableAC),s=15&o,h=o>>4;if(0!==s)r[t[a+=h]]=y(s),a++;else{if(h<15)break;a+=16}}};var P,O,L,C,U=0;for(O=1==R?n[0].blocksPerLine*n[0].blocksPerColumn:u*i.mcusPerColumn,a||(a=O);U<O;){for(M=0;M<R;M++)n[M].pred=0;if(v=0,1==R)for(S=n[0],B=0;B<a;B++)k(S,T,U),U++;else for(B=0;B<a;B++){for(M=0;M<R;M++)for(L=(S=n[M]).h,C=S.v,A=0;A<C;A++)for(I=0;I<L;I++)E(S,T,U,A,I);if(++U===O)break}if(U===O)do{if(255===e[r]&&0!==e[r+1])break;r+=1}while(r<e.length-2);if(m=0,(P=e[r]<<8|e[r+1])<65280)throw new Error(\"marker was not found\");if(!(P>=65488&&P<=65495))break;r+=2}return r-d}function c(t,l){var f,u,c=[],d=l.blocksPerLine,p=l.blocksPerColumn,m=d<<3,b=new Int32Array(64),_=new Uint8Array(64);function y(t,f,u){var c,d,p,m,g,b,_,y,w,v,x=l.quantizationTable,E=u;for(v=0;v<64;v++)E[v]=t[v]*x[v];for(v=0;v<8;++v){var k=8*v;0!=E[1+k]||0!=E[2+k]||0!=E[3+k]||0!=E[4+k]||0!=E[5+k]||0!=E[6+k]||0!=E[7+k]?(c=s*E[0+k]+128>>8,d=s*E[4+k]+128>>8,p=E[2+k],m=E[6+k],g=h*(E[1+k]-E[7+k])+128>>8,y=h*(E[1+k]+E[7+k])+128>>8,b=E[3+k]<<4,_=E[5+k]<<4,w=c-d+1>>1,c=c+d+1>>1,d=w,w=p*o+m*a+128>>8,p=p*a-m*o+128>>8,m=w,w=g-_+1>>1,g=g+_+1>>1,_=w,w=y+b+1>>1,b=y-b+1>>1,y=w,w=c-m+1>>1,c=c+m+1>>1,m=w,w=d-p+1>>1,d=d+p+1>>1,p=w,w=g*n+y*i+2048>>12,g=g*i-y*n+2048>>12,y=w,w=b*r+_*e+2048>>12,b=b*e-_*r+2048>>12,_=w,E[0+k]=c+y,E[7+k]=c-y,E[1+k]=d+_,E[6+k]=d-_,E[2+k]=p+b,E[5+k]=p-b,E[3+k]=m+g,E[4+k]=m-g):(w=s*E[0+k]+512>>10,E[0+k]=w,E[1+k]=w,E[2+k]=w,E[3+k]=w,E[4+k]=w,E[5+k]=w,E[6+k]=w,E[7+k]=w)}for(v=0;v<8;++v){var S=v;0!=E[8+S]||0!=E[16+S]||0!=E[24+S]||0!=E[32+S]||0!=E[40+S]||0!=E[48+S]||0!=E[56+S]?(c=s*E[0+S]+2048>>12,d=s*E[32+S]+2048>>12,p=E[16+S],m=E[48+S],g=h*(E[8+S]-E[56+S])+2048>>12,y=h*(E[8+S]+E[56+S])+2048>>12,b=E[24+S],_=E[40+S],w=c-d+1>>1,c=c+d+1>>1,d=w,w=p*o+m*a+2048>>12,p=p*a-m*o+2048>>12,m=w,w=g-_+1>>1,g=g+_+1>>1,_=w,w=y+b+1>>1,b=y-b+1>>1,y=w,w=c-m+1>>1,c=c+m+1>>1,m=w,w=d-p+1>>1,d=d+p+1>>1,p=w,w=g*n+y*i+2048>>12,g=g*i-y*n+2048>>12,y=w,w=b*r+_*e+2048>>12,b=b*e-_*r+2048>>12,_=w,E[0+S]=c+y,E[56+S]=c-y,E[8+S]=d+_,E[48+S]=d-_,E[16+S]=p+b,E[40+S]=p-b,E[24+S]=m+g,E[32+S]=m-g):(w=s*u[v+0]+8192>>14,E[0+S]=w,E[8+S]=w,E[16+S]=w,E[24+S]=w,E[32+S]=w,E[40+S]=w,E[48+S]=w,E[56+S]=w)}for(v=0;v<64;++v){var M=128+(E[v]+8>>4);f[v]=M<0?0:M>255?255:M}}g(m*p*8);for(var w=0;w<p;w++){var v=w<<3;for(f=0;f<8;f++)c.push(new Uint8Array(m));for(var x=0;x<d;x++){y(l.blocks[w][x],_,b);var E=0,k=x<<3;for(u=0;u<8;u++){var S=c[v+u];for(f=0;f<8;f++)S[k+f]=_[E++]}}}return c}function d(t){return t<0?0:t>255?255:t}l.prototype={load:function(t){var e=new XMLHttpRequest;e.open(\"GET\",t,!0),e.responseType=\"arraybuffer\",e.onload=function(){var t=new Uint8Array(e.response||e.mozResponseArrayBuffer);this.parse(t),this.onload&&this.onload()}.bind(this),e.send(null)},parse:function(e){var r=1e3*this.opts.maxResolutionInMP*1e3,i=0;function n(){var t=e[i]<<8|e[i+1];return i+=2,t}function a(t){var e,r,i=1,n=1;for(r in t.components)t.components.hasOwnProperty(r)&&(i<(e=t.components[r]).h&&(i=e.h),n<e.v&&(n=e.v));var a=Math.ceil(t.samplesPerLine/8/i),o=Math.ceil(t.scanLines/8/n);for(r in t.components)if(t.components.hasOwnProperty(r)){e=t.components[r];var s=Math.ceil(Math.ceil(t.samplesPerLine/8)*e.h/i),h=Math.ceil(Math.ceil(t.scanLines/8)*e.v/n),l=a*e.h,f=o*e.v,u=[];g(f*l*256);for(var c=0;c<f;c++){for(var d=[],p=0;p<l;p++)d.push(new Int32Array(64));u.push(d)}e.blocksPerLine=s,e.blocksPerColumn=h,e.blocks=u}t.maxH=i,t.maxV=n,t.mcusPerLine=a,t.mcusPerColumn=o}e.length;var o,s,h,l,d=null,p=null,m=[],b=[],_=[],y=[],w=n(),v=-1;if(this.comments=[],65496!=w)throw new Error(\"SOI not found\");for(w=n();65497!=w;){switch(w){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var x=(h=void 0,l=void 0,h=n(),l=e.subarray(i,i+h-2),i+=l.length,l);if(65534===w){var E=String.fromCharCode.apply(null,x);this.comments.push(E)}65504===w&&74===x[0]&&70===x[1]&&73===x[2]&&70===x[3]&&0===x[4]&&(d={version:{major:x[5],minor:x[6]},densityUnits:x[7],xDensity:x[8]<<8|x[9],yDensity:x[10]<<8|x[11],thumbWidth:x[12],thumbHeight:x[13],thumbData:x.subarray(14,14+3*x[12]*x[13])}),65505===w&&69===x[0]&&120===x[1]&&105===x[2]&&102===x[3]&&0===x[4]&&(this.exifBuffer=x.subarray(5,x.length)),65518===w&&65===x[0]&&100===x[1]&&111===x[2]&&98===x[3]&&101===x[4]&&0===x[5]&&(p={version:x[6],flags0:x[7]<<8|x[8],flags1:x[9]<<8|x[10],transformCode:x[11]});break;case 65499:for(var k=n()+i-2;i<k;){var S=e[i++];g(256);var M=new Int32Array(64);if(S>>4==0)for(V=0;V<64;V++)M[t[V]]=e[i++];else{if(S>>4!=1)throw new Error(\"DQT: invalid table spec\");for(V=0;V<64;V++)M[t[V]]=n()}m[15&S]=M}break;case 65472:case 65473:case 65474:n(),(o={}).extended=65473===w,o.progressive=65474===w,o.precision=e[i++],o.scanLines=n(),o.samplesPerLine=n(),o.components={},o.componentsOrder=[];var A=o.scanLines*o.samplesPerLine;if(A>r){var I=Math.ceil((A-r)/1e6);throw new Error(`maxResolutionInMP limit exceeded by ${I}MP`)}var B,T=e[i++];for(Z=0;Z<T;Z++){B=e[i];var R=e[i+1]>>4,P=15&e[i+1],O=e[i+2];if(R<=0||P<=0)throw new Error(\"Invalid sampling factor, expected values above 0\");o.componentsOrder.push(B),o.components[B]={h:R,v:P,quantizationIdx:O},i+=3}a(o),b.push(o);break;case 65476:var L=n();for(Z=2;Z<L;){var C=e[i++],U=new Uint8Array(16),z=0;for(V=0;V<16;V++,i++)z+=U[V]=e[i];g(16+z);var D=new Uint8Array(z);for(V=0;V<z;V++,i++)D[V]=e[i];Z+=17+z,(C>>4==0?y:_)[15&C]=f(U,D)}break;case 65501:n(),s=n();break;case 65500:n(),n();break;case 65498:n();var N=e[i++],F=[];for(Z=0;Z<N;Z++){X=o.components[e[i++]];var j=e[i++];X.huffmanTableDC=y[j>>4],X.huffmanTableAC=_[15&j],F.push(X)}var G=e[i++],H=e[i++],W=e[i++],q=u(e,i,o,F,s,G,H,W>>4,15&W,this.opts);i+=q;break;case 65535:255!==e[i]&&i--;break;default:if(255==e[i-3]&&e[i-2]>=192&&e[i-2]<=254){i-=3;break}if(224===w||225==w){if(-1!==v)throw new Error(`first unknown JPEG marker at offset ${v.toString(16)}, second unknown JPEG marker ${w.toString(16)} at offset ${(i-1).toString(16)}`);v=i-1;const t=n();if(255===e[i+t-2]){i+=t-2;break}}throw new Error(\"unknown JPEG marker \"+w.toString(16))}w=n()}if(1!=b.length)throw new Error(\"only single frame JPEGs supported\");for(var Z=0;Z<b.length;Z++){var Y=b[Z].components;for(var V in Y)Y[V].quantizationTable=m[Y[V].quantizationIdx],delete Y[V].quantizationIdx}for(this.width=o.samplesPerLine,this.height=o.scanLines,this.jfif=d,this.adobe=p,this.components=[],Z=0;Z<o.componentsOrder.length;Z++){var X=o.components[o.componentsOrder[Z]];this.components.push({lines:c(0,X),scaleX:X.h/o.maxH,scaleY:X.v/o.maxV})}},getData:function(t,e){var r,i,n,a,o,s,h,l,f,u,c,p,m,b,_,y,w,v,x,E,k,S=this.width/t,M=this.height/e,A=0,I=t*e*this.components.length;g(I);var B=new Uint8Array(I);switch(this.components.length){case 1:for(r=this.components[0],u=0;u<e;u++)for(o=r.lines[0|u*r.scaleY*M],f=0;f<t;f++)c=o[0|f*r.scaleX*S],B[A++]=c;break;case 2:for(r=this.components[0],i=this.components[1],u=0;u<e;u++)for(o=r.lines[0|u*r.scaleY*M],s=i.lines[0|u*i.scaleY*M],f=0;f<t;f++)c=o[0|f*r.scaleX*S],B[A++]=c,c=s[0|f*i.scaleX*S],B[A++]=c;break;case 3:for(k=!0,this.adobe&&this.adobe.transformCode?k=!0:void 0!==this.opts.colorTransform&&(k=!!this.opts.colorTransform),r=this.components[0],i=this.components[1],n=this.components[2],u=0;u<e;u++)for(o=r.lines[0|u*r.scaleY*M],s=i.lines[0|u*i.scaleY*M],h=n.lines[0|u*n.scaleY*M],f=0;f<t;f++)k?(c=o[0|f*r.scaleX*S],p=s[0|f*i.scaleX*S],v=d(c+1.402*((m=h[0|f*n.scaleX*S])-128)),x=d(c-.3441363*(p-128)-.71413636*(m-128)),E=d(c+1.772*(p-128))):(v=o[0|f*r.scaleX*S],x=s[0|f*i.scaleX*S],E=h[0|f*n.scaleX*S]),B[A++]=v,B[A++]=x,B[A++]=E;break;case 4:if(!this.adobe)throw new Error(\"Unsupported color mode (4 components)\");for(k=!1,this.adobe&&this.adobe.transformCode?k=!0:void 0!==this.opts.colorTransform&&(k=!!this.opts.colorTransform),r=this.components[0],i=this.components[1],n=this.components[2],a=this.components[3],u=0;u<e;u++)for(o=r.lines[0|u*r.scaleY*M],s=i.lines[0|u*i.scaleY*M],h=n.lines[0|u*n.scaleY*M],l=a.lines[0|u*a.scaleY*M],f=0;f<t;f++)k?(c=o[0|f*r.scaleX*S],p=s[0|f*i.scaleX*S],m=h[0|f*n.scaleX*S],b=l[0|f*a.scaleX*S],_=255-d(c+1.402*(m-128)),y=255-d(c-.3441363*(p-128)-.71413636*(m-128)),w=255-d(c+1.772*(p-128))):(_=o[0|f*r.scaleX*S],y=s[0|f*i.scaleX*S],w=h[0|f*n.scaleX*S],b=l[0|f*a.scaleX*S]),B[A++]=255-_,B[A++]=255-y,B[A++]=255-w,B[A++]=255-b;break;default:throw new Error(\"Unsupported color mode\")}return B},copyToImageData:function(t,e){var r,i,n,a,o,s,h,l,f,u=t.width,c=t.height,p=t.data,m=this.getData(u,c),g=0,b=0;switch(this.components.length){case 1:for(i=0;i<c;i++)for(r=0;r<u;r++)n=m[g++],p[b++]=n,p[b++]=n,p[b++]=n,e&&(p[b++]=255);break;case 3:for(i=0;i<c;i++)for(r=0;r<u;r++)h=m[g++],l=m[g++],f=m[g++],p[b++]=h,p[b++]=l,p[b++]=f,e&&(p[b++]=255);break;case 4:for(i=0;i<c;i++)for(r=0;r<u;r++)o=m[g++],s=m[g++],n=m[g++],h=255-d(o*(1-(a=m[g++])/255)+a),l=255-d(s*(1-a/255)+a),f=255-d(n*(1-a/255)+a),p[b++]=h,p[b++]=l,p[b++]=f,e&&(p[b++]=255);break;default:throw new Error(\"Unsupported color mode\")}}};var p=0,m=0;function g(t=0){var e=p+t;if(e>m){var r=Math.ceil((e-m)/1024/1024);throw new Error(`maxMemoryUsageInMB limit exceeded by at least ${r}MB`)}p=e}return l.resetMaxMemoryUsage=function(t){p=0,m=t},l.getBytesAllocated=function(){return p},l.requestMemoryAllocation=g,l}();t.exports=function(t,e={}){var r={colorTransform:void 0,useTArray:!1,formatAsRGBA:!0,tolerantDecoding:!0,maxResolutionInMP:100,maxMemoryUsageInMB:512,...e},a=new Uint8Array(t),o=new n;o.opts=r,n.resetMaxMemoryUsage(1024*r.maxMemoryUsageInMB*1024),o.parse(a);var s=r.formatAsRGBA?4:3,h=o.width*o.height*s;try{n.requestMemoryAllocation(h);var l={width:o.width,height:o.height,exifBuffer:o.exifBuffer,data:r.useTArray?new Uint8Array(h):i.alloc(h)};o.comments.length>0&&(l.comments=o.comments)}catch(t){if(t instanceof RangeError)throw new Error(\"Could not allocate enough memory for the image. Required: \"+h);if(t instanceof ReferenceError&&\"Buffer is not defined\"===t.message)throw new Error(\"Buffer is not globally defined in this environment. Consider setting useTArray to true\");throw t}return o.copyToImageData(l,r.formatAsRGBA),l}},706:(t,e,r)=>{var i=r(8834).lW;function n(t){Math.round;var e,r,n,a,o,s=Math.floor,h=new Array(64),l=new Array(64),f=new Array(64),u=new Array(64),c=new Array(65535),d=new Array(65535),p=new Array(64),m=new Array(64),g=[],b=0,_=7,y=new Array(64),w=new Array(64),v=new Array(64),x=new Array(256),E=new Array(2048),k=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],S=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],M=[0,1,2,3,4,5,6,7,8,9,10,11],A=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],I=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],B=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],T=[0,1,2,3,4,5,6,7,8,9,10,11],R=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],P=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function O(t,e){for(var r=0,i=0,n=new Array,a=1;a<=16;a++){for(var o=1;o<=t[a];o++)n[e[i]]=[],n[e[i]][0]=r,n[e[i]][1]=a,i++,r++;r*=2}return n}function L(t){for(var e=t[0],r=t[1]-1;r>=0;)e&1<<r&&(b|=1<<_),r--,--_<0&&(255==b?(C(255),C(0)):C(b),_=7,b=0)}function C(t){g.push(t)}function U(t){C(t>>8&255),C(255&t)}function z(t,e,r,i,n){for(var a,o=n[0],s=n[240],h=function(t,e){var r,i,n,a,o,s,h,l,f,u,c=0;for(f=0;f<8;++f){r=t[c],i=t[c+1],n=t[c+2],a=t[c+3],o=t[c+4],s=t[c+5],h=t[c+6];var d=r+(l=t[c+7]),m=r-l,g=i+h,b=i-h,_=n+s,y=n-s,w=a+o,v=a-o,x=d+w,E=d-w,k=g+_,S=g-_;t[c]=x+k,t[c+4]=x-k;var M=.707106781*(S+E);t[c+2]=E+M,t[c+6]=E-M;var A=.382683433*((x=v+y)-(S=b+m)),I=.5411961*x+A,B=1.306562965*S+A,T=.707106781*(k=y+b),R=m+T,P=m-T;t[c+5]=P+I,t[c+3]=P-I,t[c+1]=R+B,t[c+7]=R-B,c+=8}for(c=0,f=0;f<8;++f){r=t[c],i=t[c+8],n=t[c+16],a=t[c+24],o=t[c+32],s=t[c+40],h=t[c+48];var O=r+(l=t[c+56]),L=r-l,C=i+h,U=i-h,z=n+s,D=n-s,N=a+o,F=a-o,j=O+N,G=O-N,H=C+z,W=C-z;t[c]=j+H,t[c+32]=j-H;var q=.707106781*(W+G);t[c+16]=G+q,t[c+48]=G-q;var Z=.382683433*((j=F+D)-(W=U+L)),Y=.5411961*j+Z,V=1.306562965*W+Z,X=.707106781*(H=D+U),J=L+X,Q=L-X;t[c+40]=Q+Y,t[c+24]=Q-Y,t[c+8]=J+V,t[c+56]=J-V,c++}for(f=0;f<64;++f)u=t[f]*e[f],p[f]=u>0?u+.5|0:u-.5|0;return p}(t,e),l=0;l<64;++l)m[k[l]]=h[l];var f=m[0]-r;r=m[0],0==f?L(i[0]):(L(i[d[a=32767+f]]),L(c[a]));for(var u=63;u>0&&0==m[u];u--);if(0==u)return L(o),r;for(var g,b=1;b<=u;){for(var _=b;0==m[b]&&b<=u;++b);var y=b-_;if(y>=16){g=y>>4;for(var w=1;w<=g;++w)L(s);y&=15}a=32767+m[b],L(n[(y<<4)+d[a]]),L(c[a]),b++}return 63!=u&&L(o),r}function D(t){t<=0&&(t=1),t>100&&(t=100),o!=t&&(function(t){for(var e=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],r=0;r<64;r++){var i=s((e[r]*t+50)/100);i<1?i=1:i>255&&(i=255),h[k[r]]=i}for(var n=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],a=0;a<64;a++){var o=s((n[a]*t+50)/100);o<1?o=1:o>255&&(o=255),l[k[a]]=o}for(var c=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],d=0,p=0;p<8;p++)for(var m=0;m<8;m++)f[d]=1/(h[k[d]]*c[p]*c[m]*8),u[d]=1/(l[k[d]]*c[p]*c[m]*8),d++}(t<50?Math.floor(5e3/t):Math.floor(200-2*t)),o=t)}this.encode=function(t,o){var s;(new Date).getTime(),o&&D(o),g=new Array,b=0,_=7,U(65496),U(65504),U(16),C(74),C(70),C(73),C(70),C(0),C(1),C(1),C(0),U(1),U(1),C(0),C(0),void 0!==(s=t.comments)&&s.constructor===Array&&s.forEach((t=>{if(\"string\"==typeof t){U(65534);var e,r=t.length;for(U(r+2),e=0;e<r;e++)C(t.charCodeAt(e))}})),function(t){if(t){U(65505),69===t[0]&&120===t[1]&&105===t[2]&&102===t[3]?U(t.length+2):(U(t.length+5+2),C(69),C(120),C(105),C(102),C(0));for(var e=0;e<t.length;e++)C(t[e])}}(t.exifBuffer),function(){U(65499),U(132),C(0);for(var t=0;t<64;t++)C(h[t]);C(1);for(var e=0;e<64;e++)C(l[e])}(),function(t,e){U(65472),U(17),C(8),U(e),U(t),C(3),C(1),C(17),C(0),C(2),C(17),C(1),C(3),C(17),C(1)}(t.width,t.height),function(){U(65476),U(418),C(0);for(var t=0;t<16;t++)C(S[t+1]);for(var e=0;e<=11;e++)C(M[e]);C(16);for(var r=0;r<16;r++)C(A[r+1]);for(var i=0;i<=161;i++)C(I[i]);C(1);for(var n=0;n<16;n++)C(B[n+1]);for(var a=0;a<=11;a++)C(T[a]);C(17);for(var o=0;o<16;o++)C(R[o+1]);for(var s=0;s<=161;s++)C(P[s])}(),U(65498),U(12),C(3),C(1),C(0),C(2),C(17),C(3),C(17),C(0),C(63),C(0);var c=0,d=0,p=0;b=0,_=7,this.encode.displayName=\"_encode_\";for(var m,x,k,O,N,F,j,G,H,W=t.data,q=t.width,Z=t.height,Y=4*q,V=0;V<Z;){for(m=0;m<Y;){for(F=N=Y*V+m,j=-1,G=0,H=0;H<64;H++)F=N+(G=H>>3)*Y+(j=4*(7&H)),V+G>=Z&&(F-=Y*(V+1+G-Z)),m+j>=Y&&(F-=m+j-Y+4),x=W[F++],k=W[F++],O=W[F++],y[H]=(E[x]+E[k+256>>0]+E[O+512>>0]>>16)-128,w[H]=(E[x+768>>0]+E[k+1024>>0]+E[O+1280>>0]>>16)-128,v[H]=(E[x+1280>>0]+E[k+1536>>0]+E[O+1792>>0]>>16)-128;c=z(y,f,c,e,n),d=z(w,u,d,r,a),p=z(v,u,p,r,a),m+=32}V+=8}if(_>=0){var X=[];X[1]=_+1,X[0]=(1<<_+1)-1,L(X)}return U(65497),i.from(g)},(new Date).getTime(),t||(t=50),function(){for(var t=String.fromCharCode,e=0;e<256;e++)x[e]=t(e)}(),e=O(S,M),r=O(B,T),n=O(A,I),a=O(R,P),function(){for(var t=1,e=2,r=1;r<=15;r++){for(var i=t;i<e;i++)d[32767+i]=r,c[32767+i]=[],c[32767+i][1]=r,c[32767+i][0]=i;for(var n=-(e-1);n<=-t;n++)d[32767+n]=r,c[32767+n]=[],c[32767+n][1]=r,c[32767+n][0]=e-1+n;t<<=1,e<<=1}}(),function(){for(var t=0;t<256;t++)E[t]=19595*t,E[t+256>>0]=38470*t,E[t+512>>0]=7471*t+32768,E[t+768>>0]=-11059*t,E[t+1024>>0]=-21709*t,E[t+1280>>0]=32768*t+8421375,E[t+1536>>0]=-27439*t,E[t+1792>>0]=-5329*t}(),D(t),(new Date).getTime()}t.exports=function(t,e){return void 0===e&&(e=50),{data:new n(e).encode(t,e),width:t.width,height:t.height}}},8058:(t,e,r)=>{var i=r(8834).lW,n=r(6290),a=function(){},o=r(4398),s=r(5947),h=r(8438),l=r(5565),f=r(1960),u=self.XMLHttpRequest&&\"withCredentials\"in new XMLHttpRequest;t.exports=function(t,e){e=\"function\"==typeof e?e:a,\"string\"==typeof t?t={uri:t}:t||(t={}),t.binary&&(t=function(t){if(u)return f(t,{responseType:\"arraybuffer\"});if(void 0===self.XMLHttpRequest)throw new Error(\"your browser does not support XHR loading\");var e=new self.XMLHttpRequest;return e.overrideMimeType(\"text/plain; charset=x-user-defined\"),f({xhr:e},t)}(t)),n(t,(function(r,n,f){if(r)return e(r);if(!/^2/.test(n.statusCode))return e(new Error(\"http status code: \"+n.statusCode));if(!f)return e(new Error(\"no body result\"));var u,c,d=!1;if(u=f,\"[object ArrayBuffer]\"===Object.prototype.toString.call(u)){var p=new Uint8Array(f);f=i.from(p,\"binary\")}l(f)&&(d=!0,\"string\"==typeof f&&(f=i.from(f,\"binary\"))),d||(i.isBuffer(f)&&(f=f.toString(t.encoding)),f=f.trim());try{var m=n.headers[\"content-type\"];c=d?h(f):/json/.test(m)||\"{\"===f.charAt(0)?JSON.parse(f):/xml/.test(m)||\"<\"===f.charAt(0)?s(f):o(f)}catch(t){e(new Error(\"error parsing font \"+t.message)),e=a}e(null,c)}))}},5565:(t,e,r)=>{var i=r(8834).lW,n=r(5137),a=i.from([66,77,70,3]);t.exports=function(t){return\"string\"==typeof t?\"BMF\"===t.substring(0,3):t.length>4&&n(t.slice(0,4),a)}},63:(t,e)=>{\"use strict\";function r(t,e,r,i){for(var n=t[e++],a=1<<n,o=a+1,s=o+1,h=n+1,l=(1<<h)-1,f=0,u=0,c=0,d=t[e++],p=new Int32Array(4096),m=null;;){for(;f<16&&0!==d;)u|=t[e++]<<f,f+=8,1===d?d=t[e++]:--d;if(f<h)break;var g=u&l;if(u>>=h,f-=h,g!==a){if(g===o)break;for(var b=g<s?g:m,_=0,y=b;y>a;)y=p[y]>>8,++_;var w=y;if(c+_+(b!==g?1:0)>i)return void console.log(\"Warning, gif stream longer than expected.\");r[c++]=w;var v=c+=_;for(b!==g&&(r[c++]=w),y=b;_--;)y=p[y],r[--v]=255&y,y>>=8;null!==m&&s<4096&&(p[s++]=m<<8|w,s>=l+1&&h<12&&(++h,l=l<<1|1)),m=g}else s=o+1,l=(1<<(h=n+1))-1,m=null}return c!==i&&console.log(\"Warning, gif stream shorter than expected.\"),r}try{e.N=function(t){var e=0;if(71!==t[e++]||73!==t[e++]||70!==t[e++]||56!==t[e++]||56!=(t[e++]+1&253)||97!==t[e++])throw new Error(\"Invalid GIF 87a/89a header.\");var i=t[e++]|t[e++]<<8,n=t[e++]|t[e++]<<8,a=t[e++],o=a>>7,s=1<<1+(7&a);t[e++],t[e++];var h=null,l=null;o&&(h=e,l=s,e+=3*s);var f=!0,u=[],c=0,d=null,p=0,m=null;for(this.width=i,this.height=n;f&&e<t.length;)switch(t[e++]){case 33:switch(t[e++]){case 255:if(11!==t[e]||78==t[e+1]&&69==t[e+2]&&84==t[e+3]&&83==t[e+4]&&67==t[e+5]&&65==t[e+6]&&80==t[e+7]&&69==t[e+8]&&50==t[e+9]&&46==t[e+10]&&48==t[e+11]&&3==t[e+12]&&1==t[e+13]&&0==t[e+16])e+=14,m=t[e++]|t[e++]<<8,e++;else for(e+=12;;){if(!((I=t[e++])>=0))throw Error(\"Invalid block size\");if(0===I)break;e+=I}break;case 249:if(4!==t[e++]||0!==t[e+4])throw new Error(\"Invalid graphics extension block.\");var g=t[e++];c=t[e++]|t[e++]<<8,d=t[e++],0==(1&g)&&(d=null),p=g>>2&7,e++;break;case 254:for(;;){if(!((I=t[e++])>=0))throw Error(\"Invalid block size\");if(0===I)break;e+=I}break;default:throw new Error(\"Unknown graphic control label: 0x\"+t[e-1].toString(16))}break;case 44:var b=t[e++]|t[e++]<<8,_=t[e++]|t[e++]<<8,y=t[e++]|t[e++]<<8,w=t[e++]|t[e++]<<8,v=t[e++],x=v>>6&1,E=1<<1+(7&v),k=h,S=l,M=!1;v>>7&&(M=!0,k=e,S=E,e+=3*E);var A=e;for(e++;;){var I;if(!((I=t[e++])>=0))throw Error(\"Invalid block size\");if(0===I)break;e+=I}u.push({x:b,y:_,width:y,height:w,has_local_palette:M,palette_offset:k,palette_size:S,data_offset:A,data_length:e-A,transparent_index:d,interlaced:!!x,delay:c,disposal:p});break;case 59:f=!1;break;default:throw new Error(\"Unknown gif block: 0x\"+t[e-1].toString(16))}this.numFrames=function(){return u.length},this.loopCount=function(){return m},this.frameInfo=function(t){if(t<0||t>=u.length)throw new Error(\"Frame index out of range.\");return u[t]},this.decodeAndBlitFrameBGRA=function(e,n){var a=this.frameInfo(e),o=a.width*a.height,s=new Uint8Array(o);r(t,a.data_offset,s,o);var h=a.palette_offset,l=a.transparent_index;null===l&&(l=256);var f=a.width,u=i-f,c=f,d=4*(a.y*i+a.x),p=4*((a.y+a.height)*i+a.x),m=d,g=4*u;!0===a.interlaced&&(g+=4*i*7);for(var b=8,_=0,y=s.length;_<y;++_){var w=s[_];if(0===c&&(c=f,(m+=g)>=p&&(g=4*u+4*i*(b-1),m=d+(f+u)*(b<<1),b>>=1)),w===l)m+=4;else{var v=t[h+3*w],x=t[h+3*w+1],E=t[h+3*w+2];n[m++]=E,n[m++]=x,n[m++]=v,n[m++]=255}--c}},this.decodeAndBlitFrameRGBA=function(e,n){var a=this.frameInfo(e),o=a.width*a.height,s=new Uint8Array(o);r(t,a.data_offset,s,o);var h=a.palette_offset,l=a.transparent_index;null===l&&(l=256);var f=a.width,u=i-f,c=f,d=4*(a.y*i+a.x),p=4*((a.y+a.height)*i+a.x),m=d,g=4*u;!0===a.interlaced&&(g+=4*i*7);for(var b=8,_=0,y=s.length;_<y;++_){var w=s[_];if(0===c&&(c=f,(m+=g)>=p&&(g=4*u+4*i*(b-1),m=d+(f+u)*(b<<1),b>>=1)),w===l)m+=4;else{var v=t[h+3*w],x=t[h+3*w+1],E=t[h+3*w+2];n[m++]=v,n[m++]=x,n[m++]=E,n[m++]=255}--c}}}}catch(t){}},2845:(t,e,r)=>{\"use strict\";var i={};(0,r(9761).assign)(i,r(9880),r(1380),r(1271)),t.exports=i},9880:(t,e,r)=>{\"use strict\";var i=r(5789),n=r(9761),a=r(7944),o=r(2950),s=r(744),h=Object.prototype.toString,l=0,f=-1,u=0,c=8;function d(t){if(!(this instanceof d))return new d(t);this.options=n.assign({level:f,method:c,chunkSize:16384,windowBits:15,memLevel:8,strategy:u,to:\"\"},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=i.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==l)throw new Error(o[r]);if(e.header&&i.deflateSetHeader(this.strm,e.header),e.dictionary){var p;if(p=\"string\"==typeof e.dictionary?a.string2buf(e.dictionary):\"[object ArrayBuffer]\"===h.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(r=i.deflateSetDictionary(this.strm,p))!==l)throw new Error(o[r]);this._dict_set=!0}}function p(t,e){var r=new d(e);if(r.push(t,!0),r.err)throw r.msg||o[r.err];return r.result}d.prototype.push=function(t,e){var r,o,s=this.strm,f=this.options.chunkSize;if(this.ended)return!1;o=e===~~e?e:!0===e?4:0,\"string\"==typeof t?s.input=a.string2buf(t):\"[object ArrayBuffer]\"===h.call(t)?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;do{if(0===s.avail_out&&(s.output=new n.Buf8(f),s.next_out=0,s.avail_out=f),1!==(r=i.deflate(s,o))&&r!==l)return this.onEnd(r),this.ended=!0,!1;0!==s.avail_out&&(0!==s.avail_in||4!==o&&2!==o)||(\"string\"===this.options.to?this.onData(a.buf2binstring(n.shrinkBuf(s.output,s.next_out))):this.onData(n.shrinkBuf(s.output,s.next_out)))}while((s.avail_in>0||0===s.avail_out)&&1!==r);return 4===o?(r=i.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==o||(this.onEnd(l),s.avail_out=0,!0)},d.prototype.onData=function(t){this.chunks.push(t)},d.prototype.onEnd=function(t){t===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Deflate=d,e.deflate=p,e.deflateRaw=function(t,e){return(e=e||{}).raw=!0,p(t,e)},e.gzip=function(t,e){return(e=e||{}).gzip=!0,p(t,e)}},1380:(t,e,r)=>{\"use strict\";var i=r(5020),n=r(9761),a=r(7944),o=r(1271),s=r(2950),h=r(744),l=r(7357),f=Object.prototype.toString;function u(t){if(!(this instanceof u))return new u(t);this.options=n.assign({chunkSize:16384,windowBits:0,to:\"\"},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var r=i.inflateInit2(this.strm,e.windowBits);if(r!==o.Z_OK)throw new Error(s[r]);if(this.header=new l,i.inflateGetHeader(this.strm,this.header),e.dictionary&&(\"string\"==typeof e.dictionary?e.dictionary=a.string2buf(e.dictionary):\"[object ArrayBuffer]\"===f.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=i.inflateSetDictionary(this.strm,e.dictionary))!==o.Z_OK))throw new Error(s[r])}function c(t,e){var r=new u(e);if(r.push(t,!0),r.err)throw r.msg||s[r.err];return r.result}u.prototype.push=function(t,e){var r,s,h,l,u,c=this.strm,d=this.options.chunkSize,p=this.options.dictionary,m=!1;if(this.ended)return!1;s=e===~~e?e:!0===e?o.Z_FINISH:o.Z_NO_FLUSH,\"string\"==typeof t?c.input=a.binstring2buf(t):\"[object ArrayBuffer]\"===f.call(t)?c.input=new Uint8Array(t):c.input=t,c.next_in=0,c.avail_in=c.input.length;do{if(0===c.avail_out&&(c.output=new n.Buf8(d),c.next_out=0,c.avail_out=d),(r=i.inflate(c,o.Z_NO_FLUSH))===o.Z_NEED_DICT&&p&&(r=i.inflateSetDictionary(this.strm,p)),r===o.Z_BUF_ERROR&&!0===m&&(r=o.Z_OK,m=!1),r!==o.Z_STREAM_END&&r!==o.Z_OK)return this.onEnd(r),this.ended=!0,!1;c.next_out&&(0!==c.avail_out&&r!==o.Z_STREAM_END&&(0!==c.avail_in||s!==o.Z_FINISH&&s!==o.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(h=a.utf8border(c.output,c.next_out),l=c.next_out-h,u=a.buf2string(c.output,h),c.next_out=l,c.avail_out=d-l,l&&n.arraySet(c.output,c.output,h,l,0),this.onData(u)):this.onData(n.shrinkBuf(c.output,c.next_out)))),0===c.avail_in&&0===c.avail_out&&(m=!0)}while((c.avail_in>0||0===c.avail_out)&&r!==o.Z_STREAM_END);return r===o.Z_STREAM_END&&(s=o.Z_FINISH),s===o.Z_FINISH?(r=i.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===o.Z_OK):s!==o.Z_SYNC_FLUSH||(this.onEnd(o.Z_OK),c.avail_out=0,!0)},u.prototype.onData=function(t){this.chunks.push(t)},u.prototype.onEnd=function(t){t===o.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Inflate=u,e.inflate=c,e.inflateRaw=function(t,e){return(e=e||{}).raw=!0,c(t,e)},e.ungzip=c},9761:(t,e)=>{\"use strict\";var r=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)i(r,n)&&(t[n]=r[n])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,r,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(r,r+i),n);else for(var a=0;a<i;a++)t[n+a]=e[r+a]},flattenChunks:function(t){var e,r,i,n,a,o;for(i=0,e=0,r=t.length;e<r;e++)i+=t[e].length;for(o=new Uint8Array(i),n=0,e=0,r=t.length;e<r;e++)a=t[e],o.set(a,n),n+=a.length;return o}},a={arraySet:function(t,e,r,i,n){for(var a=0;a<i;a++)t[n+a]=e[r+a]},flattenChunks:function(t){return[].concat.apply([],t)}};e.setTyped=function(t){t?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,n)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,a))},e.setTyped(r)},7944:(t,e,r)=>{\"use strict\";var i=r(9761),n=!0,a=!0;try{String.fromCharCode.apply(null,[0])}catch(t){n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){a=!1}for(var o=new i.Buf8(256),s=0;s<256;s++)o[s]=s>=252?6:s>=248?5:s>=240?4:s>=224?3:s>=192?2:1;function h(t,e){if(e<65534&&(t.subarray&&a||!t.subarray&&n))return String.fromCharCode.apply(null,i.shrinkBuf(t,e));for(var r=\"\",o=0;o<e;o++)r+=String.fromCharCode(t[o]);return r}o[254]=o[254]=1,e.string2buf=function(t){var e,r,n,a,o,s=t.length,h=0;for(a=0;a<s;a++)55296==(64512&(r=t.charCodeAt(a)))&&a+1<s&&56320==(64512&(n=t.charCodeAt(a+1)))&&(r=65536+(r-55296<<10)+(n-56320),a++),h+=r<128?1:r<2048?2:r<65536?3:4;for(e=new i.Buf8(h),o=0,a=0;o<h;a++)55296==(64512&(r=t.charCodeAt(a)))&&a+1<s&&56320==(64512&(n=t.charCodeAt(a+1)))&&(r=65536+(r-55296<<10)+(n-56320),a++),r<128?e[o++]=r:r<2048?(e[o++]=192|r>>>6,e[o++]=128|63&r):r<65536?(e[o++]=224|r>>>12,e[o++]=128|r>>>6&63,e[o++]=128|63&r):(e[o++]=240|r>>>18,e[o++]=128|r>>>12&63,e[o++]=128|r>>>6&63,e[o++]=128|63&r);return e},e.buf2binstring=function(t){return h(t,t.length)},e.binstring2buf=function(t){for(var e=new i.Buf8(t.length),r=0,n=e.length;r<n;r++)e[r]=t.charCodeAt(r);return e},e.buf2string=function(t,e){var r,i,n,a,s=e||t.length,l=new Array(2*s);for(i=0,r=0;r<s;)if((n=t[r++])<128)l[i++]=n;else if((a=o[n])>4)l[i++]=65533,r+=a-1;else{for(n&=2===a?31:3===a?15:7;a>1&&r<s;)n=n<<6|63&t[r++],a--;a>1?l[i++]=65533:n<65536?l[i++]=n:(n-=65536,l[i++]=55296|n>>10&1023,l[i++]=56320|1023&n)}return h(l,i)},e.utf8border=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;r>=0&&128==(192&t[r]);)r--;return r<0||0===r?e:r+o[t[r]]>e?r:e}},5562:t=>{\"use strict\";t.exports=function(t,e,r,i){for(var n=65535&t|0,a=t>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(n=n+e[i++]|0)|0}while(--o);n%=65521,a%=65521}return n|a<<16|0}},1271:t=>{\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},4299:t=>{\"use strict\";var e=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();t.exports=function(t,r,i,n){var a=e,o=n+i;t^=-1;for(var s=n;s<o;s++)t=t>>>8^a[255&(t^r[s])];return-1^t}},5789:(t,e,r)=>{\"use strict\";var i,n=r(9761),a=r(9564),o=r(5562),s=r(4299),h=r(2950),l=0,f=4,u=0,c=-2,d=-1,p=1,m=4,g=2,b=8,_=9,y=286,w=30,v=19,x=2*y+1,E=15,k=3,S=258,M=S+k+1,A=42,I=103,B=113,T=666,R=1,P=2,O=3,L=4;function C(t,e){return t.msg=h[e],e}function U(t){return(t<<1)-(t>4?9:0)}function z(t){for(var e=t.length;--e>=0;)t[e]=0}function D(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(n.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function N(t,e){a._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,D(t.strm)}function F(t,e){t.pending_buf[t.pending++]=e}function j(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function G(t,e){var r,i,n=t.max_chain_length,a=t.strstart,o=t.prev_length,s=t.nice_match,h=t.strstart>t.w_size-M?t.strstart-(t.w_size-M):0,l=t.window,f=t.w_mask,u=t.prev,c=t.strstart+S,d=l[a+o-1],p=l[a+o];t.prev_length>=t.good_match&&(n>>=2),s>t.lookahead&&(s=t.lookahead);do{if(l[(r=e)+o]===p&&l[r+o-1]===d&&l[r]===l[a]&&l[++r]===l[a+1]){a+=2,r++;do{}while(l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&a<c);if(i=S-(c-a),a=c-S,i>o){if(t.match_start=e,o=i,i>=s)break;d=l[a+o-1],p=l[a+o]}}}while((e=u[e&f])>h&&0!=--n);return o<=t.lookahead?o:t.lookahead}function H(t){var e,r,i,a,h,l,f,u,c,d,p=t.w_size;do{if(a=t.window_size-t.lookahead-t.strstart,t.strstart>=p+(p-M)){n.arraySet(t.window,t.window,p,p,0),t.match_start-=p,t.strstart-=p,t.block_start-=p,e=r=t.hash_size;do{i=t.head[--e],t.head[e]=i>=p?i-p:0}while(--r);e=r=p;do{i=t.prev[--e],t.prev[e]=i>=p?i-p:0}while(--r);a+=p}if(0===t.strm.avail_in)break;if(l=t.strm,f=t.window,u=t.strstart+t.lookahead,c=a,d=void 0,(d=l.avail_in)>c&&(d=c),r=0===d?0:(l.avail_in-=d,n.arraySet(f,l.input,l.next_in,d,u),1===l.state.wrap?l.adler=o(l.adler,f,d,u):2===l.state.wrap&&(l.adler=s(l.adler,f,d,u)),l.next_in+=d,l.total_in+=d,d),t.lookahead+=r,t.lookahead+t.insert>=k)for(h=t.strstart-t.insert,t.ins_h=t.window[h],t.ins_h=(t.ins_h<<t.hash_shift^t.window[h+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[h+k-1])&t.hash_mask,t.prev[h&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=h,h++,t.insert--,!(t.lookahead+t.insert<k)););}while(t.lookahead<M&&0!==t.strm.avail_in)}function W(t,e){for(var r,i;;){if(t.lookahead<M){if(H(t),t.lookahead<M&&e===l)return R;if(0===t.lookahead)break}if(r=0,t.lookahead>=k&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+k-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==r&&t.strstart-r<=t.w_size-M&&(t.match_length=G(t,r)),t.match_length>=k)if(i=a._tr_tally(t,t.strstart-t.match_start,t.match_length-k),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=k){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+k-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(N(t,!1),0===t.strm.avail_out))return R}return t.insert=t.strstart<k-1?t.strstart:k-1,e===f?(N(t,!0),0===t.strm.avail_out?O:L):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?R:P}function q(t,e){for(var r,i,n;;){if(t.lookahead<M){if(H(t),t.lookahead<M&&e===l)return R;if(0===t.lookahead)break}if(r=0,t.lookahead>=k&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+k-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=k-1,0!==r&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-M&&(t.match_length=G(t,r),t.match_length<=5&&(t.strategy===p||t.match_length===k&&t.strstart-t.match_start>4096)&&(t.match_length=k-1)),t.prev_length>=k&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-k,i=a._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-k),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+k-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=k-1,t.strstart++,i&&(N(t,!1),0===t.strm.avail_out))return R}else if(t.match_available){if((i=a._tr_tally(t,0,t.window[t.strstart-1]))&&N(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return R}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=a._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<k-1?t.strstart:k-1,e===f?(N(t,!0),0===t.strm.avail_out?O:L):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?R:P}function Z(t,e,r,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=i,this.func=n}function Y(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=b,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new n.Buf16(2*x),this.dyn_dtree=new n.Buf16(2*(2*w+1)),this.bl_tree=new n.Buf16(2*(2*v+1)),z(this.dyn_ltree),z(this.dyn_dtree),z(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new n.Buf16(E+1),this.heap=new n.Buf16(2*y+1),z(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new n.Buf16(2*y+1),z(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function V(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=g,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?A:B,t.adler=2===e.wrap?0:1,e.last_flush=l,a._tr_init(e),u):C(t,c)}function X(t){var e,r=V(t);return r===u&&((e=t.state).window_size=2*e.w_size,z(e.head),e.max_lazy_match=i[e.level].max_lazy,e.good_match=i[e.level].good_length,e.nice_match=i[e.level].nice_length,e.max_chain_length=i[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=k-1,e.match_available=0,e.ins_h=0),r}function J(t,e,r,i,a,o){if(!t)return c;var s=1;if(e===d&&(e=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),a<1||a>_||r!==b||i<8||i>15||e<0||e>9||o<0||o>m)return C(t,c);8===i&&(i=9);var h=new Y;return t.state=h,h.strm=t,h.wrap=s,h.gzhead=null,h.w_bits=i,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=a+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+k-1)/k),h.window=new n.Buf8(2*h.w_size),h.head=new n.Buf16(h.hash_size),h.prev=new n.Buf16(h.w_size),h.lit_bufsize=1<<a+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new n.Buf8(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=e,h.strategy=o,h.method=r,X(t)}i=[new Z(0,0,0,0,(function(t,e){var r=65535;for(r>t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(H(t),0===t.lookahead&&e===l)return R;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,N(t,!1),0===t.strm.avail_out))return R;if(t.strstart-t.block_start>=t.w_size-M&&(N(t,!1),0===t.strm.avail_out))return R}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:L):(t.strstart>t.block_start&&(N(t,!1),t.strm.avail_out),R)})),new Z(4,4,8,4,W),new Z(4,5,16,8,W),new Z(4,6,32,32,W),new Z(4,4,16,16,q),new Z(8,16,32,32,q),new Z(8,16,128,128,q),new Z(8,32,128,256,q),new Z(32,128,258,1024,q),new Z(32,258,258,4096,q)],e.deflateInit=function(t,e){return J(t,e,b,15,8,0)},e.deflateInit2=J,e.deflateReset=X,e.deflateResetKeep=V,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?c:(t.state.gzhead=e,u):c},e.deflate=function(t,e){var r,n,o,h;if(!t||!t.state||e>5||e<0)return t?C(t,c):c;if(n=t.state,!t.output||!t.input&&0!==t.avail_in||n.status===T&&e!==f)return C(t,0===t.avail_out?-5:c);if(n.strm=t,r=n.last_flush,n.last_flush=e,n.status===A)if(2===n.wrap)t.adler=0,F(n,31),F(n,139),F(n,8),n.gzhead?(F(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),F(n,255&n.gzhead.time),F(n,n.gzhead.time>>8&255),F(n,n.gzhead.time>>16&255),F(n,n.gzhead.time>>24&255),F(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),F(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(F(n,255&n.gzhead.extra.length),F(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=s(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(F(n,0),F(n,0),F(n,0),F(n,0),F(n,0),F(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),F(n,3),n.status=B);else{var d=b+(n.w_bits-8<<4)<<8;d|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(d|=32),d+=31-d%31,n.status=B,j(n,d),0!==n.strstart&&(j(n,t.adler>>>16),j(n,65535&t.adler)),t.adler=1}if(69===n.status)if(n.gzhead.extra){for(o=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),D(t),o=n.pending,n.pending!==n.pending_buf_size));)F(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){o=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),D(t),o=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,F(n,h)}while(0!==h);n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),0===h&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){o=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),D(t),o=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,F(n,h)}while(0!==h);n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),0===h&&(n.status=I)}else n.status=I;if(n.status===I&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&D(t),n.pending+2<=n.pending_buf_size&&(F(n,255&t.adler),F(n,t.adler>>8&255),t.adler=0,n.status=B)):n.status=B),0!==n.pending){if(D(t),0===t.avail_out)return n.last_flush=-1,u}else if(0===t.avail_in&&U(e)<=U(r)&&e!==f)return C(t,-5);if(n.status===T&&0!==t.avail_in)return C(t,-5);if(0!==t.avail_in||0!==n.lookahead||e!==l&&n.status!==T){var p=2===n.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(H(t),0===t.lookahead)){if(e===l)return R;break}if(t.match_length=0,r=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(N(t,!1),0===t.strm.avail_out))return R}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:L):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?R:P}(n,e):3===n.strategy?function(t,e){for(var r,i,n,o,s=t.window;;){if(t.lookahead<=S){if(H(t),t.lookahead<=S&&e===l)return R;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=k&&t.strstart>0&&(i=s[n=t.strstart-1])===s[++n]&&i===s[++n]&&i===s[++n]){o=t.strstart+S;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&n<o);t.match_length=S-(o-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=k?(r=a._tr_tally(t,1,t.match_length-k),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(N(t,!1),0===t.strm.avail_out))return R}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:L):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?R:P}(n,e):i[n.level].func(n,e);if(p!==O&&p!==L||(n.status=T),p===R||p===O)return 0===t.avail_out&&(n.last_flush=-1),u;if(p===P&&(1===e?a._tr_align(n):5!==e&&(a._tr_stored_block(n,0,0,!1),3===e&&(z(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),D(t),0===t.avail_out))return n.last_flush=-1,u}return e!==f?u:n.wrap<=0?1:(2===n.wrap?(F(n,255&t.adler),F(n,t.adler>>8&255),F(n,t.adler>>16&255),F(n,t.adler>>24&255),F(n,255&t.total_in),F(n,t.total_in>>8&255),F(n,t.total_in>>16&255),F(n,t.total_in>>24&255)):(j(n,t.adler>>>16),j(n,65535&t.adler)),D(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?u:1)},e.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==A&&69!==e&&73!==e&&91!==e&&e!==I&&e!==B&&e!==T?C(t,c):(t.state=null,e===B?C(t,-3):u):c},e.deflateSetDictionary=function(t,e){var r,i,a,s,h,l,f,d,p=e.length;if(!t||!t.state)return c;if(2===(s=(r=t.state).wrap)||1===s&&r.status!==A||r.lookahead)return c;for(1===s&&(t.adler=o(t.adler,e,p,0)),r.wrap=0,p>=r.w_size&&(0===s&&(z(r.head),r.strstart=0,r.block_start=0,r.insert=0),d=new n.Buf8(r.w_size),n.arraySet(d,e,p-r.w_size,r.w_size,0),e=d,p=r.w_size),h=t.avail_in,l=t.next_in,f=t.input,t.avail_in=p,t.next_in=0,t.input=e,H(r);r.lookahead>=k;){i=r.strstart,a=r.lookahead-(k-1);do{r.ins_h=(r.ins_h<<r.hash_shift^r.window[i+k-1])&r.hash_mask,r.prev[i&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=i,i++}while(--a);r.strstart=i,r.lookahead=k-1,H(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=k-1,r.match_available=0,t.next_in=l,t.input=f,t.avail_in=h,r.wrap=s,u},e.deflateInfo=\"pako deflate (from Nodeca project)\"},7357:t=>{\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},4980:t=>{\"use strict\";t.exports=function(t,e){var r,i,n,a,o,s,h,l,f,u,c,d,p,m,g,b,_,y,w,v,x,E,k,S,M;r=t.state,i=t.next_in,S=t.input,n=i+(t.avail_in-5),a=t.next_out,M=t.output,o=a-(e-t.avail_out),s=a+(t.avail_out-257),h=r.dmax,l=r.wsize,f=r.whave,u=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,g=r.distcode,b=(1<<r.lenbits)-1,_=(1<<r.distbits)-1;t:do{p<15&&(d+=S[i++]<<p,p+=8,d+=S[i++]<<p,p+=8),y=m[d&b];e:for(;;){if(d>>>=w=y>>>24,p-=w,0==(w=y>>>16&255))M[a++]=65535&y;else{if(!(16&w)){if(0==(64&w)){y=m[(65535&y)+(d&(1<<w)-1)];continue e}if(32&w){r.mode=12;break t}t.msg=\"invalid literal/length code\",r.mode=30;break t}v=65535&y,(w&=15)&&(p<w&&(d+=S[i++]<<p,p+=8),v+=d&(1<<w)-1,d>>>=w,p-=w),p<15&&(d+=S[i++]<<p,p+=8,d+=S[i++]<<p,p+=8),y=g[d&_];r:for(;;){if(d>>>=w=y>>>24,p-=w,!(16&(w=y>>>16&255))){if(0==(64&w)){y=g[(65535&y)+(d&(1<<w)-1)];continue r}t.msg=\"invalid distance code\",r.mode=30;break t}if(x=65535&y,p<(w&=15)&&(d+=S[i++]<<p,(p+=8)<w&&(d+=S[i++]<<p,p+=8)),(x+=d&(1<<w)-1)>h){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(d>>>=w,p-=w,x>(w=a-o)){if((w=x-w)>f&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(E=0,k=c,0===u){if(E+=l-w,w<v){v-=w;do{M[a++]=c[E++]}while(--w);E=a-x,k=M}}else if(u<w){if(E+=l+u-w,(w-=u)<v){v-=w;do{M[a++]=c[E++]}while(--w);if(E=0,u<v){v-=w=u;do{M[a++]=c[E++]}while(--w);E=a-x,k=M}}}else if(E+=u-w,w<v){v-=w;do{M[a++]=c[E++]}while(--w);E=a-x,k=M}for(;v>2;)M[a++]=k[E++],M[a++]=k[E++],M[a++]=k[E++],v-=3;v&&(M[a++]=k[E++],v>1&&(M[a++]=k[E++]))}else{E=a-x;do{M[a++]=M[E++],M[a++]=M[E++],M[a++]=M[E++],v-=3}while(v>2);v&&(M[a++]=M[E++],v>1&&(M[a++]=M[E++]))}break}}break}}while(i<n&&a<s);i-=v=p>>3,d&=(1<<(p-=v<<3))-1,t.next_in=i,t.next_out=a,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=a<s?s-a+257:257-(a-s),r.hold=d,r.bits=p}},5020:(t,e,r)=>{\"use strict\";var i=r(9761),n=r(5562),a=r(4299),o=r(4980),s=r(881),h=1,l=2,f=0,u=-2,c=1,d=12,p=30,m=852,g=592;function b(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function _(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function y(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=c,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new i.Buf32(m),e.distcode=e.distdyn=new i.Buf32(g),e.sane=1,e.back=-1,f):u}function w(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,y(t)):u}function v(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?u:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=r,i.wbits=e,w(t))):u}function x(t,e){var r,i;return t?(i=new _,t.state=i,i.window=null,(r=v(t,e))!==f&&(t.state=null),r):u}var E,k,S=!0;function M(t){if(S){var e;for(E=new i.Buf32(512),k=new i.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(s(h,t.lens,0,288,E,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;s(l,t.lens,0,32,k,0,t.work,{bits:5}),S=!1}t.lencode=E,t.lenbits=9,t.distcode=k,t.distbits=5}function A(t,e,r,n){var a,o=t.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new i.Buf8(o.wsize)),n>=o.wsize?(i.arraySet(o.window,e,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>n&&(a=n),i.arraySet(o.window,e,r-n,a,o.wnext),(n-=a)?(i.arraySet(o.window,e,r-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0}e.inflateReset=w,e.inflateReset2=v,e.inflateResetKeep=y,e.inflateInit=function(t){return x(t,15)},e.inflateInit2=x,e.inflate=function(t,e){var r,m,g,_,y,w,v,x,E,k,S,I,B,T,R,P,O,L,C,U,z,D,N,F,j=0,G=new i.Buf8(4),H=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return u;(r=t.state).mode===d&&(r.mode=13),y=t.next_out,g=t.output,v=t.avail_out,_=t.next_in,m=t.input,w=t.avail_in,x=r.hold,E=r.bits,k=w,S=v,D=f;t:for(;;)switch(r.mode){case c:if(0===r.wrap){r.mode=13;break}for(;E<16;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}if(2&r.wrap&&35615===x){r.check=0,G[0]=255&x,G[1]=x>>>8&255,r.check=a(r.check,G,2,0),x=0,E=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&x)<<8)+(x>>8))%31){t.msg=\"incorrect header check\",r.mode=p;break}if(8!=(15&x)){t.msg=\"unknown compression method\",r.mode=p;break}if(E-=4,z=8+(15&(x>>>=4)),0===r.wbits)r.wbits=z;else if(z>r.wbits){t.msg=\"invalid window size\",r.mode=p;break}r.dmax=1<<z,t.adler=r.check=1,r.mode=512&x?10:d,x=0,E=0;break;case 2:for(;E<16;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}if(r.flags=x,8!=(255&r.flags)){t.msg=\"unknown compression method\",r.mode=p;break}if(57344&r.flags){t.msg=\"unknown header flags set\",r.mode=p;break}r.head&&(r.head.text=x>>8&1),512&r.flags&&(G[0]=255&x,G[1]=x>>>8&255,r.check=a(r.check,G,2,0)),x=0,E=0,r.mode=3;case 3:for(;E<32;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}r.head&&(r.head.time=x),512&r.flags&&(G[0]=255&x,G[1]=x>>>8&255,G[2]=x>>>16&255,G[3]=x>>>24&255,r.check=a(r.check,G,4,0)),x=0,E=0,r.mode=4;case 4:for(;E<16;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}r.head&&(r.head.xflags=255&x,r.head.os=x>>8),512&r.flags&&(G[0]=255&x,G[1]=x>>>8&255,r.check=a(r.check,G,2,0)),x=0,E=0,r.mode=5;case 5:if(1024&r.flags){for(;E<16;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}r.length=x,r.head&&(r.head.extra_len=x),512&r.flags&&(G[0]=255&x,G[1]=x>>>8&255,r.check=a(r.check,G,2,0)),x=0,E=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((I=r.length)>w&&(I=w),I&&(r.head&&(z=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),i.arraySet(r.head.extra,m,_,I,z)),512&r.flags&&(r.check=a(r.check,m,I,_)),w-=I,_+=I,r.length-=I),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===w)break t;I=0;do{z=m[_+I++],r.head&&z&&r.length<65536&&(r.head.name+=String.fromCharCode(z))}while(z&&I<w);if(512&r.flags&&(r.check=a(r.check,m,I,_)),w-=I,_+=I,z)break t}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===w)break t;I=0;do{z=m[_+I++],r.head&&z&&r.length<65536&&(r.head.comment+=String.fromCharCode(z))}while(z&&I<w);if(512&r.flags&&(r.check=a(r.check,m,I,_)),w-=I,_+=I,z)break t}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;E<16;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}if(x!==(65535&r.check)){t.msg=\"header crc mismatch\",r.mode=p;break}x=0,E=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=d;break;case 10:for(;E<32;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}t.adler=r.check=b(x),x=0,E=0,r.mode=11;case 11:if(0===r.havedict)return t.next_out=y,t.avail_out=v,t.next_in=_,t.avail_in=w,r.hold=x,r.bits=E,2;t.adler=r.check=1,r.mode=d;case d:if(5===e||6===e)break t;case 13:if(r.last){x>>>=7&E,E-=7&E,r.mode=27;break}for(;E<3;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}switch(r.last=1&x,E-=1,3&(x>>>=1)){case 0:r.mode=14;break;case 1:if(M(r),r.mode=20,6===e){x>>>=2,E-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg=\"invalid block type\",r.mode=p}x>>>=2,E-=2;break;case 14:for(x>>>=7&E,E-=7&E;E<32;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}if((65535&x)!=(x>>>16^65535)){t.msg=\"invalid stored block lengths\",r.mode=p;break}if(r.length=65535&x,x=0,E=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(I=r.length){if(I>w&&(I=w),I>v&&(I=v),0===I)break t;i.arraySet(g,m,_,I,y),w-=I,_+=I,v-=I,y+=I,r.length-=I;break}r.mode=d;break;case 17:for(;E<14;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}if(r.nlen=257+(31&x),x>>>=5,E-=5,r.ndist=1+(31&x),x>>>=5,E-=5,r.ncode=4+(15&x),x>>>=4,E-=4,r.nlen>286||r.ndist>30){t.msg=\"too many length or distance symbols\",r.mode=p;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;E<3;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}r.lens[H[r.have++]]=7&x,x>>>=3,E-=3}for(;r.have<19;)r.lens[H[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,N={bits:r.lenbits},D=s(0,r.lens,0,19,r.lencode,0,r.work,N),r.lenbits=N.bits,D){t.msg=\"invalid code lengths set\",r.mode=p;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;P=(j=r.lencode[x&(1<<r.lenbits)-1])>>>16&255,O=65535&j,!((R=j>>>24)<=E);){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}if(O<16)x>>>=R,E-=R,r.lens[r.have++]=O;else{if(16===O){for(F=R+2;E<F;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}if(x>>>=R,E-=R,0===r.have){t.msg=\"invalid bit length repeat\",r.mode=p;break}z=r.lens[r.have-1],I=3+(3&x),x>>>=2,E-=2}else if(17===O){for(F=R+3;E<F;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}E-=R,z=0,I=3+(7&(x>>>=R)),x>>>=3,E-=3}else{for(F=R+7;E<F;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}E-=R,z=0,I=11+(127&(x>>>=R)),x>>>=7,E-=7}if(r.have+I>r.nlen+r.ndist){t.msg=\"invalid bit length repeat\",r.mode=p;break}for(;I--;)r.lens[r.have++]=z}}if(r.mode===p)break;if(0===r.lens[256]){t.msg=\"invalid code -- missing end-of-block\",r.mode=p;break}if(r.lenbits=9,N={bits:r.lenbits},D=s(h,r.lens,0,r.nlen,r.lencode,0,r.work,N),r.lenbits=N.bits,D){t.msg=\"invalid literal/lengths set\",r.mode=p;break}if(r.distbits=6,r.distcode=r.distdyn,N={bits:r.distbits},D=s(l,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,N),r.distbits=N.bits,D){t.msg=\"invalid distances set\",r.mode=p;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(w>=6&&v>=258){t.next_out=y,t.avail_out=v,t.next_in=_,t.avail_in=w,r.hold=x,r.bits=E,o(t,S),y=t.next_out,g=t.output,v=t.avail_out,_=t.next_in,m=t.input,w=t.avail_in,x=r.hold,E=r.bits,r.mode===d&&(r.back=-1);break}for(r.back=0;P=(j=r.lencode[x&(1<<r.lenbits)-1])>>>16&255,O=65535&j,!((R=j>>>24)<=E);){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}if(P&&0==(240&P)){for(L=R,C=P,U=O;P=(j=r.lencode[U+((x&(1<<L+C)-1)>>L)])>>>16&255,O=65535&j,!(L+(R=j>>>24)<=E);){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}x>>>=L,E-=L,r.back+=L}if(x>>>=R,E-=R,r.back+=R,r.length=O,0===P){r.mode=26;break}if(32&P){r.back=-1,r.mode=d;break}if(64&P){t.msg=\"invalid literal/length code\",r.mode=p;break}r.extra=15&P,r.mode=22;case 22:if(r.extra){for(F=r.extra;E<F;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}r.length+=x&(1<<r.extra)-1,x>>>=r.extra,E-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;P=(j=r.distcode[x&(1<<r.distbits)-1])>>>16&255,O=65535&j,!((R=j>>>24)<=E);){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}if(0==(240&P)){for(L=R,C=P,U=O;P=(j=r.distcode[U+((x&(1<<L+C)-1)>>L)])>>>16&255,O=65535&j,!(L+(R=j>>>24)<=E);){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}x>>>=L,E-=L,r.back+=L}if(x>>>=R,E-=R,r.back+=R,64&P){t.msg=\"invalid distance code\",r.mode=p;break}r.offset=O,r.extra=15&P,r.mode=24;case 24:if(r.extra){for(F=r.extra;E<F;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}r.offset+=x&(1<<r.extra)-1,x>>>=r.extra,E-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg=\"invalid distance too far back\",r.mode=p;break}r.mode=25;case 25:if(0===v)break t;if(I=S-v,r.offset>I){if((I=r.offset-I)>r.whave&&r.sane){t.msg=\"invalid distance too far back\",r.mode=p;break}I>r.wnext?(I-=r.wnext,B=r.wsize-I):B=r.wnext-I,I>r.length&&(I=r.length),T=r.window}else T=g,B=y-r.offset,I=r.length;I>v&&(I=v),v-=I,r.length-=I;do{g[y++]=T[B++]}while(--I);0===r.length&&(r.mode=21);break;case 26:if(0===v)break t;g[y++]=r.length,v--,r.mode=21;break;case 27:if(r.wrap){for(;E<32;){if(0===w)break t;w--,x|=m[_++]<<E,E+=8}if(S-=v,t.total_out+=S,r.total+=S,S&&(t.adler=r.check=r.flags?a(r.check,g,S,y-S):n(r.check,g,S,y-S)),S=v,(r.flags?x:b(x))!==r.check){t.msg=\"incorrect data check\",r.mode=p;break}x=0,E=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;E<32;){if(0===w)break t;w--,x+=m[_++]<<E,E+=8}if(x!==(4294967295&r.total)){t.msg=\"incorrect length check\",r.mode=p;break}x=0,E=0}r.mode=29;case 29:D=1;break t;case p:D=-3;break t;case 31:return-4;default:return u}return t.next_out=y,t.avail_out=v,t.next_in=_,t.avail_in=w,r.hold=x,r.bits=E,(r.wsize||S!==t.avail_out&&r.mode<p&&(r.mode<27||4!==e))&&A(t,t.output,t.next_out,S-t.avail_out)?(r.mode=31,-4):(k-=t.avail_in,S-=t.avail_out,t.total_in+=k,t.total_out+=S,r.total+=S,r.wrap&&S&&(t.adler=r.check=r.flags?a(r.check,g,S,t.next_out-S):n(r.check,g,S,t.next_out-S)),t.data_type=r.bits+(r.last?64:0)+(r.mode===d?128:0)+(20===r.mode||15===r.mode?256:0),(0===k&&0===S||4===e)&&D===f&&(D=-5),D)},e.inflateEnd=function(t){if(!t||!t.state)return u;var e=t.state;return e.window&&(e.window=null),t.state=null,f},e.inflateGetHeader=function(t,e){var r;return t&&t.state?0==(2&(r=t.state).wrap)?u:(r.head=e,e.done=!1,f):u},e.inflateSetDictionary=function(t,e){var r,i=e.length;return t&&t.state?0!==(r=t.state).wrap&&11!==r.mode?u:11===r.mode&&n(1,e,i,0)!==r.check?-3:A(t,e,i,i)?(r.mode=31,-4):(r.havedict=1,f):u},e.inflateInfo=\"pako inflate (from Nodeca project)\"},881:(t,e,r)=>{\"use strict\";var i=r(9761),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,r,h,l,f,u,c){var d,p,m,g,b,_,y,w,v,x=c.bits,E=0,k=0,S=0,M=0,A=0,I=0,B=0,T=0,R=0,P=0,O=null,L=0,C=new i.Buf16(16),U=new i.Buf16(16),z=null,D=0;for(E=0;E<=15;E++)C[E]=0;for(k=0;k<h;k++)C[e[r+k]]++;for(A=x,M=15;M>=1&&0===C[M];M--);if(A>M&&(A=M),0===M)return l[f++]=20971520,l[f++]=20971520,c.bits=1,0;for(S=1;S<M&&0===C[S];S++);for(A<S&&(A=S),T=1,E=1;E<=15;E++)if(T<<=1,(T-=C[E])<0)return-1;if(T>0&&(0===t||1!==M))return-1;for(U[1]=0,E=1;E<15;E++)U[E+1]=U[E]+C[E];for(k=0;k<h;k++)0!==e[r+k]&&(u[U[e[r+k]]++]=k);if(0===t?(O=z=u,_=19):1===t?(O=n,L-=257,z=a,D-=257,_=256):(O=o,z=s,_=-1),P=0,k=0,E=S,b=f,I=A,B=0,m=-1,g=(R=1<<A)-1,1===t&&R>852||2===t&&R>592)return 1;for(;;){y=E-B,u[k]<_?(w=0,v=u[k]):u[k]>_?(w=z[D+u[k]],v=O[L+u[k]]):(w=96,v=0),d=1<<E-B,S=p=1<<I;do{l[b+(P>>B)+(p-=d)]=y<<24|w<<16|v|0}while(0!==p);for(d=1<<E-1;P&d;)d>>=1;if(0!==d?(P&=d-1,P+=d):P=0,k++,0==--C[E]){if(E===M)break;E=e[r+u[k]]}if(E>A&&(P&g)!==m){for(0===B&&(B=A),b+=S,T=1<<(I=E-B);I+B<M&&!((T-=C[I+B])<=0);)I++,T<<=1;if(R+=1<<I,1===t&&R>852||2===t&&R>592)return 1;l[m=P&g]=A<<24|I<<16|b-f|0}}return 0!==P&&(l[b+P]=E-B<<24|64<<16|0),c.bits=A,0}},2950:t=>{\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},9564:(t,e,r)=>{\"use strict\";var i=r(9761);function n(t){for(var e=t.length;--e>=0;)t[e]=0}var a=0,o=256,s=o+1+29,h=30,l=19,f=2*s+1,u=15,c=16,d=256,p=16,m=17,g=18,b=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],_=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],y=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],w=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],v=new Array(2*(s+2));n(v);var x=new Array(2*h);n(x);var E=new Array(512);n(E);var k=new Array(256);n(k);var S=new Array(29);n(S);var M,A,I,B=new Array(h);function T(t,e,r,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function R(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function P(t){return t<256?E[t]:E[256+(t>>>7)]}function O(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function L(t,e,r){t.bi_valid>c-r?(t.bi_buf|=e<<t.bi_valid&65535,O(t,t.bi_buf),t.bi_buf=e>>c-t.bi_valid,t.bi_valid+=r-c):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r)}function C(t,e,r){L(t,r[2*e],r[2*e+1])}function U(t,e){var r=0;do{r|=1&t,t>>>=1,r<<=1}while(--e>0);return r>>>1}function z(t,e,r){var i,n,a=new Array(u+1),o=0;for(i=1;i<=u;i++)a[i]=o=o+r[i-1]<<1;for(n=0;n<=e;n++){var s=t[2*n+1];0!==s&&(t[2*n]=U(a[s]++,s))}}function D(t){var e;for(e=0;e<s;e++)t.dyn_ltree[2*e]=0;for(e=0;e<h;e++)t.dyn_dtree[2*e]=0;for(e=0;e<l;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*d]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function N(t){t.bi_valid>8?O(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function F(t,e,r,i){var n=2*e,a=2*r;return t[n]<t[a]||t[n]===t[a]&&i[e]<=i[r]}function j(t,e,r){for(var i=t.heap[r],n=r<<1;n<=t.heap_len&&(n<t.heap_len&&F(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!F(e,i,t.heap[n],t.depth));)t.heap[r]=t.heap[n],r=n,n<<=1;t.heap[r]=i}function G(t,e,r){var i,n,a,s,h=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*h]<<8|t.pending_buf[t.d_buf+2*h+1],n=t.pending_buf[t.l_buf+h],h++,0===i?C(t,n,e):(C(t,(a=k[n])+o+1,e),0!==(s=b[a])&&L(t,n-=S[a],s),C(t,a=P(--i),r),0!==(s=_[a])&&L(t,i-=B[a],s))}while(h<t.last_lit);C(t,d,e)}function H(t,e){var r,i,n,a=e.dyn_tree,o=e.stat_desc.static_tree,s=e.stat_desc.has_stree,h=e.stat_desc.elems,l=-1;for(t.heap_len=0,t.heap_max=f,r=0;r<h;r++)0!==a[2*r]?(t.heap[++t.heap_len]=l=r,t.depth[r]=0):a[2*r+1]=0;for(;t.heap_len<2;)a[2*(n=t.heap[++t.heap_len]=l<2?++l:0)]=1,t.depth[n]=0,t.opt_len--,s&&(t.static_len-=o[2*n+1]);for(e.max_code=l,r=t.heap_len>>1;r>=1;r--)j(t,a,r);n=h;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],j(t,a,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,a[2*n]=a[2*r]+a[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,a[2*r+1]=a[2*i+1]=n,t.heap[1]=n++,j(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,a,o,s,h=e.dyn_tree,l=e.max_code,c=e.stat_desc.static_tree,d=e.stat_desc.has_stree,p=e.stat_desc.extra_bits,m=e.stat_desc.extra_base,g=e.stat_desc.max_length,b=0;for(a=0;a<=u;a++)t.bl_count[a]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<f;r++)(a=h[2*h[2*(i=t.heap[r])+1]+1]+1)>g&&(a=g,b++),h[2*i+1]=a,i>l||(t.bl_count[a]++,o=0,i>=m&&(o=p[i-m]),s=h[2*i],t.opt_len+=s*(a+o),d&&(t.static_len+=s*(c[2*i+1]+o)));if(0!==b){do{for(a=g-1;0===t.bl_count[a];)a--;t.bl_count[a]--,t.bl_count[a+1]+=2,t.bl_count[g]--,b-=2}while(b>0);for(a=g;0!==a;a--)for(i=t.bl_count[a];0!==i;)(n=t.heap[--r])>l||(h[2*n+1]!==a&&(t.opt_len+=(a-h[2*n+1])*h[2*n],h[2*n+1]=a),i--)}}(t,e),z(a,l,t.bl_count)}function W(t,e,r){var i,n,a=-1,o=e[1],s=0,h=7,l=4;for(0===o&&(h=138,l=3),e[2*(r+1)+1]=65535,i=0;i<=r;i++)n=o,o=e[2*(i+1)+1],++s<h&&n===o||(s<l?t.bl_tree[2*n]+=s:0!==n?(n!==a&&t.bl_tree[2*n]++,t.bl_tree[2*p]++):s<=10?t.bl_tree[2*m]++:t.bl_tree[2*g]++,s=0,a=n,0===o?(h=138,l=3):n===o?(h=6,l=3):(h=7,l=4))}function q(t,e,r){var i,n,a=-1,o=e[1],s=0,h=7,l=4;for(0===o&&(h=138,l=3),i=0;i<=r;i++)if(n=o,o=e[2*(i+1)+1],!(++s<h&&n===o)){if(s<l)do{C(t,n,t.bl_tree)}while(0!=--s);else 0!==n?(n!==a&&(C(t,n,t.bl_tree),s--),C(t,p,t.bl_tree),L(t,s-3,2)):s<=10?(C(t,m,t.bl_tree),L(t,s-3,3)):(C(t,g,t.bl_tree),L(t,s-11,7));s=0,a=n,0===o?(h=138,l=3):n===o?(h=6,l=3):(h=7,l=4)}}n(B);var Z=!1;function Y(t,e,r,n){L(t,(a<<1)+(n?1:0),3),function(t,e,r,n){N(t),O(t,r),O(t,~r),i.arraySet(t.pending_buf,t.window,e,r,t.pending),t.pending+=r}(t,e,r)}e._tr_init=function(t){Z||(function(){var t,e,r,i,n,a=new Array(u+1);for(r=0,i=0;i<28;i++)for(S[i]=r,t=0;t<1<<b[i];t++)k[r++]=i;for(k[r-1]=i,n=0,i=0;i<16;i++)for(B[i]=n,t=0;t<1<<_[i];t++)E[n++]=i;for(n>>=7;i<h;i++)for(B[i]=n<<7,t=0;t<1<<_[i]-7;t++)E[256+n++]=i;for(e=0;e<=u;e++)a[e]=0;for(t=0;t<=143;)v[2*t+1]=8,t++,a[8]++;for(;t<=255;)v[2*t+1]=9,t++,a[9]++;for(;t<=279;)v[2*t+1]=7,t++,a[7]++;for(;t<=287;)v[2*t+1]=8,t++,a[8]++;for(z(v,s+1,a),t=0;t<h;t++)x[2*t+1]=5,x[2*t]=U(t,5);M=new T(v,b,o+1,s,u),A=new T(x,_,0,h,u),I=new T(new Array(0),y,0,l,7)}(),Z=!0),t.l_desc=new R(t.dyn_ltree,M),t.d_desc=new R(t.dyn_dtree,A),t.bl_desc=new R(t.bl_tree,I),t.bi_buf=0,t.bi_valid=0,D(t)},e._tr_stored_block=Y,e._tr_flush_block=function(t,e,r,i){var n,a,s=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<o;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),H(t,t.l_desc),H(t,t.d_desc),s=function(t){var e;for(W(t,t.dyn_ltree,t.l_desc.max_code),W(t,t.dyn_dtree,t.d_desc.max_code),H(t,t.bl_desc),e=l-1;e>=3&&0===t.bl_tree[2*w[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(a=t.static_len+3+7>>>3)<=n&&(n=a)):n=a=r+5,r+4<=n&&-1!==e?Y(t,e,r,i):4===t.strategy||a===n?(L(t,2+(i?1:0),3),G(t,v,x)):(L(t,4+(i?1:0),3),function(t,e,r,i){var n;for(L(t,e-257,5),L(t,r-1,5),L(t,i-4,4),n=0;n<i;n++)L(t,t.bl_tree[2*w[n]+1],3);q(t,t.dyn_ltree,e-1),q(t,t.dyn_dtree,r-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),G(t,t.dyn_ltree,t.dyn_dtree)),D(t),i&&N(t)},e._tr_tally=function(t,e,r){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(k[r]+o+1)]++,t.dyn_dtree[2*P(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){L(t,2,3),C(t,d,v),function(t){16===t.bi_valid?(O(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},744:t=>{\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},4398:t=>{function e(t,e){if(!(t=t.replace(/\\t+/g,\" \").trim()))return null;var i=t.indexOf(\" \");if(-1===i)throw new Error(\"no named row at line \"+e);var n=t.substring(0,i);t=(t=(t=(t=t.substring(i+1)).replace(/letter=[\\'\\\"]\\S+[\\'\\\"]/gi,\"\")).split(\"=\")).map((function(t){return t.trim().match(/(\".*?\"|[^\"\\s]+)+(?=\\s*|\\s*$)/g)}));for(var a=[],o=0;o<t.length;o++){var s=t[o];0===o?a.push({key:s[0],data:\"\"}):o===t.length-1?a[a.length-1].data=r(s[0]):(a[a.length-1].data=r(s[0]),a.push({key:s[1],data:\"\"}))}var h={key:n,data:{}};return a.forEach((function(t){h.data[t.key]=t.data})),h}function r(t){return t&&0!==t.length?0===t.indexOf('\"')||0===t.indexOf(\"'\")?t.substring(1,t.length-1):-1!==t.indexOf(\",\")?function(t){return t.split(\",\").map((function(t){return parseInt(t,10)}))}(t):parseInt(t,10):\"\"}t.exports=function(t){if(!t)throw new Error(\"no data provided\");var r={pages:[],chars:[],kernings:[]},i=(t=t.toString().trim()).split(/\\r\\n?|\\n/g);if(0===i.length)throw new Error(\"no data in BMFont file\");for(var n=0;n<i.length;n++){var a=e(i[n],n);if(a)if(\"page\"===a.key){if(\"number\"!=typeof a.data.id)throw new Error(\"malformed file at line \"+n+\" -- needs page id=N\");if(\"string\"!=typeof a.data.file)throw new Error(\"malformed file at line \"+n+' -- needs page file=\"path\"');r.pages[a.data.id]=a.data.file}else\"chars\"===a.key||\"kernings\"===a.key||(\"char\"===a.key?r.chars.push(a.data):\"kerning\"===a.key?r.kernings.push(a.data):r[a.key]=a.data)}return r}},8438:t=>{var e=[66,77,70];function r(t,e,r){if(r>e.length-1)return 0;var n=e.readUInt8(r++),a=e.readInt32LE(r);switch(r+=4,n){case 1:t.info=function(t,e){var r={};r.size=t.readInt16LE(e);var n=t.readUInt8(e+2);return r.smooth=n>>7&1,r.unicode=n>>6&1,r.italic=n>>5&1,r.bold=n>>4&1,n>>3&1&&(r.fixedHeight=1),r.charset=t.readUInt8(e+3)||\"\",r.stretchH=t.readUInt16LE(e+4),r.aa=t.readUInt8(e+6),r.padding=[t.readInt8(e+7),t.readInt8(e+8),t.readInt8(e+9),t.readInt8(e+10)],r.spacing=[t.readInt8(e+11),t.readInt8(e+12)],r.outline=t.readUInt8(e+13),r.face=function(t,e){return i(t,e).toString(\"utf8\")}(t,e+14),r}(e,r);break;case 2:t.common=function(t,e){var r={};return r.lineHeight=t.readUInt16LE(e),r.base=t.readUInt16LE(e+2),r.scaleW=t.readUInt16LE(e+4),r.scaleH=t.readUInt16LE(e+6),r.pages=t.readUInt16LE(e+8),t.readUInt8(e+10),r.packed=0,r.alphaChnl=t.readUInt8(e+11),r.redChnl=t.readUInt8(e+12),r.greenChnl=t.readUInt8(e+13),r.blueChnl=t.readUInt8(e+14),r}(e,r);break;case 3:t.pages=function(t,e,r){for(var n=[],a=i(t,e),o=a.length+1,s=r/o,h=0;h<s;h++)n[h]=t.slice(e,e+a.length).toString(\"utf8\"),e+=o;return n}(e,r,a);break;case 4:t.chars=function(t,e,r){for(var i=[],n=r/20,a=0;a<n;a++){var o={},s=20*a;o.id=t.readUInt32LE(e+0+s),o.x=t.readUInt16LE(e+4+s),o.y=t.readUInt16LE(e+6+s),o.width=t.readUInt16LE(e+8+s),o.height=t.readUInt16LE(e+10+s),o.xoffset=t.readInt16LE(e+12+s),o.yoffset=t.readInt16LE(e+14+s),o.xadvance=t.readInt16LE(e+16+s),o.page=t.readUInt8(e+18+s),o.chnl=t.readUInt8(e+19+s),i[a]=o}return i}(e,r,a);break;case 5:t.kernings=function(t,e,r){for(var i=[],n=r/10,a=0;a<n;a++){var o={},s=10*a;o.first=t.readUInt32LE(e+0+s),o.second=t.readUInt32LE(e+4+s),o.amount=t.readInt16LE(e+8+s),i[a]=o}return i}(e,r,a)}return 5+a}function i(t,e){for(var r=e;r<t.length&&0!==t[r];r++);return t.slice(e,r)}t.exports=function(t){if(t.length<6)throw new Error(\"invalid buffer length for BMFont\");var i=e.every((function(e,r){return t.readUInt8(r)===e}));if(!i)throw new Error(\"BMFont missing BMF byte header\");var n=3;if(t.readUInt8(n++)>3)throw new Error(\"Only supports BMFont Binary v3 (BMFont App v1.10)\");for(var a={kernings:[],chars:[]},o=0;o<5;o++)n+=r(a,t,n);return a}},5947:(t,e,r)=>{var i=r(403),n=r(1596),a={scaleh:\"scaleH\",scalew:\"scaleW\",stretchh:\"stretchH\",lineheight:\"lineHeight\",alphachnl:\"alphaChnl\",redchnl:\"redChnl\",greenchnl:\"greenChnl\",bluechnl:\"blueChnl\"};function o(t){var e=function(t){for(var e=[],r=0;r<t.attributes.length;r++)e.push(t.attributes[r]);return e}(t);return e.reduce((function(t,e){var r;return t[(r=e.nodeName,a[r.toLowerCase()]||r)]=e.nodeValue,t}),{})}t.exports=function(t){t=t.toString();var e=n(t),r={pages:[],chars:[],kernings:[]};[\"info\",\"common\"].forEach((function(t){var n=e.getElementsByTagName(t)[0];n&&(r[t]=i(o(n)))}));var a=e.getElementsByTagName(\"pages\")[0];if(!a)throw new Error(\"malformed file -- no <pages> element\");for(var s=a.getElementsByTagName(\"page\"),h=0;h<s.length;h++){var l=s[h],f=parseInt(l.getAttribute(\"id\"),10),u=l.getAttribute(\"file\");if(isNaN(f))throw new Error('malformed file -- page \"id\" attribute is NaN');if(!u)throw new Error('malformed file -- needs page \"file\" attribute');r.pages[parseInt(f,10)]=u}return[\"chars\",\"kernings\"].forEach((function(t){var n=e.getElementsByTagName(t)[0];if(n)for(var a=t.substring(0,t.length-1),s=n.getElementsByTagName(a),h=0;h<s.length;h++){var l=s[h];r[t].push(i(o(l)))}})),r}},403:t=>{var e=\"chasrset\";t.exports=function(t){for(var r in e in t&&(t.charset=t[e],delete t[e]),t)\"face\"!==r&&\"charset\"!==r&&(t[r]=\"padding\"===r||\"spacing\"===r?t[r].split(\",\").map((function(t){return parseInt(t,10)})):parseInt(t[r],10));return t}},4655:(t,e,r)=>{var i=r(311),n=r(3243);t.exports=function(t){if(!t)return{};var e={};return n(i(t).split(\"\\n\"),(function(t){var r,n=t.indexOf(\":\"),a=i(t.slice(0,n)).toLowerCase(),o=i(t.slice(n+1));void 0===e[a]?e[a]=o:(r=e[a],\"[object Array]\"===Object.prototype.toString.call(r)?e[a].push(o):e[a]=[e[a],o])})),e}},1023:(t,e,r)=>{\"use strict\";var i=r(4406);function n(t){if(\"string\"!=typeof t)throw new TypeError(\"Path must be a string. Received \"+JSON.stringify(t))}function a(t,e){for(var r,i=\"\",n=0,a=-1,o=0,s=0;s<=t.length;++s){if(s<t.length)r=t.charCodeAt(s);else{if(47===r)break;r=47}if(47===r){if(a===s-1||1===o);else if(a!==s-1&&2===o){if(i.length<2||2!==n||46!==i.charCodeAt(i.length-1)||46!==i.charCodeAt(i.length-2))if(i.length>2){var h=i.lastIndexOf(\"/\");if(h!==i.length-1){-1===h?(i=\"\",n=0):n=(i=i.slice(0,h)).length-1-i.lastIndexOf(\"/\"),a=s,o=0;continue}}else if(2===i.length||1===i.length){i=\"\",n=0,a=s,o=0;continue}e&&(i.length>0?i+=\"/..\":i=\"..\",n=2)}else i.length>0?i+=\"/\"+t.slice(a+1,s):i=t.slice(a+1,s),n=s-a-1;a=s,o=0}else 46===r&&-1!==o?++o:o=-1}return i}var o={resolve:function(){for(var t,e=\"\",r=!1,o=arguments.length-1;o>=-1&&!r;o--){var s;o>=0?s=arguments[o]:(void 0===t&&(t=i.cwd()),s=t),n(s),0!==s.length&&(e=s+\"/\"+e,r=47===s.charCodeAt(0))}return e=a(e,!r),r?e.length>0?\"/\"+e:\"/\":e.length>0?e:\".\"},normalize:function(t){if(n(t),0===t.length)return\".\";var e=47===t.charCodeAt(0),r=47===t.charCodeAt(t.length-1);return 0!==(t=a(t,!e)).length||e||(t=\".\"),t.length>0&&r&&(t+=\"/\"),e?\"/\"+t:t},isAbsolute:function(t){return n(t),t.length>0&&47===t.charCodeAt(0)},join:function(){if(0===arguments.length)return\".\";for(var t,e=0;e<arguments.length;++e){var r=arguments[e];n(r),r.length>0&&(void 0===t?t=r:t+=\"/\"+r)}return void 0===t?\".\":o.normalize(t)},relative:function(t,e){if(n(t),n(e),t===e)return\"\";if((t=o.resolve(t))===(e=o.resolve(e)))return\"\";for(var r=1;r<t.length&&47===t.charCodeAt(r);++r);for(var i=t.length,a=i-r,s=1;s<e.length&&47===e.charCodeAt(s);++s);for(var h=e.length-s,l=a<h?a:h,f=-1,u=0;u<=l;++u){if(u===l){if(h>l){if(47===e.charCodeAt(s+u))return e.slice(s+u+1);if(0===u)return e.slice(s+u)}else a>l&&(47===t.charCodeAt(r+u)?f=u:0===u&&(f=0));break}var c=t.charCodeAt(r+u);if(c!==e.charCodeAt(s+u))break;47===c&&(f=u)}var d=\"\";for(u=r+f+1;u<=i;++u)u!==i&&47!==t.charCodeAt(u)||(0===d.length?d+=\"..\":d+=\"/..\");return d.length>0?d+e.slice(s+f):(s+=f,47===e.charCodeAt(s)&&++s,e.slice(s))},_makeLong:function(t){return t},dirname:function(t){if(n(t),0===t.length)return\".\";for(var e=t.charCodeAt(0),r=47===e,i=-1,a=!0,o=t.length-1;o>=1;--o)if(47===(e=t.charCodeAt(o))){if(!a){i=o;break}}else a=!1;return-1===i?r?\"/\":\".\":r&&1===i?\"//\":t.slice(0,i)},basename:function(t,e){if(void 0!==e&&\"string\"!=typeof e)throw new TypeError('\"ext\" argument must be a string');n(t);var r,i=0,a=-1,o=!0;if(void 0!==e&&e.length>0&&e.length<=t.length){if(e.length===t.length&&e===t)return\"\";var s=e.length-1,h=-1;for(r=t.length-1;r>=0;--r){var l=t.charCodeAt(r);if(47===l){if(!o){i=r+1;break}}else-1===h&&(o=!1,h=r+1),s>=0&&(l===e.charCodeAt(s)?-1==--s&&(a=r):(s=-1,a=h))}return i===a?a=h:-1===a&&(a=t.length),t.slice(i,a)}for(r=t.length-1;r>=0;--r)if(47===t.charCodeAt(r)){if(!o){i=r+1;break}}else-1===a&&(o=!1,a=r+1);return-1===a?\"\":t.slice(i,a)},extname:function(t){n(t);for(var e=-1,r=0,i=-1,a=!0,o=0,s=t.length-1;s>=0;--s){var h=t.charCodeAt(s);if(47!==h)-1===i&&(a=!1,i=s+1),46===h?-1===e?e=s:1!==o&&(o=1):-1!==e&&(o=-1);else if(!a){r=s+1;break}}return-1===e||-1===i||0===o||1===o&&e===i-1&&e===r+1?\"\":t.slice(e,i)},format:function(t){if(null===t||\"object\"!=typeof t)throw new TypeError('The \"pathObject\" argument must be of type Object. Received type '+typeof t);return function(t,e){var r=e.dir||e.root,i=e.base||(e.name||\"\")+(e.ext||\"\");return r?r===e.root?r+i:r+\"/\"+i:i}(0,t)},parse:function(t){n(t);var e={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(0===t.length)return e;var r,i=t.charCodeAt(0),a=47===i;a?(e.root=\"/\",r=1):r=0;for(var o=-1,s=0,h=-1,l=!0,f=t.length-1,u=0;f>=r;--f)if(47!==(i=t.charCodeAt(f)))-1===h&&(l=!1,h=f+1),46===i?-1===o?o=f:1!==u&&(u=1):-1!==o&&(u=-1);else if(!l){s=f+1;break}return-1===o||-1===h||0===u||1===u&&o===h-1&&o===s+1?-1!==h&&(e.base=e.name=0===s&&a?t.slice(1,h):t.slice(s,h)):(0===s&&a?(e.name=t.slice(1,o),e.base=t.slice(1,h)):(e.name=t.slice(s,o),e.base=t.slice(s,h)),e.ext=t.slice(o,h)),s>0?e.dir=t.slice(0,s-1):a&&(e.dir=\"/\"),e},sep:\"/\",delimiter:\":\",win32:null,posix:null};o.posix=o,t.exports=o},482:(t,e)=>{\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Deferred=void 0,e.Deferred=class{constructor(){this.resolve=()=>null,this.reject=()=>null,this.promise=new Promise(((t,e)=>{this.reject=e,this.resolve=t}))}}},5567:(t,e)=>{\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.EndOfStreamError=e.defaultMessages=void 0,e.defaultMessages=\"End-Of-Stream\";class r extends Error{constructor(){super(e.defaultMessages)}}e.EndOfStreamError=r},4514:(t,e,r)=>{\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StreamReader=e.EndOfStreamError=void 0;const i=r(5567),n=r(482);var a=r(5567);Object.defineProperty(e,\"EndOfStreamError\",{enumerable:!0,get:function(){return a.EndOfStreamError}}),e.StreamReader=class{constructor(t){if(this.s=t,this.deferred=null,this.endOfStream=!1,this.peekQueue=[],!t.read||!t.once)throw new Error(\"Expected an instance of stream.Readable\");this.s.once(\"end\",(()=>this.reject(new i.EndOfStreamError))),this.s.once(\"error\",(t=>this.reject(t))),this.s.once(\"close\",(()=>this.reject(new Error(\"Stream closed\"))))}async peek(t,e,r){const i=await this.read(t,e,r);return this.peekQueue.push(t.subarray(e,e+i)),i}async read(t,e,r){if(0===r)return 0;if(0===this.peekQueue.length&&this.endOfStream)throw new i.EndOfStreamError;let n=r,a=0;for(;this.peekQueue.length>0&&n>0;){const r=this.peekQueue.pop();if(!r)throw new Error(\"peekData should be defined\");const i=Math.min(r.length,n);t.set(r.subarray(0,i),e+a),a+=i,n-=i,i<r.length&&this.peekQueue.push(r.subarray(i))}for(;n>0&&!this.endOfStream;){const r=Math.min(n,1048576),i=await this.readFromStream(t,e+a,r);if(a+=i,i<r)break;n-=i}return a}async readFromStream(t,e,r){const i=this.s.read(r);if(i)return t.set(i,e),i.length;{const i={buffer:t,offset:e,length:r,deferred:new n.Deferred};return this.deferred=i.deferred,this.s.once(\"readable\",(()=>{this.readDeferred(i)})),i.deferred.promise}}readDeferred(t){const e=this.s.read(t.length);e?(t.buffer.set(e,t.offset),t.deferred.resolve(e.length),this.deferred=null):this.s.once(\"readable\",(()=>{this.readDeferred(t)}))}reject(t){this.endOfStream=!0,this.deferred&&(this.deferred.reject(t),this.deferred=null)}}},4644:(t,e,r)=>{\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.StreamReader=e.EndOfStreamError=void 0;var i=r(5567);Object.defineProperty(e,\"EndOfStreamError\",{enumerable:!0,get:function(){return i.EndOfStreamError}});var n=r(4514);Object.defineProperty(e,\"StreamReader\",{enumerable:!0,get:function(){return n.StreamReader}})},1294:t=>{\"use strict\";function e(t,i,n,a,o,s){for(var h,l,f,u,c=Math.max(i-1,0),d=Math.max(n-1,0),p=Math.min(i+1,a-1),m=Math.min(n+1,o-1),g=4*(n*a+i),b=0,_=0,y=0,w=0,v=0,x=c;x<=p;x++)for(var E=d;E<=m;E++)if(x!==i||E!==n){var k=r(t,t,g,4*(E*a+x),!0);if(0===k?b++:k<0?y++:k>0&&_++,b>2)return!1;s&&(k<w&&(w=k,h=x,l=E),k>v&&(v=k,f=x,u=E))}return!s||0!==y&&0!==_&&(!e(t,h,l,a,o)&&!e(s,h,l,a,o)||!e(t,f,u,a,o)&&!e(s,f,u,a,o))}function r(t,e,r,s,h){var l=t[r+3]/255,f=e[s+3]/255,u=o(t[r+0],l),c=o(t[r+1],l),d=o(t[r+2],l),p=o(e[s+0],f),m=o(e[s+1],f),g=o(e[s+2],f),b=i(u,c,d)-i(p,m,g);if(h)return b;var _=n(u,c,d)-n(p,m,g),y=a(u,c,d)-a(p,m,g);return.5053*b*b+.299*_*_+.1957*y*y}function i(t,e,r){return.29889531*t+.58662247*e+.11448223*r}function n(t,e,r){return.59597799*t-.2741761*e-.32180189*r}function a(t,e,r){return.21147017*t-.52261711*e+.31114694*r}function o(t,e){return 255+(t-255)*e}function s(t,e,r,i,n){t[e+0]=r,t[e+1]=i,t[e+2]=n,t[e+3]=255}t.exports=function(t,n,a,h,l,f){f||(f={});for(var u=void 0===f.threshold?.1:f.threshold,c=35215*u*u,d=0,p=0;p<l;p++)for(var m=0;m<h;m++){var g=4*(p*h+m);if(r(t,n,g,g)>c)f.includeAA||!e(t,m,p,h,l,n)&&!e(n,m,p,h,l,t)?(a&&s(a,g,255,0,0),d++):a&&s(a,g,255,255,0);else if(a){var b=o((void 0,void 0,void 0,void 0,w=(_=t)[(y=g)+3]/255,i(o(_[y+0],w),o(_[y+1],w),o(_[y+2],w))),.1);s(a,g,b,b,b)}}var _,y,w;return d}},9902:(t,e,r)=>{t.exports=function t(e,r,i){function n(o,s){if(!r[o]){if(!e[o]){if(a)return a(o,!0);var h=new Error(\"Cannot find module '\"+o+\"'\");throw h.code=\"MODULE_NOT_FOUND\",h}var l=r[o]={exports:{}};e[o][0].call(l.exports,(function(t){return n(e[o][1][t]||t)}),l,l.exports,t,e,r,i)}return r[o].exports}for(var a=void 0,o=0;o<i.length;o++)n(i[o]);return n}({1:[function(t,e,r){(function(e){(function(){\"use strict\";let i=t(\"./interlace\"),n=[function(){},function(t,e,r,i){if(i===e.length)throw new Error(\"Ran out of data\");let n=e[i];t[r]=n,t[r+1]=n,t[r+2]=n,t[r+3]=255},function(t,e,r,i){if(i+1>=e.length)throw new Error(\"Ran out of data\");let n=e[i];t[r]=n,t[r+1]=n,t[r+2]=n,t[r+3]=e[i+1]},function(t,e,r,i){if(i+2>=e.length)throw new Error(\"Ran out of data\");t[r]=e[i],t[r+1]=e[i+1],t[r+2]=e[i+2],t[r+3]=255},function(t,e,r,i){if(i+3>=e.length)throw new Error(\"Ran out of data\");t[r]=e[i],t[r+1]=e[i+1],t[r+2]=e[i+2],t[r+3]=e[i+3]}],a=[function(){},function(t,e,r,i){let n=e[0];t[r]=n,t[r+1]=n,t[r+2]=n,t[r+3]=i},function(t,e,r){let i=e[0];t[r]=i,t[r+1]=i,t[r+2]=i,t[r+3]=e[1]},function(t,e,r,i){t[r]=e[0],t[r+1]=e[1],t[r+2]=e[2],t[r+3]=i},function(t,e,r){t[r]=e[0],t[r+1]=e[1],t[r+2]=e[2],t[r+3]=e[3]}];function o(t,e,r,i,a,o){let s=t.width,h=t.height,l=t.index;for(let t=0;t<h;t++)for(let h=0;h<s;h++){let s=r(h,t,l);n[i](e,a,s,o),o+=i}return o}function s(t,e,r,i,n,o){let s=t.width,h=t.height,l=t.index;for(let t=0;t<h;t++){for(let h=0;h<s;h++){let s=n.get(i),f=r(h,t,l);a[i](e,s,f,o)}n.resetAfterLine()}}r.dataToBitMap=function(t,r){let n,a,h=r.width,l=r.height,f=r.depth,u=r.bpp,c=r.interlace;8!==f&&(n=function(t,e){let r=[],i=0;function n(){if(i===t.length)throw new Error(\"Ran out of data\");let n,a,o,s,h,l,f,u,c=t[i];switch(i++,e){default:throw new Error(\"unrecognised depth\");case 16:f=t[i],i++,r.push((c<<8)+f);break;case 4:f=15&c,u=c>>4,r.push(u,f);break;case 2:h=3&c,l=c>>2&3,f=c>>4&3,u=c>>6&3,r.push(u,f,l,h);break;case 1:n=1&c,a=c>>1&1,o=c>>2&1,s=c>>3&1,h=c>>4&1,l=c>>5&1,f=c>>6&1,u=c>>7&1,r.push(u,f,l,h,s,o,a,n)}}return{get:function(t){for(;r.length<t;)n();let e=r.slice(0,t);return r=r.slice(t),e},resetAfterLine:function(){r.length=0},end:function(){if(i!==t.length)throw new Error(\"extra data found\")}}}(t,f)),a=f<=8?e.alloc(h*l*4):new Uint16Array(h*l*4);let d,p,m=Math.pow(2,f)-1,g=0;if(c)d=i.getImagePasses(h,l),p=i.getInterlaceIterator(h,l);else{let t=0;p=function(){let e=t;return t+=4,e},d=[{width:h,height:l}]}for(let e=0;e<d.length;e++)8===f?g=o(d[e],a,p,u,t,g):s(d[e],a,p,u,n,m);if(8===f){if(g!==t.length)throw new Error(\"extra data found\")}else n.end();return a}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./interlace\":11,buffer:33}],2:[function(t,e,r){(function(r){(function(){\"use strict\";let i=t(\"./constants\");e.exports=function(t,e,n,a){let o=-1!==[i.COLORTYPE_COLOR_ALPHA,i.COLORTYPE_ALPHA].indexOf(a.colorType);if(a.colorType===a.inputColorType){let e=function(){let t=new ArrayBuffer(2);return new DataView(t).setInt16(0,256,!0),256!==new Int16Array(t)[0]}();if(8===a.bitDepth||16===a.bitDepth&&e)return t}let s=16!==a.bitDepth?t:new Uint16Array(t.buffer),h=255,l=i.COLORTYPE_TO_BPP_MAP[a.inputColorType];4!==l||a.inputHasAlpha||(l=3);let f=i.COLORTYPE_TO_BPP_MAP[a.colorType];16===a.bitDepth&&(h=65535,f*=2);let u=r.alloc(e*n*f),c=0,d=0,p=a.bgColor||{};function m(){let t,e,r,n=h;switch(a.inputColorType){case i.COLORTYPE_COLOR_ALPHA:n=s[c+3],t=s[c],e=s[c+1],r=s[c+2];break;case i.COLORTYPE_COLOR:t=s[c],e=s[c+1],r=s[c+2];break;case i.COLORTYPE_ALPHA:n=s[c+1],t=s[c],e=t,r=t;break;case i.COLORTYPE_GRAYSCALE:t=s[c],e=t,r=t;break;default:throw new Error(\"input color type:\"+a.inputColorType+\" is not supported at present\")}return a.inputHasAlpha&&(o||(n/=h,t=Math.min(Math.max(Math.round((1-n)*p.red+n*t),0),h),e=Math.min(Math.max(Math.round((1-n)*p.green+n*e),0),h),r=Math.min(Math.max(Math.round((1-n)*p.blue+n*r),0),h))),{red:t,green:e,blue:r,alpha:n}}void 0===p.red&&(p.red=h),void 0===p.green&&(p.green=h),void 0===p.blue&&(p.blue=h);for(let t=0;t<n;t++)for(let t=0;t<e;t++){let t=m();switch(a.colorType){case i.COLORTYPE_COLOR_ALPHA:case i.COLORTYPE_COLOR:8===a.bitDepth?(u[d]=t.red,u[d+1]=t.green,u[d+2]=t.blue,o&&(u[d+3]=t.alpha)):(u.writeUInt16BE(t.red,d),u.writeUInt16BE(t.green,d+2),u.writeUInt16BE(t.blue,d+4),o&&u.writeUInt16BE(t.alpha,d+6));break;case i.COLORTYPE_ALPHA:case i.COLORTYPE_GRAYSCALE:{let e=(t.red+t.green+t.blue)/3;8===a.bitDepth?(u[d]=e,o&&(u[d+1]=t.alpha)):(u.writeUInt16BE(e,d),o&&u.writeUInt16BE(t.alpha,d+2));break}default:throw new Error(\"unrecognised color Type \"+a.colorType)}c+=l,d+=f}return u}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./constants\":4,buffer:33}],3:[function(t,e,r){(function(r,i){(function(){\"use strict\";let n=t(\"util\"),a=t(\"stream\"),o=e.exports=function(){a.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding=\"utf8\",this.writable=!0};n.inherits(o,a),o.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e}),r.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit(\"drain\"))}.bind(this))},o.prototype.write=function(t,e){if(!this.writable)return this.emit(\"error\",new Error(\"Stream not writable\")),!1;let r;return r=i.isBuffer(t)?t:i.from(t,e||this._encoding),this._buffers.push(r),this._buffered+=r.length,this._process(),this._reads&&0===this._reads.length&&(this._paused=!0),this.writable&&!this._paused},o.prototype.end=function(t,e){t&&this.write(t,e),this.writable=!1,this._buffers&&(0===this._buffers.length?this._end():(this._buffers.push(null),this._process()))},o.prototype.destroySoon=o.prototype.end,o.prototype._end=function(){this._reads.length>0&&this.emit(\"error\",new Error(\"Unexpected end of input\")),this.destroy()},o.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit(\"close\"))},o.prototype._processReadAllowingLess=function(t){this._reads.shift();let e=this._buffers[0];e.length>t.length?(this._buffered-=t.length,this._buffers[0]=e.slice(t.length),t.func.call(this,e.slice(0,t.length))):(this._buffered-=e.length,this._buffers.shift(),t.func.call(this,e))},o.prototype._processRead=function(t){this._reads.shift();let e=0,r=0,n=i.alloc(t.length);for(;e<t.length;){let i=this._buffers[r++],a=Math.min(i.length,t.length-e);i.copy(n,e,0,a),e+=a,a!==i.length&&(this._buffers[--r]=i.slice(a))}r>0&&this._buffers.splice(0,r),this._buffered-=t.length,t.func.call(this,n)},o.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let t=this._reads[0];if(t.allowLess)this._processReadAllowingLess(t);else{if(!(this._buffered>=t.length))break;this._processRead(t)}}this._buffers&&!this.writable&&this._end()}catch(t){this.emit(\"error\",t)}}}).call(this)}).call(this,t(\"_process\"),t(\"buffer\").Buffer)},{_process:60,buffer:33,stream:61,util:81}],4:[function(t,e,r){\"use strict\";e.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}},{}],5:[function(t,e,r){\"use strict\";let i=[];!function(){for(let t=0;t<256;t++){let e=t;for(let t=0;t<8;t++)1&e?e=3988292384^e>>>1:e>>>=1;i[t]=e}}();let n=e.exports=function(){this._crc=-1};n.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=i[255&(this._crc^t[e])]^this._crc>>>8;return!0},n.prototype.crc32=function(){return-1^this._crc},n.crc32=function(t){let e=-1;for(let r=0;r<t.length;r++)e=i[255&(e^t[r])]^e>>>8;return-1^e}},{}],6:[function(t,e,r){(function(r){(function(){\"use strict\";let i=t(\"./paeth-predictor\");let n={0:function(t,e,r,i,n){for(let a=0;a<r;a++)i[n+a]=t[e+a]},1:function(t,e,r,i,n,a){for(let o=0;o<r;o++){let r=o>=a?t[e+o-a]:0,s=t[e+o]-r;i[n+o]=s}},2:function(t,e,r,i,n){for(let a=0;a<r;a++){let o=e>0?t[e+a-r]:0,s=t[e+a]-o;i[n+a]=s}},3:function(t,e,r,i,n,a){for(let o=0;o<r;o++){let s=o>=a?t[e+o-a]:0,h=e>0?t[e+o-r]:0,l=t[e+o]-(s+h>>1);i[n+o]=l}},4:function(t,e,r,n,a,o){for(let s=0;s<r;s++){let h=s>=o?t[e+s-o]:0,l=e>0?t[e+s-r]:0,f=e>0&&s>=o?t[e+s-(r+o)]:0,u=t[e+s]-i(h,l,f);n[a+s]=u}}},a={0:function(t,e,r){let i=0,n=e+r;for(let r=e;r<n;r++)i+=Math.abs(t[r]);return i},1:function(t,e,r,i){let n=0;for(let a=0;a<r;a++){let r=a>=i?t[e+a-i]:0,o=t[e+a]-r;n+=Math.abs(o)}return n},2:function(t,e,r){let i=0,n=e+r;for(let a=e;a<n;a++){let n=e>0?t[a-r]:0,o=t[a]-n;i+=Math.abs(o)}return i},3:function(t,e,r,i){let n=0;for(let a=0;a<r;a++){let o=a>=i?t[e+a-i]:0,s=e>0?t[e+a-r]:0,h=t[e+a]-(o+s>>1);n+=Math.abs(h)}return n},4:function(t,e,r,n){let a=0;for(let o=0;o<r;o++){let s=o>=n?t[e+o-n]:0,h=e>0?t[e+o-r]:0,l=e>0&&o>=n?t[e+o-(r+n)]:0,f=t[e+o]-i(s,h,l);a+=Math.abs(f)}return a}};e.exports=function(t,e,i,o,s){let h;if(\"filterType\"in o&&-1!==o.filterType){if(\"number\"!=typeof o.filterType)throw new Error(\"unrecognised filter types\");h=[o.filterType]}else h=[0,1,2,3,4];16===o.bitDepth&&(s*=2);let l=e*s,f=0,u=0,c=r.alloc((l+1)*i),d=h[0];for(let e=0;e<i;e++){if(h.length>1){let e=1/0;for(let r=0;r<h.length;r++){let i=a[h[r]](t,u,l,s);i<e&&(d=h[r],e=i)}}c[f]=d,f++,n[d](t,u,l,c,f,s),f+=l,u+=l}return c}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./paeth-predictor\":15,buffer:33}],7:[function(t,e,r){(function(r){(function(){\"use strict\";let i=t(\"util\"),n=t(\"./chunkstream\"),a=t(\"./filter-parse\"),o=e.exports=function(t){n.call(this);let e=[],i=this;this._filter=new a(t,{read:this.read.bind(this),write:function(t){e.push(t)},complete:function(){i.emit(\"complete\",r.concat(e))}}),this._filter.start()};i.inherits(o,n)}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./chunkstream\":3,\"./filter-parse\":9,buffer:33,util:81}],8:[function(t,e,r){(function(e){(function(){\"use strict\";let i=t(\"./sync-reader\"),n=t(\"./filter-parse\");r.process=function(t,r){let a=[],o=new i(t);return new n(r,{read:o.read.bind(o),write:function(t){a.push(t)},complete:function(){}}).start(),o.process(),e.concat(a)}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./filter-parse\":9,\"./sync-reader\":22,buffer:33}],9:[function(t,e,r){(function(r){(function(){\"use strict\";let i=t(\"./interlace\"),n=t(\"./paeth-predictor\");function a(t,e,r){let i=t*e;return 8!==r&&(i=Math.ceil(i/(8/r))),i}let o=e.exports=function(t,e){let r=t.width,n=t.height,o=t.interlace,s=t.bpp,h=t.depth;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],o){let t=i.getImagePasses(r,n);for(let e=0;e<t.length;e++)this._images.push({byteWidth:a(t[e].width,s,h),height:t[e].height,lineIndex:0})}else this._images.push({byteWidth:a(r,s,h),height:n,lineIndex:0});this._xComparison=8===h?s:16===h?2*s:1};o.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))},o.prototype._unFilterType1=function(t,e,r){let i=this._xComparison,n=i-1;for(let a=0;a<r;a++){let r=t[1+a],o=a>n?e[a-i]:0;e[a]=r+o}},o.prototype._unFilterType2=function(t,e,r){let i=this._lastLine;for(let n=0;n<r;n++){let r=t[1+n],a=i?i[n]:0;e[n]=r+a}},o.prototype._unFilterType3=function(t,e,r){let i=this._xComparison,n=i-1,a=this._lastLine;for(let o=0;o<r;o++){let r=t[1+o],s=a?a[o]:0,h=o>n?e[o-i]:0,l=Math.floor((h+s)/2);e[o]=r+l}},o.prototype._unFilterType4=function(t,e,r){let i=this._xComparison,a=i-1,o=this._lastLine;for(let s=0;s<r;s++){let r=t[1+s],h=o?o[s]:0,l=s>a?e[s-i]:0,f=s>a&&o?o[s-i]:0,u=n(l,h,f);e[s]=r+u}},o.prototype._reverseFilterLine=function(t){let e,i=t[0],n=this._images[this._imageIndex],a=n.byteWidth;if(0===i)e=t.slice(1,a+1);else switch(e=r.alloc(a),i){case 1:this._unFilterType1(t,e,a);break;case 2:this._unFilterType2(t,e,a);break;case 3:this._unFilterType3(t,e,a);break;case 4:this._unFilterType4(t,e,a);break;default:throw new Error(\"Unrecognised filter type - \"+i)}this.write(e),n.lineIndex++,n.lineIndex>=n.height?(this._lastLine=null,this._imageIndex++,n=this._images[this._imageIndex]):this._lastLine=e,n?this.read(n.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./interlace\":11,\"./paeth-predictor\":15,buffer:33}],10:[function(t,e,r){(function(t){(function(){\"use strict\";e.exports=function(e,r,i=!1){let n=r.depth,a=r.width,o=r.height,s=r.colorType,h=r.transColor,l=r.palette,f=e;return 3===s?function(t,e,r,i,n){let a=0;for(let o=0;o<i;o++)for(let i=0;i<r;i++){let r=n[t[a]];if(!r)throw new Error(\"index \"+t[a]+\" not in palette\");for(let t=0;t<4;t++)e[a+t]=r[t];a+=4}}(e,f,a,o,l):(h&&function(t,e,r,i,n){let a=0;for(let o=0;o<i;o++)for(let i=0;i<r;i++){let r=!1;if(1===n.length?n[0]===t[a]&&(r=!0):n[0]===t[a]&&n[1]===t[a+1]&&n[2]===t[a+2]&&(r=!0),r)for(let t=0;t<4;t++)e[a+t]=0;a+=4}}(e,f,a,o,h),8===n||i||(16===n&&(f=t.alloc(a*o*4)),function(t,e,r,i,n){let a=Math.pow(2,n)-1,o=0;for(let n=0;n<i;n++)for(let i=0;i<r;i++){for(let r=0;r<4;r++)e[o+r]=Math.floor(255*t[o+r]/a+.5);o+=4}}(e,f,a,o,n))),f}}).call(this)}).call(this,t(\"buffer\").Buffer)},{buffer:33}],11:[function(t,e,r){\"use strict\";let i=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];r.getImagePasses=function(t,e){let r=[],n=t%8,a=e%8,o=(t-n)/8,s=(e-a)/8;for(let t=0;t<i.length;t++){let e=i[t],h=o*e.x.length,l=s*e.y.length;for(let t=0;t<e.x.length&&e.x[t]<n;t++)h++;for(let t=0;t<e.y.length&&e.y[t]<a;t++)l++;h>0&&l>0&&r.push({width:h,height:l,index:t})}return r},r.getInterlaceIterator=function(t){return function(e,r,n){let a=e%i[n].x.length,o=(e-a)/i[n].x.length*8+i[n].x[a],s=r%i[n].y.length;return 4*o+((r-s)/i[n].y.length*8+i[n].y[s])*t*4}}},{}],12:[function(t,e,r){(function(r){(function(){\"use strict\";let i=t(\"util\"),n=t(\"stream\"),a=t(\"./constants\"),o=t(\"./packer\"),s=e.exports=function(t){n.call(this);let e=t||{};this._packer=new o(e),this._deflate=this._packer.createDeflate(),this.readable=!0};i.inherits(s,n),s.prototype.pack=function(t,e,i,n){this.emit(\"data\",r.from(a.PNG_SIGNATURE)),this.emit(\"data\",this._packer.packIHDR(e,i)),n&&this.emit(\"data\",this._packer.packGAMA(n));let o=this._packer.filterData(t,e,i);this._deflate.on(\"error\",this.emit.bind(this,\"error\")),this._deflate.on(\"data\",function(t){this.emit(\"data\",this._packer.packIDAT(t))}.bind(this)),this._deflate.on(\"end\",function(){this.emit(\"data\",this._packer.packIEND()),this.emit(\"end\")}.bind(this)),this._deflate.end(o)}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./constants\":4,\"./packer\":14,buffer:33,stream:61,util:81}],13:[function(t,e,r){(function(r){(function(){\"use strict\";let i=!0,n=t(\"zlib\");n.deflateSync||(i=!1);let a=t(\"./constants\"),o=t(\"./packer\");e.exports=function(t,e){if(!i)throw new Error(\"To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0\");let s=new o(e||{}),h=[];h.push(r.from(a.PNG_SIGNATURE)),h.push(s.packIHDR(t.width,t.height)),t.gamma&&h.push(s.packGAMA(t.gamma));let l=s.filterData(t.data,t.width,t.height),f=n.deflateSync(l,s.getDeflateOptions());if(l=null,!f||!f.length)throw new Error(\"bad png - invalid compressed data response\");return h.push(s.packIDAT(f)),h.push(s.packIEND()),r.concat(h)}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./constants\":4,\"./packer\":14,buffer:33,zlib:32}],14:[function(t,e,r){(function(r){(function(){\"use strict\";let i=t(\"./constants\"),n=t(\"./crc\"),a=t(\"./bitpacker\"),o=t(\"./filter-pack\"),s=t(\"zlib\"),h=e.exports=function(t){if(this._options=t,t.deflateChunkSize=t.deflateChunkSize||32768,t.deflateLevel=null!=t.deflateLevel?t.deflateLevel:9,t.deflateStrategy=null!=t.deflateStrategy?t.deflateStrategy:3,t.inputHasAlpha=null==t.inputHasAlpha||t.inputHasAlpha,t.deflateFactory=t.deflateFactory||s.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=\"number\"==typeof t.colorType?t.colorType:i.COLORTYPE_COLOR_ALPHA,t.inputColorType=\"number\"==typeof t.inputColorType?t.inputColorType:i.COLORTYPE_COLOR_ALPHA,-1===[i.COLORTYPE_GRAYSCALE,i.COLORTYPE_COLOR,i.COLORTYPE_COLOR_ALPHA,i.COLORTYPE_ALPHA].indexOf(t.colorType))throw new Error(\"option color type:\"+t.colorType+\" is not supported at present\");if(-1===[i.COLORTYPE_GRAYSCALE,i.COLORTYPE_COLOR,i.COLORTYPE_COLOR_ALPHA,i.COLORTYPE_ALPHA].indexOf(t.inputColorType))throw new Error(\"option input color type:\"+t.inputColorType+\" is not supported at present\");if(8!==t.bitDepth&&16!==t.bitDepth)throw new Error(\"option bit depth:\"+t.bitDepth+\" is not supported at present\")};h.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}},h.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())},h.prototype.filterData=function(t,e,r){let n=a(t,e,r,this._options),s=i.COLORTYPE_TO_BPP_MAP[this._options.colorType];return o(n,e,r,this._options,s)},h.prototype._packChunk=function(t,e){let i=e?e.length:0,a=r.alloc(i+12);return a.writeUInt32BE(i,0),a.writeUInt32BE(t,4),e&&e.copy(a,8),a.writeInt32BE(n.crc32(a.slice(4,a.length-4)),a.length-4),a},h.prototype.packGAMA=function(t){let e=r.alloc(4);return e.writeUInt32BE(Math.floor(t*i.GAMMA_DIVISION),0),this._packChunk(i.TYPE_gAMA,e)},h.prototype.packIHDR=function(t,e){let n=r.alloc(13);return n.writeUInt32BE(t,0),n.writeUInt32BE(e,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(i.TYPE_IHDR,n)},h.prototype.packIDAT=function(t){return this._packChunk(i.TYPE_IDAT,t)},h.prototype.packIEND=function(){return this._packChunk(i.TYPE_IEND,null)}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./bitpacker\":2,\"./constants\":4,\"./crc\":5,\"./filter-pack\":6,buffer:33,zlib:32}],15:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){let i=t+e-r,n=Math.abs(i-t),a=Math.abs(i-e),o=Math.abs(i-r);return n<=a&&n<=o?t:a<=o?e:r}},{}],16:[function(t,e,r){\"use strict\";let i=t(\"util\"),n=t(\"zlib\"),a=t(\"./chunkstream\"),o=t(\"./filter-parse-async\"),s=t(\"./parser\"),h=t(\"./bitmapper\"),l=t(\"./format-normaliser\"),f=e.exports=function(t){a.call(this),this._parser=new s(t,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,\"gamma\"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=t,this.writable=!0,this._parser.start()};i.inherits(f,a),f.prototype._handleError=function(t){this.emit(\"error\",t),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on(\"error\",(function(){}))),this.errord=!0},f.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=n.createInflate(),this._inflate.on(\"error\",this.emit.bind(this,\"error\")),this._filter.on(\"complete\",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let t=(1+(this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3))*this._bitmapInfo.height,e=Math.max(t,n.Z_MIN_CHUNK);this._inflate=n.createInflate({chunkSize:e});let r=t,i=this.emit.bind(this,\"error\");this._inflate.on(\"error\",(function(t){r&&i(t)})),this._filter.on(\"complete\",this._complete.bind(this));let a=this._filter.write.bind(this._filter);this._inflate.on(\"data\",(function(t){r&&(t.length>r&&(t=t.slice(0,r)),r-=t.length,a(t))})),this._inflate.on(\"end\",this._filter.end.bind(this._filter))}this._inflate.write(t)},f.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new o(this._bitmapInfo)},f.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t},f.prototype._handlePalette=function(t){this._bitmapInfo.palette=t},f.prototype._simpleTransparency=function(){this._metaData.alpha=!0},f.prototype._headersFinished=function(){this.emit(\"metadata\",this._metaData)},f.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit(\"error\",\"No Inflate block\"))},f.prototype._complete=function(t){if(this.errord)return;let e;try{let r=h.dataToBitMap(t,this._bitmapInfo);e=l(r,this._bitmapInfo,this._options.skipRescale),r=null}catch(t){return void this._handleError(t)}this.emit(\"parsed\",e)}},{\"./bitmapper\":1,\"./chunkstream\":3,\"./filter-parse-async\":7,\"./format-normaliser\":10,\"./parser\":18,util:81,zlib:32}],17:[function(t,e,r){(function(r){(function(){\"use strict\";let i=!0,n=t(\"zlib\"),a=t(\"./sync-inflate\");n.deflateSync||(i=!1);let o=t(\"./sync-reader\"),s=t(\"./filter-parse-sync\"),h=t(\"./parser\"),l=t(\"./bitmapper\"),f=t(\"./format-normaliser\");e.exports=function(t,e){if(!i)throw new Error(\"To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0\");let u,c,d;let p=[];let m=new o(t);if(new h(e,{read:m.read.bind(m),error:function(t){u=t},metadata:function(t){c=t},gamma:function(t){d=t},palette:function(t){c.palette=t},transColor:function(t){c.transColor=t},inflateData:function(t){p.push(t)},simpleTransparency:function(){c.alpha=!0}}).start(),m.process(),u)throw u;let g,b=r.concat(p);if(p.length=0,c.interlace)g=n.inflateSync(b);else{let t=(1+(c.width*c.bpp*c.depth+7>>3))*c.height;g=a(b,{chunkSize:t,maxLength:t})}if(b=null,!g||!g.length)throw new Error(\"bad png - invalid inflate data response\");let _=s.process(g,c);b=null;let y=l.dataToBitMap(_,c);_=null;let w=f(y,c,e.skipRescale);return c.data=w,c.gamma=d||0,c}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./bitmapper\":1,\"./filter-parse-sync\":8,\"./format-normaliser\":10,\"./parser\":18,\"./sync-inflate\":21,\"./sync-reader\":22,buffer:33,zlib:32}],18:[function(t,e,r){(function(r){(function(){\"use strict\";let i=t(\"./constants\"),n=t(\"./crc\"),a=e.exports=function(t,e){this._options=t,t.checkCRC=!1!==t.checkCRC,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[i.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[i.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[i.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[i.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[i.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[i.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};a.prototype.start=function(){this.read(i.PNG_SIGNATURE.length,this._parseSignature.bind(this))},a.prototype._parseSignature=function(t){let e=i.PNG_SIGNATURE;for(let r=0;r<e.length;r++)if(t[r]!==e[r])return void this.error(new Error(\"Invalid file signature\"));this.read(8,this._parseChunkBegin.bind(this))},a.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),a=t.readUInt32BE(4),o=\"\";for(let e=4;e<8;e++)o+=String.fromCharCode(t[e]);let s=Boolean(32&t[4]);if(this._hasIHDR||a===i.TYPE_IHDR){if(this._crc=new n,this._crc.write(r.from(o)),this._chunks[a])return this._chunks[a](e);s?this.read(e+4,this._skipChunk.bind(this)):this.error(new Error(\"Unsupported critical chunk type \"+o))}else this.error(new Error(\"Expected IHDR on beggining\"))},a.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))},a.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))},a.prototype._parseChunkEnd=function(t){let e=t.readInt32BE(0),r=this._crc.crc32();this._options.checkCRC&&r!==e?this.error(new Error(\"Crc error - \"+e+\" - \"+r)):this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))},a.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))},a.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),r=t.readUInt32BE(4),n=t[8],a=t[9],o=t[10],s=t[11],h=t[12];if(8!==n&&4!==n&&2!==n&&1!==n&&16!==n)return void this.error(new Error(\"Unsupported bit depth \"+n));if(!(a in i.COLORTYPE_TO_BPP_MAP))return void this.error(new Error(\"Unsupported color type\"));if(0!==o)return void this.error(new Error(\"Unsupported compression method\"));if(0!==s)return void this.error(new Error(\"Unsupported filter method\"));if(0!==h&&1!==h)return void this.error(new Error(\"Unsupported interlace method\"));this._colorType=a;let l=i.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:r,depth:n,interlace:Boolean(h),palette:Boolean(a&i.COLORTYPE_PALETTE),color:Boolean(a&i.COLORTYPE_COLOR),alpha:Boolean(a&i.COLORTYPE_ALPHA),bpp:l,colorType:a}),this._handleChunkEnd()},a.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))},a.prototype._parsePLTE=function(t){this._crc.write(t);let e=Math.floor(t.length/3);for(let r=0;r<e;r++)this._palette.push([t[3*r],t[3*r+1],t[3*r+2],255]);this.palette(this._palette),this._handleChunkEnd()},a.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))},a.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===i.COLORTYPE_PALETTE_COLOR){if(0===this._palette.length)return void this.error(new Error(\"Transparency chunk must be after palette\"));if(t.length>this._palette.length)return void this.error(new Error(\"More transparent colors than palette size\"));for(let e=0;e<t.length;e++)this._palette[e][3]=t[e];this.palette(this._palette)}this._colorType===i.COLORTYPE_GRAYSCALE&&this.transColor([t.readUInt16BE(0)]),this._colorType===i.COLORTYPE_COLOR&&this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]),this._handleChunkEnd()},a.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))},a.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/i.GAMMA_DIVISION),this._handleChunkEnd()},a.prototype._handleIDAT=function(t){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-t,this._parseIDAT.bind(this,t))},a.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===i.COLORTYPE_PALETTE_COLOR&&0===this._palette.length)throw new Error(\"Expected palette not found\");this.inflateData(e);let r=t-e.length;r>0?this._handleIDAT(r):this._handleChunkEnd()},a.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))},a.prototype._parseIEND=function(t){this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"./constants\":4,\"./crc\":5,buffer:33}],19:[function(t,e,r){\"use strict\";let i=t(\"./parser-sync\"),n=t(\"./packer-sync\");r.read=function(t,e){return i(t,e||{})},r.write=function(t,e){return n(t,e)}},{\"./packer-sync\":13,\"./parser-sync\":17}],20:[function(t,e,r){(function(e,i){(function(){\"use strict\";let n=t(\"util\"),a=t(\"stream\"),o=t(\"./parser-async\"),s=t(\"./packer-async\"),h=t(\"./png-sync\"),l=r.PNG=function(t){a.call(this),t=t||{},this.width=0|t.width,this.height=0|t.height,this.data=this.width>0&&this.height>0?i.alloc(4*this.width*this.height):null,t.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new o(t),this._parser.on(\"error\",this.emit.bind(this,\"error\")),this._parser.on(\"close\",this._handleClose.bind(this)),this._parser.on(\"metadata\",this._metadata.bind(this)),this._parser.on(\"gamma\",this._gamma.bind(this)),this._parser.on(\"parsed\",function(t){this.data=t,this.emit(\"parsed\",t)}.bind(this)),this._packer=new s(t),this._packer.on(\"data\",this.emit.bind(this,\"data\")),this._packer.on(\"end\",this.emit.bind(this,\"end\")),this._parser.on(\"close\",this._handleClose.bind(this)),this._packer.on(\"error\",this.emit.bind(this,\"error\"))};n.inherits(l,a),l.sync=h,l.prototype.pack=function(){return this.data&&this.data.length?(e.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this):(this.emit(\"error\",\"No data provided\"),this)},l.prototype.parse=function(t,e){if(e){let t,r;t=function(t){this.removeListener(\"error\",r),this.data=t,e(null,this)}.bind(this),r=function(r){this.removeListener(\"parsed\",t),e(r,null)}.bind(this),this.once(\"parsed\",t),this.once(\"error\",r)}return this.end(t),this},l.prototype.write=function(t){return this._parser.write(t),!0},l.prototype.end=function(t){this._parser.end(t)},l.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit(\"metadata\",t)},l.prototype._gamma=function(t){this.gamma=t},l.prototype._handleClose=function(){this._parser.writable||this._packer.readable||this.emit(\"close\")},l.bitblt=function(t,e,r,i,n,a,o,s){if(i|=0,n|=0,a|=0,o|=0,s|=0,(r|=0)>t.width||i>t.height||r+n>t.width||i+a>t.height)throw new Error(\"bitblt reading outside image\");if(o>e.width||s>e.height||o+n>e.width||s+a>e.height)throw new Error(\"bitblt writing outside image\");for(let h=0;h<a;h++)t.data.copy(e.data,(s+h)*e.width+o<<2,(i+h)*t.width+r<<2,(i+h)*t.width+r+n<<2)},l.prototype.bitblt=function(t,e,r,i,n,a,o){return l.bitblt(this,t,e,r,i,n,a,o),this},l.adjustGamma=function(t){if(t.gamma){for(let e=0;e<t.height;e++)for(let r=0;r<t.width;r++){let i=t.width*e+r<<2;for(let e=0;e<3;e++){let r=t.data[i+e]/255;r=Math.pow(r,1/2.2/t.gamma),t.data[i+e]=Math.round(255*r)}}t.gamma=0}},l.prototype.adjustGamma=function(){l.adjustGamma(this)}}).call(this)}).call(this,t(\"_process\"),t(\"buffer\").Buffer)},{\"./packer-async\":12,\"./parser-async\":16,\"./png-sync\":19,_process:60,buffer:33,stream:61,util:81}],21:[function(t,e,r){(function(i,n){(function(){\"use strict\";let a=t(\"assert\").ok,o=t(\"zlib\"),s=t(\"util\"),h=t(\"buffer\").kMaxLength;function l(t){if(!(this instanceof l))return new l(t);t&&t.chunkSize<o.Z_MIN_CHUNK&&(t.chunkSize=o.Z_MIN_CHUNK),o.Inflate.call(this,t),this._offset=void 0===this._offset?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,t&&null!=t.maxLength&&(this._maxLength=t.maxLength)}function f(t,e){e&&i.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}function u(t,e){return function(t,e){if(\"string\"==typeof e&&(e=n.from(e)),!(e instanceof n))throw new TypeError(\"Not a string or buffer\");let r=t._finishFlushFlag;return null==r&&(r=o.Z_FINISH),t._processChunk(e,r)}(new l(e),t)}l.prototype._processChunk=function(t,e,r){if(\"function\"==typeof r)return o.Inflate._processChunk.call(this,t,e,r);let i,s,l=this,u=t&&t.length,c=this._chunkSize-this._offset,d=this._maxLength,p=0,m=[],g=0;function b(t,e){if(l._hadError)return;let r=c-e;if(a(r>=0,\"have should not go down\"),r>0){let t=l._buffer.slice(l._offset,l._offset+r);if(l._offset+=r,t.length>d&&(t=t.slice(0,d)),m.push(t),g+=t.length,d-=t.length,0===d)return!1}return(0===e||l._offset>=l._chunkSize)&&(c=l._chunkSize,l._offset=0,l._buffer=n.allocUnsafe(l._chunkSize)),0===e&&(p+=u-t,u=t,!0)}this.on(\"error\",(function(t){i=t})),a(this._handle,\"zlib binding closed\");do{s=this._handle.writeSync(e,t,p,u,this._buffer,this._offset,c),s=s||this._writeState}while(!this._hadError&&b(s[0],s[1]));if(this._hadError)throw i;if(g>=h)throw f(this),new RangeError(\"Cannot create final Buffer. It would be larger than 0x\"+h.toString(16)+\" bytes\");let _=n.concat(m,g);return f(this),_},s.inherits(l,o.Inflate),e.exports=r=u,r.Inflate=l,r.createInflate=function(t){return new l(t)},r.inflateSync=u}).call(this)}).call(this,t(\"_process\"),t(\"buffer\").Buffer)},{_process:60,assert:23,buffer:33,util:81,zlib:32}],22:[function(t,e,r){\"use strict\";let i=e.exports=function(t){this._buffer=t,this._reads=[]};i.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})},i.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let t=this._reads[0];if(!this._buffer.length||!(this._buffer.length>=t.length||t.allowLess))break;{this._reads.shift();let e=this._buffer;this._buffer=e.slice(t.length),t.func.call(this,e.slice(0,t.length))}}if(this._reads.length>0)throw new Error(\"There are some read requests waitng on finished stream\");if(this._buffer.length>0)throw new Error(\"unrecognised content at end of stream\")}},{}],23:[function(t,e,i){(function(r){(function(){\"use strict\";function i(t,e){if(t===e)return 0;for(var r=t.length,i=e.length,n=0,a=Math.min(r,i);n<a;++n)if(t[n]!==e[n]){r=t[n],i=e[n];break}return r<i?-1:i<r?1:0}function n(t){return r.Buffer&&\"function\"==typeof r.Buffer.isBuffer?r.Buffer.isBuffer(t):!(null==t||!t._isBuffer)}var a=t(\"util/\"),o=Object.prototype.hasOwnProperty,s=Array.prototype.slice,h=\"foo\"===function(){}.name;function l(t){return Object.prototype.toString.call(t)}function f(t){return!n(t)&&\"function\"==typeof r.ArrayBuffer&&(\"function\"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):!!t&&(t instanceof DataView||!!(t.buffer&&t.buffer instanceof ArrayBuffer)))}var u=e.exports=b,c=/\\s*function\\s+([^\\(\\s]*)\\s*/;function d(t){if(a.isFunction(t)){if(h)return t.name;var e=t.toString().match(c);return e&&e[1]}}function p(t,e){return\"string\"==typeof t?t.length<e?t:t.slice(0,e):t}function m(t){if(h||!a.isFunction(t))return a.inspect(t);var e=d(t);return\"[Function\"+(e?\": \"+e:\"\")+\"]\"}function g(t,e,r,i,n){throw new u.AssertionError({message:r,actual:t,expected:e,operator:i,stackStartFunction:n})}function b(t,e){t||g(t,!0,e,\"==\",u.ok)}function _(t,e,r,o){if(t===e)return!0;if(n(t)&&n(e))return 0===i(t,e);if(a.isDate(t)&&a.isDate(e))return t.getTime()===e.getTime();if(a.isRegExp(t)&&a.isRegExp(e))return t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase;if(null!==t&&\"object\"==typeof t||null!==e&&\"object\"==typeof e){if(f(t)&&f(e)&&l(t)===l(e)&&!(t instanceof Float32Array||t instanceof Float64Array))return 0===i(new Uint8Array(t.buffer),new Uint8Array(e.buffer));if(n(t)!==n(e))return!1;var h=(o=o||{actual:[],expected:[]}).actual.indexOf(t);return-1!==h&&h===o.expected.indexOf(e)||(o.actual.push(t),o.expected.push(e),function(t,e,r,i){if(null==t||null==e)return!1;if(a.isPrimitive(t)||a.isPrimitive(e))return t===e;if(r&&Object.getPrototypeOf(t)!==Object.getPrototypeOf(e))return!1;var n=y(t),o=y(e);if(n&&!o||!n&&o)return!1;if(n)return _(t=s.call(t),e=s.call(e),r);var h,l,f=x(t),u=x(e);if(f.length!==u.length)return!1;for(f.sort(),u.sort(),l=f.length-1;l>=0;l--)if(f[l]!==u[l])return!1;for(l=f.length-1;l>=0;l--)if(!_(t[h=f[l]],e[h],r,i))return!1;return!0}(t,e,r,o))}return r?t===e:t==e}function y(t){return\"[object Arguments]\"==Object.prototype.toString.call(t)}function w(t,e){if(!t||!e)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function v(t,e,r,i){var n;if(\"function\"!=typeof e)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(i=r,r=null),n=function(t){var e;try{t()}catch(t){e=t}return e}(e),i=(r&&r.name?\" (\"+r.name+\").\":\".\")+(i?\" \"+i:\".\"),t&&!n&&g(n,r,\"Missing expected exception\"+i);var o=\"string\"==typeof i,s=!t&&n&&!r;if((!t&&a.isError(n)&&o&&w(n,r)||s)&&g(n,r,\"Got unwanted exception\"+i),t&&n&&r&&!w(n,r)||!t&&n)throw n}u.AssertionError=function(t){this.name=\"AssertionError\",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=function(t){return p(m(t.actual),128)+\" \"+t.operator+\" \"+p(m(t.expected),128)}(this),this.generatedMessage=!0);var e=t.stackStartFunction||g;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var i=r.stack,n=d(e),a=i.indexOf(\"\\n\"+n);if(a>=0){var o=i.indexOf(\"\\n\",a+1);i=i.substring(o+1)}this.stack=i}}},a.inherits(u.AssertionError,Error),u.fail=g,u.ok=b,u.equal=function(t,e,r){t!=e&&g(t,e,r,\"==\",u.equal)},u.notEqual=function(t,e,r){t==e&&g(t,e,r,\"!=\",u.notEqual)},u.deepEqual=function(t,e,r){_(t,e,!1)||g(t,e,r,\"deepEqual\",u.deepEqual)},u.deepStrictEqual=function(t,e,r){_(t,e,!0)||g(t,e,r,\"deepStrictEqual\",u.deepStrictEqual)},u.notDeepEqual=function(t,e,r){_(t,e,!1)&&g(t,e,r,\"notDeepEqual\",u.notDeepEqual)},u.notDeepStrictEqual=function t(e,r,i){_(e,r,!0)&&g(e,r,i,\"notDeepStrictEqual\",t)},u.strictEqual=function(t,e,r){t!==e&&g(t,e,r,\"===\",u.strictEqual)},u.notStrictEqual=function(t,e,r){t===e&&g(t,e,r,\"!==\",u.notStrictEqual)},u.throws=function(t,e,r){v(!0,t,e,r)},u.doesNotThrow=function(t,e,r){v(!1,t,e,r)},u.ifError=function(t){if(t)throw t};var x=Object.keys||function(t){var e=[];for(var r in t)o.call(t,r)&&e.push(r);return e}}).call(this)}).call(this,void 0!==r.g?r.g:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"util/\":26}],24:[function(t,e,r){\"function\"==typeof Object.create?e.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],25:[function(t,e,r){e.exports=function(t){return t&&\"object\"==typeof t&&\"function\"==typeof t.copy&&\"function\"==typeof t.fill&&\"function\"==typeof t.readUInt8}},{}],26:[function(t,e,i){(function(e,r){(function(){var n=/%[sdj%]/g;i.format=function(t){if(!b(t)){for(var e=[],r=0;r<arguments.length;r++)e.push(s(arguments[r]));return e.join(\" \")}r=1;for(var i=arguments,a=i.length,o=String(t).replace(n,(function(t){if(\"%%\"===t)return\"%\";if(r>=a)return t;switch(t){case\"%s\":return String(i[r++]);case\"%d\":return Number(i[r++]);case\"%j\":try{return JSON.stringify(i[r++])}catch(t){return\"[Circular]\"}default:return t}})),h=i[r];r<a;h=i[++r])m(h)||!w(h)?o+=\" \"+h:o+=\" \"+s(h);return o},i.deprecate=function(t,n){if(_(r.process))return function(){return i.deprecate(t,n).apply(this,arguments)};if(!0===e.noDeprecation)return t;var a=!1;return function(){if(!a){if(e.throwDeprecation)throw new Error(n);e.traceDeprecation?console.trace(n):console.error(n),a=!0}return t.apply(this,arguments)}};var a,o={};function s(t,e){var r={seen:[],stylize:l};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),p(e)?r.showHidden=e:e&&i._extend(r,e),_(r.showHidden)&&(r.showHidden=!1),_(r.depth)&&(r.depth=2),_(r.colors)&&(r.colors=!1),_(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=h),f(r,t,r.depth)}function h(t,e){var r=s.styles[e];return r?\"\u001b[\"+s.colors[r][0]+\"m\"+t+\"\u001b[\"+s.colors[r][1]+\"m\":t}function l(t,e){return t}function f(t,e,r){if(t.customInspect&&e&&E(e.inspect)&&e.inspect!==i.inspect&&(!e.constructor||e.constructor.prototype!==e)){var n=e.inspect(r,t);return b(n)||(n=f(t,n,r)),n}var a=function(t,e){if(_(e))return t.stylize(\"undefined\",\"undefined\");if(b(e)){var r=\"'\"+JSON.stringify(e).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return t.stylize(r,\"string\")}return g(e)?t.stylize(\"\"+e,\"number\"):p(e)?t.stylize(\"\"+e,\"boolean\"):m(e)?t.stylize(\"null\",\"null\"):void 0}(t,e);if(a)return a;var o=Object.keys(e),s=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(o);if(t.showHidden&&(o=Object.getOwnPropertyNames(e)),x(e)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return u(e);if(0===o.length){if(E(e)){var h=e.name?\": \"+e.name:\"\";return t.stylize(\"[Function\"+h+\"]\",\"special\")}if(y(e))return t.stylize(RegExp.prototype.toString.call(e),\"regexp\");if(v(e))return t.stylize(Date.prototype.toString.call(e),\"date\");if(x(e))return u(e)}var l,w=\"\",k=!1,S=[\"{\",\"}\"];return d(e)&&(k=!0,S=[\"[\",\"]\"]),E(e)&&(w=\" [Function\"+(e.name?\": \"+e.name:\"\")+\"]\"),y(e)&&(w=\" \"+RegExp.prototype.toString.call(e)),v(e)&&(w=\" \"+Date.prototype.toUTCString.call(e)),x(e)&&(w=\" \"+u(e)),0!==o.length||k&&0!=e.length?r<0?y(e)?t.stylize(RegExp.prototype.toString.call(e),\"regexp\"):t.stylize(\"[Object]\",\"special\"):(t.seen.push(e),l=k?function(t,e,r,i,n){for(var a=[],o=0,s=e.length;o<s;++o)A(e,String(o))?a.push(c(t,e,r,i,String(o),!0)):a.push(\"\");return n.forEach((function(n){n.match(/^\\d+$/)||a.push(c(t,e,r,i,n,!0))})),a}(t,e,r,s,o):o.map((function(i){return c(t,e,r,s,i,k)})),t.seen.pop(),function(t,e,r){return t.reduce((function(t,e){return e.indexOf(\"\\n\"),t+e.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1}),0)>60?r[0]+(\"\"===e?\"\":e+\"\\n \")+\" \"+t.join(\",\\n  \")+\" \"+r[1]:r[0]+e+\" \"+t.join(\", \")+\" \"+r[1]}(l,w,S)):S[0]+w+S[1]}function u(t){return\"[\"+Error.prototype.toString.call(t)+\"]\"}function c(t,e,r,i,n,a){var o,s,h;if((h=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]}).get?s=h.set?t.stylize(\"[Getter/Setter]\",\"special\"):t.stylize(\"[Getter]\",\"special\"):h.set&&(s=t.stylize(\"[Setter]\",\"special\")),A(i,n)||(o=\"[\"+n+\"]\"),s||(t.seen.indexOf(h.value)<0?(s=m(r)?f(t,h.value,null):f(t,h.value,r-1)).indexOf(\"\\n\")>-1&&(s=a?s.split(\"\\n\").map((function(t){return\"  \"+t})).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map((function(t){return\"   \"+t})).join(\"\\n\")):s=t.stylize(\"[Circular]\",\"special\")),_(o)){if(a&&n.match(/^\\d+$/))return s;(o=JSON.stringify(\"\"+n)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=t.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=t.stylize(o,\"string\"))}return o+\": \"+s}function d(t){return Array.isArray(t)}function p(t){return\"boolean\"==typeof t}function m(t){return null===t}function g(t){return\"number\"==typeof t}function b(t){return\"string\"==typeof t}function _(t){return void 0===t}function y(t){return w(t)&&\"[object RegExp]\"===k(t)}function w(t){return\"object\"==typeof t&&null!==t}function v(t){return w(t)&&\"[object Date]\"===k(t)}function x(t){return w(t)&&(\"[object Error]\"===k(t)||t instanceof Error)}function E(t){return\"function\"==typeof t}function k(t){return Object.prototype.toString.call(t)}function S(t){return t<10?\"0\"+t.toString(10):t.toString(10)}i.debuglog=function(t){if(_(a)&&(a=e.env.NODE_DEBUG||\"\"),t=t.toUpperCase(),!o[t])if(new RegExp(\"\\\\b\"+t+\"\\\\b\",\"i\").test(a)){var r=e.pid;o[t]=function(){var e=i.format.apply(i,arguments);console.error(\"%s %d: %s\",t,r,e)}}else o[t]=function(){};return o[t]},i.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},i.isArray=d,i.isBoolean=p,i.isNull=m,i.isNullOrUndefined=function(t){return null==t},i.isNumber=g,i.isString=b,i.isSymbol=function(t){return\"symbol\"==typeof t},i.isUndefined=_,i.isRegExp=y,i.isObject=w,i.isDate=v,i.isError=x,i.isFunction=E,i.isPrimitive=function(t){return null===t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||\"symbol\"==typeof t||void 0===t},i.isBuffer=t(\"./support/isBuffer\");var M=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function A(t,e){return Object.prototype.hasOwnProperty.call(t,e)}i.log=function(){var t,e;console.log(\"%s - %s\",(t=new Date,e=[S(t.getHours()),S(t.getMinutes()),S(t.getSeconds())].join(\":\"),[t.getDate(),M[t.getMonth()],e].join(\" \")),i.format.apply(i,arguments))},i.inherits=t(\"inherits\"),i._extend=function(t,e){if(!e||!w(e))return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t}}).call(this)}).call(this,t(\"_process\"),void 0!==r.g?r.g:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./support/isBuffer\":25,_process:60,inherits:24}],27:[function(t,e,i){(function(r){(function(){\"use strict\";var i=t(\"array-filter\");e.exports=function(){return i([\"BigInt64Array\",\"BigUint64Array\",\"Float32Array\",\"Float64Array\",\"Int16Array\",\"Int32Array\",\"Int8Array\",\"Uint16Array\",\"Uint32Array\",\"Uint8Array\",\"Uint8ClampedArray\"],(function(t){return\"function\"==typeof r[t]}))}}).call(this)}).call(this,void 0!==r.g?r.g:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"array-filter\":28}],28:[function(t,e,r){e.exports=function(t,e,r){if(t.filter)return t.filter(e,r);if(null==t)throw new TypeError;if(\"function\"!=typeof e)throw new TypeError;for(var n=[],a=0;a<t.length;a++)if(i.call(t,a)){var o=t[a];e.call(r,o,a,t)&&n.push(o)}return n};var i=Object.prototype.hasOwnProperty},{}],29:[function(t,e,r){\"use strict\";r.byteLength=function(t){var e=l(t),r=e[0],i=e[1];return 3*(r+i)/4-i},r.toByteArray=function(t){var e,r,i=l(t),o=i[0],s=i[1],h=new a(function(t,e,r){return 3*(e+r)/4-r}(0,o,s)),f=0,u=s>0?o-4:o;for(r=0;r<u;r+=4)e=n[t.charCodeAt(r)]<<18|n[t.charCodeAt(r+1)]<<12|n[t.charCodeAt(r+2)]<<6|n[t.charCodeAt(r+3)],h[f++]=e>>16&255,h[f++]=e>>8&255,h[f++]=255&e;return 2===s&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,h[f++]=255&e),1===s&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,h[f++]=e>>8&255,h[f++]=255&e),h},r.fromByteArray=function(t){for(var e,r=t.length,n=r%3,a=[],o=16383,s=0,h=r-n;s<h;s+=o)a.push(f(t,s,s+o>h?h:s+o));return 1===n?(e=t[r-1],a.push(i[e>>2]+i[e<<4&63]+\"==\")):2===n&&(e=(t[r-2]<<8)+t[r-1],a.push(i[e>>10]+i[e>>4&63]+i[e<<2&63]+\"=\")),a.join(\"\")};for(var i=[],n=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,h=o.length;s<h;++s)i[s]=o[s],n[o.charCodeAt(s)]=s;function l(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function f(t,e,r){for(var n,a=[],o=e;o<r;o+=3)n=(t[o]<<16&16711680)+(t[o+1]<<8&65280)+(255&t[o+2]),a.push(i[(s=n)>>18&63]+i[s>>12&63]+i[s>>6&63]+i[63&s]);var s;return a.join(\"\")}n[\"-\".charCodeAt(0)]=62,n[\"_\".charCodeAt(0)]=63},{}],30:[function(t,e,r){},{}],31:[function(t,e,r){(function(e,i){(function(){\"use strict\";var n=t(\"assert\"),a=t(\"pako/lib/zlib/zstream\"),o=t(\"pako/lib/zlib/deflate.js\"),s=t(\"pako/lib/zlib/inflate.js\"),h=t(\"pako/lib/zlib/constants\");for(var l in h)r[l]=h[l];r.NONE=0,r.DEFLATE=1,r.INFLATE=2,r.GZIP=3,r.GUNZIP=4,r.DEFLATERAW=5,r.INFLATERAW=6,r.UNZIP=7;function f(t){if(\"number\"!=typeof t||t<r.DEFLATE||t>r.UNZIP)throw new TypeError(\"Bad argument\");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=t,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}f.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,n(this.init_done,\"close before init\"),n(this.mode<=r.UNZIP),this.mode===r.DEFLATE||this.mode===r.GZIP||this.mode===r.DEFLATERAW?o.deflateEnd(this.strm):this.mode!==r.INFLATE&&this.mode!==r.GUNZIP&&this.mode!==r.INFLATERAW&&this.mode!==r.UNZIP||s.inflateEnd(this.strm),this.mode=r.NONE,this.dictionary=null)},f.prototype.write=function(t,e,r,i,n,a,o){return this._write(!0,t,e,r,i,n,a,o)},f.prototype.writeSync=function(t,e,r,i,n,a,o){return this._write(!1,t,e,r,i,n,a,o)},f.prototype._write=function(t,a,o,s,h,l,f,u){if(n.equal(arguments.length,8),n(this.init_done,\"write before init\"),n(this.mode!==r.NONE,\"already finalized\"),n.equal(!1,this.write_in_progress,\"write already in progress\"),n.equal(!1,this.pending_close,\"close is pending\"),this.write_in_progress=!0,n.equal(!1,void 0===a,\"must provide flush value\"),this.write_in_progress=!0,a!==r.Z_NO_FLUSH&&a!==r.Z_PARTIAL_FLUSH&&a!==r.Z_SYNC_FLUSH&&a!==r.Z_FULL_FLUSH&&a!==r.Z_FINISH&&a!==r.Z_BLOCK)throw new Error(\"Invalid flush value\");if(null==o&&(o=i.alloc(0),h=0,s=0),this.strm.avail_in=h,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=u,this.strm.output=l,this.strm.next_out=f,this.flush=a,!t)return this._process(),this._checkError()?this._afterSync():void 0;var c=this;return e.nextTick((function(){c._process(),c._after()})),this},f.prototype._afterSync=function(){var t=this.strm.avail_out,e=this.strm.avail_in;return this.write_in_progress=!1,[e,t]},f.prototype._process=function(){var t=null;switch(this.mode){case r.DEFLATE:case r.GZIP:case r.DEFLATERAW:this.err=o.deflate(this.strm,this.flush);break;case r.UNZIP:switch(this.strm.avail_in>0&&(t=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===t)break;if(31!==this.strm.input[t]){this.mode=r.INFLATE;break}if(this.gzip_id_bytes_read=1,t++,1===this.strm.avail_in)break;case 1:if(null===t)break;139===this.strm.input[t]?(this.gzip_id_bytes_read=2,this.mode=r.GUNZIP):this.mode=r.INFLATE;break;default:throw new Error(\"invalid number of gzip magic number bytes read\")}case r.INFLATE:case r.GUNZIP:case r.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===r.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===r.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===r.Z_DATA_ERROR&&(this.err=r.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===r.GUNZIP&&this.err===r.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error(\"Unknown mode \"+this.mode)}},f.prototype._checkError=function(){switch(this.err){case r.Z_OK:case r.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===r.Z_FINISH)return this._error(\"unexpected end of file\"),!1;break;case r.Z_STREAM_END:break;case r.Z_NEED_DICT:return null==this.dictionary?this._error(\"Missing dictionary\"):this._error(\"Bad dictionary\"),!1;default:return this._error(\"Zlib error\"),!1}return!0},f.prototype._after=function(){if(this._checkError()){var t=this.strm.avail_out,e=this.strm.avail_in;this.write_in_progress=!1,this.callback(e,t),this.pending_close&&this.close()}},f.prototype._error=function(t){this.strm.msg&&(t=this.strm.msg),this.onerror(t,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},f.prototype.init=function(t,e,i,a,o){n(4===arguments.length||5===arguments.length,\"init(windowBits, level, memLevel, strategy, [dictionary])\"),n(t>=8&&t<=15,\"invalid windowBits\"),n(e>=-1&&e<=9,\"invalid compression level\"),n(i>=1&&i<=9,\"invalid memlevel\"),n(a===r.Z_FILTERED||a===r.Z_HUFFMAN_ONLY||a===r.Z_RLE||a===r.Z_FIXED||a===r.Z_DEFAULT_STRATEGY,\"invalid strategy\"),this._init(e,t,i,a,o),this._setDictionary()},f.prototype.params=function(){throw new Error(\"deflateParams Not supported\")},f.prototype.reset=function(){this._reset(),this._setDictionary()},f.prototype._init=function(t,e,i,n,h){switch(this.level=t,this.windowBits=e,this.memLevel=i,this.strategy=n,this.flush=r.Z_NO_FLUSH,this.err=r.Z_OK,this.mode!==r.GZIP&&this.mode!==r.GUNZIP||(this.windowBits+=16),this.mode===r.UNZIP&&(this.windowBits+=32),this.mode!==r.DEFLATERAW&&this.mode!==r.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new a,this.mode){case r.DEFLATE:case r.GZIP:case r.DEFLATERAW:this.err=o.deflateInit2(this.strm,this.level,r.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case r.INFLATE:case r.GUNZIP:case r.INFLATERAW:case r.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error(\"Unknown mode \"+this.mode)}this.err!==r.Z_OK&&this._error(\"Init error\"),this.dictionary=h,this.write_in_progress=!1,this.init_done=!0},f.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=r.Z_OK,this.mode){case r.DEFLATE:case r.DEFLATERAW:this.err=o.deflateSetDictionary(this.strm,this.dictionary)}this.err!==r.Z_OK&&this._error(\"Failed to set dictionary\")}},f.prototype._reset=function(){switch(this.err=r.Z_OK,this.mode){case r.DEFLATE:case r.DEFLATERAW:case r.GZIP:this.err=o.deflateReset(this.strm);break;case r.INFLATE:case r.INFLATERAW:case r.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==r.Z_OK&&this._error(\"Failed to reset stream\")},r.Zlib=f}).call(this)}).call(this,t(\"_process\"),t(\"buffer\").Buffer)},{_process:60,assert:23,buffer:33,\"pako/lib/zlib/constants\":51,\"pako/lib/zlib/deflate.js\":53,\"pako/lib/zlib/inflate.js\":55,\"pako/lib/zlib/zstream\":59}],32:[function(t,e,r){(function(e){(function(){\"use strict\";var i=t(\"buffer\").Buffer,n=t(\"stream\").Transform,a=t(\"./binding\"),o=t(\"util\"),s=t(\"assert\").ok,h=t(\"buffer\").kMaxLength,l=\"Cannot create final Buffer. It would be larger than 0x\"+h.toString(16)+\" bytes\";a.Z_MIN_WINDOWBITS=8,a.Z_MAX_WINDOWBITS=15,a.Z_DEFAULT_WINDOWBITS=15,a.Z_MIN_CHUNK=64,a.Z_MAX_CHUNK=1/0,a.Z_DEFAULT_CHUNK=16384,a.Z_MIN_MEMLEVEL=1,a.Z_MAX_MEMLEVEL=9,a.Z_DEFAULT_MEMLEVEL=8,a.Z_MIN_LEVEL=-1,a.Z_MAX_LEVEL=9,a.Z_DEFAULT_LEVEL=a.Z_DEFAULT_COMPRESSION;for(var f=Object.keys(a),u=0;u<f.length;u++){var c=f[u];c.match(/^Z/)&&Object.defineProperty(r,c,{enumerable:!0,value:a[c],writable:!1})}for(var d={Z_OK:a.Z_OK,Z_STREAM_END:a.Z_STREAM_END,Z_NEED_DICT:a.Z_NEED_DICT,Z_ERRNO:a.Z_ERRNO,Z_STREAM_ERROR:a.Z_STREAM_ERROR,Z_DATA_ERROR:a.Z_DATA_ERROR,Z_MEM_ERROR:a.Z_MEM_ERROR,Z_BUF_ERROR:a.Z_BUF_ERROR,Z_VERSION_ERROR:a.Z_VERSION_ERROR},p=Object.keys(d),m=0;m<p.length;m++){var g=p[m];d[d[g]]=g}function b(t,e,r){var n=[],a=0;function o(){for(var e;null!==(e=t.read());)n.push(e),a+=e.length;t.once(\"readable\",o)}function s(){var e,o=null;a>=h?o=new RangeError(l):e=i.concat(n,a),n=[],t.close(),r(o,e)}t.on(\"error\",(function(e){t.removeListener(\"end\",s),t.removeListener(\"readable\",o),r(e)})),t.on(\"end\",s),t.end(e),o()}function _(t,e){if(\"string\"==typeof e&&(e=i.from(e)),!i.isBuffer(e))throw new TypeError(\"Not a string or buffer\");var r=t._finishFlushFlag;return t._processChunk(e,r)}function y(t){if(!(this instanceof y))return new y(t);A.call(this,t,a.DEFLATE)}function w(t){if(!(this instanceof w))return new w(t);A.call(this,t,a.INFLATE)}function v(t){if(!(this instanceof v))return new v(t);A.call(this,t,a.GZIP)}function x(t){if(!(this instanceof x))return new x(t);A.call(this,t,a.GUNZIP)}function E(t){if(!(this instanceof E))return new E(t);A.call(this,t,a.DEFLATERAW)}function k(t){if(!(this instanceof k))return new k(t);A.call(this,t,a.INFLATERAW)}function S(t){if(!(this instanceof S))return new S(t);A.call(this,t,a.UNZIP)}function M(t){return t===a.Z_NO_FLUSH||t===a.Z_PARTIAL_FLUSH||t===a.Z_SYNC_FLUSH||t===a.Z_FULL_FLUSH||t===a.Z_FINISH||t===a.Z_BLOCK}function A(t,e){var o=this;if(this._opts=t=t||{},this._chunkSize=t.chunkSize||r.Z_DEFAULT_CHUNK,n.call(this,t),t.flush&&!M(t.flush))throw new Error(\"Invalid flush flag: \"+t.flush);if(t.finishFlush&&!M(t.finishFlush))throw new Error(\"Invalid flush flag: \"+t.finishFlush);if(this._flushFlag=t.flush||a.Z_NO_FLUSH,this._finishFlushFlag=void 0!==t.finishFlush?t.finishFlush:a.Z_FINISH,t.chunkSize&&(t.chunkSize<r.Z_MIN_CHUNK||t.chunkSize>r.Z_MAX_CHUNK))throw new Error(\"Invalid chunk size: \"+t.chunkSize);if(t.windowBits&&(t.windowBits<r.Z_MIN_WINDOWBITS||t.windowBits>r.Z_MAX_WINDOWBITS))throw new Error(\"Invalid windowBits: \"+t.windowBits);if(t.level&&(t.level<r.Z_MIN_LEVEL||t.level>r.Z_MAX_LEVEL))throw new Error(\"Invalid compression level: \"+t.level);if(t.memLevel&&(t.memLevel<r.Z_MIN_MEMLEVEL||t.memLevel>r.Z_MAX_MEMLEVEL))throw new Error(\"Invalid memLevel: \"+t.memLevel);if(t.strategy&&t.strategy!=r.Z_FILTERED&&t.strategy!=r.Z_HUFFMAN_ONLY&&t.strategy!=r.Z_RLE&&t.strategy!=r.Z_FIXED&&t.strategy!=r.Z_DEFAULT_STRATEGY)throw new Error(\"Invalid strategy: \"+t.strategy);if(t.dictionary&&!i.isBuffer(t.dictionary))throw new Error(\"Invalid dictionary: it should be a Buffer instance\");this._handle=new a.Zlib(e);var s=this;this._hadError=!1,this._handle.onerror=function(t,e){I(s),s._hadError=!0;var i=new Error(t);i.errno=e,i.code=r.codes[e],s.emit(\"error\",i)};var h=r.Z_DEFAULT_COMPRESSION;\"number\"==typeof t.level&&(h=t.level);var l=r.Z_DEFAULT_STRATEGY;\"number\"==typeof t.strategy&&(l=t.strategy),this._handle.init(t.windowBits||r.Z_DEFAULT_WINDOWBITS,h,t.memLevel||r.Z_DEFAULT_MEMLEVEL,l,t.dictionary),this._buffer=i.allocUnsafe(this._chunkSize),this._offset=0,this._level=h,this._strategy=l,this.once(\"end\",this.close),Object.defineProperty(this,\"_closed\",{get:function(){return!o._handle},configurable:!0,enumerable:!0})}function I(t,r){r&&e.nextTick(r),t._handle&&(t._handle.close(),t._handle=null)}function B(t){t.emit(\"close\")}Object.defineProperty(r,\"codes\",{enumerable:!0,value:Object.freeze(d),writable:!1}),r.Deflate=y,r.Inflate=w,r.Gzip=v,r.Gunzip=x,r.DeflateRaw=E,r.InflateRaw=k,r.Unzip=S,r.createDeflate=function(t){return new y(t)},r.createInflate=function(t){return new w(t)},r.createDeflateRaw=function(t){return new E(t)},r.createInflateRaw=function(t){return new k(t)},r.createGzip=function(t){return new v(t)},r.createGunzip=function(t){return new x(t)},r.createUnzip=function(t){return new S(t)},r.deflate=function(t,e,r){return\"function\"==typeof e&&(r=e,e={}),b(new y(e),t,r)},r.deflateSync=function(t,e){return _(new y(e),t)},r.gzip=function(t,e,r){return\"function\"==typeof e&&(r=e,e={}),b(new v(e),t,r)},r.gzipSync=function(t,e){return _(new v(e),t)},r.deflateRaw=function(t,e,r){return\"function\"==typeof e&&(r=e,e={}),b(new E(e),t,r)},r.deflateRawSync=function(t,e){return _(new E(e),t)},r.unzip=function(t,e,r){return\"function\"==typeof e&&(r=e,e={}),b(new S(e),t,r)},r.unzipSync=function(t,e){return _(new S(e),t)},r.inflate=function(t,e,r){return\"function\"==typeof e&&(r=e,e={}),b(new w(e),t,r)},r.inflateSync=function(t,e){return _(new w(e),t)},r.gunzip=function(t,e,r){return\"function\"==typeof e&&(r=e,e={}),b(new x(e),t,r)},r.gunzipSync=function(t,e){return _(new x(e),t)},r.inflateRaw=function(t,e,r){return\"function\"==typeof e&&(r=e,e={}),b(new k(e),t,r)},r.inflateRawSync=function(t,e){return _(new k(e),t)},o.inherits(A,n),A.prototype.params=function(t,i,n){if(t<r.Z_MIN_LEVEL||t>r.Z_MAX_LEVEL)throw new RangeError(\"Invalid compression level: \"+t);if(i!=r.Z_FILTERED&&i!=r.Z_HUFFMAN_ONLY&&i!=r.Z_RLE&&i!=r.Z_FIXED&&i!=r.Z_DEFAULT_STRATEGY)throw new TypeError(\"Invalid strategy: \"+i);if(this._level!==t||this._strategy!==i){var o=this;this.flush(a.Z_SYNC_FLUSH,(function(){s(o._handle,\"zlib binding closed\"),o._handle.params(t,i),o._hadError||(o._level=t,o._strategy=i,n&&n())}))}else e.nextTick(n)},A.prototype.reset=function(){return s(this._handle,\"zlib binding closed\"),this._handle.reset()},A.prototype._flush=function(t){this._transform(i.alloc(0),\"\",t)},A.prototype.flush=function(t,r){var n=this,o=this._writableState;(\"function\"==typeof t||void 0===t&&!r)&&(r=t,t=a.Z_FULL_FLUSH),o.ended?r&&e.nextTick(r):o.ending?r&&this.once(\"end\",r):o.needDrain?r&&this.once(\"drain\",(function(){return n.flush(t,r)})):(this._flushFlag=t,this.write(i.alloc(0),\"\",r))},A.prototype.close=function(t){I(this,t),e.nextTick(B,this)},A.prototype._transform=function(t,e,r){var n,o=this._writableState,s=(o.ending||o.ended)&&(!t||o.length===t.length);return null===t||i.isBuffer(t)?this._handle?(s?n=this._finishFlushFlag:(n=this._flushFlag,t.length>=o.length&&(this._flushFlag=this._opts.flush||a.Z_NO_FLUSH)),void this._processChunk(t,n,r)):r(new Error(\"zlib binding closed\")):r(new Error(\"invalid input\"))},A.prototype._processChunk=function(t,e,r){var n=t&&t.length,a=this._chunkSize-this._offset,o=0,f=this,u=\"function\"==typeof r;if(!u){var c,d=[],p=0;this.on(\"error\",(function(t){c=t})),s(this._handle,\"zlib binding closed\");do{var m=this._handle.writeSync(e,t,o,n,this._buffer,this._offset,a)}while(!this._hadError&&_(m[0],m[1]));if(this._hadError)throw c;if(p>=h)throw I(this),new RangeError(l);var g=i.concat(d,p);return I(this),g}s(this._handle,\"zlib binding closed\");var b=this._handle.write(e,t,o,n,this._buffer,this._offset,a);function _(h,l){if(this&&(this.buffer=null,this.callback=null),!f._hadError){var c=a-l;if(s(c>=0,\"have should not go down\"),c>0){var m=f._buffer.slice(f._offset,f._offset+c);f._offset+=c,u?f.push(m):(d.push(m),p+=m.length)}if((0===l||f._offset>=f._chunkSize)&&(a=f._chunkSize,f._offset=0,f._buffer=i.allocUnsafe(f._chunkSize)),0===l){if(o+=n-h,n=h,!u)return!0;var g=f._handle.write(e,t,o,n,f._buffer,f._offset,f._chunkSize);return g.callback=_,void(g.buffer=t)}if(!u)return!1;r()}}b.buffer=t,b.callback=_},o.inherits(y,A),o.inherits(w,A),o.inherits(v,A),o.inherits(x,A),o.inherits(E,A),o.inherits(k,A),o.inherits(S,A)}).call(this)}).call(this,t(\"_process\"))},{\"./binding\":31,_process:60,assert:23,buffer:33,stream:61,util:81}],33:[function(t,e,r){(function(e){(function(){\"use strict\";var e=t(\"base64-js\"),i=t(\"ieee754\");r.Buffer=o,r.SlowBuffer=function(t){return+t!=t&&(t=0),o.alloc(+t)},r.INSPECT_MAX_BYTES=50;var n=2147483647;function a(t){if(t>n)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=o.prototype,e}function o(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return l(t)}return s(t,e,r)}function s(t,e,r){if(\"string\"==typeof t)return function(t,e){if(\"string\"==typeof e&&\"\"!==e||(e=\"utf8\"),!o.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);var r=0|c(t,e),i=a(r),n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}(t,e);if(ArrayBuffer.isView(t))return f(t);if(null==t)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(N(t,ArrayBuffer)||t&&N(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('\"offset\" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('\"length\" is outside of buffer bounds');var i;return(i=void 0===e&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,e):new Uint8Array(t,e,r)).__proto__=o.prototype,i}(t,e,r);if(\"number\"==typeof t)throw new TypeError('The \"value\" argument must not be of type number. Received type number');var i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return o.from(i,e,r);var n=function(t){if(o.isBuffer(t)){var e=0|u(t.length),r=a(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?\"number\"!=typeof t.length||F(t.length)?a(0):f(t):\"Buffer\"===t.type&&Array.isArray(t.data)?f(t.data):void 0}(t);if(n)return n;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof t[Symbol.toPrimitive])return o.from(t[Symbol.toPrimitive](\"string\"),e,r);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t)}function h(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be of type number');if(t<0)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"')}function l(t){return h(t),a(t<0?0:0|u(t))}function f(t){for(var e=t.length<0?0:0|u(t.length),r=a(e),i=0;i<e;i+=1)r[i]=255&t[i];return r}function u(t){if(t>=n)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+n.toString(16)+\" bytes\");return 0|t}function c(t,e){if(o.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||N(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return U(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return z(t).length;default:if(n)return i?-1:U(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function d(t,e,r){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return I(this,e,r);case\"utf8\":case\"utf-8\":return k(this,e,r);case\"ascii\":return M(this,e,r);case\"latin1\":case\"binary\":return A(this,e,r);case\"base64\":return E(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return B(this,e,r);default:if(i)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),i=!0}}function p(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function m(t,e,r,i,n){if(0===t.length)return-1;if(\"string\"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),F(r=+r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if(\"string\"==typeof e&&(e=o.from(e,i)),o.isBuffer(e))return 0===e.length?-1:g(t,e,r,i,n);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):g(t,[e],r,i,n);throw new TypeError(\"val must be string, number or Buffer\")}function g(t,e,r,i,n){var a,o=1,s=t.length,h=e.length;if(void 0!==i&&(\"ucs2\"===(i=String(i).toLowerCase())||\"ucs-2\"===i||\"utf16le\"===i||\"utf-16le\"===i)){if(t.length<2||e.length<2)return-1;o=2,s/=2,h/=2,r/=2}function l(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(n){var f=-1;for(a=r;a<s;a++)if(l(t,a)===l(e,-1===f?0:a-f)){if(-1===f&&(f=a),a-f+1===h)return f*o}else-1!==f&&(a-=a-f),f=-1}else for(r+h>s&&(r=s-h),a=r;a>=0;a--){for(var u=!0,c=0;c<h;c++)if(l(t,a+c)!==l(e,c)){u=!1;break}if(u)return a}return-1}function b(t,e,r,i){r=Number(r)||0;var n=t.length-r;i?(i=Number(i))>n&&(i=n):i=n;var a=e.length;i>a/2&&(i=a/2);for(var o=0;o<i;++o){var s=parseInt(e.substr(2*o,2),16);if(F(s))return o;t[r+o]=s}return o}function _(t,e,r,i){return D(U(e,t.length-r),t,r,i)}function y(t,e,r,i){return D(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,i)}function w(t,e,r,i){return y(t,e,r,i)}function v(t,e,r,i){return D(z(e),t,r,i)}function x(t,e,r,i){return D(function(t,e){for(var r,i,n,a=[],o=0;o<t.length&&!((e-=2)<0);++o)i=(r=t.charCodeAt(o))>>8,n=r%256,a.push(n),a.push(i);return a}(e,t.length-r),t,r,i)}function E(t,r,i){return 0===r&&i===t.length?e.fromByteArray(t):e.fromByteArray(t.slice(r,i))}function k(t,e,r){r=Math.min(t.length,r);for(var i=[],n=e;n<r;){var a,o,s,h,l=t[n],f=null,u=l>239?4:l>223?3:l>191?2:1;if(n+u<=r)switch(u){case 1:l<128&&(f=l);break;case 2:128==(192&(a=t[n+1]))&&(h=(31&l)<<6|63&a)>127&&(f=h);break;case 3:a=t[n+1],o=t[n+2],128==(192&a)&&128==(192&o)&&(h=(15&l)<<12|(63&a)<<6|63&o)>2047&&(h<55296||h>57343)&&(f=h);break;case 4:a=t[n+1],o=t[n+2],s=t[n+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(h=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&h<1114112&&(f=h)}null===f?(f=65533,u=1):f>65535&&(f-=65536,i.push(f>>>10&1023|55296),f=56320|1023&f),i.push(f),n+=u}return function(t){var e=t.length;if(e<=S)return String.fromCharCode.apply(String,t);for(var r=\"\",i=0;i<e;)r+=String.fromCharCode.apply(String,t.slice(i,i+=S));return r}(i)}r.kMaxLength=n,o.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(t){return!1}}(),o.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(o.prototype,\"parent\",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.buffer}}),Object.defineProperty(o.prototype,\"offset\",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.byteOffset}}),\"undefined\"!=typeof Symbol&&null!=Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),o.poolSize=8192,o.from=function(t,e,r){return s(t,e,r)},o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,o.alloc=function(t,e,r){return function(t,e,r){return h(t),t<=0?a(t):void 0!==e?\"string\"==typeof r?a(t).fill(e,r):a(t).fill(e):a(t)}(t,e,r)},o.allocUnsafe=function(t){return l(t)},o.allocUnsafeSlow=function(t){return l(t)},o.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==o.prototype},o.compare=function(t,e){if(N(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),N(e,Uint8Array)&&(e=o.from(e,e.offset,e.byteLength)),!o.isBuffer(t)||!o.isBuffer(e))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var r=t.length,i=e.length,n=0,a=Math.min(r,i);n<a;++n)if(t[n]!==e[n]){r=t[n],i=e[n];break}return r<i?-1:i<r?1:0},o.isEncoding=function(t){switch(String(t).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},o.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===t.length)return o.alloc(0);var r;if(void 0===e)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var i=o.allocUnsafe(e),n=0;for(r=0;r<t.length;++r){var a=t[r];if(N(a,Uint8Array)&&(a=o.from(a)),!o.isBuffer(a))throw new TypeError('\"list\" argument must be an Array of Buffers');a.copy(i,n),n+=a.length}return i},o.byteLength=c,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var e=0;e<t;e+=2)p(this,e,e+1);return this},o.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var e=0;e<t;e+=4)p(this,e,e+3),p(this,e+1,e+2);return this},o.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var e=0;e<t;e+=8)p(this,e,e+7),p(this,e+1,e+6),p(this,e+2,e+5),p(this,e+3,e+4);return this},o.prototype.toString=function(){var t=this.length;return 0===t?\"\":0===arguments.length?k(this,0,t):d.apply(this,arguments)},o.prototype.toLocaleString=o.prototype.toString,o.prototype.equals=function(t){if(!o.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");return this===t||0===o.compare(this,t)},o.prototype.inspect=function(){var t=\"\",e=r.INSPECT_MAX_BYTES;return t=this.toString(\"hex\",0,e).replace(/(.{2})/g,\"$1 \").trim(),this.length>e&&(t+=\" ... \"),\"<Buffer \"+t+\">\"},o.prototype.compare=function(t,e,r,i,n){if(N(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError(\"out of range index\");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;for(var a=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0),h=Math.min(a,s),l=this.slice(i,n),f=t.slice(e,r),u=0;u<h;++u)if(l[u]!==f[u]){a=l[u],s=f[u];break}return a<s?-1:s<a?1:0},o.prototype.includes=function(t,e,r){return-1!==this.indexOf(t,e,r)},o.prototype.indexOf=function(t,e,r){return m(this,t,e,r,!0)},o.prototype.lastIndexOf=function(t,e,r){return m(this,t,e,r,!1)},o.prototype.write=function(t,e,r,i){if(void 0===e)i=\"utf8\",r=this.length,e=0;else if(void 0===r&&\"string\"==typeof e)i=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");e>>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i=\"utf8\")):(i=r,r=void 0)}var n=this.length-e;if((void 0===r||r>n)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");i||(i=\"utf8\");for(var a=!1;;)switch(i){case\"hex\":return b(this,t,e,r);case\"utf8\":case\"utf-8\":return _(this,t,e,r);case\"ascii\":return y(this,t,e,r);case\"latin1\":case\"binary\":return w(this,t,e,r);case\"base64\":return v(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return x(this,t,e,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+i);i=(\"\"+i).toLowerCase(),a=!0}},o.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var S=4096;function M(t,e,r){var i=\"\";r=Math.min(t.length,r);for(var n=e;n<r;++n)i+=String.fromCharCode(127&t[n]);return i}function A(t,e,r){var i=\"\";r=Math.min(t.length,r);for(var n=e;n<r;++n)i+=String.fromCharCode(t[n]);return i}function I(t,e,r){var i,n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var a=\"\",o=e;o<r;++o)a+=(i=t[o])<16?\"0\"+i.toString(16):i.toString(16);return a}function B(t,e,r){for(var i=t.slice(e,r),n=\"\",a=0;a<i.length;a+=2)n+=String.fromCharCode(i[a]+256*i[a+1]);return n}function T(t,e,r){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function R(t,e,r,i,n,a){if(!o.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>n||e<a)throw new RangeError('\"value\" argument is out of bounds');if(r+i>t.length)throw new RangeError(\"Index out of range\")}function P(t,e,r,i,n,a){if(r+i>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function O(t,e,r,n,a){return e=+e,r>>>=0,a||P(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function L(t,e,r,n,a){return e=+e,r>>>=0,a||P(t,0,r,8),i.write(t,e,r,n,52,8),r+8}o.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t);var i=this.subarray(t,e);return i.__proto__=o.prototype,i},o.prototype.readUIntLE=function(t,e,r){t>>>=0,e>>>=0,r||T(t,e,this.length);for(var i=this[t],n=1,a=0;++a<e&&(n*=256);)i+=this[t+a]*n;return i},o.prototype.readUIntBE=function(t,e,r){t>>>=0,e>>>=0,r||T(t,e,this.length);for(var i=this[t+--e],n=1;e>0&&(n*=256);)i+=this[t+--e]*n;return i},o.prototype.readUInt8=function(t,e){return t>>>=0,e||T(t,1,this.length),this[t]},o.prototype.readUInt16LE=function(t,e){return t>>>=0,e||T(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUInt16BE=function(t,e){return t>>>=0,e||T(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUInt32LE=function(t,e){return t>>>=0,e||T(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUInt32BE=function(t,e){return t>>>=0,e||T(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||T(t,e,this.length);for(var i=this[t],n=1,a=0;++a<e&&(n*=256);)i+=this[t+a]*n;return i>=(n*=128)&&(i-=Math.pow(2,8*e)),i},o.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||T(t,e,this.length);for(var i=e,n=1,a=this[t+--i];i>0&&(n*=256);)a+=this[t+--i]*n;return a>=(n*=128)&&(a-=Math.pow(2,8*e)),a},o.prototype.readInt8=function(t,e){return t>>>=0,e||T(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){t>>>=0,e||T(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,e){t>>>=0,e||T(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,e){return t>>>=0,e||T(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return t>>>=0,e||T(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readFloatLE=function(t,e){return t>>>=0,e||T(t,4,this.length),i.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return t>>>=0,e||T(t,4,this.length),i.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return t>>>=0,e||T(t,8,this.length),i.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return t>>>=0,e||T(t,8,this.length),i.read(this,t,!1,52,8)},o.prototype.writeUIntLE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||R(this,t,e,r,Math.pow(2,8*r)-1,0);var n=1,a=0;for(this[e]=255&t;++a<r&&(n*=256);)this[e+a]=t/n&255;return e+r},o.prototype.writeUIntBE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||R(this,t,e,r,Math.pow(2,8*r)-1,0);var n=r-1,a=1;for(this[e+n]=255&t;--n>=0&&(a*=256);)this[e+n]=t/a&255;return e+r},o.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,255,0),this[e]=255&t,e+1},o.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},o.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e>>>=0,!i){var n=Math.pow(2,8*r-1);R(this,t,e,r,n-1,-n)}var a=0,o=1,s=0;for(this[e]=255&t;++a<r&&(o*=256);)t<0&&0===s&&0!==this[e+a-1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},o.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e>>>=0,!i){var n=Math.pow(2,8*r-1);R(this,t,e,r,n-1,-n)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+r},o.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},o.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeFloatLE=function(t,e,r){return O(this,t,e,!0,r)},o.prototype.writeFloatBE=function(t,e,r){return O(this,t,e,!1,r)},o.prototype.writeDoubleLE=function(t,e,r){return L(this,t,e,!0,r)},o.prototype.writeDoubleBE=function(t,e,r){return L(this,t,e,!1,r)},o.prototype.copy=function(t,e,r,i){if(!o.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i<r&&(i=r),i===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError(\"targetStart out of bounds\");if(r<0||r>=this.length)throw new RangeError(\"Index out of range\");if(i<0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),t.length-e<i-r&&(i=t.length-e+r);var n=i-r;if(this===t&&\"function\"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(e,r,i);else if(this===t&&r<e&&e<i)for(var a=n-1;a>=0;--a)t[a+e]=this[a+r];else Uint8Array.prototype.set.call(t,this.subarray(r,i),e);return n},o.prototype.fill=function(t,e,r,i){if(\"string\"==typeof t){if(\"string\"==typeof e?(i=e,e=0,r=this.length):\"string\"==typeof r&&(i=r,r=this.length),void 0!==i&&\"string\"!=typeof i)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof i&&!o.isEncoding(i))throw new TypeError(\"Unknown encoding: \"+i);if(1===t.length){var n=t.charCodeAt(0);(\"utf8\"===i&&n<128||\"latin1\"===i)&&(t=n)}}else\"number\"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<r)throw new RangeError(\"Out of range index\");if(r<=e)return this;var a;if(e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(a=e;a<r;++a)this[a]=t;else{var s=o.isBuffer(t)?t:o.from(t,i),h=s.length;if(0===h)throw new TypeError('The value \"'+t+'\" is invalid for argument \"value\"');for(a=0;a<r-e;++a)this[a+e]=s[a%h]}return this};var C=/[^+/0-9A-Za-z-_]/g;function U(t,e){var r;e=e||1/0;for(var i=t.length,n=null,a=[],o=0;o<i;++o){if((r=t.charCodeAt(o))>55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===i){(e-=3)>-1&&a.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&a.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function z(t){return e.toByteArray(function(t){if((t=(t=t.split(\"=\")[0]).trim().replace(C,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function D(t,e,r,i){for(var n=0;n<i&&!(n+r>=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function N(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function F(t){return t!=t}}).call(this)}).call(this,t(\"buffer\").Buffer)},{\"base64-js\":29,buffer:33,ieee754:44}],34:[function(t,e,r){\"use strict\";var i,n=TypeError,a=Object.getOwnPropertyDescriptor;if(a)try{a({},\"\")}catch(t){a=null}var o=function(){throw new n},s=a?function(){try{return o}catch(t){try{return a(arguments,\"callee\").get}catch(t){return o}}}():o,h=t(\"has-symbols\")(),l=Object.getPrototypeOf||function(t){return t.__proto__},f=i,u=i,c=i,d=i,p=\"undefined\"==typeof Uint8Array?i:l(Uint8Array),m={\"%Array%\":Array,\"%ArrayBuffer%\":\"undefined\"==typeof ArrayBuffer?i:ArrayBuffer,\"%ArrayBufferPrototype%\":\"undefined\"==typeof ArrayBuffer?i:ArrayBuffer.prototype,\"%ArrayIteratorPrototype%\":h?l([][Symbol.iterator]()):i,\"%ArrayPrototype%\":Array.prototype,\"%ArrayProto_entries%\":Array.prototype.entries,\"%ArrayProto_forEach%\":Array.prototype.forEach,\"%ArrayProto_keys%\":Array.prototype.keys,\"%ArrayProto_values%\":Array.prototype.values,\"%AsyncFromSyncIteratorPrototype%\":i,\"%AsyncFunction%\":u,\"%AsyncFunctionPrototype%\":i,\"%AsyncGenerator%\":i,\"%AsyncGeneratorFunction%\":c,\"%AsyncGeneratorPrototype%\":i,\"%AsyncIteratorPrototype%\":d&&h&&Symbol.asyncIterator?d[Symbol.asyncIterator]():i,\"%Atomics%\":\"undefined\"==typeof Atomics?i:Atomics,\"%Boolean%\":Boolean,\"%BooleanPrototype%\":Boolean.prototype,\"%DataView%\":\"undefined\"==typeof DataView?i:DataView,\"%DataViewPrototype%\":\"undefined\"==typeof DataView?i:DataView.prototype,\"%Date%\":Date,\"%DatePrototype%\":Date.prototype,\"%decodeURI%\":decodeURI,\"%decodeURIComponent%\":decodeURIComponent,\"%encodeURI%\":encodeURI,\"%encodeURIComponent%\":encodeURIComponent,\"%Error%\":Error,\"%ErrorPrototype%\":Error.prototype,\"%eval%\":eval,\"%EvalError%\":EvalError,\"%EvalErrorPrototype%\":EvalError.prototype,\"%Float32Array%\":\"undefined\"==typeof Float32Array?i:Float32Array,\"%Float32ArrayPrototype%\":\"undefined\"==typeof Float32Array?i:Float32Array.prototype,\"%Float64Array%\":\"undefined\"==typeof Float64Array?i:Float64Array,\"%Float64ArrayPrototype%\":\"undefined\"==typeof Float64Array?i:Float64Array.prototype,\"%Function%\":Function,\"%FunctionPrototype%\":Function.prototype,\"%Generator%\":i,\"%GeneratorFunction%\":f,\"%GeneratorPrototype%\":i,\"%Int8Array%\":\"undefined\"==typeof Int8Array?i:Int8Array,\"%Int8ArrayPrototype%\":\"undefined\"==typeof Int8Array?i:Int8Array.prototype,\"%Int16Array%\":\"undefined\"==typeof Int16Array?i:Int16Array,\"%Int16ArrayPrototype%\":\"undefined\"==typeof Int16Array?i:Int8Array.prototype,\"%Int32Array%\":\"undefined\"==typeof Int32Array?i:Int32Array,\"%Int32ArrayPrototype%\":\"undefined\"==typeof Int32Array?i:Int32Array.prototype,\"%isFinite%\":isFinite,\"%isNaN%\":isNaN,\"%IteratorPrototype%\":h?l(l([][Symbol.iterator]())):i,\"%JSON%\":\"object\"==typeof JSON?JSON:i,\"%JSONParse%\":\"object\"==typeof JSON?JSON.parse:i,\"%Map%\":\"undefined\"==typeof Map?i:Map,\"%MapIteratorPrototype%\":\"undefined\"!=typeof Map&&h?l((new Map)[Symbol.iterator]()):i,\"%MapPrototype%\":\"undefined\"==typeof Map?i:Map.prototype,\"%Math%\":Math,\"%Number%\":Number,\"%NumberPrototype%\":Number.prototype,\"%Object%\":Object,\"%ObjectPrototype%\":Object.prototype,\"%ObjProto_toString%\":Object.prototype.toString,\"%ObjProto_valueOf%\":Object.prototype.valueOf,\"%parseFloat%\":parseFloat,\"%parseInt%\":parseInt,\"%Promise%\":\"undefined\"==typeof Promise?i:Promise,\"%PromisePrototype%\":\"undefined\"==typeof Promise?i:Promise.prototype,\"%PromiseProto_then%\":\"undefined\"==typeof Promise?i:Promise.prototype.then,\"%Promise_all%\":\"undefined\"==typeof Promise?i:Promise.all,\"%Promise_reject%\":\"undefined\"==typeof Promise?i:Promise.reject,\"%Promise_resolve%\":\"undefined\"==typeof Promise?i:Promise.resolve,\"%Proxy%\":\"undefined\"==typeof Proxy?i:Proxy,\"%RangeError%\":RangeError,\"%RangeErrorPrototype%\":RangeError.prototype,\"%ReferenceError%\":ReferenceError,\"%ReferenceErrorPrototype%\":ReferenceError.prototype,\"%Reflect%\":\"undefined\"==typeof Reflect?i:Reflect,\"%RegExp%\":RegExp,\"%RegExpPrototype%\":RegExp.prototype,\"%Set%\":\"undefined\"==typeof Set?i:Set,\"%SetIteratorPrototype%\":\"undefined\"!=typeof Set&&h?l((new Set)[Symbol.iterator]()):i,\"%SetPrototype%\":\"undefined\"==typeof Set?i:Set.prototype,\"%SharedArrayBuffer%\":\"undefined\"==typeof SharedArrayBuffer?i:SharedArrayBuffer,\"%SharedArrayBufferPrototype%\":\"undefined\"==typeof SharedArrayBuffer?i:SharedArrayBuffer.prototype,\"%String%\":String,\"%StringIteratorPrototype%\":h?l(\"\"[Symbol.iterator]()):i,\"%StringPrototype%\":String.prototype,\"%Symbol%\":h?Symbol:i,\"%SymbolPrototype%\":h?Symbol.prototype:i,\"%SyntaxError%\":SyntaxError,\"%SyntaxErrorPrototype%\":SyntaxError.prototype,\"%ThrowTypeError%\":s,\"%TypedArray%\":p,\"%TypedArrayPrototype%\":p?p.prototype:i,\"%TypeError%\":n,\"%TypeErrorPrototype%\":n.prototype,\"%Uint8Array%\":\"undefined\"==typeof Uint8Array?i:Uint8Array,\"%Uint8ArrayPrototype%\":\"undefined\"==typeof Uint8Array?i:Uint8Array.prototype,\"%Uint8ClampedArray%\":\"undefined\"==typeof Uint8ClampedArray?i:Uint8ClampedArray,\"%Uint8ClampedArrayPrototype%\":\"undefined\"==typeof Uint8ClampedArray?i:Uint8ClampedArray.prototype,\"%Uint16Array%\":\"undefined\"==typeof Uint16Array?i:Uint16Array,\"%Uint16ArrayPrototype%\":\"undefined\"==typeof Uint16Array?i:Uint16Array.prototype,\"%Uint32Array%\":\"undefined\"==typeof Uint32Array?i:Uint32Array,\"%Uint32ArrayPrototype%\":\"undefined\"==typeof Uint32Array?i:Uint32Array.prototype,\"%URIError%\":URIError,\"%URIErrorPrototype%\":URIError.prototype,\"%WeakMap%\":\"undefined\"==typeof WeakMap?i:WeakMap,\"%WeakMapPrototype%\":\"undefined\"==typeof WeakMap?i:WeakMap.prototype,\"%WeakSet%\":\"undefined\"==typeof WeakSet?i:WeakSet,\"%WeakSetPrototype%\":\"undefined\"==typeof WeakSet?i:WeakSet.prototype},g=t(\"function-bind\").call(Function.call,String.prototype.replace),b=/[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g,_=/\\\\(\\\\)?/g,y=function(t){var e=[];return g(t,b,(function(t,r,i,n){e[e.length]=i?g(n,_,\"$1\"):r||t})),e},w=function(t,e){if(!(t in m))throw new SyntaxError(\"intrinsic \"+t+\" does not exist!\");if(void 0===m[t]&&!e)throw new n(\"intrinsic \"+t+\" exists, but is not available. Please file an issue!\");return m[t]};e.exports=function(t,e){if(\"string\"!=typeof t||0===t.length)throw new TypeError(\"intrinsic name must be a non-empty string\");if(arguments.length>1&&\"boolean\"!=typeof e)throw new TypeError('\"allowMissing\" argument must be a boolean');for(var r=y(t),i=w(\"%\"+(r.length>0?r[0]:\"\")+\"%\",e),o=1;o<r.length;o+=1)if(null!=i)if(a&&o+1>=r.length){var s=a(i,r[o]);if(!e&&!(r[o]in i))throw new n(\"base intrinsic for \"+t+\" exists, but the property is not available.\");i=s?s.get||s.value:i[r[o]]}else i=i[r[o]];return i}},{\"function-bind\":41,\"has-symbols\":42}],35:[function(t,e,r){\"use strict\";var i=t(\"function-bind\"),n=t(\"../GetIntrinsic\")(\"%Function%\"),a=n.apply,o=n.call;e.exports=function(){return i.apply(o,arguments)},e.exports.apply=function(){return i.apply(a,arguments)}},{\"../GetIntrinsic\":34,\"function-bind\":41}],36:[function(t,e,r){\"use strict\";var i=t(\"../GetIntrinsic\"),n=t(\"./callBind\"),a=n(i(\"String.prototype.indexOf\"));e.exports=function(t,e){var r=i(t,!!e);return\"function\"==typeof r&&a(t,\".prototype.\")?n(r):r}},{\"../GetIntrinsic\":34,\"./callBind\":35}],37:[function(t,e,r){\"use strict\";var i=t(\"../GetIntrinsic\")(\"%Object.getOwnPropertyDescriptor%\");if(i)try{i([],\"length\")}catch(t){i=null}e.exports=i},{\"../GetIntrinsic\":34}],38:[function(t,e,r){\"use strict\";var i,n=\"object\"==typeof Reflect?Reflect:null,a=n&&\"function\"==typeof n.apply?n.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};i=n&&\"function\"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var o=Number.isNaN||function(t){return t!=t};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(t,e){return new Promise((function(r,i){function n(){void 0!==a&&t.removeListener(\"error\",a),r([].slice.call(arguments))}var a;\"error\"!==e&&(a=function(r){t.removeListener(e,n),i(r)},t.once(\"error\",a)),t.once(e,n)}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var h=10;function l(t){if(\"function\"!=typeof t)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof t)}function f(t){return void 0===t._maxListeners?s.defaultMaxListeners:t._maxListeners}function u(t,e,r,i){var n,a,o,s;if(l(r),void 0===(a=t._events)?(a=t._events=Object.create(null),t._eventsCount=0):(void 0!==a.newListener&&(t.emit(\"newListener\",e,r.listener?r.listener:r),a=t._events),o=a[e]),void 0===o)o=a[e]=r,++t._eventsCount;else if(\"function\"==typeof o?o=a[e]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),(n=f(t))>0&&o.length>n&&!o.warned){o.warned=!0;var h=new Error(\"Possible EventEmitter memory leak detected. \"+o.length+\" \"+String(e)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");h.name=\"MaxListenersExceededWarning\",h.emitter=t,h.type=e,h.count=o.length,s=h,console&&console.warn&&console.warn(s)}return t}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=c.bind(i);return n.listener=r,i.wrapFn=n,n}function p(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:\"function\"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r<e.length;++r)e[r]=t[r].listener||t[r];return e}(n):g(n,n.length)}function m(t){var e=this._events;if(void 0!==e){var r=e[t];if(\"function\"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function g(t,e){for(var r=new Array(e),i=0;i<e;++i)r[i]=t[i];return r}Object.defineProperty(s,\"defaultMaxListeners\",{enumerable:!0,get:function(){return h},set:function(t){if(\"number\"!=typeof t||t<0||o(t))throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+t+\".\");h=t}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(t){if(\"number\"!=typeof t||t<0||o(t))throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+t+\".\");return this._maxListeners=t,this},s.prototype.getMaxListeners=function(){return f(this)},s.prototype.emit=function(t){for(var e=[],r=1;r<arguments.length;r++)e.push(arguments[r]);var i=\"error\"===t,n=this._events;if(void 0!==n)i=i&&void 0===n.error;else if(!i)return!1;if(i){var o;if(e.length>0&&(o=e[0]),o instanceof Error)throw o;var s=new Error(\"Unhandled error.\"+(o?\" (\"+o.message+\")\":\"\"));throw s.context=o,s}var h=n[t];if(void 0===h)return!1;if(\"function\"==typeof h)a(h,this,e);else{var l=h.length,f=g(h,l);for(r=0;r<l;++r)a(f[r],this,e)}return!0},s.prototype.addListener=function(t,e){return u(this,t,e,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(t,e){return u(this,t,e,!0)},s.prototype.once=function(t,e){return l(e),this.on(t,d(this,t,e)),this},s.prototype.prependOnceListener=function(t,e){return l(e),this.prependListener(t,d(this,t,e)),this},s.prototype.removeListener=function(t,e){var r,i,n,a,o;if(l(e),void 0===(i=this._events))return this;if(void 0===(r=i[t]))return this;if(r===e||r.listener===e)0==--this._eventsCount?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit(\"removeListener\",t,r.listener||e));else if(\"function\"!=typeof r){for(n=-1,a=r.length-1;a>=0;a--)if(r[a]===e||r[a].listener===e){o=r[a].listener,n=a;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}(r,n),1===r.length&&(i[t]=r[0]),void 0!==i.removeListener&&this.emit(\"removeListener\",t,o||e)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(t){var e,r,i;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[t]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[t]),this;if(0===arguments.length){var n,a=Object.keys(r);for(i=0;i<a.length;++i)\"removeListener\"!==(n=a[i])&&this.removeAllListeners(n);return this.removeAllListeners(\"removeListener\"),this._events=Object.create(null),this._eventsCount=0,this}if(\"function\"==typeof(e=r[t]))this.removeListener(t,e);else if(void 0!==e)for(i=e.length-1;i>=0;i--)this.removeListener(t,e[i]);return this},s.prototype.listeners=function(t){return p(this,t,!0)},s.prototype.rawListeners=function(t){return p(this,t,!1)},s.listenerCount=function(t,e){return\"function\"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},s.prototype.listenerCount=m,s.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},{}],39:[function(t,e,r){var i=Object.prototype.hasOwnProperty,n=Object.prototype.toString;e.exports=function(t,e,r){if(\"[object Function]\"!==n.call(e))throw new TypeError(\"iterator must be a function\");var a=t.length;if(a===+a)for(var o=0;o<a;o++)e.call(r,t[o],o,t);else for(var s in t)i.call(t,s)&&e.call(r,t[s],s,t)}},{}],40:[function(t,e,r){\"use strict\";var i=\"Function.prototype.bind called on incompatible \",n=Array.prototype.slice,a=Object.prototype.toString,o=\"[object Function]\";e.exports=function(t){var e=this;if(\"function\"!=typeof e||a.call(e)!==o)throw new TypeError(i+e);for(var r,s=n.call(arguments,1),h=Math.max(0,e.length-s.length),l=[],f=0;f<h;f++)l.push(\"$\"+f);if(r=Function(\"binder\",\"return function (\"+l.join(\",\")+\"){ return binder.apply(this,arguments); }\")((function(){if(this instanceof r){var i=e.apply(this,s.concat(n.call(arguments)));return Object(i)===i?i:this}return e.apply(t,s.concat(n.call(arguments)))})),e.prototype){var u=function(){};u.prototype=e.prototype,r.prototype=new u,u.prototype=null}return r}},{}],41:[function(t,e,r){\"use strict\";var i=t(\"./implementation\");e.exports=Function.prototype.bind||i},{\"./implementation\":40}],42:[function(t,e,i){(function(r){(function(){\"use strict\";var i=r.Symbol,n=t(\"./shams\");e.exports=function(){return\"function\"==typeof i&&\"function\"==typeof Symbol&&\"symbol\"==typeof i(\"foo\")&&\"symbol\"==typeof Symbol(\"bar\")&&n()}}).call(this)}).call(this,void 0!==r.g?r.g:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./shams\":43}],43:[function(t,e,r){\"use strict\";e.exports=function(){if(\"function\"!=typeof Symbol||\"function\"!=typeof Object.getOwnPropertySymbols)return!1;if(\"symbol\"==typeof Symbol.iterator)return!0;var t={},e=Symbol(\"test\"),r=Object(e);if(\"string\"==typeof e)return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(e))return!1;if(\"[object Symbol]\"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if(\"function\"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if(\"function\"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var i=Object.getOwnPropertySymbols(t);if(1!==i.length||i[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if(\"function\"==typeof Object.getOwnPropertyDescriptor){var n=Object.getOwnPropertyDescriptor(t,e);if(42!==n.value||!0!==n.enumerable)return!1}return!0}},{}],44:[function(t,e,r){r.read=function(t,e,r,i,n){var a,o,s=8*n-i-1,h=(1<<s)-1,l=h>>1,f=-7,u=r?n-1:0,c=r?-1:1,d=t[e+u];for(u+=c,a=d&(1<<-f)-1,d>>=-f,f+=s;f>0;a=256*a+t[e+u],u+=c,f-=8);for(o=a&(1<<-f)-1,a>>=-f,f+=i;f>0;o=256*o+t[e+u],u+=c,f-=8);if(0===a)a=1-l;else{if(a===h)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,i),a-=l}return(d?-1:1)*o*Math.pow(2,a-i)},r.write=function(t,e,r,i,n,a){var o,s,h,l=8*a-n-1,f=(1<<l)-1,u=f>>1,c=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:a-1,p=i?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=f):(o=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-o))<1&&(o--,h*=2),(e+=o+u>=1?c/h:c*Math.pow(2,1-u))*h>=2&&(o++,h/=2),o+u>=f?(s=0,o=f):o+u>=1?(s=(e*h-1)*Math.pow(2,n),o+=u):(s=e*Math.pow(2,u-1)*Math.pow(2,n),o=0));n>=8;t[r+d]=255&s,d+=p,s/=256,n-=8);for(o=o<<n|s,l+=n;l>0;t[r+d]=255&o,d+=p,o/=256,l-=8);t[r+d-p]|=128*m}},{}],45:[function(t,e,r){\"function\"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},{}],46:[function(t,e,r){\"use strict\";var i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag,n=Object.prototype.toString,a=function(t){return!(i&&t&&\"object\"==typeof t&&Symbol.toStringTag in t)&&\"[object Arguments]\"===n.call(t)},o=function(t){return!!a(t)||null!==t&&\"object\"==typeof t&&\"number\"==typeof t.length&&t.length>=0&&\"[object Array]\"!==n.call(t)&&\"[object Function]\"===n.call(t.callee)},s=function(){return a(arguments)}();a.isLegacyArguments=o,e.exports=s?a:o},{}],47:[function(t,e,r){\"use strict\";var i=Object.prototype.toString,n=Function.prototype.toString,a=/^\\s*(?:function)?\\*/,o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag,s=Object.getPrototypeOf,h=function(){if(!o)return!1;try{return Function(\"return function*() {}\")()}catch(t){}}(),l=h?s(h):{};e.exports=function(t){return\"function\"==typeof t&&(!!a.test(n.call(t))||(o?s(t)===l:\"[object GeneratorFunction]\"===i.call(t)))}},{}],48:[function(t,e,i){(function(r){(function(){\"use strict\";var i=t(\"foreach\"),n=t(\"available-typed-arrays\"),a=t(\"es-abstract/helpers/callBound\"),o=a(\"Object.prototype.toString\"),s=t(\"has-symbols\")()&&\"symbol\"==typeof Symbol.toStringTag,h=n(),l=a(\"Array.prototype.indexOf\",!0)||function(t,e){for(var r=0;r<t.length;r+=1)if(t[r]===e)return r;return-1},f=a(\"String.prototype.slice\"),u={},c=t(\"es-abstract/helpers/getOwnPropertyDescriptor\"),d=Object.getPrototypeOf;s&&c&&d&&i(h,(function(t){var e=new r[t];if(!(Symbol.toStringTag in e))throw new EvalError(\"this engine has support for Symbol.toStringTag, but \"+t+\" does not have the property! Please report this.\");var i=d(e),n=c(i,Symbol.toStringTag);if(!n){var a=d(i);n=c(a,Symbol.toStringTag)}u[t]=n.get}));e.exports=function(t){if(!t||\"object\"!=typeof t)return!1;if(!s){var e=f(o(t),8,-1);return l(h,e)>-1}return!!c&&function(t){var e=!1;return i(u,(function(r,i){if(!e)try{e=r.call(t)===i}catch(t){}})),e}(t)}}).call(this)}).call(this,void 0!==r.g?r.g:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"available-typed-arrays\":27,\"es-abstract/helpers/callBound\":36,\"es-abstract/helpers/getOwnPropertyDescriptor\":37,foreach:39,\"has-symbols\":42}],49:[function(t,e,r){\"use strict\";var i=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function n(t,e){return Object.prototype.hasOwnProperty.call(t,e)}r.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var i in r)n(r,i)&&(t[i]=r[i])}}return t},r.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var a={arraySet:function(t,e,r,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(r,r+i),n);else for(var a=0;a<i;a++)t[n+a]=e[r+a]},flattenChunks:function(t){var e,r,i,n,a,o;for(i=0,e=0,r=t.length;e<r;e++)i+=t[e].length;for(o=new Uint8Array(i),n=0,e=0,r=t.length;e<r;e++)a=t[e],o.set(a,n),n+=a.length;return o}},o={arraySet:function(t,e,r,i,n){for(var a=0;a<i;a++)t[n+a]=e[r+a]},flattenChunks:function(t){return[].concat.apply([],t)}};r.setTyped=function(t){t?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,a)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,o))},r.setTyped(i)},{}],50:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,i){for(var n=65535&t|0,a=t>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(n=n+e[i++]|0)|0}while(--o);n%=65521,a%=65521}return n|a<<16|0}},{}],51:[function(t,e,r){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],52:[function(t,e,r){\"use strict\";var i=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e,r,n){var a=i,o=n+r;t^=-1;for(var s=n;s<o;s++)t=t>>>8^a[255&(t^e[s])];return-1^t}},{}],53:[function(t,e,r){\"use strict\";var i,n=t(\"../utils/common\"),a=t(\"./trees\"),o=t(\"./adler32\"),s=t(\"./crc32\"),h=t(\"./messages\"),l=0,f=1,u=3,c=4,d=5,p=0,m=1,g=-2,b=-3,_=-5,y=-1,w=1,v=2,x=3,E=4,k=0,S=2,M=8,A=9,I=15,B=8,T=286,R=30,P=19,O=2*T+1,L=15,C=3,U=258,z=U+C+1,D=32,N=42,F=69,j=73,G=91,H=103,W=113,q=666,Z=1,Y=2,V=3,X=4,J=3;function Q(t,e){return t.msg=h[e],e}function K(t){return(t<<1)-(t>4?9:0)}function $(t){for(var e=t.length;--e>=0;)t[e]=0}function tt(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(n.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function et(t,e){a._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,tt(t.strm)}function rt(t,e){t.pending_buf[t.pending++]=e}function it(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function nt(t,e){var r,i,n=t.max_chain_length,a=t.strstart,o=t.prev_length,s=t.nice_match,h=t.strstart>t.w_size-z?t.strstart-(t.w_size-z):0,l=t.window,f=t.w_mask,u=t.prev,c=t.strstart+U,d=l[a+o-1],p=l[a+o];t.prev_length>=t.good_match&&(n>>=2),s>t.lookahead&&(s=t.lookahead);do{if(l[(r=e)+o]===p&&l[r+o-1]===d&&l[r]===l[a]&&l[++r]===l[a+1]){a+=2,r++;do{}while(l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&l[++a]===l[++r]&&a<c);if(i=U-(c-a),a=c-U,i>o){if(t.match_start=e,o=i,i>=s)break;d=l[a+o-1],p=l[a+o]}}}while((e=u[e&f])>h&&0!=--n);return o<=t.lookahead?o:t.lookahead}function at(t){var e,r,i,a,h,l,f,u,c,d,p=t.w_size;do{if(a=t.window_size-t.lookahead-t.strstart,t.strstart>=p+(p-z)){n.arraySet(t.window,t.window,p,p,0),t.match_start-=p,t.strstart-=p,t.block_start-=p,e=r=t.hash_size;do{i=t.head[--e],t.head[e]=i>=p?i-p:0}while(--r);e=r=p;do{i=t.prev[--e],t.prev[e]=i>=p?i-p:0}while(--r);a+=p}if(0===t.strm.avail_in)break;if(l=t.strm,f=t.window,u=t.strstart+t.lookahead,c=a,d=void 0,(d=l.avail_in)>c&&(d=c),r=0===d?0:(l.avail_in-=d,n.arraySet(f,l.input,l.next_in,d,u),1===l.state.wrap?l.adler=o(l.adler,f,d,u):2===l.state.wrap&&(l.adler=s(l.adler,f,d,u)),l.next_in+=d,l.total_in+=d,d),t.lookahead+=r,t.lookahead+t.insert>=C)for(h=t.strstart-t.insert,t.ins_h=t.window[h],t.ins_h=(t.ins_h<<t.hash_shift^t.window[h+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[h+C-1])&t.hash_mask,t.prev[h&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=h,h++,t.insert--,!(t.lookahead+t.insert<C)););}while(t.lookahead<z&&0!==t.strm.avail_in)}function ot(t,e){for(var r,i;;){if(t.lookahead<z){if(at(t),t.lookahead<z&&e===l)return Z;if(0===t.lookahead)break}if(r=0,t.lookahead>=C&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+C-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==r&&t.strstart-r<=t.w_size-z&&(t.match_length=nt(t,r)),t.match_length>=C)if(i=a._tr_tally(t,t.strstart-t.match_start,t.match_length-C),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=C){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+C-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(et(t,!1),0===t.strm.avail_out))return Z}return t.insert=t.strstart<C-1?t.strstart:C-1,e===c?(et(t,!0),0===t.strm.avail_out?V:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?Z:Y}function st(t,e){for(var r,i,n;;){if(t.lookahead<z){if(at(t),t.lookahead<z&&e===l)return Z;if(0===t.lookahead)break}if(r=0,t.lookahead>=C&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+C-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=C-1,0!==r&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-z&&(t.match_length=nt(t,r),t.match_length<=5&&(t.strategy===w||t.match_length===C&&t.strstart-t.match_start>4096)&&(t.match_length=C-1)),t.prev_length>=C&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-C,i=a._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-C),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+C-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=C-1,t.strstart++,i&&(et(t,!1),0===t.strm.avail_out))return Z}else if(t.match_available){if((i=a._tr_tally(t,0,t.window[t.strstart-1]))&&et(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return Z}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=a._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<C-1?t.strstart:C-1,e===c?(et(t,!0),0===t.strm.avail_out?V:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?Z:Y}function ht(t,e,r,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=i,this.func=n}function lt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=M,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new n.Buf16(2*O),this.dyn_dtree=new n.Buf16(2*(2*R+1)),this.bl_tree=new n.Buf16(2*(2*P+1)),$(this.dyn_ltree),$(this.dyn_dtree),$(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new n.Buf16(L+1),this.heap=new n.Buf16(2*T+1),$(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new n.Buf16(2*T+1),$(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function ft(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=S,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?N:W,t.adler=2===e.wrap?0:1,e.last_flush=l,a._tr_init(e),p):Q(t,g)}function ut(t){var e,r=ft(t);return r===p&&((e=t.state).window_size=2*e.w_size,$(e.head),e.max_lazy_match=i[e.level].max_lazy,e.good_match=i[e.level].good_length,e.nice_match=i[e.level].nice_length,e.max_chain_length=i[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=C-1,e.match_available=0,e.ins_h=0),r}function ct(t,e,r,i,a,o){if(!t)return g;var s=1;if(e===y&&(e=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),a<1||a>A||r!==M||i<8||i>15||e<0||e>9||o<0||o>E)return Q(t,g);8===i&&(i=9);var h=new lt;return t.state=h,h.strm=t,h.wrap=s,h.gzhead=null,h.w_bits=i,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=a+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+C-1)/C),h.window=new n.Buf8(2*h.w_size),h.head=new n.Buf16(h.hash_size),h.prev=new n.Buf16(h.w_size),h.lit_bufsize=1<<a+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new n.Buf8(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=e,h.strategy=o,h.method=r,ut(t)}i=[new ht(0,0,0,0,(function(t,e){var r=65535;for(r>t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(at(t),0===t.lookahead&&e===l)return Z;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,et(t,!1),0===t.strm.avail_out))return Z;if(t.strstart-t.block_start>=t.w_size-z&&(et(t,!1),0===t.strm.avail_out))return Z}return t.insert=0,e===c?(et(t,!0),0===t.strm.avail_out?V:X):(t.strstart>t.block_start&&(et(t,!1),t.strm.avail_out),Z)})),new ht(4,4,8,4,ot),new ht(4,5,16,8,ot),new ht(4,6,32,32,ot),new ht(4,4,16,16,st),new ht(8,16,32,32,st),new ht(8,16,128,128,st),new ht(8,32,128,256,st),new ht(32,128,258,1024,st),new ht(32,258,258,4096,st)],r.deflateInit=function(t,e){return ct(t,e,M,I,B,k)},r.deflateInit2=ct,r.deflateReset=ut,r.deflateResetKeep=ft,r.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?g:(t.state.gzhead=e,p):g},r.deflate=function(t,e){var r,n,o,h;if(!t||!t.state||e>d||e<0)return t?Q(t,g):g;if(n=t.state,!t.output||!t.input&&0!==t.avail_in||n.status===q&&e!==c)return Q(t,0===t.avail_out?_:g);if(n.strm=t,r=n.last_flush,n.last_flush=e,n.status===N)if(2===n.wrap)t.adler=0,rt(n,31),rt(n,139),rt(n,8),n.gzhead?(rt(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),rt(n,255&n.gzhead.time),rt(n,n.gzhead.time>>8&255),rt(n,n.gzhead.time>>16&255),rt(n,n.gzhead.time>>24&255),rt(n,9===n.level?2:n.strategy>=v||n.level<2?4:0),rt(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(rt(n,255&n.gzhead.extra.length),rt(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=s(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=F):(rt(n,0),rt(n,0),rt(n,0),rt(n,0),rt(n,0),rt(n,9===n.level?2:n.strategy>=v||n.level<2?4:0),rt(n,J),n.status=W);else{var b=M+(n.w_bits-8<<4)<<8;b|=(n.strategy>=v||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(b|=D),b+=31-b%31,n.status=W,it(n,b),0!==n.strstart&&(it(n,t.adler>>>16),it(n,65535&t.adler)),t.adler=1}if(n.status===F)if(n.gzhead.extra){for(o=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),tt(t),o=n.pending,n.pending!==n.pending_buf_size));)rt(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=j)}else n.status=j;if(n.status===j)if(n.gzhead.name){o=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),tt(t),o=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,rt(n,h)}while(0!==h);n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),0===h&&(n.gzindex=0,n.status=G)}else n.status=G;if(n.status===G)if(n.gzhead.comment){o=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),tt(t),o=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,rt(n,h)}while(0!==h);n.gzhead.hcrc&&n.pending>o&&(t.adler=s(t.adler,n.pending_buf,n.pending-o,o)),0===h&&(n.status=H)}else n.status=H;if(n.status===H&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&tt(t),n.pending+2<=n.pending_buf_size&&(rt(n,255&t.adler),rt(n,t.adler>>8&255),t.adler=0,n.status=W)):n.status=W),0!==n.pending){if(tt(t),0===t.avail_out)return n.last_flush=-1,p}else if(0===t.avail_in&&K(e)<=K(r)&&e!==c)return Q(t,_);if(n.status===q&&0!==t.avail_in)return Q(t,_);if(0!==t.avail_in||0!==n.lookahead||e!==l&&n.status!==q){var y=n.strategy===v?function(t,e){for(var r;;){if(0===t.lookahead&&(at(t),0===t.lookahead)){if(e===l)return Z;break}if(t.match_length=0,r=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(et(t,!1),0===t.strm.avail_out))return Z}return t.insert=0,e===c?(et(t,!0),0===t.strm.avail_out?V:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?Z:Y}(n,e):n.strategy===x?function(t,e){for(var r,i,n,o,s=t.window;;){if(t.lookahead<=U){if(at(t),t.lookahead<=U&&e===l)return Z;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=C&&t.strstart>0&&(i=s[n=t.strstart-1])===s[++n]&&i===s[++n]&&i===s[++n]){o=t.strstart+U;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&n<o);t.match_length=U-(o-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=C?(r=a._tr_tally(t,1,t.match_length-C),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=a._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(et(t,!1),0===t.strm.avail_out))return Z}return t.insert=0,e===c?(et(t,!0),0===t.strm.avail_out?V:X):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?Z:Y}(n,e):i[n.level].func(n,e);if(y!==V&&y!==X||(n.status=q),y===Z||y===V)return 0===t.avail_out&&(n.last_flush=-1),p;if(y===Y&&(e===f?a._tr_align(n):e!==d&&(a._tr_stored_block(n,0,0,!1),e===u&&($(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),tt(t),0===t.avail_out))return n.last_flush=-1,p}return e!==c?p:n.wrap<=0?m:(2===n.wrap?(rt(n,255&t.adler),rt(n,t.adler>>8&255),rt(n,t.adler>>16&255),rt(n,t.adler>>24&255),rt(n,255&t.total_in),rt(n,t.total_in>>8&255),rt(n,t.total_in>>16&255),rt(n,t.total_in>>24&255)):(it(n,t.adler>>>16),it(n,65535&t.adler)),tt(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?p:m)},r.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==N&&e!==F&&e!==j&&e!==G&&e!==H&&e!==W&&e!==q?Q(t,g):(t.state=null,e===W?Q(t,b):p):g},r.deflateSetDictionary=function(t,e){var r,i,a,s,h,l,f,u,c=e.length;if(!t||!t.state)return g;if(2===(s=(r=t.state).wrap)||1===s&&r.status!==N||r.lookahead)return g;for(1===s&&(t.adler=o(t.adler,e,c,0)),r.wrap=0,c>=r.w_size&&(0===s&&($(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new n.Buf8(r.w_size),n.arraySet(u,e,c-r.w_size,r.w_size,0),e=u,c=r.w_size),h=t.avail_in,l=t.next_in,f=t.input,t.avail_in=c,t.next_in=0,t.input=e,at(r);r.lookahead>=C;){i=r.strstart,a=r.lookahead-(C-1);do{r.ins_h=(r.ins_h<<r.hash_shift^r.window[i+C-1])&r.hash_mask,r.prev[i&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=i,i++}while(--a);r.strstart=i,r.lookahead=C-1,at(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=C-1,r.match_available=0,t.next_in=l,t.input=f,t.avail_in=h,r.wrap=s,p},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":49,\"./adler32\":50,\"./crc32\":52,\"./messages\":57,\"./trees\":58}],54:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,i,n,a,o,s,h,l,f,u,c,d,p,m,g,b,_,y,w,v,x,E,k,S,M;r=t.state,i=t.next_in,S=t.input,n=i+(t.avail_in-5),a=t.next_out,M=t.output,o=a-(e-t.avail_out),s=a+(t.avail_out-257),h=r.dmax,l=r.wsize,f=r.whave,u=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,g=r.distcode,b=(1<<r.lenbits)-1,_=(1<<r.distbits)-1;t:do{p<15&&(d+=S[i++]<<p,p+=8,d+=S[i++]<<p,p+=8),y=m[d&b];e:for(;;){if(d>>>=w=y>>>24,p-=w,0==(w=y>>>16&255))M[a++]=65535&y;else{if(!(16&w)){if(0==(64&w)){y=m[(65535&y)+(d&(1<<w)-1)];continue e}if(32&w){r.mode=12;break t}t.msg=\"invalid literal/length code\",r.mode=30;break t}v=65535&y,(w&=15)&&(p<w&&(d+=S[i++]<<p,p+=8),v+=d&(1<<w)-1,d>>>=w,p-=w),p<15&&(d+=S[i++]<<p,p+=8,d+=S[i++]<<p,p+=8),y=g[d&_];r:for(;;){if(d>>>=w=y>>>24,p-=w,!(16&(w=y>>>16&255))){if(0==(64&w)){y=g[(65535&y)+(d&(1<<w)-1)];continue r}t.msg=\"invalid distance code\",r.mode=30;break t}if(x=65535&y,p<(w&=15)&&(d+=S[i++]<<p,(p+=8)<w&&(d+=S[i++]<<p,p+=8)),(x+=d&(1<<w)-1)>h){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(d>>>=w,p-=w,x>(w=a-o)){if((w=x-w)>f&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(E=0,k=c,0===u){if(E+=l-w,w<v){v-=w;do{M[a++]=c[E++]}while(--w);E=a-x,k=M}}else if(u<w){if(E+=l+u-w,(w-=u)<v){v-=w;do{M[a++]=c[E++]}while(--w);if(E=0,u<v){v-=w=u;do{M[a++]=c[E++]}while(--w);E=a-x,k=M}}}else if(E+=u-w,w<v){v-=w;do{M[a++]=c[E++]}while(--w);E=a-x,k=M}for(;v>2;)M[a++]=k[E++],M[a++]=k[E++],M[a++]=k[E++],v-=3;v&&(M[a++]=k[E++],v>1&&(M[a++]=k[E++]))}else{E=a-x;do{M[a++]=M[E++],M[a++]=M[E++],M[a++]=M[E++],v-=3}while(v>2);v&&(M[a++]=M[E++],v>1&&(M[a++]=M[E++]))}break}}break}}while(i<n&&a<s);i-=v=p>>3,d&=(1<<(p-=v<<3))-1,t.next_in=i,t.next_out=a,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=a<s?s-a+257:257-(a-s),r.hold=d,r.bits=p}},{}],55:[function(t,e,r){\"use strict\";var i=t(\"../utils/common\"),n=t(\"./adler32\"),a=t(\"./crc32\"),o=t(\"./inffast\"),s=t(\"./inftrees\"),h=0,l=1,f=2,u=4,c=5,d=6,p=0,m=1,g=2,b=-2,_=-3,y=-4,w=-5,v=8,x=1,E=2,k=3,S=4,M=5,A=6,I=7,B=8,T=9,R=10,P=11,O=12,L=13,C=14,U=15,z=16,D=17,N=18,F=19,j=20,G=21,H=22,W=23,q=24,Z=25,Y=26,V=27,X=28,J=29,Q=30,K=31,$=852,tt=592,et=15;function rt(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function it(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function nt(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=x,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new i.Buf32($),e.distcode=e.distdyn=new i.Buf32(tt),e.sane=1,e.back=-1,p):b}function at(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,nt(t)):b}function ot(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?b:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=r,i.wbits=e,at(t))):b}function st(t,e){var r,i;return t?(i=new it,t.state=i,i.window=null,(r=ot(t,e))!==p&&(t.state=null),r):b}var ht,lt,ft=!0;function ut(t){if(ft){var e;for(ht=new i.Buf32(512),lt=new i.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(s(l,t.lens,0,288,ht,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;s(f,t.lens,0,32,lt,0,t.work,{bits:5}),ft=!1}t.lencode=ht,t.lenbits=9,t.distcode=lt,t.distbits=5}function ct(t,e,r,n){var a,o=t.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new i.Buf8(o.wsize)),n>=o.wsize?(i.arraySet(o.window,e,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>n&&(a=n),i.arraySet(o.window,e,r-n,a,o.wnext),(n-=a)?(i.arraySet(o.window,e,r-n,n,0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0}r.inflateReset=at,r.inflateReset2=ot,r.inflateResetKeep=nt,r.inflateInit=function(t){return st(t,et)},r.inflateInit2=st,r.inflate=function(t,e){var r,$,tt,et,it,nt,at,ot,st,ht,lt,ft,dt,pt,mt,gt,bt,_t,yt,wt,vt,xt,Et,kt,St=0,Mt=new i.Buf8(4),At=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return b;(r=t.state).mode===O&&(r.mode=L),it=t.next_out,tt=t.output,at=t.avail_out,et=t.next_in,$=t.input,nt=t.avail_in,ot=r.hold,st=r.bits,ht=nt,lt=at,xt=p;t:for(;;)switch(r.mode){case x:if(0===r.wrap){r.mode=L;break}for(;st<16;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}if(2&r.wrap&&35615===ot){r.check=0,Mt[0]=255&ot,Mt[1]=ot>>>8&255,r.check=a(r.check,Mt,2,0),ot=0,st=0,r.mode=E;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&ot)<<8)+(ot>>8))%31){t.msg=\"incorrect header check\",r.mode=Q;break}if((15&ot)!==v){t.msg=\"unknown compression method\",r.mode=Q;break}if(st-=4,vt=8+(15&(ot>>>=4)),0===r.wbits)r.wbits=vt;else if(vt>r.wbits){t.msg=\"invalid window size\",r.mode=Q;break}r.dmax=1<<vt,t.adler=r.check=1,r.mode=512&ot?R:O,ot=0,st=0;break;case E:for(;st<16;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}if(r.flags=ot,(255&r.flags)!==v){t.msg=\"unknown compression method\",r.mode=Q;break}if(57344&r.flags){t.msg=\"unknown header flags set\",r.mode=Q;break}r.head&&(r.head.text=ot>>8&1),512&r.flags&&(Mt[0]=255&ot,Mt[1]=ot>>>8&255,r.check=a(r.check,Mt,2,0)),ot=0,st=0,r.mode=k;case k:for(;st<32;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}r.head&&(r.head.time=ot),512&r.flags&&(Mt[0]=255&ot,Mt[1]=ot>>>8&255,Mt[2]=ot>>>16&255,Mt[3]=ot>>>24&255,r.check=a(r.check,Mt,4,0)),ot=0,st=0,r.mode=S;case S:for(;st<16;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}r.head&&(r.head.xflags=255&ot,r.head.os=ot>>8),512&r.flags&&(Mt[0]=255&ot,Mt[1]=ot>>>8&255,r.check=a(r.check,Mt,2,0)),ot=0,st=0,r.mode=M;case M:if(1024&r.flags){for(;st<16;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}r.length=ot,r.head&&(r.head.extra_len=ot),512&r.flags&&(Mt[0]=255&ot,Mt[1]=ot>>>8&255,r.check=a(r.check,Mt,2,0)),ot=0,st=0}else r.head&&(r.head.extra=null);r.mode=A;case A:if(1024&r.flags&&((ft=r.length)>nt&&(ft=nt),ft&&(r.head&&(vt=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),i.arraySet(r.head.extra,$,et,ft,vt)),512&r.flags&&(r.check=a(r.check,$,ft,et)),nt-=ft,et+=ft,r.length-=ft),r.length))break t;r.length=0,r.mode=I;case I:if(2048&r.flags){if(0===nt)break t;ft=0;do{vt=$[et+ft++],r.head&&vt&&r.length<65536&&(r.head.name+=String.fromCharCode(vt))}while(vt&&ft<nt);if(512&r.flags&&(r.check=a(r.check,$,ft,et)),nt-=ft,et+=ft,vt)break t}else r.head&&(r.head.name=null);r.length=0,r.mode=B;case B:if(4096&r.flags){if(0===nt)break t;ft=0;do{vt=$[et+ft++],r.head&&vt&&r.length<65536&&(r.head.comment+=String.fromCharCode(vt))}while(vt&&ft<nt);if(512&r.flags&&(r.check=a(r.check,$,ft,et)),nt-=ft,et+=ft,vt)break t}else r.head&&(r.head.comment=null);r.mode=T;case T:if(512&r.flags){for(;st<16;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}if(ot!==(65535&r.check)){t.msg=\"header crc mismatch\",r.mode=Q;break}ot=0,st=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=O;break;case R:for(;st<32;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}t.adler=r.check=rt(ot),ot=0,st=0,r.mode=P;case P:if(0===r.havedict)return t.next_out=it,t.avail_out=at,t.next_in=et,t.avail_in=nt,r.hold=ot,r.bits=st,g;t.adler=r.check=1,r.mode=O;case O:if(e===c||e===d)break t;case L:if(r.last){ot>>>=7&st,st-=7&st,r.mode=V;break}for(;st<3;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}switch(r.last=1&ot,st-=1,3&(ot>>>=1)){case 0:r.mode=C;break;case 1:if(ut(r),r.mode=j,e===d){ot>>>=2,st-=2;break t}break;case 2:r.mode=D;break;case 3:t.msg=\"invalid block type\",r.mode=Q}ot>>>=2,st-=2;break;case C:for(ot>>>=7&st,st-=7&st;st<32;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}if((65535&ot)!=(ot>>>16^65535)){t.msg=\"invalid stored block lengths\",r.mode=Q;break}if(r.length=65535&ot,ot=0,st=0,r.mode=U,e===d)break t;case U:r.mode=z;case z:if(ft=r.length){if(ft>nt&&(ft=nt),ft>at&&(ft=at),0===ft)break t;i.arraySet(tt,$,et,ft,it),nt-=ft,et+=ft,at-=ft,it+=ft,r.length-=ft;break}r.mode=O;break;case D:for(;st<14;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}if(r.nlen=257+(31&ot),ot>>>=5,st-=5,r.ndist=1+(31&ot),ot>>>=5,st-=5,r.ncode=4+(15&ot),ot>>>=4,st-=4,r.nlen>286||r.ndist>30){t.msg=\"too many length or distance symbols\",r.mode=Q;break}r.have=0,r.mode=N;case N:for(;r.have<r.ncode;){for(;st<3;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}r.lens[At[r.have++]]=7&ot,ot>>>=3,st-=3}for(;r.have<19;)r.lens[At[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Et={bits:r.lenbits},xt=s(h,r.lens,0,19,r.lencode,0,r.work,Et),r.lenbits=Et.bits,xt){t.msg=\"invalid code lengths set\",r.mode=Q;break}r.have=0,r.mode=F;case F:for(;r.have<r.nlen+r.ndist;){for(;gt=(St=r.lencode[ot&(1<<r.lenbits)-1])>>>16&255,bt=65535&St,!((mt=St>>>24)<=st);){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}if(bt<16)ot>>>=mt,st-=mt,r.lens[r.have++]=bt;else{if(16===bt){for(kt=mt+2;st<kt;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}if(ot>>>=mt,st-=mt,0===r.have){t.msg=\"invalid bit length repeat\",r.mode=Q;break}vt=r.lens[r.have-1],ft=3+(3&ot),ot>>>=2,st-=2}else if(17===bt){for(kt=mt+3;st<kt;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}st-=mt,vt=0,ft=3+(7&(ot>>>=mt)),ot>>>=3,st-=3}else{for(kt=mt+7;st<kt;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}st-=mt,vt=0,ft=11+(127&(ot>>>=mt)),ot>>>=7,st-=7}if(r.have+ft>r.nlen+r.ndist){t.msg=\"invalid bit length repeat\",r.mode=Q;break}for(;ft--;)r.lens[r.have++]=vt}}if(r.mode===Q)break;if(0===r.lens[256]){t.msg=\"invalid code -- missing end-of-block\",r.mode=Q;break}if(r.lenbits=9,Et={bits:r.lenbits},xt=s(l,r.lens,0,r.nlen,r.lencode,0,r.work,Et),r.lenbits=Et.bits,xt){t.msg=\"invalid literal/lengths set\",r.mode=Q;break}if(r.distbits=6,r.distcode=r.distdyn,Et={bits:r.distbits},xt=s(f,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Et),r.distbits=Et.bits,xt){t.msg=\"invalid distances set\",r.mode=Q;break}if(r.mode=j,e===d)break t;case j:r.mode=G;case G:if(nt>=6&&at>=258){t.next_out=it,t.avail_out=at,t.next_in=et,t.avail_in=nt,r.hold=ot,r.bits=st,o(t,lt),it=t.next_out,tt=t.output,at=t.avail_out,et=t.next_in,$=t.input,nt=t.avail_in,ot=r.hold,st=r.bits,r.mode===O&&(r.back=-1);break}for(r.back=0;gt=(St=r.lencode[ot&(1<<r.lenbits)-1])>>>16&255,bt=65535&St,!((mt=St>>>24)<=st);){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}if(gt&&0==(240&gt)){for(_t=mt,yt=gt,wt=bt;gt=(St=r.lencode[wt+((ot&(1<<_t+yt)-1)>>_t)])>>>16&255,bt=65535&St,!(_t+(mt=St>>>24)<=st);){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}ot>>>=_t,st-=_t,r.back+=_t}if(ot>>>=mt,st-=mt,r.back+=mt,r.length=bt,0===gt){r.mode=Y;break}if(32&gt){r.back=-1,r.mode=O;break}if(64&gt){t.msg=\"invalid literal/length code\",r.mode=Q;break}r.extra=15&gt,r.mode=H;case H:if(r.extra){for(kt=r.extra;st<kt;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}r.length+=ot&(1<<r.extra)-1,ot>>>=r.extra,st-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=W;case W:for(;gt=(St=r.distcode[ot&(1<<r.distbits)-1])>>>16&255,bt=65535&St,!((mt=St>>>24)<=st);){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}if(0==(240&gt)){for(_t=mt,yt=gt,wt=bt;gt=(St=r.distcode[wt+((ot&(1<<_t+yt)-1)>>_t)])>>>16&255,bt=65535&St,!(_t+(mt=St>>>24)<=st);){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}ot>>>=_t,st-=_t,r.back+=_t}if(ot>>>=mt,st-=mt,r.back+=mt,64&gt){t.msg=\"invalid distance code\",r.mode=Q;break}r.offset=bt,r.extra=15&gt,r.mode=q;case q:if(r.extra){for(kt=r.extra;st<kt;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}r.offset+=ot&(1<<r.extra)-1,ot>>>=r.extra,st-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg=\"invalid distance too far back\",r.mode=Q;break}r.mode=Z;case Z:if(0===at)break t;if(ft=lt-at,r.offset>ft){if((ft=r.offset-ft)>r.whave&&r.sane){t.msg=\"invalid distance too far back\",r.mode=Q;break}ft>r.wnext?(ft-=r.wnext,dt=r.wsize-ft):dt=r.wnext-ft,ft>r.length&&(ft=r.length),pt=r.window}else pt=tt,dt=it-r.offset,ft=r.length;ft>at&&(ft=at),at-=ft,r.length-=ft;do{tt[it++]=pt[dt++]}while(--ft);0===r.length&&(r.mode=G);break;case Y:if(0===at)break t;tt[it++]=r.length,at--,r.mode=G;break;case V:if(r.wrap){for(;st<32;){if(0===nt)break t;nt--,ot|=$[et++]<<st,st+=8}if(lt-=at,t.total_out+=lt,r.total+=lt,lt&&(t.adler=r.check=r.flags?a(r.check,tt,lt,it-lt):n(r.check,tt,lt,it-lt)),lt=at,(r.flags?ot:rt(ot))!==r.check){t.msg=\"incorrect data check\",r.mode=Q;break}ot=0,st=0}r.mode=X;case X:if(r.wrap&&r.flags){for(;st<32;){if(0===nt)break t;nt--,ot+=$[et++]<<st,st+=8}if(ot!==(4294967295&r.total)){t.msg=\"incorrect length check\",r.mode=Q;break}ot=0,st=0}r.mode=J;case J:xt=m;break t;case Q:xt=_;break t;case K:return y;default:return b}return t.next_out=it,t.avail_out=at,t.next_in=et,t.avail_in=nt,r.hold=ot,r.bits=st,(r.wsize||lt!==t.avail_out&&r.mode<Q&&(r.mode<V||e!==u))&&ct(t,t.output,t.next_out,lt-t.avail_out)?(r.mode=K,y):(ht-=t.avail_in,lt-=t.avail_out,t.total_in+=ht,t.total_out+=lt,r.total+=lt,r.wrap&&lt&&(t.adler=r.check=r.flags?a(r.check,tt,lt,t.next_out-lt):n(r.check,tt,lt,t.next_out-lt)),t.data_type=r.bits+(r.last?64:0)+(r.mode===O?128:0)+(r.mode===j||r.mode===U?256:0),(0===ht&&0===lt||e===u)&&xt===p&&(xt=w),xt)},r.inflateEnd=function(t){if(!t||!t.state)return b;var e=t.state;return e.window&&(e.window=null),t.state=null,p},r.inflateGetHeader=function(t,e){var r;return t&&t.state?0==(2&(r=t.state).wrap)?b:(r.head=e,e.done=!1,p):b},r.inflateSetDictionary=function(t,e){var r,i=e.length;return t&&t.state?0!==(r=t.state).wrap&&r.mode!==P?b:r.mode===P&&n(1,e,i,0)!==r.check?_:ct(t,e,i,i)?(r.mode=K,y):(r.havedict=1,p):b},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":49,\"./adler32\":50,\"./crc32\":52,\"./inffast\":54,\"./inftrees\":56}],56:[function(t,e,r){\"use strict\";var i=t(\"../utils/common\"),n=15,a=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],h=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(t,e,r,l,f,u,c,d){var p,m,g,b,_,y,w,v,x,E=d.bits,k=0,S=0,M=0,A=0,I=0,B=0,T=0,R=0,P=0,O=0,L=null,C=0,U=new i.Buf16(16),z=new i.Buf16(16),D=null,N=0;for(k=0;k<=n;k++)U[k]=0;for(S=0;S<l;S++)U[e[r+S]]++;for(I=E,A=n;A>=1&&0===U[A];A--);if(I>A&&(I=A),0===A)return f[u++]=20971520,f[u++]=20971520,d.bits=1,0;for(M=1;M<A&&0===U[M];M++);for(I<M&&(I=M),R=1,k=1;k<=n;k++)if(R<<=1,(R-=U[k])<0)return-1;if(R>0&&(0===t||1!==A))return-1;for(z[1]=0,k=1;k<n;k++)z[k+1]=z[k]+U[k];for(S=0;S<l;S++)0!==e[r+S]&&(c[z[e[r+S]]++]=S);if(0===t?(L=D=c,y=19):1===t?(L=a,C-=257,D=o,N-=257,y=256):(L=s,D=h,y=-1),O=0,S=0,k=M,_=u,B=I,T=0,g=-1,b=(P=1<<I)-1,1===t&&P>852||2===t&&P>592)return 1;for(;;){w=k-T,c[S]<y?(v=0,x=c[S]):c[S]>y?(v=D[N+c[S]],x=L[C+c[S]]):(v=96,x=0),p=1<<k-T,M=m=1<<B;do{f[_+(O>>T)+(m-=p)]=w<<24|v<<16|x|0}while(0!==m);for(p=1<<k-1;O&p;)p>>=1;if(0!==p?(O&=p-1,O+=p):O=0,S++,0==--U[k]){if(k===A)break;k=e[r+c[S]]}if(k>I&&(O&b)!==g){for(0===T&&(T=I),_+=M,R=1<<(B=k-T);B+T<A&&!((R-=U[B+T])<=0);)B++,R<<=1;if(P+=1<<B,1===t&&P>852||2===t&&P>592)return 1;f[g=O&b]=I<<24|B<<16|_-u|0}}return 0!==O&&(f[_+O]=k-T<<24|64<<16|0),d.bits=I,0}},{\"../utils/common\":49}],57:[function(t,e,r){\"use strict\";e.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],58:[function(t,e,r){\"use strict\";var i=t(\"../utils/common\"),n=4,a=0,o=1,s=2;function h(t){for(var e=t.length;--e>=0;)t[e]=0}var l=0,f=1,u=2,c=29,d=256,p=d+1+c,m=30,g=19,b=2*p+1,_=15,y=16,w=7,v=256,x=16,E=17,k=18,S=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],M=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],A=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],I=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],B=new Array(2*(p+2));h(B);var T=new Array(2*m);h(T);var R=new Array(512);h(R);var P=new Array(256);h(P);var O=new Array(c);h(O);var L,C,U,z=new Array(m);function D(t,e,r,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function N(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function F(t){return t<256?R[t]:R[256+(t>>>7)]}function j(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function G(t,e,r){t.bi_valid>y-r?(t.bi_buf|=e<<t.bi_valid&65535,j(t,t.bi_buf),t.bi_buf=e>>y-t.bi_valid,t.bi_valid+=r-y):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r)}function H(t,e,r){G(t,r[2*e],r[2*e+1])}function W(t,e){var r=0;do{r|=1&t,t>>>=1,r<<=1}while(--e>0);return r>>>1}function q(t,e,r){var i,n,a=new Array(_+1),o=0;for(i=1;i<=_;i++)a[i]=o=o+r[i-1]<<1;for(n=0;n<=e;n++){var s=t[2*n+1];0!==s&&(t[2*n]=W(a[s]++,s))}}function Z(t){var e;for(e=0;e<p;e++)t.dyn_ltree[2*e]=0;for(e=0;e<m;e++)t.dyn_dtree[2*e]=0;for(e=0;e<g;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*v]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function Y(t){t.bi_valid>8?j(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function V(t,e,r,i){var n=2*e,a=2*r;return t[n]<t[a]||t[n]===t[a]&&i[e]<=i[r]}function X(t,e,r){for(var i=t.heap[r],n=r<<1;n<=t.heap_len&&(n<t.heap_len&&V(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!V(e,i,t.heap[n],t.depth));)t.heap[r]=t.heap[n],r=n,n<<=1;t.heap[r]=i}function J(t,e,r){var i,n,a,o,s=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*s]<<8|t.pending_buf[t.d_buf+2*s+1],n=t.pending_buf[t.l_buf+s],s++,0===i?H(t,n,e):(H(t,(a=P[n])+d+1,e),0!==(o=S[a])&&G(t,n-=O[a],o),H(t,a=F(--i),r),0!==(o=M[a])&&G(t,i-=z[a],o))}while(s<t.last_lit);H(t,v,e)}function Q(t,e){var r,i,n,a=e.dyn_tree,o=e.stat_desc.static_tree,s=e.stat_desc.has_stree,h=e.stat_desc.elems,l=-1;for(t.heap_len=0,t.heap_max=b,r=0;r<h;r++)0!==a[2*r]?(t.heap[++t.heap_len]=l=r,t.depth[r]=0):a[2*r+1]=0;for(;t.heap_len<2;)a[2*(n=t.heap[++t.heap_len]=l<2?++l:0)]=1,t.depth[n]=0,t.opt_len--,s&&(t.static_len-=o[2*n+1]);for(e.max_code=l,r=t.heap_len>>1;r>=1;r--)X(t,a,r);n=h;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],X(t,a,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,a[2*n]=a[2*r]+a[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,a[2*r+1]=a[2*i+1]=n,t.heap[1]=n++,X(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,a,o,s,h=e.dyn_tree,l=e.max_code,f=e.stat_desc.static_tree,u=e.stat_desc.has_stree,c=e.stat_desc.extra_bits,d=e.stat_desc.extra_base,p=e.stat_desc.max_length,m=0;for(a=0;a<=_;a++)t.bl_count[a]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<b;r++)(a=h[2*h[2*(i=t.heap[r])+1]+1]+1)>p&&(a=p,m++),h[2*i+1]=a,i>l||(t.bl_count[a]++,o=0,i>=d&&(o=c[i-d]),s=h[2*i],t.opt_len+=s*(a+o),u&&(t.static_len+=s*(f[2*i+1]+o)));if(0!==m){do{for(a=p-1;0===t.bl_count[a];)a--;t.bl_count[a]--,t.bl_count[a+1]+=2,t.bl_count[p]--,m-=2}while(m>0);for(a=p;0!==a;a--)for(i=t.bl_count[a];0!==i;)(n=t.heap[--r])>l||(h[2*n+1]!==a&&(t.opt_len+=(a-h[2*n+1])*h[2*n],h[2*n+1]=a),i--)}}(t,e),q(a,l,t.bl_count)}function K(t,e,r){var i,n,a=-1,o=e[1],s=0,h=7,l=4;for(0===o&&(h=138,l=3),e[2*(r+1)+1]=65535,i=0;i<=r;i++)n=o,o=e[2*(i+1)+1],++s<h&&n===o||(s<l?t.bl_tree[2*n]+=s:0!==n?(n!==a&&t.bl_tree[2*n]++,t.bl_tree[2*x]++):s<=10?t.bl_tree[2*E]++:t.bl_tree[2*k]++,s=0,a=n,0===o?(h=138,l=3):n===o?(h=6,l=3):(h=7,l=4))}function $(t,e,r){var i,n,a=-1,o=e[1],s=0,h=7,l=4;for(0===o&&(h=138,l=3),i=0;i<=r;i++)if(n=o,o=e[2*(i+1)+1],!(++s<h&&n===o)){if(s<l)do{H(t,n,t.bl_tree)}while(0!=--s);else 0!==n?(n!==a&&(H(t,n,t.bl_tree),s--),H(t,x,t.bl_tree),G(t,s-3,2)):s<=10?(H(t,E,t.bl_tree),G(t,s-3,3)):(H(t,k,t.bl_tree),G(t,s-11,7));s=0,a=n,0===o?(h=138,l=3):n===o?(h=6,l=3):(h=7,l=4)}}h(z);var tt=!1;function et(t,e,r,n){G(t,(l<<1)+(n?1:0),3),function(t,e,r,n){Y(t),n&&(j(t,r),j(t,~r)),i.arraySet(t.pending_buf,t.window,e,r,t.pending),t.pending+=r}(t,e,r,!0)}r._tr_init=function(t){tt||(function(){var t,e,r,i,n,a=new Array(_+1);for(r=0,i=0;i<c-1;i++)for(O[i]=r,t=0;t<1<<S[i];t++)P[r++]=i;for(P[r-1]=i,n=0,i=0;i<16;i++)for(z[i]=n,t=0;t<1<<M[i];t++)R[n++]=i;for(n>>=7;i<m;i++)for(z[i]=n<<7,t=0;t<1<<M[i]-7;t++)R[256+n++]=i;for(e=0;e<=_;e++)a[e]=0;for(t=0;t<=143;)B[2*t+1]=8,t++,a[8]++;for(;t<=255;)B[2*t+1]=9,t++,a[9]++;for(;t<=279;)B[2*t+1]=7,t++,a[7]++;for(;t<=287;)B[2*t+1]=8,t++,a[8]++;for(q(B,p+1,a),t=0;t<m;t++)T[2*t+1]=5,T[2*t]=W(t,5);L=new D(B,S,d+1,p,_),C=new D(T,M,0,m,_),U=new D(new Array(0),A,0,g,w)}(),tt=!0),t.l_desc=new N(t.dyn_ltree,L),t.d_desc=new N(t.dyn_dtree,C),t.bl_desc=new N(t.bl_tree,U),t.bi_buf=0,t.bi_valid=0,Z(t)},r._tr_stored_block=et,r._tr_flush_block=function(t,e,r,i){var h,l,c=0;t.level>0?(t.strm.data_type===s&&(t.strm.data_type=function(t){var e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return a;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return o;for(e=32;e<d;e++)if(0!==t.dyn_ltree[2*e])return o;return a}(t)),Q(t,t.l_desc),Q(t,t.d_desc),c=function(t){var e;for(K(t,t.dyn_ltree,t.l_desc.max_code),K(t,t.dyn_dtree,t.d_desc.max_code),Q(t,t.bl_desc),e=g-1;e>=3&&0===t.bl_tree[2*I[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),h=t.opt_len+3+7>>>3,(l=t.static_len+3+7>>>3)<=h&&(h=l)):h=l=r+5,r+4<=h&&-1!==e?et(t,e,r,i):t.strategy===n||l===h?(G(t,(f<<1)+(i?1:0),3),J(t,B,T)):(G(t,(u<<1)+(i?1:0),3),function(t,e,r,i){var n;for(G(t,e-257,5),G(t,r-1,5),G(t,i-4,4),n=0;n<i;n++)G(t,t.bl_tree[2*I[n]+1],3);$(t,t.dyn_ltree,e-1),$(t,t.dyn_dtree,r-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,c+1),J(t,t.dyn_ltree,t.dyn_dtree)),Z(t),i&&Y(t)},r._tr_tally=function(t,e,r){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(P[r]+d+1)]++,t.dyn_dtree[2*F(e)]++),t.last_lit===t.lit_bufsize-1},r._tr_align=function(t){G(t,f<<1,3),H(t,v,B),function(t){16===t.bi_valid?(j(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},{\"../utils/common\":49}],59:[function(t,e,r){\"use strict\";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],60:[function(t,e,r){var i,n,a=e.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function s(){throw new Error(\"clearTimeout has not been defined\")}function h(t){if(i===setTimeout)return setTimeout(t,0);if((i===o||!i)&&setTimeout)return i=setTimeout,setTimeout(t,0);try{return i(t,0)}catch(e){try{return i.call(null,t,0)}catch(e){return i.call(this,t,0)}}}!function(){try{i=\"function\"==typeof setTimeout?setTimeout:o}catch(t){i=o}try{n=\"function\"==typeof clearTimeout?clearTimeout:s}catch(t){n=s}}();var l,f=[],u=!1,c=-1;function d(){u&&l&&(u=!1,l.length?f=l.concat(f):c=-1,f.length&&p())}function p(){if(!u){var t=h(d);u=!0;for(var e=f.length;e;){for(l=f,f=[];++c<e;)l&&l[c].run();c=-1,e=f.length}l=null,u=!1,function(t){if(n===clearTimeout)return clearTimeout(t);if((n===s||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(t);try{n(t)}catch(e){try{return n.call(null,t)}catch(e){return n.call(this,t)}}}(t)}}function m(t,e){this.fun=t,this.array=e}function g(){}a.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];f.push(new m(t,e)),1!==f.length||u||h(p)},m.prototype.run=function(){this.fun.apply(null,this.array)},a.title=\"browser\",a.browser=!0,a.env={},a.argv=[],a.version=\"\",a.versions={},a.on=g,a.addListener=g,a.once=g,a.off=g,a.removeListener=g,a.removeAllListeners=g,a.emit=g,a.prependListener=g,a.prependOnceListener=g,a.listeners=function(t){return[]},a.binding=function(t){throw new Error(\"process.binding is not supported\")},a.cwd=function(){return\"/\"},a.chdir=function(t){throw new Error(\"process.chdir is not supported\")},a.umask=function(){return 0}},{}],61:[function(t,e,r){e.exports=n;var i=t(\"events\").EventEmitter;function n(){i.call(this)}t(\"inherits\")(n,i),n.Readable=t(\"readable-stream/lib/_stream_readable.js\"),n.Writable=t(\"readable-stream/lib/_stream_writable.js\"),n.Duplex=t(\"readable-stream/lib/_stream_duplex.js\"),n.Transform=t(\"readable-stream/lib/_stream_transform.js\"),n.PassThrough=t(\"readable-stream/lib/_stream_passthrough.js\"),n.finished=t(\"readable-stream/lib/internal/streams/end-of-stream.js\"),n.pipeline=t(\"readable-stream/lib/internal/streams/pipeline.js\"),n.Stream=n,n.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on(\"data\",n),t.on(\"drain\",a),t._isStdio||e&&!1===e.end||(r.on(\"end\",s),r.on(\"close\",h));var o=!1;function s(){o||(o=!0,t.end())}function h(){o||(o=!0,\"function\"==typeof t.destroy&&t.destroy())}function l(t){if(f(),0===i.listenerCount(this,\"error\"))throw t}function f(){r.removeListener(\"data\",n),t.removeListener(\"drain\",a),r.removeListener(\"end\",s),r.removeListener(\"close\",h),r.removeListener(\"error\",l),t.removeListener(\"error\",l),r.removeListener(\"end\",f),r.removeListener(\"close\",f),t.removeListener(\"close\",f)}return r.on(\"error\",l),t.on(\"error\",l),r.on(\"end\",f),r.on(\"close\",f),t.on(\"close\",f),t.emit(\"pipe\",r),t}},{events:38,inherits:45,\"readable-stream/lib/_stream_duplex.js\":63,\"readable-stream/lib/_stream_passthrough.js\":64,\"readable-stream/lib/_stream_readable.js\":65,\"readable-stream/lib/_stream_transform.js\":66,\"readable-stream/lib/_stream_writable.js\":67,\"readable-stream/lib/internal/streams/end-of-stream.js\":71,\"readable-stream/lib/internal/streams/pipeline.js\":73}],62:[function(t,e,r){\"use strict\";var i={};function n(t,e,r){r||(r=Error);var n=function(t){function r(r,i,n){return t.call(this,function(t,r,i){return\"string\"==typeof e?e:e(t,r,i)}(r,i,n))||this}return n=t,(i=r).prototype=Object.create(n.prototype),i.prototype.constructor=i,i.__proto__=n,r;var i,n}(r);n.prototype.name=r.name,n.prototype.code=t,i[t]=n}function a(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?\"one of \".concat(e,\" \").concat(t.slice(0,r-1).join(\", \"),\", or \")+t[r-1]:2===r?\"one of \".concat(e,\" \").concat(t[0],\" or \").concat(t[1]):\"of \".concat(e,\" \").concat(t[0])}return\"of \".concat(e,\" \").concat(String(t))}n(\"ERR_INVALID_OPT_VALUE\",(function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'}),TypeError),n(\"ERR_INVALID_ARG_TYPE\",(function(t,e,r){var i,n,o,s;if(\"string\"==typeof e&&(o=\"not \",e.substr(!s||s<0?0:+s,o.length)===o)?(i=\"must not be\",e=e.replace(/^not /,\"\")):i=\"must be\",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t,\" argument\"))n=\"The \".concat(t,\" \").concat(i,\" \").concat(a(e,\"type\"));else{var h=function(t,e,r){return\"number\"!=typeof r&&(r=0),!(r+e.length>t.length)&&-1!==t.indexOf(e,r)}(t,\".\")?\"property\":\"argument\";n='The \"'.concat(t,'\" ').concat(h,\" \").concat(i,\" \").concat(a(e,\"type\"))}return n+\". Received type \".concat(typeof r)}),TypeError),n(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),n(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(t){return\"The \"+t+\" method is not implemented\"})),n(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),n(\"ERR_STREAM_DESTROYED\",(function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"})),n(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),n(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),n(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),n(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),n(\"ERR_UNKNOWN_ENCODING\",(function(t){return\"Unknown encoding: \"+t}),TypeError),n(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),e.exports.codes=i},{}],63:[function(t,e,r){(function(r){(function(){\"use strict\";var i=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};e.exports=l;var n=t(\"./_stream_readable\"),a=t(\"./_stream_writable\");t(\"inherits\")(l,n);for(var o=i(a.prototype),s=0;s<o.length;s++){var h=o[s];l.prototype[h]||(l.prototype[h]=a.prototype[h])}function l(t){if(!(this instanceof l))return new l(t);n.call(this,t),a.call(this,t),this.allowHalfOpen=!0,t&&(!1===t.readable&&(this.readable=!1),!1===t.writable&&(this.writable=!1),!1===t.allowHalfOpen&&(this.allowHalfOpen=!1,this.once(\"end\",f)))}function f(){this._writableState.ended||r.nextTick(u,this)}function u(t){t.end()}Object.defineProperty(l.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(l.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(l.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}})}).call(this)}).call(this,t(\"_process\"))},{\"./_stream_readable\":65,\"./_stream_writable\":67,_process:60,inherits:45}],64:[function(t,e,r){\"use strict\";e.exports=n;var i=t(\"./_stream_transform\");function n(t){if(!(this instanceof n))return new n(t);i.call(this,t)}t(\"inherits\")(n,i),n.prototype._transform=function(t,e,r){r(null,t)}},{\"./_stream_transform\":66,inherits:45}],65:[function(t,e,i){(function(r,i){(function(){\"use strict\";var n;e.exports=S,S.ReadableState=k,t(\"events\").EventEmitter;var a=function(t,e){return t.listeners(e).length},o=t(\"./internal/streams/stream\"),s=t(\"buffer\").Buffer,h=i.Uint8Array||function(){};var l,f=t(\"util\");l=f&&f.debuglog?f.debuglog(\"stream\"):function(){};var u,c,d,p=t(\"./internal/streams/buffer_list\"),m=t(\"./internal/streams/destroy\"),g=t(\"./internal/streams/state\").getHighWaterMark,b=t(\"../errors\").codes,_=b.ERR_INVALID_ARG_TYPE,y=b.ERR_STREAM_PUSH_AFTER_EOF,w=b.ERR_METHOD_NOT_IMPLEMENTED,v=b.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;t(\"inherits\")(S,o);var x=m.errorOrDestroy,E=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function k(e,r,i){n=n||t(\"./_stream_duplex\"),e=e||{},\"boolean\"!=typeof i&&(i=r instanceof n),this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=g(this,e,\"readableHighWaterMark\",i),this.buffer=new p,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(u||(u=t(\"string_decoder/\").StringDecoder),this.decoder=new u(e.encoding),this.encoding=e.encoding)}function S(e){if(n=n||t(\"./_stream_duplex\"),!(this instanceof S))return new S(e);var r=this instanceof n;this._readableState=new k(e,this,r),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),o.call(this)}function M(t,e,r,i,n){l(\"readableAddChunk\",e);var a,o=t._readableState;if(null===e)o.reading=!1,function(t,e){if(l(\"onEofChunk\"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?T(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,R(t)))}}(t,o);else if(n||(a=function(t,e){var r;return i=e,s.isBuffer(i)||i instanceof h||\"string\"==typeof e||void 0===e||t.objectMode||(r=new _(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],e)),r;var i}(o,e)),a)x(t,a);else if(o.objectMode||e&&e.length>0)if(\"string\"==typeof e||o.objectMode||Object.getPrototypeOf(e)===s.prototype||(e=function(t){return s.from(t)}(e)),i)o.endEmitted?x(t,new v):A(t,o,e,!0);else if(o.ended)x(t,new y);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(e=o.decoder.write(e),o.objectMode||0!==e.length?A(t,o,e,!1):P(t,o)):A(t,o,e,!1)}else i||(o.reading=!1,P(t,o));return!o.ended&&(o.length<o.highWaterMark||0===o.length)}function A(t,e,r,i){e.flowing&&0===e.length&&!e.sync?(e.awaitDrain=0,t.emit(\"data\",r)):(e.length+=e.objectMode?1:r.length,i?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&T(t)),P(t,e)}Object.defineProperty(S.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),S.prototype.destroy=m.destroy,S.prototype._undestroy=m.undestroy,S.prototype._destroy=function(t,e){e(t)},S.prototype.push=function(t,e){var r,i=this._readableState;return i.objectMode?r=!0:\"string\"==typeof t&&((e=e||i.defaultEncoding)!==i.encoding&&(t=s.from(t,e),e=\"\"),r=!0),M(this,t,e,!1,r)},S.prototype.unshift=function(t){return M(this,t,null,!0,!1)},S.prototype.isPaused=function(){return!1===this._readableState.flowing},S.prototype.setEncoding=function(e){u||(u=t(\"string_decoder/\").StringDecoder);var r=new u(e);this._readableState.decoder=r,this._readableState.encoding=this._readableState.decoder.encoding;for(var i=this._readableState.buffer.head,n=\"\";null!==i;)n+=r.write(i.data),i=i.next;return this._readableState.buffer.clear(),\"\"!==n&&this._readableState.buffer.push(n),this._readableState.length=n.length,this};var I=1073741824;function B(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=function(t){return t>=I?t=I:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function T(t){var e=t._readableState;l(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(l(\"emitReadable\",e.flowing),e.emittedReadable=!0,r.nextTick(R,t))}function R(t){var e=t._readableState;l(\"emitReadable_\",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,z(t)}function P(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(O,t,e))}function O(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&0===e.length);){var r=e.length;if(l(\"maybeReadMore read 0\"),t.read(0),r===e.length)break}e.readingMore=!1}function L(t){var e=t._readableState;e.readableListening=t.listenerCount(\"readable\")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function C(t){l(\"readable nexttick read 0\"),t.read(0)}function U(t,e){l(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),z(t),e.flowing&&!e.reading&&t.read(0)}function z(t){var e=t._readableState;for(l(\"flow\",e.flowing);e.flowing&&null!==t.read(););}function D(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function N(t){var e=t._readableState;l(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,r.nextTick(F,e,t))}function F(t,e){if(l(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function j(t,e){for(var r=0,i=t.length;r<i;r++)if(t[r]===e)return r;return-1}S.prototype.read=function(t){l(\"read\",t),t=parseInt(t,10);var e=this._readableState,r=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&((0!==e.highWaterMark?e.length>=e.highWaterMark:e.length>0)||e.ended))return l(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?N(this):T(this),null;if(0===(t=B(t,e))&&e.ended)return 0===e.length&&N(this),null;var i,n=e.needReadable;return l(\"need readable\",n),(0===e.length||e.length-t<e.highWaterMark)&&l(\"length less than watermark\",n=!0),e.ended||e.reading?l(\"reading or ended\",n=!1):n&&(l(\"do read\"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=B(r,e))),null===(i=t>0?D(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&N(this)),null!==i&&this.emit(\"data\",i),i},S.prototype._read=function(t){x(this,new w(\"_read()\"))},S.prototype.pipe=function(t,e){var i=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,l(\"pipe count=%d opts=%j\",n.pipesCount,e);var o=e&&!1===e.end||t===r.stdout||t===r.stderr?g:h;function s(e,r){l(\"onunpipe\"),e===i&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,l(\"cleanup\"),t.removeListener(\"close\",p),t.removeListener(\"finish\",m),t.removeListener(\"drain\",f),t.removeListener(\"error\",d),t.removeListener(\"unpipe\",s),i.removeListener(\"end\",h),i.removeListener(\"end\",g),i.removeListener(\"data\",c),u=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||f())}function h(){l(\"onend\"),t.end()}n.endEmitted?r.nextTick(o):i.once(\"end\",o),t.on(\"unpipe\",s);var f=function(t){return function(){var e=t._readableState;l(\"pipeOnDrain\",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,\"data\")&&(e.flowing=!0,z(t))}}(i);t.on(\"drain\",f);var u=!1;function c(e){l(\"ondata\");var r=t.write(e);l(\"dest.write\",r),!1===r&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==j(n.pipes,t))&&!u&&(l(\"false write response, pause\",n.awaitDrain),n.awaitDrain++),i.pause())}function d(e){l(\"onerror\",e),g(),t.removeListener(\"error\",d),0===a(t,\"error\")&&x(t,e)}function p(){t.removeListener(\"finish\",m),g()}function m(){l(\"onfinish\"),t.removeListener(\"close\",p),g()}function g(){l(\"unpipe\"),i.unpipe(t)}return i.on(\"data\",c),function(t,e,r){if(\"function\"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,\"error\",d),t.once(\"close\",p),t.once(\"finish\",m),t.emit(\"pipe\",i),n.flowing||(l(\"pipe resume\"),i.resume()),t},S.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r)),this;if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a<n;a++)i[a].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var o=j(e.pipes,t);return-1===o||(e.pipes.splice(o,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit(\"unpipe\",this,r)),this},S.prototype.on=function(t,e){var i=o.prototype.on.call(this,t,e),n=this._readableState;return\"data\"===t?(n.readableListening=this.listenerCount(\"readable\")>0,!1!==n.flowing&&this.resume()):\"readable\"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,l(\"on readable\",n.length,n.reading),n.length?T(this):n.reading||r.nextTick(C,this))),i},S.prototype.addListener=S.prototype.on,S.prototype.removeListener=function(t,e){var i=o.prototype.removeListener.call(this,t,e);return\"readable\"===t&&r.nextTick(L,this),i},S.prototype.removeAllListeners=function(t){var e=o.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==t&&void 0!==t||r.nextTick(L,this),e},S.prototype.resume=function(){var t=this._readableState;return t.flowing||(l(\"resume\"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,r.nextTick(U,t,e))}(this,t)),t.paused=!1,this},S.prototype.pause=function(){return l(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(l(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},S.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;for(var n in t.on(\"end\",(function(){if(l(\"wrapped end\"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on(\"data\",(function(n){l(\"wrapped data\"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(e.push(n)||(i=!0,t.pause()))})),t)void 0===this[n]&&\"function\"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var a=0;a<E.length;a++)t.on(E[a],this.emit.bind(this,E[a]));return this._read=function(e){l(\"wrapped _read\",e),i&&(i=!1,t.resume())},this},\"function\"==typeof Symbol&&(S.prototype[Symbol.asyncIterator]=function(){return void 0===c&&(c=t(\"./internal/streams/async_iterator\")),c(this)}),Object.defineProperty(S.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(S.prototype,\"readableBuffer\",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(S.prototype,\"readableFlowing\",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(t){this._readableState&&(this._readableState.flowing=t)}}),S._fromList=D,Object.defineProperty(S.prototype,\"readableLength\",{enumerable:!1,get:function(){return this._readableState.length}}),\"function\"==typeof Symbol&&(S.from=function(e,r){return void 0===d&&(d=t(\"./internal/streams/from\")),d(S,e,r)})}).call(this)}).call(this,t(\"_process\"),void 0!==r.g?r.g:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":62,\"./_stream_duplex\":63,\"./internal/streams/async_iterator\":68,\"./internal/streams/buffer_list\":69,\"./internal/streams/destroy\":70,\"./internal/streams/from\":72,\"./internal/streams/state\":74,\"./internal/streams/stream\":75,_process:60,buffer:33,events:38,inherits:45,\"string_decoder/\":76,util:30}],66:[function(t,e,r){\"use strict\";e.exports=f;var i=t(\"../errors\").codes,n=i.ERR_METHOD_NOT_IMPLEMENTED,a=i.ERR_MULTIPLE_CALLBACK,o=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=i.ERR_TRANSFORM_WITH_LENGTH_0,h=t(\"./_stream_duplex\");function l(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit(\"error\",new a);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}function f(t){if(!(this instanceof f))return new f(t);h.call(this,t),this._transformState={afterTransform:l.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&(\"function\"==typeof t.transform&&(this._transform=t.transform),\"function\"==typeof t.flush&&(this._flush=t.flush)),this.on(\"prefinish\",u)}function u(){var t=this;\"function\"!=typeof this._flush||this._readableState.destroyed?c(this,null,null):this._flush((function(e,r){c(t,e,r)}))}function c(t,e,r){if(e)return t.emit(\"error\",e);if(null!=r&&t.push(r),t._writableState.length)throw new s;if(t._transformState.transforming)throw new o;return t.push(null)}t(\"inherits\")(f,h),f.prototype.push=function(t,e){return this._transformState.needTransform=!1,h.prototype.push.call(this,t,e)},f.prototype._transform=function(t,e,r){r(new n(\"_transform()\"))},f.prototype._write=function(t,e,r){var i=this._transformState;if(i.writecb=r,i.writechunk=t,i.writeencoding=e,!i.transforming){var n=this._readableState;(i.needTransform||n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}},f.prototype._read=function(t){var e=this._transformState;null===e.writechunk||e.transforming?e.needTransform=!0:(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform))},f.prototype._destroy=function(t,e){h.prototype._destroy.call(this,t,(function(t){e(t)}))}},{\"../errors\":62,\"./_stream_duplex\":63,inherits:45}],67:[function(t,e,i){(function(r,i){(function(){\"use strict\";function n(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var i=t.entry;for(t.entry=null;i;){var n=i.callback;e.pendingcb--,n(r),i=i.next}e.corkedRequestsFree.next=t}(e,t)}}var a;e.exports=S,S.WritableState=k;var o={deprecate:t(\"util-deprecate\")},s=t(\"./internal/streams/stream\"),h=t(\"buffer\").Buffer,l=i.Uint8Array||function(){};var f,u=t(\"./internal/streams/destroy\"),c=t(\"./internal/streams/state\").getHighWaterMark,d=t(\"../errors\").codes,p=d.ERR_INVALID_ARG_TYPE,m=d.ERR_METHOD_NOT_IMPLEMENTED,g=d.ERR_MULTIPLE_CALLBACK,b=d.ERR_STREAM_CANNOT_PIPE,_=d.ERR_STREAM_DESTROYED,y=d.ERR_STREAM_NULL_VALUES,w=d.ERR_STREAM_WRITE_AFTER_END,v=d.ERR_UNKNOWN_ENCODING,x=u.errorOrDestroy;function E(){}function k(e,i,o){a=a||t(\"./_stream_duplex\"),e=e||{},\"boolean\"!=typeof o&&(o=i instanceof a),this.objectMode=!!e.objectMode,o&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=c(this,e,\"writableHighWaterMark\",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===e.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var i=t._writableState,n=i.sync,a=i.writecb;if(\"function\"!=typeof a)throw new g;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(i),e)!function(t,e,i,n,a){--e.pendingcb,i?(r.nextTick(a,n),r.nextTick(P,t,e),t._writableState.errorEmitted=!0,x(t,n)):(a(n),t._writableState.errorEmitted=!0,x(t,n),P(t,e))}(t,i,n,e,a);else{var o=T(i)||t.destroyed;o||i.corked||i.bufferProcessing||!i.bufferedRequest||B(t,i),n?r.nextTick(I,t,i,o,a):I(t,i,o,a)}}(i,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new n(this)}function S(e){var r=this instanceof(a=a||t(\"./_stream_duplex\"));if(!r&&!f.call(S,this))return new S(e);this._writableState=new k(e,this,r),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),s.call(this)}function M(t,e,r,i,n,a){if(!r){var o=function(t,e,r){return t.objectMode||!1===t.decodeStrings||\"string\"!=typeof e||(e=h.from(e,r)),e}(e,i,n);i!==o&&(r=!0,n=\"buffer\",i=o)}var s=e.objectMode?1:i.length;e.length+=s;var l=e.length<e.highWaterMark;if(l||(e.needDrain=!0),e.writing||e.corked){var f=e.lastBufferedRequest;e.lastBufferedRequest={chunk:i,encoding:n,isBuf:r,callback:a,next:null},f?f.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else A(t,e,!1,s,i,n,a);return l}function A(t,e,r,i,n,a,o){e.writelen=i,e.writecb=o,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new _(\"write\")):r?t._writev(n,e.onwrite):t._write(n,a,e.onwrite),e.sync=!1}function I(t,e,r,i){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit(\"drain\"))}(t,e),e.pendingcb--,i(),P(t,e)}function B(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var i=e.bufferedRequestCount,a=new Array(i),o=e.corkedRequestsFree;o.entry=r;for(var s=0,h=!0;r;)a[s]=r,r.isBuf||(h=!1),r=r.next,s+=1;a.allBuffers=h,A(t,e,!0,e.length,a,\"\",o.finish),e.pendingcb++,e.lastBufferedRequest=null,o.next?(e.corkedRequestsFree=o.next,o.next=null):e.corkedRequestsFree=new n(e),e.bufferedRequestCount=0}else{for(;r;){var l=r.chunk,f=r.encoding,u=r.callback;if(A(t,e,!1,e.objectMode?1:l.length,l,f,u),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function T(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function R(t,e){t._final((function(r){e.pendingcb--,r&&x(t,r),e.prefinished=!0,t.emit(\"prefinish\"),P(t,e)}))}function P(t,e){var i=T(e);if(i&&(function(t,e){e.prefinished||e.finalCalled||(\"function\"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit(\"prefinish\")):(e.pendingcb++,e.finalCalled=!0,r.nextTick(R,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit(\"finish\"),e.autoDestroy))){var n=t._readableState;(!n||n.autoDestroy&&n.endEmitted)&&t.destroy()}return i}t(\"inherits\")(S,s),k.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(k.prototype,\"buffer\",{get:o.deprecate((function(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(t){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(S,Symbol.hasInstance,{value:function(t){return!!f.call(this,t)||this===S&&t&&t._writableState instanceof k}})):f=function(t){return t instanceof this},S.prototype.pipe=function(){x(this,new b)},S.prototype.write=function(t,e,i){var n,a=this._writableState,o=!1,s=!a.objectMode&&(n=t,h.isBuffer(n)||n instanceof l);return s&&!h.isBuffer(t)&&(t=function(t){return h.from(t)}(t)),\"function\"==typeof e&&(i=e,e=null),s?e=\"buffer\":e||(e=a.defaultEncoding),\"function\"!=typeof i&&(i=E),a.ending?function(t,e){var i=new w;x(t,i),r.nextTick(e,i)}(this,i):(s||function(t,e,i,n){var a;return null===i?a=new y:\"string\"==typeof i||e.objectMode||(a=new p(\"chunk\",[\"string\",\"Buffer\"],i)),!a||(x(t,a),r.nextTick(n,a),!1)}(this,a,t,i))&&(a.pendingcb++,o=M(this,a,s,t,e,i)),o},S.prototype.cork=function(){this._writableState.corked++},S.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.bufferProcessing||!t.bufferedRequest||B(this,t))},S.prototype.setDefaultEncoding=function(t){if(\"string\"==typeof t&&(t=t.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((t+\"\").toLowerCase())>-1))throw new v(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(S.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(S.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),S.prototype._write=function(t,e,r){r(new m(\"_write()\"))},S.prototype._writev=null,S.prototype.end=function(t,e,i){var n=this._writableState;return\"function\"==typeof t?(i=t,t=null,e=null):\"function\"==typeof e&&(i=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,i){e.ending=!0,P(t,e),i&&(e.finished?r.nextTick(i):t.once(\"finish\",i)),e.ended=!0,t.writable=!1}(this,n,i),this},Object.defineProperty(S.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(S.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),S.prototype.destroy=u.destroy,S.prototype._undestroy=u.undestroy,S.prototype._destroy=function(t,e){e(t)}}).call(this)}).call(this,t(\"_process\"),void 0!==r.g?r.g:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":62,\"./_stream_duplex\":63,\"./internal/streams/destroy\":70,\"./internal/streams/state\":74,\"./internal/streams/stream\":75,_process:60,buffer:33,inherits:45,\"util-deprecate\":78}],68:[function(t,e,r){(function(r){(function(){\"use strict\";var i;function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var a=t(\"./end-of-stream\"),o=Symbol(\"lastResolve\"),s=Symbol(\"lastReject\"),h=Symbol(\"error\"),l=Symbol(\"ended\"),f=Symbol(\"lastPromise\"),u=Symbol(\"handlePromise\"),c=Symbol(\"stream\");function d(t,e){return{value:t,done:e}}function p(t){var e=t[o];if(null!==e){var r=t[c].read();null!==r&&(t[f]=null,t[o]=null,t[s]=null,e(d(r,!1)))}}function m(t){r.nextTick(p,t)}var g=Object.getPrototypeOf((function(){})),b=Object.setPrototypeOf((n(i={get stream(){return this[c]},next:function(){var t=this,e=this[h];if(null!==e)return Promise.reject(e);if(this[l])return Promise.resolve(d(void 0,!0));if(this[c].destroyed)return new Promise((function(e,i){r.nextTick((function(){t[h]?i(t[h]):e(d(void 0,!0))}))}));var i,n=this[f];if(n)i=new Promise(function(t,e){return function(r,i){t.then((function(){e[l]?r(d(void 0,!0)):e[u](r,i)}),i)}}(n,this));else{var a=this[c].read();if(null!==a)return Promise.resolve(d(a,!1));i=new Promise(this[u])}return this[f]=i,i}},Symbol.asyncIterator,(function(){return this})),n(i,\"return\",(function(){var t=this;return new Promise((function(e,r){t[c].destroy(null,(function(t){t?r(t):e(d(void 0,!0))}))}))})),i),g);e.exports=function(t){var e,r=Object.create(b,(n(e={},c,{value:t,writable:!0}),n(e,o,{value:null,writable:!0}),n(e,s,{value:null,writable:!0}),n(e,h,{value:null,writable:!0}),n(e,l,{value:t._readableState.endEmitted,writable:!0}),n(e,u,{value:function(t,e){var i=r[c].read();i?(r[f]=null,r[o]=null,r[s]=null,t(d(i,!1))):(r[o]=t,r[s]=e)},writable:!0}),e));return r[f]=null,a(t,(function(t){if(t&&\"ERR_STREAM_PREMATURE_CLOSE\"!==t.code){var e=r[s];return null!==e&&(r[f]=null,r[o]=null,r[s]=null,e(t)),void(r[h]=t)}var i=r[o];null!==i&&(r[f]=null,r[o]=null,r[s]=null,i(d(void 0,!0))),r[l]=!0})),t.on(\"readable\",m.bind(null,r)),r}}).call(this)}).call(this,t(\"_process\"))},{\"./end-of-stream\":71,_process:60}],69:[function(t,e,r){\"use strict\";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function a(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var o=t(\"buffer\").Buffer,s=t(\"util\").inspect,h=s&&s.custom||\"inspect\";e.exports=function(){function t(){(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")})(this,t),this.head=null,this.tail=null,this.length=0}return e=t,r=[{key:\"push\",value:function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:\"unshift\",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:\"shift\",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r}},{key:\"concat\",value:function(t){if(0===this.length)return o.alloc(0);for(var e=o.allocUnsafe(t>>>0),r=this.head,i=0;r;)n=r.data,a=e,s=i,o.prototype.copy.call(n,a,s),i+=r.data.length,r=r.next;var n,a,s;return e}},{key:\"consume\",value:function(t,e){var r;return t<this.head.data.length?(r=this.head.data.slice(0,t),this.head.data=this.head.data.slice(t)):r=t===this.head.data.length?this.shift():e?this._getString(t):this._getBuffer(t),r}},{key:\"first\",value:function(){return this.head.data}},{key:\"_getString\",value:function(t){var e=this.head,r=1,i=e.data;for(t-=i.length;e=e.next;){var n=e.data,a=t>n.length?n.length:t;if(a===n.length?i+=n:i+=n.slice(0,t),0==(t-=a)){a===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(a));break}++r}return this.length-=r,i}},{key:\"_getBuffer\",value:function(t){var e=o.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,a=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,a),0==(t-=a)){a===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(a));break}++i}return this.length-=i,e}},{key:h,value:function(t,e){return s(this,function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach((function(e){n(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({},e,{depth:0,customInspect:!1}))}}],r&&a(e.prototype,r),l&&a(e,l),t;var e,r,l}()},{buffer:33,util:30}],70:[function(t,e,r){(function(t){(function(){\"use strict\";function r(t,e){n(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit(\"close\")}function n(t,e){t.emit(\"error\",e)}e.exports={destroy:function(e,a){var o=this,s=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return s||h?(a?a(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,t.nextTick(n,this,e)):t.nextTick(n,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!a&&e?o._writableState?o._writableState.errorEmitted?t.nextTick(i,o):(o._writableState.errorEmitted=!0,t.nextTick(r,o,e)):t.nextTick(r,o,e):a?(t.nextTick(i,o),a(e)):t.nextTick(i,o)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit(\"error\",e)}}}).call(this)}).call(this,t(\"_process\"))},{_process:60}],71:[function(t,e,r){\"use strict\";var i=t(\"../../../errors\").codes.ERR_STREAM_PREMATURE_CLOSE;function n(){}e.exports=function t(e,r,a){if(\"function\"==typeof r)return t(e,null,r);r||(r={}),a=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n<r;n++)i[n]=arguments[n];t.apply(this,i)}}}(a||n);var o=r.readable||!1!==r.readable&&e.readable,s=r.writable||!1!==r.writable&&e.writable,h=function(){e.writable||f()},l=e._writableState&&e._writableState.finished,f=function(){s=!1,l=!0,o||a.call(e)},u=e._readableState&&e._readableState.endEmitted,c=function(){o=!1,u=!0,s||a.call(e)},d=function(t){a.call(e,t)},p=function(){var t;return o&&!u?(e._readableState&&e._readableState.ended||(t=new i),a.call(e,t)):s&&!l?(e._writableState&&e._writableState.ended||(t=new i),a.call(e,t)):void 0},m=function(){e.req.on(\"finish\",f)};return function(t){return t.setHeader&&\"function\"==typeof t.abort}(e)?(e.on(\"complete\",f),e.on(\"abort\",p),e.req?m():e.on(\"request\",m)):s&&!e._writableState&&(e.on(\"end\",h),e.on(\"close\",h)),e.on(\"end\",c),e.on(\"finish\",f),!1!==r.error&&e.on(\"error\",d),e.on(\"close\",p),function(){e.removeListener(\"complete\",f),e.removeListener(\"abort\",p),e.removeListener(\"request\",m),e.req&&e.req.removeListener(\"finish\",f),e.removeListener(\"end\",h),e.removeListener(\"close\",h),e.removeListener(\"finish\",f),e.removeListener(\"end\",c),e.removeListener(\"error\",d),e.removeListener(\"close\",p)}}},{\"../../../errors\":62}],72:[function(t,e,r){e.exports=function(){throw new Error(\"Readable.from is not available in the browser\")}},{}],73:[function(t,e,r){\"use strict\";var i;var n=t(\"../../../errors\").codes,a=n.ERR_MISSING_ARGS,o=n.ERR_STREAM_DESTROYED;function s(t){if(t)throw t}function h(t){t()}function l(t,e){return t.pipe(e)}e.exports=function(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];var f,u=function(t){return t.length?\"function\"!=typeof t[t.length-1]?s:t.pop():s}(r);if(Array.isArray(r[0])&&(r=r[0]),r.length<2)throw new a(\"streams\");var c=r.map((function(e,n){var a=n<r.length-1;return function(e,r,n,a){a=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(a);var s=!1;e.on(\"close\",(function(){s=!0})),void 0===i&&(i=t(\"./end-of-stream\")),i(e,{readable:r,writable:n},(function(t){if(t)return a(t);s=!0,a()}));var h=!1;return function(t){if(!s&&!h)return h=!0,function(t){return t.setHeader&&\"function\"==typeof t.abort}(e)?e.abort():\"function\"==typeof e.destroy?e.destroy():void a(t||new o(\"pipe\"))}}(e,a,n>0,(function(t){f||(f=t),t&&c.forEach(h),a||(c.forEach(h),u(f))}))}));return r.reduce(l)}},{\"../../../errors\":62,\"./end-of-stream\":71}],74:[function(t,e,r){\"use strict\";var i=t(\"../../../errors\").codes.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(t,e,r,n){var a=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,n,r);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new i(n?r:\"highWaterMark\",a);return Math.floor(a)}return t.objectMode?16:16384}}},{\"../../../errors\":62}],75:[function(t,e,r){e.exports=t(\"events\").EventEmitter},{events:38}],76:[function(t,e,r){\"use strict\";var i=t(\"safe-buffer\").Buffer,n=i.isEncoding||function(t){switch((t=\"\"+t)&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}(t);if(\"string\"!=typeof e&&(i.isEncoding===n||!n(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}(t),this.encoding){case\"utf16le\":this.text=h,this.end=l,e=4;break;case\"utf8\":this.fillLast=s,e=4;break;case\"base64\":this.text=f,this.end=u,e=3;break;default:return this.write=c,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,\"�\";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,\"�\";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,\"�\"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){if((t.length-e)%2==0){var r=t.toString(\"utf16le\",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function l(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function f(t,e){var r=(t.length-e)%3;return 0===r?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function u(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function c(t){return t.toString(this.encoding)}function d(t){return t&&t.length?this.write(t):\"\"}r.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return\"\";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||\"\"},a.prototype.end=function(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+\"�\":e},a.prototype.text=function(t,e){var r=function(t,e,r){var i=e.length-1;if(i<r)return 0;var n=o(e[i]);return n>=0?(n>0&&(t.lastNeed=n-1),n):--i<r||-2===n?0:(n=o(e[i]))>=0?(n>0&&(t.lastNeed=n-2),n):--i<r||-2===n?0:(n=o(e[i]))>=0?(n>0&&(2===n?n=0:t.lastNeed=n-3),n):0}(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString(\"utf8\",e,i)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},{\"safe-buffer\":77}],77:[function(t,e,r){var i=t(\"buffer\"),n=i.Buffer;function a(t,e){for(var r in t)e[r]=t[r]}function o(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=i:(a(i,r),r.Buffer=o),o.prototype=Object.create(n.prototype),a(n,o),o.from=function(t,e,r){if(\"number\"==typeof t)throw new TypeError(\"Argument must not be a number\");return n(t,e,r)},o.alloc=function(t,e,r){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");var i=n(t);return void 0!==e?\"string\"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},o.allocUnsafe=function(t){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");return n(t)},o.allocUnsafeSlow=function(t){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");return i.SlowBuffer(t)}},{buffer:33}],78:[function(t,e,i){(function(t){(function(){function r(e){try{if(!t.localStorage)return!1}catch(t){return!1}var r=t.localStorage[e];return null!=r&&\"true\"===String(r).toLowerCase()}e.exports=function(t,e){if(r(\"noDeprecation\"))return t;var i=!1;return function(){if(!i){if(r(\"throwDeprecation\"))throw new Error(e);r(\"traceDeprecation\")?console.trace(e):console.warn(e),i=!0}return t.apply(this,arguments)}}}).call(this)}).call(this,void 0!==r.g?r.g:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],79:[function(t,e,r){arguments[4][25][0].apply(r,arguments)},{dup:25}],80:[function(t,e,r){\"use strict\";var i=t(\"is-arguments\"),n=t(\"is-generator-function\"),a=t(\"which-typed-array\"),o=t(\"is-typed-array\");function s(t){return t.call.bind(t)}var h=\"undefined\"!=typeof BigInt,l=\"undefined\"!=typeof Symbol,f=s(Object.prototype.toString),u=s(Number.prototype.valueOf),c=s(String.prototype.valueOf),d=s(Boolean.prototype.valueOf);if(h)var p=s(BigInt.prototype.valueOf);if(l)var m=s(Symbol.prototype.valueOf);function g(t,e){if(\"object\"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function b(t){return\"[object Map]\"===f(t)}function _(t){return\"[object Set]\"===f(t)}function y(t){return\"[object WeakMap]\"===f(t)}function w(t){return\"[object WeakSet]\"===f(t)}function v(t){return\"[object ArrayBuffer]\"===f(t)}function x(t){return\"undefined\"!=typeof ArrayBuffer&&(v.working?v(t):t instanceof ArrayBuffer)}function E(t){return\"[object DataView]\"===f(t)}function k(t){return\"undefined\"!=typeof DataView&&(E.working?E(t):t instanceof DataView)}function S(t){return\"[object SharedArrayBuffer]\"===f(t)}function M(t){return\"undefined\"!=typeof SharedArrayBuffer&&(S.working?S(t):t instanceof SharedArrayBuffer)}function A(t){return g(t,u)}function I(t){return g(t,c)}function B(t){return g(t,d)}function T(t){return h&&g(t,p)}function R(t){return l&&g(t,m)}r.isArgumentsObject=i,r.isGeneratorFunction=n,r.isTypedArray=o,r.isPromise=function(t){return\"undefined\"!=typeof Promise&&t instanceof Promise||null!==t&&\"object\"==typeof t&&\"function\"==typeof t.then&&\"function\"==typeof t.catch},r.isArrayBufferView=function(t){return\"undefined\"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):o(t)||k(t)},r.isUint8Array=function(t){return\"Uint8Array\"===a(t)},r.isUint8ClampedArray=function(t){return\"Uint8ClampedArray\"===a(t)},r.isUint16Array=function(t){return\"Uint16Array\"===a(t)},r.isUint32Array=function(t){return\"Uint32Array\"===a(t)},r.isInt8Array=function(t){return\"Int8Array\"===a(t)},r.isInt16Array=function(t){return\"Int16Array\"===a(t)},r.isInt32Array=function(t){return\"Int32Array\"===a(t)},r.isFloat32Array=function(t){return\"Float32Array\"===a(t)},r.isFloat64Array=function(t){return\"Float64Array\"===a(t)},r.isBigInt64Array=function(t){return\"BigInt64Array\"===a(t)},r.isBigUint64Array=function(t){return\"BigUint64Array\"===a(t)},b.working=\"undefined\"!=typeof Map&&b(new Map),r.isMap=function(t){return\"undefined\"!=typeof Map&&(b.working?b(t):t instanceof Map)},_.working=\"undefined\"!=typeof Set&&_(new Set),r.isSet=function(t){return\"undefined\"!=typeof Set&&(_.working?_(t):t instanceof Set)},y.working=\"undefined\"!=typeof WeakMap&&y(new WeakMap),r.isWeakMap=function(t){return\"undefined\"!=typeof WeakMap&&(y.working?y(t):t instanceof WeakMap)},w.working=\"undefined\"!=typeof WeakSet&&w(new WeakSet),r.isWeakSet=function(t){return w(t)},v.working=\"undefined\"!=typeof ArrayBuffer&&v(new ArrayBuffer),r.isArrayBuffer=x,E.working=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof DataView&&E(new DataView(new ArrayBuffer(1),0,1)),r.isDataView=k,S.working=\"undefined\"!=typeof SharedArrayBuffer&&S(new SharedArrayBuffer),r.isSharedArrayBuffer=M,r.isAsyncFunction=function(t){return\"[object AsyncFunction]\"===f(t)},r.isMapIterator=function(t){return\"[object Map Iterator]\"===f(t)},r.isSetIterator=function(t){return\"[object Set Iterator]\"===f(t)},r.isGeneratorObject=function(t){return\"[object Generator]\"===f(t)},r.isWebAssemblyCompiledModule=function(t){return\"[object WebAssembly.Module]\"===f(t)},r.isNumberObject=A,r.isStringObject=I,r.isBooleanObject=B,r.isBigIntObject=T,r.isSymbolObject=R,r.isBoxedPrimitive=function(t){return A(t)||I(t)||B(t)||T(t)||R(t)},r.isAnyArrayBuffer=function(t){return\"undefined\"!=typeof Uint8Array&&(x(t)||M(t))},[\"isProxy\",\"isExternal\",\"isModuleNamespaceObject\"].forEach((function(t){Object.defineProperty(r,t,{enumerable:!1,value:function(){throw new Error(t+\" is not supported in userland\")}})}))},{\"is-arguments\":46,\"is-generator-function\":47,\"is-typed-array\":48,\"which-typed-array\":82}],81:[function(t,e,r){(function(e){(function(){var i=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},i=0;i<e.length;i++)r[e[i]]=Object.getOwnPropertyDescriptor(t,e[i]);return r},n=/%[sdj%]/g;r.format=function(t){if(!_(t)){for(var e=[],r=0;r<arguments.length;r++)e.push(h(arguments[r]));return e.join(\" \")}r=1;for(var i=arguments,a=i.length,o=String(t).replace(n,(function(t){if(\"%%\"===t)return\"%\";if(r>=a)return t;switch(t){case\"%s\":return String(i[r++]);case\"%d\":return Number(i[r++]);case\"%j\":try{return JSON.stringify(i[r++])}catch(t){return\"[Circular]\"}default:return t}})),s=i[r];r<a;s=i[++r])g(s)||!v(s)?o+=\" \"+s:o+=\" \"+h(s);return o},r.deprecate=function(t,i){if(void 0!==e&&!0===e.noDeprecation)return t;if(void 0===e)return function(){return r.deprecate(t,i).apply(this,arguments)};var n=!1;return function(){if(!n){if(e.throwDeprecation)throw new Error(i);e.traceDeprecation?console.trace(i):console.error(i),n=!0}return t.apply(this,arguments)}};var a={},o=/^$/;if(e.env.NODE_DEBUG){var s=e.env.NODE_DEBUG;s=s.replace(/[|\\\\{}()[\\]^$+?.]/g,\"\\\\$&\").replace(/\\*/g,\".*\").replace(/,/g,\"$|^\").toUpperCase(),o=new RegExp(\"^\"+s+\"$\",\"i\")}function h(t,e){var i={seen:[],stylize:f};return arguments.length>=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),m(e)?i.showHidden=e:e&&r._extend(i,e),y(i.showHidden)&&(i.showHidden=!1),y(i.depth)&&(i.depth=2),y(i.colors)&&(i.colors=!1),y(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=l),u(i,t,i.depth)}function l(t,e){var r=h.styles[e];return r?\"\u001b[\"+h.colors[r][0]+\"m\"+t+\"\u001b[\"+h.colors[r][1]+\"m\":t}function f(t,e){return t}function u(t,e,i){if(t.customInspect&&e&&k(e.inspect)&&e.inspect!==r.inspect&&(!e.constructor||e.constructor.prototype!==e)){var n=e.inspect(i,t);return _(n)||(n=u(t,n,i)),n}var a=function(t,e){if(y(e))return t.stylize(\"undefined\",\"undefined\");if(_(e)){var r=\"'\"+JSON.stringify(e).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return t.stylize(r,\"string\")}return b(e)?t.stylize(\"\"+e,\"number\"):m(e)?t.stylize(\"\"+e,\"boolean\"):g(e)?t.stylize(\"null\",\"null\"):void 0}(t,e);if(a)return a;var o=Object.keys(e),s=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(o);if(t.showHidden&&(o=Object.getOwnPropertyNames(e)),E(e)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return c(e);if(0===o.length){if(k(e)){var h=e.name?\": \"+e.name:\"\";return t.stylize(\"[Function\"+h+\"]\",\"special\")}if(w(e))return t.stylize(RegExp.prototype.toString.call(e),\"regexp\");if(x(e))return t.stylize(Date.prototype.toString.call(e),\"date\");if(E(e))return c(e)}var l,f=\"\",v=!1,S=[\"{\",\"}\"];return p(e)&&(v=!0,S=[\"[\",\"]\"]),k(e)&&(f=\" [Function\"+(e.name?\": \"+e.name:\"\")+\"]\"),w(e)&&(f=\" \"+RegExp.prototype.toString.call(e)),x(e)&&(f=\" \"+Date.prototype.toUTCString.call(e)),E(e)&&(f=\" \"+c(e)),0!==o.length||v&&0!=e.length?i<0?w(e)?t.stylize(RegExp.prototype.toString.call(e),\"regexp\"):t.stylize(\"[Object]\",\"special\"):(t.seen.push(e),l=v?function(t,e,r,i,n){for(var a=[],o=0,s=e.length;o<s;++o)I(e,String(o))?a.push(d(t,e,r,i,String(o),!0)):a.push(\"\");return n.forEach((function(n){n.match(/^\\d+$/)||a.push(d(t,e,r,i,n,!0))})),a}(t,e,i,s,o):o.map((function(r){return d(t,e,i,s,r,v)})),t.seen.pop(),function(t,e,r){return t.reduce((function(t,e){return e.indexOf(\"\\n\"),t+e.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1}),0)>60?r[0]+(\"\"===e?\"\":e+\"\\n \")+\" \"+t.join(\",\\n  \")+\" \"+r[1]:r[0]+e+\" \"+t.join(\", \")+\" \"+r[1]}(l,f,S)):S[0]+f+S[1]}function c(t){return\"[\"+Error.prototype.toString.call(t)+\"]\"}function d(t,e,r,i,n,a){var o,s,h;if((h=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]}).get?s=h.set?t.stylize(\"[Getter/Setter]\",\"special\"):t.stylize(\"[Getter]\",\"special\"):h.set&&(s=t.stylize(\"[Setter]\",\"special\")),I(i,n)||(o=\"[\"+n+\"]\"),s||(t.seen.indexOf(h.value)<0?(s=g(r)?u(t,h.value,null):u(t,h.value,r-1)).indexOf(\"\\n\")>-1&&(s=a?s.split(\"\\n\").map((function(t){return\"  \"+t})).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map((function(t){return\"   \"+t})).join(\"\\n\")):s=t.stylize(\"[Circular]\",\"special\")),y(o)){if(a&&n.match(/^\\d+$/))return s;(o=JSON.stringify(\"\"+n)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=t.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=t.stylize(o,\"string\"))}return o+\": \"+s}function p(t){return Array.isArray(t)}function m(t){return\"boolean\"==typeof t}function g(t){return null===t}function b(t){return\"number\"==typeof t}function _(t){return\"string\"==typeof t}function y(t){return void 0===t}function w(t){return v(t)&&\"[object RegExp]\"===S(t)}function v(t){return\"object\"==typeof t&&null!==t}function x(t){return v(t)&&\"[object Date]\"===S(t)}function E(t){return v(t)&&(\"[object Error]\"===S(t)||t instanceof Error)}function k(t){return\"function\"==typeof t}function S(t){return Object.prototype.toString.call(t)}function M(t){return t<10?\"0\"+t.toString(10):t.toString(10)}r.debuglog=function(t){if(t=t.toUpperCase(),!a[t])if(o.test(t)){var i=e.pid;a[t]=function(){var e=r.format.apply(r,arguments);console.error(\"%s %d: %s\",t,i,e)}}else a[t]=function(){};return a[t]},r.inspect=h,h.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},h.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},r.types=t(\"./support/types\"),r.isArray=p,r.isBoolean=m,r.isNull=g,r.isNullOrUndefined=function(t){return null==t},r.isNumber=b,r.isString=_,r.isSymbol=function(t){return\"symbol\"==typeof t},r.isUndefined=y,r.isRegExp=w,r.types.isRegExp=w,r.isObject=v,r.isDate=x,r.types.isDate=x,r.isError=E,r.types.isNativeError=E,r.isFunction=k,r.isPrimitive=function(t){return null===t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||\"symbol\"==typeof t||void 0===t},r.isBuffer=t(\"./support/isBuffer\");var A=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function I(t,e){return Object.prototype.hasOwnProperty.call(t,e)}r.log=function(){var t,e;console.log(\"%s - %s\",(t=new Date,e=[M(t.getHours()),M(t.getMinutes()),M(t.getSeconds())].join(\":\"),[t.getDate(),A[t.getMonth()],e].join(\" \")),r.format.apply(r,arguments))},r.inherits=t(\"inherits\"),r._extend=function(t,e){if(!e||!v(e))return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t};var B=\"undefined\"!=typeof Symbol?Symbol(\"util.promisify.custom\"):void 0;function T(t,e){if(!t){var r=new Error(\"Promise was rejected with a falsy value\");r.reason=t,t=r}return e(t)}r.promisify=function(t){if(\"function\"!=typeof t)throw new TypeError('The \"original\" argument must be of type Function');if(B&&t[B]){var e;if(\"function\"!=typeof(e=t[B]))throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');return Object.defineProperty(e,B,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,i=new Promise((function(t,i){e=t,r=i})),n=[],a=0;a<arguments.length;a++)n.push(arguments[a]);n.push((function(t,i){t?r(t):e(i)}));try{t.apply(this,n)}catch(t){r(t)}return i}return Object.setPrototypeOf(e,Object.getPrototypeOf(t)),B&&Object.defineProperty(e,B,{value:e,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(e,i(t))},r.promisify.custom=B,r.callbackify=function(t){if(\"function\"!=typeof t)throw new TypeError('The \"original\" argument must be of type Function');function r(){for(var r=[],i=0;i<arguments.length;i++)r.push(arguments[i]);var n=r.pop();if(\"function\"!=typeof n)throw new TypeError(\"The last argument must be of type Function\");var a=this,o=function(){return n.apply(a,arguments)};t.apply(this,r).then((function(t){e.nextTick(o.bind(null,null,t))}),(function(t){e.nextTick(T.bind(null,t,o))}))}return Object.setPrototypeOf(r,Object.getPrototypeOf(t)),Object.defineProperties(r,i(t)),r}}).call(this)}).call(this,t(\"_process\"))},{\"./support/isBuffer\":79,\"./support/types\":80,_process:60,inherits:45}],82:[function(t,e,i){(function(r){(function(){\"use strict\";var i=t(\"foreach\"),n=t(\"available-typed-arrays\"),a=t(\"es-abstract/helpers/callBound\"),o=a(\"Object.prototype.toString\"),s=t(\"has-symbols\")()&&\"symbol\"==typeof Symbol.toStringTag,h=n(),l=a(\"String.prototype.slice\"),f={},u=t(\"es-abstract/helpers/getOwnPropertyDescriptor\"),c=Object.getPrototypeOf;s&&u&&c&&i(h,(function(t){if(\"function\"==typeof r[t]){var e=new r[t];if(!(Symbol.toStringTag in e))throw new EvalError(\"this engine has support for Symbol.toStringTag, but \"+t+\" does not have the property! Please report this.\");var i=c(e),n=u(i,Symbol.toStringTag);if(!n){var a=c(i);n=u(a,Symbol.toStringTag)}f[t]=n.get}}));var d=t(\"is-typed-array\");e.exports=function(t){return!!d(t)&&(s?function(t){var e=!1;return i(f,(function(r,i){if(!e)try{var n=r.call(t);n===i&&(e=n)}catch(t){}})),e}(t):l(o(t),8,-1))}}).call(this)}).call(this,void 0!==r.g?r.g:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"available-typed-arrays\":27,\"es-abstract/helpers/callBound\":36,\"es-abstract/helpers/getOwnPropertyDescriptor\":37,foreach:39,\"has-symbols\":42,\"is-typed-array\":48}]},{},[20])(20)},4406:t=>{var e=t.exports={};e.nextTick=function(){var t=\"undefined\"!=typeof window&&window.setImmediate,e=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener;if(t)return function(t){return window.setImmediate(t)};if(e){var r=[];return window.addEventListener(\"message\",(function(t){var e=t.source;e!==window&&null!==e||\"process-tick\"!==t.data||(t.stopPropagation(),r.length>0&&r.shift()())}),!0),function(t){r.push(t),window.postMessage(\"process-tick\",\"*\")}}return function(t){setTimeout(t,0)}}(),e.title=\"browser\",e.browser=!0,e.env={},e.argv=[],e.binding=function(t){throw new Error(\"process.binding is not supported\")},e.cwd=function(){return\"/\"},e.chdir=function(t){throw new Error(\"process.chdir is not supported\")}},6197:(t,e,r)=>{\"use strict\";var i=r(8834).lW;Object.defineProperty(e,\"__esModule\",{value:!0}),e.AbstractTokenizer=void 0;const n=r(4644);e.AbstractTokenizer=class{constructor(t){this.position=0,this.numBuffer=new Uint8Array(8),this.fileInfo=t||{}}async readToken(t,e=this.position){const r=i.alloc(t.len);if(await this.readBuffer(r,{position:e})<t.len)throw new n.EndOfStreamError;return t.get(r,0)}async peekToken(t,e=this.position){const r=i.alloc(t.len);if(await this.peekBuffer(r,{position:e})<t.len)throw new n.EndOfStreamError;return t.get(r,0)}async readNumber(t){if(await this.readBuffer(this.numBuffer,{length:t.len})<t.len)throw new n.EndOfStreamError;return t.get(this.numBuffer,0)}async peekNumber(t){if(await this.peekBuffer(this.numBuffer,{length:t.len})<t.len)throw new n.EndOfStreamError;return t.get(this.numBuffer,0)}async ignore(t){if(void 0!==this.fileInfo.size){const e=this.fileInfo.size-this.position;if(t>e)return this.position+=e,e}return this.position+=t,t}async close(){}normalizeOptions(t,e){if(e&&void 0!==e.position&&e.position<this.position)throw new Error(\"`options.position` must be equal or greater than `tokenizer.position`\");return e?{mayBeLess:!0===e.mayBeLess,offset:e.offset?e.offset:0,length:e.length?e.length:t.length-(e.offset?e.offset:0),position:e.position?e.position:this.position}:{mayBeLess:!1,offset:0,length:t.length,position:this.position}}}},932:(t,e,r)=>{\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.BufferTokenizer=void 0;const i=r(4644),n=r(6197);class a extends n.AbstractTokenizer{constructor(t,e){super(e),this.uint8Array=t,this.fileInfo.size=this.fileInfo.size?this.fileInfo.size:t.length}async readBuffer(t,e){if(e&&e.position){if(e.position<this.position)throw new Error(\"`options.position` must be equal or greater than `tokenizer.position`\");this.position=e.position}const r=await this.peekBuffer(t,e);return this.position+=r,r}async peekBuffer(t,e){const r=this.normalizeOptions(t,e),n=Math.min(this.uint8Array.length-r.position,r.length);if(!r.mayBeLess&&n<r.length)throw new i.EndOfStreamError;return t.set(this.uint8Array.subarray(r.position,r.position+n),r.offset),n}async close(){}}e.BufferTokenizer=a},9425:(t,e,r)=>{\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fromFile=e.FileTokenizer=void 0;const i=r(6197),n=r(4644),a=r(5187);class o extends i.AbstractTokenizer{constructor(t,e){super(e),this.fd=t}async readBuffer(t,e){const r=this.normalizeOptions(t,e);this.position=r.position;const i=await a.read(this.fd,t,r.offset,r.length,r.position);if(this.position+=i.bytesRead,i.bytesRead<r.length&&(!e||!e.mayBeLess))throw new n.EndOfStreamError;return i.bytesRead}async peekBuffer(t,e){const r=this.normalizeOptions(t,e),i=await a.read(this.fd,t,r.offset,r.length,r.position);if(!r.mayBeLess&&i.bytesRead<r.length)throw new n.EndOfStreamError;return i.bytesRead}async close(){return a.close(this.fd)}}e.FileTokenizer=o,e.fromFile=async function(t){const e=await a.stat(t);if(!e.isFile)throw new Error(`File not a file: ${t}`);const r=await a.open(t,\"r\");return new o(r,{path:t,size:e.size})}},5187:(t,e,r)=>{\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.readFile=e.writeFileSync=e.writeFile=e.read=e.open=e.close=e.stat=e.createReadStream=e.pathExists=void 0;const i=r(6777);e.pathExists=i.existsSync,e.createReadStream=i.createReadStream,e.stat=async function(t){return new Promise(((e,r)=>{i.stat(t,((t,i)=>{t?r(t):e(i)}))}))},e.close=async function(t){return new Promise(((e,r)=>{i.close(t,(t=>{t?r(t):e()}))}))},e.open=async function(t,e){return new Promise(((r,n)=>{i.open(t,e,((t,e)=>{t?n(t):r(e)}))}))},e.read=async function(t,e,r,n,a){return new Promise(((o,s)=>{i.read(t,e,r,n,a,((t,e,r)=>{t?s(t):o({bytesRead:e,buffer:r})}))}))},e.writeFile=async function(t,e){return new Promise(((r,n)=>{i.writeFile(t,e,(t=>{t?n(t):r()}))}))},e.writeFileSync=function(t,e){i.writeFileSync(t,e)},e.readFile=async function(t){return new Promise(((e,r)=>{i.readFile(t,((t,i)=>{t?r(t):e(i)}))}))}},8286:(t,e,r)=>{\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.ReadStreamTokenizer=void 0;const i=r(6197),n=r(4644);class a extends i.AbstractTokenizer{constructor(t,e){super(e),this.streamReader=new n.StreamReader(t)}async getFileInfo(){return this.fileInfo}async readBuffer(t,e){const r=this.normalizeOptions(t,e),i=r.position-this.position;if(i>0)return await this.ignore(i),this.readBuffer(t,e);if(i<0)throw new Error(\"`options.position` must be equal or greater than `tokenizer.position`\");if(0===r.length)return 0;const a=await this.streamReader.read(t,r.offset,r.length);if(this.position+=a,(!e||!e.mayBeLess)&&a<r.length)throw new n.EndOfStreamError;return a}async peekBuffer(t,e){const r=this.normalizeOptions(t,e);let i=0;if(r.position){const e=r.position-this.position;if(e>0){const n=new Uint8Array(r.length+e);return i=await this.peekBuffer(n,{mayBeLess:r.mayBeLess}),t.set(n.subarray(e),r.offset),i-e}if(e<0)throw new Error(\"Cannot peek from a negative offset in a stream\")}if(r.length>0){try{i=await this.streamReader.peek(t,r.offset,r.length)}catch(t){if(e&&e.mayBeLess&&t instanceof n.EndOfStreamError)return 0;throw t}if(!r.mayBeLess&&i<r.length)throw new n.EndOfStreamError}return i}async ignore(t){const e=Math.min(256e3,t),r=new Uint8Array(e);let i=0;for(;i<t;){const n=t-i,a=await this.readBuffer(r,{length:Math.min(e,n)});if(a<0)return a;i+=a}return i}}e.ReadStreamTokenizer=a},7378:(t,e,r)=>{\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fromBuffer=e.fromStream=e.EndOfStreamError=void 0;const i=r(8286),n=r(932);var a=r(4644);Object.defineProperty(e,\"EndOfStreamError\",{enumerable:!0,get:function(){return a.EndOfStreamError}}),e.fromStream=function(t,e){return e=e||{},new i.ReadStreamTokenizer(t,e)},e.fromBuffer=function(t,e){return new n.BufferTokenizer(t,e)}},3569:(t,e,r)=>{\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.fromStream=e.fromBuffer=e.EndOfStreamError=e.fromFile=void 0;const i=r(5187),n=r(7378);var a=r(9425);Object.defineProperty(e,\"fromFile\",{enumerable:!0,get:function(){return a.fromFile}});var o=r(7378);Object.defineProperty(e,\"EndOfStreamError\",{enumerable:!0,get:function(){return o.EndOfStreamError}}),Object.defineProperty(e,\"fromBuffer\",{enumerable:!0,get:function(){return o.fromBuffer}}),e.fromStream=async function(t,e){if(e=e||{},t.path){const r=await i.stat(t.path);e.path=t.path,e.size=r.size}return n.fromStream(t,e)}},643:(t,e)=>{\"use strict\";var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};e.Ee=function(t,e,r,i,n,a){for(var o=arguments.length,h=Array(o>6?o-6:0),l=6;l<o;l++)h[l-6]=arguments[l];return h.length?s.call.apply(s,[null,!1,!0,t,e,r,i,n,a].concat(h)):s(!1,!0,t,e,r,i,n,a)};var i=\"INVALID_ARGS\";function n(t){throw new Error(t)}function a(t){var e=Object.keys(t);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e}function o(t){if(Array.isArray(t))return t.slice();for(var e=a(t),r={},i=0;i<e.length;i++){var n=e[i];r[n]=t[n]}return r}function s(t,e,r){var l=r;null==l&&n(i);for(var f=!1,u=arguments.length,c=Array(u>3?u-3:0),d=3;d<u;d++)c[d-3]=arguments[d];for(var p=0;p<c.length;p++){var m=c[p];if(null!=m){var g=a(m);if(g.length)for(var b=0;b<=g.length;b++){var _=g[b];if(!t||void 0===l[_]){var y=m[_];e&&h(l[_])&&h(y)&&(y=s(t,e,l[_],y)),void 0!==y&&y!==l[_]&&(f||(f=!0,l=o(l)),l[_]=y)}}}}return l}function h(t){var e=void 0===t?\"undefined\":r(t);return null!=t&&\"object\"===e}},5010:(t,e,r)=>{\"use strict\";var i=r(8834).lW;Object.defineProperty(e,\"__esModule\",{value:!0}),e.AnsiStringType=e.StringType=e.BufferType=e.Uint8ArrayType=e.IgnoreType=e.Float80_LE=e.Float80_BE=e.Float64_LE=e.Float64_BE=e.Float32_LE=e.Float32_BE=e.Float16_LE=e.Float16_BE=e.INT64_BE=e.UINT64_BE=e.INT64_LE=e.UINT64_LE=e.INT32_LE=e.INT32_BE=e.INT24_BE=e.INT24_LE=e.INT16_LE=e.INT16_BE=e.INT8=e.UINT32_BE=e.UINT32_LE=e.UINT24_BE=e.UINT24_LE=e.UINT16_BE=e.UINT16_LE=e.UINT8=void 0;const n=r(2333);function a(t){return new DataView(t.buffer,t.byteOffset)}e.UINT8={len:1,get:(t,e)=>a(t).getUint8(e),put:(t,e,r)=>(a(t).setUint8(e,r),e+1)},e.UINT16_LE={len:2,get:(t,e)=>a(t).getUint16(e,!0),put:(t,e,r)=>(a(t).setUint16(e,r,!0),e+2)},e.UINT16_BE={len:2,get:(t,e)=>a(t).getUint16(e),put:(t,e,r)=>(a(t).setUint16(e,r),e+2)},e.UINT24_LE={len:3,get(t,e){const r=a(t);return r.getUint8(e)+(r.getUint16(e+1,!0)<<8)},put(t,e,r){const i=a(t);return i.setUint8(e,255&r),i.setUint16(e+1,r>>8,!0),e+3}},e.UINT24_BE={len:3,get(t,e){const r=a(t);return(r.getUint16(e)<<8)+r.getUint8(e+2)},put(t,e,r){const i=a(t);return i.setUint16(e,r>>8),i.setUint8(e+2,255&r),e+3}},e.UINT32_LE={len:4,get:(t,e)=>a(t).getUint32(e,!0),put:(t,e,r)=>(a(t).setUint32(e,r,!0),e+4)},e.UINT32_BE={len:4,get:(t,e)=>a(t).getUint32(e),put:(t,e,r)=>(a(t).setUint32(e,r),e+4)},e.INT8={len:1,get:(t,e)=>a(t).getInt8(e),put:(t,e,r)=>(a(t).setInt8(e,r),e+1)},e.INT16_BE={len:2,get:(t,e)=>a(t).getInt16(e),put:(t,e,r)=>(a(t).setInt16(e,r),e+2)},e.INT16_LE={len:2,get:(t,e)=>a(t).getInt16(e,!0),put:(t,e,r)=>(a(t).setInt16(e,r,!0),e+2)},e.INT24_LE={len:3,get(t,r){const i=e.UINT24_LE.get(t,r);return i>8388607?i-16777216:i},put(t,e,r){const i=a(t);return i.setUint8(e,255&r),i.setUint16(e+1,r>>8,!0),e+3}},e.INT24_BE={len:3,get(t,r){const i=e.UINT24_BE.get(t,r);return i>8388607?i-16777216:i},put(t,e,r){const i=a(t);return i.setUint16(e,r>>8),i.setUint8(e+2,255&r),e+3}},e.INT32_BE={len:4,get:(t,e)=>a(t).getInt32(e),put:(t,e,r)=>(a(t).setInt32(e,r),e+4)},e.INT32_LE={len:4,get:(t,e)=>a(t).getInt32(e,!0),put:(t,e,r)=>(a(t).setInt32(e,r,!0),e+4)},e.UINT64_LE={len:8,get:(t,e)=>a(t).getBigUint64(e,!0),put:(t,e,r)=>(a(t).setBigUint64(e,r,!0),e+8)},e.INT64_LE={len:8,get:(t,e)=>a(t).getBigInt64(e,!0),put:(t,e,r)=>(a(t).setBigInt64(e,r,!0),e+8)},e.UINT64_BE={len:8,get:(t,e)=>a(t).getBigUint64(e),put:(t,e,r)=>(a(t).setBigUint64(e,r),e+8)},e.INT64_BE={len:8,get:(t,e)=>a(t).getBigInt64(e),put:(t,e,r)=>(a(t).setBigInt64(e,r),e+8)},e.Float16_BE={len:2,get(t,e){return n.read(t,e,!1,10,this.len)},put(t,e,r){return n.write(t,r,e,!1,10,this.len),e+this.len}},e.Float16_LE={len:2,get(t,e){return n.read(t,e,!0,10,this.len)},put(t,e,r){return n.write(t,r,e,!0,10,this.len),e+this.len}},e.Float32_BE={len:4,get:(t,e)=>a(t).getFloat32(e),put:(t,e,r)=>(a(t).setFloat32(e,r),e+4)},e.Float32_LE={len:4,get:(t,e)=>a(t).getFloat32(e,!0),put:(t,e,r)=>(a(t).setFloat32(e,r,!0),e+4)},e.Float64_BE={len:8,get:(t,e)=>a(t).getFloat64(e),put:(t,e,r)=>(a(t).setFloat64(e,r),e+8)},e.Float64_LE={len:8,get:(t,e)=>a(t).getFloat64(e,!0),put:(t,e,r)=>(a(t).setFloat64(e,r,!0),e+8)},e.Float80_BE={len:10,get(t,e){return n.read(t,e,!1,63,this.len)},put(t,e,r){return n.write(t,r,e,!1,63,this.len),e+this.len}},e.Float80_LE={len:10,get(t,e){return n.read(t,e,!0,63,this.len)},put(t,e,r){return n.write(t,r,e,!0,63,this.len),e+this.len}},e.IgnoreType=class{constructor(t){this.len=t}get(t,e){}},e.Uint8ArrayType=class{constructor(t){this.len=t}get(t,e){return t.subarray(e,e+this.len)}},e.BufferType=class{constructor(t){this.len=t}get(t,e){return i.from(t.subarray(e,e+this.len))}},e.StringType=class{constructor(t,e){this.len=t,this.encoding=e}get(t,e){return i.from(t).toString(this.encoding,e,e+this.len)}};class o{constructor(t){this.len=t}static decode(t,e,r){let i=\"\";for(let n=e;n<r;++n)i+=o.codePointToString(o.singleByteDecoder(t[n]));return i}static inRange(t,e,r){return e<=t&&t<=r}static codePointToString(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}static singleByteDecoder(t){if(o.inRange(t,0,127))return t;const e=o.windows1252[t-128];if(null===e)throw Error(\"invaliding encoding\");return e}get(t,e=0){return o.decode(t,e,e+this.len)}}e.AnsiStringType=o,o.windows1252=[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]},311:(t,e)=>{(e=t.exports=function(t){return t.replace(/^\\s*|\\s*$/g,\"\")}).left=function(t){return t.replace(/^\\s*/,\"\")},e.right=function(t){return t.replace(/\\s*$/,\"\")}},9299:(t,e,r)=>{var i=r(4406);!function(){var e={};function n(){void 0===i&&console.log.apply(console,arguments)}t.exports=e,function(t,e){var r,i,a,o,s,h,l,f,u,c,d,p,m,g,b;!function(){\"use strict\";var e=function(){function t(t){this.message=\"JPEG error: \"+t}return t.prototype=new Error,t.prototype.name=\"JpegError\",t.constructor=t,t}(),r=function(){var t=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),r=4017,n=799,a=3406,o=2276,s=1567,h=3784,l=5793,f=2896;function u(t){null==t&&(t={}),null==t.w&&(t.w=-1),this.V=t.n,this.N=t.w}function c(t,e){for(var r,i,n,a=0,o=[],s=16;s>0&&!t[s-1];)s--;o.push({children:[],index:0});var h=o[0];for(r=0;r<s;r++){for(i=0;i<t[r];i++){for((h=o.pop()).children[h.index]=e[a];h.index>0;)h=o.pop();for(h.index++,o.push(h);o.length<=r;)o.push(n={children:[],index:0}),h.children[h.index]=n.children,h=n;a++}r+1<s&&(o.push(n={children:[],index:0}),h.children[h.index]=n.children,h=n)}return o[0].children}function d(t,e,r){return 64*((t.P+1)*e+r)}function p(r,n,a,o,s,h,l,f,u,c){null==c&&(c=!1);var p,m,g,_,y,w,v,x,E,k,S,M=a.m,A=a.Z,I=n,B=0,T=0,R=0,P=0,O=0,L=0;function C(){if(T>0)return T--,B>>T&1;if(255===(B=r[n++])){var t=r[n++];if(t){if(220===t&&c){var o=i(r,n+=2);if(n+=2,o>0&&o!==a.s)throw new DNLMarkerError(\"Found DNL marker (0xFFDC) while parsing scan data\",o)}else if(217===t){if(c){var s=8*O;if(s>0&&s<a.s/10)throw new DNLMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter\",s)}throw new EOIMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data\")}throw new e(\"unexpected marker\")}}return T=7,B>>>7}function U(t){for(var r=t;;){switch(typeof(r=r[C()])){case\"number\":return r;case\"object\":continue}throw new e(\"invalid huffman sequence\")}}function z(t){for(var e=0;t>0;)e=e<<1|C(),t--;return e}function D(t){if(1===t)return 1===C()?1:-1;var e=z(t);return e>=1<<t-1?e:e+(-1<<t)+1}function N(t,e,r,i,n){var a=r%M;O=(r/M|0)*t.A+i;var o=a*t.h+n;e(t,d(t,O,o))}function F(t,e,r){O=r/t.P|0;var i=r%t.P;e(t,d(t,O,i))}var j=o.length;for(v=A?0===h?0===f?function(t,e){var r=U(t.J),i=0===r?0:D(r)<<u;t.D[e]=t.Q+=i}:function(t,e){t.D[e]|=C()<<u}:0===f?function(e,r){if(R>0)R--;else for(var i=h,n=l;i<=n;){var a=U(e.i),o=15&a,s=a>>4;if(0!==o){var f=t[i+=s];e.D[r+f]=D(o)*(1<<u),i++}else{if(s<15){R=z(s)+(1<<s)-1;break}i+=16}}}:function(r,i){for(var n,a,o=h,s=l,f=0;o<=s;){var c=i+t[o],d=r.D[c]<0?-1:1;switch(P){case 0:if(f=(a=U(r.i))>>4,0==(n=15&a))f<15?(R=z(f)+(1<<f),P=4):(f=16,P=1);else{if(1!==n)throw new e(\"invalid ACn encoding\");p=D(n),P=f?2:3}continue;case 1:case 2:r.D[c]?r.D[c]+=d*(C()<<u):0==--f&&(P=2===P?3:0);break;case 3:r.D[c]?r.D[c]+=d*(C()<<u):(r.D[c]=p<<u,P=0);break;case 4:r.D[c]&&(r.D[c]+=d*(C()<<u))}o++}4===P&&0==--R&&(P=0)}:function(e,r){var i=U(e.J),n=0===i?0:D(i),a=1;for(e.D[r]=e.Q+=n;a<64;){var o=U(e.i),s=15&o,h=o>>4;if(0!==s){var l=t[a+=h];e.D[r+l]=D(s),a++}else{if(h<15)break;a+=16}}},E=1===j?o[0].P*o[0].c:M*a.R;L<=E;){var G=s?Math.min(E-L,s):E;if(G>0){for(g=0;g<j;g++)o[g].Q=0;if(R=0,1===j)for(m=o[0],w=0;w<G;w++)F(m,v,L),L++;else for(w=0;w<G;w++){for(g=0;g<j;g++)for(k=(m=o[g]).h,S=m.A,_=0;_<S;_++)for(y=0;y<k;y++)N(m,v,L,_,y);L++}}if(T=0,!(x=b(r,n)))break;if(x.u&&(n=x.offset),!(x.M>=65488&&x.M<=65495))break;n+=2}return n-I}function m(t,i,u){var c,d,p,m,g,b,_,y,w,v,x,E,k,S,M,A,I,B=t.$,T=t.D;if(!B)throw new e(\"missing required Quantization Table.\");for(var R=0;R<64;R+=8)w=T[i+R],v=T[i+R+1],x=T[i+R+2],E=T[i+R+3],k=T[i+R+4],S=T[i+R+5],M=T[i+R+6],A=T[i+R+7],w*=B[R],0!=(v|x|E|k|S|M|A)?(v*=B[R+1],x*=B[R+2],E*=B[R+3],k*=B[R+4],S*=B[R+5],M*=B[R+6],A*=B[R+7],d=(c=(c=l*w+128>>8)+(d=l*k+128>>8)+1>>1)-d,I=(p=x)*h+(m=M)*s+128>>8,p=p*s-m*h+128>>8,_=(g=(g=f*(v-A)+128>>8)+(_=S<<4)+1>>1)-_,b=(y=(y=f*(v+A)+128>>8)+(b=E<<4)+1>>1)-b,m=(c=c+(m=I)+1>>1)-m,p=(d=d+p+1>>1)-p,I=g*o+y*a+2048>>12,g=g*a-y*o+2048>>12,y=I,I=b*n+_*r+2048>>12,b=b*r-_*n+2048>>12,_=I,u[R]=c+y,u[R+7]=c-y,u[R+1]=d+_,u[R+6]=d-_,u[R+2]=p+b,u[R+5]=p-b,u[R+3]=m+g,u[R+4]=m-g):(I=l*w+512>>10,u[R]=I,u[R+1]=I,u[R+2]=I,u[R+3]=I,u[R+4]=I,u[R+5]=I,u[R+6]=I,u[R+7]=I);for(var P=0;P<8;++P)w=u[P],0!=((v=u[P+8])|(x=u[P+16])|(E=u[P+24])|(k=u[P+32])|(S=u[P+40])|(M=u[P+48])|(A=u[P+56]))?(d=(c=4112+((c=l*w+2048>>12)+(d=l*k+2048>>12)+1>>1))-d,I=(p=x)*h+(m=M)*s+2048>>12,p=p*s-m*h+2048>>12,m=I,_=(g=(g=f*(v-A)+2048>>12)+(_=S)+1>>1)-_,b=(y=(y=f*(v+A)+2048>>12)+(b=E)+1>>1)-b,I=g*o+y*a+2048>>12,g=g*a-y*o+2048>>12,y=I,I=b*n+_*r+2048>>12,b=b*r-_*n+2048>>12,(w=(c=c+m+1>>1)+y)<16?w=0:w>=4080?w=255:w>>=4,(v=(d=d+p+1>>1)+(_=I))<16?v=0:v>=4080?v=255:v>>=4,(x=(p=d-p)+b)<16?x=0:x>=4080?x=255:x>>=4,(E=(m=c-m)+g)<16?E=0:E>=4080?E=255:E>>=4,(k=m-g)<16?k=0:k>=4080?k=255:k>>=4,(S=p-b)<16?S=0:S>=4080?S=255:S>>=4,(M=d-_)<16?M=0:M>=4080?M=255:M>>=4,(A=c-y)<16?A=0:A>=4080?A=255:A>>=4,T[i+P]=w,T[i+P+8]=v,T[i+P+16]=x,T[i+P+24]=E,T[i+P+32]=k,T[i+P+40]=S,T[i+P+48]=M,T[i+P+56]=A):(I=(I=l*w+8192>>14)<-2040?0:I>=2024?255:I+2056>>4,T[i+P]=I,T[i+P+8]=I,T[i+P+16]=I,T[i+P+24]=I,T[i+P+32]=I,T[i+P+40]=I,T[i+P+48]=I,T[i+P+56]=I)}function g(t,e){for(var r=e.P,i=e.c,n=new Int16Array(64),a=0;a<i;a++)for(var o=0;o<r;o++)m(e,d(e,a,o),n);return e.D}function b(t,e,r){null==r&&(r=e);var n=t.length-1,a=r<e?r:e;if(e>=n)return null;var o=i(t,e);if(o>=65472&&o<=65534)return{u:null,M:o,offset:e};for(var s=i(t,a);!(s>=65472&&s<=65534);){if(++a>=n)return null;s=i(t,a)}return{u:o.toString(16),M:s,offset:a}}return u.prototype={parse(r,n){null==n&&(n={});var a,o,s=n.F,h=0,l=null,f=null,u=0;function d(){var t=i(r,h),e=(h+=2)+t-2,n=b(r,e,h);n&&n.u&&(e=n.offset);var a=r.subarray(h,e);return h+=a.length,a}function m(t){for(var e=Math.ceil(t.o/8/t.X),r=Math.ceil(t.s/8/t.B),i=0;i<t.W.length;i++){G=t.W[i];var n=Math.ceil(Math.ceil(t.o/8)*G.h/t.X),a=Math.ceil(Math.ceil(t.s/8)*G.A/t.B),o=e*G.h,s=r*G.A*64*(o+1);G.D=new Int16Array(s),G.P=n,G.c=a}t.m=e,t.R=r}var _=[],y=[],w=[],v=i(r,h);if(h+=2,65496!==v)throw new e(\"SOI not found\");v=i(r,h),h+=2;t:for(;65497!==v;){var x,E,k;switch(v){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var S=d();65504===v&&74===S[0]&&70===S[1]&&73===S[2]&&70===S[3]&&0===S[4]&&(l={version:{d:S[5],T:S[6]},K:S[7],j:S[8]<<8|S[9],H:S[10]<<8|S[11],S:S[12],I:S[13],C:S.subarray(14,14+3*S[12]*S[13])}),65518===v&&65===S[0]&&100===S[1]&&111===S[2]&&98===S[3]&&101===S[4]&&(f={version:S[5]<<8|S[6],k:S[7]<<8|S[8],q:S[9]<<8|S[10],a:S[11]});break;case 65499:for(var M=i(r,h)+(h+=2)-2;h<M;){var A=r[h++],I=new Uint16Array(64);if(A>>4==0)for(E=0;E<64;E++)I[t[E]]=r[h++];else{if(A>>4!=1)throw new e(\"DQT - invalid table spec\");for(E=0;E<64;E++)I[t[E]]=i(r,h),h+=2}_[15&A]=I}break;case 65472:case 65473:case 65474:if(a)throw new e(\"Only single frame JPEGs supported\");h+=2,(a={}).G=65473===v,a.Z=65474===v,a.precision=r[h++];var B,T=i(r,h),R=0,P=0;h+=2,a.s=s||T,a.o=i(r,h),h+=2,a.W=[],a._={};var O=r[h++];for(x=0;x<O;x++){B=r[h];var L=r[h+1]>>4,C=15&r[h+1];R<L&&(R=L),P<C&&(P=C);var U=r[h+2];k=a.W.push({h:L,A:C,L:U,$:null}),a._[B]=k-1,h+=3}a.X=R,a.B=P,m(a);break;case 65476:var z=i(r,h);for(h+=2,x=2;x<z;){var D=r[h++],N=new Uint8Array(16),F=0;for(E=0;E<16;E++,h++)F+=N[E]=r[h];var j=new Uint8Array(F);for(E=0;E<F;E++,h++)j[E]=r[h];x+=17+F,(D>>4==0?w:y)[15&D]=c(N,j)}break;case 65501:o=i(r,h+=2),h+=2;break;case 65498:var G,H=1==++u&&!s;h+=2;var W=r[h++],q=[];for(x=0;x<W;x++){var Z=r[h++],Y=a._[Z];(G=a.W[Y]).index=Z;var V=r[h++];G.J=w[V>>4],G.i=y[15&V],q.push(G)}var X=r[h++],J=r[h++],Q=r[h++];try{var K=p(r,h,a,q,o,X,J,Q>>4,15&Q,H);h+=K}catch(t){if(t instanceof DNLMarkerError)return this.parse(r,{F:t.s});if(t instanceof EOIMarkerError)break t;throw t}break;case 65500:h+=4;break;case 65535:255!==r[h]&&h--;break;default:var $=b(r,h-2,h-3);if($&&$.u){h=$.offset;break}if(h>=r.length-1)break t;throw new e(\"JpegImage.parse - unknown marker: \"+v.toString(16))}v=i(r,h),h+=2}for(this.width=a.o,this.height=a.s,this.g=l,this.b=f,this.W=[],x=0;x<a.W.length;x++){var tt=_[(G=a.W[x]).L];tt&&(G.$=tt),this.W.push({index:G.index,e:g(0,G),l:G.h/a.X,t:G.A/a.B,P:G.P,c:G.c})}this.p=this.W.length},Y(t,e,r){null==r&&(r=!1);var i,n,a,o,s,h,l,f,u,c,d,p,m=this.width/t,g=this.height/e,b=0,_=this.W.length,y=t*e*_,w=new Uint8ClampedArray(y),v=new Uint32Array(t),x=4294967288;for(l=0;l<_;l++){if(n=(i=this.W[l]).l*m,a=i.t*g,b=l,d=i.e,o=i.P+1<<3,n!==p){for(s=0;s<t;s++)f=0|s*n,v[s]=(f&x)<<3|7&f;p=n}for(h=0;h<e;h++)for(c=o*((f=0|h*a)&x)|(7&f)<<3,s=0;s<t;s++)w[b]=d[c+v[s]],b+=_}var E=this.V;if(r||4!==_||E||(E=new Int32Array([-256,255,-256,255,-256,255,-256,255])),E)for(l=0;l<y;)for(f=0,u=0;f<_;f++,l++,u+=2)w[l]=(w[l]*E[u]>>8)+E[u+1];return w},get f(){return this.b?!!this.b.a:3===this.p?0!==this.N&&(82!==this.W[0].index||71!==this.W[1].index||66!==this.W[2].index):1===this.N},z:function(t){for(var e,r,i,n=0,a=t.length;n<a;n+=3)e=t[n],r=t[n+1],i=t[n+2],t[n]=e-179.456+1.402*i,t[n+1]=e+135.459-.344*r-.714*i,t[n+2]=e-226.816+1.772*r;return t},O:function(t){for(var e,r,i,n,a=0,o=0,s=t.length;o<s;o+=4)e=t[o],r=t[o+1],i=t[o+2],n=t[o+3],t[a++]=r*(-660635669420364e-19*r+.000437130475926232*i-54080610064599e-18*e+.00048449797120281*n-.154362151871126)-122.67195406894+i*(-.000957964378445773*i+.000817076911346625*e-.00477271405408747*n+1.53380253221734)+e*(.000961250184130688*e-.00266257332283933*n+.48357088451265)+n*(-.000336197177618394*n+.484791561490776),t[a++]=107.268039397724+r*(219927104525741e-19*r-.000640992018297945*i+.000659397001245577*e+.000426105652938837*n-.176491792462875)+i*(-.000778269941513683*i+.00130872261408275*e+.000770482631801132*n-.151051492775562)+e*(.00126935368114843*e-.00265090189010898*n+.25802910206845)+n*(-.000318913117588328*n-.213742400323665),t[a++]=r*(-.000570115196973677*r-263409051004589e-19*i+.0020741088115012*e-.00288260236853442*n+.814272968359295)-20.810012546947+i*(-153496057440975e-19*i-.000132689043961446*e+.000560833691242812*n-.195152027534049)+e*(.00174418132927582*e-.00255243321439347*n+.116935020465145)+n*(-.000343531996510555*n+.24165260232407);return t.subarray(0,a)},r:function(t){for(var e,r,i,n=0,a=t.length;n<a;n+=4)e=t[n],r=t[n+1],i=t[n+2],t[n]=434.456-e-1.402*i,t[n+1]=119.541-e+.344*r+.714*i,t[n+2]=481.816-e-1.772*r;return t},U:function(t){for(var e,r,i,n,a=0,o=0,s=t.length;o<s;o+=4)e=t[o],r=t[o+1],i=t[o+2],n=t[o+3],t[a++]=255+e*(-6747147073602441e-20*e+.0008379262121013727*r+.0002894718188643294*i+.003264231057537806*n-1.1185611867203937)+r*(26374107616089405e-21*r-8626949158638572e-20*i-.0002748769067499491*n-.02155688794978967)+i*(-3878099212869363e-20*i-.0003267808279485286*n+.0686742238595345)-n*(.0003361971776183937*n+.7430659151342254),t[a++]=255+e*(.00013596372813588848*e+.000924537132573585*r+.00010567359618683593*i+.0004791864687436512*n-.3109689587515875)+r*(-.00023545346108370344*r+.0002702845253534714*i+.0020200308977307156*n-.7488052167015494)+i*(6834815998235662e-20*i+.00015168452363460973*n-.09751927774728933)-n*(.0003189131175883281*n+.7364883807733168),t[a++]=255+e*(13598650411385307e-21*e+.00012423956175490851*r+.0004751985097583589*i-36729317476630422e-22*n-.05562186980264034)+r*(.00016141380598724676*r+.0009692239130725186*i+.0007782692450036253*n-.44015232367526463)+i*(5.068882914068769e-7*i+.0017778369011375071*n-.7591454649749609)-n*(.0003435319965105553*n+.7063770186160144);return t.subarray(0,a)},getData:function(t){var r=t.width,i=t.height,n=t.forceRGB,a=t.isSourcePDF;if(this.p>4)throw new e(\"Unsupported color mode\");var o=this.Y(r,i,a);if(1===this.p&&n){for(var s=o.length,h=new Uint8ClampedArray(3*s),l=0,f=0;f<s;f++){var u=o[f];h[l++]=u,h[l++]=u,h[l++]=u}return h}if(3===this.p&&this.f)return this.z(o);if(4===this.p){if(this.f)return n?this.O(o):this.r(o);if(n)return this.U(o)}return o}},u}();function i(t,e){return t[e]<<8|t[e+1]}t.JpegDecoder=r}(),t.encodeImage=function(e,r,i,n){var a={t256:[r],t257:[i],t258:[8,8,8,8],t259:[1],t262:[2],t273:[1e3],t277:[4],t278:[i],t279:[r*i*4],t282:[[72,1]],t283:[[72,1]],t284:[1],t286:[[0,1]],t287:[[0,1]],t296:[1],t305:[\"Photopea (UTIF.js)\"],t338:[1]};if(n)for(var o in n)a[o]=n[o];var s=new Uint8Array(t.encode([a])),h=new Uint8Array(e),l=new Uint8Array(1e3+r*i*4);for(o=0;o<s.length;o++)l[o]=s[o];for(o=0;o<h.length;o++)l[1e3+o]=h[o];return l.buffer},t.encode=function(e){var r=new Uint8Array(2e4),i=4,n=t._binBE;r[0]=r[1]=77,n.writeUshort(r,2,42);var a=8;n.writeUint(r,i,a),i+=4;for(var o=0;o<e.length;o++){var s=t._writeIFD(n,t._types.basic,r,a,e[o]);a=s[1],o<e.length-1&&(0!=(3&a)&&(a+=4-(3&a)),n.writeUint(r,s[0],a))}return r.slice(0,a).buffer},t.decode=function(e,r){null==r&&(r={parseMN:!0,debug:!1});var i=new Uint8Array(e),a=0,o=t._binBE.readASCII(i,a,2);a+=2;var s=\"II\"==o?t._binLE:t._binBE;s.readUshort(i,a),a+=2;var h=s.readUint(i,a);a+=4;for(var l=[];;){var f=s.readUshort(i,h),u=s.readUshort(i,h+4);if(0!=f&&(u<1||13<u)){n(\"error in TIFF\");break}if(t._readIFD(s,i,h,l,0,r),0==(h=s.readUint(i,h+2+12*f)))break}return l},t.decodeImage=function(e,r,i){if(!r.data){var a=new Uint8Array(e),o=t._binBE.readASCII(a,0,2);if(null!=r.t256){r.isLE=\"II\"==o,r.width=r.t256[0],r.height=r.t257[0];var s,h=r.t259?r.t259[0]:1,l=r.t266?r.t266[0]:1;r.t284&&2==r.t284[0]&&n(\"PlanarConfiguration 2 should not be used!\"),7==h&&r.t258&&r.t258.length>3&&(r.t258=r.t258.slice(0,3)),s=r.t258?Math.min(32,r.t258[0])*r.t258.length:r.t277?r.t277[0]:1,1==h&&null!=r.t279&&r.t278&&32803==r.t262[0]&&(s=Math.round(8*r.t279[0]/(r.width*r.t278[0]))),r.t50885&&4==r.t50885[0]&&(s=3*r.t258[0]);var f=8*Math.ceil(r.width*s/8),u=r.t273;(null==u||r.t322)&&(u=r.t324);var c=r.t279;1==h&&1==u.length&&(c=[r.height*(f>>>3)]),(null==c||r.t322)&&(c=r.t325);var d=new Uint8Array(r.height*(f>>>3)),p=0;if(null!=r.t322){var m=r.t322[0],g=r.t323[0],b=Math.floor((r.width+m-1)/m),_=Math.floor((r.height+g-1)/g),y=new Uint8Array(0|Math.ceil(m*g*s/8));console.log(\"====\",b,_);for(var w=0;w<_;w++)for(var v=0;v<b;v++){var x=w*b+v;y.fill(0),t.decode._decompress(r,i,a,u[x],c[x],h,y,0,l),6==h?d=y:t._copyTile(y,0|Math.ceil(m*s/8),g,d,0|Math.ceil(r.width*s/8),r.height,0|Math.ceil(v*m*s/8),w*g)}p=8*d.length}else{var E=r.t278?r.t278[0]:r.height;for(E=Math.min(E,r.height),console.log(\"====\",r.width,E),x=0;x<u.length;x++)t.decode._decompress(r,i,a,u[x],c[x],h,d,0|Math.ceil(p/8),l),p+=f*E;p=Math.min(p,8*d.length)}r.data=new Uint8Array(d.buffer,0,0|Math.ceil(p/8))}}},t.decode._decompress=function(r,i,a,o,s,h,l,f,u){if(1==h)for(var c=0;c<s;c++)l[f+c]=a[o+c];else if(2==h)t.decode._decodeG2(a,o,s,l,f,r.width,u);else if(3==h)t.decode._decodeG3(a,o,s,l,f,r.width,u,!!r.t292&&1==(1&r.t292[0]));else if(4==h)t.decode._decodeG4(a,o,s,l,f,r.width,u);else if(5==h)t.decode._decodeLZW(a,o,s,l,f,8);else if(6==h)t.decode._decodeOldJPEG(r,a,o,s,l,f);else if(7==h||34892==h)t.decode._decodeNewJPEG(r,a,o,s,l,f);else if(8==h||32946==h)for(var d=new Uint8Array(a.buffer,o,s),p=e.inflate(d),m=0;m<p.length;m++)l[f+m]=p[m];else 9==h?t.decode._decodeVC5(a,o,s,l,f):32767==h?t.decode._decodeARW(r,a,o,s,l,f):32773==h?t.decode._decodePackBits(a,o,s,l,f):32809==h?t.decode._decodeThunder(a,o,s,l,f):34713==h?t.decode._decodeNikon(r,i,a,o,s,l,f):34676==h?t.decode._decodeLogLuv32(r,a,o,s,l,f):n(\"Unknown compression\",h);var g=r.t258?Math.min(32,r.t258[0]):1,b=r.t277?r.t277[0]:1,_=g*b>>>3,y=r.t278?r.t278[0]:r.height,w=Math.ceil(g*b*r.width/8);if(16==g&&!r.isLE&&null==r.t33422)for(var v=0;v<y;v++)for(var x=f+v*w,E=1;E<w;E+=2){var k=l[x+E];l[x+E]=l[x+E-1],l[x+E-1]=k}if(r.t317&&2==r.t317[0])for(v=0;v<y;v++){var S=f+v*w;if(16==g)for(c=_;c<w;c+=2){var M=(l[S+c+1]<<8|l[S+c])+(l[S+c-_+1]<<8|l[S+c-_]);l[S+c]=255&M,l[S+c+1]=M>>>8&255}else if(3==b)for(c=3;c<w;c+=3)l[S+c]=l[S+c]+l[S+c-3]&255,l[S+c+1]=l[S+c+1]+l[S+c-2]&255,l[S+c+2]=l[S+c+2]+l[S+c-1]&255;else for(c=_;c<w;c++)l[S+c]=l[S+c]+l[S+c-_]&255}},t.decode._decodeVC5=t.decode._decodeVC5=function(){var e,r,i,n=[1,0,1,0,2,2,1,1,3,7,1,2,5,25,1,3,6,48,1,4,6,54,1,5,7,111,1,8,7,99,1,6,7,105,12,0,7,107,1,7,8,209,20,0,8,212,1,9,8,220,1,10,9,393,1,11,9,394,32,0,9,416,1,12,9,427,1,13,10,887,1,18,10,784,1,14,10,790,1,15,10,835,60,0,10,852,1,16,10,885,1,17,11,1571,1,19,11,1668,1,20,11,1669,100,0,11,1707,1,21,11,1772,1,22,12,3547,1,29,12,3164,1,24,12,3166,1,25,12,3140,1,23,12,3413,1,26,12,3537,1,27,12,3539,1,28,13,7093,1,35,13,6283,1,30,13,6331,1,31,13,6335,180,0,13,6824,1,32,13,7072,1,33,13,7077,320,0,13,7076,1,34,14,12565,1,36,14,12661,1,37,14,12669,1,38,14,13651,1,39,14,14184,1,40,15,28295,1,46,15,28371,1,47,15,25320,1,42,15,25336,1,43,15,25128,1,41,15,27300,1,44,15,28293,1,45,16,50259,1,48,16,50643,1,49,16,50675,1,50,16,56740,1,53,16,56584,1,51,16,56588,1,52,17,113483,1,61,17,113482,1,60,17,101285,1,55,17,101349,1,56,17,109205,1,57,17,109207,1,58,17,100516,1,54,17,113171,1,59,18,202568,1,62,18,202696,1,63,18,218408,1,64,18,218412,1,65,18,226340,1,66,18,226356,1,67,18,226358,1,68,19,402068,1,69,19,405138,1,70,19,405394,1,71,19,436818,1,72,19,436826,1,73,19,452714,1,75,19,452718,1,76,19,452682,1,74,20,804138,1,77,20,810279,1,78,20,810790,1,79,20,873638,1,80,20,873654,1,81,20,905366,1,82,20,905430,1,83,20,905438,1,84,21,1608278,1,85,21,1620557,1,86,21,1621582,1,87,21,1621583,1,88,21,1747310,1,89,21,1810734,1,90,21,1810735,1,91,21,1810863,1,92,21,1810879,1,93,22,3621725,1,99,22,3621757,1,100,22,3241112,1,94,22,3494556,1,95,22,3494557,1,96,22,3494622,1,97,22,3494623,1,98,23,6482227,1,102,23,6433117,1,101,23,6989117,1,103,23,6989119,1,105,23,6989118,1,104,23,7243449,1,106,23,7243512,1,107,24,13978233,1,111,24,12964453,1,109,24,12866232,1,108,24,14486897,1,113,24,13978232,1,110,24,14486896,1,112,24,14487026,1,114,24,14487027,1,115,25,25732598,1,225,25,25732597,1,189,25,25732596,1,188,25,25732595,1,203,25,25732594,1,202,25,25732593,1,197,25,25732592,1,207,25,25732591,1,169,25,25732590,1,223,25,25732589,1,159,25,25732522,1,235,25,25732579,1,152,25,25732575,1,192,25,25732489,1,179,25,25732573,1,201,25,25732472,1,172,25,25732576,1,149,25,25732488,1,178,25,25732566,1,120,25,25732571,1,219,25,25732577,1,150,25,25732487,1,127,25,25732506,1,211,25,25732548,1,125,25,25732588,1,158,25,25732486,1,247,25,25732467,1,238,25,25732508,1,163,25,25732552,1,228,25,25732603,1,183,25,25732513,1,217,25,25732587,1,168,25,25732520,1,122,25,25732484,1,128,25,25732562,1,249,25,25732505,1,187,25,25732504,1,186,25,25732483,1,136,25,25928905,1,181,25,25732560,1,255,25,25732500,1,230,25,25732482,1,135,25,25732555,1,233,25,25732568,1,222,25,25732583,1,145,25,25732481,1,134,25,25732586,1,167,25,25732521,1,248,25,25732518,1,209,25,25732480,1,243,25,25732512,1,216,25,25732509,1,164,25,25732547,1,140,25,25732479,1,157,25,25732544,1,239,25,25732574,1,191,25,25732564,1,251,25,25732478,1,156,25,25732546,1,139,25,25732498,1,242,25,25732557,1,133,25,25732477,1,162,25,25732515,1,213,25,25732584,1,165,25,25732514,1,212,25,25732476,1,227,25,25732494,1,198,25,25732531,1,236,25,25732530,1,234,25,25732529,1,117,25,25732528,1,215,25,25732527,1,124,25,25732526,1,123,25,25732525,1,254,25,25732524,1,253,25,25732523,1,148,25,25732570,1,218,25,25732580,1,146,25,25732581,1,147,25,25732569,1,224,25,25732533,1,143,25,25732540,1,184,25,25732541,1,185,25,25732585,1,166,25,25732556,1,132,25,25732485,1,129,25,25732563,1,250,25,25732578,1,151,25,25732501,1,119,25,25732502,1,193,25,25732536,1,176,25,25732496,1,245,25,25732553,1,229,25,25732516,1,206,25,25732582,1,144,25,25732517,1,208,25,25732558,1,137,25,25732543,1,241,25,25732466,1,237,25,25732507,1,190,25,25732542,1,240,25,25732551,1,131,25,25732554,1,232,25,25732565,1,252,25,25732475,1,171,25,25732493,1,205,25,25732492,1,204,25,25732491,1,118,25,25732490,1,214,25,25928904,1,180,25,25732549,1,126,25,25732602,1,182,25,25732539,1,175,25,25732545,1,141,25,25732559,1,138,25,25732537,1,177,25,25732534,1,153,25,25732503,1,194,25,25732606,1,160,25,25732567,1,121,25,25732538,1,174,25,25732497,1,246,25,25732550,1,130,25,25732572,1,200,25,25732474,1,170,25,25732511,1,221,25,25732601,1,196,25,25732532,1,142,25,25732519,1,210,25,25732495,1,199,25,25732605,1,155,25,25732535,1,154,25,25732499,1,244,25,25732510,1,220,25,25732600,1,195,25,25732607,1,161,25,25732604,1,231,25,25732473,1,173,25,25732599,1,226,26,51465122,1,116,26,51465123,0,1],a=[3,3,3,3,2,2,2,1,1,1];function o(t){var e=t[1],r=t[0][e>>>3]>>>7-(7&e)&1;return t[1]++,r}function s(t,r){if(null==e){e={};for(var i=0;i<n.length;i+=4)e[n[i+1]]=n.slice(i,i+4)}for(var a=o(t),s=e[a];null==s;)a=a<<1|o(t),s=e[a];var h=s[3];0!=h&&(h=0==o(t)?h:-h),r[0]=s[2],r[1]=h}function h(t,e){for(var r=0;r<e;r++)1==(1&t)&&t++,t>>>=1;return t}function l(t,e){return t>>e}function f(t,e,r,i,n,a){e[r]=l(l(11*t[n]-4*t[n+a]+t[n+a+a]+4,3)+t[i],1),e[r+a]=l(l(5*t[n]+4*t[n+a]-t[n+a+a]+4,3)-t[i],1)}function u(t,e,r,i,n,a){var o=t[n-a]-t[n+a],s=t[n],h=t[i];e[r]=l(l(o+4,3)+s+h,1),e[r+a]=l(l(4-o,3)+s-h,1)}function c(t,e,r,i,n,a){e[r]=l(l(5*t[n]+4*t[n-a]-t[n-a-a]+4,3)+t[i],1),e[r+a]=l(l(11*t[n]-4*t[n-a]+t[n-a-a]+4,3)-t[i],1)}function d(t){return i[t=t<0?0:t>4095?4095:t]>>>2}return function(e,n,o,l,p){l=new Uint16Array(l.buffer);var m,g,b,_,y,w,v,x,E=Date.now(),k=t._binBE,S=n+o;for(n+=4;n<S;){var M=k.readShort(e,n),A=k.readUshort(e,n+2);if(n+=4,12==M)L=A;else if(20==M)m=A;else if(21==M)g=A;else if(48==M)b=A;else if(53==M)_=A;else if(35==M);else if(62==M)y=A;else if(101==M);else if(109==M)w=A;else if(84==M);else if(106==M);else if(107==M);else if(108==M);else if(102==M);else if(104==M)tt=A;else if(105==M);else{var I=M<0?-M:M,B=65280&I,T=0;if(24576&I&&(8192&I?(T=65535&A,T+=(255&I)<<16):T=65535&A),24576==(24576&I)){if(null==v){v=[];for(var R=0;R<4;R++)v[R]=new Int16Array((m>>>1)*(g>>>1));for(x=new Int16Array((m>>>1)*(g>>>1)),r=new Int16Array(1024),R=0;R<1024;R++){var P=R-512,O=Math.abs(P),L=Math.floor(768*O*O*O/16581375)+O;r[R]=Math.sign(P)*L}for(i=new Uint16Array(4096),R=0;R<4096;R++){var C=R,U=65535*(Math.pow(113,C/4095)-1)/112;i[R]=Math.min(U,65535)}}var z=v[y],D=h(m,1+a[b]),N=h(g,1+a[b]);if(0==b)for(var F=0;F<N;F++)for(var j=0;j<D;j++){var G=n+2*(F*D+j);z[F*(m>>>1)+j]=e[G]<<8|e[G+1]}else{var H=[e,8*n],W=[],q=0,Z=D*N,Y=[0,0],V=0;for(A=0;q<Z;)for(s(H,Y),V=Y[0],A=Y[1];V>0;)W[q++]=A,V--;var X=(b-1)%3,J=1!=X?D:0,Q=0!=X?N:0;for(F=0;F<N;F++){var K=(F+Q)*(m>>>1)+J,$=F*D;for(j=0;j<D;j++)z[K+j]=r[W[$+j]+512]*_}if(2==X){var tt=m>>>1,et=2*D,rt=2*N;for(F=0;F<N;F++)for(j=0;j<et;j++){R=2*F*tt+j;var it=N*tt+(at=F*tt+j);0==F?f(z,x,R,it,at,tt):F==N-1?c(z,x,R,it,at,tt):u(z,x,R,it,at,tt)}var nt=z;for(z=x,x=nt,F=0;F<rt;F++)for(j=0;j<D;j++){var at;R=F*tt+2*j,it=D+(at=F*tt+j),0==j?f(z,x,R,it,at,1):j==D-1?c(z,x,R,it,at,1):u(z,x,R,it,at,1)}nt=z,z=x,x=nt;for(var ot=[],st=2-~~((b-1)/3),ht=0;ht<3;ht++)ot[ht]=w>>14-2*ht&3;var lt=ot[st];if(0!=lt)for(F=0;F<rt;F++)for(j=0;j<et;j++)z[R=F*tt+j]=z[R]<<lt}}if(9==b&&3==y){var ft=v[0],ut=v[1],ct=v[2],dt=v[3];for(F=0;F<g;F+=2)for(j=0;j<m;j+=2){var pt=F*m+j,mt=ft[G=(F>>>1)*(m>>>1)+(j>>>1)],gt=ut[G]-2048,bt=ct[G]-2048,_t=dt[G]-2048,yt=(gt<<1)+mt,wt=(bt<<1)+mt,vt=mt+_t,xt=mt-_t;l[pt]=d(yt),l[pt+1]=d(vt),l[pt+m]=d(xt),l[pt+m+1]=d(wt)}}n+=4*T}else if(16388==I)n+=4*T;else if(8192!=B&&8448!=B&&9216!=B)throw I.toString(16)}}console.log(Date.now()-E)}}(),t.decode._decodeLogLuv32=function(t,e,r,i,n,a){for(var o=t.width,s=4*o,h=0,l=new Uint8Array(s);h<i;){for(var f=0;f<s;){var u=e[r+h];if(h++,u<128){for(var c=0;c<u;c++)l[f+c]=e[r+h+c];f+=u,h+=u}else{for(u-=126,c=0;c<u;c++)l[f+c]=e[r+h];f+=u,h++}}for(var d=0;d<o;d++)n[a+0]=l[d],n[a+1]=l[d+o],n[a+2]=l[d+2*o],n[a+4]=l[d+3*o],a+=6}},t.decode._ljpeg_diff=function(e,r,i){var n,a,o=t.decode._getbithuff;return n=o(e,r,i[0],i),0==((a=o(e,r,n,0))&1<<n-1)&&(a-=(1<<n)-1),a},t.decode._decodeARW=function(e,r,i,n,a,o){var s=e.t256[0],h=e.t257[0],l=e.t258[0],f=e.isLE?t._binLE:t._binBE;if(s*h==n||s*h*1.5==n)if(s*h*1.5!=n){var u,c,d,p,m,g,b,_,y=new Uint16Array(16),w=new Uint8Array(s+1);for(I=0;I<h;I++){for(var v=0;v<s;v++)w[v]=r[i++];for(_=0,A=0;A<s-30;_+=16){for(c=2047&(u=f.readUint(w,_)),d=2047&u>>>11,p=15&u>>>22,m=15&u>>>26,g=0;g<4&&128<<g<=c-d;g++);for(b=30,x=0;x<16;x++)x==p?y[x]=c:x==m?y[x]=d:(y[x]=((f.readUshort(w,_+(b>>3))>>>(7&b)&127)<<g)+d,y[x]>2047&&(y[x]=2047),b+=7);for(x=0;x<16;x++,A+=2)U=y[x]<<1,t.decode._putsF(a,(I*s+A)*l,U<<16-l);A-=1&A?1:31}}}else for(var x=0;x<n;x+=3){var E=r[i+x+0],k=r[i+x+1],S=r[i+x+2];a[o+x]=k<<4|E>>>4,a[o+x+1]=E<<4|S>>>4,a[o+x+2]=S<<4|k>>>4}else{h+=8;var M,A,I,B=[i,0,0,0],T=new Uint16Array(32770),R=[3857,3856,3599,3342,3085,2828,2571,2314,2057,1800,1543,1286,1029,772,771,768,514,513],P=0,O=t.decode._ljpeg_diff;for(T[0]=15,M=x=0;x<18;x++)for(var L=32768>>>(R[x]>>>8),C=0;C<L;C++)T[++M]=R[x];for(A=s;A--;)for(I=0;I<h+1;I+=2)if(I==h&&(I=1),P+=O(r,B,T),I<h){var U=4095&P;t.decode._putsF(a,(I*s+A)*l,U<<16-l)}}},t.decode._decodeNikon=function(e,r,i,n,a,o,s){var h=[[0,0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0,5,4,3,6,2,7,1,0,8,9,11,10,12],[0,0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0,57,90,56,39,22,5,4,3,2,1,0,11,12,12],[0,0,1,4,2,3,1,2,0,0,0,0,0,0,0,0,0,5,4,6,3,7,2,8,1,9,0,10,11,12],[0,0,1,4,3,1,1,1,1,1,2,0,0,0,0,0,0,5,6,4,7,8,3,9,2,1,0,10,11,12,13,14],[0,0,1,5,1,1,1,1,1,1,1,2,0,0,0,0,0,8,92,75,58,41,7,6,5,4,3,2,1,0,13,14],[0,0,1,4,2,2,3,1,2,0,0,0,0,0,0,0,0,7,6,8,5,9,4,10,3,11,12,2,0,1,13,14]],l=e.t256[0],f=e.t257[0],u=e.t258[0],c=0,d=0,p=t.decode._make_decoder,m=t.decode._getbithuff,g=r[0].exifIFD.makerNote,b=g.t150?g.t150:g.t140,_=0,y=b[_++],w=b[_++];73!=y&&88!=w||(_+=2110),70==y&&(c=2),14==u&&(c+=3);for(var v=[[0,0],[0,0]],x=e.isLE?t._binLE:t._binBE,E=0;E<2;E++)for(var k=0;k<2;k++)v[E][k]=x.readShort(b,_),_+=2;var S,M,A,I,B,T=1<<u&32767,R=0,P=x.readShort(b,_);_+=2,P>1&&(R=Math.floor(T/(P-1))),68==y&&32==w&&R>0&&(d=x.readShort(b,562));var O=[0,0],L=p(h[c]),C=[n,0,0,0];for(S=0;S<f;S++)for(d&&S==d&&(L=p(h[c+1])),M=0;M<l;M++){E=m(i,C,L[0],L),0==((B=1+(m(i,C,(A=15&E)-(I=E>>>4),0)<<1)<<I>>>1)&1<<A-1)&&(B-=(1<<A)-(0==I?1:0)),M<2?O[M]=v[1&S][M]+=B:O[1&M]+=B;var U=Math.min(Math.max(O[1&M],0),(1<<u)-1),z=(S*l+M)*u;t.decode._putsF(o,z,U<<16-u)}},t.decode._putsF=function(t,e,r){r<<=8-(7&e);var i=e>>>3;t[i]|=r>>>16,t[i+1]|=r>>>8,t[i+2]|=r},t.decode._getbithuff=function(e,r,i,n){t.decode._get_byte;var a,o=r[0],s=r[1],h=r[2],l=r[3];if(0==i||h<0)return 0;for(;!l&&h<i&&-1!=(a=e[o++])&&!(l=0);)s=(s<<8)+a,h+=8;if(a=s<<32-h>>>32-i,n?(h-=n[a+1]>>>8,a=255&n[a+1]):h-=i,h<0)throw\"e\";return r[0]=o,r[1]=s,r[2]=h,r[3]=l,a},t.decode._make_decoder=function(t){var e,r,i,n,a,o=[];for(e=16;0!=e&&!t[e];e--);var s=17;for(o[0]=e,i=r=1;r<=e;r++)for(n=0;n<t[r];n++,++s)for(a=0;a<1<<e-r;a++)i<=1<<e&&(o[i++]=r<<8|t[s]);return o},t.decode._decodeNewJPEG=function(e,r,i,n,a,o){n=Math.min(n,r.length-i);var s=e.t347,h=s?s.length:0,l=new Uint8Array(h+n);if(s){for(var f=0,u=0;u<h-1&&(255!=s[u]||217!=s[u+1]);u++)l[f++]=s[u];var c=r[i],d=r[i+1];for(255==c&&216==d||(l[f++]=c,l[f++]=d),u=2;u<n;u++)l[f++]=r[i+u]}else for(u=0;u<n;u++)l[u]=r[i+u];if(32803==e.t262[0]||7==e.t259[0]&&34892==e.t262[0]){var p=e.t258[0],m=t.LosslessJpegDecode(l),g=m.length;if(16==p)if(e.isLE)for(u=0;u<g;u++)a[o+(u<<1)]=255&m[u],a[o+(u<<1)+1]=m[u]>>>8;else for(u=0;u<g;u++)a[o+(u<<1)]=m[u]>>>8,a[o+(u<<1)+1]=255&m[u];else if(14==p||12==p){var b=16-p;for(u=0;u<g;u++)t.decode._putsF(a,u*p,m[u]<<b)}else{if(8!=p)throw new Error(\"unsupported bit depth \"+p);for(u=0;u<g;u++)a[o+u]=m[u]}}else{var _=new t.JpegDecoder;_.parse(l);var y=_.getData({width:_.width,height:_.height,forceRGB:!0,isSourcePDF:!1});for(u=0;u<y.length;u++)a[o+u]=y[u]}6==e.t262[0]&&(e.t262[0]=2)},t.decode._decodeOldJPEGInit=function(t,e,r,i){var a,o,s,h,l,f=216,u=0,c=0,d=!1,p=t.t513,m=p?p[0]:0,g=t.t514,b=g?g[0]:0,_=t.t324||t.t273||p,y=t.t530,w=0,v=0,x=t.t277?t.t277[0]:1,E=t.t515;if(_&&(c=_[0],d=_.length>1),!d){if(255==e[r]&&e[r+1]==f)return{jpegOffset:r};if(null!=p&&(255==e[r+m]&&e[r+m+1]==f?u=r+m:n(\"JPEGInterchangeFormat does not point to SOI\"),null==g?n(\"JPEGInterchangeFormatLength field is missing\"):(m>=c||m+b<=c)&&n(\"JPEGInterchangeFormatLength field value is invalid\"),null!=u))return{jpegOffset:u}}if(null!=y&&(w=y[0],v=y[1]),null!=p&&null!=g)if(b>=2&&m+b<=c){for(a=255==e[r+m+b-2]&&e[r+m+b-1]==f?new Uint8Array(b-2):new Uint8Array(b),s=0;s<a.length;s++)a[s]=e[r+m+s];n(\"Incorrect JPEG interchange format: using JPEGInterchangeFormat offset to derive tables\")}else n(\"JPEGInterchangeFormat+JPEGInterchangeFormatLength > offset to first strip or tile\");if(null==a){var k=0,S=[];S[k++]=255,S[k++]=f;var M=t.t519;if(null==M)throw new Error(\"JPEGQTables tag is missing\");for(s=0;s<M.length;s++)for(S[k++]=255,S[k++]=219,S[k++]=0,S[k++]=67,S[k++]=s,h=0;h<64;h++)S[k++]=e[r+M[s]+h];for(l=0;l<2;l++){var A=t[0==l?\"t520\":\"t521\"];if(null==A)throw new Error((0==l?\"JPEGDCTables\":\"JPEGACTables\")+\" tag is missing\");for(s=0;s<A.length;s++){S[k++]=255,S[k++]=196;var I=19;for(h=0;h<16;h++)I+=e[r+A[s]+h];for(S[k++]=I>>>8,S[k++]=255&I,S[k++]=s|l<<4,h=0;h<16;h++)S[k++]=e[r+A[s]+h];for(h=0;h<I;h++)S[k++]=e[r+A[s]+16+h]}}if(S[k++]=255,S[k++]=192,S[k++]=0,S[k++]=8+3*x,S[k++]=8,S[k++]=t.height>>>8&255,S[k++]=255&t.height,S[k++]=t.width>>>8&255,S[k++]=255&t.width,S[k++]=x,1==x)S[k++]=1,S[k++]=17,S[k++]=0;else for(s=0;s<3;s++)S[k++]=s+1,S[k++]=0!=s?17:(15&w)<<4|15&v,S[k++]=s;null!=E&&0!=E[0]&&(S[k++]=255,S[k++]=221,S[k++]=0,S[k++]=4,S[k++]=E[0]>>>8&255,S[k++]=255&E[0]),a=new Uint8Array(S)}var B=-1;for(s=0;s<a.length-1;){if(255==a[s]&&192==a[s+1]){B=s;break}s++}if(-1==B){var T=new Uint8Array(a.length+10+3*x);T.set(a);var R=a.length;if(B=a.length,(a=T)[R++]=255,a[R++]=192,a[R++]=0,a[R++]=8+3*x,a[R++]=8,a[R++]=t.height>>>8&255,a[R++]=255&t.height,a[R++]=t.width>>>8&255,a[R++]=255&t.width,a[R++]=x,1==x)a[R++]=1,a[R++]=17,a[R++]=0;else for(s=0;s<3;s++)a[R++]=s+1,a[R++]=0!=s?17:(15&w)<<4|15&v,a[R++]=s}if(255==e[c]&&218==e[c+1]){var P=e[c+2]<<8|e[c+3];for((o=new Uint8Array(P+2))[0]=e[c],o[1]=e[c+1],o[2]=e[c+2],o[3]=e[c+3],s=0;s<P-2;s++)o[s+4]=e[c+s+4]}else{var O=0;if((o=new Uint8Array(8+2*x))[O++]=255,o[O++]=218,o[O++]=0,o[O++]=6+2*x,o[O++]=x,1==x)o[O++]=1,o[O++]=0;else for(s=0;s<3;s++)o[O++]=s+1,o[O++]=s<<4|s;o[O++]=0,o[O++]=63,o[O++]=0}return{jpegOffset:r,tables:a,sosMarker:o,sofPosition:B}},t.decode._decodeOldJPEG=function(e,r,i,n,a,o){var s,h,l,f,u=t.decode._decodeOldJPEGInit(e,r,i,n);if(null!=u.jpegOffset)for(s=i+n-u.jpegOffset,l=new Uint8Array(s),p=0;p<s;p++)l[p]=r[u.jpegOffset+p];else{for(h=u.tables.length,(l=new Uint8Array(h+u.sosMarker.length+n+2)).set(u.tables),f=h,l[u.sofPosition+5]=e.height>>>8&255,l[u.sofPosition+6]=255&e.height,l[u.sofPosition+7]=e.width>>>8&255,l[u.sofPosition+8]=255&e.width,255==r[i]&&r[i+1]==SOS||(l.set(u.sosMarker,f),f+=sosMarker.length),p=0;p<n;p++)l[f++]=r[i+p];l[f++]=255,l[f++]=EOI}var c=new t.JpegDecoder;c.parse(l);for(var d=c.getData({width:c.width,height:c.height,forceRGB:!0,isSourcePDF:!1}),p=0;p<d.length;p++)a[o+p]=d[p];e.t262&&6==e.t262[0]&&(e.t262[0]=2)},t.decode._decodePackBits=function(t,e,r,i,n){for(var a=new Int8Array(t.buffer),o=new Int8Array(i.buffer),s=e+r;e<s;){var h=a[e];if(e++,h>=0&&h<128)for(var l=0;l<h+1;l++)o[n]=a[e],n++,e++;if(h>=-127&&h<0){for(l=0;l<1-h;l++)o[n]=a[e],n++;e++}}return n},t.decode._decodeThunder=function(t,e,r,i,n){for(var a=[0,1,0,-1],o=[0,1,2,3,0,-3,-2,-1],s=e+r,h=2*n,l=0;e<s;){var f=t[e],u=f>>>6,c=63&f;if(e++,3==u&&(l=15&c,i[h>>>1]|=l<<4*(1-h&1),h++),0==u)for(var d=0;d<c;d++)i[h>>>1]|=l<<4*(1-h&1),h++;if(2==u)for(d=0;d<2;d++)4!=(p=c>>>3*(1-d)&7)&&(l+=o[p],i[h>>>1]|=l<<4*(1-h&1),h++);if(1==u)for(d=0;d<3;d++){var p;2!=(p=c>>>2*(2-d)&3)&&(l+=a[p],i[h>>>1]|=l<<4*(1-h&1),h++)}}},t.decode._dmap={1:0,\"011\":1,\"000011\":2,\"0000011\":3,\"010\":-1,\"000010\":-2,\"0000010\":-3},t.decode._lens=function(){var t=function(t,e,r,i){for(var n=0;n<e.length;n++)t[e[n]]=r+n*i},e=\"00110101,000111,0111,1000,1011,1100,1110,1111,10011,10100,00111,01000,001000,000011,110100,110101,101010,101011,0100111,0001100,0001000,0010111,0000011,0000100,0101000,0101011,0010011,0100100,0011000,00000010,00000011,00011010,00011011,00010010,00010011,00010100,00010101,00010110,00010111,00101000,00101001,00101010,00101011,00101100,00101101,00000100,00000101,00001010,00001011,01010010,01010011,01010100,01010101,00100100,00100101,01011000,01011001,01011010,01011011,01001010,01001011,00110010,00110011,00110100\",r=\"0000110111,010,11,10,011,0011,0010,00011,000101,000100,0000100,0000101,0000111,00000100,00000111,000011000,0000010111,0000011000,0000001000,00001100111,00001101000,00001101100,00000110111,00000101000,00000010111,00000011000,000011001010,000011001011,000011001100,000011001101,000001101000,000001101001,000001101010,000001101011,000011010010,000011010011,000011010100,000011010101,000011010110,000011010111,000001101100,000001101101,000011011010,000011011011,000001010100,000001010101,000001010110,000001010111,000001100100,000001100101,000001010010,000001010011,000000100100,000000110111,000000111000,000000100111,000000101000,000001011000,000001011001,000000101011,000000101100,000001011010,000001100110,000001100111\",i=\"11011,10010,010111,0110111,00110110,00110111,01100100,01100101,01101000,01100111,011001100,011001101,011010010,011010011,011010100,011010101,011010110,011010111,011011000,011011001,011011010,011011011,010011000,010011001,010011010,011000,010011011\",n=\"0000001111,000011001000,000011001001,000001011011,000000110011,000000110100,000000110101,0000001101100,0000001101101,0000001001010,0000001001011,0000001001100,0000001001101,0000001110010,0000001110011,0000001110100,0000001110101,0000001110110,0000001110111,0000001010010,0000001010011,0000001010100,0000001010101,0000001011010,0000001011011,0000001100100,0000001100101\",a=\"00000001000,00000001100,00000001101,000000010010,000000010011,000000010100,000000010101,000000010110,000000010111,000000011100,000000011101,000000011110,000000011111\";e=e.split(\",\"),r=r.split(\",\"),i=i.split(\",\"),n=n.split(\",\"),a=a.split(\",\");var o={},s={};return t(o,e,0,1),t(o,i,64,64),t(o,a,1792,64),t(s,r,0,1),t(s,n,64,64),t(s,a,1792,64),[o,s]}(),t.decode._decodeG4=function(e,r,i,n,a,o,s){for(var h=t.decode,l=r<<3,f=0,u=\"\",c=[],d=[],p=0;p<o;p++)d.push(0);d=h._makeDiff(d);for(var m=0,g=0,b=0,_=0,y=0,w=0,v=\"\",x=0,E=8*Math.ceil(o/8);l>>>3<r+i;){b=h._findDiff(d,m+(0==m?0:1),1-y),_=h._findDiff(d,b,y);var k=0;if(1==s&&(k=e[l>>>3]>>>7-(7&l)&1),2==s&&(k=e[l>>>3]>>>(7&l)&1),l++,u+=k,\"H\"==v){if(null!=h._lens[y][u]){var S=h._lens[y][u];u=\"\",f+=S,S<64&&(h._addNtimes(c,f,y),m+=f,y=1-y,f=0,0==--x&&(v=\"\"))}}else\"0001\"==u&&(u=\"\",h._addNtimes(c,_-m,y),m=_),\"001\"==u&&(u=\"\",v=\"H\",x=2),null!=h._dmap[u]&&(g=b+h._dmap[u],h._addNtimes(c,g-m,y),m=g,u=\"\",y=1-y);c.length==o&&\"\"==v&&(h._writeBits(c,n,8*a+w*E),y=0,w++,m=0,d=h._makeDiff(c),c=[])}},t.decode._findDiff=function(t,e,r){for(var i=0;i<t.length;i+=2)if(t[i]>=e&&t[i+1]==r)return t[i]},t.decode._makeDiff=function(t){var e=[];1==t[0]&&e.push(0,1);for(var r=1;r<t.length;r++)t[r-1]!=t[r]&&e.push(r,t[r]);return e.push(t.length,0,t.length,1),e},t.decode._decodeG2=function(e,r,i,n,a,o,s){for(var h=t.decode,l=r<<3,f=0,u=\"\",c=[],d=0,p=0,m=8*Math.ceil(o/8);l>>>3<r+i;){var g=0;1==s&&(g=e[l>>>3]>>>7-(7&l)&1),2==s&&(g=e[l>>>3]>>>(7&l)&1),l++,u+=g,null!=(f=h._lens[d][u])&&(h._addNtimes(c,f,d),u=\"\",f<64&&(d=1-d),c.length==o&&(h._writeBits(c,n,8*a+p*m),c=[],p++,d=0,0!=(7&l)&&(l+=8-(7&l)),f>=64&&(l+=8)))}},t.decode._decodeG3=function(e,r,i,n,a,o,s,h){for(var l=t.decode,f=r<<3,u=0,c=\"\",d=[],p=[],m=0;m<o;m++)d.push(0);for(var g=0,b=0,_=0,y=0,w=0,v=-1,x=\"\",E=0,k=!0,S=8*Math.ceil(o/8);f>>>3<r+i;){_=l._findDiff(p,g+(0==g?0:1),1-w),y=l._findDiff(p,_,w);var M=0;if(1==s&&(M=e[f>>>3]>>>7-(7&f)&1),2==s&&(M=e[f>>>3]>>>(7&f)&1),f++,c+=M,k){if(null!=l._lens[w][c]){var A=l._lens[w][c];c=\"\",u+=A,A<64&&(l._addNtimes(d,u,w),w=1-w,u=0)}}else\"H\"==x?null!=l._lens[w][c]&&(A=l._lens[w][c],c=\"\",u+=A,A<64&&(l._addNtimes(d,u,w),g+=u,w=1-w,u=0,0==--E&&(x=\"\"))):(\"0001\"==c&&(c=\"\",l._addNtimes(d,y-g,w),g=y),\"001\"==c&&(c=\"\",x=\"H\",E=2),null!=l._dmap[c]&&(b=_+l._dmap[c],l._addNtimes(d,b-g,w),g=b,c=\"\",w=1-w));c.endsWith(\"000000000001\")&&(v>=0&&l._writeBits(d,n,8*a+v*S),h&&(1==s&&(k=1==(e[f>>>3]>>>7-(7&f)&1)),2==s&&(k=1==(e[f>>>3]>>>(7&f)&1)),f++),c=\"\",w=0,v++,g=0,p=l._makeDiff(d),d=[])}d.length==o&&l._writeBits(d,n,8*a+v*S)},t.decode._addNtimes=function(t,e,r){for(var i=0;i<e;i++)t.push(r)},t.decode._writeBits=function(t,e,r){for(var i=0;i<t.length;i++)e[r+i>>>3]|=t[i]<<7-(r+i&7)},t.decode._decodeLZW=t.decode._decodeLZW=(s=0,h=0,l=0,f=0,u=function(){var t=r>>>3,e=(i[t]<<16|i[t+1]<<8|i[t+2])>>>24-(7&r)-h&(1<<h)-1;return r+=h,e},c=new Uint32Array(16384),d=0,p=function(t){h=t+1,s=f+1},m=function(t){for(var e=t<<2,r=c[e+2],i=o+r-1;65535!=e;)a[i--]=c[e],e=c[e+1];o+=r},g=function(t,e){var r=s<<2,i=t<<2;c[r]=c[3+(e<<2)],c[r+1]=i,c[r+2]=c[i+2]+1,c[r+3]=c[i+3],1+ ++s==1<<h&&12!=h&&h++},function(t,e,n,h,b,_){r=e<<3,i=t,a=h,o=b;var y=e+n<<3,w=0,v=0;for(function(t){if(t!=d){d=t,f=1+(l=1<<t);for(var e=0;e<f+1;e++)c[4*e]=c[4*e+3]=e,c[4*e+1]=65535,c[4*e+2]=1}}(_),p(_);r<y&&(w=u())!=f;){if(w==l){if(p(_),(w=u())==f)break;m(w)}else w<s?(m(w),g(v,w)):(g(v,v),m(s-1));v=w}return o}),t.tags={},t._types=((b=new Array(250)).fill(0),{basic:{main:b=b.concat([0,0,0,0,4,3,3,3,3,3,0,0,3,0,0,0,3,0,0,2,2,2,2,4,3,0,0,3,4,4,3,3,5,5,3,2,5,5,0,0,0,0,4,4,0,0,3,3,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,2,2,3,5,5,3,0,3,3,4,4,4,3,4,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),rest:{33432:2,33434:5,33437:5,34665:4,34850:3,34853:4,34855:3,34864:3,34866:4,36864:7,36867:2,36868:2,37121:7,37377:10,37378:5,37380:10,37381:5,37383:3,37384:3,37385:3,37386:5,37510:7,37520:2,37521:2,37522:2,40960:7,40961:3,40962:4,40963:4,40965:4,41486:5,41487:5,41488:3,41985:3,41986:3,41987:3,41988:5,41989:3,41990:3,41993:3,41994:3,41995:7,41996:3,42032:2,42033:2,42034:5,42036:2,42037:2,59932:7}},gps:{main:[1,2,5,2,5,1,5,5,0,9],rest:{18:2,29:2}}}),t._readIFD=function(e,r,i,a,o,s){var h=e.readUshort(r,i);i+=2;var l={};s.debug&&n(\"   \".repeat(o),a.length-1,\">>>----------------\");for(var f=0;f<h;f++){var u=e.readUshort(r,i);i+=2;var c=e.readUshort(r,i);i+=2;var d=e.readUint(r,i);i+=4;var p=e.readUint(r,i);i+=4;var m=[];if(1!=c&&7!=c||(m=new Uint8Array(r.buffer,d<5?i-4:p,d)),2==c){var g=d<5?i-4:p,b=r[g],_=Math.max(0,Math.min(d-1,r.length-g));b<128||0==_?m.push(e.readASCII(r,g,_)):m=new Uint8Array(r.buffer,g,_)}if(3==c)for(var y=0;y<d;y++)m.push(e.readUshort(r,(d<3?i-4:p)+2*y));if(4==c||13==c)for(y=0;y<d;y++)m.push(e.readUint(r,(d<2?i-4:p)+4*y));if(5==c||10==c){var w=5==c?e.readUint:e.readInt;for(y=0;y<d;y++)m.push([w(r,p+8*y),w(r,p+8*y+4)])}if(8==c)for(y=0;y<d;y++)m.push(e.readShort(r,(d<3?i-4:p)+2*y));if(9==c)for(y=0;y<d;y++)m.push(e.readInt(r,(d<2?i-4:p)+4*y));if(11==c)for(y=0;y<d;y++)m.push(e.readFloat(r,p+4*y));if(12==c)for(y=0;y<d;y++)m.push(e.readDouble(r,p+8*y));if(0==d||0!=m.length){if(s.debug&&n(\"   \".repeat(o),u,c,t.tags[u],m),l[\"t\"+u]=m,330==u&&l.t272&&\"DSLR-A100\"==l.t272[0]);else if(330==u||34665==u||34853==u||50740==u&&e.readUshort(r,e.readUint(m,0))<300||61440==u){var v=50740==u?[e.readUint(m,0)]:m,x=[];for(y=0;y<v.length;y++)t._readIFD(e,r,v[y],x,o+1,s);330==u&&(l.subIFD=x),34665==u&&(l.exifIFD=x[0]),34853==u&&(l.gpsiIFD=x[0]),50740==u&&(l.dngPrvt=x[0]),61440==u&&(l.fujiIFD=x[0])}if(37500==u&&s.parseMN){var E=m;if(\"Nikon\"==e.readASCII(E,0,5))l.makerNote=t.decode(E.slice(10).buffer)[0];else if(e.readUshort(r,p)<300&&e.readUshort(r,p+4)<=12){var k=[];t._readIFD(e,r,p,k,o+1,s),l.makerNote=k[0]}}}else if(n(u,\"unknown TIFF tag type: \",c,\"num:\",d),0==f)return}return a.push(l),s.debug&&n(\"   \".repeat(o),\"<<<---------------\"),i},t._writeIFD=function(e,r,i,n,a){var o=Object.keys(a),s=o.length;a.exifIFD&&s--,a.gpsiIFD&&s--,e.writeUshort(i,n,s);for(var h=(n+=2)+12*s+4,l=0;l<o.length;l++){var f=o[l];if(\"t34665\"!=f&&\"t34853\"!=f){\"exifIFD\"==f&&(f=\"t34665\"),\"gpsiIFD\"==f&&(f=\"t34853\");var u=parseInt(f.slice(1)),c=r.main[u];if(null==c&&(c=r.rest[u]),null==c||0==c)throw new Error(\"unknown type of tag: \"+u);var d=a[f];34665==u&&(d=[h],h=t._writeIFD(e,r,i,h,a.exifIFD)[1]),34853==u&&(d=[h],h=t._writeIFD(e,t._types.gps,i,h,a.gpsiIFD)[1]),2==c&&(d=d[0]+\"\\0\");var p=d.length;e.writeUshort(i,n,u),n+=2,e.writeUshort(i,n,c),n+=2,e.writeUint(i,n,p);var m=[-1,1,1,2,4,8,0,1,0,4,8,0,8][c]*p,g=n+=4;if(m>4&&(e.writeUint(i,n,h),g=h),1==c||7==c)for(var b=0;b<p;b++)i[g+b]=d[b];else if(2==c)e.writeASCII(i,g,d);else if(3==c)for(b=0;b<p;b++)e.writeUshort(i,g+2*b,d[b]);else if(4==c)for(b=0;b<p;b++)e.writeUint(i,g+4*b,d[b]);else if(5==c||10==c){var _=5==c?e.writeUint:e.writeInt;for(b=0;b<p;b++){var y=d[b],w=y[0],v=y[1];if(null==w)throw\"e\";_(i,g+8*b,w),_(i,g+8*b+4,v)}}else if(9==c)for(b=0;b<p;b++)e.writeInt(i,g+4*b,d[b]);else{if(12!=c)throw c;for(b=0;b<p;b++)e.writeDouble(i,g+8*b,d[b])}m>4&&(h+=m+=1&m),n+=4}}return[n,h]},t.toRGBA8=function(t,e){var r=t.width,i=t.height,a=r*i,o=4*a,s=t.data,h=new Uint8Array(4*a),l=t.t262?t.t262[0]:2,f=t.t258?Math.min(32,t.t258[0]):1;if(null==t.t262&&1==f&&(l=0),0==l)for(var u=Math.ceil(f*r/8),c=0;c<i;c++){var d=c*u,p=c*r;if(1==f)for(var m=0;m<r;m++){var g=p+m<<2,b=s[d+(m>>3)]>>7-(7&m)&1;h[g]=h[g+1]=h[g+2]=255*(1-b),h[g+3]=255}if(4==f)for(m=0;m<r;m++)g=p+m<<2,b=s[d+(m>>1)]>>4-4*(1&m)&15,h[g]=h[g+1]=h[g+2]=17*(15-b),h[g+3]=255;if(8==f)for(m=0;m<r;m++)g=p+m<<2,b=s[d+m],h[g]=h[g+1]=h[g+2]=255-b,h[g+3]=255}else if(1==l){var _=t.t258?t.t258.length:1;for(u=Math.ceil(_*f*r/8),null==e&&(e=1/256),c=0;c<i;c++){if(d=c*u,p=c*r,1==f)for(m=0;m<r;m++)g=p+m<<2,b=s[d+(m>>3)]>>7-(7&m)&1,h[g]=h[g+1]=h[g+2]=255*b,h[g+3]=255;if(2==f)for(m=0;m<r;m++)g=p+m<<2,b=s[d+(m>>2)]>>6-2*(3&m)&3,h[g]=h[g+1]=h[g+2]=85*b,h[g+3]=255;if(8==f)for(m=0;m<r;m++)g=p+m<<2,b=s[d+m*_],h[g]=h[g+1]=h[g+2]=b,h[g+3]=255;if(16==f)for(m=0;m<r;m++){g=p+m<<2;var y=d+2*m;b=s[y+1]<<8|s[y],h[g]=h[g+1]=h[g+2]=Math.min(255,~~(b*e)),h[g+3]=255}}}else if(2==l)if(_=t.t258?t.t258.length:3,8==f){if(4==_)for(m=0;m<o;m++)h[m]=s[m];if(3==_)for(m=0;m<a;m++){var w=3*m;h[g=m<<2]=s[w],h[g+1]=s[w+1],h[g+2]=s[w+2],h[g+3]=255}}else if(16==f){if(4==_)for(m=0;m<a;m++)w=8*m+1,h[g=m<<2]=s[w],h[g+1]=s[w+2],h[g+2]=s[w+4],h[g+3]=s[w+6];if(3==_)for(m=0;m<a;m++)w=6*m+1,h[g=m<<2]=s[w],h[g+1]=s[w+2],h[g+2]=s[w+4],h[g+3]=255}else{if(32!=f)throw f;if(!h.isLE)for(m=0;m<s.length;m+=4){var v=s[m];s[m]=s[m+3],s[m+3]=v,v=s[m+1],s[m+1]=s[m+2],s[m+2]=v}var x=new Float32Array(s.buffer);if(3!=_)throw _;for(m=0;m<a;m++)w=3*m,h[g=m<<2]=~~(.5+255*x[w]),h[g+1]=~~(.5+255*x[w+1]),h[g+2]=~~(.5+255*x[w+2]),h[g+3]=255}else if(3==l){var E=t.t320,k=(_=t.t258?t.t258.length:1,u=Math.ceil(_*f*r/8),1<<f);for(c=0;c<i;c++)for(var S=0;S<r;S++){g=(m=c*r+S)<<2;var M=0,A=c*u;if(1==f)M=s[A+(S>>>3)]>>>7-(7&S)&1;else if(2==f)M=s[A+(S>>>2)]>>>6-2*(3&S)&3;else if(4==f)M=s[A+(S>>>1)]>>>4-4*(1&S)&15;else{if(8!=f)throw f;M=s[A+S*_]}h[g]=E[M]>>8,h[g+1]=E[k+M]>>8,h[g+2]=E[k+k+M]>>8,h[g+3]=255}}else if(5==l){var I=(_=t.t258?t.t258.length:4)>4?1:0;for(m=0;m<a;m++){g=m<<2;var B=m*_;if(UDOC){var T=s[B],R=s[B+1],P=s[B+2],O=s[B+3],L=UDOC.C.cmykToRgb([T*(1/255),R*(1/255),P*(1/255),O*(1/255)]);h[g]=~~(.5+255*L[0]),h[g+1]=~~(.5+255*L[1]),h[g+2]=~~(.5+255*L[2])}else T=255-s[B],R=255-s[B+1],P=255-s[B+2],O=(255-s[B+3])*(1/255),h[g]=~~(T*O+.5),h[g+1]=~~(R*O+.5),h[g+2]=~~(P*O+.5);h[g+3]=255*(1-I)+s[B+4]*I}}else if(6==l&&t.t278){var C=t.t278[0];for(c=0;c<i;c+=C){m=c*r;for(var U=C*r,z=0;z<U;z++){g=4*(m+z),P=s[(B=3*m+4*(z>>>1))+(1&z)];var D=s[B+2]-128,N=s[B+3]-128,F=P+((N>>2)+(N>>3)+(N>>5)),j=P-((D>>2)+(D>>4)+(D>>5))-((N>>1)+(N>>3)+(N>>4)+(N>>5)),G=P+(D+(D>>1)+(D>>2)+(D>>6));h[g]=Math.max(0,Math.min(255,F)),h[g+1]=Math.max(0,Math.min(255,j)),h[g+2]=Math.max(0,Math.min(255,G)),h[g+3]=255}}}else if(32845==l){function H(t){return t<.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055}for(c=0;c<i;c++)for(S=0;S<r;S++){g=4*(c*r+S);var W=s[1+(B=6*(c*r+S))]<<8|s[B],q=(W=Math.pow(2,(W+.5)/256-64),(s[B+3]+.5)/410),Z=(s[B+5]+.5)/410,Y=9*q/(6*q-16*Z+12),V=4*Z/(6*q-16*Z+12),X=Y*W/V,J=(1-Y-V)*W/V;F=2.69*X-1.276*(P=W)-.414*J,j=-1.022*X+1.978*P+.044*J,G=.061*X-.224*P+1.163*J,h[g]=255*H(Math.min(F,1)),h[g+1]=255*H(Math.min(j,1)),h[g+2]=255*H(Math.min(G,1)),h[g+3]=255}}else n(\"Unknown Photometric interpretation: \"+l);return h},t.replaceIMG=function(e){null==e&&(e=document.getElementsByTagName(\"img\"));for(var r=[\"tif\",\"tiff\",\"dng\",\"cr2\",\"nef\"],i=0;i<e.length;i++){var n=e[i],a=n.getAttribute(\"src\");if(null!=a){var o=a.split(\".\").pop().toLowerCase();if(-1!=r.indexOf(o)){var s=new XMLHttpRequest;t._xhrs.push(s),t._imgs.push(n),s.open(\"GET\",a),s.responseType=\"arraybuffer\",s.onload=t._imgLoaded,s.send()}}}},t._xhrs=[],t._imgs=[],t._imgLoaded=function(e){var r=t._xhrs.indexOf(e.target),i=t._imgs[r];t._xhrs.splice(r,1),t._imgs.splice(r,1),i.setAttribute(\"src\",t.bufferToURI(e.target.response))},t.bufferToURI=function(e){var r=t.decode(e),i=r,n=0,a=i[0];r[0].subIFD&&(i=i.concat(r[0].subIFD));for(var o=0;o<i.length;o++){var s=i[o];if(!(null==s.t258||s.t258.length<3)){var h=s.t256*s.t257;h>n&&(n=h,a=s)}}t.decodeImage(e,a,r);var l=t.toRGBA8(a),f=a.width,u=a.height,c=document.createElement(\"canvas\");c.width=f,c.height=u;var d=c.getContext(\"2d\"),p=new ImageData(new Uint8ClampedArray(l.buffer),f,u);return d.putImageData(p,0,0),c.toDataURL()},t._binBE={nextZero:function(t,e){for(;0!=t[e];)e++;return e},readUshort:function(t,e){return t[e]<<8|t[e+1]},readShort:function(e,r){var i=t._binBE.ui8;return i[0]=e[r+1],i[1]=e[r+0],t._binBE.i16[0]},readInt:function(e,r){var i=t._binBE.ui8;return i[0]=e[r+3],i[1]=e[r+2],i[2]=e[r+1],i[3]=e[r+0],t._binBE.i32[0]},readUint:function(e,r){var i=t._binBE.ui8;return i[0]=e[r+3],i[1]=e[r+2],i[2]=e[r+1],i[3]=e[r+0],t._binBE.ui32[0]},readASCII:function(t,e,r){for(var i=\"\",n=0;n<r;n++)i+=String.fromCharCode(t[e+n]);return i},readFloat:function(e,r){for(var i=t._binBE.ui8,n=0;n<4;n++)i[n]=e[r+3-n];return t._binBE.fl32[0]},readDouble:function(e,r){for(var i=t._binBE.ui8,n=0;n<8;n++)i[n]=e[r+7-n];return t._binBE.fl64[0]},writeUshort:function(t,e,r){t[e]=r>>8&255,t[e+1]=255&r},writeInt:function(e,r,i){var n=t._binBE.ui8;t._binBE.i32[0]=i,e[r+3]=n[0],e[r+2]=n[1],e[r+1]=n[2],e[r+0]=n[3]},writeUint:function(t,e,r){t[e]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=r>>0&255},writeASCII:function(t,e,r){for(var i=0;i<r.length;i++)t[e+i]=r.charCodeAt(i)},writeDouble:function(e,r,i){t._binBE.fl64[0]=i;for(var n=0;n<8;n++)e[r+n]=t._binBE.ui8[7-n]}},t._binBE.ui8=new Uint8Array(8),t._binBE.i16=new Int16Array(t._binBE.ui8.buffer),t._binBE.i32=new Int32Array(t._binBE.ui8.buffer),t._binBE.ui32=new Uint32Array(t._binBE.ui8.buffer),t._binBE.fl32=new Float32Array(t._binBE.ui8.buffer),t._binBE.fl64=new Float64Array(t._binBE.ui8.buffer),t._binLE={nextZero:t._binBE.nextZero,readUshort:function(t,e){return t[e+1]<<8|t[e]},readShort:function(e,r){var i=t._binBE.ui8;return i[0]=e[r+0],i[1]=e[r+1],t._binBE.i16[0]},readInt:function(e,r){var i=t._binBE.ui8;return i[0]=e[r+0],i[1]=e[r+1],i[2]=e[r+2],i[3]=e[r+3],t._binBE.i32[0]},readUint:function(e,r){var i=t._binBE.ui8;return i[0]=e[r+0],i[1]=e[r+1],i[2]=e[r+2],i[3]=e[r+3],t._binBE.ui32[0]},readASCII:t._binBE.readASCII,readFloat:function(e,r){for(var i=t._binBE.ui8,n=0;n<4;n++)i[n]=e[r+n];return t._binBE.fl32[0]},readDouble:function(e,r){for(var i=t._binBE.ui8,n=0;n<8;n++)i[n]=e[r+n];return t._binBE.fl64[0]},writeUshort:function(t,e,r){t[e]=255&r,t[e+1]=r>>8&255},writeInt:function(e,r,i){var n=t._binBE.ui8;t._binBE.i32[0]=i,e[r+0]=n[0],e[r+1]=n[1],e[r+2]=n[2],e[r+3]=n[3]},writeUint:function(t,e,r){t[e]=r>>>0&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24&255},writeASCII:t._binBE.writeASCII},t._copyTile=function(t,e,r,i,n,a,o,s){for(var h=Math.min(e,n-o),l=Math.min(r,a-s),f=0;f<l;f++)for(var u=(s+f)*n+o,c=f*e,d=0;d<h;d++)i[u+d]=t[c+d]},t.LosslessJpegDecode=function(){var t,e;function r(){return t[e++]}function i(){return t[e++]<<8|t[e++]}function n(t){for(var e=r(),i=[0,0,0,255],n=[],o=0;o<16;o++)n[o]=r();for(o=0;o<16;o++)for(var s=0;s<n[o];s++)i[a(i,0,o+1,1)+3]=r();var h=new Uint8Array(256);for(t[e]=[new Uint8Array(i),h],o=0;o<256;o++){for(var l=8,f=o,u=0;255==i[u+3]&&0!=l;)u=i[u+(f>>--l&1)];h[o]=u}}function a(t,e,r,i){if(255!=t[e+3])return 0;if(0==r)return e;for(var n=0;n<2;n++){0==t[e+n]&&(t[e+n]=t.length,t.push(0,0,i,255));var o=a(t,t[e+n],r-1,i+1);if(0!=o)return o}return 0}function o(t){for(var e=t.b,r=t.a;e<25&&t.e<t.d;){var i=t.data[t.e++];t.c||(t.e+=i+1>>>8),r=r<<8|i,e+=8}if(e<0)throw\"e\";t.b=e,t.a=r}function s(t,e){return e.b<t&&o(e),e.a>>(e.b-=t)&65535>>16-t}function h(t,e){var r=t[0],i=0,n=255;e.b<16&&o(e);var a=e.a>>e.b-8&255;for(n=r[(i=t[1][a])+3],e.b-=r[i+2];255==n;)n=r[(i=r[i+(e.a>>--e.b&1)])+3];return n}function l(t,e){return t<32768>>16-e&&(t+=1-(1<<e)),t}function f(t,e){var r=h(t,e);return 0==r?0:16==r?-32768:l(s(r,e),r)}function u(t,e,r,i,n,a){for(var o=0;o<a;o++)for(var s=o*e,h=0;h<e;h+=n)for(var l=0;l<n;l++)t[s+h+l]=f(i[l],r)}function c(t,e){return l(s(t,e),t)}function d(t,e,r,i,n,a,o,s){for(var h=r*o,l=n;l<a;l++)t[l]+=1<<s-1;for(var f=o;f<h;f+=o)for(l=n;l<a;l++)t[f+l]+=t[f+l-o];for(var u=1;u<i;u++){var c=u*h;for(l=n;l<a;l++)t[c+l]+=t[c+l-h];for(f=o;f<h;f+=o)for(l=n;l<a;l++){var d=c+f+l,p=d-h,m=t[d-o],g=0;if(0==e)g=0;else if(1==e)g=m;else if(2==e)g=t[p];else if(3==e)g=t[p-o];else if(4==e)g=m+(t[p]-t[p-o]);else if(5==e)g=m+(t[p]-t[p-o]>>>1);else if(6==e)g=t[p]+(m-t[p-o]>>>1);else{if(7!=e)throw e;g=m+t[p]>>>1}t[d]+=g}}}return function(a){if(t=a,e=0,65496!=i())throw\"e\";for(var o=[],s=0,l=0,f=[],p=[],m=[],g=0,b=0,_=0;;){var y=i();if(65535!=y){var w=i();if(65475==y){l=r(),b=i(),_=i(),g=r();for(var v=0;v<g;v++){var x=r(),E=r();if(0!=r())throw\"e\";o[x]=[v,E>>4,15&E]}}else if(65476==y)for(var k=e+w-2;e<k;)n(p);else{if(65498==y){for(e++,v=0;v<g;v++){var S=o[r()];m[S[0]]=p[r()>>>4],f[S[0]]=S.slice(1)}s=r(),e+=2;break}e+=w-2}}else e--}var M=new(l>8?Uint16Array:Uint8Array)(b*_*g),A={b:0,a:0,c:8==s,e,data:t,d:t.length};if(A.c)!function(r,i,n,a,o){for(var s=t.length-e,l=0;l<s;l+=4){var f=t[e+l];t[e+l]=t[e+l+3],t[e+l+3]=f,f=t[e+l+1],t[e+l+1]=t[e+l+2],t[e+l+2]=f}for(var u=0;u<o;u++)for(var d=32768,p=32768,m=0;m<i;m+=2){var g=h(a,n),b=h(a,n);0!=g&&(d+=c(g,n)),0!=b&&(p+=c(b,n)),r[u*i+m]=65535&d,r[u*i+m+1]=65535&p}}(M,_*g,A,m[0],b);else{var I=[],B=0,T=0;for(v=0;v<g;v++){var R=f[v];(N=R[0])>B&&(B=N),(D=R[1])>T&&(T=D),I.push(N*D)}if(1!=B||1!=T){var P=[],O=0;for(v=0;v<g;v++){for(var L=0;L<I[v];L++)P.push(m[v]);O+=I[v]}var C=_/B,U=b/T;u(M,C*O,A,P,O,U),d(M,s,C,U,O-2,O,O,l);for(var z=M.slice(0),D=0;D<b;D++)for(var N=0;N<_;N++){var F=(D*_+N)*g,j=~~(D/T)*C+~~(N/B),G=0;for(v=0;v<g;v++){var H=1&N,W=j*O+G+(0==v?1==T?H:2*H+(1&D):0);M[F+v]=z[W],G+=I[v]}}d(M,s,_,b,0,1,g,l)}else u(M,_*g,A,m,g,b),d(M,s,_,b,0,g,g,l)}return M}}(),function(){var e=2,r=3,i=4,n=5,a=6,o=7,s=8,h=9,l=10,f=11,u=12,c=13,d=14,p=15,m=16,g=17;function b(t){for(var e=[[],[],[]],r=Math.max(2,t.w+32>>>6),i=0;i<3;i++)for(var n=0;n<41;n++)e[i][n]=[r,1];return e}function _(t,e){var r=0,i=8-t.a;if(t.j,t.a,e){if(e>=i)do{r<<=i,e-=i,r|=t[t.j]&(1<<i)-1,t.j++,i=8}while(e>=8);e&&(r<<=e,i-=e,r|=t[t.j]>>>i&(1<<e)-1),t.a=8-i}return r}function y(t,e,r,i,n,a,o,s){null==s&&(s=0);var h,l,f,u,c,d,p=a+1,m=p%2,g=0,b=i[n],y=i[n-1],w=i[n-2][p],v=y[p-1],x=y[p],E=y[p+1],k=b[p-1],S=b[p+1],M=Math.abs;if(m&&(f=M(E-x),u=M(w-x),c=M(v-x)),m){if(d=(d=f>c&&u<f?w+v:f<c&&u<c?w+E:E+v)+2*x>>>2,s)return void(b[p]=d);h=e.t*e.c[t.g+x-w]+e.c[t.g+v-x]}else d=x>v&&x>E||x<v&&x<E?S+k+2*x>>>2:k+S>>>1,h=e.t*e.c[t.g+x-v]+e.c[t.g+v-k];l=M(h);var A=function(t){for(var e=-1,r=0;!r;e++)r=t[t.j]>>>7-t.a&1,t.a++,t.a&=7,t.a||t.j++;return e}(r);if(A<t.n-e.v-1){var I=function(t,e){var r=0;if(e<t)for(;r<=14&&e<<++r<t;);return r}(o[l][0],o[l][1]);g=_(r,I)+(A<<I)}else g=_(r,e.v)+1;g=1&g?-1-(g>>>1):g>>>1,o[l][0]+=M(g),o[l][1]==t.f&&(o[l][0]>>>=1,o[l][1]>>>=1),o[l][1]++,d=h<0?d-g:d+g,t.i&&(d<0?d+=e.w:d>t.g&&(d-=e.w)),b[p]=d>=0?Math.min(d,t.g):0}function w(t,e,r){for(var i=t[0].length,n=e;n<=r;n++)t[n][0]=t[n-1][1],t[n][i-1]=t[n-1][i-2]}function v(t){w(t,o,u),w(t,e,i),w(t,p,g)}function x(t,e,r,n,a,o,s,h,l,f,u,d,p){for(var m=0,g=1,b=a<c&&a>i;g<t.m;)m<t.m&&(y(t,e,r,n,a,m,s[l],t.h&&(b&&f||!b&&(u||(m&d)==p))),y(t,e,r,n,o,m,s[l],t.h&&(!b&&f||b&&(u||(m&d)==p))),m+=2),m>8&&(y(t,e,r,n,a,g,h[l]),y(t,e,r,n,o,g,h[l]),g+=2);v(n)}function E(t,n,a,c,d,b){x(t,n,a,c,e,o,d,b,0,0,1,0,8),x(t,n,a,c,s,p,d,b,1,0,1,0,8),x(t,n,a,c,r,h,d,b,2,1,0,3,0),x(t,n,a,c,l,m,d,b,0,0,0,3,2),x(t,n,a,c,i,f,d,b,1,0,0,3,2),x(t,n,a,c,u,g,d,b,2,1,0,3,0)}function k(t,r,i,n,a,s){var h=s.length,l=t.l;a+1==t.s&&(l=t.e-a*t.l);for(var f=6*t.e*n+a*t.l,u=0;u<6;u++){for(var c=0;c<l;c++){var d,m=s[u%h][c%h];d=0==m?e+(u>>>1):2==m?p+(u>>>1):o+u;var g=t.h?(2*c/3&2147483646|c%3&1)+(c%3>>>1):c>>>1;r[f+c]=i[d][g+1]}f+=t.e}}t._decompressRAF=function(o,s){var h=function(e){var r=t._binBE.readUshort,i={b:r(e,0),i:e[2],C:e[3],u:e[4],q:r(e,5),k:r(e,7),e:r(e,9),l:r(e,11),s:e[13],d:r(e,14)};if(18771!=i.b||i.i>1||i.q<6||i.q%6||i.e<768||i.e%24||768!=i.l||i.k<i.l||i.k%i.l||i.k-i.e>=i.l||i.s>16||i.s!=i.k/i.l||i.s!=Math.ceil(i.e/i.l)||i.d!=i.q/6||12!=i.u&&14!=i.u&&16!=i.u||16!=i.C&&0!=i.C)throw\"Invalid data\";if(0==i.i)throw\"Not implemented. We need this file!\";return i.h=16==i.C,i.m=0|(i.h?2*i.l/3:i.l>>>1),i.A=i.m+2,i.f=64,i.g=(1<<i.u)-1,i.n=4*i.u,i}(o),l=function(e,r){var i=new Array(r.s),n=4*r.s,a=16+n;12&n&&(a+=16-(12&n));for(var o=0,s=16;o<r.s;s+=4){var h=t._binBE.readUint(e,s);i[o]=e.slice(a,a+h),i[o].j=0,i[o].a=0,a+=h,o++}if(a!=e.length)throw\"Invalid data\";return i}(o,h),p=function(t){var e={c:new Int8Array(2<<t.u)};return function(t,e,r){var i=[0,18,67,276,r];t.o=0,t.w=(i[4]+0)/1+1|0,t.v=Math.ceil(Math.log2(t.w)),t.t=9,function(t,e){for(var r=-e[4],i=0;r<=e[4];i++,r++)t[i]=r<=-e[3]?-4:r<=-e[2]?-3:r<=-e[1]?-2:r<-e[0]?-1:r<=e[0]?0:r<e[1]?1:r<e[2]?2:r<e[3]?3:4}(t.c,i)}(e,0,t.g),e}(h),_=new Int16Array(h.e*h.q);null==s&&(s=h.h?[[1,1,0,1,1,2],[1,1,2,1,1,0],[2,0,1,0,2,1],[1,1,2,1,1,0],[1,1,0,1,1,2],[0,2,1,2,0,1]]:[[0,1],[3,2]]);for(var y=[[0,r],[1,i],[n,f],[a,u],[c,m],[d,g]],w=[],x=0;x<18;x++)w[x]=new Uint16Array(h.A);for(var S=0;S<h.s;S++){var M=b(p),A=b(p);for(x=0;x<18;x++)for(var I=0;I<h.A;I++)w[x][I]=0;for(var B=0;B<h.d;B++){for(E(h,p,l[S],w,M,A),x=0;x<6;x++)for(I=0;I<h.A;I++)w[y[x][0]][I]=w[y[x][1]][I];for(k(h,_,w,B,S,s),x=e;x<18;x++)if(-1==[n,a,c,d].indexOf(x))for(I=0;I<h.A;I++)w[x][I]=0;v(w)}}return _}}()}(e,r(2845))}()},6168:(t,e,r)=>{\"use strict\";r.r(e),r.d(e,{DOMException:()=>v,Headers:()=>f,Request:()=>b,Response:()=>y,fetch:()=>x});var i=\"undefined\"!=typeof globalThis&&globalThis||\"undefined\"!=typeof self&&self||void 0!==i&&i,n={searchParams:\"URLSearchParams\"in i,iterable:\"Symbol\"in i&&\"iterator\"in Symbol,blob:\"FileReader\"in i&&\"Blob\"in i&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:\"FormData\"in i,arrayBuffer:\"ArrayBuffer\"in i};if(n.arrayBuffer)var a=[\"[object Int8Array]\",\"[object Uint8Array]\",\"[object Uint8ClampedArray]\",\"[object Int16Array]\",\"[object Uint16Array]\",\"[object Int32Array]\",\"[object Uint32Array]\",\"[object Float32Array]\",\"[object Float64Array]\"],o=ArrayBuffer.isView||function(t){return t&&a.indexOf(Object.prototype.toString.call(t))>-1};function s(t){if(\"string\"!=typeof t&&(t=String(t)),/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(t)||\"\"===t)throw new TypeError('Invalid character in header field name: \"'+t+'\"');return t.toLowerCase()}function h(t){return\"string\"!=typeof t&&(t=String(t)),t}function l(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return n.iterable&&(e[Symbol.iterator]=function(){return e}),e}function f(t){this.map={},t instanceof f?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function u(t){if(t.bodyUsed)return Promise.reject(new TypeError(\"Already read\"));t.bodyUsed=!0}function c(t){return new Promise((function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}}))}function d(t){var e=new FileReader,r=c(e);return e.readAsArrayBuffer(t),r}function p(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(t){var e;this.bodyUsed=this.bodyUsed,this._bodyInit=t,t?\"string\"==typeof t?this._bodyText=t:n.blob&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:n.formData&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:n.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():n.arrayBuffer&&n.blob&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=p(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):n.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(t)||o(t))?this._bodyArrayBuffer=p(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText=\"\",this.headers.get(\"content-type\")||(\"string\"==typeof t?this.headers.set(\"content-type\",\"text/plain;charset=UTF-8\"):this._bodyBlob&&this._bodyBlob.type?this.headers.set(\"content-type\",this._bodyBlob.type):n.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set(\"content-type\",\"application/x-www-form-urlencoded;charset=UTF-8\"))},n.blob&&(this.blob=function(){var t=u(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error(\"could not read FormData body as blob\");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?u(this)||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer)):this.blob().then(d)}),this.text=function(){var t,e,r,i=u(this);if(i)return i;if(this._bodyBlob)return t=this._bodyBlob,r=c(e=new FileReader),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),i=0;i<e.length;i++)r[i]=String.fromCharCode(e[i]);return r.join(\"\")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error(\"could not read FormData body as text\");return Promise.resolve(this._bodyText)},n.formData&&(this.formData=function(){return this.text().then(_)}),this.json=function(){return this.text().then(JSON.parse)},this}f.prototype.append=function(t,e){t=s(t),e=h(e);var r=this.map[t];this.map[t]=r?r+\", \"+e:e},f.prototype.delete=function(t){delete this.map[s(t)]},f.prototype.get=function(t){return t=s(t),this.has(t)?this.map[t]:null},f.prototype.has=function(t){return this.map.hasOwnProperty(s(t))},f.prototype.set=function(t,e){this.map[s(t)]=h(e)},f.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},f.prototype.keys=function(){var t=[];return this.forEach((function(e,r){t.push(r)})),l(t)},f.prototype.values=function(){var t=[];return this.forEach((function(e){t.push(e)})),l(t)},f.prototype.entries=function(){var t=[];return this.forEach((function(e,r){t.push([r,e])})),l(t)},n.iterable&&(f.prototype[Symbol.iterator]=f.prototype.entries);var g=[\"DELETE\",\"GET\",\"HEAD\",\"OPTIONS\",\"POST\",\"PUT\"];function b(t,e){if(!(this instanceof b))throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.');var r,i,n=(e=e||{}).body;if(t instanceof b){if(t.bodyUsed)throw new TypeError(\"Already read\");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new f(t.headers)),this.method=t.method,this.mode=t.mode,this.signal=t.signal,n||null==t._bodyInit||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||\"same-origin\",!e.headers&&this.headers||(this.headers=new f(e.headers)),this.method=(i=(r=e.method||this.method||\"GET\").toUpperCase(),g.indexOf(i)>-1?i:r),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,(\"GET\"===this.method||\"HEAD\"===this.method)&&n)throw new TypeError(\"Body not allowed for GET or HEAD requests\");if(this._initBody(n),!(\"GET\"!==this.method&&\"HEAD\"!==this.method||\"no-store\"!==e.cache&&\"no-cache\"!==e.cache)){var a=/([?&])_=[^&]*/;a.test(this.url)?this.url=this.url.replace(a,\"$1_=\"+(new Date).getTime()):this.url+=(/\\?/.test(this.url)?\"&\":\"?\")+\"_=\"+(new Date).getTime()}}function _(t){var e=new FormData;return t.trim().split(\"&\").forEach((function(t){if(t){var r=t.split(\"=\"),i=r.shift().replace(/\\+/g,\" \"),n=r.join(\"=\").replace(/\\+/g,\" \");e.append(decodeURIComponent(i),decodeURIComponent(n))}})),e}function y(t,e){if(!(this instanceof y))throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.');e||(e={}),this.type=\"default\",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===e.statusText?\"\":\"\"+e.statusText,this.headers=new f(e.headers),this.url=e.url||\"\",this._initBody(t)}b.prototype.clone=function(){return new b(this,{body:this._bodyInit})},m.call(b.prototype),m.call(y.prototype),y.prototype.clone=function(){return new y(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},y.error=function(){var t=new y(null,{status:0,statusText:\"\"});return t.type=\"error\",t};var w=[301,302,303,307,308];y.redirect=function(t,e){if(-1===w.indexOf(e))throw new RangeError(\"Invalid status code\");return new y(null,{status:e,headers:{location:t}})};var v=i.DOMException;try{new v}catch(t){(v=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),v.prototype.constructor=v}function x(t,e){return new Promise((function(r,a){var o=new b(t,e);if(o.signal&&o.signal.aborted)return a(new v(\"Aborted\",\"AbortError\"));var s=new XMLHttpRequest;function l(){s.abort()}s.onload=function(){var t,e,i={status:s.status,statusText:s.statusText,headers:(t=s.getAllResponseHeaders()||\"\",e=new f,t.replace(/\\r?\\n[\\t ]+/g,\" \").split(\"\\r\").map((function(t){return 0===t.indexOf(\"\\n\")?t.substr(1,t.length):t})).forEach((function(t){var r=t.split(\":\"),i=r.shift().trim();if(i){var n=r.join(\":\").trim();e.append(i,n)}})),e)};i.url=\"responseURL\"in s?s.responseURL:i.headers.get(\"X-Request-URL\");var n=\"response\"in s?s.response:s.responseText;setTimeout((function(){r(new y(n,i))}),0)},s.onerror=function(){setTimeout((function(){a(new TypeError(\"Network request failed\"))}),0)},s.ontimeout=function(){setTimeout((function(){a(new TypeError(\"Network request failed\"))}),0)},s.onabort=function(){setTimeout((function(){a(new v(\"Aborted\",\"AbortError\"))}),0)},s.open(o.method,function(t){try{return\"\"===t&&i.location.href?i.location.href:t}catch(e){return t}}(o.url),!0),\"include\"===o.credentials?s.withCredentials=!0:\"omit\"===o.credentials&&(s.withCredentials=!1),\"responseType\"in s&&(n.blob?s.responseType=\"blob\":n.arrayBuffer&&o.headers.get(\"Content-Type\")&&-1!==o.headers.get(\"Content-Type\").indexOf(\"application/octet-stream\")&&(s.responseType=\"arraybuffer\")),!e||\"object\"!=typeof e.headers||e.headers instanceof f?o.headers.forEach((function(t,e){s.setRequestHeader(e,t)})):Object.getOwnPropertyNames(e.headers).forEach((function(t){s.setRequestHeader(t,h(e.headers[t]))})),o.signal&&(o.signal.addEventListener(\"abort\",l),s.onreadystatechange=function(){4===s.readyState&&o.signal.removeEventListener(\"abort\",l)}),s.send(void 0===o._bodyInit?null:o._bodyInit)}))}x.polyfill=!0,i.fetch||(i.fetch=x,i.Headers=f,i.Request=b,i.Response=y)},6290:(t,e,r)=>{\"use strict\";var i=r(5048),n=r(9748),a=r(4655),o=r(1960);function s(t,e,r){var i=t;return n(e)?(r=e,\"string\"==typeof t&&(i={uri:t})):i=o(e,{uri:t}),i.callback=r,i}function h(t,e,r){return l(e=s(t,e,r))}function l(t){if(void 0===t.callback)throw new Error(\"callback argument missing\");var e=!1,r=function(r,i,n){e||(e=!0,t.callback(r,i,n))};function i(){var t=void 0;if(t=f.response?f.response:f.responseText||function(t){try{if(\"document\"===t.responseType)return t.responseXML;var e=t.responseXML&&\"parsererror\"===t.responseXML.documentElement.nodeName;if(\"\"===t.responseType&&!e)return t.responseXML}catch(t){}return null}(f),b)try{t=JSON.parse(t)}catch(t){}return t}function n(t){return clearTimeout(u),t instanceof Error||(t=new Error(\"\"+(t||\"Unknown XMLHttpRequest Error\"))),t.statusCode=0,r(t,_)}function o(){if(!l){var e;clearTimeout(u),e=t.useXDR&&void 0===f.status?200:1223===f.status?204:f.status;var n=_,o=null;return 0!==e?(n={body:i(),statusCode:e,method:d,headers:{},url:c,rawRequest:f},f.getAllResponseHeaders&&(n.headers=a(f.getAllResponseHeaders()))):o=new Error(\"Internal XMLHttpRequest Error\"),r(o,n,n.body)}}var s,l,f=t.xhr||null;f||(f=t.cors||t.useXDR?new h.XDomainRequest:new h.XMLHttpRequest);var u,c=f.url=t.uri||t.url,d=f.method=t.method||\"GET\",p=t.body||t.data,m=f.headers=t.headers||{},g=!!t.sync,b=!1,_={body:void 0,headers:{},statusCode:0,method:d,url:c,rawRequest:f};if(\"json\"in t&&!1!==t.json&&(b=!0,m.accept||m.Accept||(m.Accept=\"application/json\"),\"GET\"!==d&&\"HEAD\"!==d&&(m[\"content-type\"]||m[\"Content-Type\"]||(m[\"Content-Type\"]=\"application/json\"),p=JSON.stringify(!0===t.json?p:t.json))),f.onreadystatechange=function(){4===f.readyState&&setTimeout(o,0)},f.onload=o,f.onerror=n,f.onprogress=function(){},f.onabort=function(){l=!0},f.ontimeout=n,f.open(d,c,!g,t.username,t.password),g||(f.withCredentials=!!t.withCredentials),!g&&t.timeout>0&&(u=setTimeout((function(){if(!l){l=!0,f.abort(\"timeout\");var t=new Error(\"XMLHttpRequest timeout\");t.code=\"ETIMEDOUT\",n(t)}}),t.timeout)),f.setRequestHeader)for(s in m)m.hasOwnProperty(s)&&f.setRequestHeader(s,m[s]);else if(t.headers&&!function(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}(t.headers))throw new Error(\"Headers cannot be set on an XDomainRequest object\");return\"responseType\"in t&&(f.responseType=t.responseType),\"beforeSend\"in t&&\"function\"==typeof t.beforeSend&&t.beforeSend(f),f.send(p||null),f}t.exports=h,t.exports.default=h,h.XMLHttpRequest=i.XMLHttpRequest||function(){},h.XDomainRequest=\"withCredentials\"in new h.XMLHttpRequest?h.XMLHttpRequest:i.XDomainRequest,function(t,e){for(var r=0;r<t.length;r++)e(t[r])}([\"get\",\"put\",\"post\",\"patch\",\"head\",\"delete\"],(function(t){h[\"delete\"===t?\"del\":t]=function(e,r,i){return(r=s(e,r,i)).method=t.toUpperCase(),l(r)}}))},1596:t=>{t.exports=void 0!==self.DOMParser?function(t){return(new self.DOMParser).parseFromString(t,\"application/xml\")}:void 0!==self.ActiveXObject&&new self.ActiveXObject(\"Microsoft.XMLDOM\")?function(t){var e=new self.ActiveXObject(\"Microsoft.XMLDOM\");return e.async=\"false\",e.loadXML(t),e}:function(t){var e=document.createElement(\"div\");return e.innerHTML=t,e}},1960:t=>{t.exports=function(){for(var t={},r=0;r<arguments.length;r++){var i=arguments[r];for(var n in i)e.call(i,n)&&(t[n]=i[n])}return t};var e=Object.prototype.hasOwnProperty},8522:()=>{},6777:()=>{},5546:()=>{},2460:(t,e,r)=>{var i=r(4406),n=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,h=(t,e)=>{for(var r in e)n(t,r,{get:e[r],enumerable:!0})},l=(t=>(e,r)=>t&&t.get(e)||(r=((t,e,r,i)=>{if(e&&\"object\"==typeof e||\"function\"==typeof e)for(let r of o(e))s.call(t,r)||n(t,r,{get:()=>e[r],enumerable:!(i=a(e,r))||i.enumerable});return t})(n({},\"__esModule\",{value:!0}),e),t&&t.set(e,r),r))(\"undefined\"!=typeof WeakMap?new WeakMap:0),f=(t,e,r)=>(((t,e,r)=>{e in t?n(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r})(t,\"symbol\"!=typeof e?e+\"\":e,r),r),u={};h(u,{applyPalette:()=>te,applyPaletteSync:()=>$t,buildPalette:()=>Kt,buildPaletteSync:()=>Qt,constants:()=>c,conversion:()=>b,distance:()=>H,image:()=>Ct,palette:()=>ot,quality:()=>Wt,utils:()=>ct});var c={};h(c,{bt709:()=>d});var d={};h(d,{Y:()=>p,x:()=>m,y:()=>g});var p=(t=>(t[t.RED=.2126]=\"RED\",t[t.GREEN=.7152]=\"GREEN\",t[t.BLUE=.0722]=\"BLUE\",t[t.WHITE=1]=\"WHITE\",t))(p||{}),m=(t=>(t[t.RED=.64]=\"RED\",t[t.GREEN=.3]=\"GREEN\",t[t.BLUE=.15]=\"BLUE\",t[t.WHITE=.3127]=\"WHITE\",t))(m||{}),g=(t=>(t[t.RED=.33]=\"RED\",t[t.GREEN=.6]=\"GREEN\",t[t.BLUE=.06]=\"BLUE\",t[t.WHITE=.329]=\"WHITE\",t))(g||{}),b={};function _(t){return t>.04045?((t+.055)/1.055)**2.4:t/12.92}function y(t,e,r){return{x:.4124*(t=_(t/255))+.3576*(e=_(e/255))+.1805*(r=_(r/255)),y:.2126*t+.7152*e+.0722*r,z:.0193*t+.1192*e+.9505*r}}h(b,{lab2rgb:()=>G,lab2xyz:()=>N,rgb2hsl:()=>I,rgb2lab:()=>L,rgb2xyz:()=>y,xyz2lab:()=>O,xyz2rgb:()=>j});var w={};function v(t){return t*(Math.PI/180)}function x(t,e,r){let i=t;return i<e&&(i=e),i<r&&(i=r),i}function E(t,e,r){let i=t;return i>e&&(i=e),i>r&&(i=r),i}function k(t,e,r){return t>r&&(t=r),t<e&&(t=e),0|t}function S(t){return(t=Math.round(t))>255?t=255:t<0&&(t=0),t}function M(t){return t>255?t=255:t<0&&(t=0),t}function A(t,e){const r=typeof t[0];let i;if(\"number\"===r||\"string\"===r){const r=Object.create(null);for(let e=0,i=t.length;e<i;e++){const i=t[e];r[i]||0===r[i]||(r[i]=e)}i=t.sort(((t,i)=>e(t,i)||r[t]-r[i]))}else{const r=t.slice(0);i=t.sort(((t,i)=>e(t,i)||r.indexOf(t)-r.indexOf(i)))}return i}function I(t,e,r){const i=E(t,e,r),n=x(t,e,r),a=n-i,o=(i+n)/510;let s=0;o>0&&o<1&&(s=a/(o<.5?n+i:510-n-i));let h=0;return a>0&&(h=n===t?(e-r)/a:n===e?2+(r-t)/a:4+(t-e)/a,h*=60,h<0&&(h+=360)),{h,s,l:o}}h(w,{degrees2radians:()=>v,inRange0to255:()=>M,inRange0to255Rounded:()=>S,intInRange:()=>k,max3:()=>x,min3:()=>E,stableSort:()=>A});var B=.95047,T=1,R=1.08883;function P(t){return t>.008856?t**(1/3):7.787*t+16/116}function O(t,e,r){if(t=P(t/B),e=P(e/T),r=P(r/R),116*e-16<0)throw new Error(\"xxx\");return{L:Math.max(0,116*e-16),a:500*(t-e),b:200*(e-r)}}function L(t,e,r){const i=y(t,e,r);return O(i.x,i.y,i.z)}var C=.95047,U=1,z=1.08883;function D(t){return t>.206893034?t**3:(t-16/116)/7.787}function N(t,e,r){const i=(t+16)/116,n=i-r/200;return{x:C*D(e/500+i),y:U*D(i),z:z*D(n)}}function F(t){return t>.0031308?1.055*t**(1/2.4)-.055:12.92*t}function j(t,e,r){const i=F(3.2406*t+-1.5372*e+-.4986*r),n=F(-.9689*t+1.8758*e+.0415*r),a=F(.0557*t+-.204*e+1.057*r);return{r:S(255*i),g:S(255*n),b:S(255*a)}}function G(t,e,r){const i=N(t,e,r);return j(i.x,i.y,i.z)}var H={};h(H,{AbstractDistanceCalculator:()=>W,AbstractEuclidean:()=>Q,AbstractManhattan:()=>et,CIE94GraphicArts:()=>Y,CIE94Textiles:()=>Z,CIEDE2000:()=>X,CMetric:()=>J,Euclidean:()=>K,EuclideanBT709:()=>$,EuclideanBT709NoAlpha:()=>tt,Manhattan:()=>rt,ManhattanBT709:()=>nt,ManhattanNommyde:()=>it,PNGQuant:()=>at});var W=class{constructor(){f(this,\"_maxDistance\"),f(this,\"_whitePoint\"),this._setDefaults(),this.setWhitePoint(255,255,255,255)}setWhitePoint(t,e,r,i){this._whitePoint={r:t>0?255/t:0,g:e>0?255/e:0,b:r>0?255/r:0,a:i>0?255/i:0},this._maxDistance=this.calculateRaw(t,e,r,i,0,0,0,0)}calculateNormalized(t,e){return this.calculateRaw(t.r,t.g,t.b,t.a,e.r,e.g,e.b,e.a)/this._maxDistance}},q=class extends W{calculateRaw(t,e,r,i,n,a,o,s){const h=L(M(t*this._whitePoint.r),M(e*this._whitePoint.g),M(r*this._whitePoint.b)),l=L(M(n*this._whitePoint.r),M(a*this._whitePoint.g),M(o*this._whitePoint.b)),f=h.L-l.L,u=h.a-l.a,c=h.b-l.b,d=Math.sqrt(h.a*h.a+h.b*h.b),p=d-Math.sqrt(l.a*l.a+l.b*l.b);let m=u*u+c*c-p*p;m=m<0?0:Math.sqrt(m);const g=(s-i)*this._whitePoint.a*this._kA;return Math.sqrt((f/this._Kl)**2+(p/(1+this._K1*d))**2+(m/(1+this._K2*d))**2+g**2)}},Z=class extends q{_setDefaults(){this._Kl=2,this._K1=.048,this._K2=.014,this._kA=12.5/255}},Y=class extends q{_setDefaults(){this._Kl=1,this._K1=.045,this._K2=.015,this._kA=25/255}},V=class extends W{_setDefaults(){}static _calculatehp(t,e){const r=Math.atan2(t,e);return r>=0?r:r+V._deg360InRad}static _calculateRT(t,e){const r=e**7,i=2*Math.sqrt(r/(r+V._pow25to7)),n=V._deg30InRad*Math.exp(-(((t-V._deg275InRad)/V._deg25InRad)**2));return-Math.sin(2*n)*i}static _calculateT(t){return 1-.17*Math.cos(t-V._deg30InRad)+.24*Math.cos(2*t)+.32*Math.cos(3*t+V._deg6InRad)-.2*Math.cos(4*t-V._deg63InRad)}static _calculate_ahp(t,e,r,i){const n=r+i;return 0===t?n:e<=V._deg180InRad?n/2:n<V._deg360InRad?(n+V._deg360InRad)/2:(n-V._deg360InRad)/2}static _calculate_dHp(t,e,r,i){let n;return n=0===t?0:e<=V._deg180InRad?r-i:r<=i?r-i+V._deg360InRad:r-i-V._deg360InRad,2*Math.sqrt(t)*Math.sin(n/2)}calculateRaw(t,e,r,i,n,a,o,s){const h=L(M(t*this._whitePoint.r),M(e*this._whitePoint.g),M(r*this._whitePoint.b)),l=L(M(n*this._whitePoint.r),M(a*this._whitePoint.g),M(o*this._whitePoint.b)),f=(s-i)*this._whitePoint.a*V._kA,u=this.calculateRawInLab(h,l);return Math.sqrt(u+f*f)}calculateRawInLab(t,e){const r=t.L,i=t.a,n=t.b,a=e.L,o=e.a,s=e.b,h=((Math.sqrt(i*i+n*n)+Math.sqrt(o*o+s*s))/2)**7,l=.5*(1-Math.sqrt(h/(h+V._pow25to7))),f=(1+l)*i,u=(1+l)*o,c=Math.sqrt(f*f+n*n),d=Math.sqrt(u*u+s*s),p=c*d,m=V._calculatehp(n,f),g=V._calculatehp(s,u),b=Math.abs(m-g),_=a-r,y=d-c,w=V._calculate_dHp(p,b,g,m),v=V._calculate_ahp(p,b,m,g),x=(c+d)/2,E=((r+a)/2-50)**2,k=y/(1+.045*x),S=w/(1+.015*V._calculateT(v)*x);return(_/(1+.015*E/Math.sqrt(20+E)))**2+k**2+S**2+V._calculateRT(v,x)*k*S}},X=V;f(X,\"_kA\",25/255),f(X,\"_pow25to7\",25**7),f(X,\"_deg360InRad\",v(360)),f(X,\"_deg180InRad\",v(180)),f(X,\"_deg30InRad\",v(30)),f(X,\"_deg6InRad\",v(6)),f(X,\"_deg63InRad\",v(63)),f(X,\"_deg275InRad\",v(275)),f(X,\"_deg25InRad\",v(25));var J=class extends W{calculateRaw(t,e,r,i,n,a,o,s){const h=(t+n)/2*this._whitePoint.r,l=(t-n)*this._whitePoint.r,f=(e-a)*this._whitePoint.g,u=(r-o)*this._whitePoint.b,c=((512+h)*l*l>>8)+4*f*f+((767-h)*u*u>>8),d=(s-i)*this._whitePoint.a;return Math.sqrt(c+d*d)}_setDefaults(){}},Q=class extends W{calculateRaw(t,e,r,i,n,a,o,s){const h=n-t,l=a-e,f=o-r,u=s-i;return Math.sqrt(this._kR*h*h+this._kG*l*l+this._kB*f*f+this._kA*u*u)}},K=class extends Q{_setDefaults(){this._kR=1,this._kG=1,this._kB=1,this._kA=1}},$=class extends Q{_setDefaults(){this._kR=.2126,this._kG=.7152,this._kB=.0722,this._kA=1}},tt=class extends Q{_setDefaults(){this._kR=.2126,this._kG=.7152,this._kB=.0722,this._kA=0}},et=class extends W{calculateRaw(t,e,r,i,n,a,o,s){let h=n-t,l=a-e,f=o-r,u=s-i;return h<0&&(h=0-h),l<0&&(l=0-l),f<0&&(f=0-f),u<0&&(u=0-u),this._kR*h+this._kG*l+this._kB*f+this._kA*u}},rt=class extends et{_setDefaults(){this._kR=1,this._kG=1,this._kB=1,this._kA=1}},it=class extends et{_setDefaults(){this._kR=.4984,this._kG=.8625,this._kB=.2979,this._kA=1}},nt=class extends et{_setDefaults(){this._kR=.2126,this._kG=.7152,this._kB=.0722,this._kA=1}},at=class extends W{calculateRaw(t,e,r,i,n,a,o,s){const h=(s-i)*this._whitePoint.a;return this._colordifferenceCh(t*this._whitePoint.r,n*this._whitePoint.r,h)+this._colordifferenceCh(e*this._whitePoint.g,a*this._whitePoint.g,h)+this._colordifferenceCh(r*this._whitePoint.b,o*this._whitePoint.b,h)}_colordifferenceCh(t,e,r){const i=t-e,n=i+r;return i*i+n*n}_setDefaults(){}},ot={};h(ot,{AbstractPaletteQuantizer:()=>st,ColorHistogram:()=>kt,NeuQuant:()=>yt,NeuQuantFloat:()=>xt,RGBQuant:()=>Mt,WuColorCube:()=>Pt,WuQuant:()=>Lt});var st=class{quantizeSync(){for(const t of this.quantize())if(t.palette)return t.palette;throw new Error(\"unreachable\")}},ht=class{constructor(){f(this,\"r\"),f(this,\"g\"),f(this,\"b\"),f(this,\"a\"),f(this,\"uint32\"),f(this,\"rgba\"),this.uint32=-1>>>0,this.r=this.g=this.b=this.a=0,this.rgba=new Array(4),this.rgba[0]=0,this.rgba[1]=0,this.rgba[2]=0,this.rgba[3]=0}static createByQuadruplet(t){const e=new ht;return e.r=0|t[0],e.g=0|t[1],e.b=0|t[2],e.a=0|t[3],e._loadUINT32(),e._loadQuadruplet(),e}static createByRGBA(t,e,r,i){const n=new ht;return n.r=0|t,n.g=0|e,n.b=0|r,n.a=0|i,n._loadUINT32(),n._loadQuadruplet(),n}static createByUint32(t){const e=new ht;return e.uint32=t>>>0,e._loadRGBA(),e._loadQuadruplet(),e}from(t){this.r=t.r,this.g=t.g,this.b=t.b,this.a=t.a,this.uint32=t.uint32,this.rgba[0]=t.r,this.rgba[1]=t.g,this.rgba[2]=t.b,this.rgba[3]=t.a}getLuminosity(t){let e=this.r,r=this.g,i=this.b;return t&&(e=Math.min(255,255-this.a+this.a*e/255),r=Math.min(255,255-this.a+this.a*r/255),i=Math.min(255,255-this.a+this.a*i/255)),.2126*e+.7152*r+.0722*i}_loadUINT32(){this.uint32=(this.a<<24|this.b<<16|this.g<<8|this.r)>>>0}_loadRGBA(){this.r=255&this.uint32,this.g=this.uint32>>>8&255,this.b=this.uint32>>>16&255,this.a=this.uint32>>>24&255}_loadQuadruplet(){this.rgba[0]=this.r,this.rgba[1]=this.g,this.rgba[2]=this.b,this.rgba[3]=this.a}},lt=class{constructor(){f(this,\"_pointArray\"),f(this,\"_width\"),f(this,\"_height\"),this._width=0,this._height=0,this._pointArray=[]}getWidth(){return this._width}getHeight(){return this._height}setWidth(t){this._width=t}setHeight(t){this._height=t}getPointArray(){return this._pointArray}clone(){const t=new lt;t._width=this._width,t._height=this._height;for(let e=0,r=this._pointArray.length;e<r;e++)t._pointArray[e]=ht.createByUint32(0|this._pointArray[e].uint32);return t}toUint32Array(){const t=this._pointArray.length,e=new Uint32Array(t);for(let r=0;r<t;r++)e[r]=this._pointArray[r].uint32;return e}toUint8Array(){return new Uint8Array(this.toUint32Array().buffer)}static fromHTMLImageElement(t){const e=t.naturalWidth,r=t.naturalHeight,i=document.createElement(\"canvas\");return i.width=e,i.height=r,i.getContext(\"2d\").drawImage(t,0,0,e,r,0,0,e,r),lt.fromHTMLCanvasElement(i)}static fromHTMLCanvasElement(t){const e=t.width,r=t.height,i=t.getContext(\"2d\").getImageData(0,0,e,r);return lt.fromImageData(i)}static fromImageData(t){const e=t.width,r=t.height;return lt.fromUint8Array(t.data,e,r)}static fromUint8Array(t,e,r){switch(Object.prototype.toString.call(t)){case\"[object Uint8ClampedArray]\":case\"[object Uint8Array]\":break;default:t=new Uint8Array(t)}const i=new Uint32Array(t.buffer);return lt.fromUint32Array(i,e,r)}static fromUint32Array(t,e,r){const i=new lt;i._width=e,i._height=r;for(let e=0,r=t.length;e<r;e++)i._pointArray[e]=ht.createByUint32(0|t[e]);return i}static fromBuffer(t,e,r){const i=new Uint32Array(t.buffer,t.byteOffset,t.byteLength/Uint32Array.BYTES_PER_ELEMENT);return lt.fromUint32Array(i,e,r)}};function ft(t,e){const r=360/e;for(let i=1,n=r-r/2;i<e;i++,n+=r)if(t>=n&&t<n+r)return i;return 0}var ut=class{constructor(){f(this,\"_pointContainer\"),f(this,\"_pointArray\",[]),f(this,\"_i32idx\",{}),this._pointContainer=new lt,this._pointContainer.setHeight(1),this._pointArray=this._pointContainer.getPointArray()}add(t){this._pointArray.push(t),this._pointContainer.setWidth(this._pointArray.length)}has(t){for(let e=this._pointArray.length-1;e>=0;e--)if(t.uint32===this._pointArray[e].uint32)return!0;return!1}getNearestColor(t,e){return this._pointArray[0|this._getNearestIndex(t,e)]}getPointContainer(){return this._pointContainer}_nearestPointFromCache(t){return\"number\"==typeof this._i32idx[t]?this._i32idx[t]:-1}_getNearestIndex(t,e){let r=this._nearestPointFromCache(\"\"+e.uint32);if(r>=0)return r;let i=Number.MAX_VALUE;r=0;for(let n=0,a=this._pointArray.length;n<a;n++){const a=this._pointArray[n],o=t.calculateRaw(e.r,e.g,e.b,e.a,a.r,a.g,a.b,a.a);o<i&&(i=o,r=n)}return this._i32idx[e.uint32]=r,r}sort(){this._i32idx={},this._pointArray.sort(((t,e)=>{const r=I(t.r,t.g,t.b),i=I(e.r,e.g,e.b),n=t.r===t.g&&t.g===t.b?0:1+ft(r.h,10),a=(e.r===e.g&&e.g===e.b?0:1+ft(i.h,10))-n;if(a)return-a;const o=t.getLuminosity(!0),s=e.getLuminosity(!0);if(s-o!=0)return s-o;const h=(100*i.s|0)-(100*r.s|0);return h?-h:0}))}},ct={};h(ct,{HueStatistics:()=>pt,Palette:()=>ut,Point:()=>ht,PointContainer:()=>lt,ProgressTracker:()=>gt,arithmetic:()=>w});var dt=class{constructor(){f(this,\"num\",0),f(this,\"cols\",[])}},pt=class{constructor(t,e){f(this,\"_numGroups\"),f(this,\"_minCols\"),f(this,\"_stats\"),f(this,\"_groupsFull\"),this._numGroups=t,this._minCols=e,this._stats=[];for(let e=0;e<=t;e++)this._stats[e]=new dt;this._groupsFull=0}check(t){this._groupsFull===this._numGroups+1&&(this.check=()=>{});const e=255&t,r=t>>>8&255,i=t>>>16&255,n=e===r&&r===i?0:1+ft(I(e,r,i).h,this._numGroups),a=this._stats[n],o=this._minCols;a.num++,a.num>o||(a.num===o&&this._groupsFull++,a.num<=o&&this._stats[n].cols.push(t))}injectIntoDictionary(t){for(let e=0;e<=this._numGroups;e++)this._stats[e].num<=this._minCols&&this._stats[e].cols.forEach((e=>{t[e]?t[e]++:t[e]=1}))}injectIntoArray(t){for(let e=0;e<=this._numGroups;e++)this._stats[e].num<=this._minCols&&this._stats[e].cols.forEach((e=>{-1===t.indexOf(e)&&t.push(e)}))}},mt=class{constructor(t,e){f(this,\"progress\"),f(this,\"_step\"),f(this,\"_range\"),f(this,\"_last\"),f(this,\"_progressRange\"),this._range=t,this._progressRange=e,this._step=Math.max(1,this._range/(mt.steps+1)|0),this._last=-this._step,this.progress=0}shouldNotify(t){return t-this._last>=this._step&&(this._last=t,this.progress=Math.min(this._progressRange*this._last/this._range,this._progressRange),!0)}},gt=mt;f(gt,\"steps\",100);var bt=class{constructor(t){f(this,\"r\"),f(this,\"g\"),f(this,\"b\"),f(this,\"a\"),this.r=this.g=this.b=this.a=t}toPoint(){return ht.createByRGBA(this.r>>3,this.g>>3,this.b>>3,this.a>>3)}subtract(t,e,r,i){this.r-=0|t,this.g-=0|e,this.b-=0|r,this.a-=0|i}},_t=class extends st{constructor(t,e=256){super(),f(this,\"_pointArray\"),f(this,\"_networkSize\"),f(this,\"_network\"),f(this,\"_sampleFactor\"),f(this,\"_radPower\"),f(this,\"_freq\"),f(this,\"_bias\"),f(this,\"_distance\"),this._distance=t,this._pointArray=[],this._sampleFactor=1,this._networkSize=e,this._distance.setWhitePoint(2040,2040,2040,2040)}sample(t){this._pointArray=this._pointArray.concat(t.getPointArray())}*quantize(){this._init(),yield*this._learn(),yield{palette:this._buildPalette(),progress:100}}_init(){this._freq=[],this._bias=[],this._radPower=[],this._network=[];for(let t=0;t<this._networkSize;t++)this._network[t]=new bt((t<<11)/this._networkSize|0),this._freq[t]=_t._initialBias/this._networkSize|0,this._bias[t]=0}*_learn(){let t=this._sampleFactor;const e=this._pointArray.length;e<_t._minpicturebytes&&(t=1);const r=30+(t-1)/3|0,i=e/t|0;let n,a=i/_t._nCycles|0,o=_t._initAlpha,s=(this._networkSize>>3)*_t._radiusBias,h=s>>_t._radiusBiasShift;h<=1&&(h=0);for(let t=0;t<h;t++)this._radPower[t]=o*((h*h-t*t)*_t._radBias/(h*h))>>>0;n=e<_t._minpicturebytes?1:e%_t._prime1!=0?_t._prime1:e%_t._prime2!=0?_t._prime2:e%_t._prime3!=0?_t._prime3:_t._prime4;const l=new gt(i,99);for(let t=0,f=0;t<i;){l.shouldNotify(t)&&(yield{progress:l.progress});const i=this._pointArray[f],u=i.b<<3,c=i.g<<3,d=i.r<<3,p=i.a<<3,m=this._contest(u,c,d,p);if(this._alterSingle(o,m,u,c,d,p),0!==h&&this._alterNeighbour(h,m,u,c,d,p),f+=n,f>=e&&(f-=e),t++,0===a&&(a=1),t%a==0){o-=o/r|0,s-=s/_t._radiusDecrease|0,h=s>>_t._radiusBiasShift,h<=1&&(h=0);for(let t=0;t<h;t++)this._radPower[t]=o*((h*h-t*t)*_t._radBias/(h*h))>>>0}}}_buildPalette(){const t=new ut;return this._network.forEach((e=>{t.add(e.toPoint())})),t.sort(),t}_alterNeighbour(t,e,r,i,n,a){let o=e-t;o<-1&&(o=-1);let s=e+t;s>this._networkSize&&(s=this._networkSize);let h=e+1,l=e-1,f=1;for(;h<s||l>o;){const t=this._radPower[f++]/_t._alphaRadBias;if(h<s){const e=this._network[h++];e.subtract(t*(e.r-n),t*(e.g-i),t*(e.b-r),t*(e.a-a))}if(l>o){const e=this._network[l--];e.subtract(t*(e.r-n),t*(e.g-i),t*(e.b-r),t*(e.a-a))}}}_alterSingle(t,e,r,i,n,a){t/=_t._initAlpha;const o=this._network[e];o.subtract(t*(o.r-n),t*(o.g-i),t*(o.b-r),t*(o.a-a))}_contest(t,e,r,i){let n=~(1<<31),a=n,o=-1,s=o;for(let h=0;h<this._networkSize;h++){const l=this._network[h],f=8160*this._distance.calculateNormalized(l,{r,g:e,b:t,a:i})|0;f<n&&(n=f,o=h);const u=f-(this._bias[h]>>_t._initialBiasShift-3);u<a&&(a=u,s=h);const c=this._freq[h]>>_t._betaShift;this._freq[h]-=c,this._bias[h]+=c<<_t._gammaShift}return this._freq[o]+=_t._beta,this._bias[o]-=_t._betaGamma,s}},yt=_t;f(yt,\"_prime1\",499),f(yt,\"_prime2\",491),f(yt,\"_prime3\",487),f(yt,\"_prime4\",503),f(yt,\"_minpicturebytes\",_t._prime4),f(yt,\"_nCycles\",100),f(yt,\"_initialBiasShift\",16),f(yt,\"_initialBias\",1<<_t._initialBiasShift),f(yt,\"_gammaShift\",10),f(yt,\"_betaShift\",10),f(yt,\"_beta\",_t._initialBias>>_t._betaShift),f(yt,\"_betaGamma\",_t._initialBias<<_t._gammaShift-_t._betaShift),f(yt,\"_radiusBiasShift\",6),f(yt,\"_radiusBias\",1<<_t._radiusBiasShift),f(yt,\"_radiusDecrease\",30),f(yt,\"_alphaBiasShift\",10),f(yt,\"_initAlpha\",1<<_t._alphaBiasShift),f(yt,\"_radBiasShift\",8),f(yt,\"_radBias\",1<<_t._radBiasShift),f(yt,\"_alphaRadBiasShift\",_t._alphaBiasShift+_t._radBiasShift),f(yt,\"_alphaRadBias\",1<<_t._alphaRadBiasShift);var wt=class{constructor(t){f(this,\"r\"),f(this,\"g\"),f(this,\"b\"),f(this,\"a\"),this.r=this.g=this.b=this.a=t}toPoint(){return ht.createByRGBA(this.r>>3,this.g>>3,this.b>>3,this.a>>3)}subtract(t,e,r,i){this.r-=t,this.g-=e,this.b-=r,this.a-=i}},vt=class extends st{constructor(t,e=256){super(),f(this,\"_pointArray\"),f(this,\"_networkSize\"),f(this,\"_network\"),f(this,\"_sampleFactor\"),f(this,\"_radPower\"),f(this,\"_freq\"),f(this,\"_bias\"),f(this,\"_distance\"),this._distance=t,this._pointArray=[],this._sampleFactor=1,this._networkSize=e,this._distance.setWhitePoint(2040,2040,2040,2040)}sample(t){this._pointArray=this._pointArray.concat(t.getPointArray())}*quantize(){this._init(),yield*this._learn(),yield{palette:this._buildPalette(),progress:100}}_init(){this._freq=[],this._bias=[],this._radPower=[],this._network=[];for(let t=0;t<this._networkSize;t++)this._network[t]=new wt((t<<11)/this._networkSize),this._freq[t]=vt._initialBias/this._networkSize,this._bias[t]=0}*_learn(){let t=this._sampleFactor;const e=this._pointArray.length;e<vt._minpicturebytes&&(t=1);const r=30+(t-1)/3,i=e/t;let n,a=i/vt._nCycles|0,o=vt._initAlpha,s=(this._networkSize>>3)*vt._radiusBias,h=s>>vt._radiusBiasShift;h<=1&&(h=0);for(let t=0;t<h;t++)this._radPower[t]=o*((h*h-t*t)*vt._radBias/(h*h));n=e<vt._minpicturebytes?1:e%vt._prime1!=0?vt._prime1:e%vt._prime2!=0?vt._prime2:e%vt._prime3!=0?vt._prime3:vt._prime4;const l=new gt(i,99);for(let t=0,f=0;t<i;){l.shouldNotify(t)&&(yield{progress:l.progress});const i=this._pointArray[f],u=i.b<<3,c=i.g<<3,d=i.r<<3,p=i.a<<3,m=this._contest(u,c,d,p);if(this._alterSingle(o,m,u,c,d,p),0!==h&&this._alterNeighbour(h,m,u,c,d,p),f+=n,f>=e&&(f-=e),t++,0===a&&(a=1),t%a==0){o-=o/r,s-=s/vt._radiusDecrease,h=s>>vt._radiusBiasShift,h<=1&&(h=0);for(let t=0;t<h;t++)this._radPower[t]=o*((h*h-t*t)*vt._radBias/(h*h))}}}_buildPalette(){const t=new ut;return this._network.forEach((e=>{t.add(e.toPoint())})),t.sort(),t}_alterNeighbour(t,e,r,i,n,a){let o=e-t;o<-1&&(o=-1);let s=e+t;s>this._networkSize&&(s=this._networkSize);let h=e+1,l=e-1,f=1;for(;h<s||l>o;){const t=this._radPower[f++]/vt._alphaRadBias;if(h<s){const e=this._network[h++];e.subtract(t*(e.r-n),t*(e.g-i),t*(e.b-r),t*(e.a-a))}if(l>o){const e=this._network[l--];e.subtract(t*(e.r-n),t*(e.g-i),t*(e.b-r),t*(e.a-a))}}}_alterSingle(t,e,r,i,n,a){t/=vt._initAlpha;const o=this._network[e];o.subtract(t*(o.r-n),t*(o.g-i),t*(o.b-r),t*(o.a-a))}_contest(t,e,r,i){let n=~(1<<31),a=n,o=-1,s=o;for(let h=0;h<this._networkSize;h++){const l=this._network[h],f=8160*this._distance.calculateNormalized(l,{r,g:e,b:t,a:i});f<n&&(n=f,o=h);const u=f-(this._bias[h]>>vt._initialBiasShift-3);u<a&&(a=u,s=h);const c=this._freq[h]>>vt._betaShift;this._freq[h]-=c,this._bias[h]+=c<<vt._gammaShift}return this._freq[o]+=vt._beta,this._bias[o]-=vt._betaGamma,s}},xt=vt;f(xt,\"_prime1\",499),f(xt,\"_prime2\",491),f(xt,\"_prime3\",487),f(xt,\"_prime4\",503),f(xt,\"_minpicturebytes\",vt._prime4),f(xt,\"_nCycles\",100),f(xt,\"_initialBiasShift\",16),f(xt,\"_initialBias\",1<<vt._initialBiasShift),f(xt,\"_gammaShift\",10),f(xt,\"_betaShift\",10),f(xt,\"_beta\",vt._initialBias>>vt._betaShift),f(xt,\"_betaGamma\",vt._initialBias<<vt._gammaShift-vt._betaShift),f(xt,\"_radiusBiasShift\",6),f(xt,\"_radiusBias\",1<<vt._radiusBiasShift),f(xt,\"_radiusDecrease\",30),f(xt,\"_alphaBiasShift\",10),f(xt,\"_initAlpha\",1<<vt._alphaBiasShift),f(xt,\"_radBiasShift\",8),f(xt,\"_radBias\",1<<vt._radBiasShift),f(xt,\"_alphaRadBiasShift\",vt._alphaBiasShift+vt._radBiasShift),f(xt,\"_alphaRadBias\",1<<vt._alphaRadBiasShift);var Et=class{constructor(t,e){f(this,\"_method\"),f(this,\"_hueStats\"),f(this,\"_histogram\"),f(this,\"_initColors\"),f(this,\"_minHueCols\"),this._method=t,this._minHueCols=e<<2,this._initColors=e<<2,this._hueStats=new pt(Et._hueGroups,this._minHueCols),this._histogram=Object.create(null)}sample(t){switch(this._method){case 1:this._colorStats1D(t);break;case 2:this._colorStats2D(t)}}getImportanceSortedColorsIDXI32(){const t=A(Object.keys(this._histogram),((t,e)=>this._histogram[e]-this._histogram[t]));if(0===t.length)return[];let e;switch(this._method){case 1:const r=Math.min(t.length,this._initColors),i=t[r-1],n=this._histogram[i];e=t.slice(0,r);let a=r;const o=t.length;for(;a<o&&this._histogram[t[a]]===n;)e.push(t[a++]);this._hueStats.injectIntoArray(e);break;case 2:e=t;break;default:throw new Error(\"Incorrect method\")}return e.map((t=>+t))}_colorStats1D(t){const e=this._histogram,r=t.getPointArray(),i=r.length;for(let t=0;t<i;t++){const i=r[t].uint32;this._hueStats.check(i),i in e?e[i]++:e[i]=1}}_colorStats2D(t){const e=t.getWidth(),r=t.getHeight(),i=t.getPointArray(),n=Et._boxSize[0],a=Et._boxSize[1],o=n*a,s=this._makeBoxes(e,r,n,a),h=this._histogram;s.forEach((t=>{let r=Math.round(t.w*t.h/o)*Et._boxPixels;r<2&&(r=2);const n={};this._iterateBox(t,e,(t=>{const e=i[t].uint32;this._hueStats.check(e),e in h?h[e]++:e in n?++n[e]>=r&&(h[e]=n[e]):n[e]=1}))})),this._hueStats.injectIntoDictionary(h)}_iterateBox(t,e,r){const i=t,n=i.y*e+i.x,a=(i.y+i.h-1)*e+(i.x+i.w-1),o=e-i.w+1;let s=0,h=n;do{r.call(this,h),h+=++s%i.w==0?o:1}while(h<=a)}_makeBoxes(t,e,r,i){const n=t%r,a=e%i,o=t-n,s=e-a,h=[];for(let l=0;l<e;l+=i)for(let e=0;e<t;e+=r)h.push({x:e,y:l,w:e===o?n:r,h:l===s?a:i});return h}},kt=Et;f(kt,\"_boxSize\",[64,64]),f(kt,\"_boxPixels\",2),f(kt,\"_hueGroups\",10);var St=class{constructor(t,e,r){f(this,\"index\"),f(this,\"color\"),f(this,\"distance\"),this.index=t,this.color=e,this.distance=r}},Mt=class extends st{constructor(t,e=256,r=2){super(),f(this,\"_colors\"),f(this,\"_initialDistance\"),f(this,\"_distanceIncrement\"),f(this,\"_histogram\"),f(this,\"_distance\"),this._distance=t,this._colors=e,this._histogram=new kt(r,e),this._initialDistance=.01,this._distanceIncrement=.005}sample(t){this._histogram.sample(t)}*quantize(){const t=this._histogram.getImportanceSortedColorsIDXI32();if(0===t.length)throw new Error(\"No colors in image\");yield*this._buildPalette(t)}*_buildPalette(t){const e=new ut,r=e.getPointContainer().getPointArray(),i=new Array(t.length);for(let e=0;e<t.length;e++)r.push(ht.createByUint32(t[e])),i[e]=1;const n=r.length,a=[];let o=n,s=this._initialDistance;const h=new gt(o-this._colors,99);for(;o>this._colors;){a.length=0;for(let t=0;t<n;t++){if(h.shouldNotify(n-o)&&(yield{progress:h.progress}),0===i[t])continue;const e=r[t];for(let h=t+1;h<n;h++){if(0===i[h])continue;const t=r[h],n=this._distance.calculateNormalized(e,t);n<s&&(a.push(new St(h,t,n)),i[h]=0,o--)}}s+=o>3*this._colors?this._initialDistance:this._distanceIncrement}if(o<this._colors){A(a,((t,e)=>e.distance-t.distance));let t=0;for(;o<this._colors&&t<a.length;)i[a[t].index]=1,o++,t++}let l=r.length;for(let t=l-1;t>=0;t--)0===i[t]&&(t!==l-1&&(r[t]=r[l-1]),--l);r.length=l,e.sort(),yield{palette:e,progress:100}}};function At(t){const e=[];for(let r=0;r<t;r++)e[r]=0;return e}function It(t,e,r,i){const n=new Array(t);for(let a=0;a<t;a++){n[a]=new Array(e);for(let t=0;t<e;t++){n[a][t]=new Array(r);for(let e=0;e<r;e++){n[a][t][e]=new Array(i);for(let r=0;r<i;r++)n[a][t][e][r]=0}}}return n}function Bt(t,e,r){const i=new Array(t);for(let n=0;n<t;n++){i[n]=new Array(e);for(let t=0;t<e;t++){i[n][t]=new Array(r);for(let e=0;e<r;e++)i[n][t][e]=0}}return i}function Tt(t,e,r,i,n){for(let a=0;a<e;a++){t[a]=[];for(let e=0;e<r;e++){t[a][e]=[];for(let r=0;r<i;r++)t[a][e][r]=n}}}function Rt(t,e,r){for(let i=0;i<e;i++)t[i]=r}var Pt=class{constructor(){f(this,\"redMinimum\"),f(this,\"redMaximum\"),f(this,\"greenMinimum\"),f(this,\"greenMaximum\"),f(this,\"blueMinimum\"),f(this,\"blueMaximum\"),f(this,\"volume\"),f(this,\"alphaMinimum\"),f(this,\"alphaMaximum\")}},Ot=class extends st{constructor(t,e=256,r=5){super(),f(this,\"_reds\"),f(this,\"_greens\"),f(this,\"_blues\"),f(this,\"_alphas\"),f(this,\"_sums\"),f(this,\"_weights\"),f(this,\"_momentsRed\"),f(this,\"_momentsGreen\"),f(this,\"_momentsBlue\"),f(this,\"_momentsAlpha\"),f(this,\"_moments\"),f(this,\"_table\"),f(this,\"_pixels\"),f(this,\"_cubes\"),f(this,\"_colors\"),f(this,\"_significantBitsPerChannel\"),f(this,\"_maxSideIndex\"),f(this,\"_alphaMaxSideIndex\"),f(this,\"_sideSize\"),f(this,\"_alphaSideSize\"),f(this,\"_distance\"),this._distance=t,this._setQuality(r),this._initialize(e)}sample(t){const e=t.getPointArray();for(let t=0,r=e.length;t<r;t++)this._addColor(e[t]);this._pixels=this._pixels.concat(e)}*quantize(){yield*this._preparePalette();const t=new ut;for(let e=0;e<this._colors;e++)if(this._sums[e]>0){const r=this._sums[e],i=this._reds[e]/r,n=this._greens[e]/r,a=this._blues[e]/r,o=this._alphas[e]/r,s=ht.createByRGBA(0|i,0|n,0|a,0|o);t.add(s)}t.sort(),yield{palette:t,progress:100}}*_preparePalette(){yield*this._calculateMoments();let t=0;const e=At(this._colors);for(let r=1;r<this._colors;++r){this._cut(this._cubes[t],this._cubes[r])?(e[t]=this._cubes[t].volume>1?this._calculateVariance(this._cubes[t]):0,e[r]=this._cubes[r].volume>1?this._calculateVariance(this._cubes[r]):0):(e[t]=0,r--),t=0;let i=e[0];for(let n=1;n<=r;++n)e[n]>i&&(i=e[n],t=n);if(i<=0){this._colors=r+1;break}}const r=[],i=[],n=[],a=[];for(let t=0;t<this._colors;++t){const e=Ot._volume(this._cubes[t],this._weights);e>0?(r[t]=Ot._volume(this._cubes[t],this._momentsRed)/e|0,i[t]=Ot._volume(this._cubes[t],this._momentsGreen)/e|0,n[t]=Ot._volume(this._cubes[t],this._momentsBlue)/e|0,a[t]=Ot._volume(this._cubes[t],this._momentsAlpha)/e|0):(r[t]=0,i[t]=0,n[t]=0,a[t]=0)}this._reds=At(this._colors+1),this._greens=At(this._colors+1),this._blues=At(this._colors+1),this._alphas=At(this._colors+1),this._sums=At(this._colors+1);for(let t=0,e=this._pixels.length;t<e;t++){const e=this._pixels[t];let o=-1,s=Number.MAX_VALUE;for(let t=0;t<this._colors;t++){const h=r[t],l=i[t],f=n[t],u=a[t],c=this._distance.calculateRaw(h,l,f,u,e.r,e.g,e.b,e.a);c<s&&(s=c,o=t)}this._reds[o]+=e.r,this._greens[o]+=e.g,this._blues[o]+=e.b,this._alphas[o]+=e.a,this._sums[o]++}}_addColor(t){const e=8-this._significantBitsPerChannel,r=1+(t.r>>e),i=1+(t.g>>e),n=1+(t.b>>e),a=1+(t.a>>e);this._weights[a][r][i][n]++,this._momentsRed[a][r][i][n]+=t.r,this._momentsGreen[a][r][i][n]+=t.g,this._momentsBlue[a][r][i][n]+=t.b,this._momentsAlpha[a][r][i][n]+=t.a,this._moments[a][r][i][n]+=this._table[t.r]+this._table[t.g]+this._table[t.b]+this._table[t.a]}*_calculateMoments(){const t=[],e=[],r=[],i=[],n=[],a=[],o=Bt(this._sideSize,this._sideSize,this._sideSize),s=Bt(this._sideSize,this._sideSize,this._sideSize),h=Bt(this._sideSize,this._sideSize,this._sideSize),l=Bt(this._sideSize,this._sideSize,this._sideSize),f=Bt(this._sideSize,this._sideSize,this._sideSize),u=Bt(this._sideSize,this._sideSize,this._sideSize);let c=0;const d=new gt(this._alphaMaxSideIndex*this._maxSideIndex,99);for(let p=1;p<=this._alphaMaxSideIndex;++p){Tt(o,this._sideSize,this._sideSize,this._sideSize,0),Tt(s,this._sideSize,this._sideSize,this._sideSize,0),Tt(h,this._sideSize,this._sideSize,this._sideSize,0),Tt(l,this._sideSize,this._sideSize,this._sideSize,0),Tt(f,this._sideSize,this._sideSize,this._sideSize,0),Tt(u,this._sideSize,this._sideSize,this._sideSize,0);for(let m=1;m<=this._maxSideIndex;++m,++c){d.shouldNotify(c)&&(yield{progress:d.progress}),Rt(t,this._sideSize,0),Rt(e,this._sideSize,0),Rt(r,this._sideSize,0),Rt(i,this._sideSize,0),Rt(n,this._sideSize,0),Rt(a,this._sideSize,0);for(let c=1;c<=this._maxSideIndex;++c){let d=0,g=0,b=0,_=0,y=0,w=0;for(let v=1;v<=this._maxSideIndex;++v)d+=this._weights[p][m][c][v],g+=this._momentsRed[p][m][c][v],b+=this._momentsGreen[p][m][c][v],_+=this._momentsBlue[p][m][c][v],y+=this._momentsAlpha[p][m][c][v],w+=this._moments[p][m][c][v],t[v]+=d,e[v]+=g,r[v]+=b,i[v]+=_,n[v]+=y,a[v]+=w,o[m][c][v]=o[m-1][c][v]+t[v],s[m][c][v]=s[m-1][c][v]+e[v],h[m][c][v]=h[m-1][c][v]+r[v],l[m][c][v]=l[m-1][c][v]+i[v],f[m][c][v]=f[m-1][c][v]+n[v],u[m][c][v]=u[m-1][c][v]+a[v],this._weights[p][m][c][v]=this._weights[p-1][m][c][v]+o[m][c][v],this._momentsRed[p][m][c][v]=this._momentsRed[p-1][m][c][v]+s[m][c][v],this._momentsGreen[p][m][c][v]=this._momentsGreen[p-1][m][c][v]+h[m][c][v],this._momentsBlue[p][m][c][v]=this._momentsBlue[p-1][m][c][v]+l[m][c][v],this._momentsAlpha[p][m][c][v]=this._momentsAlpha[p-1][m][c][v]+f[m][c][v],this._moments[p][m][c][v]=this._moments[p-1][m][c][v]+u[m][c][v]}}}}static _volumeFloat(t,e){return e[t.alphaMaximum][t.redMaximum][t.greenMaximum][t.blueMaximum]-e[t.alphaMaximum][t.redMaximum][t.greenMinimum][t.blueMaximum]-e[t.alphaMaximum][t.redMinimum][t.greenMaximum][t.blueMaximum]+e[t.alphaMaximum][t.redMinimum][t.greenMinimum][t.blueMaximum]-e[t.alphaMinimum][t.redMaximum][t.greenMaximum][t.blueMaximum]+e[t.alphaMinimum][t.redMaximum][t.greenMinimum][t.blueMaximum]+e[t.alphaMinimum][t.redMinimum][t.greenMaximum][t.blueMaximum]-e[t.alphaMinimum][t.redMinimum][t.greenMinimum][t.blueMaximum]-(e[t.alphaMaximum][t.redMaximum][t.greenMaximum][t.blueMinimum]-e[t.alphaMinimum][t.redMaximum][t.greenMaximum][t.blueMinimum]-e[t.alphaMaximum][t.redMaximum][t.greenMinimum][t.blueMinimum]+e[t.alphaMinimum][t.redMaximum][t.greenMinimum][t.blueMinimum]-e[t.alphaMaximum][t.redMinimum][t.greenMaximum][t.blueMinimum]+e[t.alphaMinimum][t.redMinimum][t.greenMaximum][t.blueMinimum]+e[t.alphaMaximum][t.redMinimum][t.greenMinimum][t.blueMinimum]-e[t.alphaMinimum][t.redMinimum][t.greenMinimum][t.blueMinimum])}static _volume(t,e){return 0|Ot._volumeFloat(t,e)}static _top(t,e,r,i){let n;switch(e){case Ot._alpha:n=i[r][t.redMaximum][t.greenMaximum][t.blueMaximum]-i[r][t.redMaximum][t.greenMinimum][t.blueMaximum]-i[r][t.redMinimum][t.greenMaximum][t.blueMaximum]+i[r][t.redMinimum][t.greenMinimum][t.blueMaximum]-(i[r][t.redMaximum][t.greenMaximum][t.blueMinimum]-i[r][t.redMaximum][t.greenMinimum][t.blueMinimum]-i[r][t.redMinimum][t.greenMaximum][t.blueMinimum]+i[r][t.redMinimum][t.greenMinimum][t.blueMinimum]);break;case Ot._red:n=i[t.alphaMaximum][r][t.greenMaximum][t.blueMaximum]-i[t.alphaMaximum][r][t.greenMinimum][t.blueMaximum]-i[t.alphaMinimum][r][t.greenMaximum][t.blueMaximum]+i[t.alphaMinimum][r][t.greenMinimum][t.blueMaximum]-(i[t.alphaMaximum][r][t.greenMaximum][t.blueMinimum]-i[t.alphaMaximum][r][t.greenMinimum][t.blueMinimum]-i[t.alphaMinimum][r][t.greenMaximum][t.blueMinimum]+i[t.alphaMinimum][r][t.greenMinimum][t.blueMinimum]);break;case Ot._green:n=i[t.alphaMaximum][t.redMaximum][r][t.blueMaximum]-i[t.alphaMaximum][t.redMinimum][r][t.blueMaximum]-i[t.alphaMinimum][t.redMaximum][r][t.blueMaximum]+i[t.alphaMinimum][t.redMinimum][r][t.blueMaximum]-(i[t.alphaMaximum][t.redMaximum][r][t.blueMinimum]-i[t.alphaMaximum][t.redMinimum][r][t.blueMinimum]-i[t.alphaMinimum][t.redMaximum][r][t.blueMinimum]+i[t.alphaMinimum][t.redMinimum][r][t.blueMinimum]);break;case Ot._blue:n=i[t.alphaMaximum][t.redMaximum][t.greenMaximum][r]-i[t.alphaMaximum][t.redMaximum][t.greenMinimum][r]-i[t.alphaMaximum][t.redMinimum][t.greenMaximum][r]+i[t.alphaMaximum][t.redMinimum][t.greenMinimum][r]-(i[t.alphaMinimum][t.redMaximum][t.greenMaximum][r]-i[t.alphaMinimum][t.redMaximum][t.greenMinimum][r]-i[t.alphaMinimum][t.redMinimum][t.greenMaximum][r]+i[t.alphaMinimum][t.redMinimum][t.greenMinimum][r]);break;default:throw new Error(\"impossible\")}return 0|n}static _bottom(t,e,r){switch(e){case Ot._alpha:return-r[t.alphaMinimum][t.redMaximum][t.greenMaximum][t.blueMaximum]+r[t.alphaMinimum][t.redMaximum][t.greenMinimum][t.blueMaximum]+r[t.alphaMinimum][t.redMinimum][t.greenMaximum][t.blueMaximum]-r[t.alphaMinimum][t.redMinimum][t.greenMinimum][t.blueMaximum]-(-r[t.alphaMinimum][t.redMaximum][t.greenMaximum][t.blueMinimum]+r[t.alphaMinimum][t.redMaximum][t.greenMinimum][t.blueMinimum]+r[t.alphaMinimum][t.redMinimum][t.greenMaximum][t.blueMinimum]-r[t.alphaMinimum][t.redMinimum][t.greenMinimum][t.blueMinimum]);case Ot._red:return-r[t.alphaMaximum][t.redMinimum][t.greenMaximum][t.blueMaximum]+r[t.alphaMaximum][t.redMinimum][t.greenMinimum][t.blueMaximum]+r[t.alphaMinimum][t.redMinimum][t.greenMaximum][t.blueMaximum]-r[t.alphaMinimum][t.redMinimum][t.greenMinimum][t.blueMaximum]-(-r[t.alphaMaximum][t.redMinimum][t.greenMaximum][t.blueMinimum]+r[t.alphaMaximum][t.redMinimum][t.greenMinimum][t.blueMinimum]+r[t.alphaMinimum][t.redMinimum][t.greenMaximum][t.blueMinimum]-r[t.alphaMinimum][t.redMinimum][t.greenMinimum][t.blueMinimum]);case Ot._green:return-r[t.alphaMaximum][t.redMaximum][t.greenMinimum][t.blueMaximum]+r[t.alphaMaximum][t.redMinimum][t.greenMinimum][t.blueMaximum]+r[t.alphaMinimum][t.redMaximum][t.greenMinimum][t.blueMaximum]-r[t.alphaMinimum][t.redMinimum][t.greenMinimum][t.blueMaximum]-(-r[t.alphaMaximum][t.redMaximum][t.greenMinimum][t.blueMinimum]+r[t.alphaMaximum][t.redMinimum][t.greenMinimum][t.blueMinimum]+r[t.alphaMinimum][t.redMaximum][t.greenMinimum][t.blueMinimum]-r[t.alphaMinimum][t.redMinimum][t.greenMinimum][t.blueMinimum]);case Ot._blue:return-r[t.alphaMaximum][t.redMaximum][t.greenMaximum][t.blueMinimum]+r[t.alphaMaximum][t.redMaximum][t.greenMinimum][t.blueMinimum]+r[t.alphaMaximum][t.redMinimum][t.greenMaximum][t.blueMinimum]-r[t.alphaMaximum][t.redMinimum][t.greenMinimum][t.blueMinimum]-(-r[t.alphaMinimum][t.redMaximum][t.greenMaximum][t.blueMinimum]+r[t.alphaMinimum][t.redMaximum][t.greenMinimum][t.blueMinimum]+r[t.alphaMinimum][t.redMinimum][t.greenMaximum][t.blueMinimum]-r[t.alphaMinimum][t.redMinimum][t.greenMinimum][t.blueMinimum]);default:return 0}}_calculateVariance(t){const e=Ot._volume(t,this._momentsRed),r=Ot._volume(t,this._momentsGreen),i=Ot._volume(t,this._momentsBlue),n=Ot._volume(t,this._momentsAlpha);return Ot._volumeFloat(t,this._moments)-(e*e+r*r+i*i+n*n)/Ot._volume(t,this._weights)}_maximize(t,e,r,i,n,a,o,s,h){const l=0|Ot._bottom(t,e,this._momentsRed),f=0|Ot._bottom(t,e,this._momentsGreen),u=0|Ot._bottom(t,e,this._momentsBlue),c=0|Ot._bottom(t,e,this._momentsAlpha),d=0|Ot._bottom(t,e,this._weights);let p=0,m=-1;for(let g=r;g<i;++g){let r=l+Ot._top(t,e,g,this._momentsRed),i=f+Ot._top(t,e,g,this._momentsGreen),b=u+Ot._top(t,e,g,this._momentsBlue),_=c+Ot._top(t,e,g,this._momentsAlpha),y=d+Ot._top(t,e,g,this._weights);if(0!==y){let t=r*r+i*i+b*b+_*_,e=t/y;r=n-r,i=a-i,b=o-b,_=s-_,y=h-y,0!==y&&(t=r*r+i*i+b*b+_*_,e+=t/y,e>p&&(p=e,m=g))}}return{max:p,position:m}}_cut(t,e){let r;const i=Ot._volume(t,this._momentsRed),n=Ot._volume(t,this._momentsGreen),a=Ot._volume(t,this._momentsBlue),o=Ot._volume(t,this._momentsAlpha),s=Ot._volume(t,this._weights),h=this._maximize(t,Ot._red,t.redMinimum+1,t.redMaximum,i,n,a,o,s),l=this._maximize(t,Ot._green,t.greenMinimum+1,t.greenMaximum,i,n,a,o,s),f=this._maximize(t,Ot._blue,t.blueMinimum+1,t.blueMaximum,i,n,a,o,s),u=this._maximize(t,Ot._alpha,t.alphaMinimum+1,t.alphaMaximum,i,n,a,o,s);if(u.max>=h.max&&u.max>=l.max&&u.max>=f.max){if(r=Ot._alpha,u.position<0)return!1}else r=h.max>=u.max&&h.max>=l.max&&h.max>=f.max?Ot._red:l.max>=u.max&&l.max>=h.max&&l.max>=f.max?Ot._green:Ot._blue;switch(e.redMaximum=t.redMaximum,e.greenMaximum=t.greenMaximum,e.blueMaximum=t.blueMaximum,e.alphaMaximum=t.alphaMaximum,r){case Ot._red:e.redMinimum=t.redMaximum=h.position,e.greenMinimum=t.greenMinimum,e.blueMinimum=t.blueMinimum,e.alphaMinimum=t.alphaMinimum;break;case Ot._green:e.greenMinimum=t.greenMaximum=l.position,e.redMinimum=t.redMinimum,e.blueMinimum=t.blueMinimum,e.alphaMinimum=t.alphaMinimum;break;case Ot._blue:e.blueMinimum=t.blueMaximum=f.position,e.redMinimum=t.redMinimum,e.greenMinimum=t.greenMinimum,e.alphaMinimum=t.alphaMinimum;break;case Ot._alpha:e.alphaMinimum=t.alphaMaximum=u.position,e.blueMinimum=t.blueMinimum,e.redMinimum=t.redMinimum,e.greenMinimum=t.greenMinimum}return t.volume=(t.redMaximum-t.redMinimum)*(t.greenMaximum-t.greenMinimum)*(t.blueMaximum-t.blueMinimum)*(t.alphaMaximum-t.alphaMinimum),e.volume=(e.redMaximum-e.redMinimum)*(e.greenMaximum-e.greenMinimum)*(e.blueMaximum-e.blueMinimum)*(e.alphaMaximum-e.alphaMinimum),!0}_initialize(t){this._colors=t,this._cubes=[];for(let e=0;e<t;e++)this._cubes[e]=new Pt;this._cubes[0].redMinimum=0,this._cubes[0].greenMinimum=0,this._cubes[0].blueMinimum=0,this._cubes[0].alphaMinimum=0,this._cubes[0].redMaximum=this._maxSideIndex,this._cubes[0].greenMaximum=this._maxSideIndex,this._cubes[0].blueMaximum=this._maxSideIndex,this._cubes[0].alphaMaximum=this._alphaMaxSideIndex,this._weights=It(this._alphaSideSize,this._sideSize,this._sideSize,this._sideSize),this._momentsRed=It(this._alphaSideSize,this._sideSize,this._sideSize,this._sideSize),this._momentsGreen=It(this._alphaSideSize,this._sideSize,this._sideSize,this._sideSize),this._momentsBlue=It(this._alphaSideSize,this._sideSize,this._sideSize,this._sideSize),this._momentsAlpha=It(this._alphaSideSize,this._sideSize,this._sideSize,this._sideSize),this._moments=It(this._alphaSideSize,this._sideSize,this._sideSize,this._sideSize),this._table=[];for(let t=0;t<256;++t)this._table[t]=t*t;this._pixels=[]}_setQuality(t=5){this._significantBitsPerChannel=t,this._maxSideIndex=1<<this._significantBitsPerChannel,this._alphaMaxSideIndex=this._maxSideIndex,this._sideSize=this._maxSideIndex+1,this._alphaSideSize=this._alphaMaxSideIndex+1}},Lt=Ot;f(Lt,\"_alpha\",3),f(Lt,\"_red\",2),f(Lt,\"_green\",1),f(Lt,\"_blue\",0);var Ct={};h(Ct,{AbstractImageQuantizer:()=>Ut,ErrorDiffusionArray:()=>Nt,ErrorDiffusionArrayKernel:()=>Dt,ErrorDiffusionRiemersma:()=>Ht,NearestColor:()=>zt});var Ut=class{quantizeSync(t,e){for(const r of this.quantize(t,e))if(r.pointContainer)return r.pointContainer;throw new Error(\"unreachable\")}},zt=class extends Ut{constructor(t){super(),f(this,\"_distance\"),this._distance=t}*quantize(t,e){const r=t.getPointArray(),i=t.getWidth(),n=t.getHeight(),a=new gt(n,99);for(let t=0;t<n;t++){a.shouldNotify(t)&&(yield{progress:a.progress});for(let n=0,a=t*i;n<i;n++,a++){const t=r[a];t.from(e.getNearestColor(this._distance,t))}}yield{pointContainer:t,progress:100}}},Dt=(t=>(t[t.FloydSteinberg=0]=\"FloydSteinberg\",t[t.FalseFloydSteinberg=1]=\"FalseFloydSteinberg\",t[t.Stucki=2]=\"Stucki\",t[t.Atkinson=3]=\"Atkinson\",t[t.Jarvis=4]=\"Jarvis\",t[t.Burkes=5]=\"Burkes\",t[t.Sierra=6]=\"Sierra\",t[t.TwoSierra=7]=\"TwoSierra\",t[t.SierraLite=8]=\"SierraLite\",t))(Dt||{}),Nt=class extends Ut{constructor(t,e,r=!0,i=0,n=!1){super(),f(this,\"_minColorDistance\"),f(this,\"_serpentine\"),f(this,\"_kernel\"),f(this,\"_calculateErrorLikeGIMP\"),f(this,\"_distance\"),this._setKernel(e),this._distance=t,this._minColorDistance=i,this._serpentine=r,this._calculateErrorLikeGIMP=n}*quantize(t,e){const r=t.getPointArray(),i=new ht,n=t.getWidth(),a=t.getHeight(),o=[];let s=1,h=1;for(const t of this._kernel){const e=t[2]+1;h<e&&(h=e)}for(let t=0;t<h;t++)this._fillErrorLine(o[t]=[],n);const l=new gt(a,99);for(let t=0;t<a;t++){l.shouldNotify(t)&&(yield{progress:l.progress}),this._serpentine&&(s*=-1);const h=t*n,f=1===s?0:n-1,u=1===s?n:-1;this._fillErrorLine(o[0],n),o.push(o.shift());const c=o[0];for(let l=f,d=h+f;l!==u;l+=s,d+=s){const h=r[d],f=c[l];i.from(h);const u=ht.createByRGBA(S(h.r+f[0]),S(h.g+f[1]),S(h.b+f[2]),S(h.a+f[3])),p=e.getNearestColor(this._distance,u);if(h.from(p),this._minColorDistance&&this._distance.calculateNormalized(i,p)<this._minColorDistance)continue;let m,g,b,_;this._calculateErrorLikeGIMP?(m=u.r-p.r,g=u.g-p.g,b=u.b-p.b,_=u.a-p.a):(m=i.r-p.r,g=i.g-p.g,b=i.b-p.b,_=i.a-p.a);const y=1===s?0:this._kernel.length-1,w=1===s?this._kernel.length:-1;for(let e=y;e!==w;e+=s){const r=this._kernel[e][1]*s,i=this._kernel[e][2];if(r+l>=0&&r+l<n&&i+t>=0&&i+t<a){const t=this._kernel[e][0],n=o[i][r+l];n[0]+=m*t,n[1]+=g*t,n[2]+=b*t,n[3]+=_*t}}}}yield{pointContainer:t,progress:100}}_fillErrorLine(t,e){t.length>e&&(t.length=e);const r=t.length;for(let e=0;e<r;e++){const r=t[e];r[0]=r[1]=r[2]=r[3]=0}for(let i=r;i<e;i++)t[i]=[0,0,0,0]}_setKernel(t){switch(t){case 0:this._kernel=[[7/16,1,0],[3/16,-1,1],[5/16,0,1],[1/16,1,1]];break;case 1:this._kernel=[[3/8,1,0],[3/8,0,1],[2/8,1,1]];break;case 2:this._kernel=[[8/42,1,0],[4/42,2,0],[2/42,-2,1],[4/42,-1,1],[8/42,0,1],[4/42,1,1],[2/42,2,1],[1/42,-2,2],[2/42,-1,2],[4/42,0,2],[2/42,1,2],[1/42,2,2]];break;case 3:this._kernel=[[1/8,1,0],[1/8,2,0],[1/8,-1,1],[1/8,0,1],[1/8,1,1],[1/8,0,2]];break;case 4:this._kernel=[[7/48,1,0],[5/48,2,0],[3/48,-2,1],[5/48,-1,1],[7/48,0,1],[5/48,1,1],[3/48,2,1],[1/48,-2,2],[3/48,-1,2],[5/48,0,2],[3/48,1,2],[1/48,2,2]];break;case 5:this._kernel=[[.25,1,0],[4/32,2,0],[2/32,-2,1],[4/32,-1,1],[.25,0,1],[4/32,1,1],[2/32,2,1]];break;case 6:this._kernel=[[5/32,1,0],[3/32,2,0],[2/32,-2,1],[4/32,-1,1],[5/32,0,1],[4/32,1,1],[2/32,2,1],[2/32,-1,2],[3/32,0,2],[2/32,1,2]];break;case 7:this._kernel=[[.25,1,0],[3/16,2,0],[1/16,-2,1],[2/16,-1,1],[3/16,0,1],[2/16,1,1],[1/16,2,1]];break;case 8:this._kernel=[[.5,1,0],[1/4,-1,1],[1/4,0,1]];break;default:throw new Error(`ErrorDiffusionArray: unknown kernel = ${t}`)}}};function*Ft(t,e,r){const i=Math.max(t,e),n={width:t,height:e,level:Math.floor(Math.log(i)/Math.log(2)+1),callback:r,tracker:new gt(t*e,99),index:0,x:0,y:0};yield*jt(n,1),Gt(n,0)}function*jt(t,e){if(!(t.level<1)){switch(t.tracker.shouldNotify(t.index)&&(yield{progress:t.tracker.progress}),t.level--,e){case 2:yield*jt(t,1),Gt(t,3),yield*jt(t,2),Gt(t,4),yield*jt(t,2),Gt(t,2),yield*jt(t,4);break;case 3:yield*jt(t,4),Gt(t,2),yield*jt(t,3),Gt(t,1),yield*jt(t,3),Gt(t,3),yield*jt(t,1);break;case 1:yield*jt(t,2),Gt(t,4),yield*jt(t,1),Gt(t,3),yield*jt(t,1),Gt(t,1),yield*jt(t,3);break;case 4:yield*jt(t,3),Gt(t,1),yield*jt(t,4),Gt(t,2),yield*jt(t,4),Gt(t,4),yield*jt(t,2)}t.level++}}function Gt(t,e){switch(t.x>=0&&t.x<t.width&&t.y>=0&&t.y<t.height&&(t.callback(t.x,t.y),t.index++),e){case 2:t.x--;break;case 3:t.x++;break;case 1:t.y--;break;case 4:t.y++}}var Ht=class extends Ut{constructor(t,e=16,r=1){super(),f(this,\"_distance\"),f(this,\"_weights\"),f(this,\"_errorQueueSize\"),this._distance=t,this._errorQueueSize=e,this._weights=Ht._createWeights(r,e)}*quantize(t,e){const r=t.getPointArray(),i=t.getWidth(),n=t.getHeight(),a=[];let o=0;for(let t=0;t<this._errorQueueSize;t++)a[t]={r:0,g:0,b:0,a:0};yield*Ft(i,n,((t,n)=>{const s=r[t+n*i];let{r:h,g:l,b:f,a:u}=s;for(let t=0;t<this._errorQueueSize;t++){const e=this._weights[t],r=a[(t+o)%this._errorQueueSize];h+=r.r*e,l+=r.g*e,f+=r.b*e,u+=r.a*e}const c=ht.createByRGBA(S(h),S(l),S(f),S(u)),d=e.getNearestColor(this._distance,c);o=(o+1)%this._errorQueueSize;const p=(o+this._errorQueueSize-1)%this._errorQueueSize;a[p].r=s.r-d.r,a[p].g=s.g-d.g,a[p].b=s.b-d.b,a[p].a=s.a-d.a,s.from(d)})),yield{pointContainer:t,progress:100}}static _createWeights(t,e){const r=[],i=Math.exp(Math.log(e)/(e-1));for(let n=0,a=1;n<e;n++)r[n]=(a+.5|0)/e*t,a*=i;return r}},Wt={};h(Wt,{ssim:()=>Yt});var qt=.01,Zt=.03;function Yt(t,e){if(t.getHeight()!==e.getHeight()||t.getWidth()!==e.getWidth())throw new Error(\"Images have different sizes!\");const r=(255*qt)**2,i=(255*Zt)**2;let n=0,a=0;return function(t,e,r){const i=t.getWidth(),n=t.getHeight();for(let a=0;a<n;a+=8)for(let o=0;o<i;o+=8){const s=Math.min(8,i-o),h=Math.min(8,n-a),l=Vt(t,o,a,s,h),f=Vt(e,o,a,s,h);r(l,f,Xt(l),Xt(f))}}(t,e,((t,e,o,s)=>{let h=0,l=0,f=0;for(let r=0;r<t.length;r++)l+=(t[r]-o)**2,f+=(e[r]-s)**2,h+=(t[r]-o)*(e[r]-s);const u=t.length-1;l/=u,f/=u,h/=u,a+=(2*o*s+r)*(2*h+i)/((o**2+s**2+r)*(l+f+i)),n++})),a/n}function Vt(t,e,r,i,n){const a=t.getPointArray(),o=[];let s=0;for(let h=r;h<r+n;h++){const r=h*t.getWidth();for(let t=e;t<e+i;t++){const e=a[r+t];o[s]=.2126*e.r+.7152*e.g+.0722*e.b,s++}}return o}function Xt(t){let e=0;for(const r of t)e+=r;return e/t.length}var Jt=\"function\"==typeof setImmediate?setImmediate:void 0!==i&&\"function\"==typeof(null==i?void 0:i.nextTick)?t=>i.nextTick(t):t=>setTimeout(t,0);function Qt(t,{colorDistanceFormula:e,paletteQuantization:r,colors:i}={}){const n=ie(ee(e),r,i);return t.forEach((t=>n.sample(t))),n.quantizeSync()}async function Kt(t,{colorDistanceFormula:e,paletteQuantization:r,colors:i,onProgress:n}={}){return new Promise(((a,o)=>{const s=ie(ee(e),r,i);let h;t.forEach((t=>s.sample(t)));const l=s.quantize(),f=()=>{try{const t=l.next();t.done?a(h):(t.value.palette&&(h=t.value.palette),n&&n(t.value.progress),Jt(f))}catch(t){o(t)}};Jt(f)}))}function $t(t,e,{colorDistanceFormula:r,imageQuantization:i}={}){return re(ee(r),i).quantizeSync(t,e)}async function te(t,e,{colorDistanceFormula:r,imageQuantization:i,onProgress:n}={}){return new Promise(((a,o)=>{let s;const h=re(ee(r),i).quantize(t,e),l=()=>{try{const t=h.next();t.done?a(s):(t.value.pointContainer&&(s=t.value.pointContainer),n&&n(t.value.progress),Jt(l))}catch(t){o(t)}};Jt(l)}))}function ee(t=\"euclidean-bt709\"){switch(t){case\"cie94-graphic-arts\":return new Y;case\"cie94-textiles\":return new Z;case\"ciede2000\":return new X;case\"color-metric\":return new J;case\"euclidean\":return new K;case\"euclidean-bt709\":return new $;case\"euclidean-bt709-noalpha\":return new tt;case\"manhattan\":return new rt;case\"manhattan-bt709\":return new nt;case\"manhattan-nommyde\":return new it;case\"pngquant\":return new at;default:throw new Error(`Unknown colorDistanceFormula ${t}`)}}function re(t,e=\"floyd-steinberg\"){switch(e){case\"nearest\":return new zt(t);case\"riemersma\":return new Ht(t);case\"floyd-steinberg\":return new Nt(t,0);case\"false-floyd-steinberg\":return new Nt(t,1);case\"stucki\":return new Nt(t,2);case\"atkinson\":return new Nt(t,3);case\"jarvis\":return new Nt(t,4);case\"burkes\":return new Nt(t,5);case\"sierra\":return new Nt(t,6);case\"two-sierra\":return new Nt(t,7);case\"sierra-lite\":return new Nt(t,8);default:throw new Error(`Unknown imageQuantization ${e}`)}}function ie(t,e=\"wuquant\",r=256){switch(e){case\"neuquant\":return new yt(t,r);case\"rgbquant\":return new Mt(t,r);case\"wuquant\":return new Lt(t,r);case\"neuquant-float\":return new xt(t,r);default:throw new Error(`Unknown paletteQuantization ${e}`)}}t.exports=l(u)}},__webpack_module_cache__={};function __nested_webpack_require_505601__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var r=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t](r,r.exports,__nested_webpack_require_505601__),r.exports}__nested_webpack_require_505601__.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return __nested_webpack_require_505601__.d(e,{a:e}),e},__nested_webpack_require_505601__.d=(t,e)=>{for(var r in e)__nested_webpack_require_505601__.o(e,r)&&!__nested_webpack_require_505601__.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},__nested_webpack_require_505601__.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(t){if(\"object\"==typeof window)return window}}(),__nested_webpack_require_505601__.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),__nested_webpack_require_505601__.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})};var __webpack_exports__={};(()=>{\"use strict\";var t={};__nested_webpack_require_505601__.r(t),__nested_webpack_require_505601__.d(t,{AUTO:()=>et,BLEND_ADD:()=>ut,BLEND_DARKEN:()=>pt,BLEND_DESTINATION_OVER:()=>lt,BLEND_DIFFERENCE:()=>bt,BLEND_EXCLUSION:()=>_t,BLEND_HARDLIGHT:()=>gt,BLEND_LIGHTEN:()=>mt,BLEND_MULTIPLY:()=>ft,BLEND_OVERLAY:()=>dt,BLEND_SCREEN:()=>ct,BLEND_SOURCE_OVER:()=>ht,EDGE_CROP:()=>vt,EDGE_EXTEND:()=>yt,EDGE_WRAP:()=>wt,HORIZONTAL_ALIGN_CENTER:()=>it,HORIZONTAL_ALIGN_LEFT:()=>rt,HORIZONTAL_ALIGN_RIGHT:()=>nt,VERTICAL_ALIGN_BOTTOM:()=>st,VERTICAL_ALIGN_MIDDLE:()=>ot,VERTICAL_ALIGN_TOP:()=>at});var e={};__nested_webpack_require_505601__.r(e),__nested_webpack_require_505601__.d(e,{add:()=>St,darken:()=>It,difference:()=>Rt,dstOver:()=>Et,exclusion:()=>Pt,hardLight:()=>Tt,lighten:()=>Bt,multiply:()=>kt,overlay:()=>At,screen:()=>Mt,srcOver:()=>xt});var r=__nested_webpack_require_505601__(5546),i=__nested_webpack_require_505601__.n(r),n=__nested_webpack_require_505601__(1023),a=__nested_webpack_require_505601__.n(n),o=__nested_webpack_require_505601__(2699),s=__nested_webpack_require_505601__.n(o);function h(t){if(void 0===t)return!1;if(\"function\"!=typeof t)throw new TypeError(\"Callback must be a function\");return!0}function l(t,e){if(\"string\"==typeof t&&(t=new Error(t)),\"function\"==typeof e)return e.call(this,t);throw t}function f(t,e,r,i,n,a){e=Math.round(e),r=Math.round(r),i=Math.round(i),n=Math.round(n);for(let o=r;o<r+n;o++)for(let r=e;r<e+i;r++){const e=t.bitmap.width*o+r<<2;a.call(t,r,o,e)}return t}var u=__nested_webpack_require_505601__(236),c=__nested_webpack_require_505601__.n(u),d=__nested_webpack_require_505601__(1294),p=__nested_webpack_require_505601__.n(d);function m(t){return m=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},m(t)}var g=/^\\s+/,b=/\\s+$/;function _(t,e){if(e=e||{},(t=t||\"\")instanceof _)return t;if(!(this instanceof _))return new _(t,e);var r=function(t){var e,r,i,n={r:0,g:0,b:0},a=1,o=null,s=null,h=null,l=!1,f=!1;return\"string\"==typeof t&&(t=function(t){t=t.replace(g,\"\").replace(b,\"\").toLowerCase();var e,r=!1;if(C[t])t=C[t],r=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};return(e=V.rgb.exec(t))?{r:e[1],g:e[2],b:e[3]}:(e=V.rgba.exec(t))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=V.hsl.exec(t))?{h:e[1],s:e[2],l:e[3]}:(e=V.hsla.exec(t))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=V.hsv.exec(t))?{h:e[1],s:e[2],v:e[3]}:(e=V.hsva.exec(t))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=V.hex8.exec(t))?{r:F(e[1]),g:F(e[2]),b:F(e[3]),a:W(e[4]),format:r?\"name\":\"hex8\"}:(e=V.hex6.exec(t))?{r:F(e[1]),g:F(e[2]),b:F(e[3]),format:r?\"name\":\"hex\"}:(e=V.hex4.exec(t))?{r:F(e[1]+\"\"+e[1]),g:F(e[2]+\"\"+e[2]),b:F(e[3]+\"\"+e[3]),a:W(e[4]+\"\"+e[4]),format:r?\"name\":\"hex8\"}:!!(e=V.hex3.exec(t))&&{r:F(e[1]+\"\"+e[1]),g:F(e[2]+\"\"+e[2]),b:F(e[3]+\"\"+e[3]),format:r?\"name\":\"hex\"}}(t)),\"object\"==m(t)&&(X(t.r)&&X(t.g)&&X(t.b)?(e=t.r,r=t.g,i=t.b,n={r:255*D(e,255),g:255*D(r,255),b:255*D(i,255)},l=!0,f=\"%\"===String(t.r).substr(-1)?\"prgb\":\"rgb\"):X(t.h)&&X(t.s)&&X(t.v)?(o=G(t.s),s=G(t.v),n=function(t,e,r){t=6*D(t,360),e=D(e,100),r=D(r,100);var i=Math.floor(t),n=t-i,a=r*(1-e),o=r*(1-n*e),s=r*(1-(1-n)*e),h=i%6;return{r:255*[r,o,a,a,s,r][h],g:255*[s,r,r,o,a,a][h],b:255*[a,a,s,r,r,o][h]}}(t.h,o,s),l=!0,f=\"hsv\"):X(t.h)&&X(t.s)&&X(t.l)&&(o=G(t.s),h=G(t.l),n=function(t,e,r){var i,n,a;function o(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=D(t,360),e=D(e,100),r=D(r,100),0===e)i=n=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,h=2*r-s;i=o(h,s,t+1/3),n=o(h,s,t),a=o(h,s,t-1/3)}return{r:255*i,g:255*n,b:255*a}}(t.h,o,h),l=!0,f=\"hsl\"),t.hasOwnProperty(\"a\")&&(a=t.a)),a=z(a),{ok:l,format:t.format||f,r:Math.min(255,Math.max(n.r,0)),g:Math.min(255,Math.max(n.g,0)),b:Math.min(255,Math.max(n.b,0)),a}}(t);this._originalInput=t,this._r=r.r,this._g=r.g,this._b=r.b,this._a=r.a,this._roundA=Math.round(100*this._a)/100,this._format=e.format||r.format,this._gradientType=e.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=r.ok}function y(t,e,r){t=D(t,255),e=D(e,255),r=D(r,255);var i,n,a=Math.max(t,e,r),o=Math.min(t,e,r),s=(a+o)/2;if(a==o)i=n=0;else{var h=a-o;switch(n=s>.5?h/(2-a-o):h/(a+o),a){case t:i=(e-r)/h+(e<r?6:0);break;case e:i=(r-t)/h+2;break;case r:i=(t-e)/h+4}i/=6}return{h:i,s:n,l:s}}function w(t,e,r){t=D(t,255),e=D(e,255),r=D(r,255);var i,n,a=Math.max(t,e,r),o=Math.min(t,e,r),s=a,h=a-o;if(n=0===a?0:h/a,a==o)i=0;else{switch(a){case t:i=(e-r)/h+(e<r?6:0);break;case e:i=(r-t)/h+2;break;case r:i=(t-e)/h+4}i/=6}return{h:i,s:n,v:s}}function v(t,e,r,i){var n=[j(Math.round(t).toString(16)),j(Math.round(e).toString(16)),j(Math.round(r).toString(16))];return i&&n[0].charAt(0)==n[0].charAt(1)&&n[1].charAt(0)==n[1].charAt(1)&&n[2].charAt(0)==n[2].charAt(1)?n[0].charAt(0)+n[1].charAt(0)+n[2].charAt(0):n.join(\"\")}function x(t,e,r,i){return[j(H(i)),j(Math.round(t).toString(16)),j(Math.round(e).toString(16)),j(Math.round(r).toString(16))].join(\"\")}function E(t,e){e=0===e?0:e||10;var r=_(t).toHsl();return r.s-=e/100,r.s=N(r.s),_(r)}function k(t,e){e=0===e?0:e||10;var r=_(t).toHsl();return r.s+=e/100,r.s=N(r.s),_(r)}function S(t){return _(t).desaturate(100)}function M(t,e){e=0===e?0:e||10;var r=_(t).toHsl();return r.l+=e/100,r.l=N(r.l),_(r)}function A(t,e){e=0===e?0:e||10;var r=_(t).toRgb();return r.r=Math.max(0,Math.min(255,r.r-Math.round(-e/100*255))),r.g=Math.max(0,Math.min(255,r.g-Math.round(-e/100*255))),r.b=Math.max(0,Math.min(255,r.b-Math.round(-e/100*255))),_(r)}function I(t,e){e=0===e?0:e||10;var r=_(t).toHsl();return r.l-=e/100,r.l=N(r.l),_(r)}function B(t,e){var r=_(t).toHsl(),i=(r.h+e)%360;return r.h=i<0?360+i:i,_(r)}function T(t){var e=_(t).toHsl();return e.h=(e.h+180)%360,_(e)}function R(t,e){if(isNaN(e)||e<=0)throw new Error(\"Argument to polyad must be a positive number\");for(var r=_(t).toHsl(),i=[_(t)],n=360/e,a=1;a<e;a++)i.push(_({h:(r.h+a*n)%360,s:r.s,l:r.l}));return i}function P(t){var e=_(t).toHsl(),r=e.h;return[_(t),_({h:(r+72)%360,s:e.s,l:e.l}),_({h:(r+216)%360,s:e.s,l:e.l})]}function O(t,e,r){e=e||6,r=r||30;var i=_(t).toHsl(),n=360/r,a=[_(t)];for(i.h=(i.h-(n*e>>1)+720)%360;--e;)i.h=(i.h+n)%360,a.push(_(i));return a}function L(t,e){e=e||6;for(var r=_(t).toHsv(),i=r.h,n=r.s,a=r.v,o=[],s=1/e;e--;)o.push(_({h:i,s:n,v:a})),a=(a+s)%1;return o}_.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var t,e,r,i=this.toRgb();return t=i.r/255,e=i.g/255,r=i.b/255,.2126*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.7152*(e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.0722*(r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4))},setAlpha:function(t){return this._a=z(t),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var t=w(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=w(this._r,this._g,this._b),e=Math.round(360*t.h),r=Math.round(100*t.s),i=Math.round(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+r+\"%, \"+i+\"%)\":\"hsva(\"+e+\", \"+r+\"%, \"+i+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=y(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=y(this._r,this._g,this._b),e=Math.round(360*t.h),r=Math.round(100*t.s),i=Math.round(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+r+\"%, \"+i+\"%)\":\"hsla(\"+e+\", \"+r+\"%, \"+i+\"%, \"+this._roundA+\")\"},toHex:function(t){return v(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(t){return function(t,e,r,i,n){var a=[j(Math.round(t).toString(16)),j(Math.round(e).toString(16)),j(Math.round(r).toString(16)),j(H(i))];return n&&a[0].charAt(0)==a[0].charAt(1)&&a[1].charAt(0)==a[1].charAt(1)&&a[2].charAt(0)==a[2].charAt(1)&&a[3].charAt(0)==a[3].charAt(1)?a[0].charAt(0)+a[1].charAt(0)+a[2].charAt(0)+a[3].charAt(0):a.join(\"\")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return\"#\"+this.toHex8(t)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+Math.round(this._r)+\", \"+Math.round(this._g)+\", \"+Math.round(this._b)+\")\":\"rgba(\"+Math.round(this._r)+\", \"+Math.round(this._g)+\", \"+Math.round(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:Math.round(100*D(this._r,255))+\"%\",g:Math.round(100*D(this._g,255))+\"%\",b:Math.round(100*D(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+Math.round(100*D(this._r,255))+\"%, \"+Math.round(100*D(this._g,255))+\"%, \"+Math.round(100*D(this._b,255))+\"%)\":\"rgba(\"+Math.round(100*D(this._r,255))+\"%, \"+Math.round(100*D(this._g,255))+\"%, \"+Math.round(100*D(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":!(this._a<1)&&(U[v(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e=\"#\"+x(this._r,this._g,this._b,this._a),r=e,i=this._gradientType?\"GradientType = 1, \":\"\";if(t){var n=_(t);r=\"#\"+x(n._r,n._g,n._b,n._a)}return\"progid:DXImageTransform.Microsoft.gradient(\"+i+\"startColorstr=\"+e+\",endColorstr=\"+r+\")\"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,i=this._a<1&&this._a>=0;return e||!i||\"hex\"!==t&&\"hex6\"!==t&&\"hex3\"!==t&&\"hex4\"!==t&&\"hex8\"!==t&&\"name\"!==t?(\"rgb\"===t&&(r=this.toRgbString()),\"prgb\"===t&&(r=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(r=this.toHexString()),\"hex3\"===t&&(r=this.toHexString(!0)),\"hex4\"===t&&(r=this.toHex8String(!0)),\"hex8\"===t&&(r=this.toHex8String()),\"name\"===t&&(r=this.toName()),\"hsl\"===t&&(r=this.toHslString()),\"hsv\"===t&&(r=this.toHsvString()),r||this.toHexString()):\"name\"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return _(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(M,arguments)},brighten:function(){return this._applyModification(A,arguments)},darken:function(){return this._applyModification(I,arguments)},desaturate:function(){return this._applyModification(E,arguments)},saturate:function(){return this._applyModification(k,arguments)},greyscale:function(){return this._applyModification(S,arguments)},spin:function(){return this._applyModification(B,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(O,arguments)},complement:function(){return this._applyCombination(T,arguments)},monochromatic:function(){return this._applyCombination(L,arguments)},splitcomplement:function(){return this._applyCombination(P,arguments)},triad:function(){return this._applyCombination(R,[3])},tetrad:function(){return this._applyCombination(R,[4])}},_.fromRatio=function(t,e){if(\"object\"==m(t)){var r={};for(var i in t)t.hasOwnProperty(i)&&(r[i]=\"a\"===i?t[i]:G(t[i]));t=r}return _(t,e)},_.equals=function(t,e){return!(!t||!e)&&_(t).toRgbString()==_(e).toRgbString()},_.random=function(){return _.fromRatio({r:Math.random(),g:Math.random(),b:Math.random()})},_.mix=function(t,e,r){r=0===r?0:r||50;var i=_(t).toRgb(),n=_(e).toRgb(),a=r/100;return _({r:(n.r-i.r)*a+i.r,g:(n.g-i.g)*a+i.g,b:(n.b-i.b)*a+i.b,a:(n.a-i.a)*a+i.a})},_.readability=function(t,e){var r=_(t),i=_(e);return(Math.max(r.getLuminance(),i.getLuminance())+.05)/(Math.min(r.getLuminance(),i.getLuminance())+.05)},_.isReadable=function(t,e,r){var i,n,a,o,s,h=_.readability(t,e);switch(n=!1,(a=r,\"AA\"!==(o=((a=a||{level:\"AA\",size:\"small\"}).level||\"AA\").toUpperCase())&&\"AAA\"!==o&&(o=\"AA\"),\"small\"!==(s=(a.size||\"small\").toLowerCase())&&\"large\"!==s&&(s=\"small\"),i={level:o,size:s}).level+i.size){case\"AAsmall\":case\"AAAlarge\":n=h>=4.5;break;case\"AAlarge\":n=h>=3;break;case\"AAAsmall\":n=h>=7}return n},_.mostReadable=function(t,e,r){var i,n,a,o,s=null,h=0;n=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var l=0;l<e.length;l++)(i=_.readability(t,e[l]))>h&&(h=i,s=_(e[l]));return _.isReadable(t,s,{level:a,size:o})||!n?s:(r.includeFallbackColors=!1,_.mostReadable(t,[\"#fff\",\"#000\"],r))};var C=_.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},U=_.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(C);function z(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function D(t,e){(function(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)})(t)&&(t=\"100%\");var r=function(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}(t);return t=Math.min(e,Math.max(0,parseFloat(t))),r&&(t=parseInt(t*e,10)/100),Math.abs(t-e)<1e-6?1:t%e/parseFloat(e)}function N(t){return Math.min(1,Math.max(0,t))}function F(t){return parseInt(t,16)}function j(t){return 1==t.length?\"0\"+t:\"\"+t}function G(t){return t<=1&&(t=100*t+\"%\"),t}function H(t){return Math.round(255*parseFloat(t)).toString(16)}function W(t){return F(t)/255}var q,Z,Y,V=(Z=\"[\\\\s|\\\\(]+(\"+(q=\"(?:[-\\\\+]?\\\\d*\\\\.\\\\d+%?)|(?:[-\\\\+]?\\\\d+%?)\")+\")[,|\\\\s]+(\"+q+\")[,|\\\\s]+(\"+q+\")\\\\s*\\\\)?\",Y=\"[\\\\s|\\\\(]+(\"+q+\")[,|\\\\s]+(\"+q+\")[,|\\\\s]+(\"+q+\")[,|\\\\s]+(\"+q+\")\\\\s*\\\\)?\",{CSS_UNIT:new RegExp(q),rgb:new RegExp(\"rgb\"+Z),rgba:new RegExp(\"rgba\"+Y),hsl:new RegExp(\"hsl\"+Z),hsla:new RegExp(\"hsla\"+Y),hsv:new RegExp(\"hsv\"+Z),hsva:new RegExp(\"hsva\"+Y),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function X(t){return!!V.CSS_UNIT.exec(t)}function J(t,e){this.size=this.size||t,this.smallerSize=this.smallerSize||e,function(t){for(let e=1;e<t;e++)K[e]=1;K[0]=1/Math.sqrt(2)}(this.size)}function Q(t){const e={};return e.r=Math.floor(t/Math.pow(256,3)),e.g=Math.floor((t-e.r*Math.pow(256,3))/Math.pow(256,2)),e.b=Math.floor((t-e.r*Math.pow(256,3)-e.g*Math.pow(256,2))/Math.pow(256,1)),e.a=Math.floor((t-e.r*Math.pow(256,3)-e.g*Math.pow(256,2)-e.b*Math.pow(256,1))/Math.pow(256,0)),e}J.prototype.size=32,J.prototype.smallerSize=8,J.prototype.distance=function(t,e){let r=0;for(let i=0;i<t.length;i++)t[i]!==e[i]&&r++;return r/t.length},J.prototype.getHash=function(t){(t=t.clone().resize(this.size,this.size)).grayscale();const e=[];for(let r=0;r<t.bitmap.width;r++){e[r]=[];for(let i=0;i<t.bitmap.height;i++)e[r][i]=Q(t.getPixelColor(r,i)).b}const r=function(t,e){const r=e,i=[];for(let e=0;e<r;e++){i[e]=[];for(let n=0;n<r;n++){let a=0;for(let i=0;i<r;i++)for(let o=0;o<r;o++)a+=Math.cos((2*i+1)/(2*r)*e*Math.PI)*Math.cos((2*o+1)/(2*r)*n*Math.PI)*t[i][o];a*=K[e]*K[n]/4,i[e][n]=a}}return i}(e,this.size);let i=0;for(let t=0;t<this.smallerSize;t++)for(let e=0;e<this.smallerSize;e++)i+=r[t][e];const n=i/(this.smallerSize*this.smallerSize);let a=\"\";for(let t=0;t<this.smallerSize;t++)for(let e=0;e<this.smallerSize;e++)a+=r[t][e]>n?\"1\":\"0\";return a};const K=[],$=J;__nested_webpack_require_505601__(9307);const tt=(t,e)=>{let{url:r,...i}=t;fetch(r,i).then((t=>{if(t.ok)return t.arrayBuffer().catch((t=>{throw new Error(`Response is not a buffer for url ${r}. Error: ${t.message}`)}));throw new Error(`HTTP Status ${t.status} for url ${r}`)})).then((t=>e(null,t))).catch((t=>e(t)))},et=-1,rt=1,it=2,nt=4,at=8,ot=16,st=32,ht=\"srcOver\",lt=\"dstOver\",ft=\"multiply\",ut=\"add\",ct=\"screen\",dt=\"overlay\",pt=\"darken\",mt=\"lighten\",gt=\"hardLight\",bt=\"difference\",_t=\"exclusion\",yt=1,wt=2,vt=3;function xt(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a;return{r:(t.r*t.a+e.r*e.a*(1-t.a))/i,g:(t.g*t.a+e.g*e.a*(1-t.a))/i,b:(t.b*t.a+e.b*e.a*(1-t.a))/i,a:i}}function Et(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a;return{r:(e.r*e.a+t.r*t.a*(1-e.a))/i,g:(e.g*e.a+t.g*t.a*(1-e.a))/i,b:(e.b*e.a+t.b*t.a*(1-e.a))/i,a:i}}function kt(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a,n=t.r*t.a,a=t.g*t.a,o=t.b*t.a,s=e.r*e.a,h=e.g*e.a,l=e.b*e.a;return{r:(n*s+n*(1-e.a)+s*(1-t.a))/i,g:(a*h+a*(1-e.a)+h*(1-t.a))/i,b:(o*l+o*(1-e.a)+l*(1-t.a))/i,a:i}}function St(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a,n=t.r*t.a,a=t.g*t.a,o=t.b*t.a;return{r:(n+e.r*e.a)/i,g:(a+e.g*e.a)/i,b:(o+e.b*e.a)/i,a:i}}function Mt(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a,n=t.r*t.a,a=t.g*t.a,o=t.b*t.a,s=e.r*e.a,h=e.g*e.a,l=e.b*e.a;return{r:(n*e.a+s*t.a-n*s+n*(1-e.a)+s*(1-t.a))/i,g:(a*e.a+h*t.a-a*h+a*(1-e.a)+h*(1-t.a))/i,b:(o*e.a+l*t.a-o*l+o*(1-e.a)+l*(1-t.a))/i,a:i}}function At(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a,n=t.r*t.a,a=t.g*t.a,o=t.b*t.a,s=e.r*e.a,h=e.g*e.a,l=e.b*e.a;return{r:(2*s<=e.a?2*n*s+n*(1-e.a)+s*(1-t.a):n*(1+e.a)+s*(1+t.a)-2*s*n-e.a*t.a)/i,g:(2*h<=e.a?2*a*h+a*(1-e.a)+h*(1-t.a):a*(1+e.a)+h*(1+t.a)-2*h*a-e.a*t.a)/i,b:(2*l<=e.a?2*o*l+o*(1-e.a)+l*(1-t.a):o*(1+e.a)+l*(1+t.a)-2*l*o-e.a*t.a)/i,a:i}}function It(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a,n=t.r*t.a,a=t.g*t.a,o=t.b*t.a,s=e.r*e.a,h=e.g*e.a,l=e.b*e.a;return{r:(Math.min(n*e.a,s*t.a)+n*(1-e.a)+s*(1-t.a))/i,g:(Math.min(a*e.a,h*t.a)+a*(1-e.a)+h*(1-t.a))/i,b:(Math.min(o*e.a,l*t.a)+o*(1-e.a)+l*(1-t.a))/i,a:i}}function Bt(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a,n=t.r*t.a,a=t.g*t.a,o=t.b*t.a,s=e.r*e.a,h=e.g*e.a,l=e.b*e.a;return{r:(Math.max(n*e.a,s*t.a)+n*(1-e.a)+s*(1-t.a))/i,g:(Math.max(a*e.a,h*t.a)+a*(1-e.a)+h*(1-t.a))/i,b:(Math.max(o*e.a,l*t.a)+o*(1-e.a)+l*(1-t.a))/i,a:i}}function Tt(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a,n=t.r*t.a,a=t.g*t.a,o=t.b*t.a,s=e.r*e.a,h=e.g*e.a,l=e.b*e.a;return{r:(2*n<=t.a?2*n*s+n*(1-e.a)+s*(1-t.a):n*(1+e.a)+s*(1+t.a)-2*s*n-e.a*t.a)/i,g:(2*a<=t.a?2*a*h+a*(1-e.a)+h*(1-t.a):a*(1+e.a)+h*(1+t.a)-2*h*a-e.a*t.a)/i,b:(2*o<=t.a?2*o*l+o*(1-e.a)+l*(1-t.a):o*(1+e.a)+l*(1+t.a)-2*l*o-e.a*t.a)/i,a:i}}function Rt(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a,n=t.r*t.a,a=t.g*t.a,o=t.b*t.a,s=e.r*e.a,h=e.g*e.a,l=e.b*e.a;return{r:(n+s-2*Math.min(n*e.a,s*t.a))/i,g:(a+h-2*Math.min(a*e.a,h*t.a))/i,b:(o+l-2*Math.min(o*e.a,l*t.a))/i,a:i}}function Pt(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;t.a*=r;const i=e.a+t.a-e.a*t.a,n=t.r*t.a,a=t.g*t.a,o=t.b*t.a,s=e.r*e.a,h=e.g*e.a,l=e.b*e.a;return{r:(n*e.a+s*t.a-2*n*s+n*(1-e.a)+s*(1-t.a))/i,g:(a*e.a+h*t.a-2*a*h+a*(1-e.a)+h*(1-t.a))/i,b:(o*e.a+l*t.a-2*o*l+o*(1-e.a)+l*(1-t.a))/i,a:i}}const Ot=function(t,e){for(var r=arguments.length,i=new Array(r>2?r-2:0),n=2;n<r;n++)i[n-2]=arguments[n];return new Promise(((r,n)=>{i.push(((t,e)=>{t&&n(t),r(e)})),t.bind(e)(...i)}))},Lt={},Ct=(t,e)=>{Lt[t]=e},Ut=t=>{const e=t.split(\"/\").slice(-1);var r;return(r=e[e.length-1].split(\".\").pop(),Object.entries(Lt).find((t=>t[1].includes(r)))||[])[0]};var zt=__nested_webpack_require_505601__(5025),Dt=__nested_webpack_require_505601__.n(zt),Nt=__nested_webpack_require_505601__(6551),Ft=__nested_webpack_require_505601__.n(Nt),jt=__nested_webpack_require_505601__(8834).lW;function Gt(t){return t._exif&&t._exif.tags&&t._exif.tags.Orientation||1}async function Ht(t,e,r){const i=await async function(t,e){const r=await Dt().fromBuffer(t);return r?r.mime:e?Ut(e):null}(t,e);if(\"string\"!=typeof i)return r(new Error(\"Could not find MIME for Buffer <\"+e+\">\"));this._originalMime=i.toLowerCase();try{const e=this.getMIME();if(!this.constructor.decoders[e])return l.call(this,\"Unsupported MIME type: \"+e,r);this.bitmap=this.constructor.decoders[e](t)}catch(t){return r.call(this,t,this)}try{this._exif=Ft().create(t).parse(),function(t){if(Gt(t)<2)return;const e=function(t){const e=t.getWidth(),r=t.getHeight();switch(Gt(t)){case 1:default:return null;case 2:return function(t,r){return[e-t-1,r]};case 3:return function(t,i){return[e-t-1,r-i-1]};case 4:return function(t,e){return[t,r-e-1]};case 5:return function(t,e){return[e,t]};case 6:return function(t,e){return[e,r-t-1]};case 7:return function(t,i){return[e-i-1,r-t-1]};case 8:return function(t,r){return[e-r-1,t]}}}(t),r=Gt(t)>4;!function(t,e,r,i){const n=t.bitmap.data,a=t.bitmap.width,o=jt.alloc(n.length);for(let t=0;t<e;t++)for(let s=0;s<r;s++){const[r,h]=i(t,s),l=e*s+t<<2,f=a*h+r<<2,u=n.readUInt32BE(f);o.writeUInt32BE(u,l)}t.bitmap.data=o,t.bitmap.width=e,t.bitmap.height=r}(t,r?t.bitmap.height:t.bitmap.width,r?t.bitmap.width:t.bitmap.height,e)}(this)}catch(t){}return r.call(this,null,this),this}function Wt(t,e){if(t===et&&(t=this.getMIME()),\"string\"!=typeof t)return l.call(this,\"mime must be a string\",e);if(\"function\"!=typeof e)return l.call(this,\"cb must be a function\",e);if(t=t.toLowerCase(),this._rgba&&this.constructor.hasAlpha[t]?this.bitmap.data=jt.from(this.bitmap.data):this.bitmap.data=function(t,e){return new t(e.bitmap.width,e.bitmap.height,e._background).composite(e,0,0).bitmap}(this.constructor,this).data,!this.constructor.encoders[t])return l.call(this,\"Unsupported MIME type: \"+t,e);{const r=this.constructor.encoders[t](this);r instanceof Promise?r.then((t=>{e.call(this,null,t)})):e.call(this,null,r)}return this}function qt(t){return Ot(Wt,this,t)}var Zt=__nested_webpack_require_505601__(8834).lW;function Yt(t,e,r){return(e=function(t){var e=function(t,e){if(\"object\"!=typeof t||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,\"string\");if(\"object\"!=typeof i)return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(t)}(t);return\"symbol\"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}const Vt=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_\",Xt=[NaN,NaN];for(let t=2;t<65;t++){const e=c()(c().BIN,Vt.slice(0,t))(new Array(65).join(\"1\"));Xt.push(e.length)}function Jt(){}function Qt(t){return Object.prototype.toString.call(t).toLowerCase().indexOf(\"arraybuffer\")>-1}function Kt(t){const e=Zt.alloc(t.byteLength),r=new Uint8Array(t);for(let t=0;t<e.length;++t)e[t]=r[t];return e}function $t(t,e){tt(t,((r,i)=>r?e(r):\"object\"==typeof i&&Zt.isBuffer(i)?e(null,i):\"object\"==typeof i&&Qt(i)?e(null,Kt(i)):new Error(`Could not load Buffer from <${t.url}>`)))}const te={data:null,width:null,height:null};class ee extends(s()){constructor(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];super(),Yt(this,\"bitmap\",te),Yt(this,\"_background\",0),Yt(this,\"_originalMime\",ee.MIME_PNG),Yt(this,\"_exif\",null),Yt(this,\"_rgba\",!0),Yt(this,\"writeAsync\",(t=>Ot(this.write,this,t))),Yt(this,\"getBase64Async\",(t=>Ot(this.getBase64,this,t))),Yt(this,\"getBuffer\",Wt),Yt(this,\"getBufferAsync\",qt),Yt(this,\"getPixelColour\",this.getPixelColor),Yt(this,\"setPixelColour\",this.setPixelColor);const n=this;let a=Jt;function o(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];const[i]=e;(i||{}).methodName=\"constructor\",setTimeout((()=>{i&&a===Jt?n.emitError(\"constructor\",i):i||n.emitMulti(\"constructor\",\"initialized\"),a.call(n,...e)}),1)}if(Qt(e[0])&&(e[0]=Kt(e[0])),\"number\"==typeof e[0]&&\"number\"==typeof e[1]||parseInt(e[0],10)&&parseInt(e[1],10)){const t=parseInt(e[0],10),r=parseInt(e[1],10);if(a=e[2],\"number\"==typeof e[2]&&(this._background=e[2],a=e[3]),\"string\"==typeof e[2]&&(this._background=ee.cssColorToHex(e[2]),a=e[3]),void 0===a&&(a=Jt),\"function\"!=typeof a)return l.call(this,\"cb must be a function\",o);this.bitmap={data:Zt.alloc(t*r*4),width:t,height:r};for(let t=0;t<this.bitmap.data.length;t+=4)this.bitmap.data.writeUInt32BE(this._background,t);o(null,this)}else if(\"object\"==typeof e[0]&&e[0].url){if(a=e[1]||Jt,\"function\"!=typeof a)return l.call(this,\"cb must be a function\",o);$t(e[0],((t,r)=>{if(t)return l.call(this,t,o);this.parseBitmap(r,e[0].url,o)}))}else if(e[0]instanceof ee){const[t]=e;if(a=e[1],void 0===a&&(a=Jt),\"function\"!=typeof a)return l.call(this,\"cb must be a function\",o);this.bitmap={data:Zt.from(t.bitmap.data),width:t.bitmap.width,height:t.bitmap.height},this._quality=t._quality,this._deflateLevel=t._deflateLevel,this._deflateStrategy=t._deflateStrategy,this._filterType=t._filterType,this._rgba=t._rgba,this._background=t._background,this._originalMime=t._originalMime,o(null,this)}else if((s=e[0])&&\"object\"==typeof s&&\"number\"==typeof s.width&&\"number\"==typeof s.height&&(Zt.isBuffer(s.data)||s.data instanceof Uint8Array||\"function\"==typeof Uint8ClampedArray&&s.data instanceof Uint8ClampedArray)&&(s.data.length===s.width*s.height*4||s.data.length===s.width*s.height*3)){const[t]=e;a=e[1]||Jt;const r=t.width*t.height*4===t.data.length?Zt.from(t.data):function(t){if(t.length%3!=0)throw new Error(\"Buffer length is incorrect\");const e=Zt.allocUnsafe(t.length/3*4);let r=0;for(let i=0;i<t.length;i++)e[r]=t[i],(i+1)%3==0&&(e[++r]=255),r++;return e}(t.data);this.bitmap={data:r,width:t.width,height:t.height},o(null,this)}else if(\"string\"==typeof e[0]){const t=e[0];if(a=e[1],void 0===a&&(a=Jt),\"function\"!=typeof a)return l.call(this,\"cb must be a function\",o);!function(t,e){i()&&\"function\"==typeof i().readFile&&!t.match(/^(http|ftp)s?:\\/\\/./)?i().readFile(t,e):$t({url:t},e)}(t,((e,r)=>{if(e)return l.call(this,e,o);this.parseBitmap(r,t,o)}))}else if(\"object\"==typeof e[0]&&Zt.isBuffer(e[0])){const t=e[0];if(a=e[1],\"function\"!=typeof a)return l.call(this,\"cb must be a function\",o);this.parseBitmap(t,null,o)}else{a=e[e.length-1],\"function\"!=typeof a&&(a=e[e.length-2],\"function\"!=typeof a&&(a=Jt));const t=ee.__extraConstructors.find((t=>t.test(...e)));if(!t)return l.call(this,\"No matching constructor overloading was found. Please see the docs for how to call the Jimp constructor.\",o);new Promise(((r,i)=>{t.run.call(this,r,i,...e)})).then((()=>o(null,this))).catch(o)}var s}parseBitmap(t,e,r){Ht.call(this,t,null,r)}rgba(t,e){return\"boolean\"!=typeof t?l.call(this,\"bool must be a boolean, true for RGBA or false for RGB\",e):(this._rgba=t,h(e)&&e.call(this,null,this),this)}emitMulti(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r=Object.assign(r,{methodName:t,eventName:e}),this.emit(\"any\",r),t&&this.emit(t,r),this.emit(e,r)}emitError(t,e){this.emitMulti(t,\"error\",e)}getHeight(){return this.bitmap.height}getWidth(){return this.bitmap.width}inspect(){return\"<Jimp \"+(this.bitmap===te?\"pending...\":this.bitmap.width+\"x\"+this.bitmap.height)+\">\"}toString(){return\"[object Jimp]\"}getMIME(){return this._originalMime||ee.MIME_PNG}getExtension(){const t=this.getMIME();return(Lt[t.toLowerCase()]||[])[0]}write(t,e){if(!i()||!i().createWriteStream)throw new Error(\"Cant access the filesystem. You can use the getBase64 method.\");if(\"string\"!=typeof t)return l.call(this,\"path must be a string\",e);if(void 0===e&&(e=Jt),\"function\"!=typeof e)return l.call(this,\"cb must be a function\",e);const r=Ut(t)||this.getMIME(),n=a().parse(t);return n.dir&&i().mkdirSync(n.dir,{recursive:!0}),this.getBuffer(r,((r,n)=>{if(r)return l.call(this,r,e);const a=i().createWriteStream(t);a.on(\"open\",(()=>{a.write(n),a.end()})).on(\"error\",(t=>l.call(this,t,e))),a.on(\"finish\",(()=>{e.call(this,null,this)}))})),this}getBase64(t,e){return t===ee.AUTO&&(t=this.getMIME()),\"string\"!=typeof t?l.call(this,\"mime must be a string\",e):\"function\"!=typeof e?l.call(this,\"cb must be a function\",e):(this.getBuffer(t,(function(r,i){if(r)return l.call(this,r,e);const n=\"data:\"+t+\";base64,\"+i.toString(\"base64\");e.call(this,null,n)})),this)}hash(t,e){if(\"function\"==typeof(t=t||64)&&(e=t,t=64),\"number\"!=typeof t)return l.call(this,\"base must be a number\",e);if(t<2||t>64)return l.call(this,\"base must be a number between 2 and 64\",e);let r=this.pHash();for(r=c()(c().BIN,Vt.slice(0,t))(r);r.length<Xt[t];)r=\"0\"+r;return h(e)&&e.call(this,null,r),r}pHash(){return(new $).getHash(this)}distanceFromHash(t){const e=new $,r=e.getHash(this);return e.distance(r,t)}getPixelIndex(t,e,r,i){let n,a;if(\"function\"==typeof r&&void 0===i&&(i=r,r=null),r||(r=ee.EDGE_EXTEND),\"number\"!=typeof t||\"number\"!=typeof e)return l.call(this,\"x and y must be numbers\",i);n=t=Math.round(t),a=e=Math.round(e),r===ee.EDGE_EXTEND&&(t<0&&(n=0),t>=this.bitmap.width&&(n=this.bitmap.width-1),e<0&&(a=0),e>=this.bitmap.height&&(a=this.bitmap.height-1)),r===ee.EDGE_WRAP&&(t<0&&(n=this.bitmap.width+t),t>=this.bitmap.width&&(n=t%this.bitmap.width),e<0&&(a=this.bitmap.height+e),e>=this.bitmap.height&&(a=e%this.bitmap.height));let o=this.bitmap.width*a+n<<2;return(n<0||n>=this.bitmap.width)&&(o=-1),(a<0||a>=this.bitmap.height)&&(o=-1),h(i)&&i.call(this,null,o),o}getPixelColor(t,e,r){if(\"number\"!=typeof t||\"number\"!=typeof e)return l.call(this,\"x and y must be numbers\",r);t=Math.round(t),e=Math.round(e);const i=this.getPixelIndex(t,e),n=this.bitmap.data.readUInt32BE(i);return h(r)&&r.call(this,null,n),n}setPixelColor(t,e,r,i){if(\"number\"!=typeof t||\"number\"!=typeof e||\"number\"!=typeof r)return l.call(this,\"hex, x and y must be numbers\",i);e=Math.round(e),r=Math.round(r);const n=this.getPixelIndex(e,r);return this.bitmap.data.writeUInt32BE(t,n),h(i)&&i.call(this,null,this),this}hasAlpha(){for(let t=0;t<this.bitmap.height;t++)for(let e=0;e<this.bitmap.width;e++){const r=this.bitmap.width*t+e<<2;if(255!==this.bitmap.data[r+3])return!0}return!1}scanIterator(t,e,r,i){return\"number\"!=typeof t||\"number\"!=typeof e?l.call(this,\"x and y must be numbers\"):\"number\"!=typeof r||\"number\"!=typeof i?l.call(this,\"w and h must be numbers\"):function*(t,e,r,i,n){e=Math.round(e),r=Math.round(r),i=Math.round(i),n=Math.round(n);for(let a=r;a<r+n;a++)for(let r=e;r<e+i;r++){const e=t.bitmap.width*a+r<<2;yield{x:r,y:a,idx:e,image:t}}}(this,t,e,r,i)}}function re(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ee;Object.entries(t).forEach((t=>{let[r,i]=t;e[r]=i}))}function ie(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ee;Object.entries(t).forEach((t=>{let[r,i]=t;e.prototype[r]=i}))}function ne(t,e,r){const i=\"before-\"+e,n=e.replace(/e$/,\"\")+\"ed\";ee.prototype[t]=function(){let e;for(var a=arguments.length,o=new Array(a),s=0;s<a;s++)o[s]=arguments[s];const h=o[r.length-1],l=this;let f;\"function\"==typeof h?(e=function(){for(var e=arguments.length,r=new Array(e),i=0;i<e;i++)r[i]=arguments[i];const[a,o]=r;a?l.emitError(t,a):l.emitMulti(t,n,{[t]:o}),h.apply(this,r)},o[o.length-1]=e):e=!1,this.emitMulti(t,i);try{f=r.apply(this,o),e||this.emitMulti(t,n,{[t]:f})}catch(e){e.methodName=t,this.emitError(t,e)}return f},ee.prototype[t+\"Quiet\"]=r}function ae(t,e){ne(t,\"change\",e)}re(t),ie({composite:function(t,r,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=arguments.length>4?arguments[4]:void 0;if(\"function\"==typeof n&&(a=n,n={}),!(t instanceof this.constructor))return l.call(this,\"The source must be a Jimp image\",a);if(\"number\"!=typeof r||\"number\"!=typeof i)return l.call(this,\"x and y must be numbers\",a);let{mode:o,opacitySource:s,opacityDest:f}=n;o||(o=ht),(\"number\"!=typeof s||s<0||s>1)&&(s=1),(\"number\"!=typeof f||f<0||f>1)&&(f=1);const u=e[o];r=Math.round(r),i=Math.round(i);const c=this;return 1!==f&&c.opacity(f),t.scanQuiet(0,0,t.bitmap.width,t.bitmap.height,(function(t,e,n){const a=c.getPixelIndex(r+t,i+e,vt);if(-1===a)return;const o=u({r:this.bitmap.data[n+0]/255,g:this.bitmap.data[n+1]/255,b:this.bitmap.data[n+2]/255,a:this.bitmap.data[n+3]/255},{r:c.bitmap.data[a+0]/255,g:c.bitmap.data[a+1]/255,b:c.bitmap.data[a+2]/255,a:c.bitmap.data[a+3]/255},s);c.bitmap.data[a+0]=this.constructor.limit255(255*o.r),c.bitmap.data[a+1]=this.constructor.limit255(255*o.g),c.bitmap.data[a+2]=this.constructor.limit255(255*o.b),c.bitmap.data[a+3]=this.constructor.limit255(255*o.a)})),h(a)&&a.call(this,null,this),this}}),ee.__extraConstructors=[],ee.appendConstructorOption=function(t,e,r){ee.__extraConstructors.push({name:t,test:e,run:r})},ee.read=function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return new Promise(((t,r)=>{new ee(...e,((e,i)=>{e?r(e):t(i)}))}))},ee.create=ee.read,ee.rgbaToInt=function(t,e,r,i,n){if(\"number\"!=typeof t||\"number\"!=typeof e||\"number\"!=typeof r||\"number\"!=typeof i)return l.call(this,\"r, g, b and a must be numbers\",n);if(t<0||t>255)return l.call(this,\"r must be between 0 and 255\",n);if((e<0||e>255)&&l.call(this,\"g must be between 0 and 255\",n),r<0||r>255)return l.call(this,\"b must be between 0 and 255\",n);if(i<0||i>255)return l.call(this,\"a must be between 0 and 255\",n);t=Math.round(t),r=Math.round(r),e=Math.round(e),i=Math.round(i);const a=t*Math.pow(256,3)+e*Math.pow(256,2)+r*Math.pow(256,1)+i*Math.pow(256,0);return h(n)&&n.call(this,null,a),a},ee.intToRGBA=function(t,e){if(\"number\"!=typeof t)return l.call(this,\"i must be a number\",e);const r={};return r.r=Math.floor(t/Math.pow(256,3)),r.g=Math.floor((t-r.r*Math.pow(256,3))/Math.pow(256,2)),r.b=Math.floor((t-r.r*Math.pow(256,3)-r.g*Math.pow(256,2))/Math.pow(256,1)),r.a=Math.floor((t-r.r*Math.pow(256,3)-r.g*Math.pow(256,2)-r.b*Math.pow(256,1))/Math.pow(256,0)),h(e)&&e.call(this,null,r),r},ee.cssColorToHex=function(t){return\"number\"==typeof(t=t||0)?Number(t):parseInt(_(t).toHex8(),16)},ee.limit255=function(t){return t=Math.max(t,0),Math.min(t,255)},ee.diff=function(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.1;if(!(t instanceof ee&&e instanceof ee))return l.call(this,\"img1 and img2 must be an Jimp images\");const i=t.bitmap,n=e.bitmap;if(i.width===n.width&&i.height===n.height||(i.width*i.height>n.width*n.height?t=t.cloneQuiet().resize(n.width,n.height):e=e.cloneQuiet().resize(i.width,i.height)),\"number\"!=typeof r||r<0||r>1)return l.call(this,\"threshold must be a number between 0 and 1\");const a=new ee(i.width,i.height,4294967295);return{percent:p()(i.data,n.data,a.bitmap.data,a.bitmap.width,a.bitmap.height,{threshold:r})/(a.bitmap.width*a.bitmap.height),image:a}},ee.distance=function(t,e){const r=new $,i=r.getHash(t),n=r.getHash(e);return r.distance(i,n)},ee.compareHashes=function(t,e){return(new $).distance(t,e)},ee.colorDiff=function(t,e){const r=t=>Math.pow(t,2),{max:i}=Math;return 0===t.a||t.a||(t.a=255),0===e.a||e.a||(e.a=255),(i(r(t.r-e.r),r(t.r-e.r-t.a+e.a))+i(r(t.g-e.g),r(t.g-e.g-t.a+e.a))+i(r(t.b-e.b),r(t.b-e.b-t.a+e.a)))/195075},ne(\"clone\",\"clone\",(function(t){const e=new ee(this);return h(t)&&t.call(e,null,e),e})),ae(\"background\",(function(t,e){return\"number\"!=typeof t?l.call(this,\"hex must be a hexadecimal rgba value\",e):(this._background=t,h(e)&&e.call(this,null,this),this)})),ae(\"scan\",(function(t,e,r,i,n,a){if(\"number\"!=typeof t||\"number\"!=typeof e)return l.call(this,\"x and y must be numbers\",a);if(\"number\"!=typeof r||\"number\"!=typeof i)return l.call(this,\"w and h must be numbers\",a);if(\"function\"!=typeof n)return l.call(this,\"f must be a function\",a);const o=f(this,t,e,r,i,n);return h(a)&&a.call(this,null,o),o}));{let t;\"undefined\"!=typeof window&&\"object\"==typeof window&&(t=window),\"undefined\"!=typeof self&&\"object\"==typeof self&&(t=self),t.Jimp=ee,t.Buffer=Zt}const oe=ee;var se=__nested_webpack_require_505601__(643),he=__nested_webpack_require_505601__(2691),le=__nested_webpack_require_505601__.n(he);const fe=\"image/jpeg\",ue=()=>({mime:{[fe]:[\"jpeg\",\"jpg\",\"jpe\"]},constants:{MIME_JPEG:fe},decoders:{[fe]:le().decode},encoders:{[fe]:t=>le().encode(t.bitmap,t._quality).data},class:{_quality:100,quality(t,e){return\"number\"!=typeof t?l.call(this,\"n must be a number\",e):t<0||t>100?l.call(this,\"n must be a number 0 - 100\",e):(this._quality=Math.round(t),h(e)&&e.call(this,null,this),this)}}});var ce=__nested_webpack_require_505601__(9902);const de=\"image/png\",pe=()=>({mime:{[de]:[\"png\"]},constants:{MIME_PNG:de,PNG_FILTER_AUTO:-1,PNG_FILTER_NONE:0,PNG_FILTER_SUB:1,PNG_FILTER_UP:2,PNG_FILTER_AVERAGE:3,PNG_FILTER_PATH:4},hasAlpha:{[de]:!0},decoders:{[de]:ce.PNG.sync.read},encoders:{[de](t){const e=new ce.PNG({width:t.bitmap.width,height:t.bitmap.height});return e.data=t.bitmap.data,ce.PNG.sync.write(e,{deflateLevel:t._deflateLevel,deflateStrategy:t._deflateStrategy,filterType:t._filterType,colorType:\"number\"==typeof t._colorType?t._colorType:t._rgba?6:2,inputHasAlpha:t._rgba})}},class:{_deflateLevel:9,_deflateStrategy:3,_filterType:-1,_colorType:null,deflateLevel(t,e){return\"number\"!=typeof t?l.call(this,\"l must be a number\",e):t<0||t>9?l.call(this,\"l must be a number 0 - 9\",e):(this._deflateLevel=Math.round(t),h(e)&&e.call(this,null,this),this)},deflateStrategy(t,e){return\"number\"!=typeof t?l.call(this,\"s must be a number\",e):t<0||t>3?l.call(this,\"s must be a number 0 - 3\",e):(this._deflateStrategy=Math.round(t),h(e)&&e.call(this,null,this),this)},filterType(t,e){return\"number\"!=typeof t?l.call(this,\"n must be a number\",e):t<-1||t>4?l.call(this,\"n must be -1 (auto) or a number 0 - 4\",e):(this._filterType=Math.round(t),h(e)&&e.call(this,null,this),this)},colorType(t,e){return\"number\"!=typeof t?l.call(this,\"s must be a number\",e):0!==t&&2!==t&&4!==t&&6!==t?l.call(this,\"s must be a number 0, 2, 4, 6.\",e):(this._colorType=Math.round(t),h(e)&&e.call(this,null,this),this)}}});var me=__nested_webpack_require_505601__(486),ge=__nested_webpack_require_505601__.n(me);const be=\"image/bmp\",_e=\"image/x-ms-bmp\",ye=t=>{return f({bitmap:e=ge().decode(t)},0,0,e.width,e.height,(function(t,r,i){const n=this.bitmap.data[i+0],a=this.bitmap.data[i+1],o=this.bitmap.data[i+2],s=this.bitmap.data[i+3];this.bitmap.data[i+0]=s,this.bitmap.data[i+1]=o,this.bitmap.data[i+2]=a,this.bitmap.data[i+3]=e.is_with_alpha?n:255})).bitmap;var e},we=t=>ge().encode(function(t){return f(t,0,0,t.bitmap.width,t.bitmap.height,(function(t,e,r){const i=this.bitmap.data[r+0],n=this.bitmap.data[r+1],a=this.bitmap.data[r+2],o=this.bitmap.data[r+3];this.bitmap.data[r+0]=o,this.bitmap.data[r+1]=a,this.bitmap.data[r+2]=n,this.bitmap.data[r+3]=i})).bitmap}(t)).data;var ve=__nested_webpack_require_505601__(9299),xe=__nested_webpack_require_505601__.n(ve),Ee=__nested_webpack_require_505601__(8834).lW;const ke=\"image/tiff\";var Se=__nested_webpack_require_505601__(63),Me=__nested_webpack_require_505601__(9455),Ae=__nested_webpack_require_505601__(8834).lW;const Ie=\"image/gif\",Be=[1,57,41,21,203,34,97,73,227,91,149,62,105,45,39,137,241,107,3,173,39,71,65,238,219,101,187,87,81,151,141,133,249,117,221,209,197,187,177,169,5,153,73,139,133,127,243,233,223,107,103,99,191,23,177,171,165,159,77,149,9,139,135,131,253,245,119,231,224,109,211,103,25,195,189,23,45,175,171,83,81,79,155,151,147,9,141,137,67,131,129,251,123,30,235,115,113,221,217,53,13,51,50,49,193,189,185,91,179,175,43,169,83,163,5,79,155,19,75,147,145,143,35,69,17,67,33,65,255,251,247,243,239,59,29,229,113,111,219,27,213,105,207,51,201,199,49,193,191,47,93,183,181,179,11,87,43,85,167,165,163,161,159,157,155,77,19,75,37,73,145,143,141,35,138,137,135,67,33,131,129,255,63,250,247,61,121,239,237,117,29,229,227,225,111,55,109,216,213,211,209,207,205,203,201,199,197,195,193,48,190,47,93,185,183,181,179,178,176,175,173,171,85,21,167,165,41,163,161,5,79,157,78,154,153,19,75,149,74,147,73,144,143,71,141,140,139,137,17,135,134,133,66,131,65,129,1],Te=[0,9,10,10,14,12,14,14,16,15,16,15,16,15,15,17,18,17,12,18,16,17,17,19,19,18,19,18,18,19,19,19,20,19,20,20,20,20,20,20,15,20,19,20,20,20,21,21,21,20,20,20,21,18,21,21,21,21,20,21,17,21,21,21,22,22,21,22,22,21,22,21,19,22,22,19,20,22,22,21,21,21,22,22,22,18,22,22,21,22,22,23,22,20,23,22,22,23,23,21,19,21,21,21,23,23,23,22,23,23,21,23,22,23,18,22,23,20,22,23,23,23,21,22,20,22,21,22,24,24,24,24,24,22,21,24,23,23,24,21,24,23,24,22,24,24,22,24,24,22,23,24,24,24,20,23,22,23,24,24,24,24,24,24,24,23,21,23,22,23,24,24,24,22,24,24,24,23,22,24,24,25,23,25,25,23,24,25,25,24,22,25,25,25,24,23,24,25,25,25,25,25,25,25,25,25,25,25,25,23,25,23,24,25,25,25,25,25,25,25,25,25,24,22,25,25,23,25,25,20,24,25,24,25,25,22,24,25,24,25,24,25,25,24,25,25,25,25,22,25,25,25,24,25,24,25,18];var Re=__nested_webpack_require_505601__(8834).lW;function Pe(t,e,r,i){const n=[0,0,0],a=(e.length-1)/2;for(let o=0;o<e.length;o+=1)for(let s=0;s<e[o].length;s+=1){const h=t.getPixelIndex(r+o-a,i+s-a);n[0]+=t.bitmap.data[h]*e[o][s],n[1]+=t.bitmap.data[h+1]*e[o][s],n[2]+=t.bitmap.data[h+2]*e[o][s]}return n}const Oe=t=>null!=t;function Le(t){return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(t,e,r){const i=parseInt(.2126*this.bitmap.data[r]+.7152*this.bitmap.data[r+1]+.0722*this.bitmap.data[r+2],10);this.bitmap.data[r]=i,this.bitmap.data[r+1]=i,this.bitmap.data[r+2]=i})),h(t)&&t.call(this,null,this),this}function Ce(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:50;return{r:(e.r-t.r)*(r/100)+t.r,g:(e.g-t.g)*(r/100)+t.g,b:(e.b-t.b)*(r/100)+t.b}}function Ue(t,e){return t&&Array.isArray(t)?(t=t.map((t=>(\"xor\"!==t.apply&&\"mix\"!==t.apply||(t.params[0]=_(t.params[0]).toRgb()),t))),this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,((r,i,n)=>{let a={r:this.bitmap.data[n],g:this.bitmap.data[n+1],b:this.bitmap.data[n+2]};const o=(t,e)=>this.constructor.limit255(a[t]+e);t.forEach((t=>{if(\"mix\"===t.apply)a=Ce(a,t.params[0],t.params[1]);else if(\"tint\"===t.apply)a=Ce(a,{r:255,g:255,b:255},t.params[0]);else if(\"shade\"===t.apply)a=Ce(a,{r:0,g:0,b:0},t.params[0]);else if(\"xor\"===t.apply)a={r:a.r^t.params[0].r,g:a.g^t.params[0].g,b:a.b^t.params[0].b};else if(\"red\"===t.apply)a.r=o(\"r\",t.params[0]);else if(\"green\"===t.apply)a.g=o(\"g\",t.params[0]);else if(\"blue\"===t.apply)a.b=o(\"b\",t.params[0]);else{if(\"hue\"===t.apply&&(t.apply=\"spin\"),a=_(a),!a[t.apply])return l.call(this,\"action \"+t.apply+\" not supported\",e);a=a[t.apply](...t.params).toRgb()}})),this.bitmap.data[n]=a.r,this.bitmap.data[n+1]=a.g,this.bitmap.data[n+2]=a.b})),h(e)&&e.call(this,null,this),this):l.call(this,\"actions must be an array\",e)}Object.freeze({LIGHTEN:\"lighten\",BRIGHTEN:\"brighten\",DARKEN:\"darken\",DESATURATE:\"desaturate\",SATURATE:\"saturate\",GREYSCALE:\"greyscale\",SPIN:\"spin\",HUE:\"hue\",MIX:\"mix\",TINT:\"tint\",SHADE:\"shade\",XOR:\"xor\",RED:\"red\",GREEN:\"green\",BLUE:\"blue\"});var ze=__nested_webpack_require_505601__(8834).lW;function De(t){const e=[1,9,3,11,13,5,15,7,4,12,2,10,16,8,14,6];return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(t,r,i){const n=e[((3&r)<<2)+t%4];this.bitmap.data[i]=Math.min(this.bitmap.data[i]+n,255),this.bitmap.data[i+1]=Math.min(this.bitmap.data[i+1]+n,255),this.bitmap.data[i+2]=Math.min(this.bitmap.data[i+2]+n,255)})),h(t)&&t.call(this,null,this),this}var Ne=__nested_webpack_require_505601__(8834).lW;function Fe(t,e,r){if(\"boolean\"!=typeof t||\"boolean\"!=typeof e)return l.call(this,\"horizontal and vertical must be Booleans\",r);const i=Ne.alloc(this.bitmap.data.length);return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(r,n,a){const o=t?this.bitmap.width-1-r:r,s=e?this.bitmap.height-1-n:n,h=this.bitmap.width*s+o<<2,l=this.bitmap.data.readUInt32BE(a);i.writeUInt32BE(l,h)})),this.bitmap.data=Ne.from(i),h(r)&&r.call(this,null,this),this}function je(){const t={r:new Array(256).fill(0),g:new Array(256).fill(0),b:new Array(256).fill(0)};return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(e,r,i){t.r[this.bitmap.data[i+0]]++,t.g[this.bitmap.data[i+1]]++,t.b[this.bitmap.data[i+2]]++})),t}const Ge=function(t,e,r){return 255*(t-e)/(r-e)},He=function(t){return[t.findIndex((t=>t>0)),255-t.slice().reverse().findIndex((t=>t>0))]};var We=__nested_webpack_require_505601__(8058),qe=__nested_webpack_require_505601__.n(We);function Ze(t,e){let r=0;for(let i=0;i<e.length;i++)if(t.chars[e[i]]){const n=t.kernings[e[i]]&&t.kernings[e[i]][e[i+1]]?t.kernings[e[i]][e[i+1]]:0;r+=(t.chars[e[i]].xadvance||0)+n}return r}function Ye(t,e,r){const i=e.split(\" \"),n=[];let a=[],o=0;return i.forEach((e=>{const i=[...a,e].join(\" \"),s=Ze(t,i);s<=r?(s>o&&(o=s),a.push(e)):(n.push(a),a=[e])})),n.push(a),{lines:n,longestLine:o}}function Ve(t,e,r){const{lines:i}=Ye(t,e,r);return i.length*t.common.lineHeight}function Xe(t,e,r,i,n){if(n.width>0&&n.height>0){const a=e.pages[n.page];t.blit(a,r+n.xoffset,i+n.yoffset,n.x,n.y,n.width,n.height)}return t}function Je(t,e,r,i,n){for(let a=0;a<i.length;a++){let o;o=t.chars[i[a]]?i[a]:/\\s/.test(i[a])?\"\":\"?\";const s=t.chars[o]||{},h=t.kernings[o];Xe(this,t,e,r,s||{}),e+=(h&&h[i[a+1]]?h[i[a+1]]:0)+(s.xadvance||n)}}const Qe=\"//../\";function Ke(t,e,r,i,n,a,o){this.widthOriginal=Math.abs(Math.floor(t)||0),this.heightOriginal=Math.abs(Math.floor(e)||0),this.targetWidth=Math.abs(Math.floor(r)||0),this.targetHeight=Math.abs(Math.floor(i)||0),this.colorChannels=n?4:3,this.interpolationPass=Boolean(a),this.resizeCallback=\"function\"==typeof o?o:function(){},this.targetWidthMultipliedByChannels=this.targetWidth*this.colorChannels,this.originalWidthMultipliedByChannels=this.widthOriginal*this.colorChannels,this.originalHeightMultipliedByChannels=this.heightOriginal*this.colorChannels,this.widthPassResultSize=this.targetWidthMultipliedByChannels*this.heightOriginal,this.finalResultSize=this.targetWidthMultipliedByChannels*this.targetHeight,this.initialize()}Ke.prototype.initialize=function(){if(!(this.widthOriginal>0&&this.heightOriginal>0&&this.targetWidth>0&&this.targetHeight>0))throw new Error(\"Invalid settings specified for the resizer.\");this.configurePasses()},Ke.prototype.configurePasses=function(){this.widthOriginal===this.targetWidth?this.resizeWidth=this.bypassResizer:(this.ratioWeightWidthPass=this.widthOriginal/this.targetWidth,this.ratioWeightWidthPass<1&&this.interpolationPass?(this.initializeFirstPassBuffers(!0),this.resizeWidth=4===this.colorChannels?this.resizeWidthInterpolatedRGBA:this.resizeWidthInterpolatedRGB):(this.initializeFirstPassBuffers(!1),this.resizeWidth=4===this.colorChannels?this.resizeWidthRGBA:this.resizeWidthRGB)),this.heightOriginal===this.targetHeight?this.resizeHeight=this.bypassResizer:(this.ratioWeightHeightPass=this.heightOriginal/this.targetHeight,this.ratioWeightHeightPass<1&&this.interpolationPass?(this.initializeSecondPassBuffers(!0),this.resizeHeight=this.resizeHeightInterpolated):(this.initializeSecondPassBuffers(!1),this.resizeHeight=4===this.colorChannels?this.resizeHeightRGBA:this.resizeHeightRGB))},Ke.prototype._resizeWidthInterpolatedRGBChannels=function(t,e){const r=e?4:3,i=this.ratioWeightWidthPass,n=this.widthBuffer;let a,o,s=0,h=0,l=0,f=0,u=0;for(a=0;s<1/3;a+=r,s+=i)for(h=a,l=0;h<this.widthPassResultSize;l+=this.originalWidthMultipliedByChannels,h+=this.targetWidthMultipliedByChannels)n[h]=t[l],n[h+1]=t[l+1],n[h+2]=t[l+2],e&&(n[h+3]=t[l+3]);for(s-=1/3,o=this.widthOriginal-1;s<o;a+=r,s+=i)for(u=s%1,f=1-u,h=a,l=Math.floor(s)*r;h<this.widthPassResultSize;l+=this.originalWidthMultipliedByChannels,h+=this.targetWidthMultipliedByChannels)n[h+0]=t[l+0]*f+t[l+r+0]*u,n[h+1]=t[l+1]*f+t[l+r+1]*u,n[h+2]=t[l+2]*f+t[l+r+2]*u,e&&(n[h+3]=t[l+3]*f+t[l+r+3]*u);for(o=this.originalWidthMultipliedByChannels-r;a<this.targetWidthMultipliedByChannels;a+=r)for(h=a,l=o;h<this.widthPassResultSize;l+=this.originalWidthMultipliedByChannels,h+=this.targetWidthMultipliedByChannels)n[h]=t[l],n[h+1]=t[l+1],n[h+2]=t[l+2],e&&(n[h+3]=t[l+3]);return n},Ke.prototype._resizeWidthRGBChannels=function(t,e){const r=e?4:3,i=this.ratioWeightWidthPass,n=1/i,a=this.originalWidthMultipliedByChannels-r+1,o=this.targetWidthMultipliedByChannels-r+1,s=this.outputWidthWorkBench,h=this.widthBuffer,l=this.outputWidthWorkBenchOpaquePixelsCount;let f=0,u=0,c=0,d=0,p=0,m=0,g=0,b=1,_=0,y=0,w=0,v=0;do{for(p=0;p<this.originalHeightMultipliedByChannels;)s[p++]=0,s[p++]=0,s[p++]=0,e&&(s[p++]=0,l[p/r-1]=0);f=i;do{for(u=1+c-d,b=Math.min(f,u),p=0,m=c;p<this.originalHeightMultipliedByChannels;m+=a)_=t[m],y=t[++m],w=t[++m],v=e?t[++m]:255,s[p++]+=(v?_:0)*b,s[p++]+=(v?y:0)*b,s[p++]+=(v?w:0)*b,e&&(s[p++]+=v*b,l[p/r-1]+=v?b:0);if(!(f>=u)){d+=f;break}c+=r,d=c,f-=u}while(f>0&&c<this.originalWidthMultipliedByChannels);for(p=0,m=g;p<this.originalHeightMultipliedByChannels;m+=o)f=e?l[p/r]:1,b=e?f?1/f:0:n,h[m]=s[p++]*b,h[++m]=s[p++]*b,h[++m]=s[p++]*b,e&&(h[++m]=s[p++]*n);g+=r}while(g<this.targetWidthMultipliedByChannels);return h},Ke.prototype._resizeHeightRGBChannels=function(t,e){const r=this.ratioWeightHeightPass,i=1/r,n=this.outputHeightWorkBench,a=this.heightBuffer,o=this.outputHeightWorkBenchOpaquePixelsCount;let s=0,h=0,l=0,f=0,u=0,c=0,d=0,p=1,m=0,g=0,b=0,_=0;do{for(u=0;u<this.targetWidthMultipliedByChannels;)n[u++]=0,n[u++]=0,n[u++]=0,e&&(n[u++]=0,o[u/4-1]=0);s=r;do{for(h=1+l-f,p=Math.min(s,h),d=l,u=0;u<this.targetWidthMultipliedByChannels;)m=t[d++],g=t[d++],b=t[d++],_=e?t[d++]:255,n[u++]+=(_?m:0)*p,n[u++]+=(_?g:0)*p,n[u++]+=(_?b:0)*p,e&&(n[u++]+=_*p,o[u/4-1]+=_?p:0);if(!(s>=h)){f+=s;break}l=d,f=l,s-=h}while(s>0&&l<this.widthPassResultSize);for(u=0;u<this.targetWidthMultipliedByChannels;)s=e?o[u/4]:1,p=e?s?1/s:0:i,a[c++]=Math.round(n[u++]*p),a[c++]=Math.round(n[u++]*p),a[c++]=Math.round(n[u++]*p),e&&(a[c++]=Math.round(n[u++]*i))}while(c<this.finalResultSize);return a},Ke.prototype.resizeWidthInterpolatedRGB=function(t){return this._resizeWidthInterpolatedRGBChannels(t,!1)},Ke.prototype.resizeWidthInterpolatedRGBA=function(t){return this._resizeWidthInterpolatedRGBChannels(t,!0)},Ke.prototype.resizeWidthRGB=function(t){return this._resizeWidthRGBChannels(t,!1)},Ke.prototype.resizeWidthRGBA=function(t){return this._resizeWidthRGBChannels(t,!0)},Ke.prototype.resizeHeightInterpolated=function(t){const e=this.ratioWeightHeightPass,r=this.heightBuffer;let i,n=0,a=0,o=0,s=0,h=0,l=0,f=0;for(;n<1/3;n+=e)for(o=0;o<this.targetWidthMultipliedByChannels;)r[a++]=Math.round(t[o++]);for(n-=1/3,i=this.heightOriginal-1;n<i;n+=e)for(f=n%1,l=1-f,s=Math.floor(n)*this.targetWidthMultipliedByChannels,h=s+this.targetWidthMultipliedByChannels,o=0;o<this.targetWidthMultipliedByChannels;++o)r[a++]=Math.round(t[s++]*l+t[h++]*f);for(;a<this.finalResultSize;)for(o=0,s=i*this.targetWidthMultipliedByChannels;o<this.targetWidthMultipliedByChannels;++o)r[a++]=Math.round(t[s++]);return r},Ke.prototype.resizeHeightRGB=function(t){return this._resizeHeightRGBChannels(t,!1)},Ke.prototype.resizeHeightRGBA=function(t){return this._resizeHeightRGBChannels(t,!0)},Ke.prototype.resize=function(t){this.resizeCallback(this.resizeHeight(this.resizeWidth(t)))},Ke.prototype.bypassResizer=function(t){return t},Ke.prototype.initializeFirstPassBuffers=function(t){this.widthBuffer=this.generateFloatBuffer(this.widthPassResultSize),t||(this.outputWidthWorkBench=this.generateFloatBuffer(this.originalHeightMultipliedByChannels),this.colorChannels>3&&(this.outputWidthWorkBenchOpaquePixelsCount=this.generateFloat64Buffer(this.heightOriginal)))},Ke.prototype.initializeSecondPassBuffers=function(t){this.heightBuffer=this.generateUint8Buffer(this.finalResultSize),t||(this.outputHeightWorkBench=this.generateFloatBuffer(this.targetWidthMultipliedByChannels),this.colorChannels>3&&(this.outputHeightWorkBenchOpaquePixelsCount=this.generateFloat64Buffer(this.targetWidth)))},Ke.prototype.generateFloatBuffer=function(t){try{return new Float32Array(t)}catch(t){return[]}},Ke.prototype.generateFloat64Buffer=function(t){try{return new Float64Array(t)}catch(t){return[]}},Ke.prototype.generateUint8Buffer=function(t){try{return new Uint8Array(t)}catch(t){return[]}};const $e=Ke;var tr=__nested_webpack_require_505601__(8834).lW;const er={nearestNeighbor(t,e){const r=t.width,i=t.height,n=e.width,a=e.height,o=t.data,s=e.data;for(let t=0;t<a;t++)for(let e=0;e<n;e++){let h=4*(t*n+e),l=4*(Math.floor(t*i/a)*r+Math.floor(e*r/n));s[h++]=o[l++],s[h++]=o[l++],s[h++]=o[l++],s[h++]=o[l++]}},bilinearInterpolation(t,e){const r=t.width,i=t.height,n=e.width,a=e.height,o=t.data,s=e.data,h=function(t,e,r,i,n){return e===i?r:Math.round((t-e)*n+(i-t)*r)},l=function(t,e,i,n,a,l,f,u){let c=4*(f*r+n)+e,d=4*(f*r+a)+e;const p=h(i,n,o[c],a,o[d]);if(u===f)s[t+e]=p;else{c=4*(u*r+n)+e,d=4*(u*r+a)+e;const m=h(i,n,o[c],a,o[d]);s[t+e]=h(l,f,p,u,m)}};for(let t=0;t<a;t++)for(let e=0;e<n;e++){const o=4*(t*n+e),s=e*r/n,h=Math.floor(s),f=Math.min(Math.ceil(s),r-1),u=t*i/a,c=Math.floor(u),d=Math.min(Math.ceil(u),i-1);l(o,0,s,h,f,u,c,d),l(o,1,s,h,f,u,c,d),l(o,2,s,h,f,u,c,d),l(o,3,s,h,f,u,c,d)}},_interpolate2D(t,e,r,i){const n=t.data,a=e.data,o=t.width,s=t.height,h=e.width,l=e.height,f=Math.max(1,Math.floor(o/h)),u=h*f,c=Math.max(1,Math.floor(s/l)),d=l*c,p=tr.alloc(u*s*4);for(let t=0;t<s;t++)for(let e=0;e<u;e++){const r=e*(o-1)/u,a=Math.floor(r),s=r-a,h=4*(t*o+a),l=4*(t*u+e);for(let t=0;t<4;t++){const e=h+t,r=a>0?n[e-4]:2*n[e]-n[e+4],f=n[e],u=n[e+4],c=a<o-2?n[e+8]:2*n[e+4]-n[e];p[l+t]=i(r,f,u,c,s)}}const m=tr.alloc(u*d*4);for(let t=0;t<d;t++)for(let e=0;e<u;e++){const r=t*(s-1)/d,n=Math.floor(r),a=r-n,o=4*(n*u+e),h=4*(t*u+e);for(let t=0;t<4;t++){const e=o+t,r=n>0?p[e-4*u]:2*p[e]-p[e+4*u],l=p[e],f=p[e+4*u],c=n<s-2?p[e+8*u]:2*p[e+4*u]-p[e];m[h+t]=i(r,l,f,c,a)}}const g=f*c;if(g>1)for(let t=0;t<l;t++)for(let e=0;e<h;e++){let r=0,i=0,n=0,o=0,s=0;for(let a=0;a<c;a++){const h=t*c+a;for(let t=0;t<f;t++){const a=4*(h*u+(e*f+t)),l=m[a+3];l&&(r+=m[a],i+=m[a+1],n+=m[a+2],s++),o+=l}}const l=4*(t*h+e);a[l]=s?Math.round(r/s):0,a[l+1]=s?Math.round(i/s):0,a[l+2]=s?Math.round(n/s):0,a[l+3]=Math.round(o/g)}else e.data=m},bicubicInterpolation(t,e,r){return this._interpolate2D(t,e,r,(function(t,e,r,i,n){const a=i-r-t+e,o=t-e-a,s=r-t,h=e;return Math.max(0,Math.min(255,a*(n*n*n)+o*(n*n)+s*n+h))}))},hermiteInterpolation(t,e,r){return this._interpolate2D(t,e,r,(function(t,e,r,i,n){const a=e,o=.5*(r-t),s=t-2.5*e+2*r-.5*i,h=.5*(i-t)+1.5*(e-r);return Math.max(0,Math.min(255,Math.round(((h*n+s)*n+o)*n+a)))}))},bezierInterpolation(t,e,r){return this._interpolate2D(t,e,r,(function(t,e,r,i,n){const a=1-n,o=e*a*a*a,s=3*(e+(r-t)/4)*a*a*n,h=3*(r-(i-e)/4)*a*n*n,l=r*n*n*n;return Math.max(0,Math.min(255,Math.round(o+s+h+l)))}))}},rr=er;var ir=__nested_webpack_require_505601__(8834).lW,nr=__nested_webpack_require_505601__(8834).lW;function ar(t){if(Math.abs(t)%90!=0)throw new Error(\"Unsupported matrix rotation degree\");if(t%=360,0===Math.abs(t))return;const e=this.bitmap.width,r=this.bitmap.height;let i;switch(t){case 90:case-270:i=90;break;case 180:case-180:i=180;break;case 270:case-90:i=-90;break;default:throw new Error(\"Unsupported matrix rotation degree\")}const n=180===i?e:r,a=180===i?r:e,o=nr.alloc(this.bitmap.data.length);function s(t,e){return function(e,r){return r*t+e<<2}}const h=s(e),l=s(n);for(let t=0;t<e;t++)for(let n=0;n<r;n++){const a=h(t,n),s=this.bitmap.data.readUInt32BE(a);let f;switch(i){case 90:f=l(n,e-t-1);break;case-90:f=l(r-n-1,t);break;case 180:f=l(e-t-1,r-n-1);break;default:throw new Error(\"Unsupported matrix rotation angle\")}o.writeUInt32BE(s,f)}this.bitmap.data=o,this.bitmap.width=n,this.bitmap.height=a}function or(t,e){const r=(t%=360)*Math.PI/180,i=Math.cos(r),n=Math.sin(r);let a=this.bitmap.width,o=this.bitmap.height;if(!0===e||\"string\"==typeof e){a=Math.ceil(Math.abs(this.bitmap.width*i)+Math.abs(this.bitmap.height*n))+1,o=Math.ceil(Math.abs(this.bitmap.width*n)+Math.abs(this.bitmap.height*i))+1,a%2!=0&&a++,o%2!=0&&o++;const t=this.cloneQuiet();this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(t,e,r){this.bitmap.data.writeUInt32BE(this._background,r)}));const r=Math.max(a,o,this.bitmap.width,this.bitmap.height);this.resize(r,r,e),this.blit(t,this.bitmap.width/2-t.bitmap.width/2,this.bitmap.height/2-t.bitmap.height/2)}const s=this.bitmap.width,h=this.bitmap.height,l=nr.alloc(this.bitmap.data.length);function f(t,e){return function(r,i){return{x:r+t,y:i+e}}}const u=f(-s/2,-h/2),c=f(s/2+.5,h/2+.5);for(let t=1;t<=h;t++)for(let e=1;e<=s;e++){const r=u(e,t),a=c(i*r.x-n*r.y,i*r.y+n*r.x),o=s*(t-1)+e-1<<2;if(a.x>=0&&a.x<s&&a.y>=0&&a.y<h){const t=(s*(0|a.y)+a.x|0)<<2,e=this.bitmap.data.readUInt32BE(t);l.writeUInt32BE(e,o)}else l.writeUInt32BE(this._background,o)}if(this.bitmap.data=l,!0===e||\"string\"==typeof e){const t=s/2-a/2,e=h/2-o/2;this.crop(t,e,a,o)}}const sr=[()=>({blit(t,e,r,i,n,a,o,s){if(!(t instanceof this.constructor))return l.call(this,\"The source must be a Jimp image\",s);if(\"number\"!=typeof e||\"number\"!=typeof r)return l.call(this,\"x and y must be numbers\",s);if(\"function\"==typeof i)s=i,i=0,n=0,a=t.bitmap.width,o=t.bitmap.height;else{if(typeof i!=typeof n||typeof n!=typeof a||typeof a!=typeof o)return l.call(this,\"srcx, srcy, srcw, srch must be numbers\",s);i=i||0,n=n||0,a=a||t.bitmap.width,o=o||t.bitmap.height}e=Math.round(e),r=Math.round(r),i=Math.round(i),n=Math.round(n),a=Math.round(a),o=Math.round(o);const f=this.bitmap.width,u=this.bitmap.height,c=this;return t.scanQuiet(i,n,a,o,(function(t,a,o){const s=e+t-i,h=r+a-n;if(s>=0&&h>=0&&f-s>0&&u-h>0){const t=c.getPixelIndex(s,h),e={r:this.bitmap.data[o],g:this.bitmap.data[o+1],b:this.bitmap.data[o+2],a:this.bitmap.data[o+3]},r={r:c.bitmap.data[t],g:c.bitmap.data[t+1],b:c.bitmap.data[t+2],a:c.bitmap.data[t+3]};c.bitmap.data[t]=(e.a*(e.r-r.r)-r.r+255>>8)+r.r,c.bitmap.data[t+1]=(e.a*(e.g-r.g)-r.g+255>>8)+r.g,c.bitmap.data[t+2]=(e.a*(e.b-r.b)-r.b+255>>8)+r.b,c.bitmap.data[t+3]=this.constructor.limit255(r.a+e.a)}})),h(s)&&s.call(this,null,this),this}}),()=>({blur(t,e){if(\"number\"!=typeof t)return l.call(this,\"r must be a number\",e);if(t<1)return l.call(this,\"r must be greater than 0\",e);let r,i,n,a,o,s,f,u,c,d,p,m,g,b;const _=this.bitmap.width-1,y=this.bitmap.height-1,w=t+1,v=Be[t],x=Te[t],E=[],k=[],S=[],M=[],A=[],I=[];let B=2;for(;B-- >0;){for(m=0,g=0,s=0;s<this.bitmap.height;s++){for(r=this.bitmap.data[g]*w,i=this.bitmap.data[g+1]*w,n=this.bitmap.data[g+2]*w,a=this.bitmap.data[g+3]*w,f=1;f<=t;f++)u=g+((f>_?_:f)<<2),r+=this.bitmap.data[u++],i+=this.bitmap.data[u++],n+=this.bitmap.data[u++],a+=this.bitmap.data[u];for(o=0;o<this.bitmap.width;o++)E[m]=r,k[m]=i,S[m]=n,M[m]=a,0===s&&(A[o]=((u=o+w)<_?u:_)<<2,I[o]=(u=o-t)>0?u<<2:0),c=g+A[o],d=g+I[o],r+=this.bitmap.data[c++]-this.bitmap.data[d++],i+=this.bitmap.data[c++]-this.bitmap.data[d++],n+=this.bitmap.data[c++]-this.bitmap.data[d++],a+=this.bitmap.data[c]-this.bitmap.data[d],m++;g+=this.bitmap.width<<2}for(o=0;o<this.bitmap.width;o++){for(p=o,r=E[p]*w,i=k[p]*w,n=S[p]*w,a=M[p]*w,f=1;f<=t;f++)p+=f>y?0:this.bitmap.width,r+=E[p],i+=k[p],n+=S[p],a+=M[p];for(m=o<<2,s=0;s<this.bitmap.height;s++)b=a*v>>>x,this.bitmap.data[m+3]=b,b>255&&(this.bitmap.data[m+3]=255),b>0?(b=255/b,this.bitmap.data[m]=(r*v>>>x)*b,this.bitmap.data[m+1]=(i*v>>>x)*b,this.bitmap.data[m+2]=(n*v>>>x)*b):(this.bitmap.data[m+2]=0,this.bitmap.data[m+1]=0,this.bitmap.data[m]=0),0===o&&(A[s]=((u=s+w)<y?u:y)*this.bitmap.width,I[s]=(u=s-t)>0?u*this.bitmap.width:0),c=o+A[s],d=o+I[s],r+=E[c]-E[d],i+=k[c]-k[d],n+=S[c]-S[d],a+=M[c]-M[d],m+=this.bitmap.width<<2}}return h(e)&&e.call(this,null,this),this}}),()=>({circle(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;\"function\"==typeof t&&(e=t,t={});const r=t.radius||(this.bitmap.width>this.bitmap.height?this.bitmap.height:this.bitmap.width)/2,i=\"number\"==typeof t.x?t.x:this.bitmap.width/2,n=\"number\"==typeof t.y?t.y:this.bitmap.height/2;return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(t,e,a){const o=Math.sqrt(Math.pow(t-i,2)+Math.pow(e-n,2));r-o<=0?this.bitmap.data[a+3]=0:r-o<1&&(this.bitmap.data[a+3]=255*(r-o))})),h(e)&&e.call(this,null,this),this}}),()=>({brightness(t,e){return\"number\"!=typeof t?l.call(this,\"val must be numbers\",e):t<-1||t>1?l.call(this,\"val must be a number between -1 and +1\",e):(this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(e,r,i){t<0?(this.bitmap.data[i]*=1+t,this.bitmap.data[i+1]*=1+t,this.bitmap.data[i+2]*=1+t):(this.bitmap.data[i]+=(255-this.bitmap.data[i])*t,this.bitmap.data[i+1]+=(255-this.bitmap.data[i+1])*t,this.bitmap.data[i+2]+=(255-this.bitmap.data[i+2])*t)})),h(e)&&e.call(this,null,this),this)},contrast(t,e){if(\"number\"!=typeof t)return l.call(this,\"val must be numbers\",e);if(t<-1||t>1)return l.call(this,\"val must be a number between -1 and +1\",e);const r=(t+1)/(1-t);function i(t){return(t=Math.floor(r*(t-127)+127))<0?0:t>255?255:t}return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(t,e,r){this.bitmap.data[r]=i(this.bitmap.data[r]),this.bitmap.data[r+1]=i(this.bitmap.data[r+1]),this.bitmap.data[r+2]=i(this.bitmap.data[r+2])})),h(e)&&e.call(this,null,this),this},posterize(t,e){return\"number\"!=typeof t?l.call(this,\"n must be numbers\",e):(t<2&&(t=2),this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(e,r,i){this.bitmap.data[i]=Math.floor(this.bitmap.data[i]/255*(t-1))/(t-1)*255,this.bitmap.data[i+1]=Math.floor(this.bitmap.data[i+1]/255*(t-1))/(t-1)*255,this.bitmap.data[i+2]=Math.floor(this.bitmap.data[i+2]/255*(t-1))/(t-1)*255})),h(e)&&e.call(this,null,this),this)},greyscale:Le,grayscale:Le,opacity(t,e){return\"number\"!=typeof t?l.call(this,\"f must be a number\",e):t<0||t>1?l.call(this,\"f must be a number from 0 to 1\",e):(this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(e,r,i){const n=this.bitmap.data[i+3]*t;this.bitmap.data[i+3]=n})),h(e)&&e.call(this,null,this),this)},sepia(t){return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(t,e,r){let i=this.bitmap.data[r],n=this.bitmap.data[r+1],a=this.bitmap.data[r+2];i=.393*i+.769*n+.189*a,n=.349*i+.686*n+.168*a,a=.272*i+.534*n+.131*a,this.bitmap.data[r]=i<255?i:255,this.bitmap.data[r+1]=n<255?n:255,this.bitmap.data[r+2]=a<255?a:255})),h(t)&&t.call(this,null,this),this},fade(t,e){return\"number\"!=typeof t?l.call(this,\"f must be a number\",e):t<0||t>1?l.call(this,\"f must be a number from 0 to 1\",e):(this.opacity(1-t),h(e)&&e.call(this,null,this),this)},convolution(t,e,r){\"function\"==typeof e&&void 0===r&&(r=e,e=null),e||(e=this.constructor.EDGE_EXTEND);const i=Re.from(this.bitmap.data),n=t.length,a=t[0].length,o=Math.floor(n/2),s=Math.floor(a/2),l=-o,f=-s;let u,c,d,p,m,g,b,_,y,w;return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(r,n,a){p=0,d=0,c=0;for(let i=l;i<=o;i++)for(let a=f;a<=s;a++)_=r+a,y=n+i,u=t[i+o][a+s],w=this.getPixelIndex(_,y,e),-1===w?(b=0,g=0,m=0):(m=this.bitmap.data[w+0],g=this.bitmap.data[w+1],b=this.bitmap.data[w+2]),c+=u*m,d+=u*g,p+=u*b;c<0&&(c=0),d<0&&(d=0),p<0&&(p=0),c>255&&(c=255),d>255&&(d=255),p>255&&(p=255),i[a+0]=c,i[a+1]=d,i[a+2]=p})),this.bitmap.data=i,h(r)&&r.call(this,null,this),this},opaque(t){return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(t,e,r){this.bitmap.data[r+3]=255})),h(t)&&t.call(this,null,this),this},pixelate(t,e,r,i,n,a){if(\"function\"==typeof e)a=e,n=null,i=null,r=null,e=null;else{if(\"number\"!=typeof t)return l.call(this,\"size must be a number\",a);if(Oe(e)&&\"number\"!=typeof e)return l.call(this,\"x must be a number\",a);if(Oe(r)&&\"number\"!=typeof r)return l.call(this,\"y must be a number\",a);if(Oe(i)&&\"number\"!=typeof i)return l.call(this,\"w must be a number\",a);if(Oe(n)&&\"number\"!=typeof n)return l.call(this,\"h must be a number\",a)}const o=[[1/16,2/16,1/16],[2/16,.25,2/16],[1/16,2/16,1/16]];e=e||0,r=r||0,i=Oe(i)?i:this.bitmap.width-e,n=Oe(n)?n:this.bitmap.height-r;const s=this.cloneQuiet();return this.scanQuiet(e,r,i,n,(function(e,r,i){e=t*Math.floor(e/t),r=t*Math.floor(r/t);const n=Pe(s,o,e,r);this.bitmap.data[i]=n[0],this.bitmap.data[i+1]=n[1],this.bitmap.data[i+2]=n[2]})),h(a)&&a.call(this,null,this),this},convolute(t,e,r,i,n,a){if(!Array.isArray(t))return l.call(this,\"the kernel must be an array\",a);if(\"function\"==typeof e)a=e,e=null,r=null,i=null,n=null;else{if(Oe(e)&&\"number\"!=typeof e)return l.call(this,\"x must be a number\",a);if(Oe(r)&&\"number\"!=typeof r)return l.call(this,\"y must be a number\",a);if(Oe(i)&&\"number\"!=typeof i)return l.call(this,\"w must be a number\",a);if(Oe(n)&&\"number\"!=typeof n)return l.call(this,\"h must be a number\",a)}e=Oe(e)?e:0,r=Oe(r)?r:0,i=Oe(i)?i:this.bitmap.width-e,n=Oe(n)?n:this.bitmap.height-r;const o=this.cloneQuiet();return this.scanQuiet(e,r,i,n,(function(e,r,i){const n=Pe(o,t,e,r);this.bitmap.data[i]=this.constructor.limit255(n[0]),this.bitmap.data[i+1]=this.constructor.limit255(n[1]),this.bitmap.data[i+2]=this.constructor.limit255(n[2])})),h(a)&&a.call(this,null,this),this},color:Ue,colour:Ue}),()=>({contain(t,e,r,i,n){if(\"number\"!=typeof t||\"number\"!=typeof e)return l.call(this,\"w and h must be numbers\",n);\"string\"==typeof r&&(\"function\"==typeof i&&void 0===n&&(n=i),i=r,r=null),\"function\"==typeof r&&(void 0===n&&(n=r),i=null,r=null),\"function\"==typeof i&&void 0===n&&(n=i,i=null);const a=7&(r=r||this.constructor.HORIZONTAL_ALIGN_CENTER|this.constructor.VERTICAL_ALIGN_MIDDLE),o=r>>3;if((0===a||a&a-1)&&(0===o||o&o-1))return l.call(this,\"only use one flag per alignment direction\",n);const s=a>>1,f=o>>1,u=t/e>this.bitmap.width/this.bitmap.height?e/this.bitmap.height:t/this.bitmap.width,c=this.cloneQuiet().scale(u,i);return this.resize(t,e,i),this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(t,e,r){this.bitmap.data.writeUInt32BE(this._background,r)})),this.blit(c,(this.bitmap.width-c.bitmap.width)/2*s,(this.bitmap.height-c.bitmap.height)/2*f),h(n)&&n.call(this,null,this),this}}),()=>({cover(t,e,r,i,n){if(\"number\"!=typeof t||\"number\"!=typeof e)return l.call(this,\"w and h must be numbers\",n);r&&\"function\"==typeof r&&void 0===n?(n=r,r=null,i=null):\"function\"==typeof i&&void 0===n&&(n=i,i=null);const a=7&(r=r||this.constructor.HORIZONTAL_ALIGN_CENTER|this.constructor.VERTICAL_ALIGN_MIDDLE),o=r>>3;if((0===a||a&a-1)&&(0===o||o&o-1))return l.call(this,\"only use one flag per alignment direction\",n);const s=a>>1,f=o>>1,u=t/e>this.bitmap.width/this.bitmap.height?t/this.bitmap.width:e/this.bitmap.height;return this.scale(u,i),this.crop((this.bitmap.width-t)/2*s,(this.bitmap.height-e)/2*f,t,e),h(n)&&n.call(this,null,this),this}}),function(t){return t(\"crop\",(function(t,e,r,i,n){if(\"number\"!=typeof t||\"number\"!=typeof e)return l.call(this,\"x and y must be numbers\",n);if(\"number\"!=typeof r||\"number\"!=typeof i)return l.call(this,\"w and h must be numbers\",n);if(t=Math.round(t),e=Math.round(e),r=Math.round(r),i=Math.round(i),0===t&&r===this.bitmap.width){const n=r*e+t<<2,a=n+(i*r<<2);this.bitmap.data=this.bitmap.data.slice(n,a)}else{const n=ze.allocUnsafe(r*i*4);let a=0;this.scanQuiet(t,e,r,i,(function(t,e,r){const i=this.bitmap.data.readUInt32BE(r,!0);n.writeUInt32BE(i,a,!0),a+=4})),this.bitmap.data=n}return this.bitmap.width=r,this.bitmap.height=i,h(n)&&n.call(this,null,this),this})),{class:{autocrop(){const t=this.bitmap.width,e=this.bitmap.height;let r,i=0,n=2e-4,a=!0,o=!1,s={north:!1,south:!1,east:!1,west:!1};for(var l=arguments.length,f=new Array(l),u=0;u<l;u++)f[u]=arguments[u];for(let t=0,e=f.length;t<e;t++)if(\"number\"==typeof f[t]&&(n=f[t]),\"boolean\"==typeof f[t]&&(a=f[t]),\"function\"==typeof f[t]&&(r=f[t]),\"object\"==typeof f[t]){const e=f[t];void 0!==e.tolerance&&({tolerance:n}=e),void 0!==e.cropOnlyFrames&&({cropOnlyFrames:a}=e),void 0!==e.cropSymmetric&&({cropSymmetric:o}=e),void 0!==e.leaveBorder&&({leaveBorder:i}=e),void 0!==e.ignoreSides&&({ignoreSides:s}=e)}let c=this.getPixelColor(0,0);const d=this.constructor.intToRGBA(c);let p=0,m=0,g=0,b=0;if(c=this.getPixelColor(0,0),!s.north)t:for(let r=0;r<e-1;r++){for(let e=0;e<t;e++){const t=this.getPixelColor(e,r),i=this.constructor.intToRGBA(t);if(this.constructor.colorDiff(d,i)>n)break t}p++}if(c=this.getPixelColor(t,0),!s.west)t:for(let r=0;r<t-1;r++){for(let t=0+p;t<e;t++){const e=this.getPixelColor(r,t),i=this.constructor.intToRGBA(e);if(this.constructor.colorDiff(d,i)>n)break t}b++}if(c=this.getPixelColor(0,e),!s.south)t:for(let r=e-1;r>=p+1;r--){for(let e=t-m-1;e>=0;e--){const t=this.getPixelColor(e,r),i=this.constructor.intToRGBA(t);if(this.constructor.colorDiff(d,i)>n)break t}g++}if(c=this.getPixelColor(t,e),!s.east)t:for(let r=t-1;r>=0+b+1;r--){for(let t=e-1;t>=0+p;t--){const e=this.getPixelColor(r,t),i=this.constructor.intToRGBA(e);if(this.constructor.colorDiff(d,i)>n)break t}m++}let _=!1;if(b-=i,m-=i,p-=i,g-=i,o){const t=Math.min(m,b),e=Math.min(p,g);b=t,m=t,p=e,g=e}b=b>=0?b:0,m=m>=0?m:0,p=p>=0?p:0,g=g>=0?g:0;const y=t-(b+m),w=e-(g+p);return _=a?0!==m&&0!==p&&0!==b&&0!==g:0!==m||0!==p||0!==b||0!==g,_&&this.crop(b,p,y,w),h(r)&&r.call(this,null,this),this}}}},()=>({displace(t,e,r){if(\"object\"!=typeof t||t.constructor!==this.constructor)return l.call(this,\"The source must be a Jimp image\",r);if(\"number\"!=typeof e)return l.call(this,\"factor must be a number\",r);const i=this.cloneQuiet();return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(r,n,a){let o=t.bitmap.data[a]/256*e;o=Math.round(o);const s=this.getPixelIndex(r+o,n);this.bitmap.data[s]=i.bitmap.data[a],this.bitmap.data[s+1]=i.bitmap.data[a+1],this.bitmap.data[s+2]=i.bitmap.data[a+2]})),h(r)&&r.call(this,null,this),this}}),()=>({dither565:De,dither16:De}),()=>({fisheye(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{r:2.5},e=arguments.length>1?arguments[1]:void 0;\"function\"==typeof t&&(e=t,t={r:2.5});const r=this.cloneQuiet(),{width:i,height:n}=r.bitmap;return r.scanQuiet(0,0,i,n,((e,a)=>{const o=e/i,s=a/n,h=Math.sqrt(Math.pow(o-.5,2)+Math.pow(s-.5,2)),l=2*Math.pow(h,t.r),f=(o-.5)/h,u=(s-.5)/h,c=Math.round((l*f+.5)*i),d=Math.round((l*u+.5)*n),p=r.getPixelColor(c,d);this.setPixelColor(p,e,a)})),this.setPixelColor(r.getPixelColor(i/2,n/2),i/2,n/2),h(e)&&e.call(this,null,this),this}}),()=>({flip:Fe,mirror:Fe}),()=>({gaussian(t,e){if(\"number\"!=typeof t)return l.call(this,\"r must be a number\",e);if(t<1)return l.call(this,\"r must be greater than 0\",e);const r=Math.ceil(2.57*t),i=2*r+1,n=t*t*2,a=n*Math.PI,o=[];for(let t=0;t<i;t++){o[t]=[];for(let e=0;e<i;e++){const i=(e-r)**2+(t-r)**2;o[t][e]=Math.exp(-i/n)/a}}for(let t=0;t<this.bitmap.height;t++)for(let e=0;e<this.bitmap.width;e++){let n=0,a=0,s=0,h=0,l=0;for(let f=0;f<i;f++){for(let u=0;u<i;u++){const i=Math.min(this.bitmap.width-1,Math.max(0,u+e-r)),c=Math.min(this.bitmap.height-1,Math.max(0,f+t-r)),d=o[f][u],p=c*this.bitmap.width+i<<2;n+=this.bitmap.data[p]*d,a+=this.bitmap.data[p+1]*d,s+=this.bitmap.data[p+2]*d,h+=this.bitmap.data[p+3]*d,l+=d}const u=t*this.bitmap.width+e<<2;this.bitmap.data[u]=Math.round(n/l),this.bitmap.data[u+1]=Math.round(a/l),this.bitmap.data[u+2]=Math.round(s/l),this.bitmap.data[u+3]=Math.round(h/l)}}return h(e)&&e.call(this,null,this),this}}),()=>({invert(t){return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(t,e,r){this.bitmap.data[r]=255-this.bitmap.data[r],this.bitmap.data[r+1]=255-this.bitmap.data[r+1],this.bitmap.data[r+2]=255-this.bitmap.data[r+2]})),h(t)&&t.call(this,null,this),this}}),()=>({mask(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3?arguments[3]:void 0;if(!(t instanceof this.constructor))return l.call(this,\"The source must be a Jimp image\",i);if(\"number\"!=typeof e||\"number\"!=typeof r)return l.call(this,\"x and y must be numbers\",i);e=Math.round(e),r=Math.round(r);const n=this.bitmap.width,a=this.bitmap.height,o=this;return t.scanQuiet(0,0,t.bitmap.width,t.bitmap.height,(function(t,i,s){const h=e+t,l=r+i;if(h>=0&&l>=0&&h<n&&l<a){const t=o.getPixelIndex(h,l),{data:e}=this.bitmap,r=(e[s+0]+e[s+1]+e[s+2])/3;o.bitmap.data[t+3]*=r/255}})),h(i)&&i.call(this,null,this),this}}),()=>({normalize(t){const e=je.call(this),r={r:He(e.r),g:He(e.g),b:He(e.b)};return this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,(function(t,e,i){const n=this.bitmap.data[i+0],a=this.bitmap.data[i+1],o=this.bitmap.data[i+2];this.bitmap.data[i+0]=Ge(n,r.r[0],r.r[1]),this.bitmap.data[i+1]=Ge(a,r.g[0],r.g[1]),this.bitmap.data[i+2]=Ge(o,r.b[0],r.b[1])})),h(t)&&t.call(this,null,this),this}}),()=>({constants:{measureText:Ze,measureTextHeight:Ve,FONT_SANS_8_BLACK:a().join(Qe,\"fonts/open-sans/open-sans-8-black/open-sans-8-black.fnt\"),FONT_SANS_10_BLACK:a().join(Qe,\"fonts/open-sans/open-sans-10-black/open-sans-10-black.fnt\"),FONT_SANS_12_BLACK:a().join(Qe,\"fonts/open-sans/open-sans-12-black/open-sans-12-black.fnt\"),FONT_SANS_14_BLACK:a().join(Qe,\"fonts/open-sans/open-sans-14-black/open-sans-14-black.fnt\"),FONT_SANS_16_BLACK:a().join(Qe,\"fonts/open-sans/open-sans-16-black/open-sans-16-black.fnt\"),FONT_SANS_32_BLACK:a().join(Qe,\"fonts/open-sans/open-sans-32-black/open-sans-32-black.fnt\"),FONT_SANS_64_BLACK:a().join(Qe,\"fonts/open-sans/open-sans-64-black/open-sans-64-black.fnt\"),FONT_SANS_128_BLACK:a().join(Qe,\"fonts/open-sans/open-sans-128-black/open-sans-128-black.fnt\"),FONT_SANS_8_WHITE:a().join(Qe,\"fonts/open-sans/open-sans-8-white/open-sans-8-white.fnt\"),FONT_SANS_16_WHITE:a().join(Qe,\"fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt\"),FONT_SANS_32_WHITE:a().join(Qe,\"fonts/open-sans/open-sans-32-white/open-sans-32-white.fnt\"),FONT_SANS_64_WHITE:a().join(Qe,\"fonts/open-sans/open-sans-64-white/open-sans-64-white.fnt\"),FONT_SANS_128_WHITE:a().join(Qe,\"fonts/open-sans/open-sans-128-white/open-sans-128-white.fnt\"),loadFont(t,e){return\"string\"!=typeof t?l.call(this,\"file must be a string\",e):new Promise(((r,i)=>{e=e||function(t,e){t?i(t):r(e)},qe()(t,((r,i)=>{const n={},o={};if(r)return l.call(this,r,e);for(let t=0;t<i.chars.length;t++)n[String.fromCharCode(i.chars[t].id)]=i.chars[t];for(let t=0;t<i.kernings.length;t++){const e=String.fromCharCode(i.kernings[t].first);o[e]=o[e]||{},o[e][String.fromCharCode(i.kernings[t].second)]=i.kernings[t].amount}(function(t,e,r){const i=r.map((r=>t.read(e+\"/\"+r)));return Promise.all(i)})(this,a().dirname(t),i.pages).then((t=>{e(null,{chars:n,kernings:o,pages:t,common:i.common,info:i.info})}))}))}))}},class:{print(t,e,r,i,n,a,o){if(\"function\"==typeof n&&void 0===o&&(o=n,n=1/0),void 0===n&&(n=1/0),\"function\"==typeof a&&void 0===o&&(o=a,a=1/0),void 0===a&&(a=1/0),\"object\"!=typeof t)return l.call(this,\"font must be a Jimp loadFont\",o);if(\"number\"!=typeof e||\"number\"!=typeof r||\"number\"!=typeof n)return l.call(this,\"x, y and maxWidth must be numbers\",o);if(\"number\"!=typeof n)return l.call(this,\"maxWidth must be a number\",o);if(\"number\"!=typeof a)return l.call(this,\"maxHeight must be a number\",o);let s,f;\"object\"==typeof i&&null!==i.text&&void 0!==i.text?(s=i.alignmentX||this.constructor.HORIZONTAL_ALIGN_LEFT,f=i.alignmentY||this.constructor.VERTICAL_ALIGN_TOP,({text:i}=i)):(s=this.constructor.HORIZONTAL_ALIGN_LEFT,f=this.constructor.VERTICAL_ALIGN_TOP,i=i.toString()),a!==1/0&&f===this.constructor.VERTICAL_ALIGN_BOTTOM?r+=a-Ve(t,i,n):a!==1/0&&f===this.constructor.VERTICAL_ALIGN_MIDDLE&&(r+=a/2-Ve(t,i,n)/2);const u=Object.entries(t.chars)[0][1].xadvance,{lines:c,longestLine:d}=Ye(t,i,n);return c.forEach((i=>{const a=i.join(\" \"),o=function(t,e,r,i,n){return n===t.HORIZONTAL_ALIGN_LEFT?0:n===t.HORIZONTAL_ALIGN_CENTER?(i-Ze(e,r))/2:i-Ze(e,r)}(this.constructor,t,a,n,s);Je.call(this,t,e+o,r,a,u),r+=t.common.lineHeight})),h(o)&&o.call(this,null,this,{x:e+d,y:r}),this}}}),()=>({constants:{RESIZE_NEAREST_NEIGHBOR:\"nearestNeighbor\",RESIZE_BILINEAR:\"bilinearInterpolation\",RESIZE_BICUBIC:\"bicubicInterpolation\",RESIZE_HERMITE:\"hermiteInterpolation\",RESIZE_BEZIER:\"bezierInterpolation\"},class:{resize(t,e,r,i){if(\"number\"!=typeof t||\"number\"!=typeof e)return l.call(this,\"w and h must be numbers\",i);if(\"function\"==typeof r&&void 0===i&&(i=r,r=null),t===this.constructor.AUTO&&e===this.constructor.AUTO)return l.call(this,\"w and h cannot both be set to auto\",i);if(t===this.constructor.AUTO&&(t=this.bitmap.width*(e/this.bitmap.height)),e===this.constructor.AUTO&&(e=this.bitmap.height*(t/this.bitmap.width)),t<0||e<0)return l.call(this,\"w and h must be positive numbers\",i);if(t=Math.round(t)||1,e=Math.round(e)||1,\"function\"==typeof rr[r]){const i={data:ir.alloc(t*e*4),width:t,height:e};rr[r](this.bitmap,i),this.bitmap=i}else{const r=this;new $e(this.bitmap.width,this.bitmap.height,t,e,!0,!0,(i=>{r.bitmap.data=ir.from(i),r.bitmap.width=t,r.bitmap.height=e})).resize(this.bitmap.data)}return h(i)&&i.call(this,null,this),this}}}),()=>({rotate(t,e,r){return null==e&&(e=!0),\"function\"==typeof e&&void 0===r&&(r=e,e=!0),\"number\"!=typeof t?l.call(this,\"deg must be a number\",r):\"boolean\"!=typeof e&&\"string\"!=typeof e?l.call(this,\"mode must be a boolean or a string\",r):(t%90!=0||!e&&this.bitmap.width!==this.bitmap.height&&t%180!=0?or.call(this,t,e,r):ar.call(this,t),h(r)&&r.call(this,null,this),this)}}),()=>({scale(t,e,r){if(\"number\"!=typeof t)return l.call(this,\"f must be a number\",r);if(t<0)return l.call(this,\"f must be a positive number\",r);\"function\"==typeof e&&void 0===r&&(r=e,e=null);const i=this.bitmap.width*t,n=this.bitmap.height*t;return this.resize(i,n,e),h(r)&&r.call(this,null,this),this},scaleToFit(t,e,r,i){if(\"number\"!=typeof t||\"number\"!=typeof e)return l.call(this,\"w and h must be numbers\",i);\"function\"==typeof r&&void 0===i&&(i=r,r=null);const n=t/e>this.bitmap.width/this.bitmap.height?e/this.bitmap.height:t/this.bitmap.width;return this.scale(n,r),h(i)&&i.call(this,null,this),this}}),()=>({shadow(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;\"function\"==typeof t&&(e=t,t={});const{opacity:r=.7,size:i=1.1,x:n=-25,y:a=25,blur:o=5}=t,s=this.clone(),l=this.clone();return l.scan(0,0,l.bitmap.width,l.bitmap.height,((t,e,i)=>{l.bitmap.data[i]=0,l.bitmap.data[i+1]=0,l.bitmap.data[i+2]=0,l.bitmap.data[i+3]=l.constructor.limit255(l.bitmap.data[i+3]*r),this.bitmap.data[i]=0,this.bitmap.data[i+1]=0,this.bitmap.data[i+2]=0,this.bitmap.data[i+3]=0})),l.resize(l.bitmap.width*i,l.bitmap.height*i).blur(o),this.composite(l,n,a),this.composite(s,0,0),h(e)&&e.call(this,null,this),this}}),()=>({threshold(t,e){let{max:r,replace:i=255,autoGreyscale:n=!0}=t;return\"number\"!=typeof r?l.call(this,\"max must be a number\",e):\"number\"!=typeof i?l.call(this,\"replace must be a number\",e):\"boolean\"!=typeof n?l.call(this,\"autoGreyscale must be a boolean\",e):(r=this.constructor.limit255(r),i=this.constructor.limit255(i),n&&this.greyscale(),this.scanQuiet(0,0,this.bitmap.width,this.bitmap.height,((t,e,n)=>{const a=this.bitmap.data[n]<r?this.bitmap.data[n]:i;this.bitmap.data[n]=a,this.bitmap.data[n+1]=a,this.bitmap.data[n+2]=a})),h(e)&&e.call(this,null,this),this)}})];!function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:oe;const r={hasAlpha:{},encoders:{},decoders:{},class:{},constants:{}};function i(t){Object.entries(t).forEach((t=>{let[e,i]=t;r[e]={...r[e],...i}}))}t.types&&(t.types.forEach((function(t){const e=t();Array.isArray(e.mime)?Ct(...e.mime):Object.entries(e.mime).forEach((t=>Ct(...t))),delete e.mime,i(e)})),e.decoders={...e.decoders,...r.decoders},e.encoders={...e.encoders,...r.encoders},e.hasAlpha={...e.hasAlpha,...r.hasAlpha}),t.plugins&&t.plugins.forEach((function(t){const e=t(ae)||{};e.class||e.constants?i(e):i({class:e})})),ie(r.class,e),re(r.constants,e)}({types:[()=>(0,se.Ee)(ue(),pe(),{mime:{[be]:[\"bmp\"]},constants:{MIME_BMP:be,MIME_X_MS_BMP:_e},decoders:{[be]:ye,[_e]:ye},encoders:{[be]:we,[_e]:we}},{mime:{[ke]:[\"tiff\",\"tif\"]},constants:{MIME_TIFF:ke},decoders:{[ke]:t=>{const e=xe().decode(t),r=e[0];e.forEach((e=>{xe().decodeImage(t,e)}));const i=xe().toRGBA8(r);return{data:Ee.from(i),width:r.t256[0],height:r.t257[0]}}},encoders:{[ke]:t=>{const e=xe().encodeImage(t.bitmap.data,t.bitmap.width,t.bitmap.height);return Ee.from(e)}}},{mime:{[Ie]:[\"gif\"]},constants:{MIME_GIF:Ie},decoders:{[Ie]:t=>{const e=new Se.N(t),r=Ae.alloc(e.width*e.height*4);return e.decodeAndBlitFrameRGBA(0,r),{data:r,width:e.width,height:e.height}}},encoders:{[Ie]:t=>{const e=new Me.BitmapImage(t.bitmap);Me.GifUtil.quantizeDekker(e,256);const r=new Me.GifFrame(e);return(new Me.GifCodec).encodeGif([r],{}).then((t=>t.buffer))}}})],plugins:[t=>{const e=sr.map((e=>{let r=e(t)||{};return r.class||r.constants||(r={class:r}),r}));return(0,se.Ee)(...e)}]})})()})();\n//# sourceMappingURL=jimp.js.map\n\n//# sourceURL=webpack://webgpu-prog-iso/./node_modules/jimp/browser/lib/jimp.js?");

/***/ }),

/***/ "./src/app.js":
/*!********************!*\
  !*** ./src/app.js ***!
  \********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _volumes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./volumes */ \"./src/volumes.js\");\n/* harmony import */ var _volume_raycaster__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./volume_raycaster */ \"./src/volume_raycaster.js\");\n/* harmony import */ var _run_benchmark__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./run_benchmark */ \"./src/run_benchmark.js\");\n/* harmony import */ var _webgl_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./webgl-util */ \"./src/webgl-util.js\");\n/* harmony import */ var _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./embedded_shaders */ \"./src/embedded_shaders.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/mat4.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _inference_session__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./inference_session */ \"./src/inference_session.js\");\n/* harmony import */ var onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! onnxruntime-web/webgpu */ \"./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js\");\n\n\n\n\n\n\n\n\n\n\n(async () => {\n    console.log(self.crossOriginIsolated);\n    function runBenchmark(benchmark) {\n        requestBenchmark = benchmark;\n    }\n\n    function saveScreenShotButton() {\n        saveScreenshot = true;\n    }\n\n    // Assumes the input renderTarget and outCanvas have the same image dimensions\n    async function takeScreenshot(device, name, renderTarget, imageBuffer, outCanvas) {\n        var commandEncoder = device.createCommandEncoder();\n        commandEncoder.copyTextureToBuffer({texture: renderTarget},\n            {buffer: imageBuffer, bytesPerRow: outCanvas.width * 4},\n            [outCanvas.width, outCanvas.height, 1]);\n        device.queue.submit([commandEncoder.finish()]);\n        await device.queue.onSubmittedWorkDone();\n\n        await imageBuffer.mapAsync(GPUMapMode.READ);\n        var imageReadbackArray = new Uint8ClampedArray(imageBuffer.getMappedRange());\n\n        var context = outCanvas.getContext('2d');\n        var imgData = context.createImageData(outCanvas.width, outCanvas.height);\n        imgData.data.set(imageReadbackArray);\n        context.putImageData(imgData, 0, 0);\n        outCanvas.toBlob(function (b) {\n            (0,file_saver__WEBPACK_IMPORTED_MODULE_5__.saveAs)(b, `${name}.png`);\n        }, \"image/png\");\n\n        imageBuffer.unmap();\n    }\n\n    document.getElementById(\"runRandomBenchmark\").onclick = () => {runBenchmark(\"random\")};\n    document.getElementById(\"runSweepUp\").onclick = () => {runBenchmark(\"sweepUp\")};\n    document.getElementById(\"runSweepDown\").onclick = () => {runBenchmark(\"sweepDown\")};\n    document.getElementById(\"runRotate\").onclick = () => {runBenchmark(\"rotate\")};\n    document.getElementById(\"recomputeSurface\").onclick = () => {runBenchmark(\"manualSingle\")};\n    document.getElementById(\"saveScreenShotButton\").onclick = () => {saveScreenShotButton()};\n\n    var benchmarkConfigs = (0,_run_benchmark__WEBPACK_IMPORTED_MODULE_2__.generateBenchmarkConfigurations)();\n    console.log(`# of benchmarkConfigs to run ${benchmarkConfigs.length}`);\n\n    var dataset = _volumes__WEBPACK_IMPORTED_MODULE_0__.datasets.skull;\n    let autobenchmarkIndex = -1;\n    if (window.location.hash) {\n        var urlParams = window.location.hash.substring(1).split(\"&\");\n        for (let i = 0; i < urlParams.length; ++i) {\n            let str = decodeURI(urlParams[i]);\n            if (str.startsWith(\"dataset=\")) {\n                let name = str.split(\"=\")[1];\n                console.log(`Linked to data set ${name}`);\n                dataset = _volumes__WEBPACK_IMPORTED_MODULE_0__.datasets[name];\n            } else if (str.startsWith(\"autobenchmark=\")) {\n                autobenchmarkIndex = parseInt(str.split(\"=\")[1]);\n                console.log(`Linked to autobenchmark ${autobenchmarkIndex}`);\n            }\n        }\n    }\n\n    let autobenchmarkConfig = null;\n    if (autobenchmarkIndex > -1) {\n        autobenchmarkConfig = benchmarkConfigs[autobenchmarkIndex];\n        console.log(`Running autobenchmark`);\n        console.log(autobenchmarkConfig);\n        dataset = _volumes__WEBPACK_IMPORTED_MODULE_0__.datasets[autobenchmarkConfig.dataset];\n        console.log(dataset);\n\n        document.getElementById(\"autobenchmark-status-div\").hidden = false;\n        document.getElementById(\"autobenchmark-status\").innerHTML =\n            `Autobenchmark ${autobenchmarkIndex + 1}/${benchmarkConfigs.length}`;\n    }\n\n    var resolution = document.getElementById(\"resolution\");\n    var resolutionDims = {\"1080\": [1920, 1080], \"720\": [1280, 720], \"360\": [640, 360]};\n    var width = resolutionDims[resolution.value][0];\n    var height = resolutionDims[resolution.value][1];\n    if (autobenchmarkConfig) {\n        width = resolutionDims[autobenchmarkConfig.resolution][0];\n        height = resolutionDims[autobenchmarkConfig.resolution][1];\n    }\n\n    var adapter = await navigator.gpu.requestAdapter();\n    console.log(adapter.limits);\n\n    var sum = 0;\n    onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_7__.env.wasm.wasmPaths = 'https://cdn.jsdelivr.net/npm/onnxruntime-web/dist/';\n    // ort.env.debug = true;\n    // ort.env.trace = true;        \n    // ort.env.logLevel = 'verbose';\n    onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_7__.env.webgpu.profiling = {\n        mode: 'default',\n        ondata: (data) => {\n            // handle the profiling data\n            sum += (data.endTime - data.startTime) * 0.000001;\n            // if ((data.endTime - data.startTime) * 0.000001 > 1) {\n            //     console.log(`[profiling] ${data.kernelName}: ${(data.endTime - data.startTime) * 0.000001}ms`);\n            // }\n        }\n    };\n    var session = await new _inference_session__WEBPACK_IMPORTED_MODULE_6__.InferenceSessionWGPU(width, height);\n    console.log(session);\n\n    var device = onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_7__.env.webgpu.device;\n    console.log(device);\n\n    // var gpuDeviceDesc = {\n    //     requiredLimits: {\n    //         maxStorageBuffersPerShaderStage: adapter.limits.maxStorageBuffersPerShaderStage,\n    //         maxStorageBufferBindingSize: adapter.limits.maxStorageBufferBindingSize,\n    //         maxBufferSize: adapter.limits.maxBufferSize\n    //     },\n    // };\n    // var device = await adapter.requestDevice(gpuDeviceDesc);\n    var canvas = document.getElementById(\"webgpu-canvas\");\n    var context = canvas.getContext(\"webgpu\");\n\n    var requestBenchmark = null;\n    var saveScreenshot = false;\n\n    var volumeDims = (0,_volumes__WEBPACK_IMPORTED_MODULE_0__.getVolumeDimensions)(dataset.name);\n    var zfpDataName = dataset.name + \".zfp\";\n    var volumeURL = null;\n    if (window.location.hostname != \"localhost\") {\n    volumeURL = \"https://cdn.willusher.io/bcmc-demo-data/\" + zfpDataName;\n    } else {\n        volumeURL = \"/models/bcmc-data/\" + zfpDataName;\n    }\n    var compressedData =\n        await fetch(volumeURL).then((res) => res.arrayBuffer().then(function (arr) {\n            return new Uint8Array(arr);\n        }));\n\n    if (compressedData == null) {\n        alert(`Failed to load compressed data`);\n        return;\n    }\n\n    var imageBuffer = device.createBuffer({\n        size: width * height * 4,\n        usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,\n    });\n    var resolutionBuffer = device.createBuffer({\n        size: 2 * 4,\n        usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n    });\n    var commandEncoder = device.createCommandEncoder();\n    var uploadResolution = device.createBuffer(\n        {size: 2 * 4, usage: GPUBufferUsage.COPY_SRC, mappedAtCreation: true});\n    new Uint32Array(uploadResolution.getMappedRange()).set([canvas.width, canvas.height]);\n    uploadResolution.unmap();\n    commandEncoder.copyBufferToBuffer(uploadResolution, 0, resolutionBuffer, 0, 2 * 4);\n    device.queue.submit([commandEncoder.finish()]);\n    var renderBGLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.FRAGMENT, texture: {viewDimension: \"2d\"}},\n            {binding: 1, visibility: GPUShaderStage.FRAGMENT, buffer: {type: \"uniform\"}},\n            {binding: 2, visibility: GPUShaderStage.FRAGMENT, sampler: {type: \"filtering\"}}\n        ]\n    });\n    const sampler = device.createSampler({\n        magFilter: 'linear',\n        minFilter: 'linear',\n    });\n\n    var enableSpeculationUI = document.getElementById(\"enableSpeculation\");\n    enableSpeculationUI.checked = true;\n    var recordVisibleBlocksUI = document.getElementById(\"recordVisibleBlocks\")\n\n    let completenessThreshold = document.getElementById(\"completenessThreshold\");\n    var outCanvas = document.getElementById(\"out-canvas\");\n    var headstartSlider = document.getElementById(\"startSpecCount\");\n    if (autobenchmarkConfig) {\n        completenessThreshold.value = autobenchmarkConfig.imageCompleteness;\n        headstartSlider.value = autobenchmarkConfig.startSpecCount;\n    }\n    var volumeRC =\n        new _volume_raycaster__WEBPACK_IMPORTED_MODULE_1__.VolumeRaycaster(device, width, height, recordVisibleBlocksUI, enableSpeculationUI, parseInt(headstartSlider.value), session.inputBuffers[0]);\n\n    resolution.onchange = async () => {\n        width = resolutionDims[resolution.value][0];\n        height = resolutionDims[resolution.value][1];\n        console.log(`Changed resolution to ${width}x${height}`);\n        outCanvas.width = width;\n        outCanvas.height = height;\n        // canvas.width = width;\n        // canvas.height = height;\n        // var commandEncoder = device.createCommandEncoder();\n        // var uploadResolution = device.createBuffer(\n        //     {size: 2 * 4, usage: GPUBufferUsage.COPY_SRC, mappedAtCreation: true});\n        // new Uint32Array(uploadResolution.getMappedRange()).set([canvas.width, canvas.height]);\n        // uploadResolution.unmap();\n        // commandEncoder.copyBufferToBuffer(uploadResolution, 0, resolutionBuffer, 0, 2 * 4);\n        // device.queue.submit([commandEncoder.finish()]);\n        // camera = new ArcballCamera(defaultEye, center, up, 4, [\n        //     width,\n        //     height,\n        // ]);\n        await session.release();\n        session = await new _inference_session__WEBPACK_IMPORTED_MODULE_6__.InferenceSessionWGPU(width, height);\n        volumeRC = new _volume_raycaster__WEBPACK_IMPORTED_MODULE_1__.VolumeRaycaster(\n            device, width, height, recordVisibleBlocksUI, enableSpeculationUI, parseInt(headstartSlider.value), session.inputBuffers[0]);\n        await volumeRC.setCompressedVolume(\n            compressedData, dataset.compressionRate, volumeDims, dataset.scale);\n        recomputeSurface = true;\n        renderPipelineBG = device.createBindGroup({\n            layout: renderBGLayout,\n            entries: [\n                {binding: 0, resource: volumeRC.renderTarget.createView()},\n                {binding: 1, resource: {buffer: resolutionBuffer}},\n                {binding: 2, resource: sampler}\n            ]\n        });\n        imageBuffer = device.createBuffer({\n            size: width * height * 4,\n            usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,\n        });\n    };\n    headstartSlider.onchange = async () => {\n        volumeRC = new _volume_raycaster__WEBPACK_IMPORTED_MODULE_1__.VolumeRaycaster(\n            device, width, height, recordVisibleBlocksUI, enableSpeculationUI, parseInt(headstartSlider.value), session.inputBuffers[0]);\n        await volumeRC.setCompressedVolume(\n            compressedData, dataset.compressionRate, volumeDims, dataset.scale);\n        recomputeSurface = true;\n        renderPipelineBG = device.createBindGroup({\n            layout: renderBGLayout,\n            entries: [\n                {binding: 0, resource: volumeRC.renderTarget.createView()},\n                {binding: 1, resource: {buffer: resolutionBuffer}},\n                {binding: 2, resource: sampler}\n            ]\n        });\n    }\n    await volumeRC.setCompressedVolume(\n        compressedData, dataset.compressionRate, volumeDims, dataset.scale);\n\n    var totalMemDisplay = document.getElementById(\"totalMemDisplay\");\n    var mcMemDisplay = document.getElementById(\"mcMemDisplay\");\n    var cacheMemDisplay = document.getElementById(\"cacheMemDisplay\");\n    var fpsDisplay = document.getElementById(\"fps\");\n    var camDisplay = document.getElementById(\"camDisplay\");\n\n    var enableCache = document.getElementById(\"enableCache\");\n    enableCache.checked = true;\n\n    var isovalueSlider = document.getElementById(\"isovalue\");\n    isovalueSlider.min = dataset.range[0];\n    isovalueSlider.max = dataset.range[1];\n    if (dataset.step !== undefined) {\n        isovalueSlider.step = dataset.step;\n    } else {\n        isovalueSlider.step = (isovalueSlider.max - isovalueSlider.min) / 255.0;\n    }\n    isovalueSlider.value = (dataset.range[0] + dataset.range[1]) / 2.0;\n    var currentIsovalue = isovalueSlider.value;\n\n    var cacheInfo = document.getElementById(\"cacheInfo\");\n    var displayCacheInfo = function () {\n        var percentActive = (volumeRC.numVisibleBlocks / volumeRC.totalBlocks) * 100;\n        cacheInfo.innerHTML = `Cache Space: ${volumeRC.lruCache.cacheSize\n            } blocks\n            (${(\n                (volumeRC.lruCache.cacheSize / volumeRC.totalBlocks) *\n                100\n            ).toFixed(2)} %\n            of ${volumeRC.totalBlocks} total blocks)<br/>\n            # Cache Slots Available ${volumeRC.lruCache.displayNumSlotsAvailable}<br/>\n            <b>For this Pass:</b><br/>\n            # Newly Decompressed: ${volumeRC.newDecompressed}<br/>\n            # Visible Blocks: ${volumeRC.numVisibleBlocks}\n            (${percentActive.toFixed(2)}%)<br/>`;\n    };\n    displayCacheInfo();\n\n    const defaultEye = gl_matrix__WEBPACK_IMPORTED_MODULE_8__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_8__.create(), 0.0, 0.0, -1.5);\n    const center = gl_matrix__WEBPACK_IMPORTED_MODULE_8__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_8__.create(), 0.0, 0.0, 0.0);\n    const up = gl_matrix__WEBPACK_IMPORTED_MODULE_8__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_8__.create(), 0.0, 1.0, 0.0);\n    /*\n    // For matching benchmark configurations\n    var benchmarkEye = {\n        \"eyePos\": [-1.012491226196289, 0.7122936248779297, 0.8317527174949646],\n        \"eyeDir\": [0.6625354886054993, -0.5211779475212097, -0.537977933883667],\n        \"upDir\": [0.4094274640083313, 0.8534227609634399, -0.3225504457950592],\n    };\n    const defaultEye = vec3.set(vec3.create(),\n                                benchmarkEye[\"eyePos\"][0],\n                                benchmarkEye[\"eyePos\"][1],\n                                benchmarkEye[\"eyePos\"][2]);\n    const center = vec3.add(vec3.create(),\n                            defaultEye,\n                            vec3.set(vec3.create(),\n                                     benchmarkEye[\"eyeDir\"][0],\n                                     benchmarkEye[\"eyeDir\"][1],\n                                     benchmarkEye[\"eyeDir\"][2]));\n    const up = vec3.set(vec3.create(),\n                        benchmarkEye[\"upDir\"][0],\n                        benchmarkEye[\"upDir\"][1],\n                        benchmarkEye[\"upDir\"][2]);\n                        */\n\n    var camera = new _webgl_util__WEBPACK_IMPORTED_MODULE_3__.ArcballCamera(defaultEye, center, up, 4, [\n        canvas.width,\n        canvas.height,\n    ]);\n    const nearPlane = 0.1;\n    var proj = gl_matrix__WEBPACK_IMPORTED_MODULE_9__.perspective(\n        gl_matrix__WEBPACK_IMPORTED_MODULE_9__.create(), (50 * Math.PI) / 180.0, canvas.width / canvas.height, nearPlane, 1000);\n    var projView = gl_matrix__WEBPACK_IMPORTED_MODULE_9__.create();\n    var benchmarkRadius = 1.5;\n\n    var numFrames = 0;\n    var totalTimeMS = 0;\n    var cameraChanged = true;\n\n    var controller = new _webgl_util__WEBPACK_IMPORTED_MODULE_3__.Controller();\n    controller.mousemove = function (prev, cur, evt) {\n        if (evt.buttons == 1) {\n            cameraChanged = true;\n            camera.rotate(prev, cur);\n            numFrames = 0;\n            totalTimeMS = 0;\n        } else if (evt.buttons == 2) {\n            cameraChanged = true;\n            camera.pan([cur[0] - prev[0], prev[1] - cur[1]]);\n            numFrames = 0;\n            totalTimeMS = 0;\n        }\n    };\n    controller.wheel = function (amt) {\n        cameraChanged = true;\n        camera.zoom(amt * 0.05);\n        numFrames = 0;\n        totalTimeMS = 0;\n    };\n    controller.pinch = controller.wheel;\n    controller.twoFingerDrag = function (drag) {\n        cameraChanged = true;\n        camera.pan(drag);\n        numFrames = 0;\n        totalTimeMS = 0;\n    };\n    controller.registerForCanvas(canvas);\n\n    var tensorToTextureBGLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                storageTexture: {access: \"write-only\", format: \"rgba8unorm\"}\n            },\n            {binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n        ]\n    });\n\n    var tensorToTexturePipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [tensorToTextureBGLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.tensor_to_texture_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    var animationFrame = function () {\n        var resolve = null;\n        var promise = new Promise((r) => (resolve = r));\n        window.requestAnimationFrame(resolve);\n        return promise;\n    };\n\n    requestAnimationFrame(animationFrame);\n\n    var upload = device.createBuffer({\n        // mat4, 2 vec4's and a float + some extra to align\n        size: 32 * 4,\n        usage: GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC,\n    });\n\n    /* We need a render pass to blit the image that is computed by the volume\n     * raycaster to the screen. This just draws a quad to the screen and loads\n     * the corresponding texel from the render to show on the screen\n     */\n    var swapChainFormat = \"bgra8unorm\";\n    context.configure(\n        {device: device, format: swapChainFormat, usage: GPUTextureUsage.RENDER_ATTACHMENT});\n\n    var vertModule = device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.display_render_vert_spv});\n    var fragModule = device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.display_render_frag_spv});\n\n    var renderPipeline = device.createRenderPipeline({\n        layout: device.createPipelineLayout({bindGroupLayouts: [renderBGLayout]}),\n        vertex: {\n            module: vertModule,\n            entryPoint: \"main\",\n        },\n        fragment:\n            {module: fragModule, entryPoint: \"main\", targets: [{format: swapChainFormat}]}\n    });\n\n    var renderPipelineBG = device.createBindGroup({\n        layout: renderBGLayout,\n        entries: [\n            {binding: 0, resource: volumeRC.renderTarget.createView()},\n            {binding: 1, resource: {buffer: resolutionBuffer}},\n            {binding: 2, resource: sampler}\n        ]\n    });\n\n    var renderPassDesc = {\n        colorAttachments: [{\n            view: undefined,\n            loadOp: \"clear\",\n            clearValue: [0.3, 0.3, 0.3, 1],\n            storeOp: \"store\"\n        }],\n    };\n\n    var currentBenchmark = null;\n    var cameraBenchmark = null;\n\n    var perfStats = [];\n\n    if (autobenchmarkConfig) {\n        requestBenchmark = \"random\";\n        document.getElementById(\"infer\").checked = autobenchmarkConfig.infer;\n        benchmarkRadius = autobenchmarkConfig.radius;\n    }\n\n    var recomputeSurface = true;\n    var surfaceDone = false;\n    var averageComputeTime = 0;\n    while (true) {\n        await animationFrame();\n        var start = performance.now();\n\n        if (requestBenchmark && !currentBenchmark) {\n            perfStats = [];\n            await volumeRC.lruCache.reset();\n            if (requestBenchmark == \"random\") {\n                var valueBenchmark =\n                    new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.RandomIsovalueBenchmark(isovalueSlider, dataset.range);\n                // cameraBenchmark = new CameraOrbitBenchmark(1.5);\n                cameraBenchmark = new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.RotateBenchmark(benchmarkRadius, canvas.width, canvas.height);\n                currentBenchmark = new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.NestedBenchmark(valueBenchmark, cameraBenchmark);\n            } else if (requestBenchmark == \"sweepUp\") {\n                var valueBenchmark =\n                    new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.SweepIsovalueBenchmark(isovalueSlider, dataset.range, true);\n                // cameraBenchmark = new CameraOrbitBenchmark(1.5);\n                cameraBenchmark = new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.RotateBenchmark(benchmarkRadius, canvas.width, canvas.height);\n                currentBenchmark = new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.NestedBenchmark(valueBenchmark, cameraBenchmark);\n            } else if (requestBenchmark == \"sweepDown\") {\n                var valueBenchmark =\n                    new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.SweepIsovalueBenchmark(isovalueSlider, dataset.range, false);\n                // cameraBenchmark = new CameraOrbitBenchmark(1.5);\n                cameraBenchmark = new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.RotateBenchmark(benchmarkRadius, canvas.width, canvas.height);\n                currentBenchmark = new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.NestedBenchmark(valueBenchmark, cameraBenchmark);\n            } else if (requestBenchmark == \"manualSingle\") {\n                currentBenchmark = new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.ManualSingleBenchmark();\n                recomputeSurface = true;\n            } else {\n                // cameraBenchmark = new CameraOrbitBenchmark(1.5);\n                cameraBenchmark = new _run_benchmark__WEBPACK_IMPORTED_MODULE_2__.RotateBenchmark(benchmarkRadius, canvas.width, canvas.height);\n                currentBenchmark = cameraBenchmark;\n            }\n            requestBenchmark = null;\n        }\n\n        if (currentBenchmark && surfaceDone) {\n            if (!currentBenchmark.run()) {\n                var blob = new Blob([JSON.stringify(perfStats)], {type: \"text/plain\"});\n                let outputName = `perf-${dataset.name}-${currentBenchmark.name}.json`;\n                if (autobenchmarkConfig) {\n                    outputName = `perf-${dataset.name}-${currentBenchmark.name}` +\n                        `-${autobenchmarkConfig.resolution}p` +\n                        `-${autobenchmarkConfig.startSpecCount}ssc` +\n                        `-${autobenchmarkConfig.radius}r` +\n                        `-${autobenchmarkConfig.imageCompleteness}ic.json`;\n                }\n                (0,file_saver__WEBPACK_IMPORTED_MODULE_5__.saveAs)(blob, outputName);\n\n                currentBenchmark = null;\n\n                // Advance to the next benchmark\n                if (autobenchmarkConfig) {\n                    if (autobenchmarkIndex + 1 < benchmarkConfigs.length) {\n                        window.location.hash = `autobenchmark=${autobenchmarkIndex + 1}`;\n                        window.location.reload();\n                    } else {\n                        console.log('Autobenchmark complete');\n                        document.getElementById(\"autobenchmark-status\").innerHTML = \"Autobenchmark Complete!\";\n                    }\n                }\n            } else if (currentBenchmark.name.includes(\"cameraOrbit\")) {\n                camera = new _webgl_util__WEBPACK_IMPORTED_MODULE_3__.ArcballCamera(cameraBenchmark.currentPoint, center, up, 4, [\n                    canvas.width,\n                    canvas.height,\n                ]);\n                cameraChanged = true;\n            } else if (currentBenchmark.name.includes(\"rotate\")) {\n                if (cameraBenchmark.iteration == 1) {\n                    camera = new _webgl_util__WEBPACK_IMPORTED_MODULE_3__.ArcballCamera(cameraBenchmark.startPoint, center, up, 4, [\n                        canvas.width,\n                        canvas.height,\n                    ]);\n                } else {\n                    camera.rotate([cameraBenchmark.lastX, cameraBenchmark.lastY], [cameraBenchmark.currentX, cameraBenchmark.currentY]);\n                }\n                cameraChanged = true;\n            }\n        }\n\n        projView = gl_matrix__WEBPACK_IMPORTED_MODULE_9__.mul(projView, proj, camera.camera);\n        await upload.mapAsync(GPUMapMode.WRITE);\n        var uploadArray = new Float32Array(upload.getMappedRange());\n        uploadArray.set(projView);\n        uploadArray.set(camera.eyePos(), 16);\n        uploadArray.set(camera.eyeDir(), 20);\n        uploadArray.set([nearPlane], 24);\n        upload.unmap();\n\n        if (cameraChanged) {\n            cameraChanged = false;\n            recomputeSurface = true;\n\n            var eyePos = camera.eyePos();\n            var eyeDir = camera.eyeDir();\n            var upDir = camera.upDir();\n            camDisplay.innerHTML = `eye = ${eyePos[0].toFixed(4)}, ${eyePos[1].toFixed(\n                4\n            )}, ${eyePos[2].toFixed(4)}<br/>\n                dir = ${eyeDir[0].toFixed(4)}, ${eyeDir[1].toFixed(\n                4\n            )}, ${eyeDir[2].toFixed(4)}<br/>\n                up = ${upDir[0].toFixed(4)}, ${upDir[1].toFixed(\n                4\n            )}, ${upDir[2].toFixed(4)}`;\n        }\n\n        if (!enableCache.checked) {\n            await volumeRC.lruCache.reset();\n        }\n\n        if (isovalueSlider.value != currentIsovalue) {\n            recomputeSurface = true;\n            currentIsovalue = parseFloat(isovalueSlider.value);\n            session.cleanRecurrentState();\n        }\n\n        if (recomputeSurface || !surfaceDone) {\n            var inferenceTime = false;\n            var eyePos = camera.eyePos();\n            var eyeDir = camera.eyeDir();\n            var upDir = camera.upDir();\n\n            var start = performance.now();\n            surfaceDone = await volumeRC.renderSurface(\n                currentIsovalue, 1, upload, recomputeSurface, eyePos, eyeDir, upDir);\n            var end = performance.now();\n\n            averageComputeTime =\n                Math.round(volumeRC.totalPassTime / volumeRC.numPasses);\n            recomputeSurface = false;\n\n            displayCacheInfo();\n            var memUse = volumeRC.reportMemoryUse();\n            mcMemDisplay.innerHTML = memUse[0];\n            cacheMemDisplay.innerHTML = memUse[1];\n            totalMemDisplay.innerHTML = `Total Memory: ${memUse[2]}`;\n\n            if (document.getElementById(\"outputImages\").checked) {\n                // if (volumeRC.numPasses == 1 || surfaceDone){\n                var filename = dataset.name.replace(/_/g, '').substring(0, 5);\n                if (currentBenchmark) {\n                    if (currentBenchmark.name.includes(\"rotate\")) {\n                        filename = filename + \"_seq\" + cameraBenchmark.renderID + \"_\" + cameraBenchmark.iteration;\n                        filename += \"_\" + Math.floor(volumeRC.imageCompleteness * 100);\n                        if (surfaceDone) {\n                            filename += \"_ref\";\n                        } else {\n                            filename += `_${String(volumeRC.numPasses).padStart(4, '0')}spp`;\n                        }\n                    } else {\n                        filename += volumeRC.renderID + \"_\" + String(volumeRC.numPasses).padStart(4, '0');\n                    }\n                }\n                else {\n                    filename += volumeRC.renderID + \"_\" + String(volumeRC.numPasses).padStart(4, '0');\n                }\n                await takeScreenshot(\n                    device,\n                    filename,\n                    volumeRC.renderTarget,\n                    imageBuffer,\n                    document.getElementById('out-canvas'));\n                // }\n            }\n            if (document.getElementById(\"infer\").checked && surfaceDone) {\n                var inferenceTime = await session.runInference();\n                console.log(\"inference time\", inferenceTime);\n                console.log(\"Time for kernels\", sum);\n\n                var start = performance.now();\n                var tensorToTextureBG = device.createBindGroup({\n                    layout: tensorToTextureBGLayout,\n                    entries: [\n                        {binding: 0, resource: {buffer: session.outputBuffers[0]}},\n                        {binding: 1, resource: volumeRC.renderTarget.createView()},\n                        {binding: 2, resource: {buffer: volumeRC.volumeInfoBuffer}},\n                    ]\n                });\n                var commandEncoder = device.createCommandEncoder();\n                var pass = commandEncoder.beginComputePass();\n                pass.setPipeline(tensorToTexturePipeline);\n                pass.setBindGroup(0, tensorToTextureBG);\n                pass.dispatchWorkgroups(Math.ceil(width / 256), height, 1);\n                pass.end();\n                device.queue.submit([commandEncoder.finish()]);\n                sum = 0;\n                await device.queue.onSubmittedWorkDone();\n                var end = performance.now();\n                console.log(\"Texture write time\", Math.round(end - start))\n            }\n            if (surfaceDone) {\n                perfStats.push(\n                    {\n                        \"isovalue\": currentIsovalue,\n                        \"stats\": volumeRC.surfacePerfStats,\n                        \"inferenceTime\": inferenceTime,\n                        \"config\": {\n                            \"resolution\": [width, height],\n                            \"startSpecCount\": headstartSlider.value,\n                            \"completenessThreshold\": completenessThreshold.value,\n                        }\n                    });\n            }\n\n        }\n        if (saveScreenshot) {\n            saveScreenshot = false;\n            await takeScreenshot(device,\n                `${dataset.name}_prog_iso`,\n                volumeRC.renderTarget,\n                imageBuffer,\n                document.getElementById('out-canvas'));\n        }\n\n        // Blit the image rendered by the raycaster onto the screen\n        var commandEncoder = device.createCommandEncoder();\n\n        renderPassDesc.colorAttachments[0].view = context.getCurrentTexture().createView();\n        var renderPass = commandEncoder.beginRenderPass(renderPassDesc);\n\n        renderPass.setPipeline(renderPipeline);\n        renderPass.setBindGroup(0, renderPipelineBG);\n        // Draw a full screen quad\n        renderPass.draw(6, 1, 0, 0);\n        renderPass.end();\n        device.queue.submit([commandEncoder.finish()]);\n\n        // Measure render time by waiting for the work done\n        await device.queue.onSubmittedWorkDone();\n        var end = performance.now();\n        numFrames += 1;\n        totalTimeMS += end - start;\n        fpsDisplay.innerHTML = `Avg. FPS ${Math.round((1000.0 * numFrames) / totalTimeMS)}<br/>\n            Avg. pass time: ${averageComputeTime}ms<br/>\n            Pass # ${volumeRC.numPasses}<br/>\n            ${inferenceTime ? \"Inference Time: \" + inferenceTime + \"ms<br/>\" : \"\"}\n            Total pipeline time: ${Math.round(volumeRC.totalPassTime)}ms`;\n    }\n})();\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/app.js?");

/***/ }),

/***/ "./src/embedded_shaders.js":
/*!*********************************!*\
  !*** ./src/embedded_shaders.js ***!
  \*********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ScanBlockSize\": () => (/* binding */ ScanBlockSize),\n/* harmony export */   \"SortChunkSize\": () => (/* binding */ SortChunkSize),\n/* harmony export */   \"add_block_sums_comp_spv\": () => (/* binding */ add_block_sums_comp_spv),\n/* harmony export */   \"block_prefix_sum_comp_spv\": () => (/* binding */ block_prefix_sum_comp_spv),\n/* harmony export */   \"color_active_rays_comp_spv\": () => (/* binding */ color_active_rays_comp_spv),\n/* harmony export */   \"combine_block_information_comp_spv\": () => (/* binding */ combine_block_information_comp_spv),\n/* harmony export */   \"compute_coarse_cell_range_comp_spv\": () => (/* binding */ compute_coarse_cell_range_comp_spv),\n/* harmony export */   \"compute_initial_rays_frag_spv\": () => (/* binding */ compute_initial_rays_frag_spv),\n/* harmony export */   \"compute_initial_rays_vert_spv\": () => (/* binding */ compute_initial_rays_vert_spv),\n/* harmony export */   \"compute_voxel_range_comp_spv\": () => (/* binding */ compute_voxel_range_comp_spv),\n/* harmony export */   \"count_block_rays_wgsl_spv\": () => (/* binding */ count_block_rays_wgsl_spv),\n/* harmony export */   \"debug_view_rays_per_block_comp_spv\": () => (/* binding */ debug_view_rays_per_block_comp_spv),\n/* harmony export */   \"depth_composite_comp_spv\": () => (/* binding */ depth_composite_comp_spv),\n/* harmony export */   \"display_render_frag_spv\": () => (/* binding */ display_render_frag_spv),\n/* harmony export */   \"display_render_vert_spv\": () => (/* binding */ display_render_vert_spv),\n/* harmony export */   \"lru_cache_age_slots_comp_spv\": () => (/* binding */ lru_cache_age_slots_comp_spv),\n/* harmony export */   \"lru_cache_extract_slot_available_comp_spv\": () => (/* binding */ lru_cache_extract_slot_available_comp_spv),\n/* harmony export */   \"lru_cache_init_comp_spv\": () => (/* binding */ lru_cache_init_comp_spv),\n/* harmony export */   \"lru_cache_mark_new_items_comp_spv\": () => (/* binding */ lru_cache_mark_new_items_comp_spv),\n/* harmony export */   \"lru_cache_update_comp_spv\": () => (/* binding */ lru_cache_update_comp_spv),\n/* harmony export */   \"lru_copy_available_slot_age_comp_spv\": () => (/* binding */ lru_copy_available_slot_age_comp_spv),\n/* harmony export */   \"macro_traverse_comp_spv\": () => (/* binding */ macro_traverse_comp_spv),\n/* harmony export */   \"mark_block_active_wgsl_spv\": () => (/* binding */ mark_block_active_wgsl_spv),\n/* harmony export */   \"mark_ray_active_comp_spv\": () => (/* binding */ mark_ray_active_comp_spv),\n/* harmony export */   \"merge_sorted_chunks_comp_spv\": () => (/* binding */ merge_sorted_chunks_comp_spv),\n/* harmony export */   \"prefix_sum_comp_spv\": () => (/* binding */ prefix_sum_comp_spv),\n/* harmony export */   \"radix_sort_chunk_comp_spv\": () => (/* binding */ radix_sort_chunk_comp_spv),\n/* harmony export */   \"raytrace_active_block_comp_spv\": () => (/* binding */ raytrace_active_block_comp_spv),\n/* harmony export */   \"reset_block_active_comp_spv\": () => (/* binding */ reset_block_active_comp_spv),\n/* harmony export */   \"reset_block_num_rays_comp_spv\": () => (/* binding */ reset_block_num_rays_comp_spv),\n/* harmony export */   \"reset_rays_comp_spv\": () => (/* binding */ reset_rays_comp_spv),\n/* harmony export */   \"reset_speculative_ids_comp_spv\": () => (/* binding */ reset_speculative_ids_comp_spv),\n/* harmony export */   \"reverse_buffer_comp_spv\": () => (/* binding */ reverse_buffer_comp_spv),\n/* harmony export */   \"stream_compact_comp_spv\": () => (/* binding */ stream_compact_comp_spv),\n/* harmony export */   \"stream_compact_data_comp_spv\": () => (/* binding */ stream_compact_data_comp_spv),\n/* harmony export */   \"tensor_to_texture_comp_spv\": () => (/* binding */ tensor_to_texture_comp_spv),\n/* harmony export */   \"write_ray_and_block_id_comp_spv\": () => (/* binding */ write_ray_and_block_id_comp_spv),\n/* harmony export */   \"zfp_compute_block_range_comp_spv\": () => (/* binding */ zfp_compute_block_range_comp_spv),\n/* harmony export */   \"zfp_decompress_block_comp_spv\": () => (/* binding */ zfp_decompress_block_comp_spv)\n/* harmony export */ });\nconst ScanBlockSize = 512;\nconst SortChunkSize = 256;\nconst prefix_sum_comp_spv = `alias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct Data {\n  vals : RTArr_1,\n}\n\nstruct BlockSums {\n  block_sums : RTArr_1,\n}\n\nvar<workgroup> chunk : array<u32, 512u>;\n\nvar<private> gl_LocalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<storage, read_write> x_23 : Data;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(1) var<storage, read_write> x_105 : BlockSums;\n\nvar<private> gl_WorkGroupID : vec3<u32>;\n\nfn main_1() {\n  var offs : u32;\n  var d : i32;\n  var a : u32;\n  var b : u32;\n  var d_1 : i32;\n  var a_1 : u32;\n  var b_1 : u32;\n  var tmp : u32;\n  let x_18 : u32 = gl_LocalInvocationID.x;\n  let x_28 : u32 = gl_GlobalInvocationID.x;\n  let x_32 : u32 = x_23.vals[(2u * x_28)];\n  chunk[(2u * x_18)] = x_32;\n  let x_36 : u32 = gl_LocalInvocationID.x;\n  let x_41 : u32 = gl_GlobalInvocationID.x;\n  let x_45 : u32 = x_23.vals[((2u * x_41) + 1u)];\n  chunk[((2u * x_36) + 1u)] = x_45;\n  offs = 1u;\n  d = 256i;\n  loop {\n    let x_57 : i32 = d;\n    if ((x_57 > 0i)) {\n    } else {\n      break;\n    }\n    workgroupBarrier();\n    let x_62 : u32 = gl_LocalInvocationID.x;\n    let x_63 : i32 = d;\n    if ((x_62 < bitcast<u32>(x_63))) {\n      let x_69 : u32 = offs;\n      let x_71 : u32 = gl_LocalInvocationID.x;\n      a = ((x_69 * ((2u * x_71) + 1u)) - 1u);\n      let x_77 : u32 = offs;\n      let x_79 : u32 = gl_LocalInvocationID.x;\n      b = ((x_77 * ((2u * x_79) + 2u)) - 1u);\n      let x_84 : u32 = b;\n      let x_85 : u32 = a;\n      let x_87 : u32 = chunk[x_85];\n      let x_89 : u32 = chunk[x_84];\n      chunk[x_84] = (x_89 + x_87);\n    }\n    let x_92 : u32 = offs;\n    offs = (x_92 << bitcast<u32>(1i));\n\n    continuing {\n      let x_95 : i32 = d;\n      d = (x_95 >> bitcast<u32>(1i));\n    }\n  }\n  let x_98 : u32 = gl_LocalInvocationID.x;\n  if ((x_98 == 0u)) {\n    let x_108 : u32 = gl_WorkGroupID.x;\n    let x_111 : u32 = chunk[511i];\n    x_105.block_sums[x_108] = x_111;\n    chunk[511i] = 0u;\n  }\n  d_1 = 1i;\n  loop {\n    let x_120 : i32 = d_1;\n    if ((x_120 < 512i)) {\n    } else {\n      break;\n    }\n    let x_123 : u32 = offs;\n    offs = (x_123 >> bitcast<u32>(1i));\n    workgroupBarrier();\n    let x_126 : u32 = gl_LocalInvocationID.x;\n    let x_127 : i32 = d_1;\n    if ((x_126 < bitcast<u32>(x_127))) {\n      let x_133 : u32 = offs;\n      let x_135 : u32 = gl_LocalInvocationID.x;\n      a_1 = ((x_133 * ((2u * x_135) + 1u)) - 1u);\n      let x_141 : u32 = offs;\n      let x_143 : u32 = gl_LocalInvocationID.x;\n      b_1 = ((x_141 * ((2u * x_143) + 2u)) - 1u);\n      let x_149 : u32 = a_1;\n      let x_151 : u32 = chunk[x_149];\n      tmp = x_151;\n      let x_152 : u32 = a_1;\n      let x_153 : u32 = b_1;\n      let x_155 : u32 = chunk[x_153];\n      chunk[x_152] = x_155;\n      let x_157 : u32 = b_1;\n      let x_158 : u32 = tmp;\n      let x_160 : u32 = chunk[x_157];\n      chunk[x_157] = (x_160 + x_158);\n    }\n\n    continuing {\n      let x_163 : i32 = d_1;\n      d_1 = (x_163 << bitcast<u32>(1i));\n    }\n  }\n  workgroupBarrier();\n  let x_166 : u32 = gl_GlobalInvocationID.x;\n  let x_169 : u32 = gl_LocalInvocationID.x;\n  let x_172 : u32 = chunk[(2u * x_169)];\n  x_23.vals[(2u * x_166)] = x_172;\n  let x_175 : u32 = gl_GlobalInvocationID.x;\n  let x_179 : u32 = gl_LocalInvocationID.x;\n  let x_183 : u32 = chunk[((2u * x_179) + 1u)];\n  x_23.vals[((2u * x_175) + 1u)] = x_183;\n  return;\n}\n\n@compute @workgroup_size(256i, 1i, 1i)\nfn main(@builtin(local_invocation_id) gl_LocalInvocationID_param : vec3<u32>, @builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>, @builtin(workgroup_id) gl_WorkGroupID_param : vec3<u32>) {\n  gl_LocalInvocationID = gl_LocalInvocationID_param;\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  gl_WorkGroupID = gl_WorkGroupID_param;\n  main_1();\n}\n`;\n\nconst block_prefix_sum_comp_spv = `alias RTArr = array<u32>;\n\nstruct Data {\n  vals : RTArr,\n}\n\nstruct CarryInOut {\n  carry_in : u32,\n  carry_out : u32,\n}\n\nvar<workgroup> chunk : array<u32, 512u>;\n\nvar<private> gl_LocalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<storage, read_write> x_23 : Data;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(1) var<storage, read_write> x_104 : CarryInOut;\n\nfn main_1() {\n  var offs : u32;\n  var d : i32;\n  var a : u32;\n  var b : u32;\n  var d_1 : i32;\n  var a_1 : u32;\n  var b_1 : u32;\n  var tmp : u32;\n  let x_18 : u32 = gl_LocalInvocationID.x;\n  let x_28 : u32 = gl_GlobalInvocationID.x;\n  let x_32 : u32 = x_23.vals[(2u * x_28)];\n  chunk[(2u * x_18)] = x_32;\n  let x_36 : u32 = gl_LocalInvocationID.x;\n  let x_41 : u32 = gl_GlobalInvocationID.x;\n  let x_45 : u32 = x_23.vals[((2u * x_41) + 1u)];\n  chunk[((2u * x_36) + 1u)] = x_45;\n  offs = 1u;\n  d = 256i;\n  loop {\n    let x_57 : i32 = d;\n    if ((x_57 > 0i)) {\n    } else {\n      break;\n    }\n    workgroupBarrier();\n    let x_62 : u32 = gl_LocalInvocationID.x;\n    let x_63 : i32 = d;\n    if ((x_62 < bitcast<u32>(x_63))) {\n      let x_69 : u32 = offs;\n      let x_71 : u32 = gl_LocalInvocationID.x;\n      a = ((x_69 * ((2u * x_71) + 1u)) - 1u);\n      let x_77 : u32 = offs;\n      let x_79 : u32 = gl_LocalInvocationID.x;\n      b = ((x_77 * ((2u * x_79) + 2u)) - 1u);\n      let x_84 : u32 = b;\n      let x_85 : u32 = a;\n      let x_87 : u32 = chunk[x_85];\n      let x_89 : u32 = chunk[x_84];\n      chunk[x_84] = (x_89 + x_87);\n    }\n    let x_92 : u32 = offs;\n    offs = (x_92 << bitcast<u32>(1i));\n\n    continuing {\n      let x_95 : i32 = d;\n      d = (x_95 >> bitcast<u32>(1i));\n    }\n  }\n  let x_98 : u32 = gl_LocalInvocationID.x;\n  if ((x_98 == 0u)) {\n    let x_107 : u32 = chunk[511i];\n    let x_109 : u32 = x_104.carry_in;\n    x_104.carry_out = (x_107 + x_109);\n    chunk[511i] = 0u;\n  }\n  d_1 = 1i;\n  loop {\n    let x_119 : i32 = d_1;\n    if ((x_119 < 512i)) {\n    } else {\n      break;\n    }\n    let x_122 : u32 = offs;\n    offs = (x_122 >> bitcast<u32>(1i));\n    workgroupBarrier();\n    let x_125 : u32 = gl_LocalInvocationID.x;\n    let x_126 : i32 = d_1;\n    if ((x_125 < bitcast<u32>(x_126))) {\n      let x_132 : u32 = offs;\n      let x_134 : u32 = gl_LocalInvocationID.x;\n      a_1 = ((x_132 * ((2u * x_134) + 1u)) - 1u);\n      let x_140 : u32 = offs;\n      let x_142 : u32 = gl_LocalInvocationID.x;\n      b_1 = ((x_140 * ((2u * x_142) + 2u)) - 1u);\n      let x_148 : u32 = a_1;\n      let x_150 : u32 = chunk[x_148];\n      tmp = x_150;\n      let x_151 : u32 = a_1;\n      let x_152 : u32 = b_1;\n      let x_154 : u32 = chunk[x_152];\n      chunk[x_151] = x_154;\n      let x_156 : u32 = b_1;\n      let x_157 : u32 = tmp;\n      let x_159 : u32 = chunk[x_156];\n      chunk[x_156] = (x_159 + x_157);\n    }\n\n    continuing {\n      let x_162 : i32 = d_1;\n      d_1 = (x_162 << bitcast<u32>(1i));\n    }\n  }\n  workgroupBarrier();\n  let x_165 : u32 = gl_GlobalInvocationID.x;\n  let x_168 : u32 = gl_LocalInvocationID.x;\n  let x_171 : u32 = chunk[(2u * x_168)];\n  let x_173 : u32 = x_104.carry_in;\n  x_23.vals[(2u * x_165)] = (x_171 + x_173);\n  let x_177 : u32 = gl_GlobalInvocationID.x;\n  let x_181 : u32 = gl_LocalInvocationID.x;\n  let x_185 : u32 = chunk[((2u * x_181) + 1u)];\n  let x_187 : u32 = x_104.carry_in;\n  x_23.vals[((2u * x_177) + 1u)] = (x_185 + x_187);\n  return;\n}\n\n@compute @workgroup_size(256i, 1i, 1i)\nfn main(@builtin(local_invocation_id) gl_LocalInvocationID_param : vec3<u32>, @builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_LocalInvocationID = gl_LocalInvocationID_param;\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst add_block_sums_comp_spv = `alias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct BlockSums {\n  block_sums : RTArr_1,\n}\n\nstruct Data {\n  vals : RTArr_1,\n}\n\n@group(0) @binding(1) var<storage, read_write> x_12 : BlockSums;\n\nvar<private> gl_WorkGroupID : vec3<u32>;\n\n@group(0) @binding(0) var<storage, read_write> x_28 : Data;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\nfn main_1() {\n  var prev_sum : u32;\n  let x_21 : u32 = gl_WorkGroupID.x;\n  let x_24 : u32 = x_12.block_sums[x_21];\n  prev_sum = x_24;\n  let x_32 : u32 = gl_GlobalInvocationID.x;\n  let x_33 : u32 = (2u * x_32);\n  let x_34 : u32 = prev_sum;\n  let x_36 : u32 = x_28.vals[x_33];\n  x_28.vals[x_33] = (x_36 + x_34);\n  let x_40 : u32 = gl_GlobalInvocationID.x;\n  let x_43 : u32 = ((2u * x_40) + 1u);\n  let x_44 : u32 = prev_sum;\n  let x_46 : u32 = x_28.vals[x_43];\n  x_28.vals[x_43] = (x_46 + x_44);\n  return;\n}\n\n@compute @workgroup_size(256i, 1i, 1i)\nfn main(@builtin(workgroup_id) gl_WorkGroupID_param : vec3<u32>, @builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_WorkGroupID = gl_WorkGroupID_param;\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst stream_compact_comp_spv = `alias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct Input {\n  inputs : RTArr_1,\n}\n\nalias RTArr_2 = array<u32>;\n\nstruct Output {\n  outputs : RTArr_1,\n}\n\nstruct Offsets {\n  offsets : RTArr_1,\n}\n\nstruct CompactionOffset {\n  compact_offset : u32,\n}\n\n@group(0) @binding(0) var<storage, read_write> x_10 : Input;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(3) var<storage, read_write> x_30 : Output;\n\n@group(0) @binding(1) var<storage, read_write> x_34 : Offsets;\n\n@group(0) @binding(2) var<uniform> x_43 : CompactionOffset;\n\nfn main_1() {\n  let x_19 : u32 = gl_GlobalInvocationID.x;\n  let x_22 : u32 = x_10.inputs[x_19];\n  if ((x_22 != 0u)) {\n    let x_36 : u32 = gl_GlobalInvocationID.x;\n    let x_38 : u32 = x_34.offsets[x_36];\n    let x_40 : u32 = gl_GlobalInvocationID.x;\n    let x_45 : u32 = x_43.compact_offset;\n    x_30.outputs[x_38] = (x_40 + x_45);\n  }\n  return;\n}\n\n@compute @workgroup_size(8i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst stream_compact_data_comp_spv = `struct CompactionOffset {\n  compact_offset : u32,\n}\n\nalias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct Input {\n  inputs : RTArr_1,\n}\n\nalias RTArr_2 = array<u32>;\n\nstruct Output {\n  outputs : RTArr_1,\n}\n\nalias RTArr_3 = array<u32>;\n\nstruct Offsets {\n  offsets : RTArr_1,\n}\n\nstruct Data {\n  input_data : RTArr_1,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(2) var<uniform> x_18 : CompactionOffset;\n\n@group(0) @binding(0) var<storage, read_write> x_28 : Input;\n\n@group(0) @binding(3) var<storage, read_write> x_39 : Output;\n\n@group(0) @binding(1) var<storage, read_write> x_43 : Offsets;\n\n@group(1) @binding(0) var<storage, read_write> x_50 : Data;\n\nfn main_1() {\n  var i : u32;\n  let x_15 : u32 = gl_GlobalInvocationID.x;\n  let x_23 : u32 = x_18.compact_offset;\n  i = (x_15 + x_23);\n  let x_29 : u32 = i;\n  let x_31 : u32 = x_28.inputs[x_29];\n  if ((x_31 != 0u)) {\n    let x_44 : u32 = i;\n    let x_46 : u32 = x_43.offsets[x_44];\n    let x_51 : u32 = i;\n    let x_53 : u32 = x_50.input_data[x_51];\n    x_39.outputs[x_46] = x_53;\n  }\n  return;\n}\n\n@compute @workgroup_size(8i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst compute_initial_rays_vert_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nstruct ViewParams {\n  proj_view : mat4x4<f32>,\n  eye_pos : vec4<f32>,\n  eye_dir : vec4<f32>,\n  near_plane : f32,\n}\n\n@group(0) @binding(2) var<uniform> x_17 : VolumeParams;\n\n@group(0) @binding(0) var<uniform> x_36 : ViewParams;\n\nvar<private> pos : vec3<f32>;\n\nvar<private> transformed_eye : vec3<f32>;\n\nvar<private> vray_dir : vec3<f32>;\n\nvar<private> gl_Position : vec4<f32>;\n\nfn main_1() {\n  var volume_translation : vec3<f32>;\n  let x_22 : vec4<f32> = x_17.volume_scale;\n  volume_translation = (vec3<f32>(0.0f, 0.0f, 0.0f) - (vec3<f32>(x_22.x, x_22.y, x_22.z) * 0.5f));\n  let x_39 : mat4x4<f32> = x_36.proj_view;\n  let x_42 : vec3<f32> = pos;\n  let x_44 : vec4<f32> = x_17.volume_scale;\n  let x_47 : vec3<f32> = volume_translation;\n  let x_48 : vec3<f32> = ((x_42 * vec3<f32>(x_44.x, x_44.y, x_44.z)) + x_47);\n  gl_Position = (x_39 * vec4<f32>(x_48.x, x_48.y, x_48.z, 1.0f));\n  let x_61 : vec4<f32> = x_36.eye_pos;\n  let x_63 : vec3<f32> = volume_translation;\n  let x_66 : vec4<f32> = x_17.volume_scale;\n  transformed_eye = ((vec3<f32>(x_61.x, x_61.y, x_61.z) - x_63) / vec3<f32>(x_66.x, x_66.y, x_66.z));\n  let x_70 : vec3<f32> = pos;\n  let x_71 : vec3<f32> = transformed_eye;\n  vray_dir = (x_70 - x_71);\n  return;\n}\n\nstruct main_out {\n  @builtin(position)\n  gl_Position : vec4<f32>,\n  @location(1) @interpolate(flat)\n  transformed_eye_1 : vec3<f32>,\n  @location(0)\n  vray_dir_1 : vec3<f32>,\n}\n\n@vertex\nfn main(@location(0) pos_param : vec3<f32>) -> main_out {\n  pos = pos_param;\n  main_1();\n  return main_out(gl_Position, transformed_eye, vray_dir);\n}\n`;\n\nconst compute_initial_rays_frag_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nstruct RayInfo {\n  ray_dir : vec3<f32>,\n  t : f32,\n}\n\nalias RTArr = array<RayInfo>;\n\nstruct RayInformation {\n  rays : RTArr,\n}\n\nalias RTArr_1 = array<u32>;\n\nstruct RayBlockIDs {\n  block_ids : RTArr_1,\n}\n\nvar<private> vray_dir : vec3<f32>;\n\nvar<private> transformed_eye : vec3<f32>;\n\n@group(0) @binding(2) var<uniform> x_80 : VolumeParams;\n\nvar<private> gl_FragCoord : vec4<f32>;\n\n@group(0) @binding(1) var<storage, read_write> x_149 : RayInformation;\n\n@group(0) @binding(3) var<storage, read_write> x_157 : RayBlockIDs;\n\nfn intersect_box_vf3_vf3_vf3_vf3_(orig : ptr<function, vec3<f32>>, dir : ptr<function, vec3<f32>>, box_min : vec3<f32>, box_max : vec3<f32>) -> vec2<f32> {\n  var inv_dir : vec3<f32>;\n  var tmin_tmp : vec3<f32>;\n  var tmax_tmp : vec3<f32>;\n  var tmin : vec3<f32>;\n  var tmax : vec3<f32>;\n  var t0 : f32;\n  var t1 : f32;\n  let x_19 : vec3<f32> = *(dir);\n  inv_dir = (vec3<f32>(1.0f, 1.0f, 1.0f) / x_19);\n  let x_23 : vec3<f32> = *(orig);\n  let x_25 : vec3<f32> = inv_dir;\n  tmin_tmp = ((box_min - x_23) * x_25);\n  let x_28 : vec3<f32> = *(orig);\n  let x_30 : vec3<f32> = inv_dir;\n  tmax_tmp = ((box_max - x_28) * x_30);\n  let x_33 : vec3<f32> = tmin_tmp;\n  let x_34 : vec3<f32> = tmax_tmp;\n  tmin = min(x_33, x_34);\n  let x_37 : vec3<f32> = tmin_tmp;\n  let x_38 : vec3<f32> = tmax_tmp;\n  tmax = max(x_37, x_38);\n  let x_45 : f32 = tmin.x;\n  let x_48 : f32 = tmin.y;\n  let x_51 : f32 = tmin.z;\n  t0 = max(x_45, max(x_48, x_51));\n  let x_56 : f32 = tmax.x;\n  let x_58 : f32 = tmax.y;\n  let x_60 : f32 = tmax.z;\n  t1 = min(x_56, min(x_58, x_60));\n  let x_63 : f32 = t0;\n  let x_64 : f32 = t1;\n  return vec2<f32>(x_63, x_64);\n}\n\nfn main_1() {\n  var ray_dir : vec3<f32>;\n  var vol_eye : vec3<f32>;\n  var grid_ray_dir : vec3<f32>;\n  var t_hit : vec2<f32>;\n  var param : vec3<f32>;\n  var param_1 : vec3<f32>;\n  var pixel : u32;\n  let x_71 : vec3<f32> = vray_dir;\n  ray_dir = normalize(x_71);\n  let x_75 : vec3<f32> = transformed_eye;\n  let x_86 : vec4<u32> = x_80.volume_dims;\n  vol_eye = ((x_75 * vec3<f32>(vec3<u32>(x_86.x, x_86.y, x_86.z))) - vec3<f32>(0.5f, 0.5f, 0.5f));\n  let x_94 : vec3<f32> = ray_dir;\n  let x_96 : vec4<u32> = x_80.volume_dims;\n  grid_ray_dir = normalize((x_94 * vec3<f32>(vec3<u32>(x_96.x, x_96.y, x_96.z))));\n  let x_106 : vec4<u32> = x_80.volume_dims;\n  let x_112 : vec3<f32> = vol_eye;\n  param = x_112;\n  let x_114 : vec3<f32> = grid_ray_dir;\n  param_1 = x_114;\n  let x_115 : vec2<f32> = intersect_box_vf3_vf3_vf3_vf3_(&(param), &(param_1), vec3<f32>(0.0f, 0.0f, 0.0f), vec3<f32>((vec3<u32>(x_106.x, x_106.y, x_106.z) - vec3<u32>(1u, 1u, 1u))));\n  t_hit = x_115;\n  let x_117 : f32 = t_hit.x;\n  t_hit.x = max(x_117, 0.0f);\n  let x_126 : f32 = gl_FragCoord.x;\n  let x_131 : u32 = x_80.image_width;\n  let x_133 : f32 = gl_FragCoord.y;\n  pixel = (u32(x_126) + (x_131 * u32(x_133)));\n  let x_138 : f32 = t_hit.x;\n  let x_140 : f32 = t_hit.y;\n  if ((x_138 < x_140)) {\n    let x_150 : u32 = pixel;\n    let x_151 : vec3<f32> = grid_ray_dir;\n    x_149.rays[x_150].ray_dir = x_151;\n    let x_158 : u32 = pixel;\n    x_157.block_ids[x_158] = 4294967295u;\n    let x_161 : u32 = pixel;\n    let x_164 : f32 = t_hit.x;\n    x_149.rays[x_161].t = x_164;\n  }\n  return;\n}\n\n@fragment\nfn main(@location(0) vray_dir_param : vec3<f32>, @location(1) @interpolate(flat) transformed_eye_param : vec3<f32>, @builtin(position) gl_FragCoord_param : vec4<f32>) {\n  vray_dir = vray_dir_param;\n  transformed_eye = transformed_eye_param;\n  gl_FragCoord = gl_FragCoord_param;\n  main_1();\n}\n`;\n\nconst zfp_compute_block_range_comp_spv = `struct EmulateUint64 {\n  lo : u32,\n  hi : u32,\n}\n\nstruct BlockReader {\n  current_bit : u32,\n  current_word : u32,\n  word_buffer : EmulateUint64,\n}\n\nstruct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nstruct EmulateUint64_1 {\n  lo : u32,\n  hi : u32,\n}\n\nalias RTArr = array<EmulateUint64_1>;\n\nstruct Compressed {\n  compressed : RTArr,\n}\n\nstruct BlockIDOffset {\n  block_id_offset : u32,\n}\n\nalias RTArr_1 = array<vec2<f32>>;\n\nstruct BlockInformation {\n  block_ranges : RTArr_1,\n}\n\n@group(0) @binding(1) var<uniform> x_240 : VolumeParams;\n\n@group(0) @binding(0) var<storage, read_write> x_270 : Compressed;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(1) @binding(0) var<uniform> x_872 : BlockIDOffset;\n\n@group(0) @binding(2) var<storage, read_write> x_1073 : BlockInformation;\n\nfn shift_right_struct_EmulateUint64_u1_u11_u1_(a_3 : EmulateUint64, n_1 : ptr<function, u32>) -> EmulateUint64 {\n  var carry_1 : u32;\n  var b_3 : EmulateUint64;\n  let x_167 : u32 = *(n_1);\n  if ((x_167 == 0u)) {\n    return a_3;\n  }\n  let x_172 : u32 = *(n_1);\n  if ((x_172 < 32u)) {\n    let x_178 : u32 = *(n_1);\n    carry_1 = (a_3.hi & (4294967295u >> (32u - x_178)));\n    let x_184 : u32 = *(n_1);\n    let x_186 : u32 = carry_1;\n    let x_187 : u32 = *(n_1);\n    b_3.lo = ((a_3.lo >> x_184) | (x_186 << (32u - x_187)));\n    let x_193 : u32 = *(n_1);\n    b_3.hi = (a_3.hi >> x_193);\n  } else {\n    let x_198 : u32 = *(n_1);\n    b_3.lo = (a_3.hi >> (x_198 - 32u));\n    b_3.hi = 0u;\n  }\n  let x_203 : EmulateUint64 = b_3;\n  return x_203;\n}\n\nfn create_block_reader_u1_(block_index : ptr<function, u32>) -> BlockReader {\n  var reader_5 : BlockReader;\n  var param_2 : u32;\n  let x_244 : u32 = x_240.max_bits;\n  if ((x_244 != 64u)) {\n    let x_249 : u32 = *(block_index);\n    let x_251 : u32 = x_240.max_bits;\n    reader_5.current_word = ((x_249 * x_251) / 64u);\n    let x_255 : u32 = *(block_index);\n    let x_257 : u32 = x_240.max_bits;\n    reader_5.current_bit = ((x_255 * x_257) % 64u);\n  } else {\n    let x_262 : u32 = *(block_index);\n    reader_5.current_word = x_262;\n    reader_5.current_bit = 0u;\n  }\n  let x_272 : u32 = reader_5.current_word;\n  let x_275 : EmulateUint64_1 = x_270.compressed[x_272];\n  reader_5.word_buffer.lo = x_275.lo;\n  reader_5.word_buffer.hi = x_275.hi;\n  let x_282 : EmulateUint64 = reader_5.word_buffer;\n  let x_285 : u32 = reader_5.current_bit;\n  param_2 = x_285;\n  let x_286 : EmulateUint64 = shift_right_struct_EmulateUint64_u1_u11_u1_(x_282, &(param_2));\n  reader_5.word_buffer = x_286;\n  let x_288 : BlockReader = reader_5;\n  return x_288;\n}\n\nfn advance_word_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(reader : ptr<function, BlockReader>) {\n  (*(reader)).current_bit = 0u;\n  let x_293 : u32 = (*(reader)).current_word;\n  (*(reader)).current_word = (x_293 + bitcast<u32>(1i));\n  let x_296 : u32 = (*(reader)).current_word;\n  let x_298 : EmulateUint64_1 = x_270.compressed[x_296];\n  (*(reader)).word_buffer.lo = x_298.lo;\n  (*(reader)).word_buffer.hi = x_298.hi;\n  return;\n}\n\nfn read_bit_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(reader_1 : ptr<function, BlockReader>) -> u32 {\n  var bit : u32;\n  var param_3 : u32;\n  var param_4 : BlockReader;\n  let x_306 : u32 = (*(reader_1)).word_buffer.lo;\n  bit = (x_306 & 1u);\n  let x_310 : u32 = (*(reader_1)).current_bit;\n  (*(reader_1)).current_bit = (x_310 + bitcast<u32>(1i));\n  let x_313 : EmulateUint64 = (*(reader_1)).word_buffer;\n  param_3 = 1u;\n  let x_315 : EmulateUint64 = shift_right_struct_EmulateUint64_u1_u11_u1_(x_313, &(param_3));\n  (*(reader_1)).word_buffer = x_315;\n  let x_318 : u32 = (*(reader_1)).current_bit;\n  if ((x_318 >= 64u)) {\n    let x_323 : BlockReader = *(reader_1);\n    param_4 = x_323;\n    advance_word_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(&(param_4));\n    let x_325 : BlockReader = param_4;\n    *(reader_1) = x_325;\n  }\n  let x_326 : u32 = bit;\n  return x_326;\n}\n\nfn make_emulate_uint64_u1_u1_(hi : ptr<function, u32>, lo : ptr<function, u32>) -> EmulateUint64 {\n  var a_4 : EmulateUint64;\n  let x_92 : u32 = *(lo);\n  a_4.lo = x_92;\n  let x_95 : u32 = *(hi);\n  a_4.hi = x_95;\n  let x_97 : EmulateUint64 = a_4;\n  return x_97;\n}\n\nfn make_mask_u1_(n_2 : ptr<function, u32>) -> EmulateUint64 {\n  var a_5 : EmulateUint64;\n  var param : u32;\n  var param_1 : u32;\n  param = 0u;\n  param_1 = 0u;\n  let x_209 : EmulateUint64 = make_emulate_uint64_u1_u1_(&(param), &(param_1));\n  a_5 = x_209;\n  let x_210 : u32 = *(n_2);\n  let x_212 : u32 = *(n_2);\n  if (((x_210 > 0u) & (x_212 < 65u))) {\n    let x_218 : u32 = *(n_2);\n    if ((x_218 > 32u)) {\n      a_5.lo = 4294967295u;\n      let x_223 : u32 = *(n_2);\n      a_5.hi = (4294967295u >> (64u - x_223));\n    } else {\n      let x_228 : u32 = *(n_2);\n      a_5.lo = (4294967295u >> (32u - x_228));\n      a_5.hi = 0u;\n    }\n  }\n  let x_233 : EmulateUint64 = a_5;\n  return x_233;\n}\n\nfn bitwise_and_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(a : EmulateUint64, b : EmulateUint64) -> EmulateUint64 {\n  var c : EmulateUint64;\n  c.lo = (a.lo & b.lo);\n  c.hi = (a.hi & b.hi);\n  let x_109 : EmulateUint64 = c;\n  return x_109;\n}\n\nfn shift_left_struct_EmulateUint64_u1_u11_u1_(a_2 : EmulateUint64, n : ptr<function, u32>) -> EmulateUint64 {\n  var carry : u32;\n  var b_2 : EmulateUint64;\n  let x_124 : u32 = *(n);\n  if ((x_124 == 0u)) {\n    return a_2;\n  }\n  let x_131 : u32 = *(n);\n  if ((x_131 < 32u)) {\n    let x_139 : u32 = *(n);\n    carry = (a_2.lo & (4294967295u << (32u - x_139)));\n    let x_145 : u32 = *(n);\n    b_2.lo = (a_2.lo << x_145);\n    let x_149 : u32 = *(n);\n    let x_151 : u32 = carry;\n    let x_152 : u32 = *(n);\n    b_2.hi = ((a_2.hi << x_149) | (x_151 >> (32u - x_152)));\n  } else {\n    b_2.lo = 0u;\n    let x_160 : u32 = *(n);\n    b_2.hi = (a_2.lo << (x_160 - 32u));\n  }\n  let x_164 : EmulateUint64 = b_2;\n  return x_164;\n}\n\nfn bitwise_or_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(a_1 : EmulateUint64, b_1 : EmulateUint64) -> EmulateUint64 {\n  var c_1 : EmulateUint64;\n  c_1.lo = (a_1.lo | b_1.lo);\n  c_1.hi = (a_1.hi | b_1.hi);\n  let x_121 : EmulateUint64 = c_1;\n  return x_121;\n}\n\nfn read_bits_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_u1_(reader_2 : ptr<function, BlockReader>, n_bits : u32) -> EmulateUint64 {\n  var rem_bits : u32;\n  var first_read : u32;\n  var mask : EmulateUint64;\n  var param_5 : u32;\n  var bits : EmulateUint64;\n  var param_6 : u32;\n  var next_read : u32;\n  var param_7 : BlockReader;\n  var param_8 : u32;\n  var param_9 : u32;\n  var param_10 : u32;\n  let x_331 : u32 = (*(reader_2)).current_bit;\n  rem_bits = (64u - x_331);\n  let x_334 : u32 = rem_bits;\n  first_read = min(x_334, n_bits);\n  let x_338 : u32 = first_read;\n  param_5 = x_338;\n  let x_339 : EmulateUint64 = make_mask_u1_(&(param_5));\n  mask = x_339;\n  let x_342 : EmulateUint64 = (*(reader_2)).word_buffer;\n  let x_343 : EmulateUint64 = mask;\n  let x_344 : EmulateUint64 = bitwise_and_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(x_342, x_343);\n  bits = x_344;\n  let x_346 : EmulateUint64 = (*(reader_2)).word_buffer;\n  param_6 = n_bits;\n  let x_348 : EmulateUint64 = shift_right_struct_EmulateUint64_u1_u11_u1_(x_346, &(param_6));\n  (*(reader_2)).word_buffer = x_348;\n  let x_350 : u32 = first_read;\n  let x_352 : u32 = (*(reader_2)).current_bit;\n  (*(reader_2)).current_bit = (x_352 + x_350);\n  next_read = 0u;\n  let x_356 : u32 = rem_bits;\n  if ((n_bits >= x_356)) {\n    let x_361 : BlockReader = *(reader_2);\n    param_7 = x_361;\n    advance_word_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(&(param_7));\n    let x_363 : BlockReader = param_7;\n    *(reader_2) = x_363;\n    let x_364 : u32 = first_read;\n    next_read = (n_bits - x_364);\n  }\n  let x_367 : u32 = next_read;\n  param_8 = x_367;\n  let x_368 : EmulateUint64 = make_mask_u1_(&(param_8));\n  mask = x_368;\n  let x_369 : EmulateUint64 = bits;\n  let x_371 : EmulateUint64 = (*(reader_2)).word_buffer;\n  let x_372 : EmulateUint64 = mask;\n  let x_373 : EmulateUint64 = bitwise_and_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(x_371, x_372);\n  let x_375 : u32 = first_read;\n  param_9 = x_375;\n  let x_376 : EmulateUint64 = shift_left_struct_EmulateUint64_u1_u11_u1_(x_373, &(param_9));\n  let x_377 : EmulateUint64 = bitwise_or_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(x_369, x_376);\n  bits = x_377;\n  let x_379 : EmulateUint64 = (*(reader_2)).word_buffer;\n  let x_381 : u32 = next_read;\n  param_10 = x_381;\n  let x_382 : EmulateUint64 = shift_right_struct_EmulateUint64_u1_u11_u1_(x_379, &(param_10));\n  (*(reader_2)).word_buffer = x_382;\n  let x_384 : u32 = next_read;\n  let x_386 : u32 = (*(reader_2)).current_bit;\n  (*(reader_2)).current_bit = (x_386 + x_384);\n  let x_389 : EmulateUint64 = bits;\n  return x_389;\n}\n\nfn decode_ints_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_u1_u1_64__(reader_3 : ptr<function, BlockReader>, block_max_bits : u32, block_1 : ptr<function, array<u32, 64u>>) {\n  var i : u32;\n  var x_1 : EmulateUint64;\n  var param_11 : u32;\n  var param_12 : u32;\n  var one : EmulateUint64;\n  var param_13 : u32;\n  var param_14 : u32;\n  var bits_1 : u32;\n  var k : u32;\n  var n_3 : u32;\n  var m : u32;\n  var param_15 : BlockReader;\n  var param_16 : BlockReader;\n  var param_17 : BlockReader;\n  var param_18 : u32;\n  var i_1 : u32;\n  var param_19 : u32;\n  i = 0u;\n  loop {\n    let x_405 : u32 = i;\n    if ((x_405 < 64u)) {\n    } else {\n      break;\n    }\n    let x_407 : u32 = i;\n    (*(block_1))[x_407] = 0u;\n\n    continuing {\n      let x_409 : u32 = i;\n      i = (x_409 + bitcast<u32>(1i));\n    }\n  }\n  param_11 = 0u;\n  param_12 = 0u;\n  let x_414 : EmulateUint64 = make_emulate_uint64_u1_u1_(&(param_11), &(param_12));\n  x_1 = x_414;\n  param_13 = 0u;\n  param_14 = 1u;\n  let x_418 : EmulateUint64 = make_emulate_uint64_u1_u1_(&(param_13), &(param_14));\n  one = x_418;\n  bits_1 = block_max_bits;\n  k = 32u;\n  n_3 = 0u;\n  loop {\n    var x_433 : bool;\n    var x_434 : bool;\n    let x_427 : u32 = bits_1;\n    let x_428 : bool = (x_427 != 0u);\n    x_434 = x_428;\n    if (x_428) {\n      let x_431 : u32 = k;\n      k = (x_431 - bitcast<u32>(1i));\n      x_433 = (x_431 > 0u);\n      x_434 = x_433;\n    }\n    if (x_434) {\n    } else {\n      break;\n    }\n    let x_436 : u32 = n_3;\n    let x_437 : u32 = bits_1;\n    m = min(x_436, x_437);\n    let x_439 : u32 = m;\n    let x_440 : u32 = bits_1;\n    bits_1 = (x_440 - x_439);\n    let x_442 : u32 = m;\n    let x_444 : BlockReader = *(reader_3);\n    param_15 = x_444;\n    let x_445 : EmulateUint64 = read_bits_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_u1_(&(param_15), x_442);\n    let x_446 : BlockReader = param_15;\n    *(reader_3) = x_446;\n    x_1 = x_445;\n    loop {\n      var x_465 : bool;\n      var x_466 : bool;\n      let x_452 : u32 = n_3;\n      let x_454 : u32 = bits_1;\n      let x_456 : bool = ((x_452 < 64u) & (x_454 != 0u));\n      x_466 = x_456;\n      if (x_456) {\n        let x_459 : u32 = bits_1;\n        bits_1 = (x_459 - bitcast<u32>(1i));\n        let x_462 : BlockReader = *(reader_3);\n        param_16 = x_462;\n        let x_463 : u32 = read_bit_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(&(param_16));\n        let x_464 : BlockReader = param_16;\n        *(reader_3) = x_464;\n        x_465 = (x_463 != 0u);\n        x_466 = x_465;\n      }\n      if (x_466) {\n      } else {\n        break;\n      }\n      loop {\n        var x_486 : bool;\n        var x_487 : bool;\n        let x_472 : u32 = n_3;\n        let x_475 : u32 = bits_1;\n        let x_477 : bool = ((x_472 < 63u) & (x_475 != 0u));\n        x_487 = x_477;\n        if (x_477) {\n          let x_480 : u32 = bits_1;\n          bits_1 = (x_480 - bitcast<u32>(1i));\n          let x_483 : BlockReader = *(reader_3);\n          param_17 = x_483;\n          let x_484 : u32 = read_bit_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(&(param_17));\n          let x_485 : BlockReader = param_17;\n          *(reader_3) = x_485;\n          x_486 = (x_484 == 0u);\n          x_487 = x_486;\n        }\n        if (x_487) {\n        } else {\n          break;\n        }\n\n        continuing {\n          let x_488 : u32 = n_3;\n          n_3 = (x_488 + bitcast<u32>(1i));\n        }\n      }\n\n      continuing {\n        let x_490 : EmulateUint64 = x_1;\n        let x_491 : EmulateUint64 = one;\n        let x_492 : u32 = n_3;\n        n_3 = (x_492 + bitcast<u32>(1i));\n        param_18 = x_492;\n        let x_495 : EmulateUint64 = shift_left_struct_EmulateUint64_u1_u11_u1_(x_491, &(param_18));\n        let x_496 : EmulateUint64 = bitwise_or_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(x_490, x_495);\n        x_1 = x_496;\n      }\n    }\n    i_1 = 0u;\n    loop {\n      let x_503 : u32 = i_1;\n      if ((x_503 < 64u)) {\n      } else {\n        break;\n      }\n      let x_505 : u32 = i_1;\n      let x_507 : u32 = x_1.lo;\n      let x_509 : u32 = k;\n      let x_512 : u32 = (*(block_1))[x_505];\n      (*(block_1))[x_505] = (x_512 + ((x_507 & 1u) << x_509));\n\n      continuing {\n        let x_515 : u32 = i_1;\n        i_1 = (x_515 + bitcast<u32>(1i));\n        let x_517 : EmulateUint64 = x_1;\n        param_19 = 1u;\n        let x_519 : EmulateUint64 = shift_right_struct_EmulateUint64_u1_u11_u1_(x_517, &(param_19));\n        x_1 = x_519;\n      }\n    }\n  }\n  return;\n}\n\nfn uint2int_u1_(x : ptr<function, u32>) -> i32 {\n  let x_392 : u32 = *(x);\n  return bitcast<i32>(((x_392 ^ 2863311530u) - 2863311530u));\n}\n\nfn inverse_lift_i1_64__u1_u1_(block_2 : ptr<function, array<i32, 64u>>, s : u32, idx : u32) {\n  var i_2 : u32;\n  var v : vec4<i32>;\n  var i_3 : u32;\n  i_2 = 0u;\n  loop {\n    let x_526 : u32 = i_2;\n    if ((x_526 < 4u)) {\n    } else {\n      break;\n    }\n    let x_532 : u32 = i_2;\n    let x_533 : u32 = i_2;\n    let x_538 : i32 = (*(block_2))[(idx + (x_533 * s))];\n    v[x_532] = x_538;\n\n    continuing {\n      let x_540 : u32 = i_2;\n      i_2 = (x_540 + bitcast<u32>(1i));\n    }\n  }\n  let x_544 : i32 = v.w;\n  let x_547 : i32 = v.y;\n  v.y = (x_547 + (x_544 >> bitcast<u32>(1i)));\n  let x_551 : i32 = v.y;\n  let x_554 : i32 = v.w;\n  v.w = (x_554 - (x_551 >> bitcast<u32>(1i)));\n  let x_558 : i32 = v.w;\n  let x_560 : i32 = v.y;\n  v.y = (x_560 + x_558);\n  let x_564 : i32 = v.w;\n  v.w = (x_564 << bitcast<u32>(1i));\n  let x_568 : i32 = v.y;\n  let x_570 : i32 = v.w;\n  v.w = (x_570 - x_568);\n  let x_574 : i32 = v.x;\n  let x_577 : i32 = v.z;\n  v.z = (x_577 + x_574);\n  let x_581 : i32 = v.x;\n  v.x = (x_581 << bitcast<u32>(1i));\n  let x_585 : i32 = v.z;\n  let x_587 : i32 = v.x;\n  v.x = (x_587 - x_585);\n  let x_591 : i32 = v.z;\n  let x_593 : i32 = v.y;\n  v.y = (x_593 + x_591);\n  let x_597 : i32 = v.z;\n  v.z = (x_597 << bitcast<u32>(1i));\n  let x_601 : i32 = v.y;\n  let x_603 : i32 = v.z;\n  v.z = (x_603 - x_601);\n  let x_607 : i32 = v.x;\n  let x_609 : i32 = v.w;\n  v.w = (x_609 + x_607);\n  let x_613 : i32 = v.x;\n  v.x = (x_613 << bitcast<u32>(1i));\n  let x_617 : i32 = v.w;\n  let x_619 : i32 = v.x;\n  v.x = (x_619 - x_617);\n  i_3 = 0u;\n  loop {\n    let x_628 : u32 = i_3;\n    if ((x_628 < 4u)) {\n    } else {\n      break;\n    }\n    let x_630 : u32 = i_3;\n    let x_633 : u32 = i_3;\n    let x_635 : i32 = v[x_633];\n    (*(block_2))[(idx + (x_630 * s))] = x_635;\n\n    continuing {\n      let x_637 : u32 = i_3;\n      i_3 = (x_637 + bitcast<u32>(1i));\n    }\n  }\n  return;\n}\n\nfn inverse_transform_i1_64__(block_3 : ptr<function, array<i32, 64u>>) {\n  var y : u32;\n  var x_2 : u32;\n  var param_20 : array<i32, 64u>;\n  var x_3 : u32;\n  var z : u32;\n  var param_21 : array<i32, 64u>;\n  var z_1 : u32;\n  var y_1 : u32;\n  var param_22 : array<i32, 64u>;\n  y = 0u;\n  loop {\n    let x_645 : u32 = y;\n    if ((x_645 < 4u)) {\n    } else {\n      break;\n    }\n    x_2 = 0u;\n    loop {\n      let x_653 : u32 = x_2;\n      if ((x_653 < 4u)) {\n      } else {\n        break;\n      }\n      let x_656 : u32 = x_2;\n      let x_657 : u32 = y;\n      let x_661 : array<i32, 64u> = *(block_3);\n      param_20 = x_661;\n      inverse_lift_i1_64__u1_u1_(&(param_20), 16u, (x_656 + (4u * x_657)));\n      let x_663 : array<i32, 64u> = param_20;\n      *(block_3) = x_663;\n\n      continuing {\n        let x_664 : u32 = x_2;\n        x_2 = (x_664 + bitcast<u32>(1i));\n      }\n    }\n\n    continuing {\n      let x_666 : u32 = y;\n      y = (x_666 + bitcast<u32>(1i));\n    }\n  }\n  x_3 = 0u;\n  loop {\n    let x_674 : u32 = x_3;\n    if ((x_674 < 4u)) {\n    } else {\n      break;\n    }\n    z = 0u;\n    loop {\n      let x_682 : u32 = z;\n      if ((x_682 < 4u)) {\n      } else {\n        break;\n      }\n      let x_684 : u32 = z;\n      let x_686 : u32 = x_3;\n      let x_689 : array<i32, 64u> = *(block_3);\n      param_21 = x_689;\n      inverse_lift_i1_64__u1_u1_(&(param_21), 4u, ((16u * x_684) + x_686));\n      let x_691 : array<i32, 64u> = param_21;\n      *(block_3) = x_691;\n\n      continuing {\n        let x_692 : u32 = z;\n        z = (x_692 + bitcast<u32>(1i));\n      }\n    }\n\n    continuing {\n      let x_694 : u32 = x_3;\n      x_3 = (x_694 + bitcast<u32>(1i));\n    }\n  }\n  z_1 = 0u;\n  loop {\n    let x_702 : u32 = z_1;\n    if ((x_702 < 4u)) {\n    } else {\n      break;\n    }\n    y_1 = 0u;\n    loop {\n      let x_710 : u32 = y_1;\n      if ((x_710 < 4u)) {\n      } else {\n        break;\n      }\n      let x_712 : u32 = y_1;\n      let x_714 : u32 = z_1;\n      let x_718 : array<i32, 64u> = *(block_3);\n      param_22 = x_718;\n      inverse_lift_i1_64__u1_u1_(&(param_22), 1u, ((4u * x_712) + (16u * x_714)));\n      let x_720 : array<i32, 64u> = param_22;\n      *(block_3) = x_720;\n\n      continuing {\n        let x_721 : u32 = y_1;\n        y_1 = (x_721 + bitcast<u32>(1i));\n      }\n    }\n\n    continuing {\n      let x_723 : u32 = z_1;\n      z_1 = (x_723 + bitcast<u32>(1i));\n    }\n  }\n  return;\n}\n\nfn decompress_block_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_f1_64__(reader_4 : ptr<function, BlockReader>, decompressed_block : ptr<function, array<f32, 64u>>) {\n  var s_cont : u32;\n  var param_23 : BlockReader;\n  var emax : i32;\n  var param_24 : BlockReader;\n  var block_max_bits_1 : u32;\n  var uint_block : array<u32, 64u>;\n  var param_25 : BlockReader;\n  var param_26 : array<u32, 64u>;\n  var i_4 : u32;\n  var int_block : array<i32, 64u>;\n  var indexable : array<u32, 64u>;\n  var param_27 : u32;\n  var param_28 : array<i32, 64u>;\n  var inv_w : f32;\n  var i_5 : u32;\n  let x_727 : BlockReader = *(reader_4);\n  param_23 = x_727;\n  let x_728 : u32 = read_bit_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(&(param_23));\n  let x_729 : BlockReader = param_23;\n  *(reader_4) = x_729;\n  s_cont = x_728;\n  let x_730 : u32 = s_cont;\n  if ((x_730 != 0u)) {\n    let x_737 : BlockReader = *(reader_4);\n    param_24 = x_737;\n    let x_738 : EmulateUint64 = read_bits_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_u1_(&(param_24), 8u);\n    let x_739 : BlockReader = param_24;\n    *(reader_4) = x_739;\n    emax = bitcast<i32>((x_738.lo - 127u));\n    let x_746 : u32 = x_240.max_bits;\n    block_max_bits_1 = (x_746 - 9u);\n    let x_749 : u32 = block_max_bits_1;\n    let x_752 : BlockReader = *(reader_4);\n    param_25 = x_752;\n    let x_754 : array<u32, 64u> = uint_block;\n    param_26 = x_754;\n    decode_ints_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_u1_u1_64__(&(param_25), x_749, &(param_26));\n    let x_756 : BlockReader = param_25;\n    *(reader_4) = x_756;\n    let x_757 : array<u32, 64u> = param_26;\n    uint_block = x_757;\n    i_4 = 0u;\n    loop {\n      let x_764 : u32 = i_4;\n      if ((x_764 < 64u)) {\n      } else {\n        break;\n      }\n      let x_822 : u32 = i_4;\n      indexable = array<u32, 64u>(0u, 1u, 4u, 16u, 20u, 17u, 5u, 2u, 8u, 32u, 21u, 6u, 18u, 24u, 9u, 33u, 36u, 3u, 12u, 48u, 22u, 25u, 37u, 40u, 34u, 10u, 7u, 19u, 28u, 13u, 49u, 52u, 41u, 38u, 26u, 23u, 29u, 53u, 11u, 35u, 44u, 14u, 50u, 56u, 42u, 27u, 39u, 45u, 30u, 54u, 57u, 60u, 51u, 15u, 43u, 46u, 58u, 61u, 55u, 31u, 62u, 59u, 47u, 63u);\n      let x_825 : u32 = indexable[x_822];\n      let x_826 : u32 = i_4;\n      let x_829 : u32 = uint_block[x_826];\n      param_27 = x_829;\n      let x_830 : i32 = uint2int_u1_(&(param_27));\n      int_block[x_825] = x_830;\n\n      continuing {\n        let x_832 : u32 = i_4;\n        i_4 = (x_832 + bitcast<u32>(1i));\n      }\n    }\n    let x_835 : array<i32, 64u> = int_block;\n    param_28 = x_835;\n    inverse_transform_i1_64__(&(param_28));\n    let x_837 : array<i32, 64u> = param_28;\n    int_block = x_837;\n    let x_841 : i32 = emax;\n    inv_w = ldexp(1.0f, (x_841 - 30i));\n    i_5 = 0u;\n    loop {\n      let x_851 : u32 = i_5;\n      if ((x_851 < 64u)) {\n      } else {\n        break;\n      }\n      let x_853 : u32 = i_5;\n      let x_854 : f32 = inv_w;\n      let x_855 : u32 = i_5;\n      let x_857 : i32 = int_block[x_855];\n      (*(decompressed_block))[x_853] = (x_854 * f32(x_857));\n\n      continuing {\n        let x_861 : u32 = i_5;\n        i_5 = (x_861 + bitcast<u32>(1i));\n      }\n    }\n  }\n  return;\n}\n\nfn main_1() {\n  var block_index_1 : u32;\n  var total_blocks : u32;\n  var reader_6 : BlockReader;\n  var param_29 : u32;\n  var decompressed_block_1 : array<f32, 64u>;\n  var param_30 : BlockReader;\n  var param_31 : array<f32, 64u>;\n  var stride : vec3<u32>;\n  var nblocks : vec3<u32>;\n  var block_4 : vec3<u32>;\n  var block_range : vec2<f32>;\n  var partial : vec3<bool>;\n  var partial_size : vec3<u32>;\n  var x_973 : u32;\n  var x_985 : u32;\n  var x_997 : u32;\n  var z_2 : u32;\n  var y_2 : u32;\n  var x_4 : u32;\n  let x_869 : u32 = gl_GlobalInvocationID.x;\n  let x_874 : u32 = x_872.block_id_offset;\n  block_index_1 = (x_869 + (x_874 * 32u));\n  let x_879 : u32 = x_240.padded_dims.x;\n  let x_881 : u32 = x_240.padded_dims.y;\n  let x_885 : u32 = x_240.padded_dims.z;\n  total_blocks = (((x_879 * x_881) / 64u) * x_885);\n  let x_887 : u32 = block_index_1;\n  let x_888 : u32 = total_blocks;\n  if ((x_887 >= x_888)) {\n    return;\n  }\n  let x_895 : u32 = block_index_1;\n  param_29 = x_895;\n  let x_896 : BlockReader = create_block_reader_u1_(&(param_29));\n  reader_6 = x_896;\n  let x_899 : BlockReader = reader_6;\n  param_30 = x_899;\n  let x_901 : array<f32, 64u> = decompressed_block_1;\n  param_31 = x_901;\n  decompress_block_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_f1_64__(&(param_30), &(param_31));\n  let x_903 : array<f32, 64u> = param_31;\n  decompressed_block_1 = x_903;\n  let x_907 : u32 = x_240.volume_dims.x;\n  let x_909 : u32 = x_240.volume_dims.x;\n  let x_911 : u32 = x_240.volume_dims.y;\n  stride = vec3<u32>(1u, x_907, (x_909 * x_911));\n  let x_916 : u32 = x_240.padded_dims.x;\n  nblocks.x = (x_916 >> bitcast<u32>(2i));\n  let x_920 : u32 = x_240.padded_dims.y;\n  nblocks.y = (x_920 >> bitcast<u32>(2i));\n  let x_924 : u32 = x_240.padded_dims.z;\n  nblocks.z = (x_924 >> bitcast<u32>(2i));\n  let x_928 : u32 = block_index_1;\n  let x_930 : u32 = nblocks.x;\n  block_4.x = ((x_928 % x_930) * 4u);\n  let x_934 : u32 = block_index_1;\n  let x_936 : u32 = nblocks.x;\n  let x_939 : u32 = nblocks.y;\n  block_4.y = (((x_934 / x_936) % x_939) * 4u);\n  let x_943 : u32 = block_index_1;\n  let x_945 : u32 = nblocks.x;\n  let x_947 : u32 = nblocks.y;\n  block_4.z = ((x_943 / (x_945 * x_947)) * 4u);\n  block_range = vec2<f32>(100000002004087734272.0f, -100000002004087734272.0f);\n  let x_961 : vec3<u32> = block_4;\n  let x_966 : vec4<u32> = x_240.volume_dims;\n  partial = ((x_961 + vec3<u32>(4u, 4u, 4u)) > vec3<u32>(x_966.x, x_966.y, x_966.z));\n  let x_972 : bool = partial.x;\n  if (x_972) {\n    let x_977 : u32 = x_240.volume_dims.x;\n    let x_979 : u32 = block_4.x;\n    x_973 = (x_977 - x_979);\n  } else {\n    x_973 = 4u;\n  }\n  let x_982 : u32 = x_973;\n  let x_984 : bool = partial.y;\n  if (x_984) {\n    let x_989 : u32 = x_240.volume_dims.y;\n    let x_991 : u32 = block_4.y;\n    x_985 = (x_989 - x_991);\n  } else {\n    x_985 = 4u;\n  }\n  let x_994 : u32 = x_985;\n  let x_996 : bool = partial.z;\n  if (x_996) {\n    let x_1001 : u32 = x_240.volume_dims.z;\n    let x_1003 : u32 = block_4.z;\n    x_997 = (x_1001 - x_1003);\n  } else {\n    x_997 = 4u;\n  }\n  let x_1006 : u32 = x_997;\n  partial_size = vec3<u32>(x_982, x_994, x_1006);\n  z_2 = 0u;\n  loop {\n    let x_1014 : u32 = z_2;\n    let x_1016 : u32 = partial_size.z;\n    if ((x_1014 < x_1016)) {\n    } else {\n      break;\n    }\n    y_2 = 0u;\n    loop {\n      let x_1024 : u32 = y_2;\n      let x_1026 : u32 = partial_size.y;\n      if ((x_1024 < x_1026)) {\n      } else {\n        break;\n      }\n      x_4 = 0u;\n      loop {\n        let x_1034 : u32 = x_4;\n        let x_1036 : u32 = partial_size.x;\n        if ((x_1034 < x_1036)) {\n        } else {\n          break;\n        }\n        let x_1039 : f32 = block_range.x;\n        let x_1040 : u32 = z_2;\n        let x_1042 : u32 = y_2;\n        let x_1045 : u32 = x_4;\n        let x_1048 : f32 = decompressed_block_1[(((16u * x_1040) + (4u * x_1042)) + x_1045)];\n        block_range.x = min(x_1039, x_1048);\n        let x_1052 : f32 = block_range.y;\n        let x_1053 : u32 = z_2;\n        let x_1055 : u32 = y_2;\n        let x_1058 : u32 = x_4;\n        let x_1061 : f32 = decompressed_block_1[(((16u * x_1053) + (4u * x_1055)) + x_1058)];\n        block_range.y = max(x_1052, x_1061);\n\n        continuing {\n          let x_1064 : u32 = x_4;\n          x_4 = (x_1064 + bitcast<u32>(1i));\n        }\n      }\n\n      continuing {\n        let x_1066 : u32 = y_2;\n        y_2 = (x_1066 + bitcast<u32>(1i));\n      }\n    }\n\n    continuing {\n      let x_1068 : u32 = z_2;\n      z_2 = (x_1068 + bitcast<u32>(1i));\n    }\n  }\n  let x_1074 : u32 = block_index_1;\n  let x_1075 : vec2<f32> = block_range;\n  x_1073.block_ranges[x_1074] = x_1075;\n  return;\n}\n\n@compute @workgroup_size(32i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst zfp_decompress_block_comp_spv = `struct EmulateUint64 {\n  lo : u32,\n  hi : u32,\n}\n\nstruct BlockReader {\n  current_bit : u32,\n  current_word : u32,\n  word_buffer : EmulateUint64,\n}\n\nstruct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nstruct EmulateUint64_1 {\n  lo : u32,\n  hi : u32,\n}\n\nalias RTArr = array<EmulateUint64_1>;\n\nstruct Compressed {\n  compressed : RTArr,\n}\n\nstruct DecompressBlockOffset {\n  start_block_offset : u32,\n  total_n_blocks : u32,\n}\n\nalias RTArr_1 = array<u32>;\n\nalias RTArr_2 = array<u32>;\n\nstruct BlockIDs {\n  block_ids : RTArr_2,\n}\n\nstruct CachedItemSlots {\n  cached_item_slots : RTArr_2,\n}\n\nalias RTArr_3 = array<f32>;\n\nstruct Decompressed {\n  decompressed : RTArr_3,\n}\n\n@group(0) @binding(1) var<uniform> x_240 : VolumeParams;\n\n@group(0) @binding(0) var<storage, read_write> x_270 : Compressed;\n\n@group(1) @binding(0) var<uniform> x_865 : DecompressBlockOffset;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(3) var<storage, read_write> x_885 : BlockIDs;\n\n@group(0) @binding(4) var<storage, read_write> x_897 : CachedItemSlots;\n\n@group(0) @binding(2) var<storage, read_write> x_923 : Decompressed;\n\nfn shift_right_struct_EmulateUint64_u1_u11_u1_(a_3 : EmulateUint64, n_1 : ptr<function, u32>) -> EmulateUint64 {\n  var carry_1 : u32;\n  var b_3 : EmulateUint64;\n  let x_167 : u32 = *(n_1);\n  if ((x_167 == 0u)) {\n    return a_3;\n  }\n  let x_172 : u32 = *(n_1);\n  if ((x_172 < 32u)) {\n    let x_178 : u32 = *(n_1);\n    carry_1 = (a_3.hi & (4294967295u >> (32u - x_178)));\n    let x_184 : u32 = *(n_1);\n    let x_186 : u32 = carry_1;\n    let x_187 : u32 = *(n_1);\n    b_3.lo = ((a_3.lo >> x_184) | (x_186 << (32u - x_187)));\n    let x_193 : u32 = *(n_1);\n    b_3.hi = (a_3.hi >> x_193);\n  } else {\n    let x_198 : u32 = *(n_1);\n    b_3.lo = (a_3.hi >> (x_198 - 32u));\n    b_3.hi = 0u;\n  }\n  let x_203 : EmulateUint64 = b_3;\n  return x_203;\n}\n\nfn create_block_reader_u1_(block_index : ptr<function, u32>) -> BlockReader {\n  var reader_5 : BlockReader;\n  var param_2 : u32;\n  let x_244 : u32 = x_240.max_bits;\n  if ((x_244 != 64u)) {\n    let x_249 : u32 = *(block_index);\n    let x_251 : u32 = x_240.max_bits;\n    reader_5.current_word = ((x_249 * x_251) / 64u);\n    let x_255 : u32 = *(block_index);\n    let x_257 : u32 = x_240.max_bits;\n    reader_5.current_bit = ((x_255 * x_257) % 64u);\n  } else {\n    let x_262 : u32 = *(block_index);\n    reader_5.current_word = x_262;\n    reader_5.current_bit = 0u;\n  }\n  let x_272 : u32 = reader_5.current_word;\n  let x_275 : EmulateUint64_1 = x_270.compressed[x_272];\n  reader_5.word_buffer.lo = x_275.lo;\n  reader_5.word_buffer.hi = x_275.hi;\n  let x_282 : EmulateUint64 = reader_5.word_buffer;\n  let x_285 : u32 = reader_5.current_bit;\n  param_2 = x_285;\n  let x_286 : EmulateUint64 = shift_right_struct_EmulateUint64_u1_u11_u1_(x_282, &(param_2));\n  reader_5.word_buffer = x_286;\n  let x_288 : BlockReader = reader_5;\n  return x_288;\n}\n\nfn advance_word_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(reader : ptr<function, BlockReader>) {\n  (*(reader)).current_bit = 0u;\n  let x_293 : u32 = (*(reader)).current_word;\n  (*(reader)).current_word = (x_293 + bitcast<u32>(1i));\n  let x_296 : u32 = (*(reader)).current_word;\n  let x_298 : EmulateUint64_1 = x_270.compressed[x_296];\n  (*(reader)).word_buffer.lo = x_298.lo;\n  (*(reader)).word_buffer.hi = x_298.hi;\n  return;\n}\n\nfn read_bit_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(reader_1 : ptr<function, BlockReader>) -> u32 {\n  var bit : u32;\n  var param_3 : u32;\n  var param_4 : BlockReader;\n  let x_306 : u32 = (*(reader_1)).word_buffer.lo;\n  bit = (x_306 & 1u);\n  let x_310 : u32 = (*(reader_1)).current_bit;\n  (*(reader_1)).current_bit = (x_310 + bitcast<u32>(1i));\n  let x_313 : EmulateUint64 = (*(reader_1)).word_buffer;\n  param_3 = 1u;\n  let x_315 : EmulateUint64 = shift_right_struct_EmulateUint64_u1_u11_u1_(x_313, &(param_3));\n  (*(reader_1)).word_buffer = x_315;\n  let x_318 : u32 = (*(reader_1)).current_bit;\n  if ((x_318 >= 64u)) {\n    let x_323 : BlockReader = *(reader_1);\n    param_4 = x_323;\n    advance_word_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(&(param_4));\n    let x_325 : BlockReader = param_4;\n    *(reader_1) = x_325;\n  }\n  let x_326 : u32 = bit;\n  return x_326;\n}\n\nfn make_emulate_uint64_u1_u1_(hi : ptr<function, u32>, lo : ptr<function, u32>) -> EmulateUint64 {\n  var a_4 : EmulateUint64;\n  let x_92 : u32 = *(lo);\n  a_4.lo = x_92;\n  let x_95 : u32 = *(hi);\n  a_4.hi = x_95;\n  let x_97 : EmulateUint64 = a_4;\n  return x_97;\n}\n\nfn make_mask_u1_(n_2 : ptr<function, u32>) -> EmulateUint64 {\n  var a_5 : EmulateUint64;\n  var param : u32;\n  var param_1 : u32;\n  param = 0u;\n  param_1 = 0u;\n  let x_209 : EmulateUint64 = make_emulate_uint64_u1_u1_(&(param), &(param_1));\n  a_5 = x_209;\n  let x_210 : u32 = *(n_2);\n  let x_212 : u32 = *(n_2);\n  if (((x_210 > 0u) & (x_212 < 65u))) {\n    let x_218 : u32 = *(n_2);\n    if ((x_218 > 32u)) {\n      a_5.lo = 4294967295u;\n      let x_223 : u32 = *(n_2);\n      a_5.hi = (4294967295u >> (64u - x_223));\n    } else {\n      let x_228 : u32 = *(n_2);\n      a_5.lo = (4294967295u >> (32u - x_228));\n      a_5.hi = 0u;\n    }\n  }\n  let x_233 : EmulateUint64 = a_5;\n  return x_233;\n}\n\nfn bitwise_and_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(a : EmulateUint64, b : EmulateUint64) -> EmulateUint64 {\n  var c : EmulateUint64;\n  c.lo = (a.lo & b.lo);\n  c.hi = (a.hi & b.hi);\n  let x_109 : EmulateUint64 = c;\n  return x_109;\n}\n\nfn shift_left_struct_EmulateUint64_u1_u11_u1_(a_2 : EmulateUint64, n : ptr<function, u32>) -> EmulateUint64 {\n  var carry : u32;\n  var b_2 : EmulateUint64;\n  let x_124 : u32 = *(n);\n  if ((x_124 == 0u)) {\n    return a_2;\n  }\n  let x_131 : u32 = *(n);\n  if ((x_131 < 32u)) {\n    let x_139 : u32 = *(n);\n    carry = (a_2.lo & (4294967295u << (32u - x_139)));\n    let x_145 : u32 = *(n);\n    b_2.lo = (a_2.lo << x_145);\n    let x_149 : u32 = *(n);\n    let x_151 : u32 = carry;\n    let x_152 : u32 = *(n);\n    b_2.hi = ((a_2.hi << x_149) | (x_151 >> (32u - x_152)));\n  } else {\n    b_2.lo = 0u;\n    let x_160 : u32 = *(n);\n    b_2.hi = (a_2.lo << (x_160 - 32u));\n  }\n  let x_164 : EmulateUint64 = b_2;\n  return x_164;\n}\n\nfn bitwise_or_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(a_1 : EmulateUint64, b_1 : EmulateUint64) -> EmulateUint64 {\n  var c_1 : EmulateUint64;\n  c_1.lo = (a_1.lo | b_1.lo);\n  c_1.hi = (a_1.hi | b_1.hi);\n  let x_121 : EmulateUint64 = c_1;\n  return x_121;\n}\n\nfn read_bits_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_u1_(reader_2 : ptr<function, BlockReader>, n_bits : u32) -> EmulateUint64 {\n  var rem_bits : u32;\n  var first_read : u32;\n  var mask : EmulateUint64;\n  var param_5 : u32;\n  var bits : EmulateUint64;\n  var param_6 : u32;\n  var next_read : u32;\n  var param_7 : BlockReader;\n  var param_8 : u32;\n  var param_9 : u32;\n  var param_10 : u32;\n  let x_331 : u32 = (*(reader_2)).current_bit;\n  rem_bits = (64u - x_331);\n  let x_334 : u32 = rem_bits;\n  first_read = min(x_334, n_bits);\n  let x_338 : u32 = first_read;\n  param_5 = x_338;\n  let x_339 : EmulateUint64 = make_mask_u1_(&(param_5));\n  mask = x_339;\n  let x_342 : EmulateUint64 = (*(reader_2)).word_buffer;\n  let x_343 : EmulateUint64 = mask;\n  let x_344 : EmulateUint64 = bitwise_and_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(x_342, x_343);\n  bits = x_344;\n  let x_346 : EmulateUint64 = (*(reader_2)).word_buffer;\n  param_6 = n_bits;\n  let x_348 : EmulateUint64 = shift_right_struct_EmulateUint64_u1_u11_u1_(x_346, &(param_6));\n  (*(reader_2)).word_buffer = x_348;\n  let x_350 : u32 = first_read;\n  let x_352 : u32 = (*(reader_2)).current_bit;\n  (*(reader_2)).current_bit = (x_352 + x_350);\n  next_read = 0u;\n  let x_356 : u32 = rem_bits;\n  if ((n_bits >= x_356)) {\n    let x_361 : BlockReader = *(reader_2);\n    param_7 = x_361;\n    advance_word_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(&(param_7));\n    let x_363 : BlockReader = param_7;\n    *(reader_2) = x_363;\n    let x_364 : u32 = first_read;\n    next_read = (n_bits - x_364);\n  }\n  let x_367 : u32 = next_read;\n  param_8 = x_367;\n  let x_368 : EmulateUint64 = make_mask_u1_(&(param_8));\n  mask = x_368;\n  let x_369 : EmulateUint64 = bits;\n  let x_371 : EmulateUint64 = (*(reader_2)).word_buffer;\n  let x_372 : EmulateUint64 = mask;\n  let x_373 : EmulateUint64 = bitwise_and_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(x_371, x_372);\n  let x_375 : u32 = first_read;\n  param_9 = x_375;\n  let x_376 : EmulateUint64 = shift_left_struct_EmulateUint64_u1_u11_u1_(x_373, &(param_9));\n  let x_377 : EmulateUint64 = bitwise_or_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(x_369, x_376);\n  bits = x_377;\n  let x_379 : EmulateUint64 = (*(reader_2)).word_buffer;\n  let x_381 : u32 = next_read;\n  param_10 = x_381;\n  let x_382 : EmulateUint64 = shift_right_struct_EmulateUint64_u1_u11_u1_(x_379, &(param_10));\n  (*(reader_2)).word_buffer = x_382;\n  let x_384 : u32 = next_read;\n  let x_386 : u32 = (*(reader_2)).current_bit;\n  (*(reader_2)).current_bit = (x_386 + x_384);\n  let x_389 : EmulateUint64 = bits;\n  return x_389;\n}\n\nfn decode_ints_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_u1_u1_64__(reader_3 : ptr<function, BlockReader>, block_max_bits : u32, block_1 : ptr<function, array<u32, 64u>>) {\n  var i : u32;\n  var x_1 : EmulateUint64;\n  var param_11 : u32;\n  var param_12 : u32;\n  var one : EmulateUint64;\n  var param_13 : u32;\n  var param_14 : u32;\n  var bits_1 : u32;\n  var k : u32;\n  var n_3 : u32;\n  var m : u32;\n  var param_15 : BlockReader;\n  var param_16 : BlockReader;\n  var param_17 : BlockReader;\n  var param_18 : u32;\n  var i_1 : u32;\n  var param_19 : u32;\n  i = 0u;\n  loop {\n    let x_405 : u32 = i;\n    if ((x_405 < 64u)) {\n    } else {\n      break;\n    }\n    let x_407 : u32 = i;\n    (*(block_1))[x_407] = 0u;\n\n    continuing {\n      let x_409 : u32 = i;\n      i = (x_409 + bitcast<u32>(1i));\n    }\n  }\n  param_11 = 0u;\n  param_12 = 0u;\n  let x_414 : EmulateUint64 = make_emulate_uint64_u1_u1_(&(param_11), &(param_12));\n  x_1 = x_414;\n  param_13 = 0u;\n  param_14 = 1u;\n  let x_418 : EmulateUint64 = make_emulate_uint64_u1_u1_(&(param_13), &(param_14));\n  one = x_418;\n  bits_1 = block_max_bits;\n  k = 32u;\n  n_3 = 0u;\n  loop {\n    var x_433 : bool;\n    var x_434 : bool;\n    let x_427 : u32 = bits_1;\n    let x_428 : bool = (x_427 != 0u);\n    x_434 = x_428;\n    if (x_428) {\n      let x_431 : u32 = k;\n      k = (x_431 - bitcast<u32>(1i));\n      x_433 = (x_431 > 0u);\n      x_434 = x_433;\n    }\n    if (x_434) {\n    } else {\n      break;\n    }\n    let x_436 : u32 = n_3;\n    let x_437 : u32 = bits_1;\n    m = min(x_436, x_437);\n    let x_439 : u32 = m;\n    let x_440 : u32 = bits_1;\n    bits_1 = (x_440 - x_439);\n    let x_442 : u32 = m;\n    let x_444 : BlockReader = *(reader_3);\n    param_15 = x_444;\n    let x_445 : EmulateUint64 = read_bits_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_u1_(&(param_15), x_442);\n    let x_446 : BlockReader = param_15;\n    *(reader_3) = x_446;\n    x_1 = x_445;\n    loop {\n      var x_465 : bool;\n      var x_466 : bool;\n      let x_452 : u32 = n_3;\n      let x_454 : u32 = bits_1;\n      let x_456 : bool = ((x_452 < 64u) & (x_454 != 0u));\n      x_466 = x_456;\n      if (x_456) {\n        let x_459 : u32 = bits_1;\n        bits_1 = (x_459 - bitcast<u32>(1i));\n        let x_462 : BlockReader = *(reader_3);\n        param_16 = x_462;\n        let x_463 : u32 = read_bit_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(&(param_16));\n        let x_464 : BlockReader = param_16;\n        *(reader_3) = x_464;\n        x_465 = (x_463 != 0u);\n        x_466 = x_465;\n      }\n      if (x_466) {\n      } else {\n        break;\n      }\n      loop {\n        var x_486 : bool;\n        var x_487 : bool;\n        let x_472 : u32 = n_3;\n        let x_475 : u32 = bits_1;\n        let x_477 : bool = ((x_472 < 63u) & (x_475 != 0u));\n        x_487 = x_477;\n        if (x_477) {\n          let x_480 : u32 = bits_1;\n          bits_1 = (x_480 - bitcast<u32>(1i));\n          let x_483 : BlockReader = *(reader_3);\n          param_17 = x_483;\n          let x_484 : u32 = read_bit_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(&(param_17));\n          let x_485 : BlockReader = param_17;\n          *(reader_3) = x_485;\n          x_486 = (x_484 == 0u);\n          x_487 = x_486;\n        }\n        if (x_487) {\n        } else {\n          break;\n        }\n\n        continuing {\n          let x_488 : u32 = n_3;\n          n_3 = (x_488 + bitcast<u32>(1i));\n        }\n      }\n\n      continuing {\n        let x_490 : EmulateUint64 = x_1;\n        let x_491 : EmulateUint64 = one;\n        let x_492 : u32 = n_3;\n        n_3 = (x_492 + bitcast<u32>(1i));\n        param_18 = x_492;\n        let x_495 : EmulateUint64 = shift_left_struct_EmulateUint64_u1_u11_u1_(x_491, &(param_18));\n        let x_496 : EmulateUint64 = bitwise_or_struct_EmulateUint64_u1_u11_struct_EmulateUint64_u1_u11_(x_490, x_495);\n        x_1 = x_496;\n      }\n    }\n    i_1 = 0u;\n    loop {\n      let x_503 : u32 = i_1;\n      if ((x_503 < 64u)) {\n      } else {\n        break;\n      }\n      let x_505 : u32 = i_1;\n      let x_507 : u32 = x_1.lo;\n      let x_509 : u32 = k;\n      let x_512 : u32 = (*(block_1))[x_505];\n      (*(block_1))[x_505] = (x_512 + ((x_507 & 1u) << x_509));\n\n      continuing {\n        let x_515 : u32 = i_1;\n        i_1 = (x_515 + bitcast<u32>(1i));\n        let x_517 : EmulateUint64 = x_1;\n        param_19 = 1u;\n        let x_519 : EmulateUint64 = shift_right_struct_EmulateUint64_u1_u11_u1_(x_517, &(param_19));\n        x_1 = x_519;\n      }\n    }\n  }\n  return;\n}\n\nfn uint2int_u1_(x : ptr<function, u32>) -> i32 {\n  let x_392 : u32 = *(x);\n  return bitcast<i32>(((x_392 ^ 2863311530u) - 2863311530u));\n}\n\nfn inverse_lift_i1_64__u1_u1_(block_2 : ptr<function, array<i32, 64u>>, s : u32, idx : u32) {\n  var i_2 : u32;\n  var v : vec4<i32>;\n  var i_3 : u32;\n  i_2 = 0u;\n  loop {\n    let x_526 : u32 = i_2;\n    if ((x_526 < 4u)) {\n    } else {\n      break;\n    }\n    let x_532 : u32 = i_2;\n    let x_533 : u32 = i_2;\n    let x_538 : i32 = (*(block_2))[(idx + (x_533 * s))];\n    v[x_532] = x_538;\n\n    continuing {\n      let x_540 : u32 = i_2;\n      i_2 = (x_540 + bitcast<u32>(1i));\n    }\n  }\n  let x_544 : i32 = v.w;\n  let x_547 : i32 = v.y;\n  v.y = (x_547 + (x_544 >> bitcast<u32>(1i)));\n  let x_551 : i32 = v.y;\n  let x_554 : i32 = v.w;\n  v.w = (x_554 - (x_551 >> bitcast<u32>(1i)));\n  let x_558 : i32 = v.w;\n  let x_560 : i32 = v.y;\n  v.y = (x_560 + x_558);\n  let x_564 : i32 = v.w;\n  v.w = (x_564 << bitcast<u32>(1i));\n  let x_568 : i32 = v.y;\n  let x_570 : i32 = v.w;\n  v.w = (x_570 - x_568);\n  let x_574 : i32 = v.x;\n  let x_577 : i32 = v.z;\n  v.z = (x_577 + x_574);\n  let x_581 : i32 = v.x;\n  v.x = (x_581 << bitcast<u32>(1i));\n  let x_585 : i32 = v.z;\n  let x_587 : i32 = v.x;\n  v.x = (x_587 - x_585);\n  let x_591 : i32 = v.z;\n  let x_593 : i32 = v.y;\n  v.y = (x_593 + x_591);\n  let x_597 : i32 = v.z;\n  v.z = (x_597 << bitcast<u32>(1i));\n  let x_601 : i32 = v.y;\n  let x_603 : i32 = v.z;\n  v.z = (x_603 - x_601);\n  let x_607 : i32 = v.x;\n  let x_609 : i32 = v.w;\n  v.w = (x_609 + x_607);\n  let x_613 : i32 = v.x;\n  v.x = (x_613 << bitcast<u32>(1i));\n  let x_617 : i32 = v.w;\n  let x_619 : i32 = v.x;\n  v.x = (x_619 - x_617);\n  i_3 = 0u;\n  loop {\n    let x_628 : u32 = i_3;\n    if ((x_628 < 4u)) {\n    } else {\n      break;\n    }\n    let x_630 : u32 = i_3;\n    let x_633 : u32 = i_3;\n    let x_635 : i32 = v[x_633];\n    (*(block_2))[(idx + (x_630 * s))] = x_635;\n\n    continuing {\n      let x_637 : u32 = i_3;\n      i_3 = (x_637 + bitcast<u32>(1i));\n    }\n  }\n  return;\n}\n\nfn inverse_transform_i1_64__(block_3 : ptr<function, array<i32, 64u>>) {\n  var y : u32;\n  var x_2 : u32;\n  var param_20 : array<i32, 64u>;\n  var x_3 : u32;\n  var z : u32;\n  var param_21 : array<i32, 64u>;\n  var z_1 : u32;\n  var y_1 : u32;\n  var param_22 : array<i32, 64u>;\n  y = 0u;\n  loop {\n    let x_645 : u32 = y;\n    if ((x_645 < 4u)) {\n    } else {\n      break;\n    }\n    x_2 = 0u;\n    loop {\n      let x_653 : u32 = x_2;\n      if ((x_653 < 4u)) {\n      } else {\n        break;\n      }\n      let x_656 : u32 = x_2;\n      let x_657 : u32 = y;\n      let x_661 : array<i32, 64u> = *(block_3);\n      param_20 = x_661;\n      inverse_lift_i1_64__u1_u1_(&(param_20), 16u, (x_656 + (4u * x_657)));\n      let x_663 : array<i32, 64u> = param_20;\n      *(block_3) = x_663;\n\n      continuing {\n        let x_664 : u32 = x_2;\n        x_2 = (x_664 + bitcast<u32>(1i));\n      }\n    }\n\n    continuing {\n      let x_666 : u32 = y;\n      y = (x_666 + bitcast<u32>(1i));\n    }\n  }\n  x_3 = 0u;\n  loop {\n    let x_674 : u32 = x_3;\n    if ((x_674 < 4u)) {\n    } else {\n      break;\n    }\n    z = 0u;\n    loop {\n      let x_682 : u32 = z;\n      if ((x_682 < 4u)) {\n      } else {\n        break;\n      }\n      let x_684 : u32 = z;\n      let x_686 : u32 = x_3;\n      let x_689 : array<i32, 64u> = *(block_3);\n      param_21 = x_689;\n      inverse_lift_i1_64__u1_u1_(&(param_21), 4u, ((16u * x_684) + x_686));\n      let x_691 : array<i32, 64u> = param_21;\n      *(block_3) = x_691;\n\n      continuing {\n        let x_692 : u32 = z;\n        z = (x_692 + bitcast<u32>(1i));\n      }\n    }\n\n    continuing {\n      let x_694 : u32 = x_3;\n      x_3 = (x_694 + bitcast<u32>(1i));\n    }\n  }\n  z_1 = 0u;\n  loop {\n    let x_702 : u32 = z_1;\n    if ((x_702 < 4u)) {\n    } else {\n      break;\n    }\n    y_1 = 0u;\n    loop {\n      let x_710 : u32 = y_1;\n      if ((x_710 < 4u)) {\n      } else {\n        break;\n      }\n      let x_712 : u32 = y_1;\n      let x_714 : u32 = z_1;\n      let x_718 : array<i32, 64u> = *(block_3);\n      param_22 = x_718;\n      inverse_lift_i1_64__u1_u1_(&(param_22), 1u, ((4u * x_712) + (16u * x_714)));\n      let x_720 : array<i32, 64u> = param_22;\n      *(block_3) = x_720;\n\n      continuing {\n        let x_721 : u32 = y_1;\n        y_1 = (x_721 + bitcast<u32>(1i));\n      }\n    }\n\n    continuing {\n      let x_723 : u32 = z_1;\n      z_1 = (x_723 + bitcast<u32>(1i));\n    }\n  }\n  return;\n}\n\nfn decompress_block_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_f1_64__(reader_4 : ptr<function, BlockReader>, decompressed_block : ptr<function, array<f32, 64u>>) {\n  var s_cont : u32;\n  var param_23 : BlockReader;\n  var emax : i32;\n  var param_24 : BlockReader;\n  var block_max_bits_1 : u32;\n  var uint_block : array<u32, 64u>;\n  var param_25 : BlockReader;\n  var param_26 : array<u32, 64u>;\n  var i_4 : u32;\n  var int_block : array<i32, 64u>;\n  var indexable : array<u32, 64u>;\n  var param_27 : u32;\n  var param_28 : array<i32, 64u>;\n  var inv_w : f32;\n  var i_5 : u32;\n  let x_727 : BlockReader = *(reader_4);\n  param_23 = x_727;\n  let x_728 : u32 = read_bit_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_(&(param_23));\n  let x_729 : BlockReader = param_23;\n  *(reader_4) = x_729;\n  s_cont = x_728;\n  let x_730 : u32 = s_cont;\n  if ((x_730 != 0u)) {\n    let x_737 : BlockReader = *(reader_4);\n    param_24 = x_737;\n    let x_738 : EmulateUint64 = read_bits_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_u1_(&(param_24), 8u);\n    let x_739 : BlockReader = param_24;\n    *(reader_4) = x_739;\n    emax = bitcast<i32>((x_738.lo - 127u));\n    let x_746 : u32 = x_240.max_bits;\n    block_max_bits_1 = (x_746 - 9u);\n    let x_749 : u32 = block_max_bits_1;\n    let x_752 : BlockReader = *(reader_4);\n    param_25 = x_752;\n    let x_754 : array<u32, 64u> = uint_block;\n    param_26 = x_754;\n    decode_ints_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_u1_u1_64__(&(param_25), x_749, &(param_26));\n    let x_756 : BlockReader = param_25;\n    *(reader_4) = x_756;\n    let x_757 : array<u32, 64u> = param_26;\n    uint_block = x_757;\n    i_4 = 0u;\n    loop {\n      let x_764 : u32 = i_4;\n      if ((x_764 < 64u)) {\n      } else {\n        break;\n      }\n      let x_822 : u32 = i_4;\n      indexable = array<u32, 64u>(0u, 1u, 4u, 16u, 20u, 17u, 5u, 2u, 8u, 32u, 21u, 6u, 18u, 24u, 9u, 33u, 36u, 3u, 12u, 48u, 22u, 25u, 37u, 40u, 34u, 10u, 7u, 19u, 28u, 13u, 49u, 52u, 41u, 38u, 26u, 23u, 29u, 53u, 11u, 35u, 44u, 14u, 50u, 56u, 42u, 27u, 39u, 45u, 30u, 54u, 57u, 60u, 51u, 15u, 43u, 46u, 58u, 61u, 55u, 31u, 62u, 59u, 47u, 63u);\n      let x_825 : u32 = indexable[x_822];\n      let x_826 : u32 = i_4;\n      let x_829 : u32 = uint_block[x_826];\n      param_27 = x_829;\n      let x_830 : i32 = uint2int_u1_(&(param_27));\n      int_block[x_825] = x_830;\n\n      continuing {\n        let x_832 : u32 = i_4;\n        i_4 = (x_832 + bitcast<u32>(1i));\n      }\n    }\n    let x_835 : array<i32, 64u> = int_block;\n    param_28 = x_835;\n    inverse_transform_i1_64__(&(param_28));\n    let x_837 : array<i32, 64u> = param_28;\n    int_block = x_837;\n    let x_841 : i32 = emax;\n    inv_w = ldexp(1.0f, (x_841 - 30i));\n    i_5 = 0u;\n    loop {\n      let x_851 : u32 = i_5;\n      if ((x_851 < 64u)) {\n      } else {\n        break;\n      }\n      let x_853 : u32 = i_5;\n      let x_854 : f32 = inv_w;\n      let x_855 : u32 = i_5;\n      let x_857 : i32 = int_block[x_855];\n      (*(decompressed_block))[x_853] = (x_854 * f32(x_857));\n\n      continuing {\n        let x_861 : u32 = i_5;\n        i_5 = (x_861 + bitcast<u32>(1i));\n      }\n    }\n  }\n  return;\n}\n\nfn main_1() {\n  var block_index_1 : u32;\n  var cache_location : u32;\n  var reader_6 : BlockReader;\n  var param_29 : u32;\n  var decompressed_block_1 : array<f32, 64u>;\n  var param_30 : BlockReader;\n  var param_31 : array<f32, 64u>;\n  var i_6 : u32;\n  let x_867 : u32 = x_865.start_block_offset;\n  let x_873 : u32 = gl_GlobalInvocationID.x;\n  let x_876 : u32 = x_865.total_n_blocks;\n  if (((x_867 + x_873) >= x_876)) {\n    return;\n  }\n  let x_887 : u32 = x_865.start_block_offset;\n  let x_889 : u32 = gl_GlobalInvocationID.x;\n  let x_892 : u32 = x_885.block_ids[(x_887 + x_889)];\n  block_index_1 = x_892;\n  let x_898 : u32 = block_index_1;\n  let x_900 : u32 = x_897.cached_item_slots[x_898];\n  cache_location = x_900;\n  let x_903 : u32 = block_index_1;\n  param_29 = x_903;\n  let x_904 : BlockReader = create_block_reader_u1_(&(param_29));\n  reader_6 = x_904;\n  let x_907 : BlockReader = reader_6;\n  param_30 = x_907;\n  let x_909 : array<f32, 64u> = decompressed_block_1;\n  param_31 = x_909;\n  decompress_block_struct_BlockReader_u1_u1_struct_EmulateUint64_u1_u111_f1_64__(&(param_30), &(param_31));\n  let x_911 : array<f32, 64u> = param_31;\n  decompressed_block_1 = x_911;\n  i_6 = 0u;\n  loop {\n    let x_918 : u32 = i_6;\n    if ((x_918 < 64u)) {\n    } else {\n      break;\n    }\n    let x_924 : u32 = cache_location;\n    let x_926 : u32 = i_6;\n    let x_928 : u32 = i_6;\n    let x_930 : f32 = decompressed_block_1[x_928];\n    x_923.decompressed[((x_924 * 64u) + x_926)] = x_930;\n\n    continuing {\n      let x_933 : u32 = i_6;\n      i_6 = (x_933 + bitcast<u32>(1i));\n    }\n  }\n  return;\n}\n\n@compute @workgroup_size(64i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst lru_cache_init_comp_spv = `struct Slot {\n  age : u32,\n  available : u32,\n  item_id : i32,\n}\n\nalias RTArr = array<Slot>;\n\nstruct SlotData {\n  slot_data : RTArr,\n}\n\nstruct OldSize {\n  old_size : u32,\n}\n\nalias RTArr_1 = array<i32>;\n\nstruct CachedItemSlots {\n  cached_item_slot : RTArr_1,\n}\n\nalias RTArr_2 = array<u32>;\n\nstruct SlotAvailableIDs {\n  slot_available_id : RTArr_2,\n}\n\n@group(0) @binding(2) var<storage, read_write> x_12 : SlotData;\n\n@group(1) @binding(0) var<uniform> x_16 : OldSize;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<storage, read_write> x_50 : CachedItemSlots;\n\n@group(0) @binding(1) var<storage, read_write> x_54 : SlotAvailableIDs;\n\nfn main_1() {\n  let x_19 : u32 = x_16.old_size;\n  let x_26 : u32 = gl_GlobalInvocationID.x;\n  x_12.slot_data[(x_19 + x_26)].age = 100000u;\n  let x_31 : u32 = x_16.old_size;\n  let x_33 : u32 = gl_GlobalInvocationID.x;\n  x_12.slot_data[(x_31 + x_33)].available = 1u;\n  let x_39 : u32 = x_16.old_size;\n  let x_41 : u32 = gl_GlobalInvocationID.x;\n  x_12.slot_data[(x_39 + x_41)].item_id = -1i;\n  return;\n}\n\n@compute @workgroup_size(64i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst lru_cache_mark_new_items_comp_spv = `struct PushConstants {\n  global_idx_offset : u32,\n  num_work_items : u32,\n}\n\nalias RTArr = array<i32>;\n\nstruct CachedItemSlots {\n  cached_item_slot : RTArr,\n}\n\nalias RTArr_1 = array<u32>;\n\nalias RTArr_2 = array<u32>;\n\nstruct ItemNeedsCaching {\n  item_needs_caching : RTArr_2,\n}\n\nalias RTArr_3 = array<u32>;\n\nstruct ItemNeeded {\n  item_needed : RTArr_2,\n}\n\nstruct Slot {\n  age : u32,\n  available : u32,\n  item_id : i32,\n}\n\nalias RTArr_4 = array<Slot>;\n\nstruct SlotData {\n  slot_data : RTArr_4,\n}\n\nstruct SlotAvailableIDs {\n  slot_available_id : RTArr_2,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(2) @binding(0) var<uniform> x_18 : PushConstants;\n\n@group(0) @binding(0) var<storage, read_write> x_32 : CachedItemSlots;\n\n@group(1) @binding(1) var<storage, read_write> x_45 : ItemNeedsCaching;\n\n@group(1) @binding(0) var<storage, read> x_51 : ItemNeeded;\n\n@group(0) @binding(2) var<storage, read_write> x_63 : SlotData;\n\n@group(0) @binding(1) var<storage, read_write> x_81 : SlotAvailableIDs;\n\nfn main_1() {\n  var idx : u32;\n  var slot : i32;\n  let x_15 : u32 = gl_GlobalInvocationID.x;\n  let x_23 : u32 = x_18.global_idx_offset;\n  idx = (x_15 + (x_23 * 32u));\n  let x_33 : u32 = idx;\n  let x_36 : i32 = x_32.cached_item_slot[x_33];\n  slot = x_36;\n  let x_37 : i32 = slot;\n  if ((x_37 >= 0i)) {\n    let x_46 : u32 = idx;\n    x_45.item_needs_caching[x_46] = 0u;\n    let x_52 : u32 = idx;\n    let x_54 : u32 = x_51.item_needed[x_52];\n    if ((x_54 == 1u)) {\n      let x_64 : i32 = slot;\n      x_63.slot_data[x_64].age = 0u;\n      let x_66 : i32 = slot;\n      x_63.slot_data[x_66].available = 0u;\n    } else {\n      let x_70 : i32 = slot;\n      x_63.slot_data[x_70].available = 1u;\n    }\n  } else {\n    let x_73 : u32 = idx;\n    let x_74 : u32 = idx;\n    let x_76 : u32 = x_51.item_needed[x_74];\n    x_45.item_needs_caching[x_73] = x_76;\n  }\n  return;\n}\n\n@compute @workgroup_size(32i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst lru_cache_update_comp_spv = `struct NumNewItemIDs {\n  num_new_items : u32,\n}\n\nalias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct NewItemIDs {\n  new_items : RTArr_1,\n}\n\nstruct SlotAvailableIDs {\n  slot_available_id : RTArr_1,\n}\n\nstruct Slot {\n  age : u32,\n  available : u32,\n  item_id : i32,\n}\n\nalias RTArr_2 = array<Slot>;\n\nstruct SlotData {\n  slot_data : RTArr_2,\n}\n\nalias RTArr_3 = array<i32>;\n\nstruct CachedItemSlots {\n  cached_item_slot : RTArr_3,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(2) @binding(0) var<uniform> x_16 : NumNewItemIDs;\n\n@group(1) @binding(0) var<storage, read_write> x_32 : NewItemIDs;\n\n@group(0) @binding(1) var<storage, read_write> x_41 : SlotAvailableIDs;\n\n@group(0) @binding(2) var<storage, read_write> x_52 : SlotData;\n\n@group(0) @binding(0) var<storage, read_write> x_66 : CachedItemSlots;\n\nfn main_1() {\n  var item : u32;\n  var slot : u32;\n  var prev : i32;\n  let x_13 : u32 = gl_GlobalInvocationID.x;\n  let x_21 : u32 = x_16.num_new_items;\n  if ((x_13 >= x_21)) {\n    return;\n  }\n  let x_34 : u32 = gl_GlobalInvocationID.x;\n  let x_36 : u32 = x_32.new_items[x_34];\n  item = x_36;\n  let x_43 : u32 = gl_GlobalInvocationID.x;\n  let x_45 : u32 = x_41.slot_available_id[x_43];\n  slot = x_45;\n  let x_53 : u32 = slot;\n  let x_57 : i32 = x_52.slot_data[x_53].item_id;\n  prev = x_57;\n  let x_58 : i32 = prev;\n  if ((x_58 != -1i)) {\n    let x_67 : i32 = prev;\n    x_66.cached_item_slot[x_67] = -1i;\n  }\n  let x_69 : u32 = slot;\n  x_52.slot_data[x_69].age = 0u;\n  let x_71 : u32 = slot;\n  let x_72 : u32 = item;\n  x_52.slot_data[x_71].item_id = bitcast<i32>(x_72);\n  let x_75 : u32 = slot;\n  x_52.slot_data[x_75].available = 0u;\n  let x_78 : u32 = item;\n  let x_79 : u32 = slot;\n  x_66.cached_item_slot[x_78] = bitcast<i32>(x_79);\n  return;\n}\n\n@compute @workgroup_size(64i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst lru_copy_available_slot_age_comp_spv = `struct NumNewItemIDs {\n  num_slots_available : u32,\n}\n\nalias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct AvailableSlotAges {\n  available_slot_ages : RTArr_1,\n}\n\nstruct Slot {\n  age : u32,\n  available : u32,\n  item_id : i32,\n}\n\nalias RTArr_2 = array<Slot>;\n\nstruct SlotData {\n  slot_data : RTArr_2,\n}\n\nstruct SlotAvailableIDs {\n  slot_available_id : RTArr_1,\n}\n\nalias RTArr_3 = array<i32>;\n\nstruct CachedItemSlots {\n  cached_item_slot : RTArr_3,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(2) @binding(0) var<uniform> x_16 : NumNewItemIDs;\n\n@group(1) @binding(0) var<storage, read_write> x_30 : AvailableSlotAges;\n\n@group(0) @binding(2) var<storage, read_write> x_37 : SlotData;\n\n@group(0) @binding(1) var<storage, read_write> x_41 : SlotAvailableIDs;\n\n@group(0) @binding(0) var<storage, read_write> x_52 : CachedItemSlots;\n\nfn main_1() {\n  let x_13 : u32 = gl_GlobalInvocationID.x;\n  let x_21 : u32 = x_16.num_slots_available;\n  if ((x_13 >= x_21)) {\n    return;\n  }\n  let x_32 : u32 = gl_GlobalInvocationID.x;\n  let x_43 : u32 = gl_GlobalInvocationID.x;\n  let x_45 : u32 = x_41.slot_available_id[x_43];\n  let x_47 : u32 = x_37.slot_data[x_45].age;\n  x_30.available_slot_ages[x_32] = x_47;\n  return;\n}\n\n@compute @workgroup_size(64i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst lru_cache_age_slots_comp_spv = `struct Slot {\n  age : u32,\n  available : u32,\n  item_id : i32,\n}\n\nalias RTArr = array<Slot>;\n\nstruct SlotData {\n  slot_data : RTArr,\n}\n\nalias RTArr_1 = array<i32>;\n\nstruct CachedItemSlots {\n  cached_item_slot : RTArr_1,\n}\n\nalias RTArr_2 = array<u32>;\n\nstruct SlotAvailableIDs {\n  slot_available_id : RTArr_2,\n}\n\n@group(0) @binding(2) var<storage, read_write> x_12 : SlotData;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<storage, read_write> x_30 : CachedItemSlots;\n\n@group(0) @binding(1) var<storage, read_write> x_34 : SlotAvailableIDs;\n\nfn main_1() {\n  let x_20 : u32 = gl_GlobalInvocationID.x;\n  let x_24 : u32 = x_12.slot_data[x_20].age;\n  x_12.slot_data[x_20].age = (x_24 + 1u);\n  return;\n}\n\n@compute @workgroup_size(64i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst lru_cache_extract_slot_available_comp_spv = `alias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct Output {\n  out_buf : RTArr_1,\n}\n\nstruct Slot {\n  age : u32,\n  available : u32,\n  item_id : i32,\n}\n\nalias RTArr_2 = array<Slot>;\n\nstruct SlotData {\n  slot_data : RTArr_2,\n}\n\nalias RTArr_3 = array<i32>;\n\nstruct CachedItemSlots {\n  cached_item_slot : RTArr_3,\n}\n\nstruct SlotAvailableIDs {\n  slot_available_id : RTArr_1,\n}\n\n@group(1) @binding(0) var<storage, read_write> x_10 : Output;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(2) var<storage, read_write> x_24 : SlotData;\n\n@group(0) @binding(0) var<storage, read_write> x_35 : CachedItemSlots;\n\n@group(0) @binding(1) var<storage, read_write> x_39 : SlotAvailableIDs;\n\nfn main_1() {\n  let x_19 : u32 = gl_GlobalInvocationID.x;\n  let x_26 : u32 = gl_GlobalInvocationID.x;\n  let x_30 : u32 = x_24.slot_data[x_26].available;\n  x_10.out_buf[x_19] = x_30;\n  return;\n}\n\n@compute @workgroup_size(64i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst macro_traverse_comp_spv = `struct GridIterator {\n  grid_dims : vec3<i32>,\n  grid_step : vec3<i32>,\n  t_delta : vec3<f32>,\n  cell : vec3<i32>,\n  t_max : vec3<f32>,\n  t : f32,\n}\n\nstruct GridIteratorState {\n  t_max : vec3<f32>,\n  cell_id : i32,\n}\n\nstruct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nstruct RayInfo {\n  ray_dir : vec3<f32>,\n  t : f32,\n}\n\nalias RTArr = array<RayInfo>;\n\nstruct RayInformation {\n  rays : RTArr,\n}\n\nstruct ViewParams {\n  proj_view : mat4x4<f32>,\n  eye_pos : vec4<f32>,\n  eye_dir : vec4<f32>,\n  near_plane : f32,\n  current_pass_index : u32,\n  speculation_count : u32,\n}\n\nalias RTArr_1 = array<u32>;\n\nalias RTArr_2 = array<u32>;\n\nstruct RayIDs {\n  ray_ids : RTArr_2,\n}\n\nalias RTArr_3 = array<u32>;\n\nstruct RayOffsets {\n  ray_offsets : RTArr_2,\n}\n\nstruct GridIteratorState_1 {\n  t_max : vec3<f32>,\n  cell_id : i32,\n}\n\nalias RTArr_4 = array<GridIteratorState_1>;\n\nstruct GridIterState {\n  iterator_state : RTArr_4,\n}\n\nalias RTArr_5 = array<vec2<f32>>;\n\nalias RTArr_6 = array<vec2<f32>>;\n\nstruct CoarseCellRange {\n  coarse_cell_ranges : RTArr_6,\n}\n\nstruct VoxelInformation {\n  voxel_ranges : RTArr_6,\n}\n\nstruct RayBlockIDs {\n  block_ids : RTArr_2,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<uniform> x_312 : VolumeParams;\n\n@group(0) @binding(2) var<storage, read_write> x_334 : RayInformation;\n\n@group(0) @binding(1) var<uniform> x_347 : ViewParams;\n\n@group(0) @binding(5) var<storage, read_write> x_367 : RayIDs;\n\n@group(0) @binding(6) var<storage, read_write> x_371 : RayOffsets;\n\n@group(0) @binding(4) var<storage, read_write> x_479 : GridIterState;\n\n@group(1) @binding(1) var<storage, read_write> x_533 : CoarseCellRange;\n\n@group(1) @binding(0) var<storage, read_write> x_667 : VoxelInformation;\n\n@group(0) @binding(7) var<storage, read_write> x_695 : RayBlockIDs;\n\n@group(0) @binding(3) var render_target : texture_storage_2d<rgba8unorm, write>;\n\nfn init_grid_iterator_vf3_vf3_f1_vi3_(ray_org : ptr<function, vec3<f32>>, ray_dir : ptr<function, vec3<f32>>, t : ptr<function, f32>, grid_dims_1 : ptr<function, vec3<i32>>) -> GridIterator {\n  var grid_iter : GridIterator;\n  var inv_ray_dir : vec3<f32>;\n  var p_1 : vec3<f32>;\n  var cell : vec3<f32>;\n  var t_max_neg : vec3<f32>;\n  var t_max_pos : vec3<f32>;\n  var is_neg_dir : vec3<bool>;\n  let x_67 : vec3<i32> = *(grid_dims_1);\n  grid_iter.grid_dims = x_67;\n  let x_70 : vec3<f32> = *(ray_dir);\n  grid_iter.grid_step = vec3<i32>(sign(x_70));\n  let x_76 : vec3<f32> = *(ray_dir);\n  inv_ray_dir = (vec3<f32>(1.0f, 1.0f, 1.0f) / x_76);\n  let x_80 : vec3<f32> = inv_ray_dir;\n  grid_iter.t_delta = abs(x_80);\n  let x_84 : vec3<f32> = *(ray_org);\n  let x_85 : f32 = *(t);\n  let x_86 : vec3<f32> = *(ray_dir);\n  p_1 = (x_84 + (x_86 * x_85));\n  let x_89 : vec3<f32> = p_1;\n  let x_92 : vec3<i32> = *(grid_dims_1);\n  p_1 = clamp(x_89, vec3<f32>(0.0f, 0.0f, 0.0f), vec3<f32>((x_92 - vec3<i32>(1i, 1i, 1i))));\n  let x_98 : vec3<f32> = p_1;\n  cell = floor(x_98);\n  let x_101 : vec3<f32> = cell;\n  let x_102 : vec3<f32> = *(ray_org);\n  let x_104 : vec3<f32> = inv_ray_dir;\n  t_max_neg = ((x_101 - x_102) * x_104);\n  let x_107 : vec3<f32> = cell;\n  let x_110 : vec3<f32> = *(ray_org);\n  let x_112 : vec3<f32> = inv_ray_dir;\n  t_max_pos = (((x_107 + vec3<f32>(1.0f, 1.0f, 1.0f)) - x_110) * x_112);\n  let x_116 : vec3<f32> = *(ray_dir);\n  is_neg_dir = (x_116 < vec3<f32>(0.0f, 0.0f, 0.0f));\n  let x_119 : vec3<f32> = t_max_pos;\n  let x_120 : vec3<f32> = t_max_neg;\n  let x_121 : vec3<bool> = is_neg_dir;\n  grid_iter.t_max = select(x_119, x_120, x_121);\n  let x_125 : vec3<f32> = cell;\n  grid_iter.cell = vec3<i32>(x_125);\n  let x_129 : f32 = *(t);\n  grid_iter.t = x_129;\n  let x_131 : GridIterator = grid_iter;\n  return x_131;\n}\n\nfn restore_grid_iterator_vf3_vf3_vi3_struct_GridIteratorState_vf3_i11_(ray_org_1 : ptr<function, vec3<f32>>, ray_dir_1 : ptr<function, vec3<f32>>, grid_dims_2 : ptr<function, vec3<i32>>, state : ptr<function, GridIteratorState>) -> GridIterator {\n  var grid_iter_1 : GridIterator;\n  var inv_ray_dir_1 : vec3<f32>;\n  let x_135 : vec3<i32> = *(grid_dims_2);\n  grid_iter_1.grid_dims = x_135;\n  let x_137 : vec3<f32> = *(ray_dir_1);\n  grid_iter_1.grid_step = vec3<i32>(sign(x_137));\n  let x_142 : vec3<f32> = *(ray_dir_1);\n  inv_ray_dir_1 = (vec3<f32>(1.0f, 1.0f, 1.0f) / x_142);\n  let x_145 : vec3<f32> = inv_ray_dir_1;\n  grid_iter_1.t_delta = abs(x_145);\n  let x_150 : i32 = (*(state)).cell_id;\n  let x_154 : i32 = (*(grid_dims_2)).x;\n  let x_157 : i32 = (*(state)).cell_id;\n  let x_159 : i32 = (*(grid_dims_2)).x;\n  let x_163 : i32 = (*(grid_dims_2)).y;\n  let x_166 : i32 = (*(state)).cell_id;\n  let x_168 : i32 = (*(grid_dims_2)).x;\n  let x_170 : i32 = (*(grid_dims_2)).y;\n  grid_iter_1.cell = vec3<i32>((x_150 % x_154), ((x_157 / x_159) % x_163), (x_166 / (x_168 * x_170)));\n  let x_176 : vec3<f32> = (*(state)).t_max;\n  grid_iter_1.t_max = x_176;\n  let x_179 : f32 = (*(state)).t_max.x;\n  let x_181 : f32 = (*(state)).t_max.y;\n  let x_184 : f32 = (*(state)).t_max.z;\n  grid_iter_1.t = min(x_179, min(x_181, x_184));\n  let x_188 : GridIterator = grid_iter_1;\n  return x_188;\n}\n\nfn outside_grid_vi3_vi3_(p : vec3<i32>, grid_dims : vec3<i32>) -> bool {\n  var x_62 : bool;\n  var x_63 : bool;\n  let x_57 : bool = any((p < vec3<i32>(0i, 0i, 0i)));\n  x_63 = x_57;\n  if (!(x_57)) {\n    x_62 = any((p >= grid_dims));\n    x_63 = x_62;\n  }\n  return x_63;\n}\n\nfn grid_iterator_get_cell_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_vf2_vi3_(iter : ptr<function, GridIterator>, cell_t_range : ptr<function, vec2<f32>>, cell_id : ptr<function, vec3<i32>>) -> bool {\n  let x_192 : vec3<i32> = (*(iter)).cell;\n  let x_194 : vec3<i32> = (*(iter)).grid_dims;\n  let x_195 : bool = outside_grid_vi3_vi3_(x_192, x_194);\n  if (x_195) {\n    return false;\n  }\n  let x_201 : f32 = (*(iter)).t;\n  (*(cell_t_range)).x = x_201;\n  let x_204 : f32 = (*(iter)).t_max.x;\n  let x_206 : f32 = (*(iter)).t_max.y;\n  let x_208 : f32 = (*(iter)).t_max.z;\n  (*(cell_t_range)).y = min(x_204, min(x_206, x_208));\n  let x_213 : vec3<i32> = (*(iter)).cell;\n  *(cell_id) = x_213;\n  let x_215 : f32 = (*(cell_t_range)).y;\n  let x_217 : f32 = (*(cell_t_range)).x;\n  if ((x_215 < x_217)) {\n    return false;\n  }\n  return true;\n}\n\nfn grid_iterator_advance_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_(iter_2 : ptr<function, GridIterator>) {\n  let x_242 : f32 = (*(iter_2)).t_max.x;\n  let x_244 : f32 = (*(iter_2)).t_max.y;\n  let x_246 : f32 = (*(iter_2)).t_max.z;\n  (*(iter_2)).t = min(x_242, min(x_244, x_246));\n  let x_251 : f32 = (*(iter_2)).t;\n  let x_253 : f32 = (*(iter_2)).t_max.x;\n  if ((x_251 == x_253)) {\n    let x_258 : i32 = (*(iter_2)).grid_step.x;\n    let x_260 : i32 = (*(iter_2)).cell.x;\n    (*(iter_2)).cell.x = (x_260 + x_258);\n    let x_264 : f32 = (*(iter_2)).t_delta.x;\n    let x_266 : f32 = (*(iter_2)).t_max.x;\n    (*(iter_2)).t_max.x = (x_266 + x_264);\n  } else {\n    let x_271 : f32 = (*(iter_2)).t;\n    let x_273 : f32 = (*(iter_2)).t_max.y;\n    if ((x_271 == x_273)) {\n      let x_278 : i32 = (*(iter_2)).grid_step.y;\n      let x_280 : i32 = (*(iter_2)).cell.y;\n      (*(iter_2)).cell.y = (x_280 + x_278);\n      let x_284 : f32 = (*(iter_2)).t_delta.y;\n      let x_286 : f32 = (*(iter_2)).t_max.y;\n      (*(iter_2)).t_max.y = (x_286 + x_284);\n    } else {\n      let x_291 : i32 = (*(iter_2)).grid_step.z;\n      let x_293 : i32 = (*(iter_2)).cell.z;\n      (*(iter_2)).cell.z = (x_293 + x_291);\n      let x_297 : f32 = (*(iter_2)).t_delta.z;\n      let x_299 : f32 = (*(iter_2)).t_max.z;\n      (*(iter_2)).t_max.z = (x_299 + x_297);\n    }\n  }\n  return;\n}\n\nfn grid_iterator_get_cell_id_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_(iter_1 : ptr<function, GridIterator>) -> i32 {\n  let x_226 : i32 = (*(iter_1)).cell.x;\n  let x_228 : i32 = (*(iter_1)).grid_dims.x;\n  let x_230 : i32 = (*(iter_1)).cell.y;\n  let x_232 : i32 = (*(iter_1)).grid_dims.y;\n  let x_234 : i32 = (*(iter_1)).cell.z;\n  return (x_226 + (x_228 * (x_230 + (x_232 * x_234))));\n}\n\nfn main_1() {\n  var ray_index : u32;\n  var i : i32;\n  var n_blocks : vec3<u32>;\n  var macrogrid_dims : vec3<i32>;\n  var coarse_grid_dims : vec3<i32>;\n  var volume_translation : vec3<f32>;\n  var transformed_eye : vec3<f32>;\n  var ray_org_2 : vec3<f32>;\n  var macrocell_grid_org : vec3<f32>;\n  var macrocell_grid_ray_dir : vec3<f32>;\n  var coarse_grid_org : vec3<f32>;\n  var coarse_grid_ray_dir : vec3<f32>;\n  var first_coarse_iter : bool;\n  var coarse_grid_iter : GridIterator;\n  var param : vec3<f32>;\n  var param_1 : vec3<f32>;\n  var param_2 : f32;\n  var param_3 : vec3<i32>;\n  var param_4 : vec3<f32>;\n  var param_5 : vec3<f32>;\n  var param_6 : vec3<i32>;\n  var param_7 : GridIteratorState;\n  var speculated : u32;\n  var coarse_cell_t_range : vec2<f32>;\n  var coarse_cell_id : vec3<i32>;\n  var param_8 : GridIterator;\n  var param_9 : vec2<f32>;\n  var param_10 : vec3<i32>;\n  var coarse_cell_index : u32;\n  var coarse_cell_range : vec2<f32>;\n  var param_11 : GridIterator;\n  var coarse_grid_cell_org : vec3<i32>;\n  var macrocell_grid_dims : vec3<i32>;\n  var grid_iter_2 : GridIterator;\n  var param_12 : vec3<f32>;\n  var param_13 : vec3<f32>;\n  var param_14 : f32;\n  var param_15 : vec3<i32>;\n  var param_16 : vec3<f32>;\n  var param_17 : vec3<f32>;\n  var param_18 : vec3<i32>;\n  var param_19 : GridIteratorState;\n  var param_20 : GridIterator;\n  var cell_t_range_1 : vec2<f32>;\n  var cell_id_1 : vec3<i32>;\n  var param_21 : GridIterator;\n  var param_22 : vec2<f32>;\n  var param_23 : vec3<i32>;\n  var block_index : u32;\n  var cell_range : vec2<f32>;\n  var param_24 : GridIterator;\n  var param_25 : GridIterator;\n  var param_26 : GridIterator;\n  var param_27 : GridIterator;\n  let x_307 : u32 = gl_GlobalInvocationID.x;\n  let x_315 : u32 = x_312.image_width;\n  if ((x_307 >= x_315)) {\n    return;\n  }\n  let x_323 : u32 = gl_GlobalInvocationID.x;\n  let x_325 : u32 = gl_GlobalInvocationID.y;\n  let x_327 : u32 = x_312.image_width;\n  ray_index = (x_323 + (x_325 * x_327));\n  let x_335 : u32 = ray_index;\n  let x_338 : f32 = x_334.rays[x_335].t;\n  if ((x_338 == 340282346638528859811704183484516925440.0f)) {\n    return;\n  }\n  let x_349 : u32 = x_347.speculation_count;\n  if ((x_349 > 1u)) {\n    i = 0i;\n    loop {\n      let x_359 : i32 = i;\n      let x_362 : u32 = x_347.speculation_count;\n      if ((bitcast<u32>(x_359) < x_362)) {\n      } else {\n        break;\n      }\n      let x_372 : u32 = ray_index;\n      let x_374 : u32 = x_371.ray_offsets[x_372];\n      let x_376 : u32 = x_347.speculation_count;\n      let x_378 : i32 = i;\n      let x_381 : u32 = ray_index;\n      x_367.ray_ids[((x_374 * x_376) + bitcast<u32>(x_378))] = x_381;\n\n      continuing {\n        let x_383 : i32 = i;\n        i = (x_383 + 1i);\n      }\n    }\n  } else {\n    let x_386 : u32 = ray_index;\n    let x_387 : u32 = ray_index;\n    x_367.ray_ids[x_386] = x_387;\n    let x_389 : u32 = ray_index;\n    let x_390 : u32 = ray_index;\n    x_371.ray_offsets[x_389] = x_390;\n  }\n  let x_396 : vec4<u32> = x_312.padded_dims;\n  n_blocks = (vec3<u32>(x_396.x, x_396.y, x_396.z) / vec3<u32>(4u, 4u, 4u));\n  let x_402 : vec3<u32> = n_blocks;\n  macrogrid_dims = bitcast<vec3<i32>>(x_402);\n  let x_405 : vec3<i32> = macrogrid_dims;\n  coarse_grid_dims = vec3<i32>(ceil((vec3<f32>(x_405) / vec3<f32>(4.0f, 4.0f, 4.0f))));\n  let x_415 : vec4<f32> = x_312.volume_scale;\n  volume_translation = (vec3<f32>(0.0f, 0.0f, 0.0f) - (vec3<f32>(x_415.x, x_415.y, x_415.z) * 0.5f));\n  let x_422 : vec4<f32> = x_347.eye_pos;\n  let x_424 : vec3<f32> = volume_translation;\n  let x_427 : vec4<f32> = x_312.volume_scale;\n  transformed_eye = ((vec3<f32>(x_422.x, x_422.y, x_422.z) - x_424) / vec3<f32>(x_427.x, x_427.y, x_427.z));\n  let x_431 : vec3<f32> = transformed_eye;\n  let x_433 : vec4<u32> = x_312.volume_dims;\n  ray_org_2 = ((x_431 * vec3<f32>(vec3<u32>(x_433.x, x_433.y, x_433.z))) - vec3<f32>(0.5f, 0.5f, 0.5f));\n  let x_440 : vec3<f32> = ray_org_2;\n  macrocell_grid_org = (x_440 * 0.25f);\n  let x_444 : u32 = ray_index;\n  let x_447 : vec3<f32> = x_334.rays[x_444].ray_dir;\n  macrocell_grid_ray_dir = (x_447 * 0.25f);\n  let x_450 : vec3<f32> = macrocell_grid_org;\n  coarse_grid_org = (x_450 * 0.25f);\n  let x_453 : vec3<f32> = macrocell_grid_ray_dir;\n  coarse_grid_ray_dir = (x_453 * 0.25f);\n  first_coarse_iter = true;\n  let x_458 : u32 = x_347.current_pass_index;\n  if ((x_458 == 0u)) {\n    let x_463 : u32 = ray_index;\n    let x_465 : vec3<f32> = coarse_grid_org;\n    param = x_465;\n    let x_467 : vec3<f32> = coarse_grid_ray_dir;\n    param_1 = x_467;\n    let x_470 : f32 = x_334.rays[x_463].t;\n    param_2 = x_470;\n    let x_472 : vec3<i32> = coarse_grid_dims;\n    param_3 = x_472;\n    let x_473 : GridIterator = init_grid_iterator_vf3_vf3_f1_vi3_(&(param), &(param_1), &(param_2), &(param_3));\n    coarse_grid_iter = x_473;\n  } else {\n    let x_480 : u32 = ray_index;\n    let x_483 : vec3<f32> = coarse_grid_org;\n    param_4 = x_483;\n    let x_485 : vec3<f32> = coarse_grid_ray_dir;\n    param_5 = x_485;\n    let x_487 : vec3<i32> = coarse_grid_dims;\n    param_6 = x_487;\n    let x_491 : GridIteratorState_1 = x_479.iterator_state[(x_480 * 2u)];\n    param_7.t_max = x_491.t_max;\n    param_7.cell_id = x_491.cell_id;\n    let x_496 : GridIterator = restore_grid_iterator_vf3_vf3_vi3_struct_GridIteratorState_vf3_i11_(&(param_4), &(param_5), &(param_6), &(param_7));\n    coarse_grid_iter = x_496;\n  }\n  speculated = 0u;\n  loop {\n    var x_550 : bool;\n    var x_551 : bool;\n    let x_506 : GridIterator = coarse_grid_iter;\n    param_8 = x_506;\n    let x_509 : bool = grid_iterator_get_cell_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_vf2_vi3_(&(param_8), &(param_9), &(param_10));\n    let x_510 : GridIterator = param_8;\n    coarse_grid_iter = x_510;\n    let x_511 : vec2<f32> = param_9;\n    coarse_cell_t_range = x_511;\n    let x_512 : vec3<i32> = param_10;\n    coarse_cell_id = x_512;\n    if (x_509) {\n    } else {\n      break;\n    }\n    let x_515 : i32 = coarse_cell_id.x;\n    let x_517 : i32 = coarse_grid_dims.x;\n    let x_519 : i32 = coarse_cell_id.y;\n    let x_521 : i32 = coarse_grid_dims.y;\n    let x_523 : i32 = coarse_cell_id.z;\n    coarse_cell_index = bitcast<u32>((x_515 + (x_517 * (x_519 + (x_521 * x_523)))));\n    let x_534 : u32 = coarse_cell_index;\n    let x_537 : vec2<f32> = x_533.coarse_cell_ranges[x_534];\n    coarse_cell_range = x_537;\n    let x_539 : f32 = x_312.isovalue;\n    let x_541 : f32 = coarse_cell_range.x;\n    let x_542 : bool = (x_539 < x_541);\n    x_551 = x_542;\n    if (!(x_542)) {\n      let x_547 : f32 = x_312.isovalue;\n      let x_549 : f32 = coarse_cell_range.y;\n      x_550 = (x_547 > x_549);\n      x_551 = x_550;\n    }\n    if (x_551) {\n      first_coarse_iter = false;\n      let x_555 : GridIterator = coarse_grid_iter;\n      param_11 = x_555;\n      grid_iterator_advance_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_(&(param_11));\n      let x_557 : GridIterator = param_11;\n      coarse_grid_iter = x_557;\n      continue;\n    }\n    let x_560 : vec3<i32> = coarse_cell_id;\n    coarse_grid_cell_org = (x_560 * vec3<i32>(4i, 4i, 4i));\n    let x_564 : vec3<i32> = coarse_grid_cell_org;\n    let x_567 : vec3<i32> = macrogrid_dims;\n    let x_570 : vec3<i32> = coarse_grid_cell_org;\n    macrocell_grid_dims = vec3<i32>((min((vec3<f32>(x_564) + vec3<f32>(4.0f, 4.0f, 4.0f)), vec3<f32>(x_567)) - vec3<f32>(x_570)));\n    let x_575 : u32 = x_347.current_pass_index;\n    let x_577 : bool = first_coarse_iter;\n    if (((x_575 == 0u) | !(x_577))) {\n      let x_583 : vec3<f32> = macrocell_grid_org;\n      let x_584 : vec3<i32> = coarse_grid_cell_org;\n      param_12 = (x_583 - vec3<f32>(x_584));\n      let x_589 : vec3<f32> = macrocell_grid_ray_dir;\n      param_13 = x_589;\n      let x_592 : f32 = coarse_cell_t_range.x;\n      param_14 = x_592;\n      let x_594 : vec3<i32> = macrocell_grid_dims;\n      param_15 = x_594;\n      let x_595 : GridIterator = init_grid_iterator_vf3_vf3_f1_vi3_(&(param_12), &(param_13), &(param_14), &(param_15));\n      grid_iter_2 = x_595;\n    } else {\n      let x_597 : vec3<f32> = macrocell_grid_org;\n      let x_598 : vec3<i32> = coarse_grid_cell_org;\n      let x_601 : u32 = ray_index;\n      param_16 = (x_597 - vec3<f32>(x_598));\n      let x_606 : vec3<f32> = macrocell_grid_ray_dir;\n      param_17 = x_606;\n      let x_608 : vec3<i32> = macrocell_grid_dims;\n      param_18 = x_608;\n      let x_611 : GridIteratorState_1 = x_479.iterator_state[((x_601 * 2u) + 1u)];\n      param_19.t_max = x_611.t_max;\n      param_19.cell_id = x_611.cell_id;\n      let x_616 : GridIterator = restore_grid_iterator_vf3_vf3_vi3_struct_GridIteratorState_vf3_i11_(&(param_16), &(param_17), &(param_18), &(param_19));\n      grid_iter_2 = x_616;\n      let x_618 : GridIterator = grid_iter_2;\n      param_20 = x_618;\n      grid_iterator_advance_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_(&(param_20));\n      let x_620 : GridIterator = param_20;\n      grid_iter_2 = x_620;\n    }\n    loop {\n      var x_682 : bool;\n      var x_683 : bool;\n      let x_629 : GridIterator = grid_iter_2;\n      param_21 = x_629;\n      let x_632 : bool = grid_iterator_get_cell_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_vf2_vi3_(&(param_21), &(param_22), &(param_23));\n      let x_633 : GridIterator = param_21;\n      grid_iter_2 = x_633;\n      let x_634 : vec2<f32> = param_22;\n      cell_t_range_1 = x_634;\n      let x_635 : vec3<i32> = param_23;\n      cell_id_1 = x_635;\n      if (x_632) {\n      } else {\n        break;\n      }\n      let x_638 : i32 = coarse_grid_cell_org.x;\n      let x_640 : i32 = cell_id_1.x;\n      let x_644 : u32 = n_blocks.x;\n      let x_646 : i32 = coarse_grid_cell_org.y;\n      let x_648 : i32 = cell_id_1.y;\n      let x_652 : u32 = n_blocks.y;\n      let x_654 : i32 = coarse_grid_cell_org.z;\n      let x_656 : i32 = cell_id_1.z;\n      block_index = (bitcast<u32>((x_638 + x_640)) + (x_644 * (bitcast<u32>((x_646 + x_648)) + (x_652 * bitcast<u32>((x_654 + x_656))))));\n      let x_668 : u32 = block_index;\n      let x_670 : vec2<f32> = x_667.voxel_ranges[x_668];\n      cell_range = x_670;\n      let x_672 : f32 = x_312.isovalue;\n      let x_674 : f32 = cell_range.x;\n      let x_675 : bool = (x_672 >= x_674);\n      x_683 = x_675;\n      if (x_675) {\n        let x_679 : f32 = x_312.isovalue;\n        let x_681 : f32 = cell_range.y;\n        x_682 = (x_679 <= x_681);\n        x_683 = x_682;\n      }\n      if (x_683) {\n        let x_687 : u32 = x_347.speculation_count;\n        if ((x_687 == 0u)) {\n          return;\n        }\n        let x_696 : u32 = ray_index;\n        let x_698 : u32 = x_371.ray_offsets[x_696];\n        let x_700 : u32 = x_347.speculation_count;\n        let x_702 : u32 = speculated;\n        let x_704 : u32 = block_index;\n        x_695.block_ids[((x_698 * x_700) + x_702)] = x_704;\n        let x_706 : u32 = speculated;\n        speculated = (x_706 + bitcast<u32>(1i));\n        let x_708 : u32 = speculated;\n        let x_710 : u32 = x_347.speculation_count;\n        if ((x_708 == x_710)) {\n          let x_714 : u32 = ray_index;\n          let x_717 : GridIterator = coarse_grid_iter;\n          param_24 = x_717;\n          let x_718 : i32 = grid_iterator_get_cell_id_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_(&(param_24));\n          x_479.iterator_state[(x_714 * 2u)].cell_id = x_718;\n          let x_721 : u32 = ray_index;\n          let x_724 : vec3<f32> = coarse_grid_iter.t_max;\n          x_479.iterator_state[(x_721 * 2u)].t_max = x_724;\n          let x_726 : u32 = ray_index;\n          let x_730 : GridIterator = grid_iter_2;\n          param_25 = x_730;\n          let x_731 : i32 = grid_iterator_get_cell_id_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_(&(param_25));\n          x_479.iterator_state[((x_726 * 2u) + 1u)].cell_id = x_731;\n          let x_733 : u32 = ray_index;\n          let x_737 : vec3<f32> = grid_iter_2.t_max;\n          x_479.iterator_state[((x_733 * 2u) + 1u)].t_max = x_737;\n          return;\n        }\n      }\n      let x_741 : GridIterator = grid_iter_2;\n      param_26 = x_741;\n      grid_iterator_advance_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_(&(param_26));\n      let x_743 : GridIterator = param_26;\n      grid_iter_2 = x_743;\n    }\n    first_coarse_iter = false;\n    let x_745 : GridIterator = coarse_grid_iter;\n    param_27 = x_745;\n    grid_iterator_advance_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_(&(param_27));\n    let x_747 : GridIterator = param_27;\n    coarse_grid_iter = x_747;\n  }\n  let x_748 : u32 = ray_index;\n  x_334.rays[x_748].t = 340282346638528859811704183484516925440.0f;\n  return;\n}\n\n@compute @workgroup_size(64i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst radix_sort_chunk_comp_spv = `struct BufferInfo {\n  size : u32,\n}\n\nalias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct Keys {\n  keys : RTArr_1,\n}\n\nstruct Values {\n  values : RTArr_1,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<uniform> x_16 : BufferInfo;\n\nvar<workgroup> key_buf : array<u32, 256u>;\n\nvar<private> gl_LocalInvocationID : vec3<u32>;\n\n@group(1) @binding(0) var<storage, read_write> x_36 : Keys;\n\nvar<workgroup> val_buf : array<u32, 256u>;\n\n@group(1) @binding(1) var<storage, read_write> x_49 : Values;\n\nvar<workgroup> scratch : array<u32, 256u>;\n\nvar<workgroup> total_false : u32;\n\nvar<workgroup> sorted_key_buf : array<u32, 256u>;\n\nvar<workgroup> sorted_val_buf : array<u32, 256u>;\n\nfn main_1() {\n  var i : u32;\n  var mask : u32;\n  var offs : u32;\n  var d : i32;\n  var a : u32;\n  var b : u32;\n  var d_1 : i32;\n  var a_1 : u32;\n  var b_1 : u32;\n  var tmp : u32;\n  var f : u32;\n  var t : u32;\n  let x_13 : u32 = gl_GlobalInvocationID.x;\n  let x_21 : u32 = x_16.size;\n  if ((x_13 < x_21)) {\n    let x_32 : u32 = gl_LocalInvocationID.x;\n    let x_38 : u32 = gl_GlobalInvocationID.x;\n    let x_40 : u32 = x_36.keys[x_38];\n    key_buf[x_32] = x_40;\n    let x_45 : u32 = gl_LocalInvocationID.x;\n    let x_51 : u32 = gl_GlobalInvocationID.x;\n    let x_53 : u32 = x_49.values[x_51];\n    val_buf[x_45] = x_53;\n  } else {\n    let x_57 : u32 = gl_LocalInvocationID.x;\n    key_buf[x_57] = 4294967295u;\n    let x_61 : u32 = gl_LocalInvocationID.x;\n    val_buf[x_61] = 4294967295u;\n  }\n  i = 0u;\n  loop {\n    let x_70 : u32 = i;\n    if ((x_70 < 32u)) {\n    } else {\n      break;\n    }\n    workgroupBarrier();\n    let x_77 : u32 = i;\n    mask = bitcast<u32>((1i << x_77));\n    let x_82 : u32 = gl_LocalInvocationID.x;\n    let x_84 : u32 = gl_LocalInvocationID.x;\n    let x_86 : u32 = key_buf[x_84];\n    let x_87 : u32 = mask;\n    scratch[x_82] = bitcast<u32>(select(1i, 0i, ((x_86 & x_87) != 0u)));\n    offs = 1u;\n    d = 128i;\n    loop {\n      let x_103 : i32 = d;\n      if ((x_103 > 0i)) {\n      } else {\n        break;\n      }\n      workgroupBarrier();\n      let x_106 : u32 = gl_LocalInvocationID.x;\n      let x_107 : i32 = d;\n      if ((x_106 < bitcast<u32>(x_107))) {\n        let x_113 : u32 = offs;\n        let x_115 : u32 = gl_LocalInvocationID.x;\n        a = ((x_113 * ((2u * x_115) + 1u)) - 1u);\n        let x_121 : u32 = offs;\n        let x_123 : u32 = gl_LocalInvocationID.x;\n        b = ((x_121 * ((2u * x_123) + 2u)) - 1u);\n        let x_128 : u32 = b;\n        let x_129 : u32 = a;\n        let x_131 : u32 = scratch[x_129];\n        let x_133 : u32 = scratch[x_128];\n        scratch[x_128] = (x_133 + x_131);\n      }\n      let x_136 : u32 = offs;\n      offs = (x_136 << bitcast<u32>(1i));\n\n      continuing {\n        let x_138 : i32 = d;\n        d = (x_138 >> bitcast<u32>(1i));\n      }\n    }\n    let x_141 : u32 = gl_LocalInvocationID.x;\n    if ((x_141 == 0u)) {\n      let x_148 : u32 = scratch[255i];\n      total_false = x_148;\n      scratch[255i] = 0u;\n    }\n    d_1 = 1i;\n    loop {\n      let x_156 : i32 = d_1;\n      if ((x_156 < 256i)) {\n      } else {\n        break;\n      }\n      let x_159 : u32 = offs;\n      offs = (x_159 >> bitcast<u32>(1i));\n      workgroupBarrier();\n      let x_162 : u32 = gl_LocalInvocationID.x;\n      let x_163 : i32 = d_1;\n      if ((x_162 < bitcast<u32>(x_163))) {\n        let x_169 : u32 = offs;\n        let x_171 : u32 = gl_LocalInvocationID.x;\n        a_1 = ((x_169 * ((2u * x_171) + 1u)) - 1u);\n        let x_177 : u32 = offs;\n        let x_179 : u32 = gl_LocalInvocationID.x;\n        b_1 = ((x_177 * ((2u * x_179) + 2u)) - 1u);\n        let x_185 : u32 = a_1;\n        let x_187 : u32 = scratch[x_185];\n        tmp = x_187;\n        let x_188 : u32 = a_1;\n        let x_189 : u32 = b_1;\n        let x_191 : u32 = scratch[x_189];\n        scratch[x_188] = x_191;\n        let x_193 : u32 = b_1;\n        let x_194 : u32 = tmp;\n        let x_196 : u32 = scratch[x_193];\n        scratch[x_193] = (x_196 + x_194);\n      }\n\n      continuing {\n        let x_199 : i32 = d_1;\n        d_1 = (x_199 << bitcast<u32>(1i));\n      }\n    }\n    workgroupBarrier();\n    let x_203 : u32 = gl_LocalInvocationID.x;\n    let x_205 : u32 = scratch[x_203];\n    f = x_205;\n    let x_208 : u32 = gl_LocalInvocationID.x;\n    let x_209 : u32 = f;\n    let x_211 : u32 = total_false;\n    t = ((x_208 - x_209) + x_211);\n    let x_214 : u32 = gl_LocalInvocationID.x;\n    let x_216 : u32 = key_buf[x_214];\n    let x_217 : u32 = mask;\n    if (((x_216 & x_217) != 0u)) {\n      let x_223 : u32 = t;\n      let x_225 : u32 = gl_LocalInvocationID.x;\n      let x_227 : u32 = key_buf[x_225];\n      sorted_key_buf[x_223] = x_227;\n      let x_230 : u32 = t;\n      let x_232 : u32 = gl_LocalInvocationID.x;\n      let x_234 : u32 = val_buf[x_232];\n      sorted_val_buf[x_230] = x_234;\n    } else {\n      let x_237 : u32 = f;\n      let x_239 : u32 = gl_LocalInvocationID.x;\n      let x_241 : u32 = key_buf[x_239];\n      sorted_key_buf[x_237] = x_241;\n      let x_243 : u32 = f;\n      let x_245 : u32 = gl_LocalInvocationID.x;\n      let x_247 : u32 = val_buf[x_245];\n      sorted_val_buf[x_243] = x_247;\n    }\n    workgroupBarrier();\n    let x_250 : u32 = gl_LocalInvocationID.x;\n    let x_252 : u32 = gl_LocalInvocationID.x;\n    let x_254 : u32 = sorted_key_buf[x_252];\n    key_buf[x_250] = x_254;\n    let x_257 : u32 = gl_LocalInvocationID.x;\n    let x_259 : u32 = gl_LocalInvocationID.x;\n    let x_261 : u32 = sorted_val_buf[x_259];\n    val_buf[x_257] = x_261;\n\n    continuing {\n      let x_263 : u32 = i;\n      i = (x_263 + bitcast<u32>(1i));\n    }\n  }\n  workgroupBarrier();\n  let x_266 : u32 = gl_GlobalInvocationID.x;\n  let x_268 : u32 = gl_LocalInvocationID.x;\n  let x_270 : u32 = key_buf[x_268];\n  x_36.keys[x_266] = x_270;\n  let x_273 : u32 = gl_GlobalInvocationID.x;\n  let x_275 : u32 = gl_LocalInvocationID.x;\n  let x_277 : u32 = val_buf[x_275];\n  x_49.values[x_273] = x_277;\n  return;\n}\n\n@compute @workgroup_size(256i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>, @builtin(local_invocation_id) gl_LocalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  gl_LocalInvocationID = gl_LocalInvocationID_param;\n  main_1();\n}\n`;\n\nconst reverse_buffer_comp_spv = `struct BufferInfo {\n  size : u32,\n}\n\nalias RTArr = array<u32>;\n\nstruct Values {\n  values : RTArr,\n}\n\n@group(0) @binding(0) var<uniform> x_48 : BufferInfo;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(1) @binding(0) var<storage, read_write> x_94 : Values;\n\nfn next_pow2_u1_(x : ptr<function, u32>) -> u32 {\n  let x_12 : u32 = *(x);\n  *(x) = (x_12 - 1u);\n  let x_15 : u32 = *(x);\n  let x_19 : u32 = *(x);\n  *(x) = (x_19 | (x_15 >> bitcast<u32>(1i)));\n  let x_21 : u32 = *(x);\n  let x_24 : u32 = *(x);\n  *(x) = (x_24 | (x_21 >> bitcast<u32>(2i)));\n  let x_26 : u32 = *(x);\n  let x_29 : u32 = *(x);\n  *(x) = (x_29 | (x_26 >> bitcast<u32>(4i)));\n  let x_31 : u32 = *(x);\n  let x_34 : u32 = *(x);\n  *(x) = (x_34 | (x_31 >> bitcast<u32>(8i)));\n  let x_36 : u32 = *(x);\n  let x_39 : u32 = *(x);\n  *(x) = (x_39 | (x_36 >> bitcast<u32>(16i)));\n  let x_41 : u32 = *(x);\n  return (x_41 + 1u);\n}\n\nfn main_1() {\n  var aligned_size : u32;\n  var param : u32;\n  var i : u32;\n  var j : u32;\n  var tmp : u32;\n  var x_76 : bool;\n  var x_77 : bool;\n  let x_52 : u32 = x_48.size;\n  param = u32(ceil((f32(x_52) / 256.0f)));\n  let x_60 : u32 = next_pow2_u1_(&(param));\n  aligned_size = (x_60 * 256u);\n  let x_64 : u32 = aligned_size;\n  let x_65 : bool = (x_64 < 256u);\n  x_77 = x_65;\n  if (x_65) {\n    let x_74 : u32 = gl_GlobalInvocationID.x;\n    x_76 = (x_74 > 128u);\n    x_77 = x_76;\n  }\n  if (x_77) {\n    return;\n  }\n  let x_83 : u32 = gl_GlobalInvocationID.x;\n  i = x_83;\n  let x_85 : u32 = aligned_size;\n  let x_87 : u32 = gl_GlobalInvocationID.x;\n  j = ((x_85 - x_87) - 1u);\n  let x_95 : u32 = i;\n  let x_97 : u32 = x_94.values[x_95];\n  tmp = x_97;\n  let x_98 : u32 = i;\n  let x_99 : u32 = j;\n  let x_101 : u32 = x_94.values[x_99];\n  x_94.values[x_98] = x_101;\n  let x_103 : u32 = j;\n  let x_104 : u32 = tmp;\n  x_94.values[x_103] = x_104;\n  return;\n}\n\n@compute @workgroup_size(256i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst merge_sorted_chunks_comp_spv = `alias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct InputKeys {\n  input_keys : RTArr_1,\n}\n\nstruct BufferInfo {\n  size : u32,\n}\n\nstruct NumWorkGroups {\n  work_groups_x : u32,\n}\n\nalias RTArr_2 = array<u32>;\n\nstruct OutputKeys {\n  output_keys : RTArr_1,\n}\n\nalias RTArr_3 = array<u32>;\n\nstruct OutputValues {\n  output_values : RTArr_1,\n}\n\nstruct InputValues {\n  input_values : RTArr_1,\n}\n\n@group(1) @binding(0) var<storage, read_write> x_75 : InputKeys;\n\n@group(0) @binding(0) var<uniform> x_132 : BufferInfo;\n\n@group(2) @binding(0) var<uniform> x_149 : NumWorkGroups;\n\nvar<private> gl_WorkGroupID : vec3<u32>;\n\nvar<private> gl_LocalInvocationID : vec3<u32>;\n\n@group(1) @binding(2) var<storage, read_write> x_231 : OutputKeys;\n\n@group(1) @binding(3) var<storage, read_write> x_240 : OutputValues;\n\n@group(1) @binding(1) var<storage, read_write> x_245 : InputValues;\n\nfn next_pow2_u1_(x : ptr<function, u32>) -> u32 {\n  let x_23 : u32 = *(x);\n  *(x) = (x_23 - 1u);\n  let x_26 : u32 = *(x);\n  let x_30 : u32 = *(x);\n  *(x) = (x_30 | (x_26 >> bitcast<u32>(1i)));\n  let x_32 : u32 = *(x);\n  let x_35 : u32 = *(x);\n  *(x) = (x_35 | (x_32 >> bitcast<u32>(2i)));\n  let x_37 : u32 = *(x);\n  let x_40 : u32 = *(x);\n  *(x) = (x_40 | (x_37 >> bitcast<u32>(4i)));\n  let x_42 : u32 = *(x);\n  let x_45 : u32 = *(x);\n  *(x) = (x_45 | (x_42 >> bitcast<u32>(8i)));\n  let x_47 : u32 = *(x);\n  let x_50 : u32 = *(x);\n  *(x) = (x_50 | (x_47 >> bitcast<u32>(16i)));\n  let x_52 : u32 = *(x);\n  return (x_52 + 1u);\n}\n\nfn upper_bound_u1_u1_u1_(start : ptr<function, u32>, count : ptr<function, u32>, element : ptr<function, u32>) -> u32 {\n  var i : u32;\n  loop {\n    let x_61 : u32 = *(count);\n    if ((x_61 > 0u)) {\n    } else {\n      break;\n    }\n    let x_66 : u32 = *(start);\n    let x_67 : u32 = *(count);\n    i = (x_66 + (x_67 / 2u));\n    let x_71 : u32 = *(element);\n    let x_77 : u32 = i;\n    let x_80 : u32 = x_75.input_keys[x_77];\n    if ((x_71 >= x_80)) {\n      let x_84 : u32 = i;\n      *(start) = (x_84 + 1u);\n      let x_86 : u32 = *(count);\n      let x_89 : u32 = *(count);\n      *(count) = (x_89 - ((x_86 / 2u) + 1u));\n    } else {\n      let x_92 : u32 = *(count);\n      *(count) = (x_92 / 2u);\n    }\n  }\n  let x_94 : u32 = *(start);\n  return x_94;\n}\n\nfn lower_bound_u1_u1_u1_(start_1 : ptr<function, u32>, count_1 : ptr<function, u32>, element_1 : ptr<function, u32>) -> u32 {\n  var i_1 : u32;\n  loop {\n    let x_102 : u32 = *(count_1);\n    if ((x_102 > 0u)) {\n    } else {\n      break;\n    }\n    let x_105 : u32 = *(start_1);\n    let x_106 : u32 = *(count_1);\n    i_1 = (x_105 + (x_106 / 2u));\n    let x_109 : u32 = i_1;\n    let x_111 : u32 = x_75.input_keys[x_109];\n    let x_112 : u32 = *(element_1);\n    if ((x_111 < x_112)) {\n      let x_116 : u32 = i_1;\n      *(start_1) = (x_116 + 1u);\n      let x_118 : u32 = *(count_1);\n      let x_121 : u32 = *(count_1);\n      *(count_1) = (x_121 - ((x_118 / 2u) + 1u));\n    } else {\n      let x_124 : u32 = *(count_1);\n      *(count_1) = (x_124 / 2u);\n    }\n  }\n  let x_126 : u32 = *(start_1);\n  return x_126;\n}\n\nfn main_1() {\n  var aligned_size : u32;\n  var param : u32;\n  var merge_output_size : u32;\n  var merge_chunk_size : u32;\n  var offs : u32;\n  var i_2 : u32;\n  var a_in : u32;\n  var b_in : u32;\n  var base_idx : u32;\n  var a_loc : u32;\n  var param_1 : u32;\n  var param_2 : u32;\n  var param_3 : u32;\n  var b_loc : u32;\n  var param_4 : u32;\n  var param_5 : u32;\n  var param_6 : u32;\n  let x_134 : u32 = x_132.size;\n  param = u32(ceil((f32(x_134) / 256.0f)));\n  let x_142 : u32 = next_pow2_u1_(&(param));\n  aligned_size = (x_142 * 256u);\n  let x_146 : u32 = aligned_size;\n  let x_151 : u32 = x_149.work_groups_x;\n  merge_output_size = (x_146 / x_151);\n  let x_154 : u32 = merge_output_size;\n  merge_chunk_size = (x_154 / 2u);\n  let x_162 : u32 = gl_WorkGroupID.x;\n  let x_163 : u32 = merge_output_size;\n  offs = (x_162 * x_163);\n  i_2 = 0u;\n  loop {\n    let x_171 : u32 = i_2;\n    let x_172 : u32 = merge_chunk_size;\n    if ((x_171 < (x_172 / 256u))) {\n    } else {\n      break;\n    }\n    let x_176 : u32 = offs;\n    let x_177 : u32 = i_2;\n    let x_182 : u32 = gl_LocalInvocationID.x;\n    a_in = ((x_176 + (x_177 * 256u)) + x_182);\n    let x_185 : u32 = offs;\n    let x_186 : u32 = merge_chunk_size;\n    let x_188 : u32 = i_2;\n    let x_192 : u32 = gl_LocalInvocationID.x;\n    b_in = (((x_185 + x_186) + (x_188 * 256u)) + x_192);\n    let x_196 : u32 = gl_LocalInvocationID.x;\n    let x_197 : u32 = i_2;\n    base_idx = (x_196 + (x_197 * 256u));\n    let x_201 : u32 = base_idx;\n    let x_202 : u32 = offs;\n    let x_203 : u32 = merge_chunk_size;\n    let x_205 : u32 = a_in;\n    param_1 = (x_202 + x_203);\n    let x_208 : u32 = merge_chunk_size;\n    param_2 = x_208;\n    let x_211 : u32 = x_75.input_keys[x_205];\n    param_3 = x_211;\n    let x_212 : u32 = upper_bound_u1_u1_u1_(&(param_1), &(param_2), &(param_3));\n    let x_214 : u32 = merge_chunk_size;\n    a_loc = ((x_201 + x_212) - x_214);\n    let x_217 : u32 = base_idx;\n    let x_218 : u32 = b_in;\n    let x_220 : u32 = offs;\n    param_4 = x_220;\n    let x_222 : u32 = merge_chunk_size;\n    param_5 = x_222;\n    let x_225 : u32 = x_75.input_keys[x_218];\n    param_6 = x_225;\n    let x_226 : u32 = lower_bound_u1_u1_u1_(&(param_4), &(param_5), &(param_6));\n    b_loc = (x_217 + x_226);\n    let x_232 : u32 = a_loc;\n    let x_233 : u32 = a_in;\n    let x_235 : u32 = x_75.input_keys[x_233];\n    x_231.output_keys[x_232] = x_235;\n    let x_241 : u32 = a_loc;\n    let x_246 : u32 = a_in;\n    let x_248 : u32 = x_245.input_values[x_246];\n    x_240.output_values[x_241] = x_248;\n    let x_250 : u32 = b_loc;\n    let x_251 : u32 = b_in;\n    let x_253 : u32 = x_75.input_keys[x_251];\n    x_231.output_keys[x_250] = x_253;\n    let x_255 : u32 = b_loc;\n    let x_256 : u32 = b_in;\n    let x_258 : u32 = x_245.input_values[x_256];\n    x_240.output_values[x_255] = x_258;\n\n    continuing {\n      let x_260 : u32 = i_2;\n      i_2 = (x_260 + bitcast<u32>(1i));\n    }\n  }\n  return;\n}\n\n@compute @workgroup_size(256i, 1i, 1i)\nfn main(@builtin(workgroup_id) gl_WorkGroupID_param : vec3<u32>, @builtin(local_invocation_id) gl_LocalInvocationID_param : vec3<u32>) {\n  gl_WorkGroupID = gl_WorkGroupID_param;\n  gl_LocalInvocationID = gl_LocalInvocationID_param;\n  main_1();\n}\n`;\n\nconst display_render_vert_spv = `var<private> gl_VertexIndex : i32;\n\nvar<private> gl_Position : vec4<f32>;\n\nfn main_1() {\n  var indexable : array<vec4<f32>, 6u>;\n  let x_28 : i32 = gl_VertexIndex;\n  indexable = array<vec4<f32>, 6u>(vec4<f32>(-1.0f, 1.0f, 0.5f, 1.0f), vec4<f32>(-1.0f, -1.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.5f, 1.0f), vec4<f32>(-1.0f, -1.0f, 0.5f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.5f, 1.0f), vec4<f32>(1.0f, -1.0f, 0.5f, 1.0f));\n  let x_33 : vec4<f32> = indexable[x_28];\n  gl_Position = x_33;\n  return;\n}\n\nstruct main_out {\n  @builtin(position)\n  gl_Position : vec4<f32>,\n}\n\n@vertex\nfn main(@builtin(vertex_index) gl_VertexIndex_param : u32) -> main_out {\n  gl_VertexIndex = bitcast<i32>(gl_VertexIndex_param);\n  main_1();\n  return main_out(gl_Position);\n}\n`;\n\nconst display_render_frag_spv = `struct Resolution {\n  width : u32,\n  height : u32,\n}\n\nvar<private> color : vec4<f32>;\n\n@group(0) @binding(0) var output_texture : texture_2d<f32>;\n\n@group(0) @binding(2) var u_sampler : sampler;\n\nvar<private> gl_FragCoord : vec4<f32>;\n\n@group(0) @binding(1) var<uniform> x_28 : Resolution;\n\nfn main_1() {\n  let x_23 : vec4<f32> = gl_FragCoord;\n  let x_33 : u32 = x_28.width;\n  let x_37 : u32 = x_28.height;\n  let x_41 : vec4<f32> = textureSample(output_texture, u_sampler, (vec2<f32>(x_23.x, x_23.y) / vec2<f32>(f32(x_33), f32(x_37))));\n  color = x_41;\n  color.w = 1.0f;\n  return;\n}\n\nstruct main_out {\n  @location(0)\n  color_1 : vec4<f32>,\n}\n\n@fragment\nfn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {\n  gl_FragCoord = gl_FragCoord_param;\n  main_1();\n  return main_out(color);\n}\n`;\n\nconst reset_rays_comp_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n  image_height : u32,\n}\n\nstruct RayInfo {\n  ray_dir : vec3<f32>,\n  t : f32,\n}\n\nalias RTArr = array<RayInfo>;\n\nstruct RayInformation {\n  rays : RTArr,\n}\n\nalias RTArr_1 = array<f32>;\n\nstruct ImageTensor {\n  tensor : RTArr_1,\n}\n\nstruct ViewParams {\n  proj_view : mat4x4<f32>,\n  eye_pos : vec4<f32>,\n  eye_dir : vec4<f32>,\n  near_plane : f32,\n  current_pass_index : u32,\n  speculation_count : u32,\n}\n\nalias RTArr_2 = array<u32>;\n\nstruct RayBlockIDs {\n  block_ids : RTArr_2,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(1) var<uniform> x_19 : VolumeParams;\n\n@group(0) @binding(0) var<storage, read_write> x_46 : RayInformation;\n\n@group(0) @binding(3) var<storage, read_write> x_61 : ImageTensor;\n\n@group(0) @binding(4) var<uniform> x_94 : ViewParams;\n\n@group(0) @binding(2) var<storage, read_write> x_101 : RayBlockIDs;\n\nfn main_1() {\n  var ray_index : u32;\n  var i : u32;\n  let x_13 : u32 = gl_GlobalInvocationID.x;\n  let x_24 : u32 = x_19.image_width;\n  if ((x_13 >= x_24)) {\n    return;\n  }\n  let x_33 : u32 = gl_GlobalInvocationID.x;\n  let x_36 : u32 = gl_GlobalInvocationID.y;\n  let x_38 : u32 = x_19.image_width;\n  ray_index = (x_33 + (x_36 * x_38));\n  let x_48 : u32 = ray_index;\n  x_46.rays[x_48].ray_dir = vec3<f32>(0.0f, 0.0f, 0.0f);\n  let x_53 : u32 = ray_index;\n  x_46.rays[x_53].t = 340282346638528859811704183484516925440.0f;\n  let x_62 : u32 = ray_index;\n  x_61.tensor[x_62] = 1.0f;\n  let x_65 : u32 = ray_index;\n  let x_67 : u32 = x_19.image_width;\n  let x_70 : u32 = x_19.image_height;\n  x_61.tensor[(x_65 + (x_67 * x_70))] = 1.0f;\n  let x_74 : u32 = ray_index;\n  let x_76 : u32 = x_19.image_width;\n  let x_78 : u32 = x_19.image_height;\n  x_61.tensor[(x_74 + ((x_76 * x_78) * 2u))] = 1.0f;\n  i = 0u;\n  loop {\n    let x_90 : u32 = i;\n    let x_96 : u32 = x_94.speculation_count;\n    if ((x_90 < x_96)) {\n    } else {\n      break;\n    }\n    let x_102 : u32 = ray_index;\n    let x_104 : u32 = x_94.speculation_count;\n    let x_106 : u32 = i;\n    x_101.block_ids[((x_102 * x_104) + x_106)] = 4294967295u;\n\n    continuing {\n      let x_110 : u32 = i;\n      i = (x_110 + bitcast<u32>(1i));\n    }\n  }\n  return;\n}\n\n@compute @workgroup_size(8i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst reset_block_active_comp_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n}\n\nalias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct BlockActive {\n  block_active : RTArr_1,\n}\n\nstruct BlockVisible {\n  block_visible : RTArr_1,\n}\n\n@group(0) @binding(0) var<uniform> x_15 : VolumeParams;\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(1) var<storage, read_write> x_59 : BlockActive;\n\n@group(0) @binding(2) var<storage, read_write> x_67 : BlockVisible;\n\nfn main_1() {\n  var n_blocks : vec3<u32>;\n  var block_id : u32;\n  let x_20 : vec4<u32> = x_15.padded_dims;\n  n_blocks = (vec3<u32>(x_20.x, x_20.y, x_20.z) / vec3<u32>(4u, 4u, 4u));\n  let x_30 : u32 = gl_GlobalInvocationID.x;\n  let x_33 : u32 = n_blocks.x;\n  if ((x_30 >= x_33)) {\n    return;\n  }\n  let x_41 : u32 = gl_GlobalInvocationID.x;\n  let x_43 : u32 = n_blocks.x;\n  let x_46 : u32 = gl_GlobalInvocationID.y;\n  let x_48 : u32 = n_blocks.y;\n  let x_51 : u32 = gl_GlobalInvocationID.z;\n  block_id = (x_41 + (x_43 * (x_46 + (x_48 * x_51))));\n  let x_61 : u32 = block_id;\n  x_59.block_active[x_61] = 0u;\n  let x_68 : u32 = block_id;\n  x_67.block_visible[x_68] = 0u;\n  return;\n}\n\n@compute @workgroup_size(8i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst reset_block_num_rays_comp_spv = `struct BlockIDOffset {\n  id_offset : u32,\n  total_visible_blocks : u32,\n}\n\nalias RTArr = array<u32>;\n\nstruct BlockNumRays {\n  block_num_rays : RTArr,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<uniform> x_18 : BlockIDOffset;\n\n@group(0) @binding(1) var<storage, read_write> x_37 : BlockNumRays;\n\nfn main_1() {\n  var block_id : u32;\n  let x_15 : u32 = gl_GlobalInvocationID.x;\n  let x_23 : u32 = x_18.id_offset;\n  block_id = (x_15 + x_23);\n  let x_25 : u32 = block_id;\n  let x_28 : u32 = x_18.total_visible_blocks;\n  if ((x_25 >= x_28)) {\n    return;\n  }\n  let x_38 : u32 = block_id;\n  x_37.block_num_rays[x_38] = 0u;\n  return;\n}\n\n@compute @workgroup_size(32i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst debug_view_rays_per_block_comp_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nstruct RayInfo {\n  ray_dir : vec3<f32>,\n  t : f32,\n}\n\nalias RTArr = array<RayInfo>;\n\nstruct RayInformation {\n  rays : RTArr,\n}\n\nalias RTArr_1 = array<u32>;\n\nalias RTArr_2 = array<u32>;\n\nstruct RayBlockIDs {\n  block_ids : RTArr_2,\n}\n\nstruct BlockNumRays {\n  block_num_rays : RTArr_2,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<uniform> x_24 : VolumeParams;\n\n@group(0) @binding(2) var<storage, read_write> x_37 : RayInformation;\n\n@group(0) @binding(4) var<storage, read_write> x_54 : RayBlockIDs;\n\n@group(0) @binding(1) var<storage, read_write> x_63 : BlockNumRays;\n\n@group(0) @binding(3) var render_target : texture_storage_2d<rgba8unorm, write>;\n\nfn main_1() {\n  var ray_index : u32;\n  var block_id : u32;\n  var color : vec4<f32>;\n  let x_15 : u32 = gl_GlobalInvocationID.x;\n  let x_18 : u32 = gl_GlobalInvocationID.y;\n  let x_29 : u32 = x_24.image_width;\n  ray_index = (x_15 + (x_18 * x_29));\n  let x_39 : u32 = ray_index;\n  let x_43 : f32 = x_37.rays[x_39].t;\n  if ((x_43 == 340282346638528859811704183484516925440.0f)) {\n    return;\n  }\n  let x_55 : u32 = ray_index;\n  let x_57 : u32 = x_54.block_ids[x_55];\n  block_id = x_57;\n  let x_64 : u32 = block_id;\n  let x_66 : u32 = x_63.block_num_rays[x_64];\n  let x_69 : f32 = (f32(x_66) / 256.0f);\n  let x_70 : vec3<f32> = vec3<f32>(x_69, x_69, x_69);\n  let x_71 : vec4<f32> = color;\n  color = vec4<f32>(x_70.x, x_70.y, x_70.z, x_71.w);\n  color.w = 1.0f;\n  let x_82 : vec3<u32> = gl_GlobalInvocationID;\n  let x_86 : vec4<f32> = color;\n  textureStore(render_target, bitcast<vec2<i32>>(vec2<u32>(x_82.x, x_82.y)), x_86);\n  return;\n}\n\n@compute @workgroup_size(1i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst write_ray_and_block_id_comp_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nalias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct RayActive {\n  ray_active : RTArr_1,\n}\n\nstruct RayBlockID {\n  block_id : RTArr_1,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<uniform> x_19 : VolumeParams;\n\n@group(0) @binding(2) var<storage, read_write> x_44 : RayActive;\n\n@group(0) @binding(1) var<storage, read_write> x_50 : RayBlockID;\n\nfn main_1() {\n  var ray_index : u32;\n  let x_13 : u32 = gl_GlobalInvocationID.x;\n  let x_24 : u32 = x_19.image_width;\n  if ((x_13 >= x_24)) {\n    return;\n  }\n  let x_33 : u32 = gl_GlobalInvocationID.x;\n  let x_36 : u32 = gl_GlobalInvocationID.y;\n  let x_38 : u32 = x_19.image_width;\n  ray_index = (x_33 + (x_36 * x_38));\n  let x_46 : u32 = ray_index;\n  let x_51 : u32 = ray_index;\n  let x_53 : u32 = x_50.block_id[x_51];\n  x_44.ray_active[x_46] = bitcast<u32>(select(0i, 1i, (x_53 != 4294967295u)));\n  return;\n}\n\n@compute @workgroup_size(8i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst combine_block_information_comp_spv = `struct BlockIDOffset {\n  id_offset : u32,\n  total_work_groups : u32,\n  total_active_blocks : u32,\n}\n\nalias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct BlockIDs {\n  block_ids : RTArr_1,\n}\n\nstruct BlockInfo {\n  id : u32,\n  ray_offset : u32,\n  num_rays : u32,\n  lod : u32,\n}\n\nalias RTArr_2 = array<BlockInfo>;\n\nstruct BlockInformation {\n  blocks : RTArr_2,\n}\n\nalias RTArr_3 = array<u32>;\n\nstruct BlockRayOffset {\n  block_ray_offsets : RTArr_1,\n}\n\nalias RTArr_4 = array<u32>;\n\nstruct BlockNumRays {\n  block_num_rays : RTArr_1,\n}\n\nstruct BlockActive {\n  block_active : RTArr_1,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(1) @binding(0) var<uniform> x_18 : BlockIDOffset;\n\n@group(0) @binding(1) var<storage, read_write> x_40 : BlockIDs;\n\n@group(0) @binding(0) var<storage, read_write> x_48 : BlockInformation;\n\n@group(0) @binding(2) var<storage, read_write> x_57 : BlockRayOffset;\n\n@group(0) @binding(3) var<storage, read_write> x_66 : BlockNumRays;\n\n@group(0) @binding(4) var<storage, read_write> x_79 : BlockActive;\n\nfn main_1() {\n  var item_idx : u32;\n  var id : u32;\n  let x_15 : u32 = gl_GlobalInvocationID.x;\n  let x_23 : u32 = x_18.id_offset;\n  item_idx = (x_15 + (x_23 * 64u));\n  let x_27 : u32 = item_idx;\n  let x_30 : u32 = x_18.total_active_blocks;\n  if ((x_27 >= x_30)) {\n    return;\n  }\n  let x_41 : u32 = item_idx;\n  let x_43 : u32 = x_40.block_ids[x_41];\n  id = x_43;\n  let x_49 : u32 = item_idx;\n  let x_50 : u32 = id;\n  x_48.blocks[x_49].id = x_50;\n  let x_52 : u32 = item_idx;\n  let x_58 : u32 = item_idx;\n  let x_60 : u32 = x_57.block_ray_offsets[x_58];\n  x_48.blocks[x_52].ray_offset = x_60;\n  let x_62 : u32 = item_idx;\n  let x_67 : u32 = item_idx;\n  let x_69 : u32 = x_66.block_num_rays[x_67];\n  x_48.blocks[x_62].num_rays = x_69;\n  let x_71 : u32 = item_idx;\n  x_48.blocks[x_71].lod = 0u;\n  return;\n}\n\n@compute @workgroup_size(64i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst raytrace_active_block_comp_spv = `struct GridIterator {\n  grid_dims : vec3<i32>,\n  grid_step : vec3<i32>,\n  t_delta : vec3<f32>,\n  cell : vec3<i32>,\n  t_max : vec3<f32>,\n  t : f32,\n}\n\nstruct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nalias RTArr = array<i32>;\n\nstruct BlockLocations {\n  block_locations : RTArr,\n}\n\nalias RTArr_1 = array<f32>;\n\nstruct Decompressed {\n  decompressed : RTArr_1,\n}\n\nstruct BlockInfo {\n  id : u32,\n  ray_offset : u32,\n  num_rays : u32,\n  lod : u32,\n}\n\nstruct BlockInfo_1 {\n  id : u32,\n  ray_offset : u32,\n  num_rays : u32,\n  lod : u32,\n}\n\nalias RTArr_2 = array<BlockInfo_1>;\n\nstruct BlockInformation {\n  blocks : RTArr_2,\n}\n\nstruct BlockIDOffset {\n  id_offset : u32,\n  total_active_blocks : u32,\n}\n\nstruct ViewParams {\n  proj_view : mat4x4<f32>,\n  eye_pos : vec4<f32>,\n  eye_dir : vec4<f32>,\n  near_plane : f32,\n  current_pass_index : u32,\n}\n\nalias RTArr_3 = array<u32>;\n\nalias RTArr_4 = array<u32>;\n\nstruct RayIDs {\n  ray_ids : RTArr_4,\n}\n\nstruct SpeculativeIDs {\n  spec_ids : RTArr_4,\n}\n\nstruct RayInfo {\n  ray_dir : vec3<f32>,\n  t : f32,\n}\n\nalias RTArr_5 = array<RayInfo>;\n\nstruct RayInformation {\n  rays : RTArr_5,\n}\n\nalias RTArr_6 = array<vec2<f32>>;\n\nstruct RayRGBZ {\n  ray_rgbz : RTArr_6,\n}\n\n@group(0) @binding(0) var<uniform> x_409 : VolumeParams;\n\nvar<workgroup> volume_block : array<f32, 128u>;\n\n@group(0) @binding(2) var<storage, read_write> x_621 : BlockLocations;\n\n@group(0) @binding(1) var<storage, read_write> x_760 : Decompressed;\n\nvar<private> gl_LocalInvocationID : vec3<u32>;\n\nvar<workgroup> block_info : BlockInfo;\n\n@group(1) @binding(3) var<storage, read_write> x_1612 : BlockInformation;\n\nvar<private> gl_WorkGroupID : vec3<u32>;\n\n@group(2) @binding(0) var<uniform> x_1618 : BlockIDOffset;\n\n@group(1) @binding(0) var<uniform> x_1678 : ViewParams;\n\n@group(1) @binding(2) var<storage, read_write> x_1744 : RayIDs;\n\n@group(1) @binding(5) var<storage, read_write> x_1759 : SpeculativeIDs;\n\n@group(1) @binding(1) var<storage, read_write> x_1771 : RayInformation;\n\n@group(1) @binding(6) var<storage, read_write> x_1926 : RayRGBZ;\n\n@group(1) @binding(4) var render_target : texture_storage_2d<rgba8unorm, write>;\n\nfn block_id_to_pos_u1_(id_1 : ptr<function, u32>) -> vec3<u32> {\n  var n_blocks : vec3<u32>;\n  let x_424 : vec4<u32> = x_409.padded_dims;\n  n_blocks = (vec3<u32>(x_424.x, x_424.y, x_424.z) / vec3<u32>(4u, 4u, 4u));\n  let x_429 : u32 = *(id_1);\n  let x_431 : u32 = n_blocks.x;\n  let x_433 : u32 = *(id_1);\n  let x_435 : u32 = n_blocks.x;\n  let x_438 : u32 = n_blocks.y;\n  let x_440 : u32 = *(id_1);\n  let x_442 : u32 = n_blocks.x;\n  let x_444 : u32 = n_blocks.y;\n  return vec3<u32>((x_429 % x_431), ((x_433 / x_435) % x_438), (x_440 / (x_442 * x_444)));\n}\n\nfn compute_block_id_vu3_(block_pos : ptr<function, vec3<u32>>) -> u32 {\n  var n_blocks_1 : vec3<u32>;\n  let x_452 : vec4<u32> = x_409.padded_dims;\n  n_blocks_1 = (vec3<u32>(x_452.x, x_452.y, x_452.z) / vec3<u32>(4u, 4u, 4u));\n  let x_456 : u32 = (*(block_pos)).x;\n  let x_458 : u32 = n_blocks_1.x;\n  let x_460 : u32 = (*(block_pos)).y;\n  let x_462 : u32 = n_blocks_1.y;\n  let x_464 : u32 = (*(block_pos)).z;\n  return (x_456 + (x_458 * (x_460 + (x_462 * x_464))));\n}\n\nfn compute_block_dims_with_ghost_vu3_(block_pos_1 : vec3<u32>) -> vec3<u32> {\n  var n_blocks_2 : vec3<u32>;\n  var block_dims_3 : vec3<u32>;\n  var corner : u32;\n  var param : vec3<u32>;\n  var edge : u32;\n  var param_1 : vec3<u32>;\n  var edge_1 : u32;\n  var param_2 : vec3<u32>;\n  var edge_2 : u32;\n  var param_3 : vec3<u32>;\n  var face : u32;\n  var param_4 : vec3<u32>;\n  var face_1 : u32;\n  var param_5 : vec3<u32>;\n  var face_2 : u32;\n  var param_6 : vec3<u32>;\n  let x_578 : vec4<u32> = x_409.padded_dims;\n  n_blocks_2 = (vec3<u32>(x_578.x, x_578.y, x_578.z) / vec3<u32>(4u, 4u, 4u));\n  block_dims_3 = vec3<u32>(4u, 4u, 4u);\n  let x_585 : u32 = n_blocks_2.x;\n  if (((block_pos_1.x + 1u) < x_585)) {\n    block_dims_3.x = 5u;\n  }\n  let x_594 : u32 = n_blocks_2.y;\n  if (((block_pos_1.y + 1u) < x_594)) {\n    block_dims_3.y = 5u;\n  }\n  let x_602 : u32 = n_blocks_2.z;\n  if (((block_pos_1.z + 1u) < x_602)) {\n    block_dims_3.z = 5u;\n  }\n  let x_607 : vec3<u32> = block_dims_3;\n  if (all((x_607 == vec3<u32>(5u, 5u, 5u)))) {\n    param = (block_pos_1 + vec3<u32>(1u, 1u, 1u));\n    let x_617 : u32 = compute_block_id_vu3_(&(param));\n    corner = x_617;\n    let x_622 : u32 = corner;\n    let x_625 : i32 = x_621.block_locations[x_622];\n    if ((x_625 == -1i)) {\n      block_dims_3 = vec3<u32>(4u, 4u, 4u);\n    }\n  }\n  let x_630 : vec3<u32> = block_dims_3;\n  if (all((vec2<u32>(x_630.x, x_630.y) == vec2<u32>(5u, 5u)))) {\n    param_1 = (block_pos_1 + vec3<u32>(1u, 1u, 0u));\n    let x_642 : u32 = compute_block_id_vu3_(&(param_1));\n    edge = x_642;\n    let x_643 : u32 = edge;\n    let x_645 : i32 = x_621.block_locations[x_643];\n    if ((x_645 == -1i)) {\n      let x_650 : vec3<u32> = block_dims_3;\n      block_dims_3 = vec3<u32>(vec2<u32>(4u, 4u).x, vec2<u32>(4u, 4u).y, x_650.z);\n    }\n  }\n  let x_652 : vec3<u32> = block_dims_3;\n  if (all((vec2<u32>(x_652.x, x_652.z) == vec2<u32>(5u, 5u)))) {\n    param_2 = (block_pos_1 + vec3<u32>(1u, 0u, 1u));\n    let x_662 : u32 = compute_block_id_vu3_(&(param_2));\n    edge_1 = x_662;\n    let x_663 : u32 = edge_1;\n    let x_665 : i32 = x_621.block_locations[x_663];\n    if ((x_665 == -1i)) {\n      let x_669 : vec3<u32> = block_dims_3;\n      block_dims_3 = vec3<u32>(vec2<u32>(4u, 4u).x, x_669.y, vec2<u32>(4u, 4u).y);\n    }\n  }\n  let x_671 : vec3<u32> = block_dims_3;\n  if (all((vec2<u32>(x_671.y, x_671.z) == vec2<u32>(5u, 5u)))) {\n    param_3 = (block_pos_1 + vec3<u32>(0u, 1u, 1u));\n    let x_681 : u32 = compute_block_id_vu3_(&(param_3));\n    edge_2 = x_681;\n    let x_682 : u32 = edge_2;\n    let x_684 : i32 = x_621.block_locations[x_682];\n    if ((x_684 == -1i)) {\n      let x_688 : vec3<u32> = block_dims_3;\n      block_dims_3 = vec3<u32>(x_688.x, vec2<u32>(4u, 4u).x, vec2<u32>(4u, 4u).y);\n    }\n  }\n  let x_691 : u32 = block_dims_3.x;\n  if ((x_691 == 5u)) {\n    param_4 = (block_pos_1 + vec3<u32>(1u, 0u, 0u));\n    let x_699 : u32 = compute_block_id_vu3_(&(param_4));\n    face = x_699;\n    let x_700 : u32 = face;\n    let x_702 : i32 = x_621.block_locations[x_700];\n    if ((x_702 == -1i)) {\n      block_dims_3.x = 4u;\n    }\n  }\n  let x_708 : u32 = block_dims_3.y;\n  if ((x_708 == 5u)) {\n    param_5 = (block_pos_1 + vec3<u32>(0u, 1u, 0u));\n    let x_716 : u32 = compute_block_id_vu3_(&(param_5));\n    face_1 = x_716;\n    let x_717 : u32 = face_1;\n    let x_719 : i32 = x_621.block_locations[x_717];\n    if ((x_719 == -1i)) {\n      block_dims_3.y = 4u;\n    }\n  }\n  let x_725 : u32 = block_dims_3.z;\n  if ((x_725 == 5u)) {\n    param_6 = (block_pos_1 + vec3<u32>(0u, 0u, 1u));\n    let x_733 : u32 = compute_block_id_vu3_(&(param_6));\n    face_2 = x_733;\n    let x_734 : u32 = face_2;\n    let x_736 : i32 = x_621.block_locations[x_734];\n    if ((x_736 == -1i)) {\n      block_dims_3.z = 4u;\n    }\n  }\n  let x_741 : vec3<u32> = block_dims_3;\n  return x_741;\n}\n\nfn voxel_id_to_voxel_u1_(id_2 : ptr<function, u32>) -> vec3<u32> {\n  let x_471 : u32 = *(id_2);\n  let x_473 : u32 = *(id_2);\n  let x_476 : u32 = *(id_2);\n  return vec3<u32>((x_471 % 4u), ((x_473 / 4u) % 4u), (x_476 / 16u));\n}\n\nfn compute_voxel_id_vu3_vu3_(voxel_pos : ptr<function, vec3<u32>>, block_dims : ptr<function, vec3<u32>>) -> u32 {\n  let x_483 : u32 = (*(voxel_pos)).x;\n  let x_485 : u32 = (*(block_dims)).x;\n  let x_487 : u32 = (*(voxel_pos)).y;\n  let x_489 : u32 = (*(block_dims)).y;\n  let x_491 : u32 = (*(voxel_pos)).z;\n  return (x_483 + (x_485 * (x_487 + (x_489 * x_491))));\n}\n\nfn load_voxel_u1_vu3_vu3_vu3_(neighbor_id : u32, ghost_voxel_pos : vec3<u32>, neighbor_voxel_pos : vec3<u32>, block_dims_2 : vec3<u32>) {\n  var neighbor_location : u32;\n  var ghost_voxel_id : u32;\n  var param_7 : vec3<u32>;\n  var param_8 : vec3<u32>;\n  var neighbor_voxel_id : u32;\n  var param_9 : vec3<u32>;\n  var param_10 : vec3<u32>;\n  let x_746 : i32 = x_621.block_locations[neighbor_id];\n  neighbor_location = bitcast<u32>(x_746);\n  param_7 = ghost_voxel_pos;\n  param_8 = block_dims_2;\n  let x_751 : u32 = compute_voxel_id_vu3_vu3_(&(param_7), &(param_8));\n  ghost_voxel_id = x_751;\n  param_9 = neighbor_voxel_pos;\n  param_10 = vec3<u32>(4u, 4u, 4u);\n  let x_755 : u32 = compute_voxel_id_vu3_vu3_(&(param_9), &(param_10));\n  neighbor_voxel_id = x_755;\n  let x_756 : u32 = ghost_voxel_id;\n  let x_761 : u32 = neighbor_location;\n  let x_764 : u32 = neighbor_voxel_id;\n  let x_768 : f32 = x_760.decompressed[((x_761 * 64u) + x_764)];\n  volume_block[x_756] = x_768;\n  return;\n}\n\nfn load_block_u1_(block_id : u32) -> vec3<u32> {\n  var block_pos_2 : vec3<u32>;\n  var param_11 : u32;\n  var n_blocks_3 : vec3<u32>;\n  var block_dims_4 : vec3<u32>;\n  var voxel_pos_2 : vec3<u32>;\n  var param_12 : u32;\n  var i_1 : u32;\n  var ghost_voxel_pos_1 : vec3<u32>;\n  var indexable_1 : array<vec3<u32>, 3u>;\n  var neighbor_voxel_pos_1 : vec3<u32>;\n  var indexable_2 : array<vec3<u32>, 3u>;\n  var indexable_3 : array<vec3<u32>, 3u>;\n  var neighbor_block_pos : vec3<u32>;\n  var indexable_4 : array<vec3<u32>, 3u>;\n  var neighbor_id_1 : u32;\n  var param_13 : vec3<u32>;\n  var i_2 : u32;\n  var b : vec3<u32>;\n  var indexable_5 : array<vec3<u32>, 3u>;\n  var p_3 : vec3<u32>;\n  var indexable_6 : array<vec3<u32>, 3u>;\n  var ghost_voxel_pos_2 : vec3<u32>;\n  var indexable_7 : array<vec3<u32>, 3u>;\n  var neighbor_voxel_pos_2 : vec3<u32>;\n  var indexable_8 : array<vec3<u32>, 3u>;\n  var indexable_9 : array<vec3<u32>, 3u>;\n  var indexable_10 : array<vec3<u32>, 3u>;\n  var neighbor_block_pos_1 : vec3<u32>;\n  var indexable_11 : array<vec3<u32>, 3u>;\n  var neighbor_id_2 : u32;\n  var param_14 : vec3<u32>;\n  var ghost_voxel_pos_3 : vec3<u32>;\n  var neighbor_block_pos_2 : vec3<u32>;\n  var neighbor_id_3 : u32;\n  var param_15 : vec3<u32>;\n  let x_774 : u32 = gl_LocalInvocationID.x;\n  volume_block[(x_774 * 2u)] = 0.0f;\n  let x_778 : u32 = gl_LocalInvocationID.x;\n  volume_block[((x_778 * 2u) + 1u)] = 0.0f;\n  workgroupBarrier();\n  param_11 = block_id;\n  let x_785 : vec3<u32> = block_id_to_pos_u1_(&(param_11));\n  block_pos_2 = x_785;\n  let x_788 : vec4<u32> = x_409.padded_dims;\n  n_blocks_3 = (vec3<u32>(x_788.x, x_788.y, x_788.z) / vec3<u32>(4u, 4u, 4u));\n  let x_792 : vec3<u32> = block_pos_2;\n  let x_793 : vec3<u32> = compute_block_dims_with_ghost_vu3_(x_792);\n  block_dims_4 = x_793;\n  let x_797 : u32 = gl_LocalInvocationID.x;\n  param_12 = x_797;\n  let x_798 : vec3<u32> = voxel_id_to_voxel_u1_(&(param_12));\n  voxel_pos_2 = x_798;\n  let x_799 : vec3<u32> = voxel_pos_2;\n  let x_800 : vec3<u32> = voxel_pos_2;\n  let x_801 : vec3<u32> = block_dims_4;\n  load_voxel_u1_vu3_vu3_vu3_(block_id, x_799, x_800, x_801);\n  i_1 = 0u;\n  loop {\n    var x_821 : bool;\n    var x_822 : bool;\n    let x_809 : u32 = i_1;\n    if ((x_809 < 3u)) {\n    } else {\n      break;\n    }\n    let x_812 : u32 = i_1;\n    let x_814 : u32 = block_dims_4[x_812];\n    let x_815 : bool = (x_814 == 5u);\n    x_822 = x_815;\n    if (x_815) {\n      let x_818 : u32 = i_1;\n      let x_820 : u32 = voxel_pos_2[x_818];\n      x_821 = (x_820 == 3u);\n      x_822 = x_821;\n    }\n    if (x_822) {\n      let x_826 : vec3<u32> = voxel_pos_2;\n      let x_829 : u32 = i_1;\n      indexable_1 = array<vec3<u32>, 3u>(vec3<u32>(1u, 0u, 0u), vec3<u32>(0u, 1u, 0u), vec3<u32>(0u, 0u, 1u));\n      let x_833 : vec3<u32> = indexable_1[x_829];\n      ghost_voxel_pos_1 = (x_826 + x_833);\n      let x_836 : vec3<u32> = ghost_voxel_pos_1;\n      neighbor_voxel_pos_1 = x_836;\n      let x_837 : u32 = i_1;\n      indexable_2 = array<vec3<u32>, 3u>(vec3<u32>(1u, 0u, 0u), vec3<u32>(0u, 1u, 0u), vec3<u32>(0u, 0u, 1u));\n      let x_840 : u32 = indexable_2[x_837].x;\n      if ((x_840 == 1u)) {\n        neighbor_voxel_pos_1.x = 0u;\n      } else {\n        let x_846 : u32 = i_1;\n        indexable_3 = array<vec3<u32>, 3u>(vec3<u32>(1u, 0u, 0u), vec3<u32>(0u, 1u, 0u), vec3<u32>(0u, 0u, 1u));\n        let x_849 : u32 = indexable_3[x_846].y;\n        if ((x_849 == 1u)) {\n          neighbor_voxel_pos_1.y = 0u;\n        } else {\n          neighbor_voxel_pos_1.z = 0u;\n        }\n      }\n      let x_857 : vec3<u32> = block_pos_2;\n      let x_858 : u32 = i_1;\n      indexable_4 = array<vec3<u32>, 3u>(vec3<u32>(1u, 0u, 0u), vec3<u32>(0u, 1u, 0u), vec3<u32>(0u, 0u, 1u));\n      let x_861 : vec3<u32> = indexable_4[x_858];\n      neighbor_block_pos = (x_857 + x_861);\n      let x_865 : vec3<u32> = neighbor_block_pos;\n      param_13 = x_865;\n      let x_866 : u32 = compute_block_id_vu3_(&(param_13));\n      neighbor_id_1 = x_866;\n      let x_867 : u32 = neighbor_id_1;\n      let x_868 : vec3<u32> = ghost_voxel_pos_1;\n      let x_869 : vec3<u32> = neighbor_voxel_pos_1;\n      let x_870 : vec3<u32> = block_dims_4;\n      load_voxel_u1_vu3_vu3_vu3_(x_867, x_868, x_869, x_870);\n    }\n\n    continuing {\n      let x_872 : u32 = i_1;\n      i_1 = (x_872 + bitcast<u32>(1i));\n    }\n  }\n  i_2 = 0u;\n  loop {\n    var x_918 : bool;\n    var x_919 : bool;\n    let x_880 : u32 = i_2;\n    if ((x_880 < 3u)) {\n    } else {\n      break;\n    }\n    let x_883 : vec3<u32> = block_dims_4;\n    let x_885 : u32 = i_2;\n    indexable_5 = array<vec3<u32>, 3u>(vec3<u32>(1u, 1u, 0u), vec3<u32>(1u, 0u, 1u), vec3<u32>(0u, 1u, 1u));\n    let x_888 : vec3<u32> = indexable_5[x_885];\n    b = (x_883 * x_888);\n    let x_891 : vec3<u32> = voxel_pos_2;\n    let x_892 : u32 = i_2;\n    indexable_6 = array<vec3<u32>, 3u>(vec3<u32>(1u, 1u, 0u), vec3<u32>(1u, 0u, 1u), vec3<u32>(0u, 1u, 1u));\n    let x_895 : vec3<u32> = indexable_6[x_892];\n    p_3 = (x_891 * x_895);\n    let x_898 : u32 = b.x;\n    let x_900 : u32 = b.y;\n    let x_903 : u32 = b.z;\n    let x_906 : bool = (((x_898 + x_900) + x_903) == 10u);\n    x_919 = x_906;\n    if (x_906) {\n      let x_910 : u32 = p_3.x;\n      let x_912 : u32 = p_3.y;\n      let x_915 : u32 = p_3.z;\n      x_918 = (((x_910 + x_912) + x_915) == 6u);\n      x_919 = x_918;\n    }\n    if (x_919) {\n      let x_923 : vec3<u32> = voxel_pos_2;\n      let x_924 : u32 = i_2;\n      indexable_7 = array<vec3<u32>, 3u>(vec3<u32>(1u, 1u, 0u), vec3<u32>(1u, 0u, 1u), vec3<u32>(0u, 1u, 1u));\n      let x_927 : vec3<u32> = indexable_7[x_924];\n      ghost_voxel_pos_2 = (x_923 + x_927);\n      let x_930 : vec3<u32> = ghost_voxel_pos_2;\n      neighbor_voxel_pos_2 = x_930;\n      let x_931 : u32 = i_2;\n      indexable_8 = array<vec3<u32>, 3u>(vec3<u32>(1u, 1u, 0u), vec3<u32>(1u, 0u, 1u), vec3<u32>(0u, 1u, 1u));\n      let x_934 : u32 = indexable_8[x_931].x;\n      if ((x_934 == 1u)) {\n        neighbor_voxel_pos_2.x = 0u;\n      }\n      let x_939 : u32 = i_2;\n      indexable_9 = array<vec3<u32>, 3u>(vec3<u32>(1u, 1u, 0u), vec3<u32>(1u, 0u, 1u), vec3<u32>(0u, 1u, 1u));\n      let x_942 : u32 = indexable_9[x_939].y;\n      if ((x_942 == 1u)) {\n        neighbor_voxel_pos_2.y = 0u;\n      }\n      let x_947 : u32 = i_2;\n      indexable_10 = array<vec3<u32>, 3u>(vec3<u32>(1u, 1u, 0u), vec3<u32>(1u, 0u, 1u), vec3<u32>(0u, 1u, 1u));\n      let x_950 : u32 = indexable_10[x_947].z;\n      if ((x_950 == 1u)) {\n        neighbor_voxel_pos_2.z = 0u;\n      }\n      let x_956 : vec3<u32> = block_pos_2;\n      let x_957 : u32 = i_2;\n      indexable_11 = array<vec3<u32>, 3u>(vec3<u32>(1u, 1u, 0u), vec3<u32>(1u, 0u, 1u), vec3<u32>(0u, 1u, 1u));\n      let x_960 : vec3<u32> = indexable_11[x_957];\n      neighbor_block_pos_1 = (x_956 + x_960);\n      let x_964 : vec3<u32> = neighbor_block_pos_1;\n      param_14 = x_964;\n      let x_965 : u32 = compute_block_id_vu3_(&(param_14));\n      neighbor_id_2 = x_965;\n      let x_966 : u32 = neighbor_id_2;\n      let x_967 : vec3<u32> = ghost_voxel_pos_2;\n      let x_968 : vec3<u32> = neighbor_voxel_pos_2;\n      let x_969 : vec3<u32> = block_dims_4;\n      load_voxel_u1_vu3_vu3_vu3_(x_966, x_967, x_968, x_969);\n    }\n\n    continuing {\n      let x_971 : u32 = i_2;\n      i_2 = (x_971 + bitcast<u32>(1i));\n    }\n  }\n  let x_973 : vec3<u32> = block_dims_4;\n  let x_976 : vec3<u32> = voxel_pos_2;\n  if ((all((x_973 == vec3<u32>(5u, 5u, 5u))) & all((x_976 == vec3<u32>(3u, 3u, 3u))))) {\n    let x_984 : vec3<u32> = voxel_pos_2;\n    ghost_voxel_pos_3 = (x_984 + vec3<u32>(1u, 1u, 1u));\n    let x_987 : vec3<u32> = block_pos_2;\n    neighbor_block_pos_2 = (x_987 + vec3<u32>(1u, 1u, 1u));\n    let x_991 : vec3<u32> = neighbor_block_pos_2;\n    param_15 = x_991;\n    let x_992 : u32 = compute_block_id_vu3_(&(param_15));\n    neighbor_id_3 = x_992;\n    let x_993 : u32 = neighbor_id_3;\n    let x_994 : vec3<u32> = ghost_voxel_pos_3;\n    let x_996 : vec3<u32> = block_dims_4;\n    load_voxel_u1_vu3_vu3_vu3_(x_993, x_994, vec3<u32>(0u, 0u, 0u), x_996);\n  }\n  workgroupBarrier();\n  let x_998 : vec3<u32> = block_dims_4;\n  return x_998;\n}\n\nfn ray_id_to_pos_u1_(id : ptr<function, u32>) -> vec2<u32> {\n  let x_405 : u32 = *(id);\n  let x_412 : u32 = x_409.image_width;\n  let x_414 : u32 = *(id);\n  let x_416 : u32 = x_409.image_width;\n  return vec2<u32>((x_405 % x_412), (x_414 / x_416));\n}\n\nfn intersect_box_vf3_vf3_vf3_vf3_(orig : ptr<function, vec3<f32>>, dir : ptr<function, vec3<f32>>, box_min : vec3<f32>, box_max : vec3<f32>) -> vec2<f32> {\n  var inv_dir : vec3<f32>;\n  var tmin_tmp : vec3<f32>;\n  var tmax_tmp : vec3<f32>;\n  var tmin : vec3<f32>;\n  var tmax : vec3<f32>;\n  var t0 : f32;\n  var t1 : f32;\n  let x_325 : vec3<f32> = *(dir);\n  inv_dir = (vec3<f32>(1.0f, 1.0f, 1.0f) / x_325);\n  let x_329 : vec3<f32> = *(orig);\n  let x_331 : vec3<f32> = inv_dir;\n  tmin_tmp = ((box_min - x_329) * x_331);\n  let x_334 : vec3<f32> = *(orig);\n  let x_336 : vec3<f32> = inv_dir;\n  tmax_tmp = ((box_max - x_334) * x_336);\n  let x_339 : vec3<f32> = tmin_tmp;\n  let x_340 : vec3<f32> = tmax_tmp;\n  tmin = min(x_339, x_340);\n  let x_343 : vec3<f32> = tmin_tmp;\n  let x_344 : vec3<f32> = tmax_tmp;\n  tmax = max(x_343, x_344);\n  let x_348 : f32 = tmin.x;\n  let x_350 : f32 = tmin.y;\n  let x_352 : f32 = tmin.z;\n  t0 = max(x_348, max(x_350, x_352));\n  let x_357 : f32 = tmax.x;\n  let x_359 : f32 = tmax.y;\n  let x_361 : f32 = tmax.z;\n  t1 = min(x_357, min(x_359, x_361));\n  let x_364 : f32 = t0;\n  let x_365 : f32 = t1;\n  return vec2<f32>(x_364, x_365);\n}\n\nfn init_grid_iterator_vf3_vf3_f1_vi3_(ray_org : ptr<function, vec3<f32>>, ray_dir : ptr<function, vec3<f32>>, t : ptr<function, f32>, grid_dims_1 : ptr<function, vec3<i32>>) -> GridIterator {\n  var grid_iter : GridIterator;\n  var inv_ray_dir : vec3<f32>;\n  var p_2 : vec3<f32>;\n  var cell : vec3<f32>;\n  var t_max_neg : vec3<f32>;\n  var t_max_pos : vec3<f32>;\n  var is_neg_dir : vec3<bool>;\n  let x_159 : vec3<i32> = *(grid_dims_1);\n  grid_iter.grid_dims = x_159;\n  let x_162 : vec3<f32> = *(ray_dir);\n  grid_iter.grid_step = vec3<i32>(sign(x_162));\n  let x_168 : vec3<f32> = *(ray_dir);\n  inv_ray_dir = (vec3<f32>(1.0f, 1.0f, 1.0f) / x_168);\n  let x_172 : vec3<f32> = inv_ray_dir;\n  grid_iter.t_delta = abs(x_172);\n  let x_176 : vec3<f32> = *(ray_org);\n  let x_177 : f32 = *(t);\n  let x_178 : vec3<f32> = *(ray_dir);\n  p_2 = (x_176 + (x_178 * x_177));\n  let x_181 : vec3<f32> = p_2;\n  let x_184 : vec3<i32> = *(grid_dims_1);\n  p_2 = clamp(x_181, vec3<f32>(0.0f, 0.0f, 0.0f), vec3<f32>((x_184 - vec3<i32>(1i, 1i, 1i))));\n  let x_190 : vec3<f32> = p_2;\n  cell = floor(x_190);\n  let x_193 : vec3<f32> = cell;\n  let x_194 : vec3<f32> = *(ray_org);\n  let x_196 : vec3<f32> = inv_ray_dir;\n  t_max_neg = ((x_193 - x_194) * x_196);\n  let x_199 : vec3<f32> = cell;\n  let x_202 : vec3<f32> = *(ray_org);\n  let x_204 : vec3<f32> = inv_ray_dir;\n  t_max_pos = (((x_199 + vec3<f32>(1.0f, 1.0f, 1.0f)) - x_202) * x_204);\n  let x_208 : vec3<f32> = *(ray_dir);\n  is_neg_dir = (x_208 < vec3<f32>(0.0f, 0.0f, 0.0f));\n  let x_211 : vec3<f32> = t_max_pos;\n  let x_212 : vec3<f32> = t_max_neg;\n  let x_213 : vec3<bool> = is_neg_dir;\n  grid_iter.t_max = select(x_211, x_212, x_213);\n  let x_217 : vec3<f32> = cell;\n  grid_iter.cell = vec3<i32>(x_217);\n  let x_221 : f32 = *(t);\n  grid_iter.t = x_221;\n  let x_223 : GridIterator = grid_iter;\n  return x_223;\n}\n\nfn outside_grid_vi3_vi3_(p : vec3<i32>, grid_dims : vec3<i32>) -> bool {\n  var x_154 : bool;\n  var x_155 : bool;\n  let x_149 : bool = any((p < vec3<i32>(0i, 0i, 0i)));\n  x_155 = x_149;\n  if (!(x_149)) {\n    x_154 = any((p >= grid_dims));\n    x_155 = x_154;\n  }\n  return x_155;\n}\n\nfn grid_iterator_get_cell_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_vf2_vi3_(iter : ptr<function, GridIterator>, cell_t_range : ptr<function, vec2<f32>>, cell_id : ptr<function, vec3<i32>>) -> bool {\n  let x_227 : vec3<i32> = (*(iter)).cell;\n  let x_229 : vec3<i32> = (*(iter)).grid_dims;\n  let x_230 : bool = outside_grid_vi3_vi3_(x_227, x_229);\n  if (x_230) {\n    return false;\n  }\n  let x_236 : f32 = (*(iter)).t;\n  (*(cell_t_range)).x = x_236;\n  let x_240 : f32 = (*(iter)).t_max.x;\n  let x_243 : f32 = (*(iter)).t_max.y;\n  let x_245 : f32 = (*(iter)).t_max.z;\n  (*(cell_t_range)).y = min(x_240, min(x_243, x_245));\n  let x_250 : vec3<i32> = (*(iter)).cell;\n  *(cell_id) = x_250;\n  let x_252 : f32 = (*(cell_t_range)).y;\n  let x_254 : f32 = (*(cell_t_range)).x;\n  if ((x_252 < x_254)) {\n    return false;\n  }\n  return true;\n}\n\nfn compute_vertex_values_vu3_vu3_f1_8__vf2_(voxel_pos_1 : ptr<function, vec3<u32>>, block_dims_1 : ptr<function, vec3<u32>>, values : ptr<function, array<f32, 8u>>, value_range : ptr<function, vec2<f32>>) {\n  var i : i32;\n  var v : vec3<u32>;\n  var indexable : array<vec3<i32>, 8u>;\n  var voxel : u32;\n  (*(value_range)).x = 100000002004087734272.0f;\n  (*(value_range)).y = -100000002004087734272.0f;\n  i = 0i;\n  loop {\n    let x_508 : i32 = i;\n    if ((x_508 < 8i)) {\n    } else {\n      break;\n    }\n    let x_520 : i32 = i;\n    indexable = array<vec3<i32>, 8u>(vec3<i32>(0i, 0i, 0i), vec3<i32>(1i, 0i, 0i), vec3<i32>(0i, 1i, 0i), vec3<i32>(1i, 1i, 0i), vec3<i32>(0i, 0i, 1i), vec3<i32>(1i, 0i, 1i), vec3<i32>(0i, 1i, 1i), vec3<i32>(1i, 1i, 1i));\n    let x_524 : vec3<i32> = indexable[x_520];\n    v = bitcast<vec3<u32>>(x_524);\n    let x_528 : u32 = (*(voxel_pos_1)).z;\n    let x_530 : u32 = v.z;\n    let x_533 : u32 = (*(block_dims_1)).y;\n    let x_536 : u32 = (*(voxel_pos_1)).y;\n    let x_539 : u32 = v.y;\n    let x_542 : u32 = (*(block_dims_1)).x;\n    let x_545 : u32 = (*(voxel_pos_1)).x;\n    let x_548 : u32 = v.x;\n    voxel = (((((((x_528 + x_530) * x_533) + x_536) + x_539) * x_542) + x_545) + x_548);\n    let x_550 : i32 = i;\n    let x_555 : u32 = voxel;\n    let x_558 : f32 = volume_block[x_555];\n    (*(values))[x_550] = x_558;\n    let x_561 : f32 = (*(value_range)).x;\n    let x_562 : i32 = i;\n    let x_564 : f32 = (*(values))[x_562];\n    (*(value_range)).x = min(x_561, x_564);\n    let x_568 : f32 = (*(value_range)).y;\n    let x_569 : i32 = i;\n    let x_571 : f32 = (*(values))[x_569];\n    (*(value_range)).y = max(x_568, x_571);\n\n    continuing {\n      let x_574 : i32 = i;\n      i = (x_574 + 1i);\n    }\n  }\n  return;\n}\n\nfn compute_polynomial_vf3_vf3_vf3_f1_8__(p_1 : vec3<f32>, dir_1 : vec3<f32>, v000 : vec3<f32>, values_1 : ptr<function, array<f32, 8u>>) -> vec4<f32> {\n  var v111 : vec3<f32>;\n  var a : array<vec3<f32>, 2u>;\n  var b_1 : array<vec3<f32>, 2u>;\n  var poly_2 : vec4<f32>;\n  var k : i32;\n  var j : i32;\n  var i_3 : i32;\n  var val : f32;\n  v111 = (v000 + vec3<f32>(1.0f, 1.0f, 1.0f));\n  let x_1006 : vec3<f32> = v111;\n  a = array<vec3<f32>, 2u>((x_1006 - p_1), (p_1 - v000));\n  b_1 = array<vec3<f32>, 2u>(-(dir_1), dir_1);\n  poly_2 = vec4<f32>(0.0f, 0.0f, 0.0f, 0.0f);\n  k = 0i;\n  loop {\n    let x_1022 : i32 = k;\n    if ((x_1022 < 2i)) {\n    } else {\n      break;\n    }\n    j = 0i;\n    loop {\n      let x_1030 : i32 = j;\n      if ((x_1030 < 2i)) {\n      } else {\n        break;\n      }\n      i_3 = 0i;\n      loop {\n        let x_1038 : i32 = i_3;\n        if ((x_1038 < 2i)) {\n        } else {\n          break;\n        }\n        let x_1041 : i32 = i_3;\n        let x_1042 : i32 = j;\n        let x_1043 : i32 = k;\n        let x_1049 : f32 = (*(values_1))[(x_1041 + (2i * (x_1042 + (2i * x_1043))))];\n        val = x_1049;\n        let x_1050 : i32 = i_3;\n        let x_1052 : f32 = b_1[x_1050].x;\n        let x_1053 : i32 = j;\n        let x_1055 : f32 = b_1[x_1053].y;\n        let x_1057 : i32 = k;\n        let x_1059 : f32 = b_1[x_1057].z;\n        let x_1061 : f32 = val;\n        let x_1064 : f32 = poly_2.x;\n        poly_2.x = (x_1064 + (((x_1052 * x_1055) * x_1059) * x_1061));\n        let x_1067 : i32 = i_3;\n        let x_1069 : f32 = a[x_1067].x;\n        let x_1070 : i32 = j;\n        let x_1072 : f32 = b_1[x_1070].y;\n        let x_1074 : i32 = k;\n        let x_1076 : f32 = b_1[x_1074].z;\n        let x_1078 : i32 = i_3;\n        let x_1080 : f32 = b_1[x_1078].x;\n        let x_1081 : i32 = j;\n        let x_1083 : f32 = a[x_1081].y;\n        let x_1085 : i32 = k;\n        let x_1087 : f32 = b_1[x_1085].z;\n        let x_1090 : i32 = i_3;\n        let x_1092 : f32 = b_1[x_1090].x;\n        let x_1093 : i32 = j;\n        let x_1095 : f32 = b_1[x_1093].y;\n        let x_1097 : i32 = k;\n        let x_1099 : f32 = a[x_1097].z;\n        let x_1102 : f32 = val;\n        let x_1105 : f32 = poly_2.y;\n        poly_2.y = (x_1105 + (((((x_1069 * x_1072) * x_1076) + ((x_1080 * x_1083) * x_1087)) + ((x_1092 * x_1095) * x_1099)) * x_1102));\n        let x_1108 : i32 = i_3;\n        let x_1110 : f32 = b_1[x_1108].x;\n        let x_1111 : i32 = j;\n        let x_1113 : f32 = a[x_1111].y;\n        let x_1115 : i32 = k;\n        let x_1117 : f32 = a[x_1115].z;\n        let x_1119 : i32 = i_3;\n        let x_1121 : f32 = a[x_1119].x;\n        let x_1122 : i32 = j;\n        let x_1124 : f32 = b_1[x_1122].y;\n        let x_1126 : i32 = k;\n        let x_1128 : f32 = a[x_1126].z;\n        let x_1131 : i32 = i_3;\n        let x_1133 : f32 = a[x_1131].x;\n        let x_1134 : i32 = j;\n        let x_1136 : f32 = a[x_1134].y;\n        let x_1138 : i32 = k;\n        let x_1140 : f32 = b_1[x_1138].z;\n        let x_1143 : f32 = val;\n        let x_1146 : f32 = poly_2.z;\n        poly_2.z = (x_1146 + (((((x_1110 * x_1113) * x_1117) + ((x_1121 * x_1124) * x_1128)) + ((x_1133 * x_1136) * x_1140)) * x_1143));\n        let x_1149 : i32 = i_3;\n        let x_1151 : f32 = a[x_1149].x;\n        let x_1152 : i32 = j;\n        let x_1154 : f32 = a[x_1152].y;\n        let x_1156 : i32 = k;\n        let x_1158 : f32 = a[x_1156].z;\n        let x_1160 : f32 = val;\n        let x_1163 : f32 = poly_2.w;\n        poly_2.w = (x_1163 + (((x_1151 * x_1154) * x_1158) * x_1160));\n\n        continuing {\n          let x_1166 : i32 = i_3;\n          i_3 = (x_1166 + 1i);\n        }\n      }\n\n      continuing {\n        let x_1168 : i32 = j;\n        j = (x_1168 + 1i);\n      }\n    }\n\n    continuing {\n      let x_1170 : i32 = k;\n      k = (x_1170 + 1i);\n    }\n  }\n  let x_1172 : vec4<f32> = poly_2;\n  return x_1172;\n}\n\nfn evaluate_polynomial_vf4_f1_(poly : vec4<f32>, t_1 : f32) -> f32 {\n  return ((((((poly.x * t_1) * t_1) * t_1) + ((poly.y * t_1) * t_1)) + (poly.z * t_1)) + poly.w);\n}\n\nfn solve_quadratic_vf3_f1_2__(poly_1 : vec3<f32>, roots : ptr<function, array<f32, 2u>>) -> bool {\n  var discriminant : f32;\n  var r : vec2<f32>;\n  if ((poly_1.x == 0.0f)) {\n    (*(roots))[0i] = (-(poly_1.z) / poly_1.y);\n    (*(roots))[1i] = (-(poly_1.z) / poly_1.y);\n    return true;\n  }\n  discriminant = ((poly_1.y * poly_1.y) - ((4.0f * poly_1.x) * poly_1.z));\n  let x_1215 : f32 = discriminant;\n  if ((x_1215 < 0.0f)) {\n    return false;\n  }\n  let x_1220 : f32 = discriminant;\n  discriminant = sqrt(x_1220);\n  let x_1226 : f32 = discriminant;\n  let x_1230 : f32 = discriminant;\n  let x_1234 : f32 = poly_1.x;\n  r = ((vec2<f32>((-(poly_1.y) + x_1226), (-(poly_1.y) - x_1230)) * 0.5f) / vec2<f32>(x_1234, x_1234));\n  let x_1238 : f32 = r.x;\n  let x_1240 : f32 = r.y;\n  (*(roots))[0i] = min(x_1238, x_1240);\n  let x_1244 : f32 = r.x;\n  let x_1246 : f32 = r.y;\n  (*(roots))[1i] = max(x_1244, x_1246);\n  return true;\n}\n\nfn marmitt_intersect_vf3_vf3_vf3_f1_8__f1_f1_f1_(vol_eye : vec3<f32>, grid_ray_dir : vec3<f32>, v000_2 : vec3<f32>, vertex_values_1 : array<f32, 8u>, t_prev : f32, t_next : f32, t_hit : ptr<function, f32>) -> bool {\n  var cell_p : vec3<f32>;\n  var t_in : f32;\n  var t_out : f32;\n  var cell_ray_dir : vec3<f32>;\n  var poly_3 : vec4<f32>;\n  var param_16 : array<f32, 8u>;\n  var f_in : f32;\n  var f_out : f32;\n  var roots_1 : array<f32, 2u>;\n  var param_17 : array<f32, 2u>;\n  var f_root0 : f32;\n  var f_root1 : f32;\n  var i_5 : i32;\n  var t_2 : f32;\n  var f_t : f32;\n  var cell_t_hit : f32;\n  var hit_p_1 : vec3<f32>;\n  if ((t_next <= t_prev)) {\n    return false;\n  }\n  var x_1472 : bool;\n  var x_1473 : bool;\n  var x_1504 : bool;\n  var x_1505 : bool;\n  cell_p = (vol_eye + (grid_ray_dir * (t_prev + ((t_next - t_prev) * 0.5f))));\n  t_in = ((-((t_next - t_prev)) * 0.5f) * length(grid_ray_dir));\n  t_out = (((t_next - t_prev) * 0.5f) * length(grid_ray_dir));\n  cell_ray_dir = normalize(grid_ray_dir);\n  let x_1427 : vec3<f32> = cell_p;\n  let x_1428 : vec3<f32> = cell_ray_dir;\n  param_16 = vertex_values_1;\n  let x_1430 : vec4<f32> = compute_polynomial_vf3_vf3_vf3_f1_8__(x_1427, x_1428, v000_2, &(param_16));\n  poly_3 = x_1430;\n  let x_1432 : f32 = x_409.isovalue;\n  let x_1434 : f32 = poly_3.w;\n  poly_3.w = (x_1434 - x_1432);\n  let x_1438 : vec4<f32> = poly_3;\n  let x_1439 : f32 = t_in;\n  let x_1440 : f32 = evaluate_polynomial_vf4_f1_(x_1438, x_1439);\n  f_in = x_1440;\n  let x_1442 : vec4<f32> = poly_3;\n  let x_1443 : f32 = t_out;\n  let x_1444 : f32 = evaluate_polynomial_vf4_f1_(x_1442, x_1443);\n  f_out = x_1444;\n  roots_1 = array<f32, 2u>(0.0f, 0.0f);\n  let x_1449 : f32 = poly_3.x;\n  let x_1453 : f32 = poly_3.y;\n  let x_1456 : f32 = poly_3.z;\n  let x_1459 : bool = solve_quadratic_vf3_f1_2__(vec3<f32>((3.0f * x_1449), (2.0f * x_1453), x_1456), &(param_17));\n  let x_1460 : array<f32, 2u> = param_17;\n  roots_1 = x_1460;\n  if (x_1459) {\n    let x_1464 : f32 = roots_1[0i];\n    let x_1465 : f32 = t_in;\n    let x_1466 : bool = (x_1464 >= x_1465);\n    x_1473 = x_1466;\n    if (x_1466) {\n      let x_1470 : f32 = roots_1[0i];\n      let x_1471 : f32 = t_out;\n      x_1472 = (x_1470 <= x_1471);\n      x_1473 = x_1472;\n    }\n    if (x_1473) {\n      let x_1477 : vec4<f32> = poly_3;\n      let x_1479 : f32 = roots_1[0i];\n      let x_1480 : f32 = evaluate_polynomial_vf4_f1_(x_1477, x_1479);\n      f_root0 = x_1480;\n      let x_1481 : f32 = f_root0;\n      let x_1483 : f32 = f_in;\n      if ((sign(x_1481) == sign(x_1483))) {\n        let x_1489 : f32 = roots_1[0i];\n        t_in = x_1489;\n        let x_1490 : f32 = f_root0;\n        f_in = x_1490;\n      } else {\n        let x_1493 : f32 = roots_1[0i];\n        t_out = x_1493;\n        let x_1494 : f32 = f_root0;\n        f_out = x_1494;\n      }\n    }\n    let x_1496 : f32 = roots_1[1i];\n    let x_1497 : f32 = t_in;\n    let x_1498 : bool = (x_1496 >= x_1497);\n    x_1505 = x_1498;\n    if (x_1498) {\n      let x_1502 : f32 = roots_1[1i];\n      let x_1503 : f32 = t_out;\n      x_1504 = (x_1502 <= x_1503);\n      x_1505 = x_1504;\n    }\n    if (x_1505) {\n      let x_1509 : vec4<f32> = poly_3;\n      let x_1511 : f32 = roots_1[1i];\n      let x_1512 : f32 = evaluate_polynomial_vf4_f1_(x_1509, x_1511);\n      f_root1 = x_1512;\n      let x_1513 : f32 = f_root1;\n      let x_1515 : f32 = f_in;\n      if ((sign(x_1513) == sign(x_1515))) {\n        let x_1521 : f32 = roots_1[1i];\n        t_in = x_1521;\n        let x_1522 : f32 = f_root1;\n        f_in = x_1522;\n      } else {\n        let x_1525 : f32 = roots_1[1i];\n        t_out = x_1525;\n        let x_1526 : f32 = f_root1;\n        f_out = x_1526;\n      }\n    }\n  }\n  let x_1527 : f32 = f_in;\n  let x_1529 : f32 = f_out;\n  if (!((sign(x_1527) == sign(x_1529)))) {\n    i_5 = 0i;\n    loop {\n      let x_1540 : i32 = i_5;\n      if ((x_1540 < 3i)) {\n      } else {\n        break;\n      }\n      let x_1543 : f32 = t_in;\n      let x_1544 : f32 = t_out;\n      let x_1545 : f32 = t_in;\n      let x_1547 : f32 = f_in;\n      let x_1550 : f32 = f_out;\n      let x_1551 : f32 = f_in;\n      t_2 = (x_1543 + (((x_1544 - x_1545) * -(x_1547)) / (x_1550 - x_1551)));\n      let x_1556 : vec4<f32> = poly_3;\n      let x_1557 : f32 = t_2;\n      let x_1558 : f32 = evaluate_polynomial_vf4_f1_(x_1556, x_1557);\n      f_t = x_1558;\n      let x_1559 : f32 = f_t;\n      let x_1561 : f32 = f_in;\n      if ((sign(x_1559) == sign(x_1561))) {\n        let x_1566 : f32 = t_2;\n        t_in = x_1566;\n        let x_1567 : f32 = f_t;\n        f_in = x_1567;\n      } else {\n        let x_1569 : f32 = t_2;\n        t_out = x_1569;\n        let x_1570 : f32 = f_t;\n        f_out = x_1570;\n      }\n\n      continuing {\n        let x_1571 : i32 = i_5;\n        i_5 = (x_1571 + 1i);\n      }\n    }\n    let x_1574 : f32 = t_in;\n    let x_1575 : f32 = t_out;\n    let x_1576 : f32 = t_in;\n    let x_1578 : f32 = f_in;\n    let x_1581 : f32 = f_out;\n    let x_1582 : f32 = f_in;\n    cell_t_hit = (x_1574 + (((x_1575 - x_1576) * -(x_1578)) / (x_1581 - x_1582)));\n    let x_1587 : vec3<f32> = cell_p;\n    let x_1588 : vec3<f32> = cell_ray_dir;\n    let x_1589 : f32 = cell_t_hit;\n    hit_p_1 = (x_1587 + (x_1588 * x_1589));\n    let x_1592 : vec3<f32> = hit_p_1;\n    *(t_hit) = (length((x_1592 - vol_eye)) / length(grid_ray_dir));\n    return true;\n  }\n  return false;\n}\n\nfn grid_iterator_advance_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_(iter_1 : ptr<function, GridIterator>) {\n  let x_263 : f32 = (*(iter_1)).t_max.x;\n  let x_265 : f32 = (*(iter_1)).t_max.y;\n  let x_267 : f32 = (*(iter_1)).t_max.z;\n  (*(iter_1)).t = min(x_263, min(x_265, x_267));\n  let x_272 : f32 = (*(iter_1)).t;\n  let x_274 : f32 = (*(iter_1)).t_max.x;\n  if ((x_272 == x_274)) {\n    let x_280 : i32 = (*(iter_1)).grid_step.x;\n    let x_282 : i32 = (*(iter_1)).cell.x;\n    (*(iter_1)).cell.x = (x_282 + x_280);\n    let x_286 : f32 = (*(iter_1)).t_delta.x;\n    let x_288 : f32 = (*(iter_1)).t_max.x;\n    (*(iter_1)).t_max.x = (x_288 + x_286);\n  } else {\n    let x_293 : f32 = (*(iter_1)).t;\n    let x_295 : f32 = (*(iter_1)).t_max.y;\n    if ((x_293 == x_295)) {\n      let x_300 : i32 = (*(iter_1)).grid_step.y;\n      let x_302 : i32 = (*(iter_1)).cell.y;\n      (*(iter_1)).cell.y = (x_302 + x_300);\n      let x_306 : f32 = (*(iter_1)).t_delta.y;\n      let x_308 : f32 = (*(iter_1)).t_max.y;\n      (*(iter_1)).t_max.y = (x_308 + x_306);\n    } else {\n      let x_313 : i32 = (*(iter_1)).grid_step.z;\n      let x_315 : i32 = (*(iter_1)).cell.z;\n      (*(iter_1)).cell.z = (x_315 + x_313);\n      let x_319 : f32 = (*(iter_1)).t_delta.z;\n      let x_321 : f32 = (*(iter_1)).t_max.z;\n      (*(iter_1)).t_max.z = (x_321 + x_319);\n    }\n  }\n  return;\n}\n\nfn compute_normal_vi3_vf3_f1_8__(v000_1 : vec3<i32>, hit_p : vec3<f32>, vertex_values : array<f32, 8u>) -> vec3<f32> {\n  var N_1 : vec3<f32>;\n  var v111_1 : vec3<f32>;\n  var a_1 : array<vec3<f32>, 2u>;\n  var k_1 : i32;\n  var j_1 : i32;\n  var i_4 : i32;\n  var val_1 : f32;\n  var indexable_12 : array<f32, 8u>;\n  var indexable_13 : array<f32, 2u>;\n  var indexable_14 : array<f32, 2u>;\n  var indexable_15 : array<f32, 2u>;\n  N_1 = vec3<f32>(0.0f, 0.0f, 0.0f);\n  v111_1 = (vec3<f32>(v000_1) + vec3<f32>(1.0f, 1.0f, 1.0f));\n  let x_1297 : vec3<f32> = v111_1;\n  a_1 = array<vec3<f32>, 2u>((x_1297 - hit_p), (hit_p - vec3<f32>(v000_1)));\n  k_1 = 0i;\n  loop {\n    let x_1308 : i32 = k_1;\n    if ((x_1308 < 2i)) {\n    } else {\n      break;\n    }\n    j_1 = 0i;\n    loop {\n      let x_1316 : i32 = j_1;\n      if ((x_1316 < 2i)) {\n      } else {\n        break;\n      }\n      i_4 = 0i;\n      loop {\n        let x_1324 : i32 = i_4;\n        if ((x_1324 < 2i)) {\n        } else {\n          break;\n        }\n        let x_1327 : i32 = i_4;\n        let x_1328 : i32 = j_1;\n        let x_1329 : i32 = k_1;\n        indexable_12 = vertex_values;\n        let x_1336 : f32 = indexable_12[(x_1327 + (2i * (x_1328 + (2i * x_1329))))];\n        val_1 = x_1336;\n        let x_1339 : i32 = i_4;\n        indexable_13 = array<f32, 2u>(-1.0f, 1.0f);\n        let x_1342 : f32 = indexable_13[x_1339];\n        let x_1343 : i32 = j_1;\n        let x_1345 : f32 = a_1[x_1343].y;\n        let x_1347 : i32 = k_1;\n        let x_1349 : f32 = a_1[x_1347].z;\n        let x_1351 : f32 = val_1;\n        let x_1354 : f32 = N_1.x;\n        N_1.x = (x_1354 + (((x_1342 * x_1345) * x_1349) * x_1351));\n        let x_1357 : i32 = j_1;\n        indexable_14 = array<f32, 2u>(-1.0f, 1.0f);\n        let x_1360 : f32 = indexable_14[x_1357];\n        let x_1361 : i32 = i_4;\n        let x_1363 : f32 = a_1[x_1361].x;\n        let x_1365 : i32 = k_1;\n        let x_1367 : f32 = a_1[x_1365].z;\n        let x_1369 : f32 = val_1;\n        let x_1372 : f32 = N_1.y;\n        N_1.y = (x_1372 + (((x_1360 * x_1363) * x_1367) * x_1369));\n        let x_1375 : i32 = k_1;\n        indexable_15 = array<f32, 2u>(-1.0f, 1.0f);\n        let x_1378 : f32 = indexable_15[x_1375];\n        let x_1379 : i32 = i_4;\n        let x_1381 : f32 = a_1[x_1379].x;\n        let x_1383 : i32 = j_1;\n        let x_1385 : f32 = a_1[x_1383].y;\n        let x_1387 : f32 = val_1;\n        let x_1390 : f32 = N_1.z;\n        N_1.z = (x_1390 + (((x_1378 * x_1381) * x_1385) * x_1387));\n\n        continuing {\n          let x_1393 : i32 = i_4;\n          i_4 = (x_1393 + 1i);\n        }\n      }\n\n      continuing {\n        let x_1395 : i32 = j_1;\n        j_1 = (x_1395 + 1i);\n      }\n    }\n\n    continuing {\n      let x_1397 : i32 = k_1;\n      k_1 = (x_1397 + 1i);\n    }\n  }\n  let x_1399 : vec3<f32> = N_1;\n  return normalize(x_1399);\n}\n\nfn shading_vf3_vf3_vf3_vf3_(N : ptr<function, vec3<f32>>, V : ptr<function, vec3<f32>>, L : ptr<function, vec3<f32>>, base_color : ptr<function, vec3<f32>>) -> vec3<f32> {\n  var H : vec3<f32>;\n  var c_1 : vec3<f32>;\n  var temp : f32;\n  let x_1252 : vec3<f32> = *(V);\n  let x_1253 : vec3<f32> = *(L);\n  H = normalize((x_1252 + x_1253));\n  let x_1257 : vec3<f32> = *(base_color);\n  c_1 = (x_1257 * 0.200000003f);\n  let x_1261 : vec3<f32> = *(L);\n  let x_1262 : vec3<f32> = *(N);\n  let x_1266 : vec3<f32> = *(base_color);\n  let x_1268 : vec3<f32> = c_1;\n  c_1 = (x_1268 + (x_1266 * (0.600000024f * clamp(dot(x_1261, x_1262), 0.0f, 1.0f))));\n  let x_1271 : vec3<f32> = H;\n  let x_1272 : vec3<f32> = *(N);\n  temp = clamp(dot(x_1271, x_1272), 0.0f, 1.0f);\n  let x_1276 : f32 = temp;\n  let x_1278 : f32 = temp;\n  let x_1280 : f32 = temp;\n  let x_1282 : f32 = temp;\n  let x_1284 : f32 = temp;\n  let x_1285 : f32 = (((((0.100000001f * x_1276) * x_1278) * x_1280) * x_1282) * x_1284);\n  let x_1286 : vec3<f32> = c_1;\n  c_1 = (x_1286 + vec3<f32>(x_1285, x_1285, x_1285));\n  let x_1289 : vec3<f32> = c_1;\n  return x_1289;\n}\n\nfn pack_color_vf3_(rgb : ptr<function, vec3<f32>>) -> i32 {\n  var rbg256 : vec3<i32>;\n  var c : i32;\n  let x_370 : vec3<f32> = *(rgb);\n  rbg256 = clamp(vec3<i32>((x_370 * 255.0f)), vec3<i32>(0i, 0i, 0i), vec3<i32>(255i, 255i, 255i));\n  c = 0i;\n  let x_379 : i32 = rbg256.x;\n  let x_384 : i32 = c;\n  c = (x_384 | ((x_379 << bitcast<u32>(24i)) & -16777216i));\n  let x_387 : i32 = rbg256.y;\n  let x_392 : i32 = c;\n  c = (x_392 | ((x_387 << bitcast<u32>(16i)) & 16711680i));\n  let x_395 : i32 = rbg256.z;\n  let x_400 : i32 = c;\n  c = (x_400 | ((x_395 << bitcast<u32>(8i)) & 65280i));\n  let x_402 : i32 = c;\n  return x_402;\n}\n\nfn main_1() {\n  var block_dims_5 : vec3<u32>;\n  var n_blocks_4 : vec3<u32>;\n  var block_pos_3 : vec3<u32>;\n  var param_18 : u32;\n  var volume_translation : vec3<f32>;\n  var transformed_eye : vec3<f32>;\n  var vol_eye_1 : vec3<f32>;\n  var chunks : u32;\n  var i_6 : u32;\n  var pixel_coords : vec2<i32>;\n  var color : vec4<f32>;\n  var ray_id : u32;\n  var ray_index : u32;\n  var param_19 : u32;\n  var spec_index : u32;\n  var grid_ray_dir_1 : vec3<f32>;\n  var hit_surface : bool;\n  var hit_p_2 : vec3<f32>;\n  var cell_range : vec2<f32>;\n  var brick_range : vec2<f32>;\n  var param_20 : vec3<f32>;\n  var param_21 : vec3<f32>;\n  var grid_iter_1 : GridIterator;\n  var param_22 : vec3<f32>;\n  var param_23 : vec3<f32>;\n  var param_24 : f32;\n  var param_25 : vec3<i32>;\n  var v000_3 : vec3<i32>;\n  var cell_t_range_1 : vec2<f32>;\n  var param_26 : GridIterator;\n  var param_27 : vec2<f32>;\n  var param_28 : vec3<i32>;\n  var vertex_values_2 : array<f32, 8u>;\n  var param_29 : vec3<u32>;\n  var param_30 : vec3<u32>;\n  var param_31 : array<f32, 8u>;\n  var param_32 : vec2<f32>;\n  var skip_cell : bool;\n  var t_hit_1 : f32;\n  var param_33 : f32;\n  var param_34 : GridIterator;\n  var N_2 : vec3<f32>;\n  var L_1 : vec3<f32>;\n  var V_1 : vec3<f32>;\n  var param_35 : vec3<f32>;\n  var param_36 : vec3<f32>;\n  var param_37 : vec3<f32>;\n  var param_38 : vec3<f32>;\n  var param_39 : vec3<f32>;\n  let x_1601 : u32 = gl_LocalInvocationID.x;\n  if ((x_1601 == 0u)) {\n    let x_1615 : u32 = gl_WorkGroupID.x;\n    let x_1620 : u32 = x_1618.id_offset;\n    let x_1624 : BlockInfo_1 = x_1612.blocks[(x_1615 + x_1620)];\n    block_info.id = x_1624.id;\n    block_info.ray_offset = x_1624.ray_offset;\n    block_info.num_rays = x_1624.num_rays;\n    block_info.lod = x_1624.lod;\n  }\n  workgroupBarrier();\n  let x_1636 : u32 = block_info.id;\n  let x_1637 : vec3<u32> = load_block_u1_(x_1636);\n  block_dims_5 = x_1637;\n  let x_1639 : u32 = gl_WorkGroupID.x;\n  let x_1641 : u32 = x_1618.id_offset;\n  let x_1644 : u32 = x_1618.total_active_blocks;\n  if (((x_1639 + x_1641) >= x_1644)) {\n    return;\n  }\n  let x_1650 : u32 = block_info.num_rays;\n  if ((x_1650 == 0u)) {\n    return;\n  }\n  let x_1657 : vec4<u32> = x_409.padded_dims;\n  n_blocks_4 = (vec3<u32>(x_1657.x, x_1657.y, x_1657.z) / vec3<u32>(4u, 4u, 4u));\n  let x_1663 : u32 = block_info.id;\n  param_18 = x_1663;\n  let x_1664 : vec3<u32> = block_id_to_pos_u1_(&(param_18));\n  block_pos_3 = (x_1664 * vec3<u32>(4u, 4u, 4u));\n  let x_1670 : vec4<f32> = x_409.volume_scale;\n  volume_translation = (vec3<f32>(0.0f, 0.0f, 0.0f) - (vec3<f32>(x_1670.x, x_1670.y, x_1670.z) * 0.5f));\n  let x_1680 : vec4<f32> = x_1678.eye_pos;\n  let x_1682 : vec3<f32> = volume_translation;\n  let x_1685 : vec4<f32> = x_409.volume_scale;\n  transformed_eye = ((vec3<f32>(x_1680.x, x_1680.y, x_1680.z) - x_1682) / vec3<f32>(x_1685.x, x_1685.y, x_1685.z));\n  let x_1689 : vec3<f32> = transformed_eye;\n  let x_1691 : vec4<u32> = x_409.volume_dims;\n  let x_1697 : vec3<u32> = block_pos_3;\n  vol_eye_1 = (((x_1689 * vec3<f32>(vec3<u32>(x_1691.x, x_1691.y, x_1691.z))) - vec3<f32>(0.5f, 0.5f, 0.5f)) - vec3<f32>(x_1697));\n  let x_1702 : u32 = block_info.num_rays;\n  chunks = (x_1702 / 64u);\n  let x_1705 : u32 = block_info.num_rays;\n  if (((x_1705 % 64u) != 0u)) {\n    let x_1710 : u32 = chunks;\n    chunks = (x_1710 + bitcast<u32>(1i));\n  }\n  i_6 = 0u;\n  loop {\n    let x_1718 : u32 = i_6;\n    let x_1719 : u32 = chunks;\n    if ((x_1718 < x_1719)) {\n    } else {\n      break;\n    }\n    pixel_coords = vec2<i32>(-1i, -1i);\n    color = vec4<f32>(1.0f, 1.0f, 1.0f, 1.0f);\n    color.w = 1.0f;\n    let x_1729 : u32 = i_6;\n    let x_1732 : u32 = gl_LocalInvocationID.x;\n    ray_id = ((x_1729 * 64u) + x_1732);\n    let x_1734 : u32 = ray_id;\n    let x_1736 : u32 = block_info.num_rays;\n    if ((x_1734 < x_1736)) {\n      let x_1746 : u32 = block_info.ray_offset;\n      let x_1747 : u32 = ray_id;\n      let x_1750 : u32 = x_1744.ray_ids[(x_1746 + x_1747)];\n      ray_index = x_1750;\n      let x_1752 : u32 = ray_index;\n      param_19 = x_1752;\n      let x_1753 : vec2<u32> = ray_id_to_pos_u1_(&(param_19));\n      pixel_coords = bitcast<vec2<i32>>(x_1753);\n      let x_1761 : u32 = block_info.ray_offset;\n      let x_1762 : u32 = ray_id;\n      let x_1765 : u32 = x_1759.spec_ids[(x_1761 + x_1762)];\n      spec_index = x_1765;\n      let x_1772 : u32 = ray_index;\n      let x_1775 : vec3<f32> = x_1771.rays[x_1772].ray_dir;\n      grid_ray_dir_1 = x_1775;\n      hit_surface = false;\n      hit_p_2 = vec3<f32>(0.0f, 0.0f, 0.0f);\n      cell_range = vec2<f32>(0.0f, 0.0f);\n      let x_1784 : vec3<f32> = vol_eye_1;\n      param_20 = x_1784;\n      let x_1786 : vec3<f32> = grid_ray_dir_1;\n      param_21 = x_1786;\n      let x_1787 : vec2<f32> = intersect_box_vf3_vf3_vf3_vf3_(&(param_20), &(param_21), vec3<f32>(0.0f, 0.0f, 0.0f), vec3<f32>(4.0f, 4.0f, 4.0f));\n      brick_range = x_1787;\n      let x_1789 : f32 = brick_range.y;\n      let x_1791 : f32 = brick_range.x;\n      if ((x_1789 <= x_1791)) {\n        continue;\n      }\n      let x_1798 : f32 = brick_range.x;\n      let x_1801 : vec3<u32> = block_dims_5;\n      let x_1806 : vec3<f32> = vol_eye_1;\n      param_22 = x_1806;\n      let x_1808 : vec3<f32> = grid_ray_dir_1;\n      param_23 = x_1808;\n      param_24 = (x_1798 - 0.001f);\n      param_25 = (bitcast<vec3<i32>>(x_1801) - vec3<i32>(1i, 1i, 1i));\n      let x_1811 : GridIterator = init_grid_iterator_vf3_vf3_f1_vi3_(&(param_22), &(param_23), &(param_24), &(param_25));\n      grid_iter_1 = x_1811;\n      v000_3 = vec3<i32>(0i, 0i, 0i);\n      loop {\n        var x_1851 : bool;\n        var x_1852 : bool;\n        let x_1820 : GridIterator = grid_iter_1;\n        param_26 = x_1820;\n        let x_1823 : bool = grid_iterator_get_cell_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_vf2_vi3_(&(param_26), &(param_27), &(param_28));\n        let x_1824 : GridIterator = param_26;\n        grid_iter_1 = x_1824;\n        let x_1825 : vec2<f32> = param_27;\n        cell_t_range_1 = x_1825;\n        let x_1826 : vec3<i32> = param_28;\n        v000_3 = x_1826;\n        if (x_1823) {\n        } else {\n          break;\n        }\n        let x_1827 : vec3<i32> = v000_3;\n        param_29 = bitcast<vec3<u32>>(x_1827);\n        let x_1832 : vec3<u32> = block_dims_5;\n        param_30 = x_1832;\n        compute_vertex_values_vu3_vu3_f1_8__vf2_(&(param_29), &(param_30), &(param_31), &(param_32));\n        let x_1836 : array<f32, 8u> = param_31;\n        vertex_values_2 = x_1836;\n        let x_1837 : vec2<f32> = param_32;\n        cell_range = x_1837;\n        let x_1840 : f32 = x_409.isovalue;\n        let x_1842 : f32 = cell_range.x;\n        let x_1843 : bool = (x_1840 < x_1842);\n        x_1852 = x_1843;\n        if (!(x_1843)) {\n          let x_1848 : f32 = x_409.isovalue;\n          let x_1850 : f32 = cell_range.y;\n          x_1851 = (x_1848 > x_1850);\n          x_1852 = x_1851;\n        }\n        skip_cell = x_1852;\n        let x_1853 : bool = skip_cell;\n        if (!(x_1853)) {\n          let x_1857 : vec3<f32> = vol_eye_1;\n          let x_1858 : vec3<f32> = grid_ray_dir_1;\n          let x_1859 : vec3<i32> = v000_3;\n          let x_1861 : array<f32, 8u> = vertex_values_2;\n          let x_1863 : f32 = cell_t_range_1.x;\n          let x_1865 : f32 = cell_t_range_1.y;\n          let x_1868 : bool = marmitt_intersect_vf3_vf3_vf3_f1_8__f1_f1_f1_(x_1857, x_1858, vec3<f32>(x_1859), x_1861, x_1863, x_1865, &(param_33));\n          let x_1869 : f32 = param_33;\n          t_hit_1 = x_1869;\n          hit_surface = x_1868;\n          let x_1870 : bool = hit_surface;\n          if (x_1870) {\n            let x_1873 : vec3<f32> = vol_eye_1;\n            let x_1874 : vec3<f32> = grid_ray_dir_1;\n            let x_1875 : f32 = t_hit_1;\n            hit_p_2 = (x_1873 + (x_1874 * x_1875));\n            break;\n          }\n        }\n        let x_1880 : GridIterator = grid_iter_1;\n        param_34 = x_1880;\n        grid_iterator_advance_struct_GridIterator_vi3_vi3_vf3_vi3_vf3_f11_(&(param_34));\n        let x_1882 : GridIterator = param_34;\n        grid_iter_1 = x_1882;\n      }\n      let x_1883 : bool = hit_surface;\n      if (x_1883) {\n        let x_1886 : u32 = ray_index;\n        x_1771.rays[x_1886].t = 340282346638528859811704183484516925440.0f;\n        let x_1890 : vec3<i32> = v000_3;\n        let x_1891 : vec3<f32> = hit_p_2;\n        let x_1892 : array<f32, 8u> = vertex_values_2;\n        let x_1893 : vec3<f32> = compute_normal_vi3_vf3_f1_8__(x_1890, x_1891, x_1892);\n        N_2 = x_1893;\n        let x_1895 : vec3<f32> = grid_ray_dir_1;\n        L_1 = normalize(-(x_1895));\n        let x_1899 : vec3<f32> = grid_ray_dir_1;\n        V_1 = normalize(-(x_1899));\n        let x_1902 : vec3<f32> = N_2;\n        let x_1903 : vec3<f32> = grid_ray_dir_1;\n        if ((dot(x_1902, x_1903) > 0.0f)) {\n          let x_1908 : vec3<f32> = N_2;\n          N_2 = -(x_1908);\n        }\n        let x_1914 : vec3<f32> = N_2;\n        param_35 = x_1914;\n        let x_1916 : vec3<f32> = L_1;\n        param_36 = x_1916;\n        let x_1918 : vec3<f32> = V_1;\n        param_37 = x_1918;\n        param_38 = vec3<f32>(0.300000012f, 0.300000012f, 0.899999976f);\n        let x_1920 : vec3<f32> = shading_vf3_vf3_vf3_vf3_(&(param_35), &(param_36), &(param_37), &(param_38));\n        let x_1921 : vec4<f32> = color;\n        color = vec4<f32>(x_1920.x, x_1920.y, x_1920.z, x_1921.w);\n        let x_1927 : u32 = spec_index;\n        let x_1929 : vec4<f32> = color;\n        param_39 = vec3<f32>(x_1929.x, x_1929.y, x_1929.z);\n        let x_1931 : i32 = pack_color_vf3_(&(param_39));\n        let x_1933 : f32 = t_hit_1;\n        x_1926.ray_rgbz[x_1927] = vec2<f32>(bitcast<f32>(x_1931), x_1933);\n      }\n    }\n\n    continuing {\n      let x_1937 : u32 = i_6;\n      i_6 = (x_1937 + bitcast<u32>(1i));\n    }\n  }\n  return;\n}\n\n@compute @workgroup_size(64i, 1i, 1i)\nfn main(@builtin(local_invocation_id) gl_LocalInvocationID_param : vec3<u32>, @builtin(workgroup_id) gl_WorkGroupID_param : vec3<u32>) {\n  gl_LocalInvocationID = gl_LocalInvocationID_param;\n  gl_WorkGroupID = gl_WorkGroupID_param;\n  main_1();\n}\n`;\n\nconst compute_voxel_range_comp_spv = `struct BlockIDOffset {\n  block_id_offset : u32,\n}\n\nstruct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nalias RTArr = array<vec2<f32>>;\n\nalias RTArr_1 = array<vec2<f32>>;\n\nstruct BlockInformation {\n  block_ranges : RTArr_1,\n}\n\nstruct VoxelInformation {\n  voxel_ranges : RTArr_1,\n}\n\nstruct EmulateUint64 {\n  lo : u32,\n  hi : u32,\n}\n\nalias RTArr_2 = array<EmulateUint64>;\n\nstruct Compressed {\n  compressed : RTArr_2,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(1) @binding(0) var<uniform> x_18 : BlockIDOffset;\n\n@group(0) @binding(1) var<uniform> x_33 : VolumeParams;\n\n@group(0) @binding(2) var<storage, read_write> x_91 : BlockInformation;\n\n@group(2) @binding(0) var<storage, read_write> x_197 : VoxelInformation;\n\n@group(0) @binding(0) var<storage, read_write> x_206 : Compressed;\n\nfn main_1() {\n  var block_index : u32;\n  var total_blocks : u32;\n  var n_blocks : vec3<u32>;\n  var block_pos : vec3<u32>;\n  var cell_range : vec2<f32>;\n  var k : i32;\n  var j : i32;\n  var i : i32;\n  var neighbor : vec3<u32>;\n  var coords : vec3<u32>;\n  var neighbor_id : u32;\n  let x_15 : u32 = gl_GlobalInvocationID.x;\n  let x_23 : u32 = x_18.block_id_offset;\n  block_index = (x_15 + (x_23 * 32u));\n  let x_36 : u32 = x_33.padded_dims.x;\n  let x_39 : u32 = x_33.padded_dims.y;\n  let x_45 : u32 = x_33.padded_dims.z;\n  total_blocks = (((x_36 * x_39) / 64u) * x_45);\n  let x_51 : vec4<u32> = x_33.padded_dims;\n  n_blocks = (vec3<u32>(x_51.x, x_51.y, x_51.z) / vec3<u32>(4u, 4u, 4u));\n  let x_56 : u32 = block_index;\n  let x_57 : u32 = total_blocks;\n  if ((x_56 >= x_57)) {\n    return;\n  }\n  let x_64 : u32 = block_index;\n  let x_66 : u32 = n_blocks.x;\n  block_pos.x = (x_64 % x_66);\n  let x_69 : u32 = block_index;\n  let x_71 : u32 = n_blocks.x;\n  let x_74 : u32 = n_blocks.y;\n  block_pos.y = ((x_69 / x_71) % x_74);\n  let x_77 : u32 = block_index;\n  let x_79 : u32 = n_blocks.x;\n  let x_81 : u32 = n_blocks.y;\n  block_pos.z = (x_77 / (x_79 * x_81));\n  let x_92 : u32 = block_index;\n  let x_95 : vec2<f32> = x_91.block_ranges[x_92];\n  cell_range = x_95;\n  k = 0i;\n  loop {\n    let x_103 : i32 = k;\n    if ((x_103 < 2i)) {\n    } else {\n      break;\n    }\n    j = 0i;\n    loop {\n      let x_112 : i32 = j;\n      if ((x_112 < 2i)) {\n      } else {\n        break;\n      }\n      i = 0i;\n      loop {\n        var x_144 : bool;\n        var x_145 : bool;\n        var x_152 : bool;\n        var x_153 : bool;\n        let x_120 : i32 = i;\n        if ((x_120 < 2i)) {\n        } else {\n          break;\n        }\n        let x_123 : i32 = i;\n        let x_125 : i32 = j;\n        let x_127 : i32 = k;\n        neighbor = vec3<u32>(bitcast<u32>(x_123), bitcast<u32>(x_125), bitcast<u32>(x_127));\n        let x_131 : vec3<u32> = block_pos;\n        let x_132 : vec3<u32> = neighbor;\n        coords = (x_131 + x_132);\n        let x_134 : vec3<u32> = neighbor;\n        let x_138 : bool = all((x_134 == vec3<u32>(0u, 0u, 0u)));\n        x_145 = x_138;\n        if (!(x_138)) {\n          let x_142 : vec3<u32> = coords;\n          x_144 = any((x_142 < vec3<u32>(0u, 0u, 0u)));\n          x_145 = x_144;\n        }\n        x_153 = x_145;\n        if (!(x_145)) {\n          let x_149 : vec3<u32> = coords;\n          let x_150 : vec3<u32> = n_blocks;\n          x_152 = any((x_149 >= x_150));\n          x_153 = x_152;\n        }\n        if (x_153) {\n          continue;\n        }\n        let x_159 : u32 = coords.x;\n        let x_161 : u32 = n_blocks.x;\n        let x_163 : u32 = coords.y;\n        let x_165 : u32 = n_blocks.y;\n        let x_167 : u32 = coords.z;\n        neighbor_id = (x_159 + (x_161 * (x_163 + (x_165 * x_167))));\n        let x_172 : u32 = neighbor_id;\n        let x_175 : f32 = x_91.block_ranges[x_172].x;\n        let x_178 : f32 = cell_range.x;\n        cell_range.x = min(x_175, x_178);\n        let x_181 : u32 = neighbor_id;\n        let x_183 : f32 = x_91.block_ranges[x_181].y;\n        let x_185 : f32 = cell_range.y;\n        cell_range.y = max(x_183, x_185);\n\n        continuing {\n          let x_188 : i32 = i;\n          i = (x_188 + 1i);\n        }\n      }\n\n      continuing {\n        let x_190 : i32 = j;\n        j = (x_190 + 1i);\n      }\n    }\n\n    continuing {\n      let x_192 : i32 = k;\n      k = (x_192 + 1i);\n    }\n  }\n  let x_198 : u32 = block_index;\n  let x_199 : vec2<f32> = cell_range;\n  x_197.voxel_ranges[x_198] = x_199;\n  return;\n}\n\n@compute @workgroup_size(32i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst compute_coarse_cell_range_comp_spv = `struct BlockIDOffset {\n  block_id_offset : u32,\n}\n\nstruct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nalias RTArr = array<vec2<f32>>;\n\nalias RTArr_1 = array<vec2<f32>>;\n\nstruct BrickInformation {\n  voxel_ranges : RTArr_1,\n}\n\nstruct CoarseCellRange {\n  coarse_cell_ranges : RTArr_1,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(1) var<uniform> x_18 : BlockIDOffset;\n\n@group(0) @binding(0) var<uniform> x_33 : VolumeParams;\n\n@group(0) @binding(2) var<storage, read_write> x_119 : BrickInformation;\n\n@group(0) @binding(3) var<storage, read_write> x_210 : CoarseCellRange;\n\nfn main_1() {\n  var coarse_cell_idx : u32;\n  var total_coarse_cells : u32;\n  var n_blocks : vec3<u32>;\n  var n_cells : vec3<u32>;\n  var cell_pos : vec3<u32>;\n  var block_pos : vec3<u32>;\n  var block_idx : u32;\n  var coarse_cell_range : vec2<f32>;\n  var k : i32;\n  var j : i32;\n  var i : i32;\n  var offs : vec3<u32>;\n  var coords : vec3<u32>;\n  var cur_block_idx : u32;\n  let x_15 : u32 = gl_GlobalInvocationID.x;\n  let x_23 : u32 = x_18.block_id_offset;\n  coarse_cell_idx = (x_15 + (x_23 * 32u));\n  let x_36 : u32 = x_33.padded_dims.x;\n  let x_39 : u32 = x_33.padded_dims.y;\n  let x_45 : u32 = x_33.padded_dims.z;\n  total_coarse_cells = (((x_36 * x_39) / 4096u) * x_45);\n  let x_47 : u32 = coarse_cell_idx;\n  let x_48 : u32 = total_coarse_cells;\n  if ((x_47 >= x_48)) {\n    return;\n  }\n  let x_58 : vec4<u32> = x_33.padded_dims;\n  n_blocks = (vec3<u32>(x_58.x, x_58.y, x_58.z) / vec3<u32>(4u, 4u, 4u));\n  let x_64 : vec3<u32> = n_blocks;\n  n_cells = vec3<u32>(ceil((vec3<f32>(x_64) / vec3<f32>(4.0f, 4.0f, 4.0f))));\n  let x_73 : u32 = coarse_cell_idx;\n  let x_75 : u32 = n_cells.x;\n  cell_pos.x = (x_73 % x_75);\n  let x_78 : u32 = coarse_cell_idx;\n  let x_80 : u32 = n_cells.x;\n  let x_83 : u32 = n_cells.y;\n  cell_pos.y = ((x_78 / x_80) % x_83);\n  let x_86 : u32 = coarse_cell_idx;\n  let x_88 : u32 = n_cells.x;\n  let x_90 : u32 = n_cells.y;\n  cell_pos.z = (x_86 / (x_88 * x_90));\n  let x_95 : vec3<u32> = cell_pos;\n  block_pos = (x_95 * vec3<u32>(4u, 4u, 4u));\n  let x_100 : u32 = block_pos.x;\n  let x_102 : u32 = n_blocks.x;\n  let x_104 : u32 = block_pos.y;\n  let x_106 : u32 = n_blocks.y;\n  let x_108 : u32 = block_pos.z;\n  block_idx = (x_100 + (x_102 * (x_104 + (x_106 * x_108))));\n  let x_120 : u32 = block_idx;\n  let x_123 : vec2<f32> = x_119.voxel_ranges[x_120];\n  coarse_cell_range = x_123;\n  k = 0i;\n  loop {\n    let x_131 : i32 = k;\n    if ((x_131 < 4i)) {\n    } else {\n      break;\n    }\n    j = 0i;\n    loop {\n      let x_140 : i32 = j;\n      if ((x_140 < 4i)) {\n      } else {\n        break;\n      }\n      i = 0i;\n      loop {\n        let x_148 : i32 = i;\n        if ((x_148 < 4i)) {\n        } else {\n          break;\n        }\n        let x_151 : i32 = i;\n        let x_153 : i32 = j;\n        let x_155 : i32 = k;\n        offs = vec3<u32>(bitcast<u32>(x_151), bitcast<u32>(x_153), bitcast<u32>(x_155));\n        let x_159 : vec3<u32> = block_pos;\n        let x_160 : vec3<u32> = offs;\n        coords = (x_159 + x_160);\n        let x_162 : vec3<u32> = coords;\n        let x_163 : vec3<u32> = n_blocks;\n        if (any((x_162 >= x_163))) {\n          continue;\n        }\n        let x_172 : u32 = coords.x;\n        let x_174 : u32 = n_blocks.x;\n        let x_176 : u32 = coords.y;\n        let x_178 : u32 = n_blocks.y;\n        let x_180 : u32 = coords.z;\n        cur_block_idx = (x_172 + (x_174 * (x_176 + (x_178 * x_180))));\n        let x_185 : u32 = cur_block_idx;\n        let x_188 : f32 = x_119.voxel_ranges[x_185].x;\n        let x_191 : f32 = coarse_cell_range.x;\n        coarse_cell_range.x = min(x_188, x_191);\n        let x_194 : u32 = cur_block_idx;\n        let x_196 : f32 = x_119.voxel_ranges[x_194].y;\n        let x_198 : f32 = coarse_cell_range.y;\n        coarse_cell_range.y = max(x_196, x_198);\n\n        continuing {\n          let x_201 : i32 = i;\n          i = (x_201 + 1i);\n        }\n      }\n\n      continuing {\n        let x_203 : i32 = j;\n        j = (x_203 + 1i);\n      }\n    }\n\n    continuing {\n      let x_205 : i32 = k;\n      k = (x_205 + 1i);\n    }\n  }\n  let x_211 : u32 = coarse_cell_idx;\n  let x_212 : vec2<f32> = coarse_cell_range;\n  x_210.coarse_cell_ranges[x_211] = x_212;\n  return;\n}\n\n@compute @workgroup_size(32i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst reset_speculative_ids_comp_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nalias RTArr = array<u32>;\n\nalias RTArr_1 = array<u32>;\n\nstruct RayIDs {\n  ray_ids : RTArr_1,\n}\n\nalias RTArr_2 = array<vec2<f32>>;\n\nstruct RayRGBZ {\n  ray_rgbz : RTArr_2,\n}\n\nstruct RayBlockIDs {\n  block_ids : RTArr_1,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<uniform> x_19 : VolumeParams;\n\n@group(0) @binding(1) var<storage, read_write> x_44 : RayIDs;\n\n@group(0) @binding(2) var<storage, read_write> x_53 : RayRGBZ;\n\n@group(0) @binding(3) var<storage, read_write> x_63 : RayBlockIDs;\n\nfn main_1() {\n  var ray_index : u32;\n  let x_13 : u32 = gl_GlobalInvocationID.x;\n  let x_24 : u32 = x_19.image_width;\n  if ((x_13 >= x_24)) {\n    return;\n  }\n  let x_33 : u32 = gl_GlobalInvocationID.x;\n  let x_36 : u32 = gl_GlobalInvocationID.y;\n  let x_38 : u32 = x_19.image_width;\n  ray_index = (x_33 + (x_36 * x_38));\n  let x_46 : u32 = ray_index;\n  x_44.ray_ids[x_46] = 4294967295u;\n  let x_54 : u32 = ray_index;\n  x_53.ray_rgbz[x_54] = vec2<f32>(bitcast<f32>(0i), 340282346638528859811704183484516925440.0f);\n  let x_64 : u32 = ray_index;\n  x_63.block_ids[x_64] = 4294967295u;\n  return;\n}\n\n@compute @workgroup_size(32i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst depth_composite_comp_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n  image_height : u32,\n}\n\nstruct ViewParams {\n  proj_view : mat4x4<f32>,\n  eye_pos : vec4<f32>,\n  eye_dir : vec4<f32>,\n  near_plane : f32,\n  current_pass_index : u32,\n  speculation_count : u32,\n}\n\nalias RTArr = array<u32>;\n\nstruct RayIDs {\n  ray_ids : RTArr,\n}\n\nalias RTArr_1 = array<vec2<f32>>;\n\nstruct RayRGBZ {\n  ray_rgbz : RTArr_1,\n}\n\nalias RTArr_2 = array<f32>;\n\nstruct ImageTensor {\n  tensor : RTArr_2,\n}\n\nstruct RayInfo {\n  ray_dir : vec3<f32>,\n  t : f32,\n}\n\nalias RTArr_3 = array<RayInfo>;\n\nstruct RayInformation {\n  rays : RTArr_3,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(4) var<uniform> x_59 : VolumeParams;\n\n@group(0) @binding(0) var<uniform> x_72 : ViewParams;\n\n@group(0) @binding(1) var<storage, read_write> x_95 : RayIDs;\n\n@group(0) @binding(2) var<storage, read_write> x_143 : RayRGBZ;\n\n@group(0) @binding(3) var render_target : texture_storage_2d<rgba8unorm, write>;\n\n@group(1) @binding(1) var<storage, read_write> x_198 : ImageTensor;\n\n@group(1) @binding(0) var<storage, read_write> x_231 : RayInformation;\n\nfn unpack_color_i1_(rgb8 : ptr<function, i32>) -> vec3<f32> {\n  var rgb : vec3<f32>;\n  rgb = vec3<f32>(0.0f, 0.0f, 0.0f);\n  let x_18 : i32 = *(rgb8);\n  rgb.x = (f32(((x_18 >> bitcast<u32>(24i)) & 255i)) / 255.0f);\n  let x_30 : i32 = *(rgb8);\n  rgb.y = (f32(((x_30 >> bitcast<u32>(16i)) & 255i)) / 255.0f);\n  let x_38 : i32 = *(rgb8);\n  rgb.z = (f32(((x_38 >> bitcast<u32>(8i)) & 255i)) / 255.0f);\n  let x_46 : vec3<f32> = rgb;\n  return x_46;\n}\n\nfn main_1() {\n  var spec_index : u32;\n  var ray_index : u32;\n  var pixel_coords : vec2<i32>;\n  var color : vec4<f32>;\n  var i : i32;\n  var param : i32;\n  let x_54 : u32 = gl_GlobalInvocationID.x;\n  let x_63 : u32 = x_59.image_width;\n  if ((x_54 >= x_63)) {\n    return;\n  }\n  let x_74 : u32 = x_72.speculation_count;\n  if ((x_74 > 1u)) {\n    let x_81 : u32 = gl_GlobalInvocationID.x;\n    let x_83 : u32 = gl_GlobalInvocationID.y;\n    let x_85 : u32 = x_59.image_width;\n    let x_89 : u32 = x_72.speculation_count;\n    spec_index = ((x_81 + (x_83 * x_85)) * x_89);\n    let x_97 : u32 = spec_index;\n    let x_99 : u32 = x_95.ray_ids[x_97];\n    ray_index = x_99;\n  } else {\n    let x_102 : u32 = gl_GlobalInvocationID.x;\n    let x_104 : u32 = gl_GlobalInvocationID.y;\n    let x_106 : u32 = x_59.image_width;\n    ray_index = (x_102 + (x_104 * x_106));\n    let x_109 : u32 = ray_index;\n    spec_index = x_109;\n  }\n  let x_113 : u32 = ray_index;\n  let x_115 : u32 = x_59.image_width;\n  let x_118 : u32 = ray_index;\n  let x_120 : u32 = x_59.image_width;\n  pixel_coords = vec2<i32>(bitcast<i32>((x_113 % x_115)), bitcast<i32>((x_118 / x_120)));\n  color = vec4<f32>(0.0f, 0.0f, 0.0f, 340282346638528859811704183484516925440.0f);\n  i = 0i;\n  loop {\n    let x_134 : i32 = i;\n    let x_137 : u32 = x_72.speculation_count;\n    if ((bitcast<u32>(x_134) < x_137)) {\n    } else {\n      break;\n    }\n    let x_144 : u32 = spec_index;\n    let x_145 : i32 = i;\n    let x_150 : f32 = x_143.ray_rgbz[(x_144 + bitcast<u32>(x_145))].y;\n    let x_153 : f32 = color.w;\n    if ((x_150 < x_153)) {\n      let x_157 : u32 = spec_index;\n      let x_158 : i32 = i;\n      let x_162 : f32 = x_143.ray_rgbz[(x_157 + bitcast<u32>(x_158))].x;\n      param = bitcast<i32>(x_162);\n      let x_165 : vec3<f32> = unpack_color_i1_(&(param));\n      let x_166 : vec4<f32> = color;\n      color = vec4<f32>(x_165.x, x_165.y, x_165.z, x_166.w);\n      let x_168 : u32 = spec_index;\n      let x_169 : i32 = i;\n      let x_173 : f32 = x_143.ray_rgbz[(x_168 + bitcast<u32>(x_169))].y;\n      color.w = x_173;\n    }\n\n    continuing {\n      let x_175 : i32 = i;\n      i = (x_175 + 1i);\n    }\n  }\n  let x_179 : f32 = color.w;\n  if (!((x_179 == 340282346638528859811704183484516925440.0f))) {\n    let x_187 : vec2<i32> = pixel_coords;\n    let x_188 : vec4<f32> = color;\n    let x_189 : vec3<f32> = vec3<f32>(x_188.x, x_188.y, x_188.z);\n    textureStore(render_target, x_187, vec4<f32>(x_189.x, x_189.y, x_189.z, 1.0f));\n    let x_199 : u32 = ray_index;\n    let x_201 : f32 = color.x;\n    x_198.tensor[x_199] = x_201;\n    let x_203 : u32 = ray_index;\n    let x_205 : u32 = x_59.image_width;\n    let x_208 : u32 = x_59.image_height;\n    let x_212 : f32 = color.y;\n    x_198.tensor[(x_203 + (x_205 * x_208))] = x_212;\n    let x_214 : u32 = ray_index;\n    let x_216 : u32 = x_59.image_width;\n    let x_218 : u32 = x_59.image_height;\n    let x_223 : f32 = color.z;\n    x_198.tensor[(x_214 + ((x_216 * x_218) * 2u))] = x_223;\n  }\n  return;\n}\n\n@compute @workgroup_size(32i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst mark_ray_active_comp_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n}\n\nalias RTArr = array<u32>;\n\nstruct RayActive {\n  ray_active : RTArr,\n}\n\nstruct RayInfo {\n  ray_dir : vec3<f32>,\n  t : f32,\n}\n\nalias RTArr_1 = array<RayInfo>;\n\nstruct RayInformation {\n  rays : RTArr_1,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<uniform> x_19 : VolumeParams;\n\n@group(0) @binding(2) var<storage, read_write> x_44 : RayActive;\n\n@group(0) @binding(1) var<storage, read_write> x_52 : RayInformation;\n\nfn main_1() {\n  var ray_index : u32;\n  let x_13 : u32 = gl_GlobalInvocationID.x;\n  let x_24 : u32 = x_19.image_width;\n  if ((x_13 >= x_24)) {\n    return;\n  }\n  let x_33 : u32 = gl_GlobalInvocationID.x;\n  let x_36 : u32 = gl_GlobalInvocationID.y;\n  let x_38 : u32 = x_19.image_width;\n  ray_index = (x_33 + (x_36 * x_38));\n  let x_46 : u32 = ray_index;\n  let x_53 : u32 = ray_index;\n  let x_57 : f32 = x_52.rays[x_53].t;\n  x_44.ray_active[x_46] = bitcast<u32>(select(0i, 1i, !((x_57 == 340282346638528859811704183484516925440.0f))));\n  return;\n}\n\n@compute @workgroup_size(32i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst color_active_rays_comp_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n  image_height : u32,\n}\n\nalias RTArr = array<u32>;\n\nstruct RayActive {\n  ray_active : RTArr,\n}\n\nalias RTArr_1 = array<f32>;\n\nstruct ImageTensor {\n  tensor : RTArr_1,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(0) var<uniform> x_19 : VolumeParams;\n\n@group(0) @binding(1) var<storage, read_write> x_44 : RayActive;\n\n@group(0) @binding(3) var render_target_copy : texture_2d<f32>;\n\n@group(0) @binding(4) var render_target : texture_storage_2d<rgba8unorm, write>;\n\n@group(0) @binding(2) var<storage, read_write> x_83 : ImageTensor;\n\nfn main_1() {\n  var ray_index : u32;\n  var pixel_coords : vec2<i32>;\n  var color : vec4<f32>;\n  var pixel_coords_1 : vec2<i32>;\n  var color_1 : vec4<f32>;\n  let x_13 : u32 = gl_GlobalInvocationID.x;\n  let x_24 : u32 = x_19.image_width;\n  if ((x_13 >= x_24)) {\n    return;\n  }\n  let x_33 : u32 = gl_GlobalInvocationID.x;\n  let x_36 : u32 = gl_GlobalInvocationID.y;\n  let x_38 : u32 = x_19.image_width;\n  ray_index = (x_33 + (x_36 * x_38));\n  let x_46 : u32 = ray_index;\n  let x_48 : u32 = x_44.ray_active[x_46];\n  if ((x_48 == 1u)) {\n    let x_55 : u32 = ray_index;\n    let x_57 : u32 = x_19.image_width;\n    let x_60 : u32 = ray_index;\n    let x_62 : u32 = x_19.image_width;\n    pixel_coords = vec2<i32>(bitcast<i32>((x_55 % x_57)), bitcast<i32>((x_60 / x_62)));\n    let x_72 : vec2<i32> = pixel_coords;\n    let x_73 : vec4<f32> = textureLoad(render_target_copy, x_72, 0i);\n    color = x_73;\n    let x_76 : vec2<i32> = pixel_coords;\n    textureStore(render_target, x_76, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f));\n    let x_84 : u32 = ray_index;\n    x_83.tensor[x_84] = 1.0f;\n    let x_87 : u32 = ray_index;\n    let x_89 : u32 = x_19.image_width;\n    let x_92 : u32 = x_19.image_height;\n    x_83.tensor[(x_87 + (x_89 * x_92))] = 0.0f;\n    let x_96 : u32 = ray_index;\n    let x_98 : u32 = x_19.image_width;\n    let x_100 : u32 = x_19.image_height;\n    x_83.tensor[(x_96 + ((x_98 * x_100) * 2u))] = 0.0f;\n  } else {\n    let x_108 : u32 = ray_index;\n    let x_110 : u32 = x_19.image_width;\n    let x_113 : u32 = ray_index;\n    let x_115 : u32 = x_19.image_width;\n    pixel_coords_1 = vec2<i32>(bitcast<i32>((x_108 % x_110)), bitcast<i32>((x_113 / x_115)));\n    let x_121 : vec2<i32> = pixel_coords_1;\n    let x_122 : vec4<f32> = textureLoad(render_target_copy, x_121, 0i);\n    color_1 = x_122;\n    let x_125 : f32 = color_1.x;\n    if ((x_125 == 1.0f)) {\n      let x_130 : vec2<i32> = pixel_coords_1;\n      textureStore(render_target, x_130, vec4<f32>(1.0f, 1.0f, 1.0f, 1.0f));\n      let x_132 : u32 = ray_index;\n      x_83.tensor[x_132] = 1.0f;\n      let x_134 : u32 = ray_index;\n      let x_136 : u32 = x_19.image_width;\n      let x_138 : u32 = x_19.image_height;\n      x_83.tensor[(x_134 + (x_136 * x_138))] = 1.0f;\n      let x_142 : u32 = ray_index;\n      let x_144 : u32 = x_19.image_width;\n      let x_146 : u32 = x_19.image_height;\n      x_83.tensor[(x_142 + ((x_144 * x_146) * 2u))] = 1.0f;\n    }\n  }\n  return;\n}\n\n@compute @workgroup_size(32i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst tensor_to_texture_comp_spv = `struct VolumeParams {\n  volume_dims : vec4<u32>,\n  padded_dims : vec4<u32>,\n  volume_scale : vec4<f32>,\n  max_bits : u32,\n  isovalue : f32,\n  image_width : u32,\n  image_height : u32,\n}\n\nalias RTArr = array<f32>;\n\nstruct ImageTensor {\n  tensor : RTArr,\n}\n\nvar<private> gl_GlobalInvocationID : vec3<u32>;\n\n@group(0) @binding(2) var<uniform> x_19 : VolumeParams;\n\n@group(0) @binding(0) var<storage, read_write> x_47 : ImageTensor;\n\n@group(0) @binding(1) var render_target : texture_storage_2d<rgba8unorm, write>;\n\nfn main_1() {\n  var ray_index : u32;\n  var color : vec3<f32>;\n  let x_13 : u32 = gl_GlobalInvocationID.x;\n  let x_24 : u32 = x_19.image_width;\n  if ((x_13 >= x_24)) {\n    return;\n  }\n  let x_33 : u32 = gl_GlobalInvocationID.x;\n  let x_36 : u32 = gl_GlobalInvocationID.y;\n  let x_38 : u32 = x_19.image_width;\n  ray_index = (x_33 + (x_36 * x_38));\n  let x_49 : u32 = ray_index;\n  let x_52 : f32 = x_47.tensor[x_49];\n  color.x = x_52;\n  let x_55 : u32 = ray_index;\n  let x_57 : u32 = x_19.image_width;\n  let x_60 : u32 = x_19.image_height;\n  let x_64 : f32 = x_47.tensor[(x_55 + (x_57 * x_60))];\n  color.y = x_64;\n  let x_66 : u32 = ray_index;\n  let x_68 : u32 = x_19.image_width;\n  let x_70 : u32 = x_19.image_height;\n  let x_76 : f32 = x_47.tensor[(x_66 + ((x_68 * x_70) * 2u))];\n  color.z = x_76;\n  let x_83 : vec3<u32> = gl_GlobalInvocationID;\n  let x_87 : vec3<f32> = color;\n  textureStore(render_target, bitcast<vec2<i32>>(vec2<u32>(x_83.x, x_83.y)), vec4<f32>(x_87.x, x_87.y, x_87.z, 1.0f));\n  return;\n}\n\n@compute @workgroup_size(256i, 1i, 1i)\nfn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {\n  gl_GlobalInvocationID = gl_GlobalInvocationID_param;\n  main_1();\n}\n`;\n\nconst mark_block_active_wgsl_spv = `/*\n// #include \"util.glsl\"\n*/\n\nconst UINT_MAX: u32 = 0xffffffffu;\nconst FLT_MAX: f32 = 3.402823466e+38;\n\nalias float2 = vec2<f32>;\nalias float3 = vec3<f32>;\nalias float4 = vec4<f32>;\nalias uint2 = vec2<u32>;\nalias uint3 = vec3<u32>;\nalias uint4 = vec4<u32>;\n\nstruct RayInfo {\n    ray_dir: float3,\n    // block_id: u32,\n    t: f32,\n    // t_next: f32,\n    // For WGSL we need to pad the struct up to 32 bytes so it matches\n    // the GLSL struct alignment/padding rules we had before\n    // @size(8) pad: f32\n};\n\n/*\nlayout(local_size_x = 8, local_size_y = 1, local_size_z = 1) in;\n*/\n/*\nlayout(set = 0, binding = 0, std140) uniform VolumeParams\n{\n    uvec4 volume_dims;\n    uvec4 padded_dims;\n    vec4 volume_scale;\n    uint max_bits;\n    float isovalue;\n    uint image_width;\n};\n*/\nstruct VolumeParams {\n  volume_dims: uint4,\n  padded_dims: uint4,\n  volume_scale: float4,\n  max_bits: u32,\n  isovalue: f32,\n  image_width: u32,\n}\n\n@group(0) @binding(0) var<uniform> volume_params : VolumeParams;\n\n/*\nlayout(set = 0, binding = 1, std140) uniform LOD\n{\n    uint LOD_threshold;\n};\n*/\nstruct LOD {\n    threshold: f32,\n}\n@group(0) @binding(1) var<uniform> lod_threshold : LOD;\n\n/*\nlayout(set = 0, binding = 2, std140) uniform ViewParams\n{\n    mat4 proj_view;\n    vec4 eye_pos;\n    vec4 eye_dir;\n    float near_plane;\n    uint current_pass_index;\n};\n*/\nstruct ViewParams {\n  proj_view: mat4x4<f32>,\n  eye_pos: float4,\n  eye_dir: float4,\n  near_plane : f32,\n  current_pass_index: u32,\n}\n@group(0) @binding(2) var<uniform> view_params : ViewParams;\n\n/*\nlayout(set = 0, binding = 3, std430) buffer BlockActive\n{\n    uint block_active[];\n};\n*/\n// TODO: Is this valid WGSL? Try compiling with Tint\n@group(0) @binding(3) var<storage, read_write> block_active : array<u32>;\n\n/*\nlayout(set = 0, binding = 5, std430) buffer RayInformation\n{\n    RayInfo rays[];\n};\n*/\n@group(0) @binding(4) var<storage, read_write> rays : array<RayInfo>;\n\n/*\nlayout(set = 0, binding = 6, std430) buffer BlockVisible\n{\n    uint block_visible[];\n};\n*/\n@group(0) @binding(5) var<storage, read_write> block_visible : array<atomic<u32>>;\n@group(0) @binding(6) var<storage, read_write> block_ids : array<u32>;\n\n\n//uniform layout(set = 1, binding = 0, rgba8) writeonly image2D render_target;\n@group(1) @binding(0) var render_target : texture_storage_2d<rgba8unorm, write>;\n\nfn block_id_to_pos(id: u32) -> uint3 {\n    let n_blocks = volume_params.padded_dims.xyz / uint3(4u);\n    return uint3(id % n_blocks.x,\n            (id / n_blocks.x) % n_blocks.y,\n            id / (n_blocks.x * n_blocks.y));\n}\n\nfn compute_block_id(block_pos: uint3) -> u32\n{\n    let n_blocks = volume_params.padded_dims.xyz / uint3(4u);\n    return block_pos.x + n_blocks.x * (block_pos.y + n_blocks.y * block_pos.z);\n}\n\n@compute @workgroup_size(32, 1, 1)\nfn main(@builtin(global_invocation_id) g_invocation_id : vec3<u32>) {\n    if (g_invocation_id.x >= volume_params.image_width) {\n        return;\n    }\n\n    let ray_index = g_invocation_id.x + g_invocation_id.y * volume_params.image_width;\n\n    let block_id = block_ids[ray_index];\n    if (block_id == UINT_MAX) {\n        return;\n    }\n    let block_pos = block_id_to_pos(block_id);\n\n    block_active[block_id] = 1u;\n    //block_visible[block_id] = 1;\n    let already_marked = atomicMax(&block_visible[block_id], 1u);\n\n    // Count this ray for the block (this is now done in count_block_rays.wgsl\n    //uint num_rays = atomicAdd(block_num_rays[block_id], uint(1)) + 1;\n    //let num_rays = atomicAdd(&block_num_rays[block_id], 1u) + 1u;\n\n    // Mark this ray's block's neighbors to the positive side as active\n    // These blocks must be decompressed for neighbor data, but this ray\n    // doesn't need to process them.\n    if (already_marked == 0) {\n        let n_blocks = volume_params.padded_dims.xyz / uint3(4u);\n        for (var k = 0u; k < 2u; k += 1u) {\n            for (var j = 0u; j < 2u; j += 1u) {\n                for (var i = 0u; i < 2u; i += 1u) {\n                    let neighbor = uint3(i, j, k);\n                    let coords = block_pos + neighbor;\n                    if (all(neighbor == uint3(0u)) || any(coords < uint3(0u)) || any(coords >= n_blocks)) {\n                        continue;\n                    }\n                    let neighbor_id = compute_block_id(coords);\n                    block_active[neighbor_id] = 1u;\n                }               \n            }\n        }\n    }\n}\n`;\nconst count_block_rays_wgsl_spv = `/*\n// #include \"util.glsl\"\n*/\n\nconst UINT_MAX: u32 = 0xffffffffu;\nconst FLT_MAX: f32 = 3.402823466e+38;\n\nalias float2 = vec2<f32>;\nalias float3 = vec3<f32>;\nalias float4 = vec4<f32>;\nalias uint2 = vec2<u32>;\nalias uint3 = vec3<u32>;\nalias uint4 = vec4<u32>;\n\nstruct VolumeParams {\n  volume_dims: uint4,\n  padded_dims: uint4,\n  volume_scale: float4,\n  max_bits: u32,\n  isovalue: f32,\n  image_width: u32,\n}\n\n@group(0) @binding(0) var<uniform> volume_params : VolumeParams;\n\n@group(0) @binding(1) var<storage, read_write> block_num_rays : array<atomic<u32>>;\n\n@group(0) @binding(2) var<storage, read_write> ray_block_ids : array<u32>;\n\n@group(0) @binding(3) var<storage, read_write> block_compact_offsets : array<u32>;\n\n\n@compute @workgroup_size(32, 1, 1)\nfn main(@builtin(global_invocation_id) g_invocation_id : vec3<u32>) {\n    if (g_invocation_id.x >= volume_params.image_width) {\n        return;\n    }\n\n    let ray_index = g_invocation_id.x + g_invocation_id.y * volume_params.image_width;\n\n    let block_id = ray_block_ids[ray_index];\n    if (block_id == UINT_MAX) {\n        return;\n    }\n\n    // Count this ray for the block\n    let block_index = block_compact_offsets[block_id];\n    atomicAdd(&block_num_rays[block_index], 1u);\n}\n\n`;\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/embedded_shaders.js?");

/***/ }),

/***/ "./src/exclusive_scan.js":
/*!*******************************!*\
  !*** ./src/exclusive_scan.js ***!
  \*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ExclusiveScanPipeline\": () => (/* binding */ ExclusiveScanPipeline),\n/* harmony export */   \"alignTo\": () => (/* binding */ alignTo)\n/* harmony export */ });\n/* harmony import */ var _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./embedded_shaders */ \"./src/embedded_shaders.js\");\n\n\nvar alignTo = function(val, align) {\n    return Math.floor((val + align - 1) / align) * align;\n};\n\n// Serial scan for validation\nvar serialExclusiveScan = function(array, output) {\n    output[0] = 0;\n    for (var i = 1; i < array.length; ++i) {\n        output[i] = array[i - 1] + output[i - 1];\n    }\n    return output[array.length - 1] + array[array.length - 1];\n};\n\nvar ExclusiveScanPipeline = function(device) {\n    this.device = device;\n    // Each thread in a work group is responsible for 2 elements\n    this.workGroupSize = _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize / 2;\n    // The max size which can be scanned by a single batch without carry in/out\n    this.maxScanSize = _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize * _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize;\n    console.log(`Block size: ${_embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize}, max scan size: ${this.maxScanSize}`);\n\n    // Buffer to clear the block sums for each new scan\n    var clearBlocks = device.createBuffer({\n        size: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,\n        mappedAtCreation: true,\n    });\n    new Uint32Array(clearBlocks.getMappedRange()).fill(0);\n    clearBlocks.unmap();\n    this.clearBuf = clearBlocks;\n\n    this.scanBlocksLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n\n    this.scanBlockResultsLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n\n    this.scanBlocksPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [this.scanBlocksLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.prefix_sum_comp_spv}),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.scanBlockResultsPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [this.scanBlockResultsLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.block_prefix_sum_comp_spv}),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.addBlockSumsPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [this.scanBlocksLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.add_block_sums_comp_spv}),\n            entryPoint: \"main\",\n        },\n    });\n};\n\nExclusiveScanPipeline.prototype.getAlignedSize = function(size) {\n    return alignTo(size, _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize);\n};\n\n// TODO: refactor to have this return a prepared scanner object?\n// Then the pipelines and bind group layouts can be re-used and shared between the scanners\nExclusiveScanPipeline.prototype.prepareInput = function(cpuArray) {\n    var alignedSize = alignTo(cpuArray.length, _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize);\n\n    // Upload input and pad to block size elements\n    var inputBuf = this.device.createBuffer({\n        size: alignedSize * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n        mappedAtCreation: true,\n    });\n    new Uint32Array(inputBuf.getMappedRange()).set(cpuArray);\n    inputBuf.unmap();\n\n    return new ExclusiveScanner(this, inputBuf, alignedSize, cpuArray.length);\n};\n\nExclusiveScanPipeline.prototype.prepareGPUInput = function(gpuBuffer, alignedSize) {\n    if (this.getAlignedSize(alignedSize) != alignedSize) {\n        alert(\"Error: GPU input must be aligned to getAlignedSize\");\n    }\n\n    return new ExclusiveScanner(this, gpuBuffer, alignedSize);\n};\n\nvar ExclusiveScanner = function(scanPipeline, gpuBuffer, alignedSize) {\n    this.scanPipeline = scanPipeline;\n    this.inputSize = alignedSize;\n    this.inputBuf = gpuBuffer;\n\n    this.readbackBuf = scanPipeline.device.createBuffer({\n        size: 4,\n        usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,\n    });\n\n    // Block sum buffer\n    var blockSumBuf = scanPipeline.device.createBuffer({\n        size: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n        mappedAtCreation: true,\n    });\n    new Uint32Array(blockSumBuf.getMappedRange()).fill(0);\n    blockSumBuf.unmap();\n    this.blockSumBuf = blockSumBuf;\n\n    var carryBuf = scanPipeline.device.createBuffer({\n        size: 8,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n        mappedAtCreation: true,\n    });\n    new Uint32Array(carryBuf.getMappedRange()).fill(0);\n    carryBuf.unmap();\n    this.carryBuf = carryBuf;\n\n    // Can't copy from a buffer to itself so we need an intermediate to move the carry\n    this.carryIntermediateBuf = scanPipeline.device.createBuffer({\n        size: 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n    });\n\n    this.scanBlockResultsBindGroup = scanPipeline.device.createBindGroup({\n        layout: this.scanPipeline.scanBlockResultsLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: blockSumBuf,\n                },\n            },\n            {\n                binding: 1,\n                resource: {\n                    buffer: carryBuf,\n                },\n            },\n        ],\n    });\n};\n\nExclusiveScanner.prototype.scan = async function(dataSize) {\n    // If the data size we're scanning within the larger input array has changed,\n    // we just need to re-record the scan commands\n    var numChunks = Math.ceil(dataSize / this.scanPipeline.maxScanSize);\n    this.offsets = new Uint32Array(numChunks);\n    for (var i = 0; i < numChunks; ++i) {\n        this.offsets.set([i * this.scanPipeline.maxScanSize * 4], i);\n    }\n\n    // Scan through the data in chunks, updating carry in/out at the end to carry\n    // over the results of the previous chunks\n    var commandEncoder = this.scanPipeline.device.createCommandEncoder();\n\n    // Clear the carry buffer and the readback sum entry if it's not scan size aligned\n    commandEncoder.copyBufferToBuffer(this.scanPipeline.clearBuf, 0, this.carryBuf, 0, 8);\n    for (var i = 0; i < numChunks; ++i) {\n        var nWorkGroups =\n            Math.min((this.inputSize - i * this.scanPipeline.maxScanSize) / _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize,\n                     _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize);\n\n        var scanBlockBG = null;\n        if (nWorkGroups === _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize) {\n            scanBlockBG = this.scanPipeline.device.createBindGroup({\n                layout: this.scanPipeline.scanBlocksLayout,\n                entries: [\n                    {\n                        binding: 0,\n                        resource: {\n                            buffer: this.inputBuf,\n                            size: Math.min(this.scanPipeline.maxScanSize, this.inputSize) * 4,\n                            offset: this.offsets[i],\n                        },\n                    },\n                    {\n                        binding: 1,\n                        resource: {\n                            buffer: this.blockSumBuf,\n                        },\n                    },\n                ],\n            });\n        } else {\n            // Bind groups for processing the remainder if the aligned size isn't\n            // an even multiple of the max scan size\n            scanBlockBG = this.scanPipeline.device.createBindGroup({\n                layout: this.scanPipeline.scanBlocksLayout,\n                entries: [\n                    {\n                        binding: 0,\n                        resource: {\n                            buffer: this.inputBuf,\n                            size: (this.inputSize % this.scanPipeline.maxScanSize) * 4,\n                            offset: this.offsets[i],\n                        },\n                    },\n                    {\n                        binding: 1,\n                        resource: {\n                            buffer: this.blockSumBuf,\n                        },\n                    },\n                ],\n            });\n        }\n\n        // Clear the previous block sums\n        commandEncoder.copyBufferToBuffer(\n            this.scanPipeline.clearBuf, 0, this.blockSumBuf, 0, _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.ScanBlockSize * 4);\n\n        var computePass = commandEncoder.beginComputePass();\n\n        computePass.setPipeline(this.scanPipeline.scanBlocksPipeline);\n        computePass.setBindGroup(0, scanBlockBG);\n        computePass.dispatchWorkgroups(nWorkGroups, 1, 1);\n\n        computePass.setPipeline(this.scanPipeline.scanBlockResultsPipeline);\n        computePass.setBindGroup(0, this.scanBlockResultsBindGroup);\n        computePass.dispatchWorkgroups(1, 1, 1);\n\n        computePass.setPipeline(this.scanPipeline.addBlockSumsPipeline);\n        computePass.setBindGroup(0, scanBlockBG);\n        computePass.dispatchWorkgroups(nWorkGroups, 1, 1);\n\n        computePass.end();\n\n        // Update the carry in value for the next chunk, copy carry out to carry in\n        commandEncoder.copyBufferToBuffer(this.carryBuf, 4, this.carryIntermediateBuf, 0, 4);\n        commandEncoder.copyBufferToBuffer(this.carryIntermediateBuf, 0, this.carryBuf, 0, 4);\n    }\n    var commandBuffer = commandEncoder.finish();\n\n    // We need to clear a different element in the input buf for the last item if the data size\n    // shrinks\n    if (dataSize < this.inputSize) {\n        var commandEncoder = this.scanPipeline.device.createCommandEncoder();\n        commandEncoder.copyBufferToBuffer(\n            this.scanPipeline.clearBuf, 0, this.inputBuf, dataSize * 4, 4);\n        this.scanPipeline.device.queue.submit([commandEncoder.finish()]);\n    }\n\n    this.scanPipeline.device.queue.submit([commandBuffer]);\n\n    // Readback the the last element to return the total sum as well\n    var commandEncoder = this.scanPipeline.device.createCommandEncoder();\n    if (dataSize < this.inputSize) {\n        commandEncoder.copyBufferToBuffer(this.inputBuf, dataSize * 4, this.readbackBuf, 0, 4);\n    } else {\n        commandEncoder.copyBufferToBuffer(this.carryBuf, 4, this.readbackBuf, 0, 4);\n    }\n    this.scanPipeline.device.queue.submit([commandEncoder.finish()]);\n\n    await this.readbackBuf.mapAsync(GPUMapMode.READ);\n    var mapping = new Uint32Array(this.readbackBuf.getMappedRange());\n    var sum = mapping[0];\n    this.readbackBuf.unmap();\n\n    return sum;\n};\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/exclusive_scan.js?");

/***/ }),

/***/ "./src/inference_session.js":
/*!**********************************!*\
  !*** ./src/inference_session.js ***!
  \**********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InferenceSessionWGPU\": () => (/* binding */ InferenceSessionWGPU)\n/* harmony export */ });\n/* harmony import */ var jimp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jimp */ \"./node_modules/jimp/browser/lib/jimp.js\");\n/* harmony import */ var jimp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jimp__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! onnxruntime-web/webgpu */ \"./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js\");\n\r\n\r\n\r\nclass InferenceSessionWGPU {\r\n  constructor(width, height) {\r\n    return (async () => {\r\n      this.width = width;\r\n      this.height = height;\r\n      this.inputBuffers = [null, null, null, null];\r\n      this.inputTensors = [null, null, null, null];\r\n      this.outputBuffers = [null, null, null, null, null, null ];\r\n      this.outputTensors = [null, null, null, null, null, null];\r\n\r\n      try {\r\n        this.session = await onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_1__.InferenceSession.create(`./noof${width}-ultraminiv12.onnx`,{\r\n          executionProviders: ['webgpu'], preferredOutputLocation: \"gpu-buffer\"\r\n        });\r\n        this.device = onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_1__.env.webgpu.device;\r\n      } catch (e) {\r\n          console.log(e);\r\n          alert(\"Unable to create inference session!\");\r\n      }\r\n      \r\n      this.inputBuffers[0] = this.device.createBuffer({\r\n        label: `InferenceSessionWGPU.inputBuffer0`,\r\n        size: this.width * this.height * 3 * 4,\r\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,\r\n      });\r\n      this.inputTensors[0] = onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_1__.Tensor.fromGpuBuffer(this.inputBuffers[0], {\r\n        dataType: 'float32',\r\n        dims: [1, 3, this.height, this.width]\r\n      });\r\n      this.outputBuffers[0] = this.device.createBuffer({\r\n        label: `InferenceSessionWGPU.outputBuffer0`,\r\n        size: this.width * this.height * 3 * 4,\r\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\r\n      });\r\n      this.outputTensors[0] = onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_1__.Tensor.fromGpuBuffer(this.outputBuffers[0], {\r\n        dataType: 'float32',\r\n        dims: [1, 3, this.height, this.width]\r\n      });\r\n      this.outputBuffers[1] = this.device.createBuffer({\r\n        label: `InferenceSessionWGPU.outputBuffer1`,\r\n        size: this.width * this.height * 3 * 4,\r\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\r\n      });\r\n      this.outputTensors[1] = onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_1__.Tensor.fromGpuBuffer(this.outputBuffers[1], {\r\n        dataType: 'float32',\r\n        dims: [1, 3, this.height, this.width]\r\n      });\r\n\r\n\r\n      this.architecture = [4, 8, 16, 32];\r\n      for (var i = 0; i < this.inputBuffers.length - 1; i++) {\r\n        var w = this.width / 2**i;\r\n        var h = this.height / 2**i;\r\n        this.inputBuffers[this.inputBuffers.length - 1 - i] = this.device.createBuffer({\r\n          label: `InferenceSessionWGPU.inputBuffer${this.inputBuffers.length - 1 - i}`,\r\n          size: this.architecture[i] * w * h * 4,\r\n          usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\r\n        }); \r\n        this.inputTensors[this.inputBuffers.length - 1 - i] = onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_1__.Tensor.fromGpuBuffer(\r\n          this.inputBuffers[this.inputBuffers.length - 1 - i], \r\n          {\r\n            dataType: 'float32',\r\n            dims: [1, this.architecture[i], h, w]\r\n          }          \r\n        );\r\n      }\r\n      console.log(this.inputTensors);\r\n\r\n      for (var i = 0; i < this.outputBuffers.length - 2; i++) {\r\n        var w = this.width / 2**i;\r\n        var h = this.height / 2**i;\r\n        this.outputBuffers[this.outputBuffers.length - 1 - i] = this.device.createBuffer({\r\n          label: `InferenceSessionWGPU.outputBuffer${this.outputBuffers.length - 1 - i}`,\r\n          size: this.architecture[i] * w * h * 4,\r\n          usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\r\n        }); \r\n        this.outputTensors[this.outputBuffers.length - 1 - i] = onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_1__.Tensor.fromGpuBuffer(\r\n          this.outputBuffers[this.outputBuffers.length - 1 - i], \r\n          {\r\n            dataType: 'float32',\r\n            dims: [1, this.architecture[i], h, w]\r\n          }          \r\n        );\r\n      }\r\n      console.log(this.outputTensors);\r\n      return this;\r\n    })();\r\n  }\r\n\r\n  async release() {\r\n    for (var i = 0; i < this.inputBuffers.length; i++) {\r\n      this.inputBuffers[i].destroy();\r\n    }\r\n    for (var i = 0; i < this.outputBuffers.length; i++) {\r\n      this.outputBuffers[i].destroy();\r\n    }\r\n    await this.session.release();\r\n  }\r\n\r\n  cleanRecurrentState() {\r\n    for (var i = 0; i < this.inputBuffers.length - 1; i++) {\r\n      this.inputBuffers[this.inputBuffers.length - 1 - i].destroy();\r\n      var w = this.width / 2**i;\r\n      var h = this.height / 2**i;\r\n      this.inputBuffers[this.inputBuffers.length - 1 - i] = this.device.createBuffer({\r\n        label: `InferenceSessionWGPU.inputBuffer${this.inputBuffers.length - 1 - i}`,\r\n        size: this.architecture[i] * w * h * 4,\r\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\r\n      }); \r\n      this.inputTensors[this.inputBuffers.length - 1 - i] = onnxruntime_web_webgpu__WEBPACK_IMPORTED_MODULE_1__.Tensor.fromGpuBuffer(\r\n        this.inputBuffers[this.inputBuffers.length - 1 - i], \r\n        {\r\n          dataType: 'float32',\r\n          dims: [1, this.architecture[i], h, w]\r\n        }          \r\n      );\r\n    }\r\n  }\r\n\r\n  async runInference() {\r\n    // create feeds with the input name from model export and the tensors\r\n    const feeds = {};\r\n    for (var i = 0; i < this.inputBuffers.length; i++) {\r\n      feeds[this.session.inputNames[i]] = this.inputTensors[i];\r\n    }\r\n    const fetches = {};\r\n    for (var i = 0; i < this.outputBuffers.length; i++) {\r\n      fetches[this.session.outputNames[i]] = this.outputTensors[i];\r\n    }\r\n    const start = performance.now();  \r\n    await this.session.run(feeds, fetches);\r\n\r\n    // var readInput = this.device.createBuffer({\r\n    //     size: this.outputBuffers[4].size,\r\n    //     usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST\r\n    // });\r\n    // var commandEncoder = this.device.createCommandEncoder();\r\n    // commandEncoder.copyBufferToBuffer(\r\n    //     this.outputBuffers[4], 0, readInput, 0,\r\n    //     readInput.size);\r\n    // this.device.queue.submit([commandEncoder.finish()]);\r\n    // await this.device.queue.onSubmittedWorkDone();\r\n    // await readInput.mapAsync(GPUMapMode.READ);\r\n    // var test = new Float32Array(readInput.getMappedRange());\r\n    // console.log(test);\r\n    // for (var i = 0; i < test.length; i++) {\r\n    //   if (test[i] != 0) {\r\n    //     console.log(i);\r\n    //   }\r\n    // }\r\n\r\n    // copy recurrent state back into input\r\n    var commandEncoder = this.device.createCommandEncoder();\r\n    for (var i = 1; i < this.inputBuffers.length; i++) {\r\n      commandEncoder.copyBufferToBuffer(\r\n        this.outputBuffers[i + 2], 0, this.inputBuffers[i], 0, this.outputBuffers[i + 2].size\r\n      );\r\n    }\r\n    this.device.queue.submit([commandEncoder.finish()]);\r\n    await this.device.queue.onSubmittedWorkDone();\r\n    const end = performance.now();\r\n\r\n    const inferenceTime = Math.round(end - start);\r\n    return inferenceTime;\r\n  }\r\n  \r\n};\r\n\r\n\r\n \n\n//# sourceURL=webpack://webgpu-prog-iso/./src/inference_session.js?");

/***/ }),

/***/ "./src/lru_cache.js":
/*!**************************!*\
  !*** ./src/lru_cache.js ***!
  \**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LRUCache\": () => (/* binding */ LRUCache)\n/* harmony export */ });\n/* harmony import */ var _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./embedded_shaders */ \"./src/embedded_shaders.js\");\n/* harmony import */ var _exclusive_scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./exclusive_scan */ \"./src/exclusive_scan.js\");\n/* harmony import */ var _radix_sort_by_key__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./radix_sort_by_key */ \"./src/radix_sort_by_key.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./src/util.js\");\n// Create the LRU cache and set an initial size for the cache\n// If more data is requested to store in the cache than it can fit, it will\n// be grown to accomadate it\n\n\n\n\n\nvar LRUCache = function (\n    device, scanPipeline, streamCompact, initialSize, elementSize, totalElements) {\n    this.device = device;\n    this.scanPipeline = scanPipeline;\n    this.streamCompact = streamCompact;\n\n    this.totalElements = totalElements;\n\n    // Round up to the local size of 32 for the cache processing kernels\n    this.alignedTotalElements = (0,_exclusive_scan__WEBPACK_IMPORTED_MODULE_1__.alignTo)(totalElements, 32);\n    this.cacheSize = (0,_exclusive_scan__WEBPACK_IMPORTED_MODULE_1__.alignTo)(initialSize, 32);\n    this.elementSize = elementSize;\n    this.numNewItems = 0;\n    this.maxDispatchSize = device.limits.maxComputeWorkgroupsPerDimension;\n\n    this.sorter = new _radix_sort_by_key__WEBPACK_IMPORTED_MODULE_2__.RadixSorter(this.device);\n\n    // For each element, track if it's in the cache, and if so where\n    var buf = this.device.createBuffer({\n        size: this.alignedTotalElements * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n        mappedAtCreation: true,\n    });\n    new Int32Array(buf.getMappedRange()).fill(-1);\n    buf.unmap();\n    this.cachedItemSlots = buf;\n\n    // For each element, if it needs to be added to the cache. This buffer\n    // will be 1/0 per total element which could be cached so we can see\n    // how many need to be added\n    var buf = this.device.createBuffer({\n        size: this.alignedTotalElements * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,\n        mappedAtCreation: true,\n    });\n    new Uint32Array(buf.getMappedRange()).fill(0);\n    buf.unmap();\n    this.needsCaching = buf;\n\n    this.needsCachingOffsets = this.device.createBuffer({\n        size: this.scanPipeline.getAlignedSize(this.alignedTotalElements) * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n\n    // The age of each slot\n    var buf = this.device.createBuffer({\n        size: this.cacheSize * 4 * 3,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n        mappedAtCreation: true,\n    });\n    var m = new Int32Array(buf.getMappedRange());\n    for (var i = 0; i < this.cacheSize; ++i) {\n        m[i * 3] = 2 + i;   // For slot age\n        m[i * 3 + 1] = 1;   // For slot availability\n        m[i * 3 + 2] = -1;  // For slot ID\n    }\n    buf.unmap();\n    this.slotData = buf;\n\n    this.slotAvailableOffsets = this.device.createBuffer({\n        size: this.scanPipeline.getAlignedSize(this.cacheSize) * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n    });\n\n    // A temp buffer to hold the available slot IDs for compaction\n    this.slotAvailableForCompact = this.device.createBuffer({\n        size: this.cacheSize * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n    });\n\n    this.slotAvailableIDs = this.device.createBuffer({\n        size: this.cacheSize * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n    });\n\n    // Buffer used to pass the previous cache size to lru_cache_init.comp\n    this.cacheSizeBuf = this.device.createBuffer({\n        size: 4,\n        usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n    });\n\n    // The actual cached data\n    this.cache = this.device.createBuffer({\n        size: this.cacheSize * elementSize,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n\n    this.scanNeededSlots = this.scanPipeline.prepareGPUInput(\n        this.needsCachingOffsets, this.scanPipeline.getAlignedSize(this.totalElements));\n\n    this.slotAvailableScanner = this.scanPipeline.prepareGPUInput(\n        this.slotAvailableOffsets, this.scanPipeline.getAlignedSize(this.cacheSize));\n\n    this.lruCacheBGLayout = this.device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n\n    this.lruCacheBG = this.device.createBindGroup({\n        layout: this.lruCacheBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: this.cachedItemSlots,\n                },\n            },\n            {\n                binding: 1,\n                resource: {\n                    buffer: this.slotAvailableIDs,\n                },\n            },\n            {\n                binding: 2,\n                resource: {\n                    buffer: this.slotData,\n                },\n            },\n        ],\n    });\n\n    this.markNewItemsBGLayout = this.device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"read-only-storage\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n\n    this.cacheUpdateBGLayout = this.device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n\n    this.singleUniformBGLayout = this.device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n        ],\n    });\n    this.cacheInitBG = this.device.createBindGroup({\n        layout: this.singleUniformBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: this.cacheSizeBuf,\n                },\n            },\n        ],\n    });\n\n    this.pushConstantsBGLayout = this.device.createBindGroupLayout({\n        entries: [{\n            binding: 0,\n            visibility: GPUShaderStage.COMPUTE,\n            buffer: {\n                hasDynamicOffset: true,\n                type: \"uniform\",\n            }\n        }]\n    });\n\n    this.ageCacheSlotsPipeline = this.device.createComputePipeline({\n        layout: this.device.createPipelineLayout({\n            bindGroupLayouts: [this.lruCacheBGLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.lru_cache_age_slots_comp_spv}),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.markNewItemsPipeline = this.device.createComputePipeline({\n        layout: this.device.createPipelineLayout({\n            bindGroupLayouts:\n                [this.lruCacheBGLayout, this.markNewItemsBGLayout, this.pushConstantsBGLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.lru_cache_mark_new_items_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.cacheInitPipeline = this.device.createComputePipeline({\n        layout: this.device.createPipelineLayout({\n            bindGroupLayouts: [this.lruCacheBGLayout, this.singleUniformBGLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.lru_cache_init_comp_spv}),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.cacheUpdatePipeline = this.device.createComputePipeline({\n        layout: this.device.createPipelineLayout({\n            // The last BG layout passes the number of new items\n            bindGroupLayouts:\n                [this.lruCacheBGLayout, this.cacheUpdateBGLayout, this.singleUniformBGLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.lru_cache_update_comp_spv}),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.copyAvailableSlotAgePipeline = this.device.createComputePipeline({\n        layout: this.device.createPipelineLayout({\n            bindGroupLayouts:\n                [this.lruCacheBGLayout, this.cacheUpdateBGLayout, this.singleUniformBGLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.lru_copy_available_slot_age_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.outputSlotAvailableBG = this.device.createBindGroup({\n        layout: this.cacheUpdateBGLayout,\n        entries: [{\n            binding: 0,\n            resource: {\n                buffer: this.slotAvailableOffsets,\n            }\n        }]\n    });\n\n    this.outputSlotAvailableForCompact = this.device.createBindGroup({\n        layout: this.cacheUpdateBGLayout,\n        entries: [{\n            binding: 0,\n            resource: {\n                buffer: this.slotAvailableForCompact,\n            }\n        }]\n    });\n\n    this.extractSlotAvailablePipeline = this.device.createComputePipeline({\n        layout: this.device.createPipelineLayout({\n            bindGroupLayouts: [this.lruCacheBGLayout, this.cacheUpdateBGLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.lru_cache_extract_slot_available_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n};\n\n// Update the cache based on the externally updated \"needsCaching\" list\n// Items which need to stay in the cache should be marked as needs caching,\n// regardless of whether they are currently cached.\n// Returns the number of new items which need to be decompressed\n// and their IDs\nLRUCache.prototype.update = async function (itemNeeded, perfTracker) {\n    if (!(itemNeeded instanceof GPUBuffer)) {\n        alert(\"itemNeeded info must be a GPUbuffer\");\n    }\n    perfTracker[\"lru\"] = {};\n\n    var markNewItemsBG = this.device.createBindGroup({\n        layout: this.markNewItemsBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: itemNeeded,\n                },\n            },\n            {\n                binding: 1,\n                resource: {\n                    buffer: this.needsCaching,\n                },\n            },\n        ],\n    });\n\n    // Update the old cache size UBO so we know where to start initializing the data\n    var uploadBuf = this.device.createBuffer({\n        size: 4,\n        usage: GPUBufferUsage.COPY_SRC,\n        mappedAtCreation: true,\n    });\n    new Uint32Array(uploadBuf.getMappedRange()).set([this.cacheSize]);\n    uploadBuf.unmap();\n\n    var start = performance.now();\n    // Pass through the needs caching buffer to see which items need caching\n    // and are in the cache to unmark them, and which items no longer need\n    // caching but are in the cache with age > 2 to mark their slot available.\n    var commandEncoder = this.device.createCommandEncoder();\n    commandEncoder.copyBufferToBuffer(uploadBuf, 0, this.cacheSizeBuf, 0, 4);\n\n    var pass = commandEncoder.beginComputePass();\n\n    /*\n    console.log(`LRU: cacheSize = ${this.cacheSize}, totalElements = ${\n        this.totalElements}, aligned total = ${this.alignedTotalElements}`);\n        */\n\n    // Age all slots in the cache\n    pass.setPipeline(this.ageCacheSlotsPipeline);\n    pass.setBindGroup(0, this.lruCacheBG);\n    pass.dispatchWorkgroups(this.cacheSize / 64, 1, 1);\n\n    // For testing purposes\n    /*\n    pass.end();\n    var start = performance.now();\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n    var end = performance.now();\n    console.log(`LRU: Age cache slots took ${end - start}ms`);\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass();\n    */\n\n    {\n        var totalWorkGroups = this.alignedTotalElements / 32;\n        var pushConstants = (0,_util__WEBPACK_IMPORTED_MODULE_3__.buildPushConstantsBuffer)(this.device, totalWorkGroups);\n        var pushConstantsBG = this.device.createBindGroup({\n            layout: this.pushConstantsBGLayout,\n            entries: [{\n                binding: 0,\n                resource: {\n                    buffer: pushConstants.gpuBuffer,\n                    size: 8,\n                }\n            }]\n        });\n\n        pass.setPipeline(this.markNewItemsPipeline);\n        pass.setBindGroup(0, this.lruCacheBG);\n        pass.setBindGroup(1, markNewItemsBG);\n        for (var i = 0; i < pushConstants.nOffsets; ++i) {\n            pass.setBindGroup(2, pushConstantsBG, pushConstants.dynamicOffsets, i, 1);\n            pass.dispatchWorkgroups(pushConstants.dispatchSizes[i], 1, 1);\n        }\n    }\n    // For testing purposes\n    /*\n    pass.end();\n    this.device.queue.submit([commandEncoder.finish()]);\n    var start = performance.now();\n    await this.device.queue.onSubmittedWorkDone();\n    var end = performance.now();\n    console.log(`LRU: Mark new items took ${end - start}ms`);\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass();\n    pass.setBindGroup(0, this.lruCacheBG);\n    */\n\n    // We need a kernel to copy the slotAvailable member out of the structs instead of using\n    // copyBufferToBuffer, since it's stored AoS to reduce our buffer use\n    pass.setPipeline(this.extractSlotAvailablePipeline);\n    pass.setBindGroup(1, this.outputSlotAvailableBG);\n    pass.dispatchWorkgroups(this.cacheSize / 64, 1, 1);\n\n    pass.end();\n    commandEncoder.copyBufferToBuffer(\n        this.needsCaching, 0, this.needsCachingOffsets, 0, this.totalElements * 4);\n\n    this.device.queue.submit([commandEncoder.finish()]);\n    // var start = performance.now()\n    await this.device.queue.onSubmittedWorkDone();\n    var end = performance.now();\n    // console.log(`LRU: Extract slots available took ${end - start}ms`);\n    perfTracker[\"lru\"][\"markNewItems_ms\"] = end - start;\n\n    uploadBuf.destroy();\n\n    // Scan the needsCaching buffer to get a count of which items need caching\n    // and the available slot offset that they'll be assigned\n    // The scan output will need to be written to a separate buffer so I can compact,\n    // or I can just merge the compact of both together (like a multi-compact step)\n    // where we compact both the slot offset assignments and the item for that\n    // new slot together in one step, since the offset to write to in both\n    // arrays is the same (the output of the scan on needsCaching)\n    // This doesn't really need changes to do a multi-compact, because we can just pass\n    // the same compact offset buffer twice\n    var start = performance.now();\n    var numNewItems = await this.scanNeededSlots.scan(this.totalElements);\n    var end = performance.now();\n    // console.log(`LRU: Scan needed slots took ${end - start}ms`);\n    perfTracker[\"lru\"][\"scanNeededSlots_ms\"] = end - start;\n    perfTracker[\"lru\"][\"nNewItems\"] = numNewItems;\n\n    // console.log(`LRU: num new items ${numNewItems}`);\n    if (numNewItems == 0) {\n        return [0, undefined];\n    }\n\n    // Compact the IDs of the elements we need into a list of new elements we'll add\n    var newItemIDs = this.device.createBuffer({\n        size: numNewItems * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,\n    });\n\n    var start = performance.now();\n    await this.streamCompact.compactActiveIDs(\n        this.totalElements, this.needsCaching, this.needsCachingOffsets, newItemIDs);\n    var end = performance.now();\n    // console.log(`Compact new item ids took ${end - start}ms`);\n    perfTracker[\"lru\"][\"compactNewItems_ms\"] = end - start;\n\n    // Scan the slotAvailable buffer to get a count of the slots we currently\n    // have available, based on the items we can evict from the cache. This scan\n    // should output to the slotAvailableIDs buffer\n    var start = performance.now();\n    var numSlotsAvailable = await this.slotAvailableScanner.scan(this.cacheSize);\n    var end = performance.now();\n    // console.log(`LRU: Scan slots available took ${end - start}ms`);\n    perfTracker[\"lru\"][\"scanSlotsAvailable_ms\"] = end - start;\n    perfTracker[\"lru\"][\"nSlotsAvailable\"] = numSlotsAvailable;\n\n    // If there aren't enough slots to hold the new items we need to cache,\n    // we have to grow the cache: expand ages, slotAvailable, slotAvailableOffsets,\n    // slotAvailableIDs, cache to the new size and copy in the old data.\n    // Then run a pass over the slotAvailable buffer to mark the slots as available\n    if (numSlotsAvailable < numNewItems) {\n        var startGrow = performance.now();\n\n        // We don't need to preserve these buffer's contents so release them first to free\n        // space\n        this.slotAvailableIDs.destroy();\n        this.slotAvailableOffsets.destroy();\n        this.slotAvailableForCompact.destroy();\n\n        var newSize =\n            Math.min(this.cacheSize + Math.ceil((numNewItems - numSlotsAvailable) * 1.5),\n                this.totalElements);\n        newSize = (0,_exclusive_scan__WEBPACK_IMPORTED_MODULE_1__.alignTo)(newSize, 64);\n\n        var slotData = this.device.createBuffer({\n            size: newSize * 4 * 3,\n            usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n        });\n        var cache = this.device.createBuffer({\n            size: newSize * this.elementSize,\n            usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n        });\n\n        this.slotAvailableForCompact = this.device.createBuffer({\n            size: newSize * 4,\n            usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n        });\n\n        this.slotAvailableIDs = this.device.createBuffer({\n            size: newSize * 4,\n            usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n        });\n\n        // Update the bindgroups\n        this.lruCacheBG = this.device.createBindGroup({\n            layout: this.lruCacheBGLayout,\n            entries: [\n                {\n                    binding: 0,\n                    resource: {\n                        buffer: this.cachedItemSlots,\n                    },\n                },\n                {\n                    binding: 1,\n                    resource: {\n                        buffer: this.slotAvailableIDs,\n                    },\n                },\n                {\n                    binding: 2,\n                    resource: {\n                        buffer: slotData,\n                    },\n                },\n            ],\n        });\n\n        this.outputSlotAvailableForCompact = this.device.createBindGroup({\n            layout: this.cacheUpdateBGLayout,\n            entries: [{\n                binding: 0,\n                resource: {\n                    buffer: this.slotAvailableForCompact,\n                }\n            }]\n        });\n\n        var commandEncoder = this.device.createCommandEncoder();\n\n        // Initialize the new parts of the buffers\n        var pass = commandEncoder.beginComputePass();\n        pass.setPipeline(this.cacheInitPipeline);\n        pass.setBindGroup(0, this.lruCacheBG);\n        pass.setBindGroup(1, this.cacheInitBG);\n        // Probably needs to chunk for very large volumes\n        pass.dispatchWorkgroups((newSize - this.cacheSize) / 64, 1, 1);\n        pass.end();\n\n        // Copy in the old contents of the buffers to the new ones\n        commandEncoder.copyBufferToBuffer(\n            this.slotData, 0, slotData, 0, this.cacheSize * 4 * 3);\n        commandEncoder.copyBufferToBuffer(\n            this.cache, 0, cache, 0, this.cacheSize * this.elementSize);\n\n        this.device.queue.submit([commandEncoder.finish()]);\n        await this.device.queue.onSubmittedWorkDone();\n\n        this.slotData.destroy();\n        this.slotData = slotData;\n\n        this.cache.destroy();\n        this.cache = cache;\n\n        // Update the slot available offsets data and re-scan it to compute for our larger\n        // cache size\n        this.slotAvailableOffsets = this.device.createBuffer({\n            size: this.scanPipeline.getAlignedSize(newSize) * 4,\n            usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n        });\n\n        this.outputSlotAvailableBG = this.device.createBindGroup({\n            layout: this.cacheUpdateBGLayout,\n            entries: [{\n                binding: 0,\n                resource: {\n                    buffer: this.slotAvailableOffsets,\n                }\n            }]\n        });\n\n        var commandEncoder = this.device.createCommandEncoder();\n\n        var pass = commandEncoder.beginComputePass()\n        // We need a kernel to copy the slotAvailable member out of the structs instead of\n        // using copyBufferToBuffer, since it's stored AoS to reduce our buffer use\n        pass.setPipeline(this.extractSlotAvailablePipeline);\n        pass.setBindGroup(0, this.lruCacheBG);\n        pass.setBindGroup(1, this.outputSlotAvailableBG);\n        pass.dispatchWorkgroups(newSize / 64, 1, 1);\n        pass.end();\n\n        this.device.queue.submit([commandEncoder.finish()]);\n\n        // Update available slot IDs w/ a new scan result\n        this.slotAvailableScanner = this.scanPipeline.prepareGPUInput(\n            this.slotAvailableOffsets, this.scanPipeline.getAlignedSize(newSize));\n\n        await this.device.queue.onSubmittedWorkDone();\n        var end = performance.now();\n        // console.log(`cache resize took ${end - startGrow}ms`);\n\n        var start = performance.now();\n        numSlotsAvailable = await this.slotAvailableScanner.scan(newSize);\n        var end = performance.now();\n        // console.log(`LRU: Resize and scan new cache took ${end - startGrow}ms`);\n\n        perfTracker[\"lru\"][\"growCache_ms\"] = end - startGrow;\n        this.cacheSize = newSize;\n    }\n    this.displayNumSlotsAvailable = numSlotsAvailable - numNewItems;\n\n    // Compact the slot IDs to get the slots we'll assign to the new\n    // data which needs to be cached, and fill those out in the cached item slots\n    // For the items which are evicted from the cache by assigning their slot\n    // to another item, we have to mark that they're no longer cached\n    var start = performance.now();\n\n    // We need a kernel to copy the slotAvailable member out of the structs into a temp array\n    // for use by stream compact. Not as great for perf, but a bit lazy here ideally we can\n    // undo this buffer use reduction once the limits API is added.\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass()\n    pass.setPipeline(this.extractSlotAvailablePipeline);\n    pass.setBindGroup(0, this.lruCacheBG);\n    pass.setBindGroup(1, this.outputSlotAvailableForCompact);\n    // Probably needs to chunk for very large volumes\n    pass.dispatchWorkgroups(this.cacheSize / 64, 1, 1);\n    pass.end();\n    this.device.queue.submit([commandEncoder.finish()]);\n    // I don't think we need an await here since it's all on the same queue\n    // await this.device.queue.onSubmittedWorkDone();\n\n    await this.streamCompact.compactActiveIDs(this.cacheSize,\n        this.slotAvailableForCompact,\n        this.slotAvailableOffsets,\n        this.slotAvailableIDs);\n    var end = performance.now();\n    // console.log(`LRU: Compact available slot IDs took ${end - start}ms`);\n    perfTracker[\"lru\"][\"compactAvailableSlots_ms\"] = end - start;\n\n    var start = performance.now();\n    // Sort the available slots by their age\n    var slotKeys = this.device.createBuffer({\n        size: this.sorter.getAlignedSize(numSlotsAvailable) * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n    var sortedIDs = this.device.createBuffer({\n        size: this.sorter.getAlignedSize(numSlotsAvailable) * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n\n    var outputAgeBG = this.device.createBindGroup({\n        layout: this.cacheUpdateBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: slotKeys,\n                },\n            },\n        ],\n    });\n\n    var numSlotsAvailableBuf = this.device.createBuffer(\n        {size: 4, usage: GPUBufferUsage.UNIFORM, mappedAtCreation: true});\n    {\n        var uploadArray = new Uint32Array(numSlotsAvailableBuf.getMappedRange());\n        uploadArray[0] = numSlotsAvailable;\n        numSlotsAvailableBuf.unmap();\n    }\n\n    var outputAgeBGSize = this.device.createBindGroup({\n        layout: this.singleUniformBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: numSlotsAvailableBuf,\n                },\n            },\n        ],\n    });\n\n    // Note: Bit of trick/hack, we only sort the number of entries we need since the\n    // sort implementation needs improvement. This helps the LRU cache update cost\n    // scale with the number of new items instead of the cache size, at the cost of making\n    // it not quite guaranteed that the oldest items are always evicted first.\n    var numItemsToSort = numNewItems;\n    // console.log(`LRU: numNewItems = ${numNewItems}, numSlotsAvailable =\n    // ${numSlotsAvailable}`);\n    var commandEncoder = this.device.createCommandEncoder();\n    commandEncoder.copyBufferToBuffer(\n        this.slotAvailableIDs, 0, sortedIDs, 0, numSlotsAvailable * 4);\n    // Run pass to copy the slot ages over\n    var pass = commandEncoder.beginComputePass();\n    pass.setPipeline(this.copyAvailableSlotAgePipeline);\n    pass.setBindGroup(0, this.lruCacheBG);\n    pass.setBindGroup(1, outputAgeBG);\n    pass.setBindGroup(2, outputAgeBGSize);\n    pass.dispatchWorkgroups(Math.ceil(numSlotsAvailable / 64), 1, 1);\n    pass.end();\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n    var end = performance.now();\n    // console.log(`LRU: Prep key/value pairs for sort: ${end - start}ms`);\n    perfTracker[\"lru\"][\"prepKeyValue_ms\"] = end - start;\n\n    var start = performance.now();\n    await this.sorter.sort(slotKeys, sortedIDs, numItemsToSort, true);\n    var end = performance.now();\n    // console.log(`LRU: Sorting ${numItemsToSort} ages/slots took ${end - start}ms`);\n    perfTracker[\"lru\"][\"totalSortTime_ms\"] = end - start;\n\n    // Update the bindgroup\n    var sortedSlotsBG = this.device.createBindGroup({\n        layout: this.lruCacheBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: this.cachedItemSlots,\n                },\n            },\n            {\n                binding: 1,\n                resource: {\n                    buffer: sortedIDs,\n                },\n            },\n            {\n                binding: 2,\n                resource: {\n                    buffer: this.slotData,\n                },\n            },\n        ],\n    });\n\n    var cacheUpdateBG = this.device.createBindGroup({\n        layout: this.cacheUpdateBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: newItemIDs,\n                },\n            },\n        ],\n    });\n\n    var numNewItemsBuf = this.device.createBuffer(\n        {size: 4, usage: GPUBufferUsage.UNIFORM, mappedAtCreation: true});\n    {\n        var uploadArray = new Uint32Array(numNewItemsBuf.getMappedRange());\n        uploadArray[0] = numNewItems;\n        numNewItemsBuf.unmap();\n    }\n\n    var numNewItemsBG = this.device.createBindGroup({\n        layout: this.singleUniformBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: numNewItemsBuf,\n                },\n            },\n        ],\n    });\n\n    var start = performance.now();\n    // Update the slot item IDs with the new items which will be stored in the cache\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass();\n    pass.setPipeline(this.cacheUpdatePipeline);\n    pass.setBindGroup(0, sortedSlotsBG);\n    pass.setBindGroup(1, cacheUpdateBG);\n    pass.setBindGroup(2, numNewItemsBG);\n    // TODO: Probably needs to chunk for large volumes\n    pass.dispatchWorkgroups(Math.ceil(numNewItems / 64), 1, 1);\n    pass.end();\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n    var end = performance.now();\n    // console.log(`LRU: Writing new item slots took ${end - start}ms`);\n    perfTracker[\"lru\"][\"writeNewItems_ms\"] = end - start;\n\n    slotKeys.destroy();\n    sortedIDs.destroy();\n\n    // console.log(\"------\");\n    // Return the list of blocks which need to be decompressed into the cache\n    // The location to write them is found in cachedItemSlots[itemID]\n    return [numNewItems, newItemIDs];\n};\n\n// Reset the cache to clear items and force them to be decompressed again for benchmarking\nLRUCache.prototype.reset = async function () {\n    // We just run the same init pipeline used when we grow the cache but\n    // just say the cache size is 0 when we run it to clear the whole thing\n    var uploadBuf = this.device.createBuffer({\n        size: 8,\n        usage: GPUBufferUsage.COPY_SRC,\n        mappedAtCreation: true,\n    });\n    new Uint32Array(uploadBuf.getMappedRange()).set([0, this.cacheSize]);\n    uploadBuf.unmap();\n\n    var commandEncoder = this.device.createCommandEncoder();\n    commandEncoder.copyBufferToBuffer(uploadBuf, 0, this.cacheSizeBuf, 0, 4);\n    var pass = commandEncoder.beginComputePass();\n    pass.setPipeline(this.cacheInitPipeline);\n    pass.setBindGroup(0, this.lruCacheBG);\n    pass.setBindGroup(1, this.cacheInitBG);\n    pass.dispatchWorkgroups(this.cacheSize / 64, 1, 1);\n    pass.end();\n\n    // Also need to clear the cached item slots array, just copy the slot item\n    // ID array over it, which is also filled with -1\n    var buf = this.device.createBuffer({\n        size: this.cacheSize * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n        mappedAtCreation: true,\n    });\n    new Int32Array(buf.getMappedRange()).fill(-1);\n    buf.unmap();\n    var negativeBuffer = buf;\n    var numCopies = Math.ceil(this.totalElements / this.cacheSize);\n    for (var i = 0; i < numCopies; ++i) {\n        var copySize = Math.min(this.totalElements - i * this.cacheSize, this.cacheSize);\n        commandEncoder.copyBufferToBuffer(\n            negativeBuffer, 0, this.cachedItemSlots, i * this.cacheSize * 4, copySize * 4);\n    }\n\n    // Copy back over the original cache size to the cache size buffer\n    commandEncoder.copyBufferToBuffer(uploadBuf, 4, this.cacheSizeBuf, 0, 4);\n\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n\n    uploadBuf.destroy();\n};\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/lru_cache.js?");

/***/ }),

/***/ "./src/radix_sort/sort.js":
/*!********************************!*\
  !*** ./src/radix_sort/sort.js ***!
  \********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GPUSorter\": () => (/* binding */ GPUSorter)\n/* harmony export */ });\n/* harmony import */ var _radix_sort_wgsl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./radix_sort.wgsl */ \"./src/radix_sort/radix_sort.wgsl\");\n/*\n    This file implements a gpu version of radix sort. A good introduction to general purpose radix sort can\n    be found here: http://www.codercorner.com/RadixSortRevisited.htm\n\n    The gpu radix sort implemented here is a re-implementation of the Vulkan radix sort found in the fuchsia repos: https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/src/graphics/lib/compute/radix_sort/\n    Currently only the sorting for 32-bit key-value pairs is implemented\n\n    All shaders can be found in radix_sort.wgsl\n*/\n\n\n// IMPORTANT: the following constants have to be synced with the numbers in radix_sort.wgsl\n\n/// workgroup size of histogram shader\nconst HISTOGRAM_WG_SIZE = 256;\n\n/// one thread operates on 2 prefixes at the same time\nconst PREFIX_WG_SIZE = 1 << 7;\n\n/// scatter compute shader work group size\nconst SCATTER_WG_SIZE = 1 << 8;\n\n/// we sort 8 bits per pass\nconst RS_RADIX_LOG2 = 8;\n\n/// 256 entries into the radix table\nconst RS_RADIX_SIZE = 1 << RS_RADIX_LOG2;\n\n/// number of bytes our keys and values have\nconst RS_KEYVAL_SIZE = 32 / RS_RADIX_LOG2;\n\n/// TODO describe me\nconst RS_HISTOGRAM_BLOCK_ROWS = 15;\n\n/// DO NOT CHANGE, shader assume this!!!\nconst RS_SCATTER_BLOCK_ROWS = RS_HISTOGRAM_BLOCK_ROWS;\n\n/// number of elements scattered by one work group\nconst SCATTER_BLOCK_KVS = HISTOGRAM_WG_SIZE * RS_SCATTER_BLOCK_ROWS;\n\n/// number of elements scattered by one work group\nconst HISTO_BLOCK_KVS = HISTOGRAM_WG_SIZE * RS_HISTOGRAM_BLOCK_ROWS;\n\n/// bytes per value\n/// currently only 4 byte values are allowed\nconst BYTES_PER_PAYLOAD_ELEM = 4;\n\n/// number of passed used for sorting\n/// we sort 8 bits per pass so 4 passes are required for a 32 bit value\nconst NUM_PASSES = BYTES_PER_PAYLOAD_ELEM;\n\nclass GPUSorter {\n    zeroPipeline;\n    histogramPipeline;\n    prefixPipeline;\n    scatterEvenPipeline;\n    scatterOddPipeline;\n    device;\n    bindGroupLayout\n\n    constructor(device, subgroupSize) {\n        this.device = device;\n        let histogram_sg_size = subgroupSize;\n        let rs_sweep_0_size = Math.floor(RS_RADIX_SIZE / histogram_sg_size);\n        let rs_sweep_1_size = Math.floor(rs_sweep_0_size / histogram_sg_size);\n        let rs_sweep_2_size = Math.floor(rs_sweep_1_size / histogram_sg_size);\n        let rs_sweep_size = rs_sweep_0_size + rs_sweep_1_size + rs_sweep_2_size;\n        let _rs_smem_phase_1 = RS_RADIX_SIZE + RS_RADIX_SIZE + rs_sweep_size;\n        let rs_smem_phase_2 = RS_RADIX_SIZE + RS_SCATTER_BLOCK_ROWS * SCATTER_WG_SIZE;\n        // rs_smem_phase_2 will always be larger, so always use phase2\n        let rs_mem_dwords = rs_smem_phase_2;\n        let rs_mem_sweep_0_offset = 0;\n        let rs_mem_sweep_1_offset = rs_mem_sweep_0_offset + rs_sweep_0_size;\n        let rs_mem_sweep_2_offset = rs_mem_sweep_1_offset + rs_sweep_1_size;\n\n        this.bindGroupLayout = this.device.createBindGroupLayout({\n            label: \"radix sort bind group layout\",\n            entries: [\n                {\n                    binding: 0,\n                    visibility: GPUShaderStage.COMPUTE,\n                    buffer: { type: \"storage\" }\n                },\n                {\n                    binding: 1,\n                    visibility: GPUShaderStage.COMPUTE,\n                    buffer: { type: \"storage\" }\n                },\n                {\n                    binding: 2,\n                    visibility: GPUShaderStage.COMPUTE,\n                    buffer: { type: \"storage\" }\n                },\n                {\n                    binding: 3,\n                    visibility: GPUShaderStage.COMPUTE,\n                    buffer: { type: \"storage\" }\n                },\n                {\n                    binding: 4,\n                    visibility: GPUShaderStage.COMPUTE,\n                    buffer: { type: \"storage\" }\n                },\n                {\n                    binding: 5,\n                    visibility: GPUShaderStage.COMPUTE,\n                    buffer: { type: \"storage\" }\n                },\n            ]\n        });\n        const pipelineLayout = this.device.createPipelineLayout({\n            label: \"radix sort pipeline layout\",\n            bindGroupLayouts: [this.bindGroupLayout],\n        });\n        let shader_code = `\n        const histogram_sg_size: u32 = ${histogram_sg_size}u;\n        const histogram_wg_size: u32 = ${HISTOGRAM_WG_SIZE}u;\n        const rs_radix_log2: u32 = ${RS_RADIX_LOG2}u;\n        const rs_radix_size: u32 = ${RS_RADIX_SIZE}u;\n        const rs_keyval_size: u32 = ${RS_KEYVAL_SIZE}u;\n        const rs_histogram_block_rows: u32 = ${RS_HISTOGRAM_BLOCK_ROWS}u;\n        const rs_scatter_block_rows: u32 = ${RS_SCATTER_BLOCK_ROWS}u;\n        const rs_mem_dwords: u32 = ${rs_mem_dwords}u;\n        const rs_mem_sweep_0_offset: u32 = ${rs_mem_sweep_0_offset}u;\n        const rs_mem_sweep_1_offset: u32 = ${rs_mem_sweep_1_offset}u;\n        const rs_mem_sweep_2_offset: u32 = ${rs_mem_sweep_2_offset}u;\n        ${_radix_sort_wgsl__WEBPACK_IMPORTED_MODULE_0__}\n        `;\n        shader_code = shader_code\n            .replace(/{histogram_wg_size}/g, HISTOGRAM_WG_SIZE.toString())\n            .replace(/{prefix_wg_size}/g, PREFIX_WG_SIZE.toString())\n            .replace(/{scatter_wg_size}/g, SCATTER_WG_SIZE.toString());\n        const shader = this.device.createShaderModule({\n            label: \"Radix sort shader\",\n            code: shader_code,\n        });\n\n        this.zeroPipeline = this.device.createComputePipeline({\n            label: \"zero_histograms\",\n            layout: pipelineLayout,\n            compute: {\n                module: shader,\n                entryPoint: \"zero_histograms\"\n            }\n        });\n        this.histogramPipeline = this.device.createComputePipeline({\n            label: \"calculate_histogram\",\n            layout: pipelineLayout,\n            compute: {\n                module: shader,\n                entryPoint: \"calculate_histogram\"\n            }\n        });\n        this.prefixPipeline = this.device.createComputePipeline({\n            label: \"prefix_histogram\",\n            layout: pipelineLayout,\n            compute: {\n                module: shader,\n                entryPoint: \"prefix_histogram\"\n            }\n        });\n        this.scatterEvenPipeline = this.device.createComputePipeline({\n            label: \"scatter_even\",\n            layout: pipelineLayout,\n            compute: {\n                module: shader,\n                entryPoint: \"scatter_even\"\n            }\n        });\n        this.scatterOddPipeline = this.device.createComputePipeline({\n            label: \"scatter_odd\",\n            layout: pipelineLayout,\n            compute: {\n                module: shader,\n                entryPoint: \"scatter_odd\"\n            }\n        });\n    }\n\n    createKeyvalBuffers(length) {\n        // add padding so that our buffer size is a multiple of keys_per_workgroup\n        let count_ru_histo = this.keysBufferSize(length) * RS_KEYVAL_SIZE;\n\n        // creating the two needed buffers for sorting\n        let keys = this.device.createBuffer({\n            label: \"radix sort keys buffer\",\n            size: count_ru_histo * BYTES_PER_PAYLOAD_ELEM,\n            usage: GPUBufferUsage.STORAGE\n                | GPUBufferUsage.COPY_DST\n                | GPUBufferUsage.COPY_SRC,\n        });\n\n        // auxiliary buffer for keys\n        let keys_aux = this.device.createBuffer({\n            label: \"radix sort keys auxiliary buffer\",\n            size: count_ru_histo * BYTES_PER_PAYLOAD_ELEM,\n            usage: GPUBufferUsage.STORAGE,\n        });\n\n        let payload_size = length * BYTES_PER_PAYLOAD_ELEM; // make sure that we have at least 1 byte of data;\n        let payload = this.device.createBuffer({\n            label: \"radix sort payload buffer\",\n            size: payload_size,\n            usage: GPUBufferUsage.STORAGE\n                | GPUBufferUsage.COPY_DST\n                | GPUBufferUsage.COPY_SRC,\n        });\n        // auxiliary buffer for payload/values\n        let payload_aux = this.device.createBuffer({\n            label: \"radix sort payload auxiliary buffer\",\n            size: payload_size,\n            usage: GPUBufferUsage.STORAGE,\n        });\n        return [keys, keys_aux, payload, payload_aux];\n    }\n\n    // calculates and allocates a buffer that is sufficient for holding all needed information for\n    // sorting. This includes the histograms and the temporary scatter buffer\n    // @return: tuple containing [internal memory buffer (should be bound at shader binding 1, count_ru_histo (padded size needed for the keyval buffer)]\n    createInternalMemBuffer(length) {\n        // currently only a few different key bits are supported, maybe has to be extended\n\n        // The \"internal\" memory map looks like this:\n        //   +---------------------------------+ <-- 0\n        //   | histograms[keyval_size]         |\n        //   +---------------------------------+ <-- keyval_size                           * histo_size\n        //   | partitions[scatter_blocks_ru-1] |\n        //   +---------------------------------+ <-- (keyval_size + scatter_blocks_ru - 1) * histo_size\n        //   | workgroup_ids[keyval_size]      |\n        //   +---------------------------------+ <-- (keyval_size + scatter_blocks_ru - 1) * histo_size + workgroup_ids_size\n\n        let s_b_ru = this.scatterBlocksRu(length);\n\n        let histo_size = RS_RADIX_SIZE * 4;\n\n        let internal_size = (RS_KEYVAL_SIZE + s_b_ru) * histo_size; // +1 safety\n\n        let buffer = this.device.createBuffer({\n            label: \"Internal radix sort buffer\",\n            size: internal_size,\n            usage: GPUBufferUsage.STORAGE,\n        });\n        return buffer;\n    }\n\n    createSortBuffers(length) {\n        const [keysA, keysB, payloadA, payloadB] = this.createKeyvalBuffers(length);\n        const internalMemBuffer = this.createInternalMemBuffer(length);\n\n        let uniform_infos = {\n            num_keys: length,\n            padded_size: this.keysBufferSize(length),\n            even_pass: 0,\n            odd_pass: 0,\n        };\n        let uniformBuffer = this.device.createBuffer({\n            label: \"radix sort uniform buffer\",\n            size: 4 * 4,\n            usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n        })\n        const uniformData = new Uint32Array([\n            uniform_infos.num_keys,\n            uniform_infos.padded_size,\n            uniform_infos.even_pass,\n            uniform_infos.odd_pass\n        ]);\n        this.device.queue.writeBuffer(uniformBuffer, 0, uniformData);\n\n        const bindGroup = this.device.createBindGroup({\n            label: \"radix sort bind group\",\n            layout: this.bindGroupLayout,\n            entries: [\n                { binding: 0, resource: { buffer: uniformBuffer } },\n                { binding: 1, resource: { buffer: internalMemBuffer } },\n                { binding: 2, resource: { buffer: keysA } },\n                { binding: 3, resource: { buffer: keysB } },\n                { binding: 4, resource: { buffer: payloadA } },\n                { binding: 5, resource: { buffer: payloadB } },\n            ]\n        });\n\n        return new SortBuffers(keysA, keysB, payloadA, payloadB, internalMemBuffer, uniformBuffer, bindGroup, length);\n    }\n\n    \n    recordCalculateHistogram(commandEncoder, bindGroup, length) {\n        // as we only deal with 32 bit float values always 4 passes are conducted\n        const histBlocksRu = this.histoBlocksRu(length);\n\n        const passEncoder = commandEncoder.beginComputePass({label: \"zeroing histogram\"});\n        passEncoder.setPipeline(this.zeroPipeline);\n        passEncoder.setBindGroup(0, bindGroup);\n        passEncoder.dispatchWorkgroups(histBlocksRu, 1, 1);\n        passEncoder.end();\n\n        const passEncoder2 = commandEncoder.beginComputePass({label: \"calculate histogram\"});\n        passEncoder2.setPipeline(this.histogramPipeline);\n        passEncoder2.setBindGroup(0, bindGroup);\n        passEncoder2.dispatchWorkgroups(histBlocksRu, 1, 1);\n        passEncoder2.end();\n    }\n\n    // There does not exist an indirect histogram dispatch as the number of prefixes is determined by the amount of passes\n    recordPrefixHistogram(commandEncoder, bindGroup) {\n        const passEncoder = commandEncoder.beginComputePass({label: \"prefix histogram\"});\n        passEncoder.setPipeline(this.prefixPipeline);\n        passEncoder.setBindGroup(0, bindGroup);\n        passEncoder.dispatchWorkgroups(NUM_PASSES, 1, 1);\n        passEncoder.end();\n    }\n\n    recordScatterKeys(commandEncoder, bindGroup, length) {\n        const scatterBlocksRu = this.scatterBlocksRu(length);\n\n        const passEncoder = commandEncoder.beginComputePass({label: \"Scatter keyvals\"});\n        passEncoder.setBindGroup(0, bindGroup);\n\n        passEncoder.setPipeline(this.scatterEvenPipeline);\n        passEncoder.dispatchWorkgroups(scatterBlocksRu, 1, 1);\n\n        passEncoder.setPipeline(this.scatterOddPipeline);\n        passEncoder.dispatchWorkgroups(scatterBlocksRu, 1, 1);\n\n        passEncoder.setPipeline(this.scatterEvenPipeline);\n        passEncoder.dispatchWorkgroups(scatterBlocksRu, 1, 1);\n\n        passEncoder.setPipeline(this.scatterOddPipeline);\n        passEncoder.dispatchWorkgroups(scatterBlocksRu, 1, 1);\n\n        passEncoder.end();\n    }\n\n    /// Writes sort commands to command encoder.\n    /// If sort_first_n is not none one the first n elements are sorted\n    /// otherwise everything is sorted.\n    ///\n    /// **IMPORTANT**: if less than the whole buffer is sorted the rest of the keys buffer will be be corrupted\n    sort(commandEncoder, queue, sortBuffers, sortFirstN=null) {\n        const numElements = sortFirstN ?? sortBuffers.length;\n\n        // Update state buffer\n        queue.writeBuffer(sortBuffers.uniformBuffer, 0, new Uint32Array([numElements]));\n\n        this.recordCalculateHistogram(commandEncoder, sortBuffers.bindGroup, numElements);\n        this.recordPrefixHistogram(commandEncoder, sortBuffers.bindGroup);\n        this.recordScatterKeys(commandEncoder, sortBuffers.bindGroup, numElements);\n    }\n\n    scatterBlocksRu(n) {\n        return Math.ceil(n / SCATTER_BLOCK_KVS);\n    }\n\n    histoBlocksRu(n) {\n        return Math.ceil((this.scatterBlocksRu(n) * SCATTER_BLOCK_KVS) / HISTO_BLOCK_KVS);\n    }\n\n    keysBufferSize(n) {\n        return this.histoBlocksRu(n) * HISTO_BLOCK_KVS;\n    }\n}\n\nclass SortBuffers {\n    constructor(\n        keysA,\n        keysB,\n        payloadA,\n        payloadB,\n        internalMemBuffer,\n        uniformBuffer,\n        bindGroup,\n        length\n    ) {\n        this.keysA = keysA;\n        this.keysB = keysB;\n        this.payloadA = payloadA;\n        this.payloadB = payloadB;\n        this.internalMemBuffer = internalMemBuffer;\n        this.uniformBuffer = uniformBuffer;\n        this.bindGroup = bindGroup;\n        this.length = length;\n    }\n\n    get keys() {\n        return this.keysA;\n    }\n\n    get values() {\n        return this.payloadA;\n    }\n\n    keysValidSize() {\n        return this.length * RS_KEYVAL_SIZE;\n    }\n\n    destroy() {\n        this.keysA.destroy();\n        this.keysB.destroy();\n        this.payloadA.destroy();\n        this.payloadB.destroy();\n        this.internalMemBuffer.destroy();\n        this.uniformBuffer.destroy();\n    }\n}\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/radix_sort/sort.js?");

/***/ }),

/***/ "./src/radix_sort_by_key.js":
/*!**********************************!*\
  !*** ./src/radix_sort_by_key.js ***!
  \**********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RadixSorter\": () => (/* binding */ RadixSorter)\n/* harmony export */ });\n/* harmony import */ var _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./embedded_shaders */ \"./src/embedded_shaders.js\");\n\n\n\nvar RadixSorter = function(device) {\n    this.device = device;\n\n    this.bgLayout = this.device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n        ],\n    });\n\n    this.radixSortBGLayout = this.device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n\n    this.mergeBGLayout = this.device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 3,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n\n    this.numWorkGroupsBGLayout = this.device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n        ],\n    });\n\n    this.reverseBGLayout = this.device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n\n    this.sortPipeline = this.device.createComputePipeline({\n        layout: this.device.createPipelineLayout({\n            bindGroupLayouts: [this.bgLayout, this.radixSortBGLayout],\n        }),\n        compute: {\n            module: this.device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.radix_sort_chunk_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.mergePipeline = this.device.createComputePipeline({\n        layout: this.device.createPipelineLayout({\n            bindGroupLayouts: [\n                this.bgLayout,\n                this.mergeBGLayout,\n                this.numWorkGroupsBGLayout,\n            ],\n        }),\n        compute: {\n            module: this.device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.merge_sorted_chunks_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.reversePipeline = this.device.createComputePipeline({\n        layout: this.device.createPipelineLayout({\n            bindGroupLayouts: [this.bgLayout, this.reverseBGLayout],\n        }),\n        compute: {\n            module: this.device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.reverse_buffer_comp_spv}),\n            entryPoint: \"main\",\n        },\n    });\n};\n\nvar nextPow2 = function(x) {\n    var a = x - 1;\n    a |= a >> 1;\n    a |= a >> 2;\n    a |= a >> 4;\n    a |= a >> 8;\n    a |= a >> 16;\n    return a + 1;\n};\n\nRadixSorter.prototype.getAlignedSize = function(size) {\n    var chunkCount = nextPow2(Math.ceil(size / _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.SortChunkSize));\n    return chunkCount * _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.SortChunkSize;\n};\n\n// Input buffers are assumed to be of size \"alignedSize\"\nRadixSorter.prototype.sort = async function(keys, values, size, reverse) {\n    // Has to be a pow2 * chunkSize elements, since we do log_2 merge steps up\n    var chunkCount = nextPow2(Math.ceil(size / _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.SortChunkSize));\n    var alignedSize = chunkCount * _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.SortChunkSize;\n    var numMergeSteps = Math.log2(chunkCount);\n    if (chunkCount > 65535) {\n        alert(`Sort got ${chunkCount} blocks, more than max 65535! Try reducing start spec count.`);\n    }\n\n    var buffers = {\n        keys: keys,\n        values: values,\n    };\n\n    var scratch = {\n        keys: this.device.createBuffer({\n            size: alignedSize * 4,\n            usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n        }),\n        values: this.device.createBuffer({\n            size: alignedSize * 4,\n            usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\n        }),\n    };\n\n    var arrayInfoBuf = this.device.createBuffer({\n        size: 4,\n        usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_SRC,\n        mappedAtCreation: true,\n    });\n    new Uint32Array(arrayInfoBuf.getMappedRange()).set([size]);\n    arrayInfoBuf.unmap();\n\n    // We'll send the workgroup count through a UBO w/ dynamic offset, so we need\n    // to obey the dynamic offset alignment rules as well\n    var numWorkGroupsBuf = this.device.createBuffer({\n        size: Math.max(numMergeSteps, 1) * 256,\n        usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_SRC,\n        mappedAtCreation: true,\n    });\n    {\n        var upload = new Uint32Array(numWorkGroupsBuf.getMappedRange());\n        for (var i = 0; i < numMergeSteps; ++i) {\n            upload[i * 64] = chunkCount / (2 << i);\n        }\n    }\n    numWorkGroupsBuf.unmap();\n\n    var infoBindGroup = this.device.createBindGroup({\n        layout: this.bgLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: arrayInfoBuf,\n                },\n            },\n        ],\n    });\n\n    var radixSortBG = this.device.createBindGroup({\n        layout: this.radixSortBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: buffers.keys,\n                },\n            },\n            {\n                binding: 1,\n                resource: {\n                    buffer: buffers.values,\n                },\n            },\n        ],\n    });\n\n    var mergeBindGroups = [\n        this.device.createBindGroup({\n            layout: this.mergeBGLayout,\n            entries: [\n                {\n                    binding: 0,\n                    resource: {\n                        buffer: buffers.keys,\n                    },\n                },\n                {\n                    binding: 1,\n                    resource: {\n                        buffer: buffers.values,\n                    },\n                },\n                {\n                    binding: 2,\n                    resource: {\n                        buffer: scratch.keys,\n                    },\n                },\n                {\n                    binding: 3,\n                    resource: {\n                        buffer: scratch.values,\n                    },\n                },\n            ],\n        }),\n        this.device.createBindGroup({\n            layout: this.mergeBGLayout,\n            entries: [\n                {\n                    binding: 0,\n                    resource: {\n                        buffer: scratch.keys,\n                    },\n                },\n                {\n                    binding: 1,\n                    resource: {\n                        buffer: scratch.values,\n                    },\n                },\n                {\n                    binding: 2,\n                    resource: {\n                        buffer: buffers.keys,\n                    },\n                },\n                {\n                    binding: 3,\n                    resource: {\n                        buffer: buffers.values,\n                    },\n                },\n            ],\n        }),\n    ];\n\n    var reverseBG = this.device.createBindGroup({\n        layout: this.reverseBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: numMergeSteps % 2 == 0 ? buffers.values : scratch.values,\n                },\n            },\n        ],\n    });\n\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass();\n    pass.setPipeline(this.sortPipeline);\n    pass.setBindGroup(0, infoBindGroup);\n    pass.setBindGroup(1, radixSortBG);\n    pass.dispatchWorkgroups(chunkCount, 1, 1);\n    pass.end();\n\n    // Merge the chunks up\n    var pass = commandEncoder.beginComputePass();\n    pass.setPipeline(this.mergePipeline);\n    pass.setBindGroup(0, infoBindGroup);\n    for (var i = 0; i < numMergeSteps; ++i) {\n        var numWorkGroupsBG = this.device.createBindGroup({\n            layout: this.numWorkGroupsBGLayout,\n            entries: [\n                {\n                    binding: 0,\n                    resource: {\n                        buffer: numWorkGroupsBuf,\n                        size: 4,\n                        offset: i * 256,\n                    },\n                },\n            ],\n        });\n        pass.setBindGroup(1, mergeBindGroups[i % 2]);\n        pass.setBindGroup(2, numWorkGroupsBG);\n        pass.dispatchWorkgroups(chunkCount / (2 << i), 1, 1);\n    }\n    pass.end();\n    this.device.queue.submit([commandEncoder.finish()]);\n\n    var commandEncoder = this.device.createCommandEncoder();\n    if (reverse) {\n        var pass = commandEncoder.beginComputePass();\n        pass.setPipeline(this.reversePipeline);\n        pass.setBindGroup(0, infoBindGroup);\n        pass.setBindGroup(1, reverseBG);\n        pass.dispatchWorkgroups(Math.ceil(chunkCount / 2), 1, 1);\n        pass.end();\n    }\n\n    var readbackOffset = reverse ? alignedSize - size : 0;\n    // Copy the sorted real data to the start of the buffer\n    if (numMergeSteps % 2 == 0) {\n        commandEncoder.copyBufferToBuffer(\n            buffers.values, readbackOffset * 4, scratch.values, 0, size * 4);\n        commandEncoder.copyBufferToBuffer(scratch.values, 0, buffers.values, 0, size * 4);\n    } else {\n        commandEncoder.copyBufferToBuffer(\n            scratch.values, readbackOffset * 4, buffers.values, 0, size * 4);\n    }\n\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n\n    scratch.keys.destroy();\n    scratch.values.destroy();\n    arrayInfoBuf.destroy();\n    numWorkGroupsBuf.destroy();\n};\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/radix_sort_by_key.js?");

/***/ }),

/***/ "./src/run_benchmark.js":
/*!******************************!*\
  !*** ./src/run_benchmark.js ***!
  \******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CameraOrbitBenchmark\": () => (/* binding */ CameraOrbitBenchmark),\n/* harmony export */   \"ManualSingleBenchmark\": () => (/* binding */ ManualSingleBenchmark),\n/* harmony export */   \"NestedBenchmark\": () => (/* binding */ NestedBenchmark),\n/* harmony export */   \"RandomIsovalueBenchmark\": () => (/* binding */ RandomIsovalueBenchmark),\n/* harmony export */   \"RotateBenchmark\": () => (/* binding */ RotateBenchmark),\n/* harmony export */   \"SweepIsovalueBenchmark\": () => (/* binding */ SweepIsovalueBenchmark),\n/* harmony export */   \"generateBenchmarkConfigurations\": () => (/* binding */ generateBenchmarkConfigurations)\n/* harmony export */ });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var _volumes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./volumes */ \"./src/volumes.js\");\n\n\nconst benchmarkIterations = 10;\nconst cameraIterations = 10;\nconst rotateIterations = 10;\n\nvar RandomIsovalueBenchmark = function (isovalueSlider, range) {\n    this.name = \"random\";\n    this.iteration = 0;\n    this.isovalueSlider = isovalueSlider;\n    this.range = range;\n    this.numIterations = benchmarkIterations;\n};\n\nRandomIsovalueBenchmark.prototype.run = function () {\n    if (this.iteration == this.numIterations) {\n        return false;\n    }\n    var range = this.range[1] - this.range[0];\n    this.isovalueSlider.value = Math.random() * range + this.range[0];\n    this.iteration += 1;\n    return true;\n};\n\nRandomIsovalueBenchmark.prototype.reset = function () {\n    this.iteration = 0;\n};\n\nvar SweepIsovalueBenchmark = function (isovalueSlider, range, sweepUp) {\n    this.iteration = 0;\n    this.isovalueSlider = isovalueSlider;\n    this.range = range;\n    this.sweepUp = sweepUp;\n    this.numIterations = benchmarkIterations;\n    if (this.sweepUp) {\n        this.name = \"sweepUp\";\n        this.currentValue = range[0];\n    } else {\n        this.name = \"sweepDown\";\n        this.currentValue = range[1];\n    }\n};\n\nSweepIsovalueBenchmark.prototype.run = function () {\n    if (this.iteration == this.numIterations) {\n        return false;\n    }\n    var step = (this.range[1] - this.range[0]) / benchmarkIterations;\n    if (this.sweepUp) {\n        this.currentValue += step;\n    } else {\n        this.currentValue -= step;\n    }\n    this.isovalueSlider.value = this.currentValue;\n    this.iteration += 1;\n    return true;\n};\n\n// ManualSingleBenchmark just re-runs whatever current isovalue we have picked\nvar ManualSingleBenchmark = function () {\n    this.done = false;\n    this.name = \"manualSingle\";\n};\n\nManualSingleBenchmark.prototype.run = function () {\n    if (this.done) {\n        return false;\n    }\n    this.done = true;\n    return true;\n};\n\nManualSingleBenchmark.prototype.reset = function () {\n    this.done = false;\n};\n\nSweepIsovalueBenchmark.prototype.reset = function () {\n    this.iteration = 0;\n};\n\nvar CameraOrbitBenchmark = function (radius) {\n    this.iteration = 0;\n    this.name = \"cameraOrbit\";\n    this.numIterations = cameraIterations;\n    this.radius = radius;\n};\n\nCameraOrbitBenchmark.prototype.run = function () {\n    if (this.iteration == this.numIterations) {\n        return false;\n    }\n    const increment = Math.PI * (3.0 - Math.sqrt(5.0));\n    const offset = 2.0 / this.numIterations;\n\n    var y = ((this.iteration * offset) - 1.0) + offset / 2.0;\n    const r = Math.sqrt(1.0 - y * y);\n    const phi = this.iteration * increment;\n    var x = r * Math.cos(phi);\n    var z = r * Math.sin(phi);\n\n    x *= this.radius;\n    y *= this.radius;\n    z *= this.radius;\n\n    this.currentPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create(), x, y, z);\n    this.iteration += 1;\n\n    return true;\n};\n\nCameraOrbitBenchmark.prototype.reset = function () {\n    this.iteration = 0;\n};\n\nvar RotateBenchmark = function (radius, width, height) {\n    this.iteration = 0;\n    this.name = \"rotate\";\n    this.numIterations = rotateIterations;\n    this.radius = radius;\n    this.width = width;\n    this.height = height;\n    this.renderID = Date.now().toString().slice(-6);\n\n    var theta = Math.random() * 2 * Math.PI; // Azimuthal angle\n    var phi = Math.acos(2 * Math.random() - 1); // Polar angle\n    var x = radius * Math.sin(phi) * Math.cos(theta);\n    var y = radius * Math.sin(phi) * Math.sin(theta);\n    var z = radius * Math.cos(phi);\n    this.startPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create(), x, y, z);\n\n    this.startX = Math.random() * this.width;\n    this.startY = Math.random() * this.height;\n    this.currentX = this.startX;\n    this.currentY = this.startY;\n    this.endX = Math.random() * this.width;\n    this.endY = Math.random() * this.height;\n};\n\nRotateBenchmark.prototype.run = function () {\n    if (this.iteration == this.numIterations) {\n        return false;\n    }\n    this.lastX = this.currentX;\n    this.lastY = this.currentY;\n    const t = this.iteration / (this.numIterations - 1);\n    this.currentX = this.startX + t * (this.endX - this.startX);\n    this.currentY = this.startY + t * (this.endY - this.startY);\n    this.iteration += 1;\n    return true;\n};\n\nRotateBenchmark.prototype.reset = function () {\n    this.renderID = Date.now().toString().slice(-6);\n    this.iteration = 0;\n    var theta = Math.random() * 2 * Math.PI; // Azimuthal angle\n    var phi = Math.acos(2 * Math.random() - 1); // Polar angle\n    var x = this.radius * Math.sin(phi) * Math.cos(theta);\n    var y = this.radius * Math.sin(phi) * Math.sin(theta);\n    var z = this.radius * Math.cos(phi);\n    this.startPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create(), x, y, z);\n\n    this.startX = Math.random() * this.width;\n    this.startY = Math.random() * this.height;\n    this.currentX = this.startX;\n    this.currentY = this.startY;\n    this.endX = Math.random() * this.width;\n    this.endY = Math.random() * this.height;\n};\n\nvar NestedBenchmark = function (outerLoop, innerLoop) {\n    this.name = outerLoop.name + \"-\" + innerLoop.name;\n    this.outerLoop = outerLoop;\n    this.innerLoop = innerLoop;\n    this.iteration = 0;\n};\n\nNestedBenchmark.prototype.run = function () {\n    if (this.iteration == 0) {\n        this.outerLoop.run();\n    }\n    if (!this.innerLoop.run()) {\n        if (!this.outerLoop.run()) {\n            return false;\n        }\n        this.innerLoop.reset();\n        this.innerLoop.run();\n    }\n    this.iteration += 1;\n    return true;\n}\n\n// Generate the list of benchmark configurations\n// we're going to run in autobenchmark mode\nfunction generateBenchmarkConfigurations() {\n    // Do we really need to go up to ssc 8? Probably just on the 3080\n    const startSpecCounts = [1, 2, 4]//, 8];\n    //const resolutions = [\"1080\", \"720\", \"360\"];\n    const resolutions = [\"360\", \"720\", \"1080\"]//, \"360\"];\n    const imageCompleteness = [1.0];\n    const datasets = [\n        //\"skull\",\n        //\"tacc_turbulence\",\n        \"magnetic\",\n        //\"kingsnake\",\n        \"chameleon\",\n        //\"beechnut\",\n        \"miranda\",\n        //\"jicf_q\",\n        //\"dns_large\",\n        //\"richtmyer_meshkov\"\n    ];\n    const radii = [1.5];\n    const infer = false;\n\n    let benchmarks = [];\n    for (const d of datasets) {\n        for (const ic of imageCompleteness) {\n            for (const r of resolutions) {\n                for (const ssc of startSpecCounts) {\n                    for (const rad of radii) {\n                        benchmarks.push({\n                            dataset: d,\n                            imageCompleteness: ic,\n                            resolution: r,\n                            startSpecCount: ssc,\n                            radius: rad,\n                            infer: infer\n                        });\n                    }\n                }\n            }\n        }\n    }\n    return benchmarks;\n}\n\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/run_benchmark.js?");

/***/ }),

/***/ "./src/stream_compact.js":
/*!*******************************!*\
  !*** ./src/stream_compact.js ***!
  \*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StreamCompact\": () => (/* binding */ StreamCompact)\n/* harmony export */ });\n/* harmony import */ var _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./embedded_shaders */ \"./src/embedded_shaders.js\");\n\nvar StreamCompact = function(device) {\n    this.device = device;\n\n    // Not sure how to query this limit, assuming this size based on OpenGL\n    // In a less naive implementation doing some block-based implementation w/\n    // larger group sizes might be better as well\n    // We also need to make sure the offset we'll end up using for the\n    // dynamic offsets is aligned to 256 bytes. We're offsetting into arrays\n    // of uint32, so determine the max dispatch size we should use for each\n    // individual aligned chunk\n    this.maxDispatchSize = Math.floor(65535 / 256) * 256;\n\n    this.streamCompactBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 3,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n    this.streamCompactPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [this.streamCompactBGLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.stream_compact_comp_spv}),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.dataBGLayout = device.createBindGroupLayout({\n        entries: [{\n            binding: 0,\n            visibility: GPUShaderStage.COMPUTE,\n            buffer: {\n                type: \"storage\",\n            }\n        }]\n    });\n    this.streamCompactDataPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout(\n            {bindGroupLayouts: [this.streamCompactBGLayout, this.dataBGLayout]}),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_0__.stream_compact_data_comp_spv}),\n            entryPoint: \"main\",\n        }\n    });\n};\n\nStreamCompact.prototype.compactActiveIDs =\n    async function(numElements, isActiveBuffer, offsetsBuffer, outputBuffer) {\n    // No push constants in the API? This is really a hassle to hack together\n    // because I also have to obey (at least Dawn's rule is it part of the spec?)\n    // that the dynamic offsets be 256b aligned\n    // Please add push constants!\n    var numChunks = Math.ceil(numElements / this.maxDispatchSize);\n    var compactPassOffset = this.device.createBuffer({\n        size: numChunks * 256,\n        usage: GPUBufferUsage.UNIFORM,\n        mappedAtCreation: true,\n    });\n    {\n        var map = new Uint32Array(compactPassOffset.getMappedRange());\n        for (var i = 0; i < numChunks; ++i) {\n            map[i * 64] = i * this.maxDispatchSize;\n        }\n        compactPassOffset.unmap();\n    }\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass();\n    pass.setPipeline(this.streamCompactPipeline);\n    for (var i = 0; i < numChunks; ++i) {\n        var numWorkGroups =\n            Math.min(numElements - i * this.maxDispatchSize, this.maxDispatchSize);\n        var offset = i * this.maxDispatchSize * 4;\n        // Have to create bind groups here because dynamic offsets are not allowed\n        // for security\n        // TODO: Was this re-enabled?\n        var streamCompactBG = null;\n        if (numWorkGroups === this.maxDispatchSize) {\n            streamCompactBG = this.device.createBindGroup({\n                layout: this.streamCompactBGLayout,\n                entries: [\n                    {\n                        binding: 0,\n                        resource: {\n                            buffer: isActiveBuffer,\n                            size: 4 * Math.min(numElements, this.maxDispatchSize),\n                            offset: offset,\n                        },\n                    },\n                    {\n                        binding: 1,\n                        resource: {\n                            buffer: offsetsBuffer,\n                            size: 4 * Math.min(numElements, this.maxDispatchSize),\n                            offset: offset,\n                        },\n                    },\n                    {\n                        binding: 2,\n                        resource: {\n                            buffer: compactPassOffset,\n                            size: 4,\n                            offset: i * 256,\n                        },\n                    },\n                    {\n                        binding: 3,\n                        resource: {\n                            buffer: outputBuffer,\n                        },\n                    },\n                ],\n            });\n        } else {\n            streamCompactBG = this.device.createBindGroup({\n                layout: this.streamCompactBGLayout,\n                entries: [\n                    {\n                        binding: 0,\n                        resource: {\n                            buffer: isActiveBuffer,\n                            size: 4 * (numElements % this.maxDispatchSize),\n                            offset: offset,\n                        },\n                    },\n                    {\n                        binding: 1,\n                        resource: {\n                            buffer: offsetsBuffer,\n                            size: 4 * (numElements % this.maxDispatchSize),\n                            offset: offset,\n                        },\n                    },\n                    {\n                        binding: 2,\n                        resource: {\n                            buffer: compactPassOffset,\n                            size: 4,\n                            offset: i * 256,\n                        },\n                    },\n                    {\n                        binding: 3,\n                        resource: {\n                            buffer: outputBuffer,\n                        },\n                    },\n                ],\n            });\n        }\n        pass.setBindGroup(0, streamCompactBG);\n        pass.dispatchWorkgroups(Math.ceil(numWorkGroups / 8), 1, 1);\n    }\n    pass.end();\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n};\n\nStreamCompact.prototype.compactActive =\n    async function(numElements, isActiveBuffer, offsetsBuffer, dataBuffer, outputBuffer) {\n    // No push constants in the API? This is really a hassle to hack together\n    // because I also have to obey (at least Dawn's rule is it part of the spec?)\n    // that the dynamic offsets be 256b aligned\n    // Please add push constants!\n    var numChunks = Math.ceil(numElements / this.maxDispatchSize);\n    var compactPassOffset = this.device.createBuffer({\n        size: numChunks * 256,\n        usage: GPUBufferUsage.UNIFORM,\n        mappedAtCreation: true,\n    });\n    {\n        var map = new Uint32Array(compactPassOffset.getMappedRange());\n        for (var i = 0; i < numChunks; ++i) {\n            map[i * 64] = i * this.maxDispatchSize;\n        }\n        compactPassOffset.unmap();\n    }\n\n    var dataBG = this.device.createBindGroup(\n        {layout: this.dataBGLayout, entries: [{binding: 0, resource: {buffer: dataBuffer}}]});\n\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass();\n    pass.setPipeline(this.streamCompactDataPipeline);\n    for (var i = 0; i < numChunks; ++i) {\n        var numWorkGroups =\n            Math.min(numElements - i * this.maxDispatchSize, this.maxDispatchSize);\n\n        // Have to create bind groups here because dynamic offsets are not allowed\n        var streamCompactBG = this.device.createBindGroup({\n            layout: this.streamCompactBGLayout,\n            entries: [\n                {\n                    binding: 0,\n                    resource: {\n                        buffer: isActiveBuffer,\n                    },\n                },\n                {\n                    binding: 1,\n                    resource: {\n                        buffer: offsetsBuffer,\n                    },\n                },\n                {\n                    binding: 2,\n                    resource: {\n                        buffer: compactPassOffset,\n                        size: 4,\n                        offset: i * 256,\n                    },\n                },\n                {\n                    binding: 3,\n                    resource: {\n                        buffer: outputBuffer,\n                    },\n                },\n            ],\n        });\n        pass.setBindGroup(0, streamCompactBG);\n        pass.setBindGroup(1, dataBG);\n        pass.dispatchWorkgroups(Math.ceil(numWorkGroups / 8), 1, 1);\n    }\n    pass.end();\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n};\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/stream_compact.js?");

/***/ }),

/***/ "./src/util.js":
/*!*********************!*\
  !*** ./src/util.js ***!
  \*********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildPushConstantsBuffer\": () => (/* binding */ buildPushConstantsBuffer)\n/* harmony export */ });\n// Generate the work group ID offset buffer and the dynamic offset buffer to use for chunking\n// up a large compute dispatch. The start of the push constants data will be:\n// {\n//      u32: global work group id offset\n//      u32: totalWorkGroups\n//      ...: up to 248 bytes additional data (if any) from the pushConstants parameter,\n//           passed as an ArrayBuffer or TypedArray\n// }\n// ID offset (u32),\nfunction buildPushConstantsBuffer(device, totalWorkGroups, pushConstants)\n{\n    var dynamicOffsets = [];\n    var dispatchSizes = [];\n\n    var numDynamicOffsets =\n        Math.ceil(totalWorkGroups / device.limits.maxComputeWorkgroupsPerDimension);\n    var idOffsetsBuffer = device.createBuffer({\n        size: 256 * numDynamicOffsets,\n        usage: GPUBufferUsage.UNIFORM,\n        mappedAtCreation: true,\n    });\n    {\n        var pushConstantsView = null;\n        if (pushConstants) {\n            var pc = pushConstants;\n            if (pushConstants.buffer) {\n                pc = pushConstants.buffer;\n            }\n            if (pc.byteLength > 248) {\n                console.log(`Error: push constants can be at most 248 bytes`);\n            }\n            pushConstantsView = new Uint8Array(pc);\n        }\n        var mapping = idOffsetsBuffer.getMappedRange();\n        for (var i = 0; i < numDynamicOffsets; ++i) {\n            dynamicOffsets.push(i * 256);\n\n            if (i + 1 < numDynamicOffsets) {\n                dispatchSizes.push(device.limits.maxComputeWorkgroupsPerDimension);\n            } else {\n                dispatchSizes.push(totalWorkGroups %\n                                   device.limits.maxComputeWorkgroupsPerDimension);\n            }\n\n            // Write the push constants data\n            var u32view = new Uint32Array(mapping, i * 256, 2);\n            u32view[0] = device.limits.maxComputeWorkgroupsPerDimension * i;\n            u32view[1] = totalWorkGroups;\n\n            // Copy in any additional push constants data if provided\n            if (pushConstantsView) {\n                var u8view = new Uint8Array(mapping, i * 256 + 8, 248);\n                u8view.set(pushConstantsView);\n            }\n        }\n        idOffsetsBuffer.unmap();\n    }\n    dynamicOffsets = new Uint32Array(dynamicOffsets);\n\n    return {\n        nOffsets: numDynamicOffsets,\n        gpuBuffer: idOffsetsBuffer,\n        dynamicOffsets: dynamicOffsets,\n        dispatchSizes: dispatchSizes,\n    };\n}\n\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/util.js?");

/***/ }),

/***/ "./src/volume_raycaster.js":
/*!*********************************!*\
  !*** ./src/volume_raycaster.js ***!
  \*********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VolumeRaycaster\": () => (/* binding */ VolumeRaycaster)\n/* harmony export */ });\n/* harmony import */ var _exclusive_scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exclusive_scan */ \"./src/exclusive_scan.js\");\n/* harmony import */ var _stream_compact__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stream_compact */ \"./src/stream_compact.js\");\n/* harmony import */ var _lru_cache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lru_cache */ \"./src/lru_cache.js\");\n/* harmony import */ var _radix_sort_sort__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./radix_sort/sort */ \"./src/radix_sort/sort.js\");\n/* harmony import */ var _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./embedded_shaders */ \"./src/embedded_shaders.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ \"./src/util.js\");\n\n\n\n\n\n\n\nvar VolumeRaycaster = function(\n    device, width, height, recordVisibleBlocksUI, enableSpeculationUI, startSpecCount, imageTensorBuffer) {\n    this.device = device;\n    this.scanPipeline = new _exclusive_scan__WEBPACK_IMPORTED_MODULE_0__.ExclusiveScanPipeline(device);\n    this.streamCompact = new _stream_compact__WEBPACK_IMPORTED_MODULE_1__.StreamCompact(device);\n    // Number of blocks visible for the current pass\n    this.numVisibleBlocks = 0;\n    // Number of blocks decompressed for the current pass\n    this.newDecompressed = 0;\n\n    this.renderComplete = false;\n\n    this.width = width;\n    this.height = height;\n    this.startSpecCount = startSpecCount;\n\n    // Record visible blocks will optionally track the total % of blocks that were active or\n    // visible while rendering the surface. This is just needed to provide this statistic for\n    // the paper and is computed on the host by just reading back the blockVisible buffer and\n    // or'ing it with the previous pass's one to accumulate the total block visible list\n    // without double-counting\n    this.recordVisibleBlocksUI = recordVisibleBlocksUI;\n\n    // For testing/demo/benchmarking of enable/disable speculation\n    this.enableSpeculationUI = enableSpeculationUI;\n\n    // Each pass appends its performance stats to the perfStats array,\n    // this is reset for each new isovalue\n    this.perfStats = [];\n\n    // Max dispatch size for more computationally heavy kernels\n    // which might hit TDR on lower power devices\n    this.maxDispatchSize = device.limits.maxComputeWorkgroupsPerDimension;\n\n    this.computeBlockRangeBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n    this.pushConstantS1B0DynamicLayout = device.createBindGroupLayout({\n        entries: [{\n            binding: 0,\n            visibility: GPUShaderStage.COMPUTE,\n            buffer: {type: \"uniform\", hasDynamicOffset: true}\n        }]\n    });\n    this.computeBlockRangePipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts:\n                [this.computeBlockRangeBGLayout, this.pushConstantS1B0DynamicLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.zfp_compute_block_range_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.computeVoxelRangeBGLayout = device.createBindGroupLayout({\n        entries: [{\n            binding: 0,\n            visibility: GPUShaderStage.COMPUTE,\n            buffer: {\n                type: \"storage\",\n            }\n        }]\n    });\n    this.computeVoxelRangePipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [\n                this.computeBlockRangeBGLayout,\n                this.pushConstantS1B0DynamicLayout,\n                this.computeVoxelRangeBGLayout\n            ]\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.compute_voxel_range_comp_spv,\n            }),\n            entryPoint: \"main\",\n        }\n    });\n\n    this.computeCoarseCellRangeBGLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {type: \"uniform\", hasDynamicOffset: true}\n            },\n            {binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 3, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}}\n        ]\n    });\n    this.computeCoarseCellRangePipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout(\n            {bindGroupLayouts: [this.computeCoarseCellRangeBGLayout]}),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.compute_coarse_cell_range_comp_spv}),\n            entryPoint: \"main\"\n        }\n    });\n\n    this.decompressBlocksBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 3,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 4,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n    this.ub1binding0BGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n        ],\n    });\n\n    this.decompressBlocksPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [\n                this.decompressBlocksBGLayout,\n                this.ub1binding0BGLayout,\n            ],\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.zfp_decompress_block_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    // Set up compute initial rays pipeline\n    this.viewParamBuf = device.createBuffer({\n        // mat4, 2 vec4's, a float, 2 uint + some extra to align\n        size: 32 * 4,\n        usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n    });\n\n    // We'll need a max of width * height RayInfo structs in the buffer,\n    // so just allocate it once up front\n    this.rayInformationBuffer = device.createBuffer({\n        size: this.width * this.height * 16,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,\n    });\n\n    // We need width * height RayIDs for speculation,\n    // with ray indices repeated as speculation occurs\n    this.speculativeRayIDBuffer = device.createBuffer({\n        size: this.width * this.height * this.startSpecCount * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,\n    });\n\n    this.rayRGBZBuffer = device.createBuffer({\n        size: this.width * this.height * this.startSpecCount * 2 * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,\n    });\n\n    this.imageTensorBuffer = imageTensorBuffer;\n\n    // Each ray stores 2 iterator states, the coarse one followed by the fine one.\n    // Each state is 32b\n    this.gridIteratorBuffer = device.createBuffer({\n        size: this.width * this.height * 8 * 4,\n        usage: GPUBufferUsage.STORAGE,\n    });\n\n    this.resetRaysBGLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n            {binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 3, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 4, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}}\n        ]\n    });\n\n    this.resetRaysPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [\n                this.resetRaysBGLayout,\n            ],\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.reset_rays_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.computeInitialRaysBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.VERTEX,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.FRAGMENT,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 3,\n                visibility: GPUShaderStage.FRAGMENT,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n\n    // Specify vertex data for compute initial rays\n    this.dataBuf = device.createBuffer({\n        size: 12 * 3 * 3 * 4,\n        usage: GPUBufferUsage.VERTEX,\n        mappedAtCreation: true,\n    });\n    new Float32Array(this.dataBuf.getMappedRange()).set([\n        1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1,\n        1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,\n        0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1,\n        0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0,\n    ]);\n    this.dataBuf.unmap();\n\n    // Setup render outputs\n    var renderTargetFormat = \"rgba8unorm\";\n    this.renderTarget = this.device.createTexture({\n        size: [this.width, this.height, 1],\n        format: renderTargetFormat,\n        usage: GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.TEXTURE_BINDING |\n                   GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST\n    });\n    this.renderTargetCopy = this.device.createTexture({\n        size: [this.width, this.height, 1],\n        format: renderTargetFormat,\n        usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST\n    });\n\n    this.renderTargetDebugBGLayout = this.device.createBindGroupLayout({\n        entries: [{\n            binding: 0,\n            visibility: GPUShaderStage.COMPUTE,\n            storageTexture: {access: \"write-only\", format: renderTargetFormat}\n        }]\n    });\n    this.renderTargetDebugBG = this.device.createBindGroup({\n        layout: this.renderTargetDebugBGLayout,\n        entries: [{binding: 0, resource: this.renderTarget.createView()}]\n    });\n\n    this.initialRaysPipeline = device.createRenderPipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [this.computeInitialRaysBGLayout],\n        }),\n        vertex: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.compute_initial_rays_vert_spv}),\n            entryPoint: \"main\",\n            buffers: [\n                {\n                    arrayStride: 3 * 4,\n                    attributes: [\n                        {\n                            format: \"float32x3\",\n                            offset: 0,\n                            shaderLocation: 0,\n                        },\n                    ],\n                },\n            ],\n        },\n        fragment: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.compute_initial_rays_frag_spv}),\n            entryPoint: \"main\",\n            targets: [\n                {\n                    format: renderTargetFormat,\n                    writeMask: 0,\n                },\n            ],\n        },\n        primitive: {\n            topology: 'triangle-list',\n            cullMode: \"front\",\n        }\n    });\n\n    this.initialRaysPassDesc = {\n        colorAttachments: [\n            {\n                view: this.renderTarget.createView(),\n                loadOp: \"clear\",\n                clearValue: [1.0, 1.0, 1.0, 1],\n                storeOp: \"store\"\n            },\n        ]\n    };\n\n    this.depthCompositeBGLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n            {binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {\n                binding: 3,\n                visibility: GPUShaderStage.COMPUTE,\n                storageTexture: {access: \"write-only\", format: renderTargetFormat}\n            },\n            {binding: 4, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n        ]\n    });\n    this.depthCompositeBG1Layout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}}, \n            {binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}}\n        ]\n    });\n\n    this.depthCompositePipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [this.depthCompositeBGLayout, this.depthCompositeBG1Layout],\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.depth_composite_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.resetSpeculativeIDsBGLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n            {binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 3, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n        ]\n    });\n\n    this.resetSpeculativeIDsPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [\n                this.resetSpeculativeIDsBGLayout,\n            ],\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.reset_speculative_ids_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.macroTraverseBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                // Also pass the render target for debugging\n                binding: 3,\n                visibility: GPUShaderStage.COMPUTE,\n                storageTexture: {access: \"write-only\", format: renderTargetFormat}\n            },\n            {\n                binding: 4,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 5,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 6,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 7,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            }\n        ],\n    });\n    this.macroTraverseRangesBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            }\n        ]\n    });\n\n    this.macroTraversePipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [this.macroTraverseBGLayout, this.macroTraverseRangesBGLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({\n                code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.macro_traverse_comp_spv,\n            }),\n            entryPoint: \"main\",\n        },\n    });\n\n    this.resetBlockActiveBGLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n            {binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}}\n        ]\n    });\n    this.resetBlockActivePipeline = device.createComputePipeline({\n        layout:\n            device.createPipelineLayout({bindGroupLayouts: [this.resetBlockActiveBGLayout]}),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.reset_block_active_comp_spv}),\n            entryPoint: \"main\"\n        }\n    });\n\n    this.resetBlockNumRaysBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {type: \"uniform\", hasDynamicOffset: true}\n            },\n            {binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}}\n        ]\n    });\n    this.resetBlockNumRaysPipeline = device.createComputePipeline({\n        layout:\n            device.createPipelineLayout({bindGroupLayouts: [this.resetBlockNumRaysBGLayout]}),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.reset_block_num_rays_comp_spv}),\n            entryPoint: \"main\"\n        }\n    });\n\n    this.LODThresholdBuf = device.createBuffer({\n        size: 4,\n        usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n    });\n\n    this.markBlockActiveBGLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n            {binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n            {binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n            {binding: 3, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 4, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 5, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 6, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n        ]\n    });\n    this.markBlockActivePipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [this.markBlockActiveBGLayout, this.renderTargetDebugBGLayout]\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.mark_block_active_wgsl_spv}),\n            entryPoint: \"main\"\n        }\n    });\n\n    this.countBlockRaysBGLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n            {binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 3, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n        ]\n    });\n    this.countBlockRaysPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [this.countBlockRaysBGLayout],\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.count_block_rays_wgsl_spv}),\n            entryPoint: \"main\"\n        }\n    });\n\n    this.debugViewBlockRayCountsBGLayout = device.createBindGroupLayout({\n        entries: [\n            {binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"uniform\"}},\n            {binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {binding: 4, visibility: GPUShaderStage.COMPUTE, buffer: {type: \"storage\"}},\n            {\n                binding: 3,\n                visibility: GPUShaderStage.COMPUTE,\n                storageTexture: {access: \"write-only\", format: renderTargetFormat}\n            }\n        ]\n    });\n    this.debugViewBlockRayCountsPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout(\n            {bindGroupLayouts: [this.debugViewBlockRayCountsBGLayout]}),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.debug_view_rays_per_block_comp_spv}),\n            entryPoint: \"main\"\n        }\n    });\n\n    // Intermediate buffers for sorting ray IDs using their block ID as the key\n    this.sorter = new _radix_sort_sort__WEBPACK_IMPORTED_MODULE_3__.GPUSorter(this.device, 32);\n    this.rayIDBuffer = device.createBuffer({\n        size: this.width * this.height * this.startSpecCount * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n    this.compactSpeculativeIDBuffer = device.createBuffer({\n        size: this.width * this.height * this.startSpecCount * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n    this.rayBlockIDBuffer = device.createBuffer({\n        size: this.width * this.height * this.startSpecCount * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n    this.compactRayBlockIDBuffer = device.createBuffer({\n        size: this.width * this.height * this.startSpecCount * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n    this.rayActiveBuffer = device.createBuffer({\n        size: this.width * this.height * this.startSpecCount * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n    this.rayActiveCompactOffsetBuffer = device.createBuffer({\n        size: this.scanPipeline.getAlignedSize(this.width * this.height * this.startSpecCount) * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n    this.rayAfterActiveBuffer = device.createBuffer({\n        size: this.width * this.height * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n    this.speculativeRayOffsetBuffer = device.createBuffer({\n        size: this.scanPipeline.getAlignedSize(this.width * this.height) * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n    });\n    this.scanRayActive = this.scanPipeline.prepareGPUInput(\n        this.rayActiveCompactOffsetBuffer,\n        this.scanPipeline.getAlignedSize(this.width * this.height * this.startSpecCount));\n    this.scanRayAfterActive = this.scanPipeline.prepareGPUInput(\n        this.speculativeRayOffsetBuffer,\n        this.scanPipeline.getAlignedSize(this.width * this.height));\n\n    this.writeRayAndBlockIDBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n    this.writeRayAndBlockIDPipeline = device.createComputePipeline({\n        layout:\n            device.createPipelineLayout({bindGroupLayouts: [this.writeRayAndBlockIDBGLayout]}),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.write_ray_and_block_id_comp_spv}),\n            entryPoint: \"main\",\n        }\n    });\n\n    this.markRayActiveBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ],\n    });\n    this.markRayActivePipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({bindGroupLayouts: [this.markRayActiveBGLayout]}),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.mark_ray_active_comp_spv}),\n            entryPoint: \"main\",\n        }\n    });\n\n    this.colorActiveRaysBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 3,\n                visibility: GPUShaderStage.COMPUTE,\n                texture: { viewDimension: \"2d\" }\n            },\n            {\n                binding: 4,\n                visibility: GPUShaderStage.COMPUTE,\n                storageTexture: { access: \"write-only\", format: renderTargetFormat }\n            },\n        ]\n    });\n    this.colorActiveRaysPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({bindGroupLayouts: [this.colorActiveRaysBGLayout]}),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.color_active_rays_comp_spv}),\n            entryPoint: \"main\",\n        }\n    });\n\n    this.combineBlockInformationBGLayout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 3,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 4,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            }\n        ]\n    });\n    this.combineBlockInformationPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts:\n                [this.combineBlockInformationBGLayout, this.pushConstantS1B0DynamicLayout]\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.combine_block_information_comp_spv}),\n            entryPoint: \"main\"\n        }\n    });\n\n    this.rtBlocksPipelineBG0Layout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ]\n    });\n    this.rtBlocksPipelineBG1Layout = device.createBindGroupLayout({\n        entries: [\n            {\n                binding: 0,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"uniform\",\n                }\n            },\n            {\n                binding: 1,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 2,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 3,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 4,\n                visibility: GPUShaderStage.COMPUTE,\n                storageTexture: {access: \"write-only\", format: renderTargetFormat}\n            },\n            {\n                binding: 5,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n            {\n                binding: 6,\n                visibility: GPUShaderStage.COMPUTE,\n                buffer: {\n                    type: \"storage\",\n                }\n            },\n        ]\n    });\n\n    this.raytraceBlocksPipeline = device.createComputePipeline({\n        layout: device.createPipelineLayout({\n            bindGroupLayouts: [\n                this.rtBlocksPipelineBG0Layout,\n                this.rtBlocksPipelineBG1Layout,\n                this.pushConstantS1B0DynamicLayout\n            ]\n        }),\n        compute: {\n            module: device.createShaderModule({code: _embedded_shaders__WEBPACK_IMPORTED_MODULE_4__.raytrace_active_block_comp_spv}),\n            entryPoint: \"main\"\n        }\n    });\n};\n\nVolumeRaycaster.prototype.setCompressedVolume =\n    async function(volume, compressionRate, volumeDims, volumeScale) {\n    // Upload the volume\n    this.volumeDims = volumeDims;\n    this.paddedDims = [\n        (0,_exclusive_scan__WEBPACK_IMPORTED_MODULE_0__.alignTo)(volumeDims[0], 4),\n        (0,_exclusive_scan__WEBPACK_IMPORTED_MODULE_0__.alignTo)(volumeDims[1], 4),\n        (0,_exclusive_scan__WEBPACK_IMPORTED_MODULE_0__.alignTo)(volumeDims[2], 4),\n    ];\n    this.blockGridDims =\n        [this.paddedDims[0] / 4, this.paddedDims[1] / 4, this.paddedDims[2] / 4];\n    this.totalBlocks = (this.paddedDims[0] * this.paddedDims[1] * this.paddedDims[2]) / 64;\n\n    this.coarseGridDims = [\n        (0,_exclusive_scan__WEBPACK_IMPORTED_MODULE_0__.alignTo)(this.blockGridDims[0], 4) / 4,\n        (0,_exclusive_scan__WEBPACK_IMPORTED_MODULE_0__.alignTo)(this.blockGridDims[1], 4) / 4,\n        (0,_exclusive_scan__WEBPACK_IMPORTED_MODULE_0__.alignTo)(this.blockGridDims[2], 4) / 4,\n    ];\n    this.totalCoarseCells =\n        (this.coarseGridDims[0] * this.coarseGridDims[1] * this.coarseGridDims[2]);\n\n    const groupThreadCount = 32;\n    this.numWorkGroups = Math.ceil(this.totalBlocks / groupThreadCount);\n    var cacheInitialSize = Math.ceil(this.totalBlocks * 0.01);\n\n    this.lruCache = new _lru_cache__WEBPACK_IMPORTED_MODULE_2__.LRUCache(this.device,\n                                 this.scanPipeline,\n                                 this.streamCompact,\n                                 cacheInitialSize,\n                                 64 * 4,\n                                 this.totalBlocks);\n\n    this.volumeInfoBuffer = this.device.createBuffer({\n        size: 16 * 4,\n        usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n        mappedAtCreation: true,\n    });\n    {\n        var mapping = this.volumeInfoBuffer.getMappedRange();\n        var maxBits = (1 << (2 * 3)) * compressionRate;\n        var buf = new Uint32Array(mapping);\n        buf.set(volumeDims);\n        buf.set(this.paddedDims, 4);\n        buf.set([maxBits], 12);\n        buf.set([this.width], 14);\n        buf.set([this.height], 15);\n\n        var buf = new Float32Array(mapping);\n        buf.set(volumeScale, 8);\n    }\n    this.volumeInfoBuffer.unmap();\n\n    var compressedBuffer = this.device.createBuffer({\n        size: (0,_exclusive_scan__WEBPACK_IMPORTED_MODULE_0__.alignTo)(volume.byteLength, 4),\n        usage: GPUBufferUsage.STORAGE,\n        mappedAtCreation: true,\n    });\n    new Uint8Array(compressedBuffer.getMappedRange()).set(volume);\n    compressedBuffer.unmap();\n    this.compressedBuffer = compressedBuffer;\n\n    this.uploadIsovalueBuf = this.device.createBuffer({\n        size: 4,\n        usage: GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC,\n    });\n\n    this.uploadLODBuf = this.device.createBuffer({\n        size: 4,\n        usage: GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC,\n    });\n\n    await this.computeBlockRanges();\n\n    this.blockVisibleBuffer = this.device.createBuffer(\n        {size: 4 * this.totalBlocks, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC});\n\n    // Buffers for use when compacting down IDs of the active blocks\n    // TODO: could do a bit better and filter neighbor blocks out too by just marking\n    // visible blocks in a separate buffer (i.e., ones a ray is immediately in).\n    // This set will include neighbors for now\n    this.blockVisibleCompactOffsetBuffer = this.device.createBuffer({\n        size: 4 * this.scanPipeline.getAlignedSize(this.totalBlocks),\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST\n    });\n\n    // blockActive and blockVisibleCompactOffsetBuffer can alias each other as they are used at\n    // different times in the pipeline\n    this.blockActiveBuffer = this.blockVisibleCompactOffsetBuffer;\n\n    this.scanBlockVisibleOffsets =\n        this.scanPipeline.prepareGPUInput(this.blockVisibleCompactOffsetBuffer,\n                                          this.scanPipeline.getAlignedSize(this.totalBlocks));\n\n    this.resetRaysBG = this.device.createBindGroup({\n        layout: this.resetRaysBGLayout,\n        entries: [\n            {binding: 0, resource: {buffer: this.rayInformationBuffer}},\n            {binding: 1, resource: {buffer: this.volumeInfoBuffer}},\n            {binding: 2, resource: {buffer: this.rayBlockIDBuffer}},\n            {binding: 3, resource: {buffer: this.imageTensorBuffer}},\n            {binding: 4, resource: {buffer: this.viewParamBuf}}\n        ]\n    });\n\n    this.resetSpeculativeIDsBG = this.device.createBindGroup({\n        layout: this.resetSpeculativeIDsBGLayout,\n        entries: [\n            {binding: 0, resource: {buffer: this.volumeInfoBuffer}},\n            {binding: 1, resource: {buffer: this.speculativeRayIDBuffer}},\n            {binding: 2, resource: {buffer: this.rayRGBZBuffer}},\n            {binding: 3, resource: {buffer: this.rayBlockIDBuffer}},\n        ]\n    });\n\n    this.depthCompositeBG = this.device.createBindGroup({\n        layout: this.depthCompositeBGLayout,\n        entries: [\n            {binding: 0, resource: {buffer: this.viewParamBuf}},\n            {binding: 1, resource: {buffer: this.speculativeRayIDBuffer}},\n            {binding: 2, resource: {buffer: this.rayRGBZBuffer}},\n            {binding: 3, resource: this.renderTarget.createView()},\n            {binding: 4, resource: {buffer: this.volumeInfoBuffer}},\n        ]\n    });\n\n    this.depthCompositeBG1 = this.device.createBindGroup({\n        layout: this.depthCompositeBG1Layout,\n        entries: [\n            {binding: 0, resource: {buffer: this.rayInformationBuffer}},\n            {binding: 1, resource: {buffer: this.imageTensorBuffer}}\n        ]\n    });\n\n    // this.initSpeculativeIDsBG = this.device.createBindGroup({\n    //     layout: this.initSpeculativeIDsBGLayout,\n    //     entries: [\n    //         {binding: 0, resource: {buffer: this.volumeInfoBuffer}},\n    //         {binding: 1, resource: {buffer: this.viewParamBuf}},\n    //         {binding: 2, resource: {buffer: this.speculativeIDBuffer}},\n    //         {binding: 3, resource: {buffer: this.speculativeRayOffsetBuffer}},\n    //     ]\n    // });\n\n    this.initialRaysBindGroup = this.device.createBindGroup({\n        layout: this.computeInitialRaysBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: this.viewParamBuf,\n                },\n            },\n            {\n                binding: 1,\n                resource: {\n                    buffer: this.rayInformationBuffer,\n                },\n            },\n            {\n                binding: 2,\n                resource: {\n                    buffer: this.volumeInfoBuffer,\n                },\n            },\n            {\n                binding: 3,\n                resource: {\n                    buffer: this.rayBlockIDBuffer,\n                },\n            },\n        ],\n    });\n\n    this.macroTraverseBindGroup = this.device.createBindGroup({\n        layout: this.macroTraverseBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: this.volumeInfoBuffer,\n                },\n            },\n            {\n                binding: 1,\n                resource: {\n                    buffer: this.viewParamBuf,\n                },\n            },\n            {\n                binding: 2,\n                resource: {\n                    buffer: this.rayInformationBuffer,\n                },\n            },\n            {binding: 3, resource: this.renderTarget.createView()},\n            {\n                binding: 4,\n                resource: {\n                    buffer: this.gridIteratorBuffer,\n                },\n            },\n            {\n                binding: 5,\n                resource: {\n                    buffer: this.speculativeRayIDBuffer,\n                },\n            },\n            {\n                binding: 6,\n                resource: {\n                    buffer: this.speculativeRayOffsetBuffer,\n                },\n            },\n            {\n                binding: 7,\n                resource: {\n                    buffer: this.rayBlockIDBuffer,\n                }\n            }\n        ],\n    });\n\n    this.resetBlockActiveBG = this.device.createBindGroup({\n        layout: this.resetBlockActiveBGLayout,\n        entries: [\n            {binding: 0, resource: {buffer: this.volumeInfoBuffer}},\n            {binding: 1, resource: {buffer: this.blockActiveBuffer}},\n            {binding: 2, resource: {buffer: this.blockVisibleBuffer}},\n        ]\n    });\n\n    this.markBlockActiveBG = this.device.createBindGroup({\n        layout: this.markBlockActiveBGLayout,\n        entries: [\n            {binding: 0, resource: {buffer: this.volumeInfoBuffer}},\n            {binding: 1, resource: {buffer: this.LODThresholdBuf}},\n            {binding: 2, resource: {buffer: this.viewParamBuf}},\n            {binding: 3, resource: {buffer: this.blockActiveBuffer}},\n            {binding: 4, resource: {buffer: this.rayInformationBuffer}},\n            {binding: 5, resource: {buffer: this.blockVisibleBuffer}},\n            {binding: 6, resource: {buffer: this.rayBlockIDBuffer}},\n        ]\n    });\n\n    this.writeRayAndBlockIDBG = this.device.createBindGroup({\n        layout: this.writeRayAndBlockIDBGLayout,\n        entries: [\n            {binding: 0, resource: {buffer: this.volumeInfoBuffer}},\n            {binding: 1, resource: {buffer: this.rayBlockIDBuffer}},\n            {binding: 2, resource: {buffer: this.rayActiveBuffer}},\n        ]\n    });\n\n    this.markRayActiveBG = this.device.createBindGroup({\n        layout: this.markRayActiveBGLayout,\n        entries: [\n            {binding: 0, resource: {buffer: this.volumeInfoBuffer}},\n            {binding: 1, resource: {buffer: this.rayInformationBuffer}},\n            {binding: 2, resource: {buffer: this.rayAfterActiveBuffer}},\n        ]\n    });\n    this.colorActiveRaysBG = this.device.createBindGroup({\n        layout: this.colorActiveRaysBGLayout,\n        entries: [\n            {binding: 0, resource: {buffer: this.volumeInfoBuffer}},\n            {binding: 1, resource: {buffer: this.rayAfterActiveBuffer}},\n            {binding: 2, resource: {buffer: this.imageTensorBuffer}},\n            {binding: 3, resource: this.renderTargetCopy.createView()},\n            {binding: 4, resource: this.renderTarget.createView()}\n        ]\n    });\n};\n\nVolumeRaycaster.prototype.getMemoryStats = function() {\n    // Data from this object\n    var memUse = {\n        units: \"bytes\",\n        mc: {\n            compressedData: this.compressedBuffer.size,\n            voxelRanges: this.voxelRangesBuffer.size,\n            coarseCellRanges: this.coarseCellRangesBuffer.size,\n\n            // Every app will have view params, we can ignore it\n            // viewParam: this.viewParamBuf.size,\n            rays: this.rayInformationBuffer.size,\n            rayPixelIDs: this.speculativeRayIDBuffer.size,\n            sortedRayIDs: this.rayIDBuffer.size,\n            compactPixelIDs: this.compactSpeculativeIDBuffer.size,\n            rayBlockIDs: this.rayBlockIDBuffer.size,\n            compactRayBlockIDs: this.compactRayBlockIDBuffer.size,\n            rayActive: this.rayActiveBuffer.size,\n            rayActiveCompactOffsets: this.rayActiveCompactOffsetBuffer.size,\n            speculativeRayOffsets: this.speculativeRayOffsetBuffer.size,\n            rayRGBZ: this.rayRGBZBuffer.size,\n\n            gridIteratorState: this.gridIteratorBuffer.size,\n\n            // block active aliases blockVisibleCompactOffsetBuffer because they aren't needed\n            // at the same time in the pipeline\n            // blockActive: this.blockActiveBuffer.size,\n            blockVisible: this.blockVisibleBuffer.size,\n            // This is really based on block visible, not active\n            blockVisibleCompactOffsets: this.blockVisibleCompactOffsetBuffer.size,\n            blockNumRays: this.blockNumRaysBuffer ? this.blockNumRaysBuffer.size : 0,\n            blockRayOffsets: this.blockRayOffsetBuffer ? this.blockRayOffsetBuffer.size : 0,\n            visibleBlockIDs: this.visibleBlockIDBuffer ? this.visibleBlockIDBuffer.size : 0,\n\n            // Ignoring the combined block info buffer since this came from a binding count\n            // limitation in WebGPU which I think has been addressed, we just haven't updated\n            // the code, and it's just # active block size\n\n            // combinedBlockInformation: this.combinedBlockInformationBuffer.size,\n\n            // I think we can also ignore the cube vertices\n            // cubeVertices: this.dataBuf.size\n        },\n        cache: {\n            cache: this.lruCache.cacheSize * this.lruCache.elementSize,\n            cachedItemSlots: this.lruCache.totalElements * 4,\n            needsCaching: this.lruCache.totalElements * 4,\n            needsCachingOffsets:\n                this.scanPipeline.getAlignedSize(this.lruCache.totalElements) * 4,\n            slotAge: this.lruCache.cacheSize * 4,\n            slotAvailable: this.lruCache.cacheSize * 4,\n            slotAvailableOffsets:\n                this.scanPipeline.getAlignedSize(this.lruCache.cacheSize) * 4,\n            slotAvailableIDs: this.lruCache.cacheSize * 4,\n            slotItemIDs: this.lruCache.cacheSize * 4,\n            cacheSizeBuf: 4,\n        },\n    };\n    return memUse;\n};\n\nVolumeRaycaster.prototype.reportMemoryUse = function() {\n    var formatBytes = function(count) {\n        const giga = 1000000000;\n        const mega = 1000000;\n        const kilo = 1000;\n        if (count > giga) {\n            return (count / giga).toFixed(2) + \" GB\";\n        } else if (count > mega) {\n            return (count / mega).toFixed(2) + \" MB\";\n        } else if (count > kilo) {\n            return (count / kilo).toFixed(2) + \" KB\";\n        }\n        return count + \" B\";\n    };\n\n    var memUse = this.getMemoryStats();\n\n    var totalMem = 0;\n    var rcText = \"Raycaster Data:<ul>\";\n    for (const prop in memUse.mc) {\n        totalMem += memUse.mc[prop];\n        rcText += \"<li>\" + prop + \": \" + formatBytes(memUse.mc[prop]) + \"</li>\";\n    }\n    rcText += \"</ul>\";\n\n    var cacheText = \"LRU Cache Data:<ul>\";\n    for (const prop in memUse.cache) {\n        totalMem += memUse.cache[prop];\n        cacheText += \"<li>\" + prop + \": \" + formatBytes(memUse.cache[prop]) + \"</li>\";\n    }\n    cacheText += \"</ul>\";\n    return [rcText, cacheText, formatBytes(totalMem), memUse];\n};\n\nVolumeRaycaster.prototype.computeBlockRanges = async function() {\n    // Note: this could be done by the server for us, but for this prototype\n    // it's a bit easier to just do it here\n    // Decompress each block and compute its value range, output to the blockRangesBuffer\n    // BlockRangesBuffer = purely the ZFP block range\n    // TODO: We don't need to keep this buffer long term actually\n    var blockRangesBuffer = this.device.createBuffer({\n        size: this.totalBlocks * 2 * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,\n    });\n    // VoxelRangesBuffer = block range + neighbor cells for the dual grid\n    this.voxelRangesBuffer = this.device.createBuffer({\n        size: this.totalBlocks * 2 * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,\n    });\n    // CoarseCellRanges = 4^3 blocks of ZFP blocks, including neighbor\n    this.coarseCellRangesBuffer = this.device.createBuffer({\n        size: this.totalCoarseCells * 2 * 4,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,\n    });\n\n    var bindGroup = this.device.createBindGroup({\n        layout: this.computeBlockRangeBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: this.compressedBuffer,\n                }\n            },\n            {\n                binding: 1,\n                resource: {\n                    buffer: this.volumeInfoBuffer,\n                }\n            },\n            {\n                binding: 2,\n                resource: {\n                    buffer: blockRangesBuffer,\n                }\n            }\n        ]\n    });\n    this.voxelBindGroup = this.device.createBindGroup({\n        layout: this.computeVoxelRangeBGLayout,\n        entries: [{\n            binding: 0,\n            resource: {\n                buffer: this.voxelRangesBuffer,\n            }\n        }]\n    });\n\n    this.macroTraverseRangesBG = this.device.createBindGroup({\n        layout: this.macroTraverseRangesBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: this.voxelRangesBuffer,\n                },\n            },\n            {\n                binding: 1,\n                resource: {\n                    buffer: this.coarseCellRangesBuffer,\n                }\n            }\n        ]\n\n    });\n\n    const groupThreadCount = 32;\n    var totalWorkGroups = Math.ceil(this.totalBlocks / groupThreadCount);\n\n    var pushConstants = (0,_util__WEBPACK_IMPORTED_MODULE_5__.buildPushConstantsBuffer)(this.device, totalWorkGroups);\n\n    var blockIDOffsetBG = this.device.createBindGroup({\n        layout: this.pushConstantS1B0DynamicLayout,\n        entries: [{binding: 0, resource: {buffer: pushConstants.gpuBuffer, size: 4}}]\n    });\n\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass();\n\n    // Decompress each block and compute its range\n    pass.setPipeline(this.computeBlockRangePipeline);\n    pass.setBindGroup(0, bindGroup);\n    for (var i = 0; i < pushConstants.nOffsets; ++i) {\n        pass.setBindGroup(1, blockIDOffsetBG, pushConstants.dynamicOffsets, i, 1);\n        pass.dispatchWorkgroups(pushConstants.dispatchSizes[i], 1, 1);\n    }\n    pass.end();\n\n    // Compute each block's range including its neighbors\n    var pass = commandEncoder.beginComputePass();\n    pass.setPipeline(this.computeVoxelRangePipeline);\n    pass.setBindGroup(0, bindGroup);\n    pass.setBindGroup(2, this.voxelBindGroup);\n    for (var i = 0; i < pushConstants.nOffsets; ++i) {\n        pass.setBindGroup(1, blockIDOffsetBG, pushConstants.dynamicOffsets, i, 1);\n        pass.dispatchWorkgroups(pushConstants.dispatchSizes[i], 1, 1);\n    }\n    pass.end();\n\n    var pass = commandEncoder.beginComputePass();\n    // Enqueue pass to compute the coarse cell ranges\n    var totalWorkGroupsCoarseCell = Math.ceil(this.totalCoarseCells / groupThreadCount);\n    var coarsePushConstants = (0,_util__WEBPACK_IMPORTED_MODULE_5__.buildPushConstantsBuffer)(this.device, totalWorkGroupsCoarseCell);\n    var coarseRangeBG = this.device.createBindGroup({\n        layout: this.computeCoarseCellRangeBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: this.volumeInfoBuffer,\n                }\n            },\n            {binding: 1, resource: {buffer: coarsePushConstants.gpuBuffer, size: 4}},\n            {binding: 2, resource: {buffer: this.voxelRangesBuffer}},\n            {binding: 3, resource: {buffer: this.coarseCellRangesBuffer}}\n        ]\n    });\n    pass.setPipeline(this.computeCoarseCellRangePipeline);\n    for (var i = 0; i < coarsePushConstants.nOffsets; ++i) {\n        pass.setBindGroup(0, coarseRangeBG, coarsePushConstants.dynamicOffsets, i, 1);\n        pass.dispatchWorkgroups(coarsePushConstants.dispatchSizes[i], 1, 1);\n    }\n\n    pass.end();\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n\n    /*\n    {\n        var dbgBuffer = this.device.createBuffer({\n            size: blockRangesBuffer.size,\n            usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,\n        });\n\n        var commandEncoder = this.device.createCommandEncoder();\n        commandEncoder.copyBufferToBuffer(blockRangesBuffer, 0, dbgBuffer, 0, dbgBuffer.size);\n        this.device.queue.submit([commandEncoder.finish()]);\n        await this.device.queue.onSubmittedWorkDone();\n\n        await dbgBuffer.mapAsync(GPUMapMode.READ);\n\n        var debugVals = new Float32Array(dbgBuffer.getMappedRange());\n\n        for (var i = 0; i < 3; i++) {\n            var blob = new Blob(['[' + debugVals.slice(i * debugVals.length / 3, (i + 1) * debugVals.length / 3).toString() + ']'], {type: \"text/plain\"});\n            saveAs(blob, `blockRanges-${i}.json`);\n        }\n\n        var valRange = [Infinity, -Infinity];\n\n        for (var i = 0; i < debugVals.length; ++i) {\n            valRange[0] = Math.min(valRange[0], debugVals[i]);\n            valRange[1] = Math.max(valRange[1], debugVals[i]);\n        }\n        console.log(`value range = ${valRange}`);\n\n\n        dbgBuffer.unmap();\n    }\n    */\n};\n\n// Progressively compute the surface, returns true when rendering is complete\nVolumeRaycaster.prototype.renderSurface = async function(\n    isovalue, LODThreshold, viewParamUpload, renderParamsChanged, eyePos, eyeDir, upDir) {\n    this.passPerfStats = {};\n\n    if (this.renderComplete && !renderParamsChanged) {\n        return this.renderComplete;\n    }\n    console.log(\"===== Rendering Surface =======\");\n    var startPass = performance.now();\n\n    if (renderParamsChanged) {\n        this.numVisibleBlocks = 0;\n        this.newDecompressed = 0;\n\n        this.totalPassTime = 0;\n        this.numPasses = 0;\n        this.renderID = Date.now().toString().slice(-6);\n        this.imageCompleteness = 0;\n        this.speculationCount = this.startSpecCount;\n        this.speculationEnabled = this.enableSpeculationUI.checked;\n\n        this.surfacePerfStats = [];\n\n        this.recordVisibleBlocks = this.recordVisibleBlocksUI.checked;\n        this.recordBlockActiveList = null;\n        this.recordBlockVisibleList = null;\n        if (this.recordVisibleBlocks) {\n            console.log(\n                `WARNING: Recording active/visible block statistics may effect performance!`);\n            this.recordBlockActiveList = new Uint8Array(this.totalBlocks).fill(0);\n            this.recordBlockVisibleList = new Uint8Array(this.totalBlocks).fill(0);\n        }\n\n        // Upload the isovalue\n        await this.uploadIsovalueBuf.mapAsync(GPUMapMode.WRITE);\n        new Float32Array(this.uploadIsovalueBuf.getMappedRange()).set([isovalue]);\n        this.uploadIsovalueBuf.unmap();\n\n        // Upload new LOD threshold\n        var commandEncoder = this.device.createCommandEncoder();\n        await this.uploadLODBuf.mapAsync(GPUMapMode.WRITE);\n        new Uint32Array(this.uploadLODBuf.getMappedRange()).set([LODThreshold]);\n        this.uploadLODBuf.unmap();\n        commandEncoder.copyBufferToBuffer(this.uploadLODBuf, 0, this.LODThresholdBuf, 0, 4);\n\n        // We need to reset the speculation count\n        var uploadSpeculationCount = this.device.createBuffer(\n            {size: 4, usage: GPUBufferUsage.COPY_SRC, mappedAtCreation: true});\n        new Uint32Array(uploadSpeculationCount.getMappedRange()).set([0]);\n        uploadSpeculationCount.unmap();\n        commandEncoder.copyBufferToBuffer(\n            uploadSpeculationCount, 0, this.viewParamBuf, (16 + 8 + 1 + 1) * 4, 4);\n\n        // Reset active blocks for the new viewpoint/isovalue to allow eviction of old blocks\n        var pass = commandEncoder.beginComputePass();\n        pass.setPipeline(this.resetBlockActivePipeline);\n        pass.setBindGroup(0, this.resetBlockActiveBG);\n        pass.dispatchWorkgroups(Math.ceil(this.blockGridDims[0] / 8),\n                                this.blockGridDims[1],\n                                this.blockGridDims[2]);\n        pass.end();\n        this.device.queue.submit([commandEncoder.finish()]);\n\n        var start = performance.now();\n        await this.computeInitialRays(viewParamUpload);\n        var end = performance.now();\n        this.passPerfStats[\"computeInitialRays_ms\"] = end - start;\n        this.passPerfStats[\"totalBlocks\"] = this.totalBlocks;\n        this.passPerfStats[\"volumeDims\"] = this.volumeDims;\n        this.passPerfStats[\"imageSize\"] = [this.width, this.height];\n        this.passPerfStats[\"nPixels\"] = this.width * this.height;\n        this.passPerfStats[\"startSpecCount\"] = this.startSpecCount;\n\n        // Save camera info as well for reproducibility\n        this.passPerfStats[\"eyePos\"] = [eyePos[0], eyePos[1], eyePos[2]];\n        this.passPerfStats[\"eyeDir\"] = [eyeDir[0], eyeDir[1], eyeDir[2]];\n        this.passPerfStats[\"upDir\"] = [upDir[0], upDir[1], upDir[2]];\n\n        var start = performance.now();\n        await this.macroTraverse();\n        var end = performance.now();\n        this.passPerfStats[\"initialMacroTraverse_ms\"] = end - start;\n\n        start = performance.now();\n        var commandEncoder = this.device.createCommandEncoder();\n        var pass = commandEncoder.beginComputePass();\n        pass.setPipeline(this.markRayActivePipeline);\n        pass.setBindGroup(0, this.markRayActiveBG);\n        pass.dispatchWorkgroups(Math.ceil(this.width / 32), this.height, 1);\n        pass.end();\n        // We scan the speculativeRayOffsetBuffer, so copy the ray active information over\n        commandEncoder.copyBufferToBuffer(this.rayAfterActiveBuffer,\n                                          0,\n                                          this.speculativeRayOffsetBuffer,\n                                          0,\n                                          this.width * this.height * 4);\n        this.device.queue.submit([commandEncoder.finish()]);\n        numRaysActive = await this.scanRayAfterActive.scan(this.width * this.height);\n        end = performance.now();\n        this.passPerfStats[\"countInitialActiveRays_ms\"] = end - start;\n        this.passPerfStats[\"initialRaysActive\"] = numRaysActive;\n        console.log(\"Starting rays active: \" + numRaysActive);\n\n        var commandEncoder = this.device.createCommandEncoder();\n        if (this.speculationEnabled) {\n            this.speculationCount =\n                Math.min(Math.floor(this.width * this.height * this.startSpecCount / numRaysActive), 64);\n        } else {\n            this.speculationCount = this.startSpecCount;\n        }\n        console.log(`First pass speculation count is ${this.speculationCount}`);\n        var uploadSpeculationCount = this.device.createBuffer(\n            {size: 4, usage: GPUBufferUsage.COPY_SRC, mappedAtCreation: true});\n        new Uint32Array(uploadSpeculationCount.getMappedRange()).set([\n            this.speculationCount\n        ]);\n        uploadSpeculationCount.unmap();\n        commandEncoder.copyBufferToBuffer(\n            uploadSpeculationCount, 0, this.viewParamBuf, (16 + 8 + 1 + 1) * 4, 4);\n        this.device.queue.submit([commandEncoder.finish()]);\n    }\n    console.log(`++++ Surface pass ${this.numPasses} ++++`);\n    this.passPerfStats[\"passID\"] = this.numPasses;\n    this.passPerfStats[\"speculationCount\"] = this.speculationCount;\n    this.passPerfStats[\"isovalue\"] = isovalue;\n\n    var startPass = performance.now();\n\n    // Reset the number of blocks visible/active each pass to reduce memory usage and skip\n    // computing on inactive blocks\n    {\n        var commandEncoder = this.device.createCommandEncoder();\n        var pass = commandEncoder.beginComputePass();\n        pass.setPipeline(this.resetBlockActivePipeline);\n        pass.setBindGroup(0, this.resetBlockActiveBG);\n        pass.dispatchWorkgroups(Math.ceil(this.blockGridDims[0] / 8),\n                                this.blockGridDims[1],\n                                this.blockGridDims[2]);\n        pass.end();\n        this.device.queue.submit([commandEncoder.finish()]);\n    }\n\n    var start = performance.now();\n    await this.macroTraverse();\n    var end = performance.now();\n    console.log(`Macro Traverse: ${end - start}ms`);\n    this.passPerfStats[\"macroTraverse_ms\"] = end - start;\n\n    start = performance.now();\n    await this.markActiveBlocks();\n    end = performance.now();\n    console.log(`Mark Active Blocks: ${end - start}ms`);\n    this.passPerfStats[\"markActiveBlocks_ms\"] = end - start;\n\n    // Decompress any new blocks needed for the pass\n    start = performance.now();\n    // TODO: PAss the passPerfStats through to the LRU Cache so it can write stats to it\n    var [nBlocksToDecompress, decompressBlockIDs] =\n        await this.lruCache.update(this.blockActiveBuffer, this.passPerfStats);\n    end = performance.now();\n    console.log(`LRU: ${end - start}ms`);\n    this.passPerfStats[\"lruCacheUpdate_ms\"] = end - start;\n    this.passPerfStats[\"nBlocksToDecompress\"] = nBlocksToDecompress;\n\n    this.newDecompressed = nBlocksToDecompress;\n    if (nBlocksToDecompress != 0) {\n        // console.log(`Will decompress ${nBlocksToDecompress} blocks`);\n        start = performance.now();\n        await this.decompressBlocks(nBlocksToDecompress, decompressBlockIDs);\n        end = performance.now();\n        console.log(`Decompress: ${end - start}ms`);\n        this.passPerfStats[\"decompressBlocks_ms\"] = end - start;\n    }\n\n    // Now at this step we can do the block id compaction, compute # blocks visible\n    var numVisibleBlocks = await this.compactVisibleBlockIDs();\n    // this.numVisibleBlocks is just for displaying the value in the UI\n    this.numVisibleBlocks = numVisibleBlocks;\n    this.passPerfStats[\"nVisibleBlocks\"] = numVisibleBlocks;\n    var numRaysActive = 0;\n    if (numVisibleBlocks > 0) {\n        start = performance.now();\n        // Then run a pass to write the compacted blockNumRays and blockRayOffsets instead of #\n        // block buffers\n        numRaysActive = await this.computeBlockRayOffsets(numVisibleBlocks);\n        end = performance.now();\n        this.passPerfStats[\"computeBlockRayOffsets_ms\"] = end - start;\n        this.passPerfStats[\"nRaysActive\"] = numRaysActive;\n        // console.log(`Ray active and offsets: ${end - start}ms`);\n        console.log(`numRaysActive = ${numRaysActive}`);\n        if (numRaysActive > 0) {\n            start = performance.now();\n            await this.sortActiveRaysByBlock(numRaysActive);\n            end = performance.now();\n            this.passPerfStats[\"sortActiveRaysByBlock_ms\"] = end - start;\n            console.log(`Sort active rays by block: ${end - start}ms`);\n\n            start = performance.now();\n            await this.raytraceVisibleBlocks(numVisibleBlocks);\n            end = performance.now();\n            this.passPerfStats[\"raytraceVisibleBlocks_ms\"] = end - start;\n            console.log(`Raytrace blocks: ${end - start}ms`);\n\n            start = performance.now();\n            var commandEncoder = this.device.createCommandEncoder();\n            var pass = commandEncoder.beginComputePass();\n            pass.setPipeline(this.depthCompositePipeline);\n            pass.setBindGroup(0, this.depthCompositeBG);\n            pass.setBindGroup(1, this.depthCompositeBG1);\n            pass.dispatchWorkgroups(\n                Math.ceil(this.width / 32), Math.ceil(this.height * this.startSpecCount / this.speculationCount), 1);\n            pass.end();\n            this.device.queue.submit([commandEncoder.finish()]);\n            await this.device.queue.onSubmittedWorkDone();\n            end = performance.now();\n            this.passPerfStats[\"depthComposite_ms\"] = end - start;\n\n            start = performance.now();\n            var commandEncoder = this.device.createCommandEncoder();\n            var pass = commandEncoder.beginComputePass();\n            pass.setPipeline(this.markRayActivePipeline);\n            pass.setBindGroup(0, this.markRayActiveBG);\n            pass.dispatchWorkgroups(Math.ceil(this.width / 32), this.height, 1);\n            pass.end();\n            // We scan the speculativeRayOffsetBuffer, so copy the ray active information over\n            commandEncoder.copyBufferToBuffer(this.rayAfterActiveBuffer,\n                                              0,\n                                              this.speculativeRayOffsetBuffer,\n                                              0,\n                                              this.width * this.height * 4);\n            this.device.queue.submit([commandEncoder.finish()]);\n        \n            // if (document.getElementById(\"outputImages\").checked) {\n            //     var rayAfterActiveReadback = this.device.createBuffer({\n            //         size: this.width * this.height * 4,\n            //         usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,\n            //     });\n            //     var commandEncoder = this.device.createCommandEncoder();\n\n            //     commandEncoder.copyBufferToBuffer(\n            //         this.rayAfterActiveBuffer, 0, rayAfterActiveReadback, 0, rayAfterActiveReadback.size);\n            //     this.device.queue.submit([commandEncoder.finish()]);\n            //     await this.device.queue.onSubmittedWorkDone();\n        \n            //     await rayAfterActiveReadback.mapAsync(GPUMapMode.READ);\n \n            //     var rayAfterActive = new Uint32Array(rayAfterActiveReadback.getMappedRange());\n                \n            //     var outCanvas = document.getElementById('out-canvas');\n            //     var context = outCanvas.getContext('2d');\n            //     var imgData = context.createImageData(outCanvas.width, outCanvas.height);\n            //     for (var i = 0; i < this.width * this.height; i++) {\n            //         imgData.data[i * 4] = rayAfterActive[i] * 255;\n            //         imgData.data[i * 4 + 1] = rayAfterActive[i] * 255;\n            //         imgData.data[i * 4 + 2] = rayAfterActive[i] * 255;\n            //         imgData.data[i * 4 + 3] = 255;\n            //     }\n            //     context.putImageData(imgData, 0, 0);\n            //     var numPasses = this.numPasses + 1;\n            //     var renderID = this.renderID;\n            //     outCanvas.toBlob(function(b) {\n            //         saveAs(b, `${renderID}_activeMask_pass${numPasses}.png`);\n            //     }, \"image/png\");\n            //     rayAfterActiveReadback.unmap();\n            //     rayAfterActiveReadback.destroy();\n            // }\n\n            numRaysActive = await this.scanRayAfterActive.scan(this.width * this.height);\n            end = performance.now();\n            this.passPerfStats[\"countRemainingActiveRays_ms\"] = end - start;\n            this.passPerfStats[\"endPassRaysActive\"] = numRaysActive;\n\n            if (document.getElementById(\"colorActive\").checked) {\n                var commandEncoder = this.device.createCommandEncoder();\n                commandEncoder.copyTextureToTexture(\n                    { texture: this.renderTarget}, \n                    { texture: this.renderTargetCopy},\n                    { width: this.width, height: this.height, depthOrArrayLayers: 1 });\n                var pass = commandEncoder.beginComputePass();\n                pass.setPipeline(this.colorActiveRaysPipeline);\n                pass.setBindGroup(0, this.colorActiveRaysBG);\n                pass.dispatchWorkgroups(Math.ceil(this.width / 32), this.height, 1);\n                pass.end();\n                this.device.queue.submit([commandEncoder.finish()]);\n            }\n\n            end = performance.now();\n            console.log(`PASS TOOK: ${end - startPass}ms`);\n            // console.log(`num rays active after raytracing: ${numRaysActive}`);\n\n            if (this.speculationEnabled) {\n                var commandEncoder = this.device.createCommandEncoder();\n                this.speculationCount =\n                    Math.min(Math.floor(this.width * this.height * this.startSpecCount / numRaysActive), 64);\n                // console.log(`Next pass speculation count is ${this.speculationCount}`);\n                var uploadSpeculationCount = this.device.createBuffer(\n                    {size: 4, usage: GPUBufferUsage.COPY_SRC, mappedAtCreation: true});\n                new Uint32Array(uploadSpeculationCount.getMappedRange()).set([\n                    this.speculationCount\n                ]);\n                uploadSpeculationCount.unmap();\n                commandEncoder.copyBufferToBuffer(\n                    uploadSpeculationCount, 0, this.viewParamBuf, (16 + 8 + 1 + 1) * 4, 4);\n                this.device.queue.submit([commandEncoder.finish()]);\n                await this.device.queue.onSubmittedWorkDone();\n                console.log(`End pass rays active: ${numRaysActive}`);\n                console.log(`Next pass speculation count: ${this.speculationCount}`);     \n            }\n            console.log(`++++++++++`);\n        }\n    } else {\n        this.passPerfStats[\"nRaysActive\"] = numRaysActive;\n        this.passPerfStats[\"endPassRaysActive\"] = numRaysActive;\n    }\n    var endPass = performance.now();\n    this.passPerfStats[\"totalPassTime_ms\"] = endPass - startPass;\n    this.passPerfStats[\"memory\"] = this.getMemoryStats();\n    this.surfacePerfStats.push(this.passPerfStats);\n\n    console.log(\"=============\");\n    this.totalPassTime += endPass - startPass;\n    this.numPasses += 1;\n    //}\n    this.renderComplete = numRaysActive == 0;\n    this.imageCompleteness = (this.width * this.height - numRaysActive) / (this.width * this.height);\n    this.passPerfStats[\"imageCompleteness\"] = this.imageCompleteness;\n    this.passPerfStats[\"imageCompletenessThreshold\"] = parseFloat(document.getElementById(\"completenessThreshold\").value);\n    if ( this.imageCompleteness >= parseFloat(document.getElementById(\"completenessThreshold\").value)) { \n        console.log(`Render complete with image completeness: ${this.imageCompleteness}`)\n        this.renderComplete = true;        \n    }\n    if (this.renderComplete) {\n        if (this.recordVisibleBlocks) {\n            var nTotalBlocksActive = 0;\n            var nTotalBlocksVisible = 0;\n            for (var i = 0; i < this.totalBlocks; ++i) {\n                if (this.recordBlockActiveList[i] != 0) {\n                    ++nTotalBlocksActive;\n                }\n                if (this.recordBlockVisibleList[i] != 0) {\n                    ++nTotalBlocksVisible;\n                }\n            }\n            console.log(`Total blocks active: ${nTotalBlocksActive} (${\n                nTotalBlocksActive / this.totalBlocks * 100})`);\n            console.log(`Total blocks visible: ${nTotalBlocksVisible} (${\n                nTotalBlocksVisible / this.totalBlocks * 100})`);\n            this.passPerfStats[\"nTotalBlocksActive\"] = nTotalBlocksActive;\n            this.passPerfStats[\"nTotalBlocksVisible\"] = nTotalBlocksVisible;\n        }\n        console.log(`Avg time per pass ${this.totalPassTime / this.numPasses}ms`);\n        console.log(this.passPerfStats);\n    }\n    return this.renderComplete;\n};\n\n// Reset the rays and compute the initial set of rays that intersect the volume\n// Rays that miss the volume will have:\n// dir = vec3(0)\n// block_id = UINT_MAX\n// t = FLT_MAX\n//\n// Rays that hit the volume will have valid directions and t values\nVolumeRaycaster.prototype.computeInitialRays = async function(viewParamUpload) {\n    var commandEncoder = this.device.createCommandEncoder();\n\n    commandEncoder.copyBufferToBuffer(\n        viewParamUpload, 0, this.viewParamBuf, 0, (16 + 8 + 1) * 4);\n\n    var resetRaysPass = commandEncoder.beginComputePass(this.resetRaysPipeline);\n    resetRaysPass.setBindGroup(0, this.resetRaysBG);\n    resetRaysPass.setPipeline(this.resetRaysPipeline);\n    resetRaysPass.dispatchWorkgroups(Math.ceil(this.width / 8), this.height, 1);\n    resetRaysPass.end();\n\n    var initialRaysPass = commandEncoder.beginRenderPass(this.initialRaysPassDesc);\n\n    initialRaysPass.setPipeline(this.initialRaysPipeline);\n    initialRaysPass.setVertexBuffer(0, this.dataBuf);\n    initialRaysPass.setBindGroup(0, this.initialRaysBindGroup);\n    initialRaysPass.draw(12 * 3, 1, 0, 0);\n\n    initialRaysPass.end();\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n};\n\n// Step the active rays forward in the macrocell grid, updating block_id and t.\n// Rays that exit the volume will have block_id = UINT_MAX and t = FLT_MAX\nVolumeRaycaster.prototype.macroTraverse = async function() {\n    // TODO: Would it be worth doing a scan and compact to find just the IDs of the currently\n    // active rays? then only advancing them? We'll do that anyways so it would tell us when\n    // we're done too (no rays active)\n    var commandEncoder = this.device.createCommandEncoder();\n\n    // Reset speculative IDs buffer (here for now but could be moved)\n    var resetSpecIDsPass = commandEncoder.beginComputePass();\n    resetSpecIDsPass.setBindGroup(0, this.resetSpeculativeIDsBG);\n    resetSpecIDsPass.setPipeline(this.resetSpeculativeIDsPipeline);\n    resetSpecIDsPass.dispatchWorkgroups(Math.ceil(this.width / 32), this.height * this.startSpecCount, 1);\n    resetSpecIDsPass.end();\n\n    // Update the current pass index\n    var uploadPassIndex = this.device.createBuffer(\n        {size: 4, usage: GPUBufferUsage.COPY_SRC, mappedAtCreation: true});\n    new Int32Array(uploadPassIndex.getMappedRange()).set([this.numPasses]);\n    uploadPassIndex.unmap();\n\n    commandEncoder.copyBufferToBuffer(this.uploadIsovalueBuf, 0, this.volumeInfoBuffer, 52, 4);\n    commandEncoder.copyBufferToBuffer(\n        uploadPassIndex, 0, this.viewParamBuf, (16 + 8 + 1) * 4, 4);\n\n    var pass = commandEncoder.beginComputePass();\n\n    pass.setPipeline(this.macroTraversePipeline);\n    pass.setBindGroup(0, this.macroTraverseBindGroup);\n    pass.setBindGroup(1, this.macroTraverseRangesBG);\n    pass.dispatchWorkgroups(Math.ceil(this.width / 64), this.height, 1);\n\n    pass.end();\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n\n    // Log speculative ray IDs buffer\n    // var readbackSpeculativeIDBuffer = this.device.createBuffer({\n    //     size: this.speculativeRayIDBuffer.size,\n    //     usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST\n    // });\n    // var commandEncoder = this.device.createCommandEncoder();\n    // commandEncoder.copyBufferToBuffer(\n    //     this.speculativeRayIDBuffer, 0, readbackSpeculativeIDBuffer, 0,\n    //     this.speculativeRayIDBuffer.size);\n    // this.device.queue.submit([commandEncoder.finish()]);\n    // await this.device.queue.onSubmittedWorkDone();\n    // await readbackSpeculativeIDBuffer.mapAsync(GPUMapMode.READ);\n    // var specIDs = new Uint32Array(readbackSpeculativeIDBuffer.getMappedRange());\n    // console.log(specIDs);\n\n    uploadPassIndex.destroy();\n};\n\n// Mark the active and visible blocks for the current viewpoint/isovalue and count the # of\n// rays that we need to process for each block\nVolumeRaycaster.prototype.markActiveBlocks = async function() {\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass();\n\n    // Compute which blocks are active and how many rays each has\n    pass.setPipeline(this.markBlockActivePipeline);\n    pass.setBindGroup(0, this.markBlockActiveBG);\n    pass.setBindGroup(1, this.renderTargetDebugBG);\n    pass.dispatchWorkgroups(Math.ceil(this.width / 32), this.height * this.startSpecCount, 1);\n\n    pass.end();\n\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n\n    if (this.recordVisibleBlocks) {\n        var activeReadback = this.device.createBuffer({\n            size: 4 * this.totalBlocks,\n            usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST\n        });\n        var visibleReadback = this.device.createBuffer({\n            size: 4 * this.totalBlocks,\n            usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST\n        });\n\n        var commandEncoder = this.device.createCommandEncoder();\n        commandEncoder.copyBufferToBuffer(\n            this.blockActiveBuffer, 0, activeReadback, 0, activeReadback.size);\n        commandEncoder.copyBufferToBuffer(\n            this.blockVisibleBuffer, 0, visibleReadback, 0, visibleReadback.size);\n        this.device.queue.submit([commandEncoder.finish()]);\n        await this.device.queue.onSubmittedWorkDone();\n\n        await activeReadback.mapAsync(GPUMapMode.READ);\n        await visibleReadback.mapAsync(GPUMapMode.READ);\n\n        var nActiveBlocks = 0;\n\n        var blockActive = new Uint32Array(activeReadback.getMappedRange());\n        var blockVisible = new Uint32Array(visibleReadback.getMappedRange());\n        for (var i = 0; i < this.totalBlocks; ++i) {\n            if (blockActive[i]) {\n                ++nActiveBlocks;\n            }\n            this.recordBlockActiveList[i] |= blockActive[i];\n            this.recordBlockVisibleList[i] |= blockVisible[i];\n        }\n        this.passPerfStats[\"nActiveBlocks\"] = nActiveBlocks;\n\n        activeReadback.unmap();\n        visibleReadback.unmap();\n\n        activeReadback.destroy();\n        visibleReadback.destroy();\n    }\n};\n\n// Compute the number of visible blocks and compact their IDs. Also produces an offset buffer\n// mapping from original block index -> compacted location\n// - visibleBlockIDBuffer: compact list of active block IDs (visible block IDs)\n// - blockVisibleCompactOffsets: mapping from block ID to compacted location\nVolumeRaycaster.prototype.compactVisibleBlockIDs = async function() {\n    var start = performance.now();\n    // Populate the ray ID, ray block ID and ray active buffers\n    var commandEncoder = this.device.createCommandEncoder();\n\n    // We scan the active block buffer to produce offsets for compacting active block IDs\n    // down This will let us reduce the dispatch size of the ray tracing step to just active\n    // blocks\n    commandEncoder.copyBufferToBuffer(this.blockVisibleBuffer,\n                                      0,\n                                      this.blockVisibleCompactOffsetBuffer,\n                                      0,\n                                      this.totalBlocks * 4);\n    this.device.queue.submit([commandEncoder.finish()]);\n\n    // Compact the visible block IDs down\n    var numVisibleBlocks = await this.scanBlockVisibleOffsets.scan(this.totalBlocks);\n    if (numVisibleBlocks === 0) {\n        return numVisibleBlocks;\n    }\n\n    this.visibleBlockIDBuffer = this.device.createBuffer({\n        size: 4 * numVisibleBlocks,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST\n    });\n\n    await this.streamCompact.compactActiveIDs(this.totalBlocks,\n                                              this.blockVisibleBuffer,\n                                              this.blockVisibleCompactOffsetBuffer,\n                                              this.visibleBlockIDBuffer);\n    var end = performance.now();\n    console.log(`compactVisibleBlockIDs: ${end - start}ms`);\n\n    return numVisibleBlocks;\n};\n\n// Compute the number of visible rays per block, scan the blockNumRaysBuffer storing the output\n// in blockRayOffsetBuffer and return the number of active rays.\nVolumeRaycaster.prototype.computeBlockRayOffsets = async function(numVisibleBlocks) {\n    this.blockNumRaysBuffer = this.device.createBuffer({\n        size: 4 * numVisibleBlocks,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST\n    });\n\n    // Scan result buffer for the block ray offsets (computed by scanning the result in\n    // blockNumRaysBuffer)\n    this.blockRayOffsetBuffer = this.device.createBuffer({\n        size: 4 * this.scanPipeline.getAlignedSize(numVisibleBlocks),\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST\n    });\n    this.scanBlockRayOffsets = this.scanPipeline.prepareGPUInput(\n        this.blockRayOffsetBuffer, this.scanPipeline.getAlignedSize(numVisibleBlocks));\n\n    var countBlockRaysBG = this.device.createBindGroup({\n        layout: this.countBlockRaysBGLayout,\n        entries: [\n            {binding: 0, resource: {buffer: this.volumeInfoBuffer}},\n            {binding: 1, resource: {buffer: this.blockNumRaysBuffer}},\n            {binding: 2, resource: {buffer: this.rayBlockIDBuffer}},\n            {binding: 3, resource: {buffer: this.blockVisibleCompactOffsetBuffer}},\n        ]\n    });\n\n    // Now here we can run a compute pass to compute # of rays per block, this is image size\n    // dispatch so no need to chunk it\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass();\n    pass.setPipeline(this.countBlockRaysPipeline);\n    pass.setBindGroup(0, countBlockRaysBG);\n    pass.dispatchWorkgroups(Math.ceil(this.width / 32), this.height * this.startSpecCount, 1);\n    pass.end();\n\n    commandEncoder.copyBufferToBuffer(this.blockNumRaysBuffer,\n                                      0,\n                                      this.blockRayOffsetBuffer,\n                                      0,\n                                      this.blockNumRaysBuffer.size);\n    await this.device.queue.submit([commandEncoder.finish()]);\n\n    return await this.scanBlockRayOffsets.scan(numVisibleBlocks);\n};\n\n// Sort the active ray IDs by their block ID in ascending order (inactive rays will be at the\n// end).\nVolumeRaycaster.prototype.sortActiveRaysByBlock = async function(numRaysActive) {\n    // Populate the ray ID, ray block ID and ray active buffers\n    var commandEncoder = this.device.createCommandEncoder();\n    var pass = commandEncoder.beginComputePass()\n    pass.setPipeline(this.writeRayAndBlockIDPipeline);\n    pass.setBindGroup(0, this.writeRayAndBlockIDBG);\n    pass.dispatchWorkgroups(Math.ceil(this.width / 8), this.height * this.startSpecCount, 1);\n    pass.end();\n\n    // We scan the rayActiveCompactOffsetBuffer, so copy the ray active information over\n    commandEncoder.copyBufferToBuffer(this.rayActiveBuffer,\n                                      0,\n                                      this.rayActiveCompactOffsetBuffer,\n                                      0,\n                                      this.width * this.height * this.startSpecCount * 4);\n\n    this.device.queue.submit([commandEncoder.finish()]);\n\n    // Scan the active ray buffer and compact the active ray IDs before we sort\n    // so that the sort doesn't have to process such a large number of items\n    // TODO: This is not matching numRaysActive?\n    var nactive = await this.scanRayActive.scan(this.width * this.height * this.startSpecCount);\n    // Should match numRaysActive, sanity check here\n    if (numRaysActive != nactive) {\n        console.log(`nactive ${nactive} doesn't match numRaysActive ${numRaysActive}!?`);\n    }\n    var startCompacts = performance.now();\n    // Compact the active ray IDs and their block IDs down\n    await this.streamCompact.compactActive(this.width * this.height * this.startSpecCount,\n                                           this.rayActiveBuffer,\n                                           this.rayActiveCompactOffsetBuffer,\n                                           this.speculativeRayIDBuffer,\n                                           this.rayIDBuffer);\n\n    await this.streamCompact.compactActiveIDs(this.width * this.height * this.startSpecCount,\n                                              this.rayActiveBuffer,\n                                              this.rayActiveCompactOffsetBuffer,\n                                              this.compactSpeculativeIDBuffer);\n\n    await this.streamCompact.compactActive(this.width * this.height * this.startSpecCount,\n                                           this.rayActiveBuffer,\n                                           this.rayActiveCompactOffsetBuffer,\n                                           this.rayBlockIDBuffer,\n                                           this.compactRayBlockIDBuffer);\n\n    var endCompacts = performance.now();\n    console.log(`sortActiveRaysByBlock: Compacts ${endCompacts - startCompacts}ms`);\n\n    var compactRayBlockIDBufferCopy = this.device.createBuffer({\n        size: this.compactRayBlockIDBuffer.size,\n        usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC\n    });\n    var commandEncoder = this.device.createCommandEncoder();\n    commandEncoder.copyBufferToBuffer(this.compactRayBlockIDBuffer,\n                                      0,\n                                      compactRayBlockIDBufferCopy,\n                                      0,\n                                      this.compactRayBlockIDBuffer.size);\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n\n    var start = performance.now();\n    const sortBuffers = this.sorter.createSortBuffers(numRaysActive);\n    const sortBuffers2 = this.sorter.createSortBuffers(numRaysActive);\n    const sortEncoder = this.device.createCommandEncoder();\n    sortEncoder.copyBufferToBuffer(this.compactRayBlockIDBuffer, 0, sortBuffers.keys, 0, numRaysActive * 4);\n    sortEncoder.copyBufferToBuffer(this.rayIDBuffer, 0, sortBuffers.values, 0, numRaysActive * 4);\n    sortEncoder.copyBufferToBuffer(compactRayBlockIDBufferCopy, 0, sortBuffers2.keys, 0, numRaysActive * 4);\n    sortEncoder.copyBufferToBuffer(this.compactSpeculativeIDBuffer, 0, sortBuffers2.values, 0, numRaysActive * 4);\n    this.sorter.sort(sortEncoder, this.device.queue, sortBuffers);\n    this.sorter.sort(sortEncoder, this.device.queue, sortBuffers2);\n    sortEncoder.copyBufferToBuffer(sortBuffers.keys, 0, this.compactRayBlockIDBuffer, 0, numRaysActive * 4);\n    sortEncoder.copyBufferToBuffer(sortBuffers.values, 0, this.rayIDBuffer, 0, numRaysActive * 4);\n    sortEncoder.copyBufferToBuffer(sortBuffers2.keys, 0, compactRayBlockIDBufferCopy, 0, numRaysActive * 4);\n    sortEncoder.copyBufferToBuffer(sortBuffers2.values, 0, this.compactSpeculativeIDBuffer, 0, numRaysActive * 4);\n    this.device.queue.submit([sortEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n    sortBuffers.destroy();\n    sortBuffers2.destroy();\n    var end = performance.now();\n    console.log(`sortActiveRaysByBlock: Sort rays by blocks: ${end - start}ms`);\n};\n\nVolumeRaycaster.prototype.raytraceVisibleBlocks = async function(numVisibleBlocks) {\n    /*\n    console.log(\n        `Raytracing ${numVisibleBlocks} blocks, speculation count = ${this.speculationCount}`);\n        */\n\n    // Must recreate each time b/c cache buffer will grow\n    var rtBlocksPipelineBG0 = this.device.createBindGroup({\n        layout: this.rtBlocksPipelineBG0Layout,\n        entries: [\n            {binding: 0, resource: {buffer: this.volumeInfoBuffer}},\n            {binding: 1, resource: {buffer: this.lruCache.cache}},\n            {binding: 2, resource: {buffer: this.lruCache.cachedItemSlots}},\n        ]\n    });\n\n    this.combinedBlockInformationBuffer = this.device.createBuffer(\n        {size: numVisibleBlocks * 4 * 4, usage: GPUBufferUsage.STORAGE});\n\n    this.rtBlocksPipelineBG1 = this.device.createBindGroup({\n        layout: this.rtBlocksPipelineBG1Layout,\n        entries: [\n            {binding: 0, resource: {buffer: this.viewParamBuf}},\n            {binding: 1, resource: {buffer: this.rayInformationBuffer}},\n            {binding: 2, resource: {buffer: this.rayIDBuffer}},\n            {binding: 3, resource: {buffer: this.combinedBlockInformationBuffer}},\n            {binding: 4, resource: this.renderTarget.createView()},\n            {binding: 5, resource: {buffer: this.compactSpeculativeIDBuffer}},\n            {binding: 6, resource: {buffer: this.rayRGBZBuffer}},\n        ]\n    });\n\n    this.combineBlockInformationBG = this.device.createBindGroup({\n        layout: this.combineBlockInformationBGLayout,\n        entries: [\n            {binding: 0, resource: {buffer: this.combinedBlockInformationBuffer}},\n            {binding: 1, resource: {buffer: this.visibleBlockIDBuffer}},\n            {binding: 2, resource: {buffer: this.blockRayOffsetBuffer}},\n            {binding: 3, resource: {buffer: this.blockNumRaysBuffer}},\n            {binding: 4, resource: {buffer: this.blockActiveBuffer}},\n        ]\n    });\n\n    var commandEncoder = this.device.createCommandEncoder();\n    {\n        const groupThreadCount = 64;\n        const totalWorkGroups = Math.ceil(numVisibleBlocks / groupThreadCount);\n\n        var pushConstants = (0,_util__WEBPACK_IMPORTED_MODULE_5__.buildPushConstantsBuffer)(\n            this.device, totalWorkGroups, new Uint32Array([numVisibleBlocks]));\n\n        var blockIDOffsetBG = this.device.createBindGroup({\n            layout: this.pushConstantS1B0DynamicLayout,\n            entries: [{binding: 0, resource: {buffer: pushConstants.gpuBuffer, size: 12}}]\n        });\n\n        var pass = commandEncoder.beginComputePass();\n        // First make the combined block information buffer (to fit in 6 storage buffers)\n        // The limit will be bumped up to 8 so we could remove this piece in a bit once\n        // the change lands in Chromium\n        pass.setPipeline(this.combineBlockInformationPipeline);\n        pass.setBindGroup(0, this.combineBlockInformationBG);\n        for (var i = 0; i < pushConstants.nOffsets; ++i) {\n            pass.setBindGroup(1, blockIDOffsetBG, pushConstants.dynamicOffsets, i, 1);\n            pass.dispatchWorkgroups(pushConstants.dispatchSizes[i], 1, 1);\n        }\n        pass.end();\n    }\n\n    {\n        var pushConstants = (0,_util__WEBPACK_IMPORTED_MODULE_5__.buildPushConstantsBuffer)(this.device, numVisibleBlocks);\n\n        var blockIDOffsetBG = this.device.createBindGroup({\n            layout: this.pushConstantS1B0DynamicLayout,\n            entries: [{binding: 0, resource: {buffer: pushConstants.gpuBuffer, size: 8}}]\n        });\n\n        var pass = commandEncoder.beginComputePass();\n        // TODO: Might be worth for data sets where many blocks\n        // project to a lot of pixels to split up the dispatches,\n        // and do multiple dispatch indirect for the blocks touching\n        // many pixels so that we don't serialize so badly on them, while\n        // still doing a single dispatch for all blocks touching <= 64 pixels\n        // since that will be most of the blocks, especially for large data.\n        pass.setPipeline(this.raytraceBlocksPipeline);\n        pass.setBindGroup(0, rtBlocksPipelineBG0);\n        pass.setBindGroup(1, this.rtBlocksPipelineBG1);\n        for (var i = 0; i < pushConstants.nOffsets; ++i) {\n            pass.setBindGroup(2, blockIDOffsetBG, pushConstants.dynamicOffsets, i, 1);\n            pass.dispatchWorkgroups(pushConstants.dispatchSizes[i], 1, 1);\n        }\n        pass.end();\n    }\n\n    this.device.queue.submit([commandEncoder.finish()]);\n    await this.device.queue.onSubmittedWorkDone();\n};\n\nVolumeRaycaster.prototype.decompressBlocks =\n    async function(nBlocksToDecompress, decompressBlockIDs) {\n    var decompressBlocksBG = this.device.createBindGroup({\n        layout: this.decompressBlocksBGLayout,\n        entries: [\n            {\n                binding: 0,\n                resource: {\n                    buffer: this.compressedBuffer,\n                },\n            },\n            {\n                binding: 1,\n                resource: {\n                    buffer: this.volumeInfoBuffer,\n                },\n            },\n            {\n                binding: 2,\n                resource: {\n                    buffer: this.lruCache.cache,\n                },\n            },\n            {\n                binding: 3,\n                resource: {\n                    buffer: decompressBlockIDs,\n                },\n            },\n            {\n                binding: 4,\n                resource: {\n                    buffer: this.lruCache.cachedItemSlots,\n                },\n            },\n        ],\n    });\n\n    var workGroupCount = Math.ceil(nBlocksToDecompress / 64.0);\n    var numChunks = Math.ceil(workGroupCount / this.maxDispatchSize);\n    var dispatchChunkOffsetsBuf = this.device.createBuffer({\n        size: numChunks * 256,\n        usage: GPUBufferUsage.UNIFORM,\n        mappedAtCreation: true,\n    });\n    var map = new Uint32Array(dispatchChunkOffsetsBuf.getMappedRange());\n    for (var i = 0; i < numChunks; ++i) {\n        map[i * 64] = i * this.maxDispatchSize;\n        map[i * 64 + 1] = nBlocksToDecompress;\n    }\n    dispatchChunkOffsetsBuf.unmap();\n\n    // We execute these chunks in separate submissions to avoid having them\n    // execute all at once and trigger a TDR if we're decompressing a large amount of data\n    for (var i = 0; i < numChunks; ++i) {\n        var numWorkGroups =\n            Math.min(workGroupCount - i * this.maxDispatchSize, this.maxDispatchSize);\n        var commandEncoder = this.device.createCommandEncoder();\n        var pass = commandEncoder.beginComputePass();\n        pass.setPipeline(this.decompressBlocksPipeline);\n        pass.setBindGroup(0, decompressBlocksBG);\n        // Have to create bind group here because dynamic offsets are not allowed\n        var decompressBlocksStartOffsetBG = this.device.createBindGroup({\n            layout: this.ub1binding0BGLayout,\n            entries: [\n                {\n                    binding: 0,\n                    resource: {\n                        buffer: dispatchChunkOffsetsBuf,\n                        size: 8,\n                        offset: i * 256,\n                    },\n                },\n            ],\n        });\n        pass.setBindGroup(1, decompressBlocksStartOffsetBG);\n        pass.dispatchWorkgroups(Math.ceil(numWorkGroups), 1, 1);\n        pass.end();\n        this.device.queue.submit([commandEncoder.finish()]);\n    }\n    await this.device.queue.onSubmittedWorkDone();\n    dispatchChunkOffsetsBuf.destroy();\n};\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/volume_raycaster.js?");

/***/ }),

/***/ "./src/volumes.js":
/*!************************!*\
  !*** ./src/volumes.js ***!
  \************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"datasets\": () => (/* binding */ datasets),\n/* harmony export */   \"getVolumeDimensions\": () => (/* binding */ getVolumeDimensions)\n/* harmony export */ });\nvar datasets = {\n    plane_x: {\n        compressionRate: 2,\n        name: \"plane_x_32x32x32_float32.gen.crate2\",\n        range: [0, 1],\n        scale: [1, 1, 1],\n    },\n    sphere: {\n        compressionRate: 2,\n        name: \"sphere_32x32x32_float32.gen.crate2\",\n        range: [0, 1],\n        scale: [1, 1, 1],\n    },\n    quarter_sphere: {\n        compressionRate: 2,\n        name: \"quarter_sphere_32x32x32_float32.gen.crate2\",\n        range: [0, 1],\n        scale: [1, 1, 1],\n    },\n    wavelet: {\n        compressionRate: 2,\n        name: \"wavelet_32x32x32_float32.gen.crate2\",\n        range: [-3, 3],\n        scale: [1, 1, 1],\n    },\n    fuel: {\n        compressionRate: 4,\n        name: \"fuel_64x64x64_uint8.raw.crate4\",\n        range: [10, 255],\n        scale: [1, 1, 1],\n    },\n    aneurism: {\n        compressionRate: 4,\n        name: \"vertebra_512x512x512_uint16.raw.crate4\",\n        range: [550, 2100],\n        scale: [1, 1, 1],\n    },\n    duct: {\n        compressionRate: 2,\n        name: \"duct_193x194x1000_float32.raw.crate2\",\n        range: [0, 4],\n        scale: [1, 1, 1000 / 193],\n        step: 4 / 100\n    },\n    stagbeetle: {\n        compressionRate: 2,\n        name: \"stag_beetle_832x832x494_uint16.raw.crate2\",\n        range: [100, 4096],\n        scale: [1, 1, 1],\n        step: 1.0 / 4096,\n    },\n    foot: {\n        compressionRate: 2,\n        name: \"foot_256x256x256_uint8.raw.crate2\",\n        range: [10, 255],\n        scale: [1, 1, 1],\n    },\n    backpack: {\n        compressionRate: 4,\n        name: \"backpack_512x512x373_uint16.raw.crate4\",\n        range: [200, 4000],\n        scale: [1, 1, 1],\n        step: 1.0 / 3800.0,\n    },\n    // For benchmarks:\n    tacc_turbulence: {\n        compressionRate: 2,\n        name: \"tacc_turbulence_256x256x256_float32.raw.crate2\",\n        range: [1, 10],\n        scale: [1, 1, 1],\n        step: 10 / 100,\n    },\n    skull: {\n        compressionRate: 2,\n        name: \"skull_256x256x256_uint8.raw.crate2\",\n        // range: [10, 255],\n        range: [40, 140],\n        scale: [1, 1, 1],\n    },\n    magnetic: {\n        compressionRate: 4,\n        name: \"magnetic_reconnection_512x512x512_float32.raw.crate4\",\n        range: [0.1, 3.5],\n        scale: [1, 1, 1],\n        step: 1.0 / 8192,\n    },\n    kingsnake: {\n        compressionRate: 2,\n        name: \"kingsnake_1024x1024x795_uint8.raw.crate2\",\n        range: [100, 150],\n        scale: [1, 1, 1],\n    },\n    chameleon: {\n        compressionRate: 2,\n        name: \"chameleon_1024x1024x1080_uint16.raw.crate2\",\n        range: [11000, 33000],\n        scale: [1, 1, 1],\n        step: 1.0 / 8192,\n    },\n    beechnut: {\n        compressionRate: 1,\n        name: \"beechnut_1024x1024x1546_uint16.raw.crate1\",\n        range: [13200, 17000],\n        scale: [1, 1, 1],\n        step: (17000 - 13200) / 100.0,\n    },\n    miranda: {\n        compressionRate: 4,\n        name: \"miranda_1024x1024x1024_float32.raw.crate4\",\n        range: [1.05, 2.9],\n        scale: [1, 1, 1],\n        step: 1.0 / 8192,\n    },\n    jicf_q: {\n        compressionRate: 2,\n        name: \"jicf_q_1408x1080x1100_float32.raw.crate2\",\n        range: [-1, 1],\n        scale: [1, 1, 1],\n        step: 6 / 100\n    },\n    truss: {\n        compressionRate: 2,\n        name: \"synthetic_truss_with_five_defects_1200x1200x1200_float32.raw.crate2\",\n        range: [0, 0.01],\n        scale: [1, 1, 1],\n    },\n    dns_large: {\n        compressionRate: 2,\n        name: \"dns_1920x1440x288_float64.raw.crate2\",\n        range: [0.75, 1.15],\n        scale: [1, 1440 / 1920, 288 / 1920],\n        step: 1.0 / 8192,\n    },\n    richtmyer_meshkov: {\n        compressionRate: 1,\n        name: \"richtmyer_meshkov_2048x2048x1920_uint8.raw.crate1\",\n        range: [40, 190],\n        scale: [1, 1, 1920.0 / 2048.0],\n        step: 1.0,\n    },\n};\n\n\nvar getVolumeDimensions = function(filename) {\n    var fileRegex = /(\\w+)_(\\d+)x(\\d+)x(\\d+)_(\\w+)\\.*/;\n    var m = filename.match(fileRegex);\n    return [parseInt(m[2]), parseInt(m[3]), parseInt(m[4])];\n};\n\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/volumes.js?");

/***/ }),

/***/ "./src/webgl-util.js":
/*!***************************!*\
  !*** ./src/webgl-util.js ***!
  \***************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ArcballCamera\": () => (/* binding */ ArcballCamera),\n/* harmony export */   \"Controller\": () => (/* binding */ Controller)\n/* harmony export */ });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/vec4.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/mat4.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/mat3.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/quat.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/gl-matrix/esm/vec2.js\");\n\n\n// Compute the view frustum in world space from the provided\n// column major projection * view matrix\nvar Frustum = function (projView) {\n  var rows = [gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create()];\n  for (var i = 0; i < rows.length; ++i) {\n    rows[i] = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(\n      rows[i],\n      projView[i],\n      projView[4 + i],\n      projView[8 + i],\n      projView[12 + i]\n    );\n  }\n\n  this.planes = [\n    // -x plane\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.add(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), rows[3], rows[0]),\n    // +x plane\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.sub(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), rows[3], rows[0]),\n    // -y plane\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.add(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), rows[3], rows[1]),\n    // +y plane\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.sub(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), rows[3], rows[1]),\n    // -z plane\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.add(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), rows[3], rows[2]),\n    // +z plane\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.sub(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), rows[3], rows[2]),\n  ];\n\n  // Normalize the planes\n  for (var i = 0; i < this.planes.length; ++i) {\n    var s =\n      1.0 /\n      Math.sqrt(\n        this.planes[i][0] * this.planes[i][0] +\n          this.planes[i][1] * this.planes[i][1] +\n          this.planes[i][2] * this.planes[i][2]\n      );\n    this.planes[i][0] *= s;\n    this.planes[i][1] *= s;\n    this.planes[i][2] *= s;\n    this.planes[i][3] *= s;\n  }\n\n  // Compute the frustum points as well\n  var invProjView = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.invert(gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create(), projView);\n  this.points = [\n    // x_l, y_l, z_l\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), -1, -1, -1, 1),\n    // x_h, y_l, z_l\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), 1, -1, -1, 1),\n    // x_l, y_h, z_l\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), -1, 1, -1, 1),\n    // x_h, y_h, z_l\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), 1, 1, -1, 1),\n    // x_l, y_l, z_h\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), -1, -1, 1, 1),\n    // x_h, y_l, z_h\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), 1, -1, 1, 1),\n    // x_l, y_h, z_h\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), -1, 1, 1, 1),\n    // x_h, y_h, z_h\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), 1, 1, 1, 1),\n  ];\n  for (var i = 0; i < 8; ++i) {\n    this.points[i] = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.transformMat4(\n      this.points[i],\n      this.points[i],\n      invProjView\n    );\n    this.points[i][0] /= this.points[i][3];\n    this.points[i][1] /= this.points[i][3];\n    this.points[i][2] /= this.points[i][3];\n    this.points[i][3] = 1.0;\n  }\n};\n\n// Check if the box is contained in the Frustum\n// The box should be [x_lower, y_lower, z_lower, x_upper, y_upper, z_upper]\n// This is done using Inigo Quilez's approach to help with large\n// bounds: https://www.iquilezles.org/www/articles/frustumcorrect/frustumcorrect.htm\nFrustum.prototype.containsBox = function (box) {\n  // Test the box against each plane\n  var vec = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create();\n  var out = 0;\n  for (var i = 0; i < this.planes.length; ++i) {\n    out = 0;\n    // x_l, y_l, z_l\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(vec, box[0], box[1], box[2], 1.0);\n    out += gl_matrix__WEBPACK_IMPORTED_MODULE_0__.dot(this.planes[i], vec) < 0.0 ? 1 : 0;\n    // x_h, y_l, z_l\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(vec, box[3], box[1], box[2], 1.0);\n    out += gl_matrix__WEBPACK_IMPORTED_MODULE_0__.dot(this.planes[i], vec) < 0.0 ? 1 : 0;\n    // x_l, y_h, z_l\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(vec, box[0], box[4], box[2], 1.0);\n    out += gl_matrix__WEBPACK_IMPORTED_MODULE_0__.dot(this.planes[i], vec) < 0.0 ? 1 : 0;\n    // x_h, y_h, z_l\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(vec, box[3], box[4], box[2], 1.0);\n    out += gl_matrix__WEBPACK_IMPORTED_MODULE_0__.dot(this.planes[i], vec) < 0.0 ? 1 : 0;\n    // x_l, y_l, z_h\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(vec, box[0], box[1], box[5], 1.0);\n    out += gl_matrix__WEBPACK_IMPORTED_MODULE_0__.dot(this.planes[i], vec) < 0.0 ? 1 : 0;\n    // x_h, y_l, z_h\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(vec, box[3], box[1], box[5], 1.0);\n    out += gl_matrix__WEBPACK_IMPORTED_MODULE_0__.dot(this.planes[i], vec) < 0.0 ? 1 : 0;\n    // x_l, y_h, z_h\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(vec, box[0], box[4], box[5], 1.0);\n    out += gl_matrix__WEBPACK_IMPORTED_MODULE_0__.dot(this.planes[i], vec) < 0.0 ? 1 : 0;\n    // x_h, y_h, z_h\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(vec, box[3], box[4], box[5], 1.0);\n    out += gl_matrix__WEBPACK_IMPORTED_MODULE_0__.dot(this.planes[i], vec) < 0.0 ? 1 : 0;\n\n    if (out == 8) {\n      return false;\n    }\n  }\n\n  // Test the frustum against the box\n  out = 0;\n  for (var i = 0; i < 8; ++i) {\n    out += this.points[i][0] > box[3] ? 1 : 0;\n  }\n  if (out == 8) {\n    return false;\n  }\n\n  out = 0;\n  for (var i = 0; i < 8; ++i) {\n    out += this.points[i][0] < box[0] ? 1 : 0;\n  }\n  if (out == 8) {\n    return false;\n  }\n\n  out = 0;\n  for (var i = 0; i < 8; ++i) {\n    out += this.points[i][1] > box[4] ? 1 : 0;\n  }\n  if (out == 8) {\n    return false;\n  }\n\n  out = 0;\n  for (var i = 0; i < 8; ++i) {\n    out += this.points[i][1] < box[1] ? 1 : 0;\n  }\n  if (out == 8) {\n    return false;\n  }\n\n  out = 0;\n  for (var i = 0; i < 8; ++i) {\n    out += this.points[i][2] > box[5] ? 1 : 0;\n  }\n  if (out == 8) {\n    return false;\n  }\n\n  out = 0;\n  for (var i = 0; i < 8; ++i) {\n    out += this.points[i][2] < box[2] ? 1 : 0;\n  }\n  if (out == 8) {\n    return false;\n  }\n  return true;\n};\n\nvar Shader = function (gl, vertexSrc, fragmentSrc) {\n  var self = this;\n  this.program = compileShader(gl, vertexSrc, fragmentSrc);\n\n  var regexUniform = /uniform[^;]+[ ](\\w+);/g;\n  var matchUniformName = /uniform[^;]+[ ](\\w+);/;\n\n  this.uniforms = {};\n\n  var vertexUnifs = vertexSrc.match(regexUniform);\n  var fragUnifs = fragmentSrc.match(regexUniform);\n\n  if (vertexUnifs) {\n    vertexUnifs.forEach(function (unif) {\n      var m = unif.match(matchUniformName);\n      self.uniforms[m[1]] = -1;\n    });\n  }\n  if (fragUnifs) {\n    fragUnifs.forEach(function (unif) {\n      var m = unif.match(matchUniformName);\n      self.uniforms[m[1]] = -1;\n    });\n  }\n\n  for (var unif in this.uniforms) {\n    this.uniforms[unif] = gl.getUniformLocation(this.program, unif);\n  }\n};\n\nShader.prototype.use = function (gl) {\n  gl.useProgram(this.program);\n};\n\n// Compile and link the shaders vert and frag. vert and frag should contain\n// the shader source code for the vertex and fragment shaders respectively\n// Returns the compiled and linked program, or null if compilation or linking failed\nvar compileShader = function (gl, vert, frag) {\n  var vs = gl.createShader(gl.VERTEX_SHADER);\n  gl.shaderSource(vs, vert);\n  gl.compileShader(vs);\n  if (!gl.getShaderParameter(vs, gl.COMPILE_STATUS)) {\n    alert(\"Vertex shader failed to compile, see console for log\");\n    console.log(gl.getShaderInfoLog(vs));\n    return null;\n  }\n\n  var fs = gl.createShader(gl.FRAGMENT_SHADER);\n  gl.shaderSource(fs, frag);\n  gl.compileShader(fs);\n  if (!gl.getShaderParameter(fs, gl.COMPILE_STATUS)) {\n    alert(\"Fragment shader failed to compile, see console for log\");\n    console.log(gl.getShaderInfoLog(fs));\n    return null;\n  }\n\n  var program = gl.createProgram();\n  gl.attachShader(program, vs);\n  gl.attachShader(program, fs);\n  gl.linkProgram(program);\n  if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n    alert(\"Shader failed to link, see console for log\");\n    console.log(gl.getProgramInfoLog(program));\n    return null;\n  }\n  return program;\n};\n\nvar getGLExtension = function (gl, ext) {\n  if (!gl.getExtension(ext)) {\n    alert(\"Missing \" + ext + \" WebGL extension\");\n    return false;\n  }\n  return true;\n};\n\n/* The arcball camera will be placed at the position 'eye', rotating\n * around the point 'center', with the up vector 'up'. 'screenDims'\n * should be the dimensions of the canvas or region taking mouse input\n * so the mouse positions can be normalized into [-1, 1] from the pixel\n * coordinates.\n */\nvar ArcballCamera = function (eye, center, up, zoomSpeed, screenDims) {\n  var veye = gl_matrix__WEBPACK_IMPORTED_MODULE_2__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_2__.create(), eye[0], eye[1], eye[2]);\n  var vcenter = gl_matrix__WEBPACK_IMPORTED_MODULE_2__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_2__.create(), center[0], center[1], center[2]);\n  var vup = gl_matrix__WEBPACK_IMPORTED_MODULE_2__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_2__.create(), up[0], up[1], up[2]);\n  gl_matrix__WEBPACK_IMPORTED_MODULE_2__.normalize(vup, vup);\n\n  var zAxis = gl_matrix__WEBPACK_IMPORTED_MODULE_2__.sub(gl_matrix__WEBPACK_IMPORTED_MODULE_2__.create(), vcenter, veye);\n  var viewDist = gl_matrix__WEBPACK_IMPORTED_MODULE_2__.len(zAxis);\n  gl_matrix__WEBPACK_IMPORTED_MODULE_2__.normalize(zAxis, zAxis);\n\n  var xAxis = gl_matrix__WEBPACK_IMPORTED_MODULE_2__.cross(gl_matrix__WEBPACK_IMPORTED_MODULE_2__.create(), zAxis, vup);\n  gl_matrix__WEBPACK_IMPORTED_MODULE_2__.normalize(xAxis, xAxis);\n\n  var yAxis = gl_matrix__WEBPACK_IMPORTED_MODULE_2__.cross(gl_matrix__WEBPACK_IMPORTED_MODULE_2__.create(), xAxis, zAxis);\n  gl_matrix__WEBPACK_IMPORTED_MODULE_2__.normalize(yAxis, yAxis);\n\n  gl_matrix__WEBPACK_IMPORTED_MODULE_2__.cross(xAxis, zAxis, yAxis);\n  gl_matrix__WEBPACK_IMPORTED_MODULE_2__.normalize(xAxis, xAxis);\n\n  this.zoomSpeed = zoomSpeed;\n  this.invScreen = [1.0 / screenDims[0], 1.0 / screenDims[1]];\n\n  this.centerTranslation = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.fromTranslation(gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create(), center);\n  gl_matrix__WEBPACK_IMPORTED_MODULE_1__.invert(this.centerTranslation, this.centerTranslation);\n\n  var vt = gl_matrix__WEBPACK_IMPORTED_MODULE_2__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_2__.create(), 0, 0, -1.0 * viewDist);\n  this.translation = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.fromTranslation(gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create(), vt);\n\n  var rotMat = gl_matrix__WEBPACK_IMPORTED_MODULE_3__.fromValues(\n    xAxis[0],\n    xAxis[1],\n    xAxis[2],\n    yAxis[0],\n    yAxis[1],\n    yAxis[2],\n    -zAxis[0],\n    -zAxis[1],\n    -zAxis[2]\n  );\n  gl_matrix__WEBPACK_IMPORTED_MODULE_3__.transpose(rotMat, rotMat);\n  this.rotation = gl_matrix__WEBPACK_IMPORTED_MODULE_4__.fromMat3(gl_matrix__WEBPACK_IMPORTED_MODULE_4__.create(), rotMat);\n  gl_matrix__WEBPACK_IMPORTED_MODULE_4__.normalize(this.rotation, this.rotation);\n\n  this.camera = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create();\n  this.invCamera = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create();\n  this.updateCameraMatrix();\n};\n\nArcballCamera.prototype.rotate = function (prevMouse, curMouse) {\n  var mPrev = gl_matrix__WEBPACK_IMPORTED_MODULE_5__.set(\n    gl_matrix__WEBPACK_IMPORTED_MODULE_5__.create(),\n    clamp(prevMouse[0] * 2.0 * this.invScreen[0] - 1.0, -1.0, 1.0),\n    clamp(1.0 - prevMouse[1] * 2.0 * this.invScreen[1], -1.0, 1.0)\n  );\n\n  var mCur = gl_matrix__WEBPACK_IMPORTED_MODULE_5__.set(\n    gl_matrix__WEBPACK_IMPORTED_MODULE_5__.create(),\n    clamp(curMouse[0] * 2.0 * this.invScreen[0] - 1.0, -1.0, 1.0),\n    clamp(1.0 - curMouse[1] * 2.0 * this.invScreen[1], -1.0, 1.0)\n  );\n\n  var mPrevBall = screenToArcball(mPrev);\n  var mCurBall = screenToArcball(mCur);\n  // rotation = curBall * prevBall * rotation\n  this.rotation = gl_matrix__WEBPACK_IMPORTED_MODULE_4__.mul(this.rotation, mPrevBall, this.rotation);\n  this.rotation = gl_matrix__WEBPACK_IMPORTED_MODULE_4__.mul(this.rotation, mCurBall, this.rotation);\n\n  this.updateCameraMatrix();\n};\n\nArcballCamera.prototype.zoom = function (amount) {\n  var vt = gl_matrix__WEBPACK_IMPORTED_MODULE_2__.set(\n    gl_matrix__WEBPACK_IMPORTED_MODULE_2__.create(),\n    0.0,\n    0.0,\n    amount * this.invScreen[1] * this.zoomSpeed\n  );\n  var t = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.fromTranslation(gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create(), vt);\n  this.translation = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.mul(this.translation, t, this.translation);\n  if (this.translation[14] >= -0.2) {\n    this.translation[14] = -0.2;\n  }\n  this.updateCameraMatrix();\n};\n\nArcballCamera.prototype.pan = function (mouseDelta) {\n  var delta = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(\n    gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(),\n    mouseDelta[0] * this.invScreen[0] * Math.abs(this.translation[14]),\n    mouseDelta[1] * this.invScreen[1] * Math.abs(this.translation[14]),\n    0,\n    0\n  );\n  var worldDelta = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), delta, this.invCamera);\n  var translation = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.fromTranslation(gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create(), worldDelta);\n  this.centerTranslation = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.mul(\n    this.centerTranslation,\n    translation,\n    this.centerTranslation\n  );\n  this.updateCameraMatrix();\n};\n\nArcballCamera.prototype.updateCameraMatrix = function () {\n  // camera = translation * rotation * centerTranslation\n  var rotMat = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.fromQuat(gl_matrix__WEBPACK_IMPORTED_MODULE_1__.create(), this.rotation);\n  this.camera = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.mul(this.camera, rotMat, this.centerTranslation);\n  this.camera = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.mul(this.camera, this.translation, this.camera);\n  this.invCamera = gl_matrix__WEBPACK_IMPORTED_MODULE_1__.invert(this.invCamera, this.camera);\n};\n\nArcballCamera.prototype.eyePos = function () {\n  return [this.invCamera[12], this.invCamera[13], this.invCamera[14]];\n};\n\nArcballCamera.prototype.eyeDir = function () {\n  var dir = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), 0.0, 0.0, -1.0, 0.0);\n  dir = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.transformMat4(dir, dir, this.invCamera);\n  dir = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.normalize(dir, dir);\n  return [dir[0], dir[1], dir[2]];\n};\n\nArcballCamera.prototype.upDir = function () {\n  var dir = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_0__.create(), 0.0, 1.0, 0.0, 0.0);\n  dir = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.transformMat4(dir, dir, this.invCamera);\n  dir = gl_matrix__WEBPACK_IMPORTED_MODULE_0__.normalize(dir, dir);\n  return [dir[0], dir[1], dir[2]];\n};\n\nvar screenToArcball = function (p) {\n  var dist = gl_matrix__WEBPACK_IMPORTED_MODULE_5__.dot(p, p);\n  if (dist <= 1.0) {\n    return gl_matrix__WEBPACK_IMPORTED_MODULE_4__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_4__.create(), p[0], p[1], Math.sqrt(1.0 - dist), 0);\n  } else {\n    var unitP = gl_matrix__WEBPACK_IMPORTED_MODULE_5__.normalize(gl_matrix__WEBPACK_IMPORTED_MODULE_5__.create(), p);\n    // cgmath is w, x, y, z\n    // glmatrix is x, y, z, w\n    return gl_matrix__WEBPACK_IMPORTED_MODULE_4__.set(gl_matrix__WEBPACK_IMPORTED_MODULE_4__.create(), unitP[0], unitP[1], 0, 0);\n  }\n};\nvar clamp = function (a, min, max) {\n  return a < min ? min : a > max ? max : a;\n};\n\nvar pointDist = function (a, b) {\n  var v = [b[0] - a[0], b[1] - a[1]];\n  return Math.sqrt(Math.pow(v[0], 2.0) + Math.pow(v[1], 2.0));\n};\n\nvar Buffer = function (capacity, dtype) {\n  this.len = 0;\n  this.capacity = capacity;\n  if (dtype == \"uint8\") {\n    this.buffer = new Uint8Array(capacity);\n  } else if (dtype == \"int8\") {\n    this.buffer = new Int8Array(capacity);\n  } else if (dtype == \"uint16\") {\n    this.buffer = new Uint16Array(capacity);\n  } else if (dtype == \"int16\") {\n    this.buffer = new Int16Array(capacity);\n  } else if (dtype == \"uint32\") {\n    this.buffer = new Uint32Array(capacity);\n  } else if (dtype == \"int32\") {\n    this.buffer = new Int32Array(capacity);\n  } else if (dtype == \"float32\") {\n    this.buffer = new Float32Array(capacity);\n  } else if (dtype == \"float64\") {\n    this.buffer = new Float64Array(capacity);\n  } else {\n    console.log(\"ERROR: unsupported type \" + dtype);\n  }\n};\n\nBuffer.prototype.append = function (buf) {\n  if (this.len + buf.length >= this.capacity) {\n    var newCap = Math.floor(\n      Math.max(this.capacity * 1.5),\n      this.len + buf.length\n    );\n    var tmp = new this.buffer.constructor(newCap);\n    tmp.set(this.buffer);\n\n    this.capacity = newCap;\n    this.buffer = tmp;\n  }\n  this.buffer.set(buf, this.len);\n  this.len += buf.length;\n};\n\nBuffer.prototype.clear = function () {\n  this.len = 0;\n};\n\nBuffer.prototype.stride = function () {\n  return this.buffer.BYTES_PER_ELEMENT;\n};\n\nBuffer.prototype.view = function (offset, length) {\n  return new this.buffer.constructor(this.buffer.buffer, offset, length);\n};\n\n// Various utilities that don't really fit anywhere else\n\n// Parse the hex string to RGB values in [0, 255]\nvar hexToRGB = function (hex) {\n  var val = parseInt(hex.substr(1), 16);\n  var r = (val >> 16) & 255;\n  var g = (val >> 8) & 255;\n  var b = val & 255;\n  return [r, g, b];\n};\n\n// Parse the hex string to RGB values in [0, 1]\nvar hexToRGBf = function (hex) {\n  var c = hexToRGB(hex);\n  return [c[0] / 255.0, c[1] / 255.0, c[2] / 255.0];\n};\n\n/* The controller can register callbacks for various events on a canvas:\n *\n * mousemove: function(prevMouse, curMouse, evt)\n *     receives both regular mouse events, and single-finger drags (sent as a left-click),\n *\n * press: function(curMouse, evt)\n *     receives mouse click and touch start events\n *\n * wheel: function(amount)\n *     mouse wheel scrolling\n *\n * pinch: function(amount)\n *     two finger pinch, receives the distance change between the fingers\n *\n * twoFingerDrag: function(dragVector)\n *     two finger drag, receives the drag movement amount\n */\nvar Controller = function () {\n  this.mousemove = null;\n  this.press = null;\n  this.wheel = null;\n  this.twoFingerDrag = null;\n  this.pinch = null;\n};\n\nController.prototype.registerForCanvas = function (canvas) {\n  var prevMouse = null;\n  var mouseState = [false, false];\n  var self = this;\n  canvas.addEventListener(\"mousemove\", function (evt) {\n    evt.preventDefault();\n    var rect = canvas.getBoundingClientRect();\n    var curMouse = [evt.clientX - rect.left, evt.clientY - rect.top];\n    if (!prevMouse) {\n      prevMouse = [evt.clientX - rect.left, evt.clientY - rect.top];\n    } else if (self.mousemove) {\n      self.mousemove(prevMouse, curMouse, evt);\n    }\n    prevMouse = curMouse;\n  });\n\n  canvas.addEventListener(\"mousedown\", function (evt) {\n    evt.preventDefault();\n    var rect = canvas.getBoundingClientRect();\n    var curMouse = [evt.clientX - rect.left, evt.clientY - rect.top];\n    if (self.press) {\n      self.press(curMouse, evt);\n    }\n  });\n\n  canvas.addEventListener(\"wheel\", function (evt) {\n    evt.preventDefault();\n    if (self.wheel) {\n      self.wheel(-evt.deltaY);\n    }\n  });\n\n  canvas.oncontextmenu = function (evt) {\n    evt.preventDefault();\n  };\n\n  var touches = {};\n  canvas.addEventListener(\"touchstart\", function (evt) {\n    var rect = canvas.getBoundingClientRect();\n    evt.preventDefault();\n    for (var i = 0; i < evt.changedTouches.length; ++i) {\n      var t = evt.changedTouches[i];\n      touches[t.identifier] = [t.clientX - rect.left, t.clientY - rect.top];\n      if (evt.changedTouches.length == 1 && self.press) {\n        self.press(touches[t.identifier], evt);\n      }\n    }\n  });\n\n  canvas.addEventListener(\"touchmove\", function (evt) {\n    evt.preventDefault();\n    var rect = canvas.getBoundingClientRect();\n    var numTouches = Object.keys(touches).length;\n    // Single finger to rotate the camera\n    if (numTouches == 1) {\n      if (self.mousemove) {\n        var t = evt.changedTouches[0];\n        var prevTouch = touches[t.identifier];\n        var curTouch = [t.clientX - rect.left, t.clientY - rect.top];\n        evt.buttons = 1;\n        self.mousemove(prevTouch, curTouch, evt);\n      }\n    } else {\n      var curTouches = {};\n      for (var i = 0; i < evt.changedTouches.length; ++i) {\n        var t = evt.changedTouches[i];\n        curTouches[t.identifier] = [\n          t.clientX - rect.left,\n          t.clientY - rect.top,\n        ];\n      }\n\n      // If some touches didn't change make sure we have them in\n      // our curTouches list to compute the pinch distance\n      // Also get the old touch points to compute the distance here\n      var oldTouches = [];\n      for (t in touches) {\n        if (!(t in curTouches)) {\n          curTouches[t] = touches[t];\n        }\n        oldTouches.push(touches[t]);\n      }\n\n      var newTouches = [];\n      for (t in curTouches) {\n        newTouches.push(curTouches[t]);\n      }\n\n      // Determine if the user is pinching or panning\n      var motionVectors = [\n        gl_matrix__WEBPACK_IMPORTED_MODULE_5__.set(\n          gl_matrix__WEBPACK_IMPORTED_MODULE_5__.create(),\n          newTouches[0][0] - oldTouches[0][0],\n          newTouches[0][1] - oldTouches[0][1]\n        ),\n        gl_matrix__WEBPACK_IMPORTED_MODULE_5__.set(\n          gl_matrix__WEBPACK_IMPORTED_MODULE_5__.create(),\n          newTouches[1][0] - oldTouches[1][0],\n          newTouches[1][1] - oldTouches[1][1]\n        ),\n      ];\n      var motionDirs = [gl_matrix__WEBPACK_IMPORTED_MODULE_5__.create(), gl_matrix__WEBPACK_IMPORTED_MODULE_5__.create()];\n      gl_matrix__WEBPACK_IMPORTED_MODULE_5__.normalize(motionDirs[0], motionVectors[0]);\n      gl_matrix__WEBPACK_IMPORTED_MODULE_5__.normalize(motionDirs[1], motionVectors[1]);\n\n      var pinchAxis = gl_matrix__WEBPACK_IMPORTED_MODULE_5__.set(\n        gl_matrix__WEBPACK_IMPORTED_MODULE_5__.create(),\n        oldTouches[1][0] - oldTouches[0][0],\n        oldTouches[1][1] - oldTouches[0][1]\n      );\n      gl_matrix__WEBPACK_IMPORTED_MODULE_5__.normalize(pinchAxis, pinchAxis);\n\n      var panAxis = gl_matrix__WEBPACK_IMPORTED_MODULE_5__.lerp(\n        gl_matrix__WEBPACK_IMPORTED_MODULE_5__.create(),\n        motionVectors[0],\n        motionVectors[1],\n        0.5\n      );\n      gl_matrix__WEBPACK_IMPORTED_MODULE_5__.normalize(panAxis, panAxis);\n\n      var pinchMotion = [\n        gl_matrix__WEBPACK_IMPORTED_MODULE_5__.dot(pinchAxis, motionDirs[0]),\n        gl_matrix__WEBPACK_IMPORTED_MODULE_5__.dot(pinchAxis, motionDirs[1]),\n      ];\n      var panMotion = [\n        gl_matrix__WEBPACK_IMPORTED_MODULE_5__.dot(panAxis, motionDirs[0]),\n        gl_matrix__WEBPACK_IMPORTED_MODULE_5__.dot(panAxis, motionDirs[1]),\n      ];\n\n      // If we're primarily moving along the pinching axis and in the opposite direction with\n      // the fingers, then the user is zooming.\n      // Otherwise, if the fingers are moving along the same direction they're panning\n      if (\n        self.pinch &&\n        Math.abs(pinchMotion[0]) > 0.5 &&\n        Math.abs(pinchMotion[1]) > 0.5 &&\n        Math.sign(pinchMotion[0]) != Math.sign(pinchMotion[1])\n      ) {\n        // Pinch distance change for zooming\n        var oldDist = pointDist(oldTouches[0], oldTouches[1]);\n        var newDist = pointDist(newTouches[0], newTouches[1]);\n        self.pinch(newDist - oldDist);\n      } else if (\n        self.twoFingerDrag &&\n        Math.abs(panMotion[0]) > 0.5 &&\n        Math.abs(panMotion[1]) > 0.5 &&\n        Math.sign(panMotion[0]) == Math.sign(panMotion[1])\n      ) {\n        // Pan by the average motion of the two fingers\n        var panAmount = gl_matrix__WEBPACK_IMPORTED_MODULE_5__.lerp(\n          gl_matrix__WEBPACK_IMPORTED_MODULE_5__.create(),\n          motionVectors[0],\n          motionVectors[1],\n          0.5\n        );\n        panAmount[1] = -panAmount[1];\n        self.twoFingerDrag(panAmount);\n      }\n    }\n\n    // Update the existing list of touches with the current positions\n    for (var i = 0; i < evt.changedTouches.length; ++i) {\n      var t = evt.changedTouches[i];\n      touches[t.identifier] = [t.clientX - rect.left, t.clientY - rect.top];\n    }\n  });\n\n  var touchEnd = function (evt) {\n    evt.preventDefault();\n    for (var i = 0; i < evt.changedTouches.length; ++i) {\n      var t = evt.changedTouches[i];\n      delete touches[t.identifier];\n    }\n  };\n  canvas.addEventListener(\"touchcancel\", touchEnd);\n  canvas.addEventListener(\"touchend\", touchEnd);\n};\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/webgl-util.js?");

/***/ }),

/***/ "./src/radix_sort/radix_sort.wgsl":
/*!****************************************!*\
  !*** ./src/radix_sort/radix_sort.wgsl ***!
  \****************************************/
/***/ ((module) => {

"use strict";
eval("module.exports = \"// shader implementing gpu radix sort. More information in the beginning of gpu_rs.rs\\n// info: \\n\\n// also the workgroup sizes are added in these prepasses\\n// before the pipeline is started the following constant definitionis are prepended to this shadercode\\n\\n// const histogram_sg_size\\n// const histogram_wg_size\\n// const rs_radix_log2\\n// const rs_radix_size\\n// const rs_keyval_size\\n// const rs_histogram_block_rows\\n// const rs_scatter_block_rows\\n\\nstruct GeneralInfo {\\n    num_keys: u32,\\n    padded_size: u32,\\n    even_pass: u32,\\n    odd_pass: u32,\\n};\\n\\n@group(0) @binding(0)\\nvar<storage, read_write> infos: GeneralInfo;\\n@group(0) @binding(1)\\nvar<storage, read_write> histograms : array<atomic<u32>>;\\n@group(0) @binding(2)\\nvar<storage, read_write> keys : array<u32>;\\n@group(0) @binding(3)\\nvar<storage, read_write> keys_b : array<u32>;\\n@group(0) @binding(4)\\nvar<storage, read_write> payload_a : array<u32>;\\n@group(0) @binding(5)\\nvar<storage, read_write> payload_b : array<u32>;\\n\\n// layout of the histograms buffer\\n//   +---------------------------------+ <-- 0\\n//   | histograms[keyval_size]         |\\n//   +---------------------------------+ <-- keyval_size                           * histo_size\\n//   | partitions[scatter_blocks_ru-1] |\\n//   +---------------------------------+ <-- (keyval_size + scatter_blocks_ru - 1) * histo_size\\n//   | workgroup_ids[keyval_size]      |\\n//   +---------------------------------+ <-- (keyval_size + scatter_blocks_ru - 1) * histo_size + workgroup_ids_size\\n\\n// --------------------------------------------------------------------------------------------------------------\\n// Filling histograms and keys with default values (also resets the pass infos for odd and even scattering)\\n// --------------------------------------------------------------------------------------------------------------\\n@compute @workgroup_size({histogram_wg_size})\\nfn zero_histograms(@builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups) nwg: vec3<u32>) {\\n    if gid.x == 0u {\\n        infos.even_pass = 0u;\\n        infos.odd_pass = 1u;    // has to be one, as on the first call to even pass + 1 % 2 is calculated\\n    }\\n    // here the histograms are set to zero and the partitions are set to 0xfffffffff to avoid sorting problems\\n    let scatter_wg_size = histogram_wg_size;\\n    let scatter_block_kvs = scatter_wg_size * rs_scatter_block_rows;\\n    let scatter_blocks_ru = (infos.num_keys + scatter_block_kvs - 1u) / scatter_block_kvs;\\n\\n    let histo_size = rs_radix_size;\\n    var n = (rs_keyval_size + scatter_blocks_ru - 1u) * histo_size;\\n    let b = n;\\n    if infos.num_keys < infos.padded_size {\\n        n += infos.padded_size - infos.num_keys;\\n    }\\n\\n    let line_size = nwg.x * {histogram_wg_size}u;\\n    for (var cur_index = gid.x; cur_index < n; cur_index += line_size){\\n        if cur_index >= n {\\n            return;\\n        }\\n            \\n        if cur_index  < rs_keyval_size * histo_size {\\n            atomicStore(&histograms[cur_index], 0u);\\n        }\\n        else if cur_index < b {\\n            atomicStore(&histograms[cur_index], 0u);\\n        }\\n        else {\\n            keys[infos.num_keys + cur_index - b] = 0xFFFFFFFFu;\\n        }\\n    }\\n}\\n\\n// --------------------------------------------------------------------------------------------------------------\\n// Calculating the histograms\\n// --------------------------------------------------------------------------------------------------------------\\nvar<workgroup> smem : array<atomic<u32>, rs_radix_size>;\\nvar<private> kv : array<u32, rs_histogram_block_rows>;\\nfn zero_smem(lid: u32) {\\n    if lid < rs_radix_size {\\n        atomicStore(&smem[lid], 0u);\\n    }\\n}\\nfn histogram_pass(pass_: u32, lid: u32) {\\n    zero_smem(lid);\\n    workgroupBarrier();\\n\\n    for (var j = 0u; j < rs_histogram_block_rows; j++) {\\n        let u_val = bitcast<u32>(kv[j]);\\n        let digit = extractBits(u_val, pass_ * rs_radix_log2, rs_radix_log2);\\n        atomicAdd(&smem[digit], 1u);\\n    }\\n\\n    workgroupBarrier();\\n    let histogram_offset = rs_radix_size * pass_ + lid;\\n    if lid < rs_radix_size && atomicLoad(&smem[lid]) >= 0u {\\n        atomicAdd(&histograms[histogram_offset], atomicLoad(&smem[lid]));\\n    }\\n}\\n\\n// the workgrpu_size can be gotten on the cpu by by calling pipeline.get_bind_group_layout(0).unwrap().get_local_workgroup_size();\\nfn fill_kv(wid: u32, lid: u32) {\\n    let rs_block_keyvals: u32 = rs_histogram_block_rows * histogram_wg_size;\\n    let kv_in_offset = wid * rs_block_keyvals + lid;\\n    for (var i = 0u; i < rs_histogram_block_rows; i++) {\\n        let pos = kv_in_offset + i * histogram_wg_size;\\n        kv[i] = keys[pos];\\n    }\\n}\\nfn fill_kv_keys_b(wid: u32, lid: u32) {\\n    let rs_block_keyvals: u32 = rs_histogram_block_rows * histogram_wg_size;\\n    let kv_in_offset = wid * rs_block_keyvals + lid;\\n    for (var i = 0u; i < rs_histogram_block_rows; i++) {\\n        let pos = kv_in_offset + i * histogram_wg_size;\\n        kv[i] = keys_b[pos];\\n    }\\n}\\n@compute @workgroup_size({histogram_wg_size})\\nfn calculate_histogram(@builtin(workgroup_id) wid: vec3<u32>, @builtin(local_invocation_id) lid: vec3<u32>) {\\n    // efficient loading of multiple values\\n    fill_kv(wid.x, lid.x);\\n    \\n    // Accumulate and store histograms for passes\\n    histogram_pass(3u, lid.x);\\n    histogram_pass(2u, lid.x);\\n    histogram_pass(1u, lid.x);\\n    histogram_pass(0u, lid.x);\\n}\\n\\n// --------------------------------------------------------------------------------------------------------------\\n// Prefix sum over histogram\\n// --------------------------------------------------------------------------------------------------------------\\nfn prefix_reduce_smem(lid: u32) {\\n    var offset = 1u;\\n    for (var d = rs_radix_size >> 1u; d > 0u; d = d >> 1u) { // sum in place tree\\n        workgroupBarrier();\\n        if lid < d {\\n            let ai = offset * (2u * lid + 1u) - 1u;\\n            let bi = offset * (2u * lid + 2u) - 1u;\\n            atomicAdd(&smem[bi], atomicLoad(&smem[ai]));\\n        }\\n        offset = offset << 1u;\\n    }\\n\\n    if lid == 0u {\\n        atomicStore(&smem[rs_radix_size - 1u], 0u);\\n    } // clear the last element\\n\\n    for (var d = 1u; d < rs_radix_size; d = d << 1u) {\\n        offset = offset >> 1u;\\n        workgroupBarrier();\\n        if lid < d {\\n            let ai = offset * (2u * lid + 1u) - 1u;\\n            let bi = offset * (2u * lid + 2u) - 1u;\\n\\n            let t = atomicLoad(&smem[ai]);\\n            atomicStore(&smem[ai], atomicLoad(&smem[bi]));\\n            atomicAdd(&smem[bi], t);\\n        }\\n    }\\n}\\n@compute @workgroup_size({prefix_wg_size})\\nfn prefix_histogram(@builtin(workgroup_id) wid: vec3<u32>, @builtin(local_invocation_id) lid: vec3<u32>) {\\n    // the work group  id is the pass, and is inverted in the next line, such that pass 3 is at the first position in the histogram buffer\\n    let histogram_base = (rs_keyval_size - 1u - wid.x) * rs_radix_size;\\n    let histogram_offset = histogram_base + lid.x;\\n    \\n    // the following coode now corresponds to the prefix calc code in fuchsia/../shaders/prefix.h\\n    // however the implementation is taken from https://www.eecs.umich.edu/courses/eecs570/hw/parprefix.pdf listing 2 (better overview, nw subgroup arithmetic)\\n    // this also means that only half the amount of workgroups is spawned (one workgroup calculates for 2 positioons)\\n    // the smemory is used from the previous section\\n    atomicStore(&smem[lid.x], atomicLoad(&histograms[histogram_offset]));\\n    atomicStore(&smem[lid.x + {prefix_wg_size}u], atomicLoad(&histograms[histogram_offset + {prefix_wg_size}u]));\\n\\n    prefix_reduce_smem(lid.x);\\n    workgroupBarrier();\\n\\n    atomicStore(&histograms[histogram_offset], atomicLoad(&smem[lid.x]));\\n    atomicStore(&histograms[histogram_offset + {prefix_wg_size}u], atomicLoad(&smem[lid.x + {prefix_wg_size}u]));\\n}\\n\\n// --------------------------------------------------------------------------------------------------------------\\n// Scattering the keys\\n// --------------------------------------------------------------------------------------------------------------\\n// General note: Only 2 sweeps needed here\\nvar<workgroup> scatter_smem: array<u32, rs_mem_dwords>; // note: rs_mem_dwords is caclulated in the beginngin of gpu_rs.rs\\n//            | Dwords                                    | Bytes\\n//  ----------+-------------------------------------------+--------\\n//  Lookback  | 256                                       | 1 KB\\n//  Histogram | 256                                       | 1 KB\\n//  Prefix    | 4-84                                      | 16-336\\n//  Reorder   | RS_WORKGROUP_SIZE * RS_SCATTER_BLOCK_ROWS | 2-8 KB\\nfn partitions_base_offset() -> u32 { return rs_keyval_size * rs_radix_size;}\\nfn smem_prefix_offset() -> u32 { return rs_radix_size + rs_radix_size;}\\nfn rs_prefix_sweep_0(idx: u32) -> u32 { return scatter_smem[smem_prefix_offset() + rs_mem_sweep_0_offset + idx];}\\nfn rs_prefix_sweep_1(idx: u32) -> u32 { return scatter_smem[smem_prefix_offset() + rs_mem_sweep_1_offset + idx];}\\nfn rs_prefix_sweep_2(idx: u32) -> u32 { return scatter_smem[smem_prefix_offset() + rs_mem_sweep_2_offset + idx];}\\nfn rs_prefix_load(lid: u32, idx: u32) -> u32 { return scatter_smem[rs_radix_size + lid + idx];}\\nfn rs_prefix_store(lid: u32, idx: u32, val: u32) { scatter_smem[rs_radix_size + lid + idx] = val;}\\nfn is_first_local_invocation(lid: u32) -> bool { return lid == 0u;}\\n\\nfn histogram_load(digit: u32) -> u32 {\\n    return atomicLoad(&smem[digit]);\\n}\\n\\nfn histogram_store(digit: u32, count: u32) {\\n    atomicStore(&smem[digit], count);\\n}\\n\\n\\nconst rs_partition_mask_status : u32 = 0xC0000000u;\\nconst rs_partition_mask_count : u32 = 0x3FFFFFFFu;\\nvar<private> kr : array<u32, rs_scatter_block_rows>;\\nvar<private> pv : array<u32, rs_scatter_block_rows>;\\n\\nfn fill_kv_even(wid: u32, lid: u32) {\\n    let subgroup_id = lid / histogram_sg_size;\\n    let subgroup_invoc_id = lid - subgroup_id * histogram_sg_size;\\n    let subgroup_keyvals = rs_scatter_block_rows * histogram_sg_size;\\n    let rs_block_keyvals: u32 = rs_histogram_block_rows * histogram_wg_size;\\n    let kv_in_offset = wid * rs_block_keyvals + subgroup_id * subgroup_keyvals + subgroup_invoc_id;\\n    for (var i = 0u; i < rs_histogram_block_rows; i++) {\\n        let pos = kv_in_offset + i * histogram_sg_size;\\n        kv[i] = keys[pos];\\n    }\\n    for (var i = 0u; i < rs_histogram_block_rows; i++) {\\n        let pos = kv_in_offset + i * histogram_sg_size;\\n        pv[i] = payload_a[pos];\\n    }\\n}\\n\\nfn fill_kv_odd(wid: u32, lid: u32) {\\n    let subgroup_id = lid / histogram_sg_size;\\n    let subgroup_invoc_id = lid - subgroup_id * histogram_sg_size;\\n    let subgroup_keyvals = rs_scatter_block_rows * histogram_sg_size;\\n    let rs_block_keyvals: u32 = rs_histogram_block_rows * histogram_wg_size;\\n    let kv_in_offset = wid * rs_block_keyvals + subgroup_id * subgroup_keyvals + subgroup_invoc_id;\\n    for (var i = 0u; i < rs_histogram_block_rows; i++) {\\n        let pos = kv_in_offset + i * histogram_sg_size;\\n        kv[i] = keys_b[pos];\\n    }\\n    for (var i = 0u; i < rs_histogram_block_rows; i++) {\\n        let pos = kv_in_offset + i * histogram_sg_size;\\n        pv[i] = payload_b[pos];\\n    }\\n}\\nfn scatter(pass_: u32, lid: vec3<u32>, gid: vec3<u32>, wid: vec3<u32>, nwg: vec3<u32>, partition_status_invalid: u32, partition_status_reduction: u32, partition_status_prefix: u32) {\\n    let partition_mask_invalid = partition_status_invalid << 30u;\\n    let partition_mask_reduction = partition_status_reduction << 30u;\\n    let partition_mask_prefix = partition_status_prefix << 30u;\\n    // kv_filling is done in the scatter_even and scatter_odd functions to account for front and backbuffer switch\\n    // in the reference there is a nulling of the smmem here, was moved to line 251 as smem is used in the code until then\\n\\n    // The following implements conceptually the same as the\\n    // Emulate a \\\"match\\\" operation with broadcasts for small subgroup sizes (line 665 ff in scatter.glsl)\\n    // The difference however is, that instead of using subrgoupBroadcast each thread stores\\n    // its current number in the smem at lid.x, and then looks up their neighbouring values of the subgroup\\n    let subgroup_id = lid.x / histogram_sg_size;\\n    let subgroup_offset = subgroup_id * histogram_sg_size;\\n    let subgroup_tid = lid.x - subgroup_offset;\\n    let subgroup_count = {scatter_wg_size}u / histogram_sg_size;\\n    for (var i = 0u; i < rs_scatter_block_rows; i++) {\\n        let u_val = bitcast<u32>(kv[i]);\\n        let digit = extractBits(u_val, pass_ * rs_radix_log2, rs_radix_log2);\\n        atomicStore(&smem[lid.x], digit);\\n        var count = 0u;\\n        var rank = 0u;\\n        \\n        for (var j = 0u; j < histogram_sg_size; j++) {\\n            if atomicLoad(&smem[subgroup_offset + j]) == digit {\\n                count += 1u;\\n                if j <= subgroup_tid {\\n                    rank += 1u;\\n                }\\n            }\\n        }\\n        \\n        kr[i] = (count << 16u) | rank;\\n    }\\n    \\n    zero_smem(lid.x);   // now zeroing the smmem as we are now accumulating the histogram there\\n    workgroupBarrier();\\n\\n    // The final histogram is stored in the smem buffer\\n    for (var i = 0u; i < subgroup_count; i++) {\\n        if subgroup_id == i {\\n            for (var j = 0u; j < rs_scatter_block_rows; j++) {\\n                let v = bitcast<u32>(kv[j]);\\n                let digit = extractBits(v, pass_ * rs_radix_log2, rs_radix_log2);\\n                let prev = histogram_load(digit);\\n                let rank = kr[j] & 0xFFFFu;\\n                let count = kr[j] >> 16u;\\n                kr[j] = prev + rank;\\n\\n                if rank == count {\\n                    histogram_store(digit, (prev + count));\\n                }\\n                \\n                // TODO: check if the barrier here is needed\\n            }            \\n        }\\n        workgroupBarrier();\\n    }\\n    // kr filling is now done and contains the total offset for each value to be able to \\n    // move the values into order without having any collisions\\n    \\n    // we do not check for single work groups (is currently not assumed to occur very often)\\n    let partition_offset = lid.x + partitions_base_offset();    // is correct, the partitions pointer does not change\\n    let partition_base = wid.x * rs_radix_size;\\n    if wid.x == 0u {\\n        // special treating for the first workgroup as the data might be read back by later workgroups\\n        // corresponds to rs_first_prefix_store\\n        let hist_offset = pass_ * rs_radix_size + lid.x;\\n        if lid.x < rs_radix_size {\\n            // let exc = histograms[hist_offset];\\n            let exc = atomicLoad(&histograms[hist_offset]);\\n            let red = histogram_load(lid.x);// scatter_smem[rs_keyval_size + lid.x];\\n            \\n            scatter_smem[lid.x] = exc;\\n            \\n            let inc = exc + red;\\n\\n            atomicStore(&histograms[partition_offset], inc | partition_mask_prefix);\\n        }\\n    }\\n    else {\\n        // standard case for the \\\"inbetween\\\" workgroups\\n        \\n        // rs_reduction_store, only for inbetween workgroups\\n        if lid.x < rs_radix_size && wid.x < nwg.x - 1u {\\n            let red = histogram_load(lid.x);\\n            atomicStore(&histograms[partition_offset + partition_base], red | partition_mask_reduction);\\n        }\\n        \\n        // rs_loopback_store\\n        if lid.x < rs_radix_size {\\n            var partition_base_prev = partition_base - rs_radix_size;\\n            var exc                 = 0u;\\n\\n            // Note: Each workgroup invocation can proceed independently.\\n            // Subgroups and workgroups do NOT have to coordinate.\\n            while true {\\n                //let prev = atomicLoad(&histograms[partition_offset]);// histograms[partition_offset + partition_base_prev];\\n                let prev = atomicLoad(&histograms[partition_base_prev + partition_offset]);// histograms[partition_offset + partition_base_prev];\\n                if (prev & rs_partition_mask_status) == partition_mask_invalid {\\n                    continue;\\n                }\\n                exc += prev & rs_partition_mask_count;\\n                if (prev & rs_partition_mask_status) != partition_mask_prefix {\\n                    // continue accumulating reduction\\n                    partition_base_prev -= rs_radix_size;\\n                    continue;\\n                }\\n\\n                // otherwise save the exclusive scan and atomically transform the\\n                // reduction into an inclusive prefix status math: reduction + 1 = prefix\\n                scatter_smem[lid.x] = exc;\\n\\n                if wid.x < nwg.x - 1u { // only store when inbetween, skip for last workgrup\\n                    atomicAdd(&histograms[partition_offset + partition_base], exc | (1u << 30u));\\n                }\\n                break;\\n            }\\n        }\\n    }\\n    // special case for last workgroup is also done in the \\\"inbetween\\\" case\\n    \\n    // compute exclusive prefix scan of histogram\\n    // corresponds to rs_prefix\\n    // TODO make sure that the data is put into smem\\n    prefix_reduce_smem(lid.x);\\n    workgroupBarrier();\\n\\n    // convert keyval rank to local index, corresponds to rs_rank_to_local\\n    for (var i = 0u; i < rs_scatter_block_rows; i++) {\\n        let v = bitcast<u32>(kv[i]);\\n        let digit = extractBits(v, pass_ * rs_radix_log2, rs_radix_log2);\\n        let exc   = histogram_load(digit);\\n        let idx   = exc + kr[i];\\n        \\n        kr[i] |= (idx << 16u);\\n    }\\n    workgroupBarrier();\\n    \\n    // reorder kv[] and kr[], corresponds to rs_reorder\\n    let smem_reorder_offset = rs_radix_size;\\n    let smem_base = smem_reorder_offset + lid.x;  // as we are in smem, the radix_size offset is not needed\\n\\n    // keyvalues ----------------------------------------------\\n    // store keyval to sorted location\\n    for (var j = 0u; j < rs_scatter_block_rows; j++) {\\n        let smem_idx = smem_reorder_offset + (kr[j] >> 16u) - 1u;\\n        \\n        scatter_smem[smem_idx] = bitcast<u32>(kv[j]);\\n    }\\n    workgroupBarrier();\\n\\n    // Load keyval dword from sorted location\\n    for (var j = 0u; j < rs_scatter_block_rows; j++) {\\n        kv[j] = scatter_smem[smem_base + j * {scatter_wg_size}u];\\n    }\\n    workgroupBarrier();\\n    // payload ----------------------------------------------\\n    // store payload to sorted location\\n    for (var j = 0u; j < rs_scatter_block_rows; j++) {\\n        let smem_idx = smem_reorder_offset + (kr[j] >> 16u) - 1u;\\n        \\n        scatter_smem[smem_idx] = pv[j];\\n    }\\n    workgroupBarrier();\\n\\n    // Load payload dword from sorted location\\n    for (var j = 0u; j < rs_scatter_block_rows; j++) {\\n        pv[j] = scatter_smem[smem_base + j * {scatter_wg_size}u];\\n    }\\n    workgroupBarrier();\\n    \\n    // store the digit-index to sorted location\\n    for (var i = 0u; i < rs_scatter_block_rows; i++) {\\n        let smem_idx = smem_reorder_offset + (kr[i] >> 16u) - 1u;\\n        scatter_smem[smem_idx] = kr[i];\\n    }\\n    workgroupBarrier();\\n\\n    // Load kr[] from sorted location -- we only need the rank\\n    for (var i = 0u; i < rs_scatter_block_rows; i++) {\\n        kr[i] = scatter_smem[smem_base + i * {scatter_wg_size}u] & 0xFFFFu;\\n    }\\n    \\n    // convert local index to a global index, corresponds to rs_local_to_global\\n    for (var i = 0u; i < rs_scatter_block_rows; i++) {\\n        let v = bitcast<u32>(kv[i]);\\n        let digit = extractBits(v, pass_ * rs_radix_log2, rs_radix_log2);\\n        let exc   = scatter_smem[digit];\\n\\n        kr[i] += exc - 1u;\\n    }\\n    \\n    // the storing is done in the scatter_even and scatter_odd functions as the front and back buffer changes\\n}\\n\\n@compute @workgroup_size({scatter_wg_size})\\nfn scatter_even(@builtin(workgroup_id) wid: vec3<u32>, @builtin(local_invocation_id) lid: vec3<u32>, @builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups) nwg: vec3<u32>) {\\n    if gid.x == 0u {\\n        infos.odd_pass = (infos.odd_pass + 1u) % 2u; // for this to work correctly the odd_pass has to start 1\\n    }\\n    let cur_pass = infos.even_pass * 2u;\\n    \\n    // load from keys, store to keys_b\\n    fill_kv_even(wid.x, lid.x);\\n\\n    let partition_status_invalid = 0u;\\n    let partition_status_reduction = 1u;\\n    let partition_status_prefix = 2u;\\n    scatter(cur_pass, lid, gid, wid, nwg, partition_status_invalid, partition_status_reduction, partition_status_prefix);\\n\\n    // store keyvals to their new locations, corresponds to rs_store\\n    for (var i = 0u; i < rs_scatter_block_rows; i++) {\\n        keys_b[kr[i]] = kv[i];\\n    }\\n    for (var i = 0u; i < rs_scatter_block_rows; i++) {\\n        payload_b[kr[i]] = pv[i];\\n    }\\n}\\n@compute @workgroup_size({scatter_wg_size})\\nfn scatter_odd(@builtin(workgroup_id) wid: vec3<u32>, @builtin(local_invocation_id) lid: vec3<u32>, @builtin(global_invocation_id) gid: vec3<u32>, @builtin(num_workgroups) nwg: vec3<u32>) {\\n    if gid.x == 0u {\\n        infos.even_pass = (infos.even_pass + 1u) % 2u; // for this to work correctly the even_pass has to start at 0\\n    }\\n    let cur_pass = infos.odd_pass * 2u + 1u;\\n\\n    // load from keys_b, store to keys\\n    fill_kv_odd(wid.x, lid.x);\\n\\n    let partition_status_invalid = 2u;\\n    let partition_status_reduction = 3u;\\n    let partition_status_prefix = 0u;\\n    scatter(cur_pass, lid, gid, wid, nwg, partition_status_invalid, partition_status_reduction, partition_status_prefix);\\n\\n    // store keyvals to their new locations, corresponds to rs_store\\n    for (var i = 0u; i < rs_scatter_block_rows; i++) {\\n        keys[kr[i]] = kv[i];\\n    }\\n    for (var i = 0u; i < rs_scatter_block_rows; i++) {\\n        payload_a[kr[i]] = pv[i];\\n    }\\n\\n    // the indirect buffer is reset after scattering via write buffer, see record_scatter_indirect for details\\n}\\n\";\n\n//# sourceURL=webpack://webgpu-prog-iso/./src/radix_sort/radix_sort.wgsl?");

/***/ }),

/***/ "./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js":
/*!*****************************************************************!*\
  !*** ./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InferenceSession\": () => (/* binding */ uc),\n/* harmony export */   \"TRACE\": () => (/* binding */ Bn),\n/* harmony export */   \"TRACE_FUNC_BEGIN\": () => (/* binding */ yt),\n/* harmony export */   \"TRACE_FUNC_END\": () => (/* binding */ ut),\n/* harmony export */   \"Tensor\": () => (/* binding */ tt),\n/* harmony export */   \"TrainingSession\": () => (/* binding */ dc),\n/* harmony export */   \"default\": () => (/* binding */ h$),\n/* harmony export */   \"env\": () => (/* binding */ ke),\n/* harmony export */   \"registerBackend\": () => (/* binding */ lr)\n/* harmony export */ });\n/*!\n * ONNX Runtime Web v1.18.0\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar Oi=Object.defineProperty;var nc=Object.getOwnPropertyDescriptor;var ic=Object.getOwnPropertyNames;var oc=Object.prototype.hasOwnProperty;var j=(e,t)=>()=>(e&&(t=e(e=0)),t);var Er=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),kr=(e,t)=>{for(var r in t)Oi(e,r,{get:t[r],enumerable:!0})},ac=(e,t,r,n)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let i of ic(t))!oc.call(e,i)&&i!==r&&Oi(e,i,{get:()=>t[i],enumerable:!(n=nc(t,i))||n.enumerable});return e};var sr=e=>ac(Oi({},\"__esModule\",{value:!0}),e);var kn,ur,lr,sc,On,Pn=j(()=>{\"use strict\";kn=new Map,ur=[],lr=(e,t,r)=>{if(t&&typeof t.init==\"function\"&&typeof t.createInferenceSessionHandler==\"function\"){let n=kn.get(e);if(n===void 0)kn.set(e,{backend:t,priority:r});else{if(n.priority>r)return;if(n.priority===r&&n.backend!==t)throw new Error(`cannot register backend \"${e}\" using priority ${r}`)}if(r>=0){let i=ur.indexOf(e);i!==-1&&ur.splice(i,1);for(let s=0;s<ur.length;s++)if(kn.get(ur[s]).priority<=r){ur.splice(s,0,e);return}ur.push(e)}return}throw new TypeError(\"not a valid backend\")},sc=async e=>{let t=kn.get(e);if(!t)return\"backend not found.\";if(t.initialized)return t.backend;if(t.aborted)return t.error;{let r=!!t.initPromise;try{return r||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(n){return r||(t.error=`${n}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},On=async e=>{let t=e.executionProviders||[],r=t.map(c=>typeof c==\"string\"?c:c.name),n=r.length===0?ur:r,i,s=[],a=new Set;for(let c of n){let m=await sc(c);typeof m==\"string\"?s.push({name:c,err:m}):(i||(i=m),i===m&&a.add(c))}if(!i)throw new Error(`no available backend found. ERR: ${s.map(c=>`[${c.name}] ${c.err}`).join(\", \")}`);for(let{name:c,err:m}of s)r.includes(c)&&console.warn(`removing requested execution provider \"${c}\" from session options because it is not available: ${m}`);let d=t.filter(c=>a.has(typeof c==\"string\"?c:c.name));return[i,new Proxy(e,{get:(c,m)=>m===\"executionProviders\"?d:Reflect.get(c,m)})]}});var ra=j(()=>{\"use strict\";Pn()});var na,ia=j(()=>{\"use strict\";na=\"1.18.0\"});var oa,gt,Pi=j(()=>{\"use strict\";ia();oa=\"warning\",gt={wasm:{},webgl:{},webgpu:{},versions:{common:na},set logLevel(e){if(e!==void 0){if(typeof e!=\"string\"||[\"verbose\",\"info\",\"warning\",\"error\",\"fatal\"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);oa=e}},get logLevel(){return oa}};Object.defineProperty(gt,\"logLevel\",{enumerable:!0})});var ke,aa=j(()=>{\"use strict\";Pi();ke=gt});var sa,ua,la=j(()=>{\"use strict\";sa=(e,t)=>{let r=typeof document<\"u\"?document.createElement(\"canvas\"):new OffscreenCanvas(1,1);r.width=e.dims[3],r.height=e.dims[2];let n=r.getContext(\"2d\");if(n!=null){let i,s;t?.tensorLayout!==void 0&&t.tensorLayout===\"NHWC\"?(i=e.dims[2],s=e.dims[3]):(i=e.dims[3],s=e.dims[2]);let a=t?.format!==void 0?t.format:\"RGB\",d=t?.norm,c,m;d===void 0||d.mean===void 0?c=[255,255,255,255]:typeof d.mean==\"number\"?c=[d.mean,d.mean,d.mean,d.mean]:(c=[d.mean[0],d.mean[1],d.mean[2],0],d.mean[3]!==void 0&&(c[3]=d.mean[3])),d===void 0||d.bias===void 0?m=[0,0,0,0]:typeof d.bias==\"number\"?m=[d.bias,d.bias,d.bias,d.bias]:(m=[d.bias[0],d.bias[1],d.bias[2],0],d.bias[3]!==void 0&&(m[3]=d.bias[3]));let u=s*i,g=0,b=u,$=u*2,w=-1;a===\"RGBA\"?(g=0,b=u,$=u*2,w=u*3):a===\"RGB\"?(g=0,b=u,$=u*2):a===\"RBG\"&&(g=0,$=u,b=u*2);for(let x=0;x<s;x++)for(let C=0;C<i;C++){let T=(e.data[g++]-m[0])*c[0],S=(e.data[b++]-m[1])*c[1],E=(e.data[$++]-m[2])*c[2],k=w===-1?255:(e.data[w++]-m[3])*c[3];n.fillStyle=\"rgba(\"+T+\",\"+S+\",\"+E+\",\"+k+\")\",n.fillRect(C,x,1,1)}if(\"toDataURL\"in r)return r.toDataURL();throw new Error(\"toDataURL is not supported\")}else throw new Error(\"Can not access image data\")},ua=(e,t)=>{let r=typeof document<\"u\"?document.createElement(\"canvas\").getContext(\"2d\"):new OffscreenCanvas(1,1).getContext(\"2d\"),n;if(r!=null){let i,s,a;t?.tensorLayout!==void 0&&t.tensorLayout===\"NHWC\"?(i=e.dims[2],s=e.dims[1],a=e.dims[3]):(i=e.dims[3],s=e.dims[2],a=e.dims[1]);let d=t!==void 0&&t.format!==void 0?t.format:\"RGB\",c=t?.norm,m,u;c===void 0||c.mean===void 0?m=[255,255,255,255]:typeof c.mean==\"number\"?m=[c.mean,c.mean,c.mean,c.mean]:(m=[c.mean[0],c.mean[1],c.mean[2],255],c.mean[3]!==void 0&&(m[3]=c.mean[3])),c===void 0||c.bias===void 0?u=[0,0,0,0]:typeof c.bias==\"number\"?u=[c.bias,c.bias,c.bias,c.bias]:(u=[c.bias[0],c.bias[1],c.bias[2],0],c.bias[3]!==void 0&&(u[3]=c.bias[3]));let g=s*i;if(t!==void 0&&(t.format!==void 0&&a===4&&t.format!==\"RGBA\"||a===3&&t.format!==\"RGB\"&&t.format!==\"BGR\"))throw new Error(\"Tensor format doesn't match input tensor dims\");let b=4,$=0,w=1,x=2,C=3,T=0,S=g,E=g*2,k=-1;d===\"RGBA\"?(T=0,S=g,E=g*2,k=g*3):d===\"RGB\"?(T=0,S=g,E=g*2):d===\"RBG\"&&(T=0,E=g,S=g*2),n=r.createImageData(i,s);for(let P=0;P<s*i;$+=b,w+=b,x+=b,C+=b,P++)n.data[$]=(e.data[T++]-u[0])*m[0],n.data[w]=(e.data[S++]-u[1])*m[1],n.data[x]=(e.data[E++]-u[2])*m[2],n.data[C]=k===-1?255:(e.data[k++]-u[3])*m[3]}else throw new Error(\"Can not access image data\");return n}});var Ri,da,ca,pa,ma,fa=j(()=>{\"use strict\";Rn();Ri=(e,t)=>{if(e===void 0)throw new Error(\"Image buffer must be defined\");if(t.height===void 0||t.width===void 0)throw new Error(\"Image height and width must be defined\");if(t.tensorLayout===\"NHWC\")throw new Error(\"NHWC Tensor layout is not supported yet\");let{height:r,width:n}=t,i=t.norm??{mean:255,bias:0},s,a;typeof i.mean==\"number\"?s=[i.mean,i.mean,i.mean,i.mean]:s=[i.mean[0],i.mean[1],i.mean[2],i.mean[3]??255],typeof i.bias==\"number\"?a=[i.bias,i.bias,i.bias,i.bias]:a=[i.bias[0],i.bias[1],i.bias[2],i.bias[3]??0];let d=t.format!==void 0?t.format:\"RGBA\",c=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:\"RGB\",m=r*n,u=c===\"RGBA\"?new Float32Array(m*4):new Float32Array(m*3),g=4,b=0,$=1,w=2,x=3,C=0,T=m,S=m*2,E=-1;d===\"RGB\"&&(g=3,b=0,$=1,w=2,x=-1),c===\"RGBA\"?E=m*3:c===\"RBG\"?(C=0,S=m,T=m*2):c===\"BGR\"&&(S=0,T=m,C=m*2);for(let P=0;P<m;P++,b+=g,w+=g,$+=g,x+=g)u[C++]=(e[b]+a[0])/s[0],u[T++]=(e[$]+a[1])/s[1],u[S++]=(e[w]+a[2])/s[2],E!==-1&&x!==-1&&(u[E++]=(e[x]+a[3])/s[3]);return c===\"RGBA\"?new ot(\"float32\",u,[1,4,r,n]):new ot(\"float32\",u,[1,3,r,n])},da=async(e,t)=>{let r=typeof HTMLImageElement<\"u\"&&e instanceof HTMLImageElement,n=typeof ImageData<\"u\"&&e instanceof ImageData,i=typeof ImageBitmap<\"u\"&&e instanceof ImageBitmap,s=typeof e==\"string\",a,d=t??{},c=()=>{if(typeof document<\"u\")return document.createElement(\"canvas\");if(typeof OffscreenCanvas<\"u\")return new OffscreenCanvas(1,1);throw new Error(\"Canvas is not supported\")},m=u=>u instanceof HTMLCanvasElement||u instanceof OffscreenCanvas?u.getContext(\"2d\"):null;if(r){let u=c();u.width=e.width,u.height=e.height;let g=m(u);if(g!=null){let b=e.height,$=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(b=t.resizedHeight,$=t.resizedWidth),t!==void 0){if(d=t,t.tensorFormat!==void 0)throw new Error(\"Image input config format must be RGBA for HTMLImageElement\");d.tensorFormat=\"RGBA\",d.height=b,d.width=$}else d.tensorFormat=\"RGBA\",d.height=b,d.width=$;g.drawImage(e,0,0),a=g.getImageData(0,0,$,b).data}else throw new Error(\"Can not access image data\")}else if(n){let u,g;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(u=t.resizedHeight,g=t.resizedWidth):(u=e.height,g=e.width),t!==void 0&&(d=t),d.format=\"RGBA\",d.height=u,d.width=g,t!==void 0){let b=c();b.width=g,b.height=u;let $=m(b);if($!=null)$.putImageData(e,0,0),a=$.getImageData(0,0,g,u).data;else throw new Error(\"Can not access image data\")}else a=e.data}else if(i){if(t===void 0)throw new Error(\"Please provide image config with format for Imagebitmap\");let u=c();u.width=e.width,u.height=e.height;let g=m(u);if(g!=null){let b=e.height,$=e.width;return g.drawImage(e,0,0,$,b),a=g.getImageData(0,0,$,b).data,d.height=b,d.width=$,Ri(a,d)}else throw new Error(\"Can not access image data\")}else{if(s)return new Promise((u,g)=>{let b=c(),$=m(b);if(!e||!$)return g();let w=new Image;w.crossOrigin=\"Anonymous\",w.src=e,w.onload=()=>{b.width=w.width,b.height=w.height,$.drawImage(w,0,0,b.width,b.height);let x=$.getImageData(0,0,b.width,b.height);d.height=b.height,d.width=b.width,u(Ri(x.data,d))}});throw new Error(\"Input data provided is not supported - aborted tensor creation\")}if(a!==void 0)return Ri(a,d);throw new Error(\"Input data provided is not supported - aborted tensor creation\")},ca=(e,t)=>{let{width:r,height:n,download:i,dispose:s}=t,a=[1,n,r,4];return new ot({location:\"texture\",type:\"float32\",texture:e,dims:a,download:i,dispose:s})},pa=(e,t)=>{let{dataType:r,dims:n,download:i,dispose:s}=t;return new ot({location:\"gpu-buffer\",type:r??\"float32\",gpuBuffer:e,dims:n,download:i,dispose:s})},ma=(e,t,r)=>new ot({location:\"cpu-pinned\",type:e,data:t,dims:r??[t.length]})});var dr,Qr,ha,ga,ya=j(()=>{\"use strict\";dr=new Map([[\"float32\",Float32Array],[\"uint8\",Uint8Array],[\"int8\",Int8Array],[\"uint16\",Uint16Array],[\"int16\",Int16Array],[\"int32\",Int32Array],[\"bool\",Uint8Array],[\"float64\",Float64Array],[\"uint32\",Uint32Array]]),Qr=new Map([[Float32Array,\"float32\"],[Uint8Array,\"uint8\"],[Int8Array,\"int8\"],[Uint16Array,\"uint16\"],[Int16Array,\"int16\"],[Int32Array,\"int32\"],[Float64Array,\"float64\"],[Uint32Array,\"uint32\"]]),ha=!1,ga=()=>{if(!ha){ha=!0;let e=typeof BigInt64Array<\"u\"&&BigInt64Array.from,t=typeof BigUint64Array<\"u\"&&BigUint64Array.from,r=typeof Float16Array<\"u\"&&Float16Array.from;e&&(dr.set(\"int64\",BigInt64Array),Qr.set(BigInt64Array,\"int64\")),t&&(dr.set(\"uint64\",BigUint64Array),Qr.set(BigUint64Array,\"uint64\")),r?(dr.set(\"float16\",Float16Array),Qr.set(Float16Array,\"float16\")):dr.set(\"float16\",Uint16Array)}}});var ba,va,wa=j(()=>{\"use strict\";Rn();ba=e=>{let t=1;for(let r=0;r<e.length;r++){let n=e[r];if(typeof n!=\"number\"||!Number.isSafeInteger(n))throw new TypeError(`dims[${r}] must be an integer, got: ${n}`);if(n<0)throw new RangeError(`dims[${r}] must be a non-negative integer, got: ${n}`);t*=n}return t},va=(e,t)=>{switch(e.location){case\"cpu\":return new ot(e.type,e.data,t);case\"cpu-pinned\":return new ot({location:\"cpu-pinned\",data:e.data,type:e.type,dims:t});case\"texture\":return new ot({location:\"texture\",texture:e.texture,type:e.type,dims:t});case\"gpu-buffer\":return new ot({location:\"gpu-buffer\",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}});var ot,Rn=j(()=>{\"use strict\";la();fa();ya();wa();ot=class{constructor(t,r,n){ga();let i,s;if(typeof t==\"object\"&&\"location\"in t)switch(this.dataLocation=t.location,i=t.type,s=t.dims,t.location){case\"cpu-pinned\":{let d=dr.get(i);if(!d)throw new TypeError(`unsupported type \"${i}\" to create tensor from pinned buffer`);if(!(t.data instanceof d))throw new TypeError(`buffer should be of type ${d.name}`);this.cpuData=t.data;break}case\"texture\":{if(i!==\"float32\")throw new TypeError(`unsupported type \"${i}\" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case\"gpu-buffer\":{if(i!==\"float32\"&&i!==\"float16\"&&i!==\"int32\"&&i!==\"int64\"&&i!==\"uint32\"&&i!==\"uint8\"&&i!==\"bool\")throw new TypeError(`unsupported type \"${i}\" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let d,c;if(typeof t==\"string\")if(i=t,c=n,t===\"string\"){if(!Array.isArray(r))throw new TypeError(\"A string tensor's data must be a string array.\");d=r}else{let m=dr.get(t);if(m===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(r)){if(t===\"float16\"&&m===Uint16Array)throw new TypeError(\"Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.\");t===\"uint64\"||t===\"int64\"?d=m.from(r,BigInt):d=m.from(r)}else if(r instanceof m)d=r;else throw new TypeError(`A ${i} tensor's data must be type of ${m}`)}else if(c=r,Array.isArray(t)){if(t.length===0)throw new TypeError(\"Tensor type cannot be inferred from an empty array.\");let m=typeof t[0];if(m===\"string\")i=\"string\",d=t;else if(m===\"boolean\")i=\"bool\",d=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${m}.`)}else{let m=Qr.get(t.constructor);if(m===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);i=m,d=t}if(c===void 0)c=[d.length];else if(!Array.isArray(c))throw new TypeError(\"A tensor's dims must be a number array\");s=c,this.cpuData=d,this.dataLocation=\"cpu\"}let a=ba(s);if(this.cpuData&&a!==this.cpuData.length)throw new Error(`Tensor's size(${a}) does not match data length(${this.cpuData.length}).`);this.type=i,this.dims=s,this.size=a}static async fromImage(t,r){return da(t,r)}static fromTexture(t,r){return ca(t,r)}static fromGpuBuffer(t,r){return pa(t,r)}static fromPinnedBuffer(t,r,n){return ma(t,r,n)}toDataURL(t){return sa(this,t)}toImageData(t){return ua(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error(\"The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.\");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error(\"The data is not stored as a WebGL texture.\");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error(\"The data is not stored as a WebGPU buffer.\");return this.gpuBufferData}async getData(t){switch(this.ensureValid(),this.dataLocation){case\"cpu\":case\"cpu-pinned\":return this.data;case\"texture\":case\"gpu-buffer\":{if(!this.downloader)throw new Error(\"The current tensor is not created with a specified data downloader.\");if(this.isDownloading)throw new Error(\"The current tensor is being downloaded.\");try{this.isDownloading=!0;let r=await this.downloader();return this.downloader=void 0,this.dataLocation=\"cpu\",this.cpuData=r,t&&this.disposer&&(this.disposer(),this.disposer=void 0),r}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error(\"The current tensor is being downloaded.\");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation=\"none\"}ensureValid(){if(this.dataLocation===\"none\")throw new Error(\"The tensor is disposed.\")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw new Error(\"Cannot reshape a tensor that owns GPU resource.\");return va(this,t)}}});var tt,zn=j(()=>{\"use strict\";Rn();tt=ot});var Bn,$a,yt,ut,zi=j(()=>{\"use strict\";Pi();Bn=(e,t)=>{(typeof gt.trace>\"u\"?!gt.wasm.trace:!gt.trace)||console.timeStamp(`${e}::ORT::${t}`)},$a=(e,t)=>{let r=new Error().stack?.split(/\\r\\n|\\r|\\n/g)||[],n=!1;for(let i=0;i<r.length;i++){if(n&&!r[i].includes(\"TRACE_FUNC\")){let s=`FUNC_${e}::${r[i].trim().split(\" \")[1]}`;t&&(s+=`::${t}`),Bn(\"CPU\",s);return}r[i].includes(\"TRACE_FUNC\")&&(n=!0)}},yt=e=>{(typeof gt.trace>\"u\"?!gt.wasm.trace:!gt.trace)||$a(\"BEGIN\",e)},ut=e=>{(typeof gt.trace>\"u\"?!gt.wasm.trace:!gt.trace)||$a(\"END\",e)}});var Dn,_a=j(()=>{\"use strict\";Pn();zn();zi();Dn=class e{constructor(t){this.handler=t}async run(t,r,n){yt();let i={},s={};if(typeof t!=\"object\"||t===null||t instanceof tt||Array.isArray(t))throw new TypeError(\"'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.\");let a=!0;if(typeof r==\"object\"){if(r===null)throw new TypeError(\"Unexpected argument[1]: cannot be null.\");if(r instanceof tt)throw new TypeError(\"'fetches' cannot be a Tensor\");if(Array.isArray(r)){if(r.length===0)throw new TypeError(\"'fetches' cannot be an empty array.\");a=!1;for(let m of r){if(typeof m!=\"string\")throw new TypeError(\"'fetches' must be a string array or an object.\");if(this.outputNames.indexOf(m)===-1)throw new RangeError(`'fetches' contains invalid output name: ${m}.`);i[m]=null}if(typeof n==\"object\"&&n!==null)s=n;else if(typeof n<\"u\")throw new TypeError(\"'options' must be an object.\")}else{let m=!1,u=Object.getOwnPropertyNames(r);for(let g of this.outputNames)if(u.indexOf(g)!==-1){let b=r[g];(b===null||b instanceof tt)&&(m=!0,a=!1,i[g]=b)}if(m){if(typeof n==\"object\"&&n!==null)s=n;else if(typeof n<\"u\")throw new TypeError(\"'options' must be an object.\")}else s=r}}else if(typeof r<\"u\")throw new TypeError(\"Unexpected argument[1]: must be 'fetches' or 'options'.\");for(let m of this.inputNames)if(typeof t[m]>\"u\")throw new Error(`input '${m}' is missing in 'feeds'.`);if(a)for(let m of this.outputNames)i[m]=null;let d=await this.handler.run(t,i,s),c={};for(let m in d)if(Object.hasOwnProperty.call(d,m)){let u=d[m];u instanceof tt?c[m]=u:c[m]=new tt(u.type,u.data,u.dims)}return ut(),c}async release(){return this.handler.dispose()}static async create(t,r,n,i){yt();let s,a={};if(typeof t==\"string\"){if(s=t,typeof r==\"object\"&&r!==null)a=r;else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(t instanceof Uint8Array){if(s=t,typeof r==\"object\"&&r!==null)a=r;else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<\"u\"&&t instanceof SharedArrayBuffer){let u=t,g=0,b=t.byteLength;if(typeof r==\"object\"&&r!==null)a=r;else if(typeof r==\"number\"){if(g=r,!Number.isSafeInteger(g))throw new RangeError(\"'byteOffset' must be an integer.\");if(g<0||g>=u.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${u.byteLength}).`);if(b=t.byteLength-g,typeof n==\"number\"){if(b=n,!Number.isSafeInteger(b))throw new RangeError(\"'byteLength' must be an integer.\");if(b<=0||g+b>u.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${u.byteLength-g}].`);if(typeof i==\"object\"&&i!==null)a=i;else if(typeof i<\"u\")throw new TypeError(\"'options' must be an object.\")}else if(typeof n<\"u\")throw new TypeError(\"'byteLength' must be a number.\")}else if(typeof r<\"u\")throw new TypeError(\"'options' must be an object.\");s=new Uint8Array(u,g,b)}else throw new TypeError(\"Unexpected argument[0]: must be 'path' or 'buffer'.\");let[d,c]=await On(a),m=await d.createInferenceSessionHandler(s,c);return ut(),new e(m)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}}});var uc,xa=j(()=>{\"use strict\";_a();uc=Dn});var Sa=j(()=>{\"use strict\"});var Ca=j(()=>{\"use strict\"});var Ia=j(()=>{\"use strict\"});var Ta=j(()=>{\"use strict\"});var lc,Mn,Aa=j(()=>{\"use strict\";Pn();zn();lc=\"Training backend could not be resolved. Make sure you're using the correct configuration & WebAssembly files.\",Mn=class e{constructor(t,r,n){this.handler=t,this.hasOptimizerModel=r,this.hasEvalModel=n}get trainingInputNames(){return this.handler.inputNames}get trainingOutputNames(){return this.handler.outputNames}get evalInputNames(){if(this.hasEvalModel)return this.handler.evalInputNames;throw new Error(\"This training session has no evalModel loaded.\")}get evalOutputNames(){if(this.hasEvalModel)return this.handler.evalOutputNames;throw new Error(\"This training session has no evalModel loaded.\")}static async create(t,r){let n=t.evalModel||\"\",i=t.optimizerModel||\"\",s=r||{},[a,d]=await On(s);if(a.createTrainingSessionHandler){let c=await a.createTrainingSessionHandler(t.checkpointState,t.trainModel,n,i,d);return new e(c,!!t.optimizerModel,!!t.evalModel)}else throw new Error(lc)}typeNarrowingForRunStep(t,r,n,i,s){let a={},d={};if(typeof n!=\"object\"||n===null||n instanceof tt||Array.isArray(n))throw new TypeError(\"'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.\");let c=!0;if(typeof i==\"object\"){if(i===null)throw new TypeError(\"Unexpected argument[1]: cannot be null.\");if(i instanceof tt)throw new TypeError(\"'fetches' cannot be a Tensor\");if(Array.isArray(i)){if(i.length===0)throw new TypeError(\"'fetches' cannot be an empty array.\");c=!1;for(let m of i){if(typeof m!=\"string\")throw new TypeError(\"'fetches' must be a string array or an object.\");if(r.indexOf(m)===-1)throw new RangeError(`'fetches' contains invalid output name: ${m}.`);a[m]=null}if(typeof s==\"object\"&&s!==null)d=s;else if(typeof s<\"u\")throw new TypeError(\"'options' must be an object.\")}else{let m=!1,u=Object.getOwnPropertyNames(i);for(let g of r)if(u.indexOf(g)!==-1){let b=i[g];(b===null||b instanceof tt)&&(m=!0,c=!1,a[g]=b)}if(m){if(typeof s==\"object\"&&s!==null)d=s;else if(typeof s<\"u\")throw new TypeError(\"'options' must be an object.\")}else d=i}}else if(typeof i<\"u\")throw new TypeError(\"Unexpected argument[1]: must be 'fetches' or 'options'.\");for(let m of t)if(typeof n[m]>\"u\")throw new Error(`input '${m}' is missing in 'feeds'.`);if(c)for(let m of r)a[m]=null;return[a,d]}convertHandlerReturnTypeToMapOfTensors(t){let r={};for(let n in t)if(Object.hasOwnProperty.call(t,n)){let i=t[n];i instanceof tt?r[n]=i:r[n]=new tt(i.type,i.data,i.dims)}return r}async lazyResetGrad(){await this.handler.lazyResetGrad()}async runTrainStep(t,r,n){let[i,s]=this.typeNarrowingForRunStep(this.trainingInputNames,this.trainingOutputNames,t,r,n),a=await this.handler.runTrainStep(t,i,s);return this.convertHandlerReturnTypeToMapOfTensors(a)}async runOptimizerStep(t){if(this.hasOptimizerModel)await this.handler.runOptimizerStep(t||{});else throw new Error(\"This TrainingSession has no OptimizerModel loaded.\")}async runEvalStep(t,r,n){if(this.hasEvalModel){let[i,s]=this.typeNarrowingForRunStep(this.evalInputNames,this.evalOutputNames,t,r,n),a=await this.handler.runEvalStep(t,i,s);return this.convertHandlerReturnTypeToMapOfTensors(a)}else throw new Error(\"This TrainingSession has no EvalModel loaded.\")}async getParametersSize(t=!0){return this.handler.getParametersSize(t)}async loadParametersBuffer(t,r=!0){let n=await this.getParametersSize(r);if(t.length!==4*n)throw new Error(\"Size of the buffer passed into loadParametersBuffer must match the number of parameters in the model. Please use getParametersSize method to check.\");return this.handler.loadParametersBuffer(t,r)}async getContiguousParameters(t=!0){return this.handler.getContiguousParameters(t)}async release(){return this.handler.dispose()}}});var dc,Ea=j(()=>{\"use strict\";Aa();dc=Mn});var Bi={};kr(Bi,{InferenceSession:()=>uc,TRACE:()=>Bn,TRACE_FUNC_BEGIN:()=>yt,TRACE_FUNC_END:()=>ut,Tensor:()=>tt,TrainingSession:()=>dc,env:()=>ke,registerBackend:()=>lr});var _t=j(()=>{\"use strict\";ra();aa();xa();zn();Sa();Ca();zi();Ia();Ta();Ea()});var Di={};kr(Di,{createReadStream:()=>Oa,readFile:()=>cc,readFileSync:()=>pc});var cc,pc,Oa,Mi=j(()=>{cc=void 0,pc=void 0,Oa=void 0});var Ui={};kr(Ui,{join:()=>mc});var mc,Wi=j(()=>{mc=void 0});var za=Er((Ra,Ni)=>{\"use strict\";var Pa=(()=>{var e=typeof document<\"u\"?document.currentScript?.src:void 0;return typeof __filename<\"u\"&&(e||=__filename),function(t={}){var r=t,n,i,s=new Promise((l,f)=>{n=l,i=f});r.mountExternalData=(l,f)=>{(r.eb||(r.eb=new Map)).set(l,f)},r.unmountExternalData=()=>{delete r.eb};let a=()=>{let l=(y,_,A)=>(...z)=>{let G=mt,q=_?.();z=y(...z);let te=_?.();return q!==te&&(y=te,A(q),_=A=null),mt!=G?gn():z},f=y=>async(..._)=>{try{if(r.cb)throw Error(\"Session already started\");let A=r.cb={xb:_[0],errors:[]},z=await y(..._);if(r.cb!==A)throw Error(\"Session mismatch\");r.kb?.flush();let G=A.errors;if(0<G.length){let q=await Promise.all(G);if(q=q.filter(te=>te),0<q.length)throw Error(q.join(`\n`))}return z}finally{r.cb=null}};r._OrtCreateSession=l(r._OrtCreateSession,()=>r._OrtCreateSession,y=>r._OrtCreateSession=y),r._OrtRun=f(l(r._OrtRun,()=>r._OrtRun,y=>r._OrtRun=y)),r._OrtRunWithBinding=f(l(r._OrtRunWithBinding,()=>r._OrtRunWithBinding,y=>r._OrtRunWithBinding=y)),r._OrtBindInput=l(r._OrtBindInput,()=>r._OrtBindInput,y=>r._OrtBindInput=y),a=void 0};r.jsepInit=(l,f)=>{if(a?.(),l===\"webgpu\"){[r.kb,r.pb,r.tb,r.lb,r.sb,r.Ra,r.ub,r.wb,r.qb,r.rb,r.vb]=f;let y=r.kb;r.jsepRegisterBuffer=(_,A,z,G)=>y.registerBuffer(_,A,z,G),r.jsepGetBuffer=_=>y.getBuffer(_),r.jsepCreateDownloader=(_,A,z)=>y.createDownloader(_,A,z),r.jsepOnReleaseSession=_=>{y.onReleaseSession(_)},r.jsepOnRunStart=_=>y.onRunStart(_)}};var d=Object.assign({},r),c=\"./this.program\",m=(l,f)=>{throw f},u=typeof window==\"object\",g=typeof importScripts==\"function\",b=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",$=\"\",w,x,C;if(b){var T=(Mi(),sr(Di)),S=(Wi(),sr(Ui));$=g?S.dirname($)+\"/\":__dirname+\"/\",w=(l,f)=>(l=Ye(l)?new URL(l):S.normalize(l),T.readFileSync(l,f?void 0:\"utf8\")),C=l=>(l=w(l,!0),l.buffer||(l=new Uint8Array(l)),l),x=(l,f,y,_=!0)=>{l=Ye(l)?new URL(l):S.normalize(l),T.readFile(l,_?void 0:\"utf8\",(A,z)=>{A?y(A):f(_?z.buffer:z)})},!r.thisProgram&&1<process.argv.length&&(c=process.argv[1].replace(/\\\\/g,\"/\")),process.argv.slice(2),m=(l,f)=>{throw process.exitCode=l,f}}else(u||g)&&(g?$=self.location.href:typeof document<\"u\"&&document.currentScript&&($=document.currentScript.src),e&&($=e),$.startsWith(\"blob:\")?$=\"\":$=$.substr(0,$.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),w=l=>{var f=new XMLHttpRequest;return f.open(\"GET\",l,!1),f.send(null),f.responseText},g&&(C=l=>{var f=new XMLHttpRequest;return f.open(\"GET\",l,!1),f.responseType=\"arraybuffer\",f.send(null),new Uint8Array(f.response)}),x=(l,f,y)=>{var _=new XMLHttpRequest;_.open(\"GET\",l,!0),_.responseType=\"arraybuffer\",_.onload=()=>{_.status==200||_.status==0&&_.response?f(_.response):y()},_.onerror=y,_.send(null)});var E=console.log.bind(console),k=console.error.bind(console);Object.assign(r,d),d=null;var P,R=!1,L,V,Y,Q,he,N,se,Ce,Ve,ee,ae;function Ie(){var l=P.buffer;r.HEAP8=V=new Int8Array(l),r.HEAP16=Q=new Int16Array(l),r.HEAPU8=Y=new Uint8Array(l),r.HEAPU16=he=new Uint16Array(l),r.HEAP32=N=new Int32Array(l),r.HEAPU32=se=new Uint32Array(l),r.HEAPF32=Ce=new Float32Array(l),r.HEAPF64=ae=new Float64Array(l),r.HEAP64=Ve=new BigInt64Array(l),r.HEAPU64=ee=new BigUint64Array(l)}var me=[],oe=[],ue=[],de=0,je=null,H=null;function ne(l){throw l=\"Aborted(\"+l+\")\",k(l),R=!0,L=1,l=new WebAssembly.RuntimeError(l+\". Build with -sASSERTIONS for more info.\"),i(l),l}var Se=l=>l.startsWith(\"data:application/octet-stream;base64,\"),Ye=l=>l.startsWith(\"file://\"),Be;if(Be=\"ort-wasm-simd.wasm\",!Se(Be)){var Ge=Be;Be=r.locateFile?r.locateFile(Ge,$):$+Ge}function Ft(l){if(C)return C(l);throw\"both async and sync fetching of the wasm failed\"}function He(l){if(u||g){if(typeof fetch==\"function\"&&!Ye(l))return fetch(l,{credentials:\"same-origin\"}).then(f=>{if(!f.ok)throw`failed to load wasm binary file at '${l}'`;return f.arrayBuffer()}).catch(()=>Ft(l));if(x)return new Promise((f,y)=>{x(l,_=>f(new Uint8Array(_)),y)})}return Promise.resolve().then(()=>Ft(l))}function Xe(l,f,y){return He(l).then(_=>WebAssembly.instantiate(_,f)).then(y,_=>{k(`failed to asynchronously prepare wasm: ${_}`),ne(_)})}function bt(l,f){var y=Be;return typeof WebAssembly.instantiateStreaming!=\"function\"||Se(y)||Ye(y)||b||typeof fetch!=\"function\"?Xe(y,l,f):fetch(y,{credentials:\"same-origin\"}).then(_=>WebAssembly.instantiateStreaming(_,l).then(f,function(A){return k(`wasm streaming compile failed: ${A}`),k(\"falling back to ArrayBuffer instantiation\"),Xe(y,l,f)}))}var Nt={824920:(l,f,y,_)=>{if(typeof r>\"u\"||!r.eb)return 1;if(l=Ke(l>>>0),l.startsWith(\"./\")&&(l=l.substring(2)),l=r.eb.get(l),!l)return 2;if(f>>>=0,y>>>=0,f+y>l.byteLength)return 3;try{return Y.set(l.subarray(f,f+y),_>>>0>>>0),0}catch{return 4}},825421:()=>{r.qb()},825452:()=>{r.rb()},825481:()=>{r.vb()},825506:l=>r.pb(l),825539:l=>r.tb(l),825571:(l,f,y)=>{r.lb(l,f,y,!0)},825610:(l,f,y)=>{r.lb(l,f,y)},825643:l=>{r.Ra(\"Abs\",l,void 0)},825694:l=>{r.Ra(\"Neg\",l,void 0)},825745:l=>{r.Ra(\"Floor\",l,void 0)},825798:l=>{r.Ra(\"Ceil\",l,void 0)},825850:l=>{r.Ra(\"Reciprocal\",l,void 0)},825908:l=>{r.Ra(\"Sqrt\",l,void 0)},825960:l=>{r.Ra(\"Exp\",l,void 0)},826011:l=>{r.Ra(\"Erf\",l,void 0)},826062:l=>{r.Ra(\"Sigmoid\",l,void 0)},826117:(l,f,y)=>{r.Ra(\"HardSigmoid\",l,{alpha:f,beta:y})},826196:l=>{r.Ra(\"Log\",l,void 0)},826247:l=>{r.Ra(\"Sin\",l,void 0)},826298:l=>{r.Ra(\"Cos\",l,void 0)},826349:l=>{r.Ra(\"Tan\",l,void 0)},826400:l=>{r.Ra(\"Asin\",l,void 0)},826452:l=>{r.Ra(\"Acos\",l,void 0)},826504:l=>{r.Ra(\"Atan\",l,void 0)},826556:l=>{r.Ra(\"Sinh\",l,void 0)},826608:l=>{r.Ra(\"Cosh\",l,void 0)},826660:l=>{r.Ra(\"Asinh\",l,void 0)},826713:l=>{r.Ra(\"Acosh\",l,void 0)},826766:l=>{r.Ra(\"Atanh\",l,void 0)},826819:l=>{r.Ra(\"Tanh\",l,void 0)},826871:l=>{r.Ra(\"Not\",l,void 0)},826922:(l,f,y)=>{r.Ra(\"Clip\",l,{min:f,max:y})},826991:l=>{r.Ra(\"Clip\",l,void 0)},827043:(l,f)=>{r.Ra(\"Elu\",l,{alpha:f})},827101:l=>{r.Ra(\"Relu\",l,void 0)},827153:(l,f)=>{r.Ra(\"LeakyRelu\",l,{alpha:f})},827217:(l,f)=>{r.Ra(\"ThresholdedRelu\",l,{alpha:f})},827287:(l,f)=>{r.Ra(\"Cast\",l,{to:f})},827345:l=>{r.Ra(\"Add\",l,void 0)},827396:l=>{r.Ra(\"Sub\",l,void 0)},827447:l=>{r.Ra(\"Mul\",l,void 0)},827498:l=>{r.Ra(\"Div\",l,void 0)},827549:l=>{r.Ra(\"Pow\",l,void 0)},827600:l=>{r.Ra(\"Equal\",l,void 0)},827653:l=>{r.Ra(\"Greater\",l,void 0)},827708:l=>{r.Ra(\"GreaterOrEqual\",l,void 0)},827770:l=>{r.Ra(\"Less\",l,void 0)},827822:l=>{r.Ra(\"LessOrEqual\",l,void 0)},827881:(l,f,y,_,A)=>{r.Ra(\"ReduceMean\",l,{keepDims:!!f,noopWithEmptyAxes:!!y,axes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},828040:(l,f,y,_,A)=>{r.Ra(\"ReduceMax\",l,{keepDims:!!f,noopWithEmptyAxes:!!y,axes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},828198:(l,f,y,_,A)=>{r.Ra(\"ReduceMin\",l,{keepDims:!!f,noopWithEmptyAxes:!!y,axes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},828356:(l,f,y,_,A)=>{r.Ra(\"ReduceProd\",l,{keepDims:!!f,noopWithEmptyAxes:!!y,axes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},828515:(l,f,y,_,A)=>{r.Ra(\"ReduceSum\",l,{keepDims:!!f,noopWithEmptyAxes:!!y,axes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},828673:(l,f,y,_,A)=>{r.Ra(\"ReduceL1\",l,{keepDims:!!f,noopWithEmptyAxes:!!y,axes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},828830:(l,f,y,_,A)=>{r.Ra(\"ReduceL2\",l,{keepDims:!!f,noopWithEmptyAxes:!!y,axes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},828987:(l,f,y,_,A)=>{r.Ra(\"ReduceLogSum\",l,{keepDims:!!f,noopWithEmptyAxes:!!y,axes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},829148:(l,f,y,_,A)=>{r.Ra(\"ReduceSumSquare\",l,{keepDims:!!f,noopWithEmptyAxes:!!y,axes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},829312:(l,f,y,_,A)=>{r.Ra(\"ReduceLogSumExp\",l,{keepDims:!!f,noopWithEmptyAxes:!!y,axes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},829476:l=>{r.Ra(\"Where\",l,void 0)},829529:(l,f,y)=>{r.Ra(\"Transpose\",l,{perm:f?Array.from(N.subarray(f>>>0,y>>>0)):[]})},829637:(l,f,y,_)=>{r.Ra(\"DepthToSpace\",l,{blocksize:f,mode:Ke(y),format:_?\"NHWC\":\"NCHW\"})},829770:(l,f,y,_)=>{r.Ra(\"DepthToSpace\",l,{blocksize:f,mode:Ke(y),format:_?\"NHWC\":\"NCHW\"})},829903:(l,f,y,_,A,z,G,q,te,Z,le,Ee,Re,B,be)=>{r.Ra(\"ConvTranspose\",l,{format:te?\"NHWC\":\"NCHW\",autoPad:f,dilations:[y],group:_,kernelShape:[A],pads:[z,G],strides:[q],wIsConst:()=>!!V[Z>>>0],outputPadding:le?Array.from(N.subarray(le>>>0,Ee>>>0)):[],outputShape:Re?Array.from(N.subarray(Re>>>0,B>>>0)):[],activation:Ke(be)})},830304:(l,f,y,_,A,z,G,q,te,Z,le,Ee,Re,B)=>{r.Ra(\"ConvTranspose\",l,{format:q?\"NHWC\":\"NCHW\",autoPad:f,dilations:Array.from(N.subarray(y>>>0,(y>>>0)+2>>>0)),group:_,kernelShape:Array.from(N.subarray(A>>>0,(A>>>0)+2>>>0)),pads:Array.from(N.subarray(z>>>0,(z>>>0)+4>>>0)),strides:Array.from(N.subarray(G>>>0,(G>>>0)+2>>>0)),wIsConst:()=>!!V[te>>>0],outputPadding:Z?Array.from(N.subarray(Z>>>0,le>>>0)):[],outputShape:Ee?Array.from(N.subarray(Ee>>>0,Re>>>0)):[],activation:Ke(B)})},830869:(l,f,y,_,A,z,G,q,te,Z,le,Ee,Re,B,be)=>{r.Ra(\"ConvTranspose\",l,{format:te?\"NHWC\":\"NCHW\",autoPad:f,dilations:[y],group:_,kernelShape:[A],pads:[z,G],strides:[q],wIsConst:()=>!!V[Z>>>0],outputPadding:le?Array.from(N.subarray(le>>>0,Ee>>>0)):[],outputShape:Re?Array.from(N.subarray(Re>>>0,B>>>0)):[],activation:Ke(be)})},831270:(l,f,y,_,A,z,G,q,te,Z,le,Ee,Re,B)=>{r.Ra(\"ConvTranspose\",l,{format:q?\"NHWC\":\"NCHW\",autoPad:f,dilations:Array.from(N.subarray(y>>>0,(y>>>0)+2>>>0)),group:_,kernelShape:Array.from(N.subarray(A>>>0,(A>>>0)+2>>>0)),pads:Array.from(N.subarray(z>>>0,(z>>>0)+4>>>0)),strides:Array.from(N.subarray(G>>>0,(G>>>0)+2>>>0)),wIsConst:()=>!!V[te>>>0],outputPadding:Z?Array.from(N.subarray(Z>>>0,le>>>0)):[],outputShape:Ee?Array.from(N.subarray(Ee>>>0,Re>>>0)):[],activation:Ke(B)})},831835:(l,f)=>{r.Ra(\"GlobalAveragePool\",l,{format:f?\"NHWC\":\"NCHW\"})},831926:(l,f,y,_,A,z,G,q,te,Z,le,Ee,Re,B,be,Te)=>{r.Ra(\"AveragePool\",l,{format:Te?\"NHWC\":\"NCHW\",auto_pad:f,ceil_mode:y,count_include_pad:_,storage_order:A,dilations:[z,G],kernel_shape:[q,te],pads:[Z,le,Ee,Re],strides:[B,be]})},832210:(l,f)=>{r.Ra(\"GlobalAveragePool\",l,{format:f?\"NHWC\":\"NCHW\"})},832301:(l,f,y,_,A,z,G,q,te,Z,le,Ee,Re,B,be,Te)=>{r.Ra(\"AveragePool\",l,{format:Te?\"NHWC\":\"NCHW\",auto_pad:f,ceil_mode:y,count_include_pad:_,storage_order:A,dilations:[z,G],kernel_shape:[q,te],pads:[Z,le,Ee,Re],strides:[B,be]})},832585:(l,f)=>{r.Ra(\"GlobalMaxPool\",l,{format:f?\"NHWC\":\"NCHW\"})},832672:(l,f,y,_,A,z,G,q,te,Z,le,Ee,Re,B,be,Te)=>{r.Ra(\"MaxPool\",l,{format:Te?\"NHWC\":\"NCHW\",auto_pad:f,ceil_mode:y,count_include_pad:_,storage_order:A,dilations:[z,G],kernel_shape:[q,te],pads:[Z,le,Ee,Re],strides:[B,be]})},832952:(l,f)=>{r.Ra(\"GlobalMaxPool\",l,{format:f?\"NHWC\":\"NCHW\"})},833039:(l,f,y,_,A,z,G,q,te,Z,le,Ee,Re,B,be,Te)=>{r.Ra(\"MaxPool\",l,{format:Te?\"NHWC\":\"NCHW\",auto_pad:f,ceil_mode:y,count_include_pad:_,storage_order:A,dilations:[z,G],kernel_shape:[q,te],pads:[Z,le,Ee,Re],strides:[B,be]})},833319:(l,f,y,_,A)=>{r.Ra(\"Gemm\",l,{alpha:f,beta:y,transA:_,transB:A})},833423:l=>{r.Ra(\"MatMul\",l,void 0)},833477:(l,f,y,_)=>{r.Ra(\"ArgMax\",l,{keepDims:!!f,selectLastIndex:!!y,axis:_})},833585:(l,f,y,_)=>{r.Ra(\"ArgMin\",l,{keepDims:!!f,selectLastIndex:!!y,axis:_})},833693:(l,f)=>{r.Ra(\"Softmax\",l,{axis:f})},833756:(l,f)=>{r.Ra(\"Concat\",l,{axis:f})},833816:(l,f,y,_,A)=>{r.Ra(\"Split\",l,{axis:f,numOutputs:y,splitSizes:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},833956:l=>{r.Ra(\"Expand\",l,void 0)},834010:(l,f)=>{r.Ra(\"Gather\",l,{axis:Number(f)})},834081:(l,f)=>{r.Ra(\"GatherElements\",l,{axis:Number(f)})},834160:(l,f,y,_,A,z,G,q,te,Z,le)=>{r.Ra(\"Resize\",l,{antialias:f,axes:y?Array.from(N.subarray(y>>>0,_>>>0)):[],coordinateTransformMode:Ke(A),cubicCoeffA:z,excludeOutside:G,extrapolationValue:q,keepAspectRatioPolicy:Ke(te),mode:Ke(Z),nearestMode:Ke(le)})},834506:(l,f,y,_,A,z,G)=>{r.Ra(\"Slice\",l,{starts:f?Array.from(N.subarray(f>>>0,y>>>0)):[],ends:_?Array.from(N.subarray(_>>>0,A>>>0)):[],axes:z?Array.from(N.subarray(z>>>0,G>>>0)):[]})},834722:l=>{r.Ra(\"Tile\",l,void 0)},834774:(l,f,y,_)=>{r.Ra(\"LayerNormalization\",l,{axis:f,epsilon:y,simplified:!!_})},834885:(l,f,y)=>{r.Ra(\"InstanceNormalization\",l,{epsilon:f,format:y?\"NHWC\":\"NCHW\"})},834999:(l,f,y)=>{r.Ra(\"InstanceNormalization\",l,{epsilon:f,format:y?\"NHWC\":\"NCHW\"})},835113:l=>{r.Ra(\"Range\",l,void 0)},835166:(l,f)=>{r.Ra(\"Einsum\",l,{equation:Ke(f)})},835247:(l,f,y,_,A)=>{r.Ra(\"Pad\",l,{mode:f,value:y,pads:_?Array.from(N.subarray(_>>>0,A>>>0)):[]})},835374:(l,f,y,_,A,z)=>{r.Ra(\"BatchNormalization\",l,{epsilon:f,momentum:y,spatial:!!A,trainingMode:!!_,format:z?\"NHWC\":\"NCHW\"})},835543:(l,f,y,_,A,z)=>{r.Ra(\"BatchNormalization\",l,{epsilon:f,momentum:y,spatial:!!A,trainingMode:!!_,format:z?\"NHWC\":\"NCHW\"})},835712:(l,f,y)=>{r.Ra(\"CumSum\",l,{exclusive:Number(f),reverse:Number(y)})},835809:(l,f,y,_,A,z,G,q,te)=>{r.Ra(\"Attention\",l,{numHeads:f,isUnidirectional:y,maskFilterValue:_,scale:A,doRotary:z,qkvHiddenSizes:G?Array.from(N.subarray(Number(q)>>>0,Number(q)+G>>>0)):[],pastPresentShareBuffer:!!te})},836081:l=>{r.Ra(\"BiasAdd\",l,void 0)},836136:l=>{r.Ra(\"BiasSplitGelu\",l,void 0)},836197:l=>{r.Ra(\"FastGelu\",l,void 0)},836253:(l,f,y,_,A,z,G,q,te,Z,le,Ee,Re)=>{r.Ra(\"Conv\",l,{format:te?\"NHWC\":\"NCHW\",auto_pad:f,dilations:[y],group:_,kernel_shape:[A],pads:z?Array.from(N.subarray(z>>>0,G>>>0)):[],strides:[q],w_is_const:()=>!!V[Z>>>0],activation:Ke(le),activation_params:Ee?Array.from(Ce.subarray(Ee>>>0,Re>>>0)):[]})},836623:(l,f,y,_,A,z,G,q,te,Z,le,Ee,Re,B,be,Te)=>{r.Ra(\"Conv\",l,{format:Ee?\"NHWC\":\"NCHW\",auto_pad:f,dilations:[y,_],group:A,kernel_shape:[z,G],pads:q?Array.from(N.subarray(q>>>0,te>>>0)):[],strides:[Z,le],w_is_const:()=>!!V[Re>>>0],activation:Ke(B),activation_params:be?Array.from(Ce.subarray(be>>>0,Te>>>0)):[]})},837014:l=>{r.Ra(\"Gelu\",l,void 0)},837066:(l,f,y,_,A,z)=>{r.Ra(\"MatMulNBits\",l,{k:f,n:y,accuracyLevel:_,bits:A,blockSize:z})},837193:(l,f,y,_,A,z)=>{r.Ra(\"MultiHeadAttention\",l,{numHeads:f,isUnidirectional:y,maskFilterValue:_,scale:A,doRotary:z})},837352:(l,f,y,_,A)=>{r.Ra(\"RotaryEmbedding\",l,{interleaved:!!f,numHeads:y,rotaryEmbeddingDim:_,scale:A})},837491:(l,f,y)=>{r.Ra(\"SkipLayerNormalization\",l,{epsilon:f,simplified:!!y})},837593:(l,f,y)=>{r.Ra(\"SkipLayerNormalization\",l,{epsilon:f,simplified:!!y})},837695:(l,f,y,_)=>{r.Ra(\"LayerNormalization\",l,{axis:f,epsilon:y,simplified:!!_})},837806:l=>{r.ub(l)},837840:(l,f)=>r.wb(l,f,r.cb.xb,r.cb.errors)};function Qt(l){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${l})`,this.status=l}class qt{constructor(f){this.hb=f-24}}var yr=0,Jt=0,Dr=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,er=(l,f,y)=>{f>>>=0;var _=f+y;for(y=f;l[y]&&!(y>=_);)++y;if(16<y-f&&l.buffer&&Dr)return Dr.decode(l.subarray(f,y));for(_=\"\";f<y;){var A=l[f++];if(A&128){var z=l[f++]&63;if((A&224)==192)_+=String.fromCharCode((A&31)<<6|z);else{var G=l[f++]&63;A=(A&240)==224?(A&15)<<12|z<<6|G:(A&7)<<18|z<<12|G<<6|l[f++]&63,65536>A?_+=String.fromCharCode(A):(A-=65536,_+=String.fromCharCode(55296|A>>10,56320|A&1023))}}else _+=String.fromCharCode(A)}return _},Ke=(l,f)=>(l>>>=0)?er(Y,l,f):\"\",jt=l=>{for(var f=0,y=0;y<l.length;++y){var _=l.charCodeAt(y);127>=_?f++:2047>=_?f+=2:55296<=_&&57343>=_?(f+=4,++y):f+=3}return f},dt=(l,f,y,_)=>{if(y>>>=0,!(0<_))return 0;var A=y;_=y+_-1;for(var z=0;z<l.length;++z){var G=l.charCodeAt(z);if(55296<=G&&57343>=G){var q=l.charCodeAt(++z);G=65536+((G&1023)<<10)|q&1023}if(127>=G){if(y>=_)break;f[y++>>>0]=G}else{if(2047>=G){if(y+1>=_)break;f[y++>>>0]=192|G>>6}else{if(65535>=G){if(y+2>=_)break;f[y++>>>0]=224|G>>12}else{if(y+3>=_)break;f[y++>>>0]=240|G>>18,f[y++>>>0]=128|G>>12&63}f[y++>>>0]=128|G>>6&63}f[y++>>>0]=128|G&63}}return f[y>>>0]=0,y-A},Mr,vt=l=>{for(var f=\"\";Y[l>>>0];)f+=Mr[Y[l++>>>0]];return f},br={},Ur={},Wr={},ct;function Nr(l,f,y={}){var _=f.name;if(!l)throw new ct(`type \"${_}\" must have a positive integer typeid pointer`);if(Ur.hasOwnProperty(l)){if(y.nb)return;throw new ct(`Cannot register type '${_}' twice`)}Ur[l]=f,delete Wr[l],br.hasOwnProperty(l)&&(f=br[l],delete br[l],f.forEach(A=>A()))}function wt(l,f,y={}){if(!(\"argPackAdvance\"in f))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");return Nr(l,f,y)}var Ct=(l,f,y)=>{switch(f){case 1:return y?_=>V[_>>>0]:_=>Y[_>>>0];case 2:return y?_=>Q[_>>>1>>>0]:_=>he[_>>>1>>>0];case 4:return y?_=>N[_>>>2>>>0]:_=>se[_>>>2>>>0];case 8:return y?_=>Ve[_>>>3]:_=>ee[_>>>3];default:throw new TypeError(`invalid integer width (${f}): ${l}`)}},Vr=[],Ae=[];function vr(l){l>>>=0,9<l&&--Ae[l+1]===0&&(Ae[l]=void 0,Vr.push(l))}var Qe=l=>{if(!l)throw new ct(\"Cannot use deleted val. handle = \"+l);return Ae[l]},pt=l=>{switch(l){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let f=Vr.pop()||Ae.length;return Ae[f]=l,Ae[f+1]=1,f}};function wr(l){return this.fromWireType(se[l>>>2>>>0])}var gi={name:\"emscripten::val\",fromWireType:l=>{var f=Qe(l);return vr(l),f},toWireType:(l,f)=>pt(f),argPackAdvance:8,readValueFromPointer:wr,bb:null},ge=(l,f)=>{switch(f){case 4:return function(y){return this.fromWireType(Ce[y>>>2>>>0])};case 8:return function(y){return this.fromWireType(ae[y>>>3>>>0])};default:throw new TypeError(`invalid float width (${f}): ${l}`)}},tr=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0,un=(l,f)=>{for(var y=l>>1,_=y+f/2;!(y>=_)&&he[y>>>0];)++y;if(y<<=1,32<y-l&&tr)return tr.decode(Y.subarray(l>>>0,y>>>0));for(y=\"\",_=0;!(_>=f/2);++_){var A=Q[l+2*_>>>1>>>0];if(A==0)break;y+=String.fromCharCode(A)}return y},yi=(l,f,y)=>{if(y??=2147483647,2>y)return 0;y-=2;var _=f;y=y<2*l.length?y/2:l.length;for(var A=0;A<y;++A)Q[f>>>1>>>0]=l.charCodeAt(A),f+=2;return Q[f>>>1>>>0]=0,f-_},ln=l=>2*l.length,bi=(l,f)=>{for(var y=0,_=\"\";!(y>=f/4);){var A=N[l+4*y>>>2>>>0];if(A==0)break;++y,65536<=A?(A-=65536,_+=String.fromCharCode(55296|A>>10,56320|A&1023)):_+=String.fromCharCode(A)}return _},dn=(l,f,y)=>{if(f>>>=0,y??=2147483647,4>y)return 0;var _=f;y=_+y-4;for(var A=0;A<l.length;++A){var z=l.charCodeAt(A);if(55296<=z&&57343>=z){var G=l.charCodeAt(++A);z=65536+((z&1023)<<10)|G&1023}if(N[f>>>2>>>0]=z,f+=4,f+4>y)break}return N[f>>>2>>>0]=0,f-_},cn=l=>{for(var f=0,y=0;y<l.length;++y){var _=l.charCodeAt(y);55296<=_&&57343>=_&&++y,f+=4}return f},$r=(l,f)=>{var y=Ur[l];if(y===void 0)throw l=Yr(l),y=vt(l),it(l),new ct(`${f} has unknown type ${y}`);return y},Hr=(l,f,y)=>{var _=[];return l=l.toWireType(_,y),_.length&&(se[f>>>2>>>0]=pt(_)),l},Le=l=>{try{l()}catch(f){ne(f)}},pn=l=>{if(!R)try{l();try{L=L=l=L,r.onExit?.(l),R=!0,m(l,new Qt(l))}catch(f){f instanceof Qt||f==\"unwind\"||m(1,f)}}catch(f){f instanceof Qt||f==\"unwind\"||m(1,f)}};function mn(){var l=pe,f={};for(let[y,_]of Object.entries(l))f[y]=typeof _==\"function\"?(...A)=>{rr.push(y);try{return _(...A)}finally{R||(rr.pop(),mt&&$t===1&&rr.length===0&&($t=0,Le(xn),typeof Fibers<\"u\"&&Fibers.Db()))}}:_;return f}var $t=0,mt=null,Vt=0,rr=[],Gr={},Lr={},fn=0,_r=null,hn=[];function gn(){return new Promise((l,f)=>{_r={resolve:l,reject:f}})}function yn(){var l=Kt(65548),f=l+12;se[l>>>2>>>0]=f,se[l+4>>>2>>>0]=f+65536,f=rr[0];var y=Gr[f];return y===void 0&&(y=fn++,Gr[f]=y,Lr[y]=f),N[l+8>>>2>>>0]=y,l}function bn(l){if(!R){if($t===0){var f=!1,y=!1;l((_=0)=>{if(!R&&(Vt=_,f=!0,y)){$t=2,Le(()=>Tt(mt)),typeof Browser<\"u\"&&Browser.ib.mb&&Browser.ib.resume(),_=!1;try{var A=(0,pe[Lr[N[mt+8>>>2>>>0]]])()}catch(q){A=q,_=!0}var z=!1;if(!mt){var G=_r;G&&(_r=null,(_?G.reject:G.resolve)(A),z=!0)}if(_&&!z)throw A}}),y=!0,f||($t=1,mt=yn(),typeof Browser<\"u\"&&Browser.ib.mb&&Browser.ib.pause(),Le(()=>or(mt)))}else $t===2?($t=0,Le(ht),it(mt),mt=null,hn.forEach(pn)):ne(`invalid state: ${$t}`);return Vt}}function Fr(l){return bn(f=>{l().then(f)})}var nr=[],vn={},at=l=>{var f=vn[l];return f===void 0?vt(l):f},xr=()=>typeof globalThis==\"object\"?globalThis:Function(\"return this\")(),qr=l=>{var f=nr.length;return nr.push(l),f},vi=(l,f)=>{for(var y=Array(l),_=0;_<l;++_)y[_]=$r(se[f+4*_>>>2>>>0],\"parameter \"+_);return y},It=(l,f)=>Object.defineProperty(f,\"name\",{value:l});function wi(l){var f=Function;if(!(f instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof f} which is not a function`);var y=It(f.name||\"unknownFunctionName\",function(){});return y.prototype=f.prototype,y=new y,l=f.apply(y,l),l instanceof Object?l:y}var et=l=>l%4===0&&(l%100!==0||l%400===0),jr=[0,31,60,91,121,152,182,213,244,274,305,335],Sr=[0,31,59,90,120,151,181,212,243,273,304,334],ft=[],Cr=(l,f)=>{ft.length=0;for(var y;y=Y[l++>>>0];){var _=y!=105;_&=y!=112,f+=_&&f%8?4:0,ft.push(y==112?se[f>>>2>>>0]:y==106?Ve[f>>>3]:y==105?N[f>>>2>>>0]:ae[f>>>3>>>0]),f+=_?8:4}return ft},Je={},st=()=>{if(!ir){var l={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:c||\"./this.program\"},f;for(f in Je)Je[f]===void 0?delete l[f]:l[f]=Je[f];var y=[];for(f in l)y.push(`${f}=${l[f]}`);ir=y}return ir},ir,$i=[null,[],[]],wn=[31,29,31,30,31,30,31,31,30,31,30,31],Kr=[31,28,31,30,31,30,31,31,30,31,30,31];function _i(l){var f=Array(jt(l)+1);return dt(l,f,0,f.length),f}function $n(l,f,y,_){function A(B,be,Te){for(B=typeof B==\"number\"?B.toString():B||\"\";B.length<be;)B=Te[0]+B;return B}function z(B,be){return A(B,be,\"0\")}function G(B,be){function Te(Lt){return 0>Lt?-1:0<Lt?1:0}var Gt;return(Gt=Te(B.getFullYear()-be.getFullYear()))===0&&(Gt=Te(B.getMonth()-be.getMonth()))===0&&(Gt=Te(B.getDate()-be.getDate())),Gt}function q(B){switch(B.getDay()){case 0:return new Date(B.getFullYear()-1,11,29);case 1:return B;case 2:return new Date(B.getFullYear(),0,3);case 3:return new Date(B.getFullYear(),0,2);case 4:return new Date(B.getFullYear(),0,1);case 5:return new Date(B.getFullYear()-1,11,31);case 6:return new Date(B.getFullYear()-1,11,30)}}function te(B){var be=B.$a;for(B=new Date(new Date(B.ab+1900,0,1).getTime());0<be;){var Te=B.getMonth(),Gt=(et(B.getFullYear())?wn:Kr)[Te];if(be>Gt-B.getDate())be-=Gt-B.getDate()+1,B.setDate(1),11>Te?B.setMonth(Te+1):(B.setMonth(0),B.setFullYear(B.getFullYear()+1));else{B.setDate(B.getDate()+be);break}}return Te=new Date(B.getFullYear()+1,0,4),be=q(new Date(B.getFullYear(),0,4)),Te=q(Te),0>=G(be,B)?0>=G(Te,B)?B.getFullYear()+1:B.getFullYear():B.getFullYear()-1}l>>>=0,f>>>=0,y>>>=0,_>>>=0;var Z=se[_+40>>>2>>>0];_={Ab:N[_>>>2>>>0],zb:N[_+4>>>2>>>0],fb:N[_+8>>>2>>>0],jb:N[_+12>>>2>>>0],gb:N[_+16>>>2>>>0],ab:N[_+20>>>2>>>0],Va:N[_+24>>>2>>>0],$a:N[_+28>>>2>>>0],Cb:N[_+32>>>2>>>0],yb:N[_+36>>>2>>>0],Bb:Z?Ke(Z):\"\"},y=Ke(y),Z={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var le in Z)y=y.replace(new RegExp(le,\"g\"),Z[le]);var Ee=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Re=\"January February March April May June July August September October November December\".split(\" \");Z={\"%a\":B=>Ee[B.Va].substring(0,3),\"%A\":B=>Ee[B.Va],\"%b\":B=>Re[B.gb].substring(0,3),\"%B\":B=>Re[B.gb],\"%C\":B=>z((B.ab+1900)/100|0,2),\"%d\":B=>z(B.jb,2),\"%e\":B=>A(B.jb,2,\" \"),\"%g\":B=>te(B).toString().substring(2),\"%G\":te,\"%H\":B=>z(B.fb,2),\"%I\":B=>(B=B.fb,B==0?B=12:12<B&&(B-=12),z(B,2)),\"%j\":B=>{for(var be=0,Te=0;Te<=B.gb-1;be+=(et(B.ab+1900)?wn:Kr)[Te++]);return z(B.jb+be,3)},\"%m\":B=>z(B.gb+1,2),\"%M\":B=>z(B.zb,2),\"%n\":()=>`\n`,\"%p\":B=>0<=B.fb&&12>B.fb?\"AM\":\"PM\",\"%S\":B=>z(B.Ab,2),\"%t\":()=>\"\t\",\"%u\":B=>B.Va||7,\"%U\":B=>z(Math.floor((B.$a+7-B.Va)/7),2),\"%V\":B=>{var be=Math.floor((B.$a+7-(B.Va+6)%7)/7);if(2>=(B.Va+371-B.$a-2)%7&&be++,be)be==53&&(Te=(B.Va+371-B.$a)%7,Te==4||Te==3&&et(B.ab)||(be=1));else{be=52;var Te=(B.Va+7-B.$a-1)%7;(Te==4||Te==5&&et(B.ab%400-1))&&be++}return z(be,2)},\"%w\":B=>B.Va,\"%W\":B=>z(Math.floor((B.$a+7-(B.Va+6)%7)/7),2),\"%y\":B=>(B.ab+1900).toString().substring(2),\"%Y\":B=>B.ab+1900,\"%z\":B=>{B=B.yb;var be=0<=B;return B=Math.abs(B)/60,(be?\"+\":\"-\")+(\"0000\"+(B/60*100+B%60)).slice(-4)},\"%Z\":B=>B.Bb,\"%%\":()=>\"%\"},y=y.replace(/%%/g,\"\\0\\0\");for(le in Z)y.includes(le)&&(y=y.replace(new RegExp(le,\"g\"),Z[le](_)));return y=y.replace(/\\0\\0/g,\"%\"),le=_i(y),le.length>f?0:(V.set(le,l>>>0),le.length-1)}for(var _n=Array(256),Ir=0;256>Ir;++Ir)_n[Ir]=String.fromCharCode(Ir);Mr=_n,ct=r.BindingError=class extends Error{constructor(l){super(l),this.name=\"BindingError\"}},r.InternalError=class extends Error{constructor(l){super(l),this.name=\"InternalError\"}},Ae.push(0,1,void 0,1,null,1,!0,1,!1,1),r.count_emval_handles=()=>Ae.length/2-5-Vr.length;var xi={ia:function(l,f,y){return Fr(async()=>{await r.sb(l,f,y)})},a:function(l,f,y){l>>>=0;var _=new qt(l);throw se[_.hb+16>>>2>>>0]=0,se[_.hb+4>>>2>>>0]=f>>>0,se[_.hb+8>>>2>>>0]=y>>>0,yr=l,Jt++,yr},y:function(){return 0},ea:function(){},R:function(){},T:function(){},ga:function(){return 0},ca:function(){},Z:function(){},ba:function(){},G:function(){},S:function(){},P:function(){},da:function(){},Q:function(){},C:function(l,f,y){f=vt(f>>>0),wt(l>>>0,{name:f,fromWireType:_=>_,toWireType:function(_,A){if(typeof A!=\"bigint\"&&typeof A!=\"number\")throw A===null?A=\"null\":(_=typeof A,A=_===\"object\"||_===\"array\"||_===\"function\"?A.toString():\"\"+A),new TypeError(`Cannot convert \"${A}\" to ${this.name}`);return typeof A==\"number\"&&(A=BigInt(A)),A},argPackAdvance:8,readValueFromPointer:Ct(f,y>>>0,f.indexOf(\"u\")==-1),bb:null})},K:function(l,f,y,_){f=vt(f>>>0),wt(l>>>0,{name:f,fromWireType:function(A){return!!A},toWireType:function(A,z){return z?y:_},argPackAdvance:8,readValueFromPointer:function(A){return this.fromWireType(Y[A>>>0])},bb:null})},J:function(l){return wt(l>>>0,gi)},B:function(l,f,y){f=vt(f>>>0),wt(l>>>0,{name:f,fromWireType:_=>_,toWireType:(_,A)=>A,argPackAdvance:8,readValueFromPointer:ge(f,y>>>0),bb:null})},s:function(l,f,y,_,A){if(l>>>=0,y>>>=0,f=vt(f>>>0),A===-1&&(A=4294967295),A=q=>q,_===0){var z=32-8*y;A=q=>q<<z>>>z}var G=f.includes(\"unsigned\")?function(q,te){return te>>>0}:function(q,te){return te};wt(l,{name:f,fromWireType:A,toWireType:G,argPackAdvance:8,readValueFromPointer:Ct(f,y,_!==0),bb:null})},o:function(l,f,y){function _(z){return new A(V.buffer,se[z+4>>>2>>>0],se[z>>>2>>>0])}var A=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][f];y=vt(y>>>0),wt(l>>>0,{name:y,fromWireType:_,argPackAdvance:8,readValueFromPointer:_},{nb:!0})},D:function(l,f){f=vt(f>>>0);var y=f===\"std::string\";wt(l>>>0,{name:f,fromWireType:function(_){var A=se[_>>>2>>>0],z=_+4;if(y)for(var G=z,q=0;q<=A;++q){var te=z+q;if(q==A||Y[te>>>0]==0){if(G=Ke(G,te-G),Z===void 0)var Z=G;else Z+=String.fromCharCode(0),Z+=G;G=te+1}}else{for(Z=Array(A),q=0;q<A;++q)Z[q]=String.fromCharCode(Y[z+q>>>0]);Z=Z.join(\"\")}return it(_),Z},toWireType:function(_,A){A instanceof ArrayBuffer&&(A=new Uint8Array(A));var z=typeof A==\"string\";if(!(z||A instanceof Uint8Array||A instanceof Uint8ClampedArray||A instanceof Int8Array))throw new ct(\"Cannot pass non-string to std::string\");var G=y&&z?jt(A):A.length,q=Kt(4+G+1),te=q+4;if(se[q>>>2>>>0]=G,y&&z)dt(A,Y,te,G+1);else if(z)for(z=0;z<G;++z){var Z=A.charCodeAt(z);if(255<Z)throw it(te),new ct(\"String has UTF-16 code units that do not fit in 8 bits\");Y[te+z>>>0]=Z}else for(z=0;z<G;++z)Y[te+z>>>0]=A[z];return _!==null&&_.push(it,q),q},argPackAdvance:8,readValueFromPointer:wr,bb(_){it(_)}})},x:function(l,f,y){if(f>>>=0,y>>>=0,y=vt(y),f===2)var _=un,A=yi,z=ln,G=q=>he[q>>>1>>>0];else f===4&&(_=bi,A=dn,z=cn,G=q=>se[q>>>2>>>0]);wt(l>>>0,{name:y,fromWireType:q=>{for(var te=se[q>>>2>>>0],Z,le=q+4,Ee=0;Ee<=te;++Ee){var Re=q+4+Ee*f;(Ee==te||G(Re)==0)&&(le=_(le,Re-le),Z===void 0?Z=le:(Z+=String.fromCharCode(0),Z+=le),le=Re+f)}return it(q),Z},toWireType:(q,te)=>{if(typeof te!=\"string\")throw new ct(`Cannot pass non-string to C++ string type ${y}`);var Z=z(te),le=Kt(4+Z+f);return se[le>>>2>>>0]=Z/f,A(te,le+4,Z+f),q!==null&&q.push(it,le),le},argPackAdvance:8,readValueFromPointer:wr,bb(q){it(q)}})},L:function(l,f){f=vt(f>>>0),wt(l>>>0,{ob:!0,name:f,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},ha:()=>1,u:function(l,f,y){return f>>>=0,y>>>=0,l=Qe(l>>>0),f=$r(f,\"emval::as\"),Hr(f,y,l)},w:function(l){return l>>>=0,Fr(()=>(l=Qe(l),l.then(pt)))},n:function(l,f,y,_){return y>>>=0,_>>>=0,l=nr[l>>>0],f=Qe(f>>>0),l(null,f,y,_)},j:function(l,f,y,_,A){return y>>>=0,_>>>=0,A>>>=0,l=nr[l>>>0],f=Qe(f>>>0),y=at(y),l(f,f[y],_,A)},b:vr,A:function(l,f){return f>>>=0,l=Qe(l>>>0),f=Qe(f),l==f},m:function(l){return l>>>=0,l===0?pt(xr()):(l=at(l),pt(xr()[l]))},i:function(l,f,y){f=vi(l,f>>>0);var _=f.shift();l--;var A=`return function (obj, func, destructorsRef, args) {\n`,z=0,G=[];y===0&&G.push(\"obj\");for(var q=[\"retType\"],te=[_],Z=0;Z<l;++Z)G.push(\"arg\"+Z),q.push(\"argType\"+Z),te.push(f[Z]),A+=`  var arg${Z} = argType${Z}.readValueFromPointer(args${z?\"+\"+z:\"\"});\n`,z+=f[Z].argPackAdvance;return A+=`  var rv = ${y===1?\"new func\":\"func.call\"}(${G.join(\", \")});\n`,_.ob||(q.push(\"emval_returnValue\"),te.push(Hr),A+=`  return emval_returnValue(retType, destructorsRef, rv);\n`),q.push(A+`};\n`),l=wi(q)(...te),y=`methodCaller<(${f.map(le=>le.name).join(\", \")}) => ${_.name}>`,qr(It(y,l))},r:function(l,f){return f>>>=0,l=Qe(l>>>0),f=Qe(f),pt(l[f])},e:function(l){l>>>=0,9<l&&(Ae[l+1]+=1)},t:function(){return pt([])},l:function(l){l=Qe(l>>>0);for(var f=Array(l.length),y=0;y<l.length;y++)f[y]=l[y];return pt(f)},f:function(l){return pt(at(l>>>0))},k:function(){return pt({})},h:function(l){l>>>=0;for(var f=Qe(l);f.length;){var y=f.pop();f.pop()(y)}vr(l)},g:function(l,f,y){f>>>=0,y>>>=0,l=Qe(l>>>0),f=Qe(f),y=Qe(y),l[f]=y},c:function(l,f){return f>>>=0,l=$r(l>>>0,\"_emval_take_value\"),l=l.readValueFromPointer(f),pt(l)},W:function(l,f){l=-9007199254740992>l||9007199254740992<l?NaN:Number(l),f>>>=0,l=new Date(1e3*l),N[f>>>2>>>0]=l.getUTCSeconds(),N[f+4>>>2>>>0]=l.getUTCMinutes(),N[f+8>>>2>>>0]=l.getUTCHours(),N[f+12>>>2>>>0]=l.getUTCDate(),N[f+16>>>2>>>0]=l.getUTCMonth(),N[f+20>>>2>>>0]=l.getUTCFullYear()-1900,N[f+24>>>2>>>0]=l.getUTCDay(),N[f+28>>>2>>>0]=(l.getTime()-Date.UTC(l.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},X:function(l,f){l=-9007199254740992>l||9007199254740992<l?NaN:Number(l),f>>>=0,l=new Date(1e3*l),N[f>>>2>>>0]=l.getSeconds(),N[f+4>>>2>>>0]=l.getMinutes(),N[f+8>>>2>>>0]=l.getHours(),N[f+12>>>2>>>0]=l.getDate(),N[f+16>>>2>>>0]=l.getMonth(),N[f+20>>>2>>>0]=l.getFullYear()-1900,N[f+24>>>2>>>0]=l.getDay(),N[f+28>>>2>>>0]=(et(l.getFullYear())?jr:Sr)[l.getMonth()]+l.getDate()-1|0,N[f+36>>>2>>>0]=-(60*l.getTimezoneOffset());var y=new Date(l.getFullYear(),6,1).getTimezoneOffset(),_=new Date(l.getFullYear(),0,1).getTimezoneOffset();N[f+32>>>2>>>0]=(y!=_&&l.getTimezoneOffset()==Math.min(_,y))|0},Y:function(l){l>>>=0;var f=new Date(N[l+20>>>2>>>0]+1900,N[l+16>>>2>>>0],N[l+12>>>2>>>0],N[l+8>>>2>>>0],N[l+4>>>2>>>0],N[l>>>2>>>0],0),y=N[l+32>>>2>>>0],_=f.getTimezoneOffset(),A=new Date(f.getFullYear(),6,1).getTimezoneOffset(),z=new Date(f.getFullYear(),0,1).getTimezoneOffset(),G=Math.min(z,A);return 0>y?N[l+32>>>2>>>0]=+(A!=z&&G==_):0<y!=(G==_)&&(A=Math.max(z,A),f.setTime(f.getTime()+6e4*((0<y?G:A)-_))),N[l+24>>>2>>>0]=f.getDay(),N[l+28>>>2>>>0]=(et(f.getFullYear())?jr:Sr)[f.getMonth()]+f.getDate()-1|0,N[l>>>2>>>0]=f.getSeconds(),N[l+4>>>2>>>0]=f.getMinutes(),N[l+8>>>2>>>0]=f.getHours(),N[l+12>>>2>>>0]=f.getDate(),N[l+16>>>2>>>0]=f.getMonth(),N[l+20>>>2>>>0]=f.getYear(),l=f.getTime(),BigInt(isNaN(l)?-1:l/1e3)},U:function(){return-52},V:function(){},N:function(l,f,y,_){y>>>=0,_>>>=0;var A=new Date().getFullYear(),z=new Date(A,0,1),G=new Date(A,6,1);A=z.getTimezoneOffset();var q=G.getTimezoneOffset();se[l>>>0>>>2>>>0]=60*Math.max(A,q),N[f>>>0>>>2>>>0]=+(A!=q),l=te=>te.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:\"short\"}).split(\" \")[1],z=l(z),G=l(G),q<A?(dt(z,Y,y,17),dt(G,Y,_,17)):(dt(z,Y,_,17),dt(G,Y,y,17))},v:()=>{ne(\"\")},d:function(l,f,y){return l>>>=0,f=Cr(f>>>0,y>>>0),Nt[l](...f)},I:function(l,f,y){return l>>>=0,f=Cr(f>>>0,y>>>0),Nt[l](...f)},H:()=>Date.now(),O:function(){return 4294901760},q:()=>performance.now(),M:function(l){l>>>=0;var f=Y.length;if(4294901760<l)return!1;for(var y=1;4>=y;y*=2){var _=f*(1+.2/y);_=Math.min(_,l+100663296);var A=Math;_=Math.max(l,_);e:{A=(A.min.call(A,4294901760,_+(65536-_%65536)%65536)-P.buffer.byteLength+65535)/65536;try{P.grow(A),Ie();var z=1;break e}catch{}z=void 0}if(z)return!0}return!1},$:function(l,f){l>>>=0,f>>>=0;var y=0;return st().forEach((_,A)=>{var z=f+y;for(A=se[l+4*A>>>2>>>0]=z,z=0;z<_.length;++z)V[A++>>>0]=_.charCodeAt(z);V[A>>>0]=0,y+=_.length+1}),0},aa:function(l,f){l>>>=0,f>>>=0;var y=st();se[l>>>2>>>0]=y.length;var _=0;return y.forEach(A=>_+=A.length+1),se[f>>>2>>>0]=_,0},z:()=>52,F:function(){return 52},_:function(){return 70},E:function(l,f,y,_){f>>>=0,y>>>=0,_>>>=0;for(var A=0,z=0;z<y;z++){var G=se[f>>>2>>>0],q=se[f+4>>>2>>>0];f+=8;for(var te=0;te<q;te++){var Z=Y[G+te>>>0],le=$i[l];Z===0||Z===10?((l===1?E:k)(er(le,0)),le.length=0):le.push(Z)}A+=q}return se[_>>>2>>>0]=A,0},fa:$n,p:function(l,f,y,_){return $n(l>>>0,f>>>0,y>>>0,_>>>0)}},pe=function(){function l(y){return pe=y.exports,pe=mn(),pe=Sn(),P=pe.ja,Ie(),oe.unshift(pe.ka),de--,de==0&&(je!==null&&(clearInterval(je),je=null),H&&(y=H,H=null,y())),pe}var f={a:xi};if(de++,r.instantiateWasm)try{return r.instantiateWasm(f,l)}catch(y){k(`Module.instantiateWasm callback failed with error: ${y}`),i(y)}return bt(f,function(y){l(y.instance)}).catch(i),{}}(),Yr=l=>(Yr=pe.la)(l);r._OrtInit=(l,f)=>(r._OrtInit=pe.ma)(l,f),r._OrtGetLastError=(l,f)=>(r._OrtGetLastError=pe.na)(l,f),r._OrtCreateSessionOptions=(l,f,y,_,A,z,G,q,te,Z)=>(r._OrtCreateSessionOptions=pe.oa)(l,f,y,_,A,z,G,q,te,Z),r._OrtAppendExecutionProvider=(l,f)=>(r._OrtAppendExecutionProvider=pe.pa)(l,f),r._OrtAddFreeDimensionOverride=(l,f,y)=>(r._OrtAddFreeDimensionOverride=pe.qa)(l,f,y),r._OrtAddSessionConfigEntry=(l,f,y)=>(r._OrtAddSessionConfigEntry=pe.ra)(l,f,y),r._OrtReleaseSessionOptions=l=>(r._OrtReleaseSessionOptions=pe.sa)(l),r._OrtCreateSession=(l,f,y)=>(r._OrtCreateSession=pe.ta)(l,f,y),r._OrtReleaseSession=l=>(r._OrtReleaseSession=pe.ua)(l),r._OrtGetInputOutputCount=(l,f,y)=>(r._OrtGetInputOutputCount=pe.va)(l,f,y),r._OrtGetInputName=(l,f)=>(r._OrtGetInputName=pe.wa)(l,f),r._OrtGetOutputName=(l,f)=>(r._OrtGetOutputName=pe.xa)(l,f),r._OrtFree=l=>(r._OrtFree=pe.ya)(l),r._OrtCreateTensor=(l,f,y,_,A,z)=>(r._OrtCreateTensor=pe.za)(l,f,y,_,A,z),r._OrtGetTensorData=(l,f,y,_,A)=>(r._OrtGetTensorData=pe.Aa)(l,f,y,_,A),r._OrtReleaseTensor=l=>(r._OrtReleaseTensor=pe.Ba)(l),r._OrtCreateRunOptions=(l,f,y,_)=>(r._OrtCreateRunOptions=pe.Ca)(l,f,y,_),r._OrtAddRunConfigEntry=(l,f,y)=>(r._OrtAddRunConfigEntry=pe.Da)(l,f,y),r._OrtReleaseRunOptions=l=>(r._OrtReleaseRunOptions=pe.Ea)(l),r._OrtCreateBinding=l=>(r._OrtCreateBinding=pe.Fa)(l),r._OrtBindInput=(l,f,y)=>(r._OrtBindInput=pe.Ga)(l,f,y),r._OrtBindOutput=(l,f,y,_)=>(r._OrtBindOutput=pe.Ha)(l,f,y,_),r._OrtClearBoundOutputs=l=>(r._OrtClearBoundOutputs=pe.Ia)(l),r._OrtReleaseBinding=l=>(r._OrtReleaseBinding=pe.Ja)(l),r._OrtRunWithBinding=(l,f,y,_,A)=>(r._OrtRunWithBinding=pe.Ka)(l,f,y,_,A),r._OrtRun=(l,f,y,_,A,z,G,q)=>(r._OrtRun=pe.La)(l,f,y,_,A,z,G,q),r._OrtEndProfiling=l=>(r._OrtEndProfiling=pe.Ma)(l),r._JsepOutput=(l,f,y)=>(r._JsepOutput=pe.Na)(l,f,y),r._JsepGetNodeName=l=>(r._JsepGetNodeName=pe.Oa)(l);var Kt=r._malloc=l=>(Kt=r._malloc=pe.Pa)(l),it=r._free=l=>(it=r._free=pe.Qa)(l),Tr=l=>(Tr=pe.Sa)(l),Ar=l=>(Ar=pe.Ta)(l),Xr=()=>(Xr=pe.Ua)(),or=l=>(or=pe.Wa)(l),xn=()=>(xn=pe.Xa)(),Tt=l=>(Tt=pe.Ya)(l),ht=()=>(ht=pe.Za)();r.___start_em_js=837952,r.___stop_em_js=838113;function Sn(){var l=pe;l=Object.assign({},l);var f=y=>_=>y(_)>>>0;return l.la=f(l.la),l.Pa=f(l.Pa),l.Ta=f(l.Ta),l.Ua=(y=>()=>y()>>>0)(l.Ua),l}r.stackSave=()=>Xr(),r.stackRestore=l=>Tr(l),r.stackAlloc=l=>Ar(l),r.UTF8ToString=Ke,r.stringToUTF8=(l,f,y)=>dt(l,Y,f,y),r.lengthBytesUTF8=jt;var Ht;H=function l(){Ht||Zr(),Ht||(H=l)};function Zr(){if(!(0<de)){if(r.preRun)for(typeof r.preRun==\"function\"&&(r.preRun=[r.preRun]);r.preRun.length;){var l=r.preRun.shift();me.unshift(l)}for(;0<me.length;)me.shift()(r);if(!(0<de||Ht||(Ht=!0,r.calledRun=!0,R))){for(;0<oe.length;)oe.shift()(r);for(n(r);0<ue.length;)ue.shift()(r)}}}return Zr(),s}})();typeof Ra==\"object\"&&typeof Ni==\"object\"?Ni.exports=Pa:typeof define==\"function\"&&define.amd&&define([],()=>Pa)});var Ba=Er(()=>{});var Da=Er(()=>{});var Ma={};kr(Ma,{cpus:()=>fc});var fc,Ua=j(()=>{fc=void 0});var Va=Er((Na,Vi)=>{\"use strict\";var Wa=(()=>{var e=typeof document<\"u\"?document.currentScript?.src:void 0;return typeof __filename<\"u\"&&(e||=__filename),function(t={}){function r(){return ae.buffer!=ue.buffer&&He(),ue}function n(){return ae.buffer!=ue.buffer&&He(),de}function i(){return ae.buffer!=ue.buffer&&He(),je}function s(){return ae.buffer!=ue.buffer&&He(),H}function a(){return ae.buffer!=ue.buffer&&He(),ne}function d(){return ae.buffer!=ue.buffer&&He(),Se}function c(){return ae.buffer!=ue.buffer&&He(),Ye}function m(){return ae.buffer!=ue.buffer&&He(),Ft}var u=t,g,b,$=new Promise((o,p)=>{g=o,b=p});u.mountExternalData=(o,p)=>{(u.Db||(u.Db=new Map)).set(o,p)},u.unmountExternalData=()=>{delete u.Db};let w=()=>{let o=(h,v,I)=>(...O)=>{let W=ht,F=v?.();O=h(...O);let re=v?.();return F!==re&&(h=re,I(F),v=I=null),ht!=W?A():O},p=h=>async(...v)=>{try{if(u.Cb)throw Error(\"Session already started\");let I=u.Cb={ec:v[0],errors:[]},O=await h(...v);if(u.Cb!==I)throw Error(\"Session mismatch\");u.Kb?.flush();let W=I.errors;if(0<W.length){let F=await Promise.all(W);if(F=F.filter(re=>re),0<F.length)throw Error(F.join(`\n`))}return O}finally{u.Cb=null}};u._OrtCreateSession=o(u._OrtCreateSession,()=>u._OrtCreateSession,h=>u._OrtCreateSession=h),u._OrtRun=p(o(u._OrtRun,()=>u._OrtRun,h=>u._OrtRun=h)),u._OrtRunWithBinding=p(o(u._OrtRunWithBinding,()=>u._OrtRunWithBinding,h=>u._OrtRunWithBinding=h)),u._OrtBindInput=o(u._OrtBindInput,()=>u._OrtBindInput,h=>u._OrtBindInput=h),w=void 0};u.jsepInit=(o,p)=>{if(w?.(),o===\"webgpu\"){[u.Kb,u.Wb,u.$b,u.Lb,u.Zb,u.ob,u.ac,u.cc,u.Xb,u.Yb,u.bc]=p;let h=u.Kb;u.jsepRegisterBuffer=(v,I,O,W)=>h.registerBuffer(v,I,O,W),u.jsepGetBuffer=v=>h.getBuffer(v),u.jsepCreateDownloader=(v,I,O)=>h.createDownloader(v,I,O),u.jsepOnReleaseSession=v=>{h.onReleaseSession(v)},u.jsepOnRunStart=v=>h.onRunStart(v)}};var x=Object.assign({},u),C=\"./this.program\",T=(o,p)=>{throw p},S=typeof window==\"object\",E=typeof importScripts==\"function\",k=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",P=u.ENVIRONMENT_IS_PTHREAD||!1,R=\"\";function L(o){return u.locateFile?u.locateFile(o,R):R+o}var V,Y,Q;if(k){var he=(Mi(),sr(Di)),N=(Wi(),sr(Ui));R=E?N.dirname(R)+\"/\":__dirname+\"/\",V=(o,p)=>(o=jt(o)?new URL(o):N.normalize(o),he.readFileSync(o,p?void 0:\"utf8\")),Q=o=>(o=V(o,!0),o.buffer||(o=new Uint8Array(o)),o),Y=(o,p,h,v=!0)=>{o=jt(o)?new URL(o):N.normalize(o),he.readFile(o,v?void 0:\"utf8\",(I,O)=>{I?h(I):p(v?O.buffer:O)})},!u.thisProgram&&1<process.argv.length&&(C=process.argv[1].replace(/\\\\/g,\"/\")),process.argv.slice(2),T=(o,p)=>{throw process.exitCode=o,p},global.Worker=Ba().Worker}else(S||E)&&(E?R=self.location.href:typeof document<\"u\"&&document.currentScript&&(R=document.currentScript.src),typeof e<\"u\"&&e&&(R=e),R.startsWith(\"blob:\")?R=\"\":R=R.substr(0,R.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),k||(V=o=>{var p=new XMLHttpRequest;return p.open(\"GET\",o,!1),p.send(null),p.responseText},E&&(Q=o=>{var p=new XMLHttpRequest;return p.open(\"GET\",o,!1),p.responseType=\"arraybuffer\",p.send(null),new Uint8Array(p.response)}),Y=(o,p,h)=>{var v=new XMLHttpRequest;v.open(\"GET\",o,!0),v.responseType=\"arraybuffer\",v.onload=()=>{v.status==200||v.status==0&&v.response?p(v.response):h()},v.onerror=h,v.send(null)}));k&&typeof performance>\"u\"&&(global.performance=Da().performance);var se=console.log.bind(console),Ce=console.error.bind(console);k&&(se=(...o)=>he.writeSync(1,o.join(\" \")+`\n`),Ce=(...o)=>he.writeSync(2,o.join(\" \")+`\n`));var Ve=se,ee=Ce;Object.assign(u,x),x=null;var ae,Ie,me=!1,oe,ue,de,je,H,ne,Se,Ye,Be,Ge,Ft;function He(){var o=ae.buffer;u.HEAP8=ue=new Int8Array(o),u.HEAP16=je=new Int16Array(o),u.HEAPU8=de=new Uint8Array(o),u.HEAPU16=H=new Uint16Array(o),u.HEAP32=ne=new Int32Array(o),u.HEAPU32=Se=new Uint32Array(o),u.HEAPF32=Ye=new Float32Array(o),u.HEAPF64=Ft=new Float64Array(o),u.HEAP64=Be=new BigInt64Array(o),u.HEAPU64=Ge=new BigUint64Array(o)}var Xe=16777216;if(P)ae=u.wasmMemory;else if(u.wasmMemory)ae=u.wasmMemory;else if(ae=new WebAssembly.Memory({initial:Xe/65536,maximum:65536,shared:!0}),!(ae.buffer instanceof SharedArrayBuffer))throw ee(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\"),k&&ee(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)\"),Error(\"bad memory\");He(),Xe=ae.buffer.byteLength;var bt=[],Nt=[],Qt=[],qt=0,yr=null,Jt=null;function Dr(){if(qt--,qt==0&&(yr!==null&&(clearInterval(yr),yr=null),Jt)){var o=Jt;Jt=null,o()}}function er(o){throw o=\"Aborted(\"+o+\")\",ee(o),me=!0,oe=1,o=new WebAssembly.RuntimeError(o+\". Build with -sASSERTIONS for more info.\"),b(o),o}var Ke=o=>o.startsWith(\"data:application/octet-stream;base64,\"),jt=o=>o.startsWith(\"file://\"),dt;dt=\"ort-wasm-simd-threaded.wasm\",Ke(dt)||(dt=L(dt));function Mr(o){if(Q)return Q(o);throw\"both async and sync fetching of the wasm failed\"}function vt(o){if(S||E){if(typeof fetch==\"function\"&&!jt(o))return fetch(o,{credentials:\"same-origin\"}).then(p=>{if(!p.ok)throw`failed to load wasm binary file at '${o}'`;return p.arrayBuffer()}).catch(()=>Mr(o));if(Y)return new Promise((p,h)=>{Y(o,v=>p(new Uint8Array(v)),h)})}return Promise.resolve().then(()=>Mr(o))}function br(o,p,h){return vt(o).then(v=>WebAssembly.instantiate(v,p)).then(h,v=>{ee(`failed to asynchronously prepare wasm: ${v}`),er(v)})}function Ur(o,p){var h=dt;return typeof WebAssembly.instantiateStreaming!=\"function\"||Ke(h)||jt(h)||k||typeof fetch!=\"function\"?br(h,o,p):fetch(h,{credentials:\"same-origin\"}).then(v=>WebAssembly.instantiateStreaming(v,o).then(p,function(I){return ee(`wasm streaming compile failed: ${I}`),ee(\"falling back to ArrayBuffer instantiation\"),br(h,o,p)}))}var Wr={826468:(o,p,h,v)=>{if(typeof u>\"u\"||!u.Db)return 1;if(o=Le(o>>>0),o.startsWith(\"./\")&&(o=o.substring(2)),o=u.Db.get(o),!o)return 2;if(p>>>=0,h>>>=0,v>>>=0,p+h>o.byteLength)return 3;try{return n().set(o.subarray(p,p+h),v>>>0),0}catch{return 4}},826969:()=>{u.Xb()},827e3:()=>{u.Yb()},827029:()=>{u.bc()},827054:o=>u.Wb(o),827087:o=>u.$b(o),827119:(o,p,h)=>{u.Lb(o,p,h,!0)},827158:(o,p,h)=>{u.Lb(o,p,h)},827191:o=>{u.ob(\"Abs\",o,void 0)},827242:o=>{u.ob(\"Neg\",o,void 0)},827293:o=>{u.ob(\"Floor\",o,void 0)},827346:o=>{u.ob(\"Ceil\",o,void 0)},827398:o=>{u.ob(\"Reciprocal\",o,void 0)},827456:o=>{u.ob(\"Sqrt\",o,void 0)},827508:o=>{u.ob(\"Exp\",o,void 0)},827559:o=>{u.ob(\"Erf\",o,void 0)},827610:o=>{u.ob(\"Sigmoid\",o,void 0)},827665:(o,p,h)=>{u.ob(\"HardSigmoid\",o,{alpha:p,beta:h})},827744:o=>{u.ob(\"Log\",o,void 0)},827795:o=>{u.ob(\"Sin\",o,void 0)},827846:o=>{u.ob(\"Cos\",o,void 0)},827897:o=>{u.ob(\"Tan\",o,void 0)},827948:o=>{u.ob(\"Asin\",o,void 0)},828e3:o=>{u.ob(\"Acos\",o,void 0)},828052:o=>{u.ob(\"Atan\",o,void 0)},828104:o=>{u.ob(\"Sinh\",o,void 0)},828156:o=>{u.ob(\"Cosh\",o,void 0)},828208:o=>{u.ob(\"Asinh\",o,void 0)},828261:o=>{u.ob(\"Acosh\",o,void 0)},828314:o=>{u.ob(\"Atanh\",o,void 0)},828367:o=>{u.ob(\"Tanh\",o,void 0)},828419:o=>{u.ob(\"Not\",o,void 0)},828470:(o,p,h)=>{u.ob(\"Clip\",o,{min:p,max:h})},828539:o=>{u.ob(\"Clip\",o,void 0)},828591:(o,p)=>{u.ob(\"Elu\",o,{alpha:p})},828649:o=>{u.ob(\"Relu\",o,void 0)},828701:(o,p)=>{u.ob(\"LeakyRelu\",o,{alpha:p})},828765:(o,p)=>{u.ob(\"ThresholdedRelu\",o,{alpha:p})},828835:(o,p)=>{u.ob(\"Cast\",o,{to:p})},828893:o=>{u.ob(\"Add\",o,void 0)},828944:o=>{u.ob(\"Sub\",o,void 0)},828995:o=>{u.ob(\"Mul\",o,void 0)},829046:o=>{u.ob(\"Div\",o,void 0)},829097:o=>{u.ob(\"Pow\",o,void 0)},829148:o=>{u.ob(\"Equal\",o,void 0)},829201:o=>{u.ob(\"Greater\",o,void 0)},829256:o=>{u.ob(\"GreaterOrEqual\",o,void 0)},829318:o=>{u.ob(\"Less\",o,void 0)},829370:o=>{u.ob(\"LessOrEqual\",o,void 0)},829429:(o,p,h,v,I)=>{u.ob(\"ReduceMean\",o,{keepDims:!!p,noopWithEmptyAxes:!!h,axes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},829588:(o,p,h,v,I)=>{u.ob(\"ReduceMax\",o,{keepDims:!!p,noopWithEmptyAxes:!!h,axes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},829746:(o,p,h,v,I)=>{u.ob(\"ReduceMin\",o,{keepDims:!!p,noopWithEmptyAxes:!!h,axes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},829904:(o,p,h,v,I)=>{u.ob(\"ReduceProd\",o,{keepDims:!!p,noopWithEmptyAxes:!!h,axes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},830063:(o,p,h,v,I)=>{u.ob(\"ReduceSum\",o,{keepDims:!!p,noopWithEmptyAxes:!!h,axes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},830221:(o,p,h,v,I)=>{u.ob(\"ReduceL1\",o,{keepDims:!!p,noopWithEmptyAxes:!!h,axes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},830378:(o,p,h,v,I)=>{u.ob(\"ReduceL2\",o,{keepDims:!!p,noopWithEmptyAxes:!!h,axes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},830535:(o,p,h,v,I)=>{u.ob(\"ReduceLogSum\",o,{keepDims:!!p,noopWithEmptyAxes:!!h,axes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},830696:(o,p,h,v,I)=>{u.ob(\"ReduceSumSquare\",o,{keepDims:!!p,noopWithEmptyAxes:!!h,axes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},830860:(o,p,h,v,I)=>{u.ob(\"ReduceLogSumExp\",o,{keepDims:!!p,noopWithEmptyAxes:!!h,axes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},831024:o=>{u.ob(\"Where\",o,void 0)},831077:(o,p,h)=>{u.ob(\"Transpose\",o,{perm:p?Array.from(a().subarray(p>>>0,h>>>0)):[]})},831185:(o,p,h,v)=>{u.ob(\"DepthToSpace\",o,{blocksize:p,mode:Le(h),format:v?\"NHWC\":\"NCHW\"})},831318:(o,p,h,v)=>{u.ob(\"DepthToSpace\",o,{blocksize:p,mode:Le(h),format:v?\"NHWC\":\"NCHW\"})},831451:(o,p,h,v,I,O,W,F,re,J,ce,ze,Me,D,ve)=>{u.ob(\"ConvTranspose\",o,{format:re?\"NHWC\":\"NCHW\",autoPad:p,dilations:[h],group:v,kernelShape:[I],pads:[O,W],strides:[F],wIsConst:()=>!!r()[J>>>0],outputPadding:ce?Array.from(a().subarray(ce>>>0,ze>>>0)):[],outputShape:Me?Array.from(a().subarray(Me>>>0,D>>>0)):[],activation:Le(ve)})},831852:(o,p,h,v,I,O,W,F,re,J,ce,ze,Me,D)=>{u.ob(\"ConvTranspose\",o,{format:F?\"NHWC\":\"NCHW\",autoPad:p,dilations:Array.from(a().subarray(h>>>0,(h>>>0)+2>>>0)),group:v,kernelShape:Array.from(a().subarray(I>>>0,(I>>>0)+2>>>0)),pads:Array.from(a().subarray(O>>>0,(O>>>0)+4>>>0)),strides:Array.from(a().subarray(W>>>0,(W>>>0)+2>>>0)),wIsConst:()=>!!r()[re>>>0],outputPadding:J?Array.from(a().subarray(J>>>0,ce>>>0)):[],outputShape:ze?Array.from(a().subarray(ze>>>0,Me>>>0)):[],activation:Le(D)})},832417:(o,p,h,v,I,O,W,F,re,J,ce,ze,Me,D,ve)=>{u.ob(\"ConvTranspose\",o,{format:re?\"NHWC\":\"NCHW\",autoPad:p,dilations:[h],group:v,kernelShape:[I],pads:[O,W],strides:[F],wIsConst:()=>!!r()[J>>>0],outputPadding:ce?Array.from(a().subarray(ce>>>0,ze>>>0)):[],outputShape:Me?Array.from(a().subarray(Me>>>0,D>>>0)):[],activation:Le(ve)})},832818:(o,p,h,v,I,O,W,F,re,J,ce,ze,Me,D)=>{u.ob(\"ConvTranspose\",o,{format:F?\"NHWC\":\"NCHW\",autoPad:p,dilations:Array.from(a().subarray(h>>>0,(h>>>0)+2>>>0)),group:v,kernelShape:Array.from(a().subarray(I>>>0,(I>>>0)+2>>>0)),pads:Array.from(a().subarray(O>>>0,(O>>>0)+4>>>0)),strides:Array.from(a().subarray(W>>>0,(W>>>0)+2>>>0)),wIsConst:()=>!!r()[re>>>0],outputPadding:J?Array.from(a().subarray(J>>>0,ce>>>0)):[],outputShape:ze?Array.from(a().subarray(ze>>>0,Me>>>0)):[],activation:Le(D)})},833383:(o,p)=>{u.ob(\"GlobalAveragePool\",o,{format:p?\"NHWC\":\"NCHW\"})},833474:(o,p,h,v,I,O,W,F,re,J,ce,ze,Me,D,ve,Oe)=>{u.ob(\"AveragePool\",o,{format:Oe?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:h,count_include_pad:v,storage_order:I,dilations:[O,W],kernel_shape:[F,re],pads:[J,ce,ze,Me],strides:[D,ve]})},833758:(o,p)=>{u.ob(\"GlobalAveragePool\",o,{format:p?\"NHWC\":\"NCHW\"})},833849:(o,p,h,v,I,O,W,F,re,J,ce,ze,Me,D,ve,Oe)=>{u.ob(\"AveragePool\",o,{format:Oe?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:h,count_include_pad:v,storage_order:I,dilations:[O,W],kernel_shape:[F,re],pads:[J,ce,ze,Me],strides:[D,ve]})},834133:(o,p)=>{u.ob(\"GlobalMaxPool\",o,{format:p?\"NHWC\":\"NCHW\"})},834220:(o,p,h,v,I,O,W,F,re,J,ce,ze,Me,D,ve,Oe)=>{u.ob(\"MaxPool\",o,{format:Oe?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:h,count_include_pad:v,storage_order:I,dilations:[O,W],kernel_shape:[F,re],pads:[J,ce,ze,Me],strides:[D,ve]})},834500:(o,p)=>{u.ob(\"GlobalMaxPool\",o,{format:p?\"NHWC\":\"NCHW\"})},834587:(o,p,h,v,I,O,W,F,re,J,ce,ze,Me,D,ve,Oe)=>{u.ob(\"MaxPool\",o,{format:Oe?\"NHWC\":\"NCHW\",auto_pad:p,ceil_mode:h,count_include_pad:v,storage_order:I,dilations:[O,W],kernel_shape:[F,re],pads:[J,ce,ze,Me],strides:[D,ve]})},834867:(o,p,h,v,I)=>{u.ob(\"Gemm\",o,{alpha:p,beta:h,transA:v,transB:I})},834971:o=>{u.ob(\"MatMul\",o,void 0)},835025:(o,p,h,v)=>{u.ob(\"ArgMax\",o,{keepDims:!!p,selectLastIndex:!!h,axis:v})},835133:(o,p,h,v)=>{u.ob(\"ArgMin\",o,{keepDims:!!p,selectLastIndex:!!h,axis:v})},835241:(o,p)=>{u.ob(\"Softmax\",o,{axis:p})},835304:(o,p)=>{u.ob(\"Concat\",o,{axis:p})},835364:(o,p,h,v,I)=>{u.ob(\"Split\",o,{axis:p,numOutputs:h,splitSizes:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},835504:o=>{u.ob(\"Expand\",o,void 0)},835558:(o,p)=>{u.ob(\"Gather\",o,{axis:Number(p)})},835629:(o,p)=>{u.ob(\"GatherElements\",o,{axis:Number(p)})},835708:(o,p,h,v,I,O,W,F,re,J,ce)=>{u.ob(\"Resize\",o,{antialias:p,axes:h?Array.from(a().subarray(h>>>0,v>>>0)):[],coordinateTransformMode:Le(I),cubicCoeffA:O,excludeOutside:W,extrapolationValue:F,keepAspectRatioPolicy:Le(re),mode:Le(J),nearestMode:Le(ce)})},836054:(o,p,h,v,I,O,W)=>{u.ob(\"Slice\",o,{starts:p?Array.from(a().subarray(p>>>0,h>>>0)):[],ends:v?Array.from(a().subarray(v>>>0,I>>>0)):[],axes:O?Array.from(a().subarray(O>>>0,W>>>0)):[]})},836270:o=>{u.ob(\"Tile\",o,void 0)},836322:(o,p,h,v)=>{u.ob(\"LayerNormalization\",o,{axis:p,epsilon:h,simplified:!!v})},836433:(o,p,h)=>{u.ob(\"InstanceNormalization\",o,{epsilon:p,format:h?\"NHWC\":\"NCHW\"})},836547:(o,p,h)=>{u.ob(\"InstanceNormalization\",o,{epsilon:p,format:h?\"NHWC\":\"NCHW\"})},836661:o=>{u.ob(\"Range\",o,void 0)},836714:(o,p)=>{u.ob(\"Einsum\",o,{equation:Le(p)})},836795:(o,p,h,v,I)=>{u.ob(\"Pad\",o,{mode:p,value:h,pads:v?Array.from(a().subarray(v>>>0,I>>>0)):[]})},836922:(o,p,h,v,I,O)=>{u.ob(\"BatchNormalization\",o,{epsilon:p,momentum:h,spatial:!!I,trainingMode:!!v,format:O?\"NHWC\":\"NCHW\"})},837091:(o,p,h,v,I,O)=>{u.ob(\"BatchNormalization\",o,{epsilon:p,momentum:h,spatial:!!I,trainingMode:!!v,format:O?\"NHWC\":\"NCHW\"})},837260:(o,p,h)=>{u.ob(\"CumSum\",o,{exclusive:Number(p),reverse:Number(h)})},837357:(o,p,h,v,I,O,W,F,re)=>{u.ob(\"Attention\",o,{numHeads:p,isUnidirectional:h,maskFilterValue:v,scale:I,doRotary:O,qkvHiddenSizes:W?Array.from(a().subarray(Number(F)>>>0,Number(F)+W>>>0)):[],pastPresentShareBuffer:!!re})},837629:o=>{u.ob(\"BiasAdd\",o,void 0)},837684:o=>{u.ob(\"BiasSplitGelu\",o,void 0)},837745:o=>{u.ob(\"FastGelu\",o,void 0)},837801:(o,p,h,v,I,O,W,F,re,J,ce,ze,Me)=>{u.ob(\"Conv\",o,{format:re?\"NHWC\":\"NCHW\",auto_pad:p,dilations:[h],group:v,kernel_shape:[I],pads:O?Array.from(a().subarray(O>>>0,W>>>0)):[],strides:[F],w_is_const:()=>!!r()[J>>>0],activation:Le(ce),activation_params:ze?Array.from(c().subarray(ze>>>0,Me>>>0)):[]})},838171:(o,p,h,v,I,O,W,F,re,J,ce,ze,Me,D,ve,Oe)=>{u.ob(\"Conv\",o,{format:ze?\"NHWC\":\"NCHW\",auto_pad:p,dilations:[h,v],group:I,kernel_shape:[O,W],pads:F?Array.from(a().subarray(F>>>0,re>>>0)):[],strides:[J,ce],w_is_const:()=>!!r()[Me>>>0],activation:Le(D),activation_params:ve?Array.from(c().subarray(ve>>>0,Oe>>>0)):[]})},838562:o=>{u.ob(\"Gelu\",o,void 0)},838614:(o,p,h,v,I,O)=>{u.ob(\"MatMulNBits\",o,{k:p,n:h,accuracyLevel:v,bits:I,blockSize:O})},838741:(o,p,h,v,I,O)=>{u.ob(\"MultiHeadAttention\",o,{numHeads:p,isUnidirectional:h,maskFilterValue:v,scale:I,doRotary:O})},838900:(o,p,h,v,I)=>{u.ob(\"RotaryEmbedding\",o,{interleaved:!!p,numHeads:h,rotaryEmbeddingDim:v,scale:I})},839039:(o,p,h)=>{u.ob(\"SkipLayerNormalization\",o,{epsilon:p,simplified:!!h})},839141:(o,p,h)=>{u.ob(\"SkipLayerNormalization\",o,{epsilon:p,simplified:!!h})},839243:(o,p,h,v)=>{u.ob(\"LayerNormalization\",o,{axis:p,epsilon:h,simplified:!!v})},839354:o=>{u.ac(o)},839388:(o,p)=>u.cc(o,p,u.Cb.ec,u.Cb.errors)};function ct(o){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${o})`,this.status=o}var Nr=o=>{o.terminate(),o.onmessage=()=>{}},wt=o=>{ge.xb.length==0&&(wr(),ge.Mb(ge.xb[0]));var p=ge.xb.pop();if(!p)return 6;ge.yb.push(p),ge.ub[o.wb]=p,p.wb=o.wb;var h={cmd:\"run\",start_routine:o.fc,arg:o.Rb,pthread_ptr:o.wb};return k&&p.unref(),p.postMessage(h,o.mc),0},Ct=0,Vr=o=>{var p=ki();return o=o(),An(p),o},Ae=(o,p,...h)=>Vr(()=>{for(var v=2*h.length,I=Ei(8*v),O=I>>>3,W=0;W<h.length;W++){var F=h[W];typeof F==\"bigint\"?(Be[O+2*W]=1n,Be[O+2*W+1]=F):(Be[O+2*W]=0n,m()[O+2*W+1>>>0]=F)}return qo(o,0,v,I,p)});function vr(o){if(P)return Ae(0,1,o);oe=o,0<Ct||(ge.hc(),u.onExit?.(o),me=!0),T(o,new ct(o))}var Qe=o=>{if(oe=o,P)throw un(o),\"unwind\";vr(o)};function pt(){for(var o=u.numThreads;o--;)wr();bt.unshift(()=>{qt++,gi(()=>Dr())})}function wr(){var o=L(\"ort-wasm-simd-threaded.worker.js\");o=new Worker(o),ge.xb.push(o)}function gi(o){P?o():Promise.all(ge.xb.map(ge.Mb)).then(o)}var ge={xb:[],yb:[],Qb:[],ub:{},Gb(){P?(ge.receiveObjectTransfer=ge.dc,ge.threadInitTLS=ge.Pb,ge.setExitStatus=ge.Ob):pt()},Ob:o=>oe=o,pc:[\"$terminateWorker\"],hc:()=>{for(var o of ge.yb)Nr(o);for(o of ge.xb)Nr(o);ge.xb=[],ge.yb=[],ge.ub=[]},Nb:o=>{var p=o.wb;delete ge.ub[p],ge.xb.push(o),ge.yb.splice(ge.yb.indexOf(o),1),o.wb=0,Ti(p)},dc(){},Pb(){ge.Qb.forEach(o=>o())},Mb:o=>new Promise(p=>{o.onmessage=O=>{O=O.data;var W=O.cmd;if(O.targetThread&&O.targetThread!=In()){var F=ge.ub[O.targetThread];F?F.postMessage(O,O.transferList):ee(`Internal error! Worker sent a message \"${W}\" to target pthread ${O.targetThread}, but that thread no longer exists!`)}else W===\"checkMailbox\"?it():W===\"spawnThread\"?wt(O):W===\"cleanupThread\"?ge.Nb(ge.ub[O.thread]):W===\"killThread\"?(O=O.thread,W=ge.ub[O],delete ge.ub[O],Nr(W),Ti(O),ge.yb.splice(ge.yb.indexOf(W),1),W.wb=0):W===\"cancelThread\"?ge.ub[O.thread].postMessage({cmd:\"cancel\"}):W===\"loaded\"?(o.loaded=!0,k&&!o.wb&&o.unref(),p(o)):W===\"alert\"?alert(`Thread ${O.threadId}: ${O.text}`):O.target===\"setimmediate\"?o.postMessage(O):W===\"callHandler\"?u[O.handler](...O.args):W&&ee(`worker sent an unknown command ${W}`)},o.onerror=O=>{throw ee(`worker sent an error! ${O.filename}:${O.lineno}: ${O.message}`),O},k&&(o.on(\"message\",O=>o.onmessage({data:O})),o.on(\"error\",O=>o.onerror(O)));var h=[],v=[\"onExit\"],I;for(I of v)u.hasOwnProperty(I)&&h.push(I);o.postMessage({cmd:\"load\",handlers:h,urlOrBlob:u.mainScriptUrlOrBlob||e,wasmMemory:ae,wasmModule:Ie})})};u.PThread=ge;var tr=o=>{for(;0<o.length;)o.shift()(u)};u.establishStackSpace=()=>{var o=In(),p=d()[o+52>>>2>>>0];o=d()[o+56>>>2>>>0],Ko(p,p-o),An(p)};function un(o){if(P)return Ae(1,0,o);Qe(o)}u.invokeEntryPoint=(o,p)=>{Ct=0,o=Yo(o,p),0<Ct?ge.Ob(o):Ai(o)};class yi{constructor(p){this.Ib=p-24}Gb(p,h){d()[this.Ib+16>>>2>>>0]=0,d()[this.Ib+4>>>2>>>0]=p,d()[this.Ib+8>>>2>>>0]=h}}var ln=0,bi=0;function dn(o,p,h,v){return P?Ae(2,1,o,p,h,v):cn(o,p,h,v)}function cn(o,p,h,v){if(o>>>=0,p>>>=0,h>>>=0,v>>>=0,typeof SharedArrayBuffer>\"u\")return ee(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\"),6;var I=[];return P&&I.length===0?dn(o,p,h,v):(o={fc:h,wb:o,Rb:v,mc:I},P?(o.oc=\"spawnThread\",postMessage(o,I),0):wt(o))}var $r=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,Hr=(o,p,h)=>{p>>>=0;var v=p+h;for(h=p;o[h]&&!(h>=v);)++h;if(16<h-p&&o.buffer&&$r)return $r.decode(o.buffer instanceof SharedArrayBuffer?o.slice(p,h):o.subarray(p,h));for(v=\"\";p<h;){var I=o[p++];if(I&128){var O=o[p++]&63;if((I&224)==192)v+=String.fromCharCode((I&31)<<6|O);else{var W=o[p++]&63;I=(I&240)==224?(I&15)<<12|O<<6|W:(I&7)<<18|O<<12|W<<6|o[p++]&63,65536>I?v+=String.fromCharCode(I):(I-=65536,v+=String.fromCharCode(55296|I>>10,56320|I&1023))}}else v+=String.fromCharCode(I)}return v},Le=(o,p)=>(o>>>=0)?Hr(n(),o,p):\"\";function pn(o,p,h){return P?Ae(3,1,o,p,h):0}function mn(o,p){if(P)return Ae(4,1,o,p)}var $t=o=>{for(var p=0,h=0;h<o.length;++h){var v=o.charCodeAt(h);127>=v?p++:2047>=v?p+=2:55296<=v&&57343>=v?(p+=4,++h):p+=3}return p},mt=(o,p,h,v)=>{if(h>>>=0,!(0<v))return 0;var I=h;v=h+v-1;for(var O=0;O<o.length;++O){var W=o.charCodeAt(O);if(55296<=W&&57343>=W){var F=o.charCodeAt(++O);W=65536+((W&1023)<<10)|F&1023}if(127>=W){if(h>=v)break;p[h++>>>0]=W}else{if(2047>=W){if(h+1>=v)break;p[h++>>>0]=192|W>>6}else{if(65535>=W){if(h+2>=v)break;p[h++>>>0]=224|W>>12}else{if(h+3>=v)break;p[h++>>>0]=240|W>>18,p[h++>>>0]=128|W>>12&63}p[h++>>>0]=128|W>>6&63}p[h++>>>0]=128|W&63}}return p[h>>>0]=0,h-I},Vt=(o,p,h)=>mt(o,n(),p,h);function rr(o,p){if(P)return Ae(5,1,o,p)}function Gr(o,p,h){if(P)return Ae(6,1,o,p,h)}function Lr(o,p,h){return P?Ae(7,1,o,p,h):0}function fn(o,p){if(P)return Ae(8,1,o,p)}function _r(o,p,h){if(P)return Ae(9,1,o,p,h)}function hn(o,p,h,v){if(P)return Ae(10,1,o,p,h,v)}function gn(o,p,h,v){if(P)return Ae(11,1,o,p,h,v)}function yn(o,p,h,v){if(P)return Ae(12,1,o,p,h,v)}function bn(o){if(P)return Ae(13,1,o)}function Fr(o,p){if(P)return Ae(14,1,o,p)}function nr(o,p,h){if(P)return Ae(15,1,o,p,h)}var vn,at=o=>{for(var p=\"\";n()[o>>>0];)p+=vn[n()[o++>>>0]];return p},xr={},qr={},vi={},It;function wi(o,p,h={}){var v=p.name;if(!o)throw new It(`type \"${v}\" must have a positive integer typeid pointer`);if(qr.hasOwnProperty(o)){if(h.Ub)return;throw new It(`Cannot register type '${v}' twice`)}qr[o]=p,delete vi[o],xr.hasOwnProperty(o)&&(p=xr[o],delete xr[o],p.forEach(I=>I()))}function et(o,p,h={}){if(!(\"argPackAdvance\"in p))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");return wi(o,p,h)}var jr=(o,p,h)=>{switch(p){case 1:return h?v=>r()[v>>>0]:v=>n()[v>>>0];case 2:return h?v=>i()[v>>>1>>>0]:v=>s()[v>>>1>>>0];case 4:return h?v=>a()[v>>>2>>>0]:v=>d()[v>>>2>>>0];case 8:return h?v=>Be[v>>>3]:v=>Ge[v>>>3];default:throw new TypeError(`invalid integer width (${p}): ${o}`)}},Sr=[],ft=[];function Cr(o){o>>>=0,9<o&&--ft[o+1]===0&&(ft[o]=void 0,Sr.push(o))}var Je=o=>{if(!o)throw new It(\"Cannot use deleted val. handle = \"+o);return ft[o]},st=o=>{switch(o){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let p=Sr.pop()||ft.length;return ft[p]=o,ft[p+1]=1,p}};function ir(o){return this.fromWireType(d()[o>>>2>>>0])}var $i={name:\"emscripten::val\",fromWireType:o=>{var p=Je(o);return Cr(o),p},toWireType:(o,p)=>st(p),argPackAdvance:8,readValueFromPointer:ir,Bb:null},wn=(o,p)=>{switch(p){case 4:return function(h){return this.fromWireType(c()[h>>>2>>>0])};case 8:return function(h){return this.fromWireType(m()[h>>>3>>>0])};default:throw new TypeError(`invalid float width (${p}): ${o}`)}},Kr=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0,_i=(o,p)=>{for(var h=o>>1,v=h+p/2;!(h>=v)&&s()[h>>>0];)++h;if(h<<=1,32<h-o&&Kr)return Kr.decode(n().slice(o,h));for(h=\"\",v=0;!(v>=p/2);++v){var I=i()[o+2*v>>>1>>>0];if(I==0)break;h+=String.fromCharCode(I)}return h},$n=(o,p,h)=>{if(h??=2147483647,2>h)return 0;h-=2;var v=p;h=h<2*o.length?h/2:o.length;for(var I=0;I<h;++I){var O=o.charCodeAt(I);i()[p>>>1>>>0]=O,p+=2}return i()[p>>>1>>>0]=0,p-v},_n=o=>2*o.length,Ir=(o,p)=>{for(var h=0,v=\"\";!(h>=p/4);){var I=a()[o+4*h>>>2>>>0];if(I==0)break;++h,65536<=I?(I-=65536,v+=String.fromCharCode(55296|I>>10,56320|I&1023)):v+=String.fromCharCode(I)}return v},xi=(o,p,h)=>{if(p>>>=0,h??=2147483647,4>h)return 0;var v=p;h=v+h-4;for(var I=0;I<o.length;++I){var O=o.charCodeAt(I);if(55296<=O&&57343>=O){var W=o.charCodeAt(++I);O=65536+((O&1023)<<10)|W&1023}if(a()[p>>>2>>>0]=O,p+=4,p+4>h)break}return a()[p>>>2>>>0]=0,p-v},pe=o=>{for(var p=0,h=0;h<o.length;++h){var v=o.charCodeAt(h);55296<=v&&57343>=v&&++h,p+=4}return p},Yr=o=>{if(!me)try{if(o(),!(0<Ct))try{P?Ai(oe):Qe(oe)}catch(p){p instanceof ct||p==\"unwind\"||T(1,p)}}catch(p){p instanceof ct||p==\"unwind\"||T(1,p)}};function Kt(o){o>>>=0,typeof Atomics.nc==\"function\"&&(Atomics.nc(a(),o>>>2,o).value.then(it),o+=128,Atomics.store(a(),o>>>2,1))}u.__emscripten_thread_mailbox_await=Kt;var it=()=>{var o=In();o&&(Kt(o),Yr(jo))};u.checkMailbox=it;var Tr=[],Ar=(o,p)=>{var h=qr[o];if(h===void 0)throw o=Lo(o),h=at(o),Rt(o),new It(`${p} has unknown type ${h}`);return h},Xr=(o,p,h)=>{var v=[];return o=o.toWireType(v,h),v.length&&(d()[p>>>2>>>0]=st(v)),o},or=o=>{try{o()}catch(p){er(p)}};function xn(){var o=ie,p={};for(let[h,v]of Object.entries(o))p[h]=typeof v==\"function\"?(...I)=>{Ht.push(h);try{return v(...I)}finally{me||(Ht.pop(),ht&&Tt===1&&Ht.length===0&&(Tt=0,Ct+=1,or(Zo),typeof Fibers<\"u\"&&Fibers.rc()))}}:v;return p}var Tt=0,ht=null,Sn=0,Ht=[],Zr={},l={},f=0,y=null,_=[];function A(){return new Promise((o,p)=>{y={resolve:o,reject:p}})}function z(){var o=Tn(65548),p=o+12;d()[o>>>2>>>0]=p,d()[o+4>>>2>>>0]=p+65536,p=Ht[0];var h=Zr[p];return h===void 0&&(h=f++,Zr[p]=h,l[h]=p),p=h,a()[o+8>>>2>>>0]=p,o}function G(){var o=a()[ht+8>>>2>>>0];return o=ie[l[o]],--Ct,o()}function q(o){if(!me){if(Tt===0){var p=!1,h=!1;o((v=0)=>{if(!me&&(Sn=v,p=!0,h)){Tt=2,or(()=>Qo(ht)),typeof Browser<\"u\"&&Browser.Hb.Tb&&Browser.Hb.resume(),v=!1;try{var I=G()}catch(F){I=F,v=!0}var O=!1;if(!ht){var W=y;W&&(y=null,(v?W.reject:W.resolve)(I),O=!0)}if(v&&!O)throw I}}),h=!0,p||(Tt=1,ht=z(),typeof Browser<\"u\"&&Browser.Hb.Tb&&Browser.Hb.pause(),or(()=>Xo(ht)))}else Tt===2?(Tt=0,or(Jo),Rt(ht),ht=null,_.forEach(Yr)):er(`invalid state: ${Tt}`);return Sn}}function te(o){return q(p=>{o().then(p)})}var Z=[],le={},Ee=o=>{var p=le[o];return p===void 0?at(o):p},Re=()=>typeof globalThis==\"object\"?globalThis:Function(\"return this\")(),B=o=>{var p=Z.length;return Z.push(o),p},be=(o,p)=>{for(var h=Array(o),v=0;v<o;++v)h[v]=Ar(d()[p+4*v>>>2>>>0],\"parameter \"+v);return h},Te=(o,p)=>Object.defineProperty(p,\"name\",{value:o});function Gt(o){var p=Function;if(!(p instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof p} which is not a function`);var h=Te(p.name||\"unknownFunctionName\",function(){});return h.prototype=p.prototype,h=new h,o=p.apply(h,o),o instanceof Object?o:h}var Lt=o=>o%4===0&&(o%100!==0||o%400===0),Ao=[0,31,60,91,121,152,182,213,244,274,305,335],Eo=[0,31,59,90,120,151,181,212,243,273,304,334];function ko(o,p,h,v,I,O,W){return P?Ae(16,1,o,p,h,v,I,O,W):-52}function Oo(o,p,h,v,I,O){if(P)return Ae(17,1,o,p,h,v,I,O)}var Si=[],Po=(o,p)=>{Si.length=0;for(var h;h=n()[o++>>>0];){var v=h!=105;v&=h!=112,p+=v&&p%8?4:0,Si.push(h==112?d()[p>>>2>>>0]:h==106?Be[p>>>3]:h==105?a()[p>>>2>>>0]:m()[p>>>3>>>0]),p+=v?8:4}return Si},Ci={},Ro=()=>{if(!Ii){var o={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:C||\"./this.program\"},p;for(p in Ci)Ci[p]===void 0?delete o[p]:o[p]=Ci[p];var h=[];for(p in o)h.push(`${p}=${o[p]}`);Ii=h}return Ii},Ii;function zo(o,p){if(P)return Ae(18,1,o,p);o>>>=0,p>>>=0;var h=0;return Ro().forEach((v,I)=>{var O=p+h;for(I=d()[o+4*I>>>2>>>0]=O,O=0;O<v.length;++O)r()[I++>>>0]=v.charCodeAt(O);r()[I>>>0]=0,h+=v.length+1}),0}function Bo(o,p){if(P)return Ae(19,1,o,p);o>>>=0,p>>>=0;var h=Ro();d()[o>>>2>>>0]=h.length;var v=0;return h.forEach(I=>v+=I.length+1),d()[p>>>2>>>0]=v,0}function Do(o){return P?Ae(20,1,o):52}function Mo(o,p,h,v){return P?Ae(21,1,o,p,h,v):52}function Uo(o,p,h,v){return P?Ae(22,1,o,p,h,v):70}var Zd=[null,[],[]];function Wo(o,p,h,v){if(P)return Ae(23,1,o,p,h,v);p>>>=0,h>>>=0,v>>>=0;for(var I=0,O=0;O<h;O++){var W=d()[p>>>2>>>0],F=d()[p+4>>>2>>>0];p+=8;for(var re=0;re<F;re++){var J=n()[W+re>>>0],ce=Zd[o];J===0||J===10?((o===1?Ve:ee)(Hr(ce,0)),ce.length=0):ce.push(J)}I+=F}return d()[v>>>2>>>0]=I,0}var No=[31,29,31,30,31,30,31,31,30,31,30,31],Vo=[31,28,31,30,31,30,31,31,30,31,30,31];function Qd(o){var p=Array($t(o)+1);return mt(o,p,0,p.length),p}var Jd=(o,p)=>{r().set(o,p>>>0)};function Ho(o,p,h,v){function I(D,ve,Oe){for(D=typeof D==\"number\"?D.toString():D||\"\";D.length<ve;)D=Oe[0]+D;return D}function O(D,ve){return I(D,ve,\"0\")}function W(D,ve){function Oe(ta){return 0>ta?-1:0<ta?1:0}var ar;return(ar=Oe(D.getFullYear()-ve.getFullYear()))===0&&(ar=Oe(D.getMonth()-ve.getMonth()))===0&&(ar=Oe(D.getDate()-ve.getDate())),ar}function F(D){switch(D.getDay()){case 0:return new Date(D.getFullYear()-1,11,29);case 1:return D;case 2:return new Date(D.getFullYear(),0,3);case 3:return new Date(D.getFullYear(),0,2);case 4:return new Date(D.getFullYear(),0,1);case 5:return new Date(D.getFullYear()-1,11,31);case 6:return new Date(D.getFullYear()-1,11,30)}}function re(D){var ve=D.zb;for(D=new Date(new Date(D.Ab+1900,0,1).getTime());0<ve;){var Oe=D.getMonth(),ar=(Lt(D.getFullYear())?No:Vo)[Oe];if(ve>ar-D.getDate())ve-=ar-D.getDate()+1,D.setDate(1),11>Oe?D.setMonth(Oe+1):(D.setMonth(0),D.setFullYear(D.getFullYear()+1));else{D.setDate(D.getDate()+ve);break}}return Oe=new Date(D.getFullYear()+1,0,4),ve=F(new Date(D.getFullYear(),0,4)),Oe=F(Oe),0>=W(ve,D)?0>=W(Oe,D)?D.getFullYear()+1:D.getFullYear():D.getFullYear()-1}o>>>=0,p>>>=0,h>>>=0,v>>>=0;var J=d()[v+40>>>2>>>0];v={kc:a()[v>>>2>>>0],jc:a()[v+4>>>2>>>0],Eb:a()[v+8>>>2>>>0],Jb:a()[v+12>>>2>>>0],Fb:a()[v+16>>>2>>>0],Ab:a()[v+20>>>2>>>0],vb:a()[v+24>>>2>>>0],zb:a()[v+28>>>2>>>0],qc:a()[v+32>>>2>>>0],ic:a()[v+36>>>2>>>0],lc:J?Le(J):\"\"},h=Le(h),J={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var ce in J)h=h.replace(new RegExp(ce,\"g\"),J[ce]);var ze=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Me=\"January February March April May June July August September October November December\".split(\" \");J={\"%a\":D=>ze[D.vb].substring(0,3),\"%A\":D=>ze[D.vb],\"%b\":D=>Me[D.Fb].substring(0,3),\"%B\":D=>Me[D.Fb],\"%C\":D=>O((D.Ab+1900)/100|0,2),\"%d\":D=>O(D.Jb,2),\"%e\":D=>I(D.Jb,2,\" \"),\"%g\":D=>re(D).toString().substring(2),\"%G\":re,\"%H\":D=>O(D.Eb,2),\"%I\":D=>(D=D.Eb,D==0?D=12:12<D&&(D-=12),O(D,2)),\"%j\":D=>{for(var ve=0,Oe=0;Oe<=D.Fb-1;ve+=(Lt(D.Ab+1900)?No:Vo)[Oe++]);return O(D.Jb+ve,3)},\"%m\":D=>O(D.Fb+1,2),\"%M\":D=>O(D.jc,2),\"%n\":()=>`\n`,\"%p\":D=>0<=D.Eb&&12>D.Eb?\"AM\":\"PM\",\"%S\":D=>O(D.kc,2),\"%t\":()=>\"\t\",\"%u\":D=>D.vb||7,\"%U\":D=>O(Math.floor((D.zb+7-D.vb)/7),2),\"%V\":D=>{var ve=Math.floor((D.zb+7-(D.vb+6)%7)/7);if(2>=(D.vb+371-D.zb-2)%7&&ve++,ve)ve==53&&(Oe=(D.vb+371-D.zb)%7,Oe==4||Oe==3&&Lt(D.Ab)||(ve=1));else{ve=52;var Oe=(D.vb+7-D.zb-1)%7;(Oe==4||Oe==5&&Lt(D.Ab%400-1))&&ve++}return O(ve,2)},\"%w\":D=>D.vb,\"%W\":D=>O(Math.floor((D.zb+7-(D.vb+6)%7)/7),2),\"%y\":D=>(D.Ab+1900).toString().substring(2),\"%Y\":D=>D.Ab+1900,\"%z\":D=>{D=D.ic;var ve=0<=D;return D=Math.abs(D)/60,(ve?\"+\":\"-\")+(\"0000\"+(D/60*100+D%60)).slice(-4)},\"%Z\":D=>D.lc,\"%%\":()=>\"%\"},h=h.replace(/%%/g,\"\\0\\0\");for(ce in J)h.includes(ce)&&(h=h.replace(new RegExp(ce,\"g\"),J[ce](v)));return h=h.replace(/\\0\\0/g,\"%\"),ce=Qd(h),ce.length>p?0:(Jd(ce,o),ce.length-1)}ge.Gb();for(var Go=Array(256),Cn=0;256>Cn;++Cn)Go[Cn]=String.fromCharCode(Cn);vn=Go,It=u.BindingError=class extends Error{constructor(o){super(o),this.name=\"BindingError\"}},u.InternalError=class extends Error{constructor(o){super(o),this.name=\"InternalError\"}},ft.push(0,1,void 0,1,null,1,!0,1,!1,1),u.count_emval_handles=()=>ft.length/2-5-Sr.length;var ec=[vr,un,dn,pn,mn,rr,Gr,Lr,fn,_r,hn,gn,yn,bn,Fr,nr,ko,Oo,zo,Bo,Do,Mo,Uo,Wo],tc={ua:function(o,p,h){return te(async()=>{await u.Zb(o,p,h)})},b:function(o,p,h){throw o>>>=0,new yi(o).Gb(p>>>0,h>>>0),ln=o,bi++,ln},ia:function(o){Fo(o>>>0,!E,1,!S,131072,!1),ge.Pb()},G:function(o){o>>>=0,P?postMessage({cmd:\"cleanupThread\",thread:o}):ge.Nb(ge.ub[o])},_:cn,A:pn,pa:mn,W:rr,Y:Gr,qa:Lr,na:fn,fa:_r,ma:hn,K:gn,X:yn,U:bn,oa:Fr,V:nr,E:function(o,p,h){o>>>=0,h>>>=0,p=at(p>>>0),et(o,{name:p,fromWireType:v=>v,toWireType:function(v,I){if(typeof I!=\"bigint\"&&typeof I!=\"number\")throw I===null?I=\"null\":(v=typeof I,I=v===\"object\"||v===\"array\"||v===\"function\"?I.toString():\"\"+I),new TypeError(`Cannot convert \"${I}\" to ${this.name}`);return typeof I==\"number\"&&(I=BigInt(I)),I},argPackAdvance:8,readValueFromPointer:jr(p,h,p.indexOf(\"u\")==-1),Bb:null})},O:function(o,p,h,v){o>>>=0,p=at(p>>>0),et(o,{name:p,fromWireType:function(I){return!!I},toWireType:function(I,O){return O?h:v},argPackAdvance:8,readValueFromPointer:function(I){return this.fromWireType(n()[I>>>0])},Bb:null})},N:function(o){return et(o>>>0,$i)},D:function(o,p,h){o>>>=0,h>>>=0,p=at(p>>>0),et(o,{name:p,fromWireType:v=>v,toWireType:(v,I)=>I,argPackAdvance:8,readValueFromPointer:wn(p,h),Bb:null})},t:function(o,p,h,v,I){if(o>>>=0,h>>>=0,p=at(p>>>0),I===-1&&(I=4294967295),I=F=>F,v===0){var O=32-8*h;I=F=>F<<O>>>O}var W=p.includes(\"unsigned\")?function(F,re){return re>>>0}:function(F,re){return re};et(o,{name:p,fromWireType:I,toWireType:W,argPackAdvance:8,readValueFromPointer:jr(p,h,v!==0),Bb:null})},p:function(o,p,h){function v(O){var W=d()[O>>>2>>>0];return O=d()[O+4>>>2>>>0],new I(r().buffer,O,W)}o>>>=0;var I=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][p];h=at(h>>>0),et(o,{name:h,fromWireType:v,argPackAdvance:8,readValueFromPointer:v},{Ub:!0})},F:function(o,p){o>>>=0,p=at(p>>>0);var h=p===\"std::string\";et(o,{name:p,fromWireType:function(v){var I=d()[v>>>2>>>0],O=v+4;if(h)for(var W=O,F=0;F<=I;++F){var re=O+F;if(F==I||n()[re>>>0]==0){if(W=Le(W,re-W),J===void 0)var J=W;else J+=String.fromCharCode(0),J+=W;W=re+1}}else{for(J=Array(I),F=0;F<I;++F)J[F]=String.fromCharCode(n()[O+F>>>0]);J=J.join(\"\")}return Rt(v),J},toWireType:function(v,I){I instanceof ArrayBuffer&&(I=new Uint8Array(I));var O=typeof I==\"string\";if(!(O||I instanceof Uint8Array||I instanceof Uint8ClampedArray||I instanceof Int8Array))throw new It(\"Cannot pass non-string to std::string\");var W=h&&O?$t(I):I.length,F=Tn(4+W+1),re=F+4;if(d()[F>>>2>>>0]=W,h&&O)Vt(I,re,W+1);else if(O)for(O=0;O<W;++O){var J=I.charCodeAt(O);if(255<J)throw Rt(re),new It(\"String has UTF-16 code units that do not fit in 8 bits\");n()[re+O>>>0]=J}else for(O=0;O<W;++O)n()[re+O>>>0]=I[O];return v!==null&&v.push(Rt,F),F},argPackAdvance:8,readValueFromPointer:ir,Bb(v){Rt(v)}})},z:function(o,p,h){if(o>>>=0,p>>>=0,h>>>=0,h=at(h),p===2)var v=_i,I=$n,O=_n,W=F=>s()[F>>>1>>>0];else p===4&&(v=Ir,I=xi,O=pe,W=F=>d()[F>>>2>>>0]);et(o,{name:h,fromWireType:F=>{for(var re=d()[F>>>2>>>0],J,ce=F+4,ze=0;ze<=re;++ze){var Me=F+4+ze*p;(ze==re||W(Me)==0)&&(ce=v(ce,Me-ce),J===void 0?J=ce:(J+=String.fromCharCode(0),J+=ce),ce=Me+p)}return Rt(F),J},toWireType:(F,re)=>{if(typeof re!=\"string\")throw new It(`Cannot pass non-string to C++ string type ${h}`);var J=O(re),ce=Tn(4+J+p);return d()[ce>>>2>>>0]=J/p,I(re,ce+4,J+p),F!==null&&F.push(Rt,ce),ce},argPackAdvance:8,readValueFromPointer:ir,Bb(F){Rt(F)}})},P:function(o,p){o>>>=0,p=at(p>>>0),et(o,{Vb:!0,name:p,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},ta:()=>1,S:function(o,p){o>>>=0,o==p>>>0?setTimeout(it):P?postMessage({targetThread:o,cmd:\"checkMailbox\"}):(o=ge.ub[o])&&o.postMessage({cmd:\"checkMailbox\"})},$:function(o,p,h,v,I){p>>>=0,h>>>=0,v/=2,Tr.length=v,I=I>>>0>>>3;for(var O=0;O<v;O++)Tr[O]=Be[I+2*O]?Be[I+2*O+1]:m()[I+2*O+1>>>0];return o=p?Wr[p]:ec[o],ge.Sb=h,h=o(...Tr),ge.Sb=0,h},ha:Kt,sa:function(o){k&&ge.ub[o>>>0].ref()},w:function(o,p,h){return p>>>=0,h>>>=0,o=Je(o>>>0),p=Ar(p,\"emval::as\"),Xr(p,h,o)},y:function(o){return o>>>=0,te(()=>(o=Je(o),o.then(st)))},o:function(o,p,h,v){return h>>>=0,v>>>=0,o=Z[o>>>0],p=Je(p>>>0),o(null,p,h,v)},k:function(o,p,h,v,I){return h>>>=0,v>>>=0,I>>>=0,o=Z[o>>>0],p=Je(p>>>0),h=Ee(h),o(p,p[h],v,I)},c:Cr,C:function(o,p){return p>>>=0,o=Je(o>>>0),p=Je(p),o==p},n:function(o){return o>>>=0,o===0?st(Re()):(o=Ee(o),st(Re()[o]))},j:function(o,p,h){p=be(o,p>>>0);var v=p.shift();o--;var I=`return function (obj, func, destructorsRef, args) {\n`,O=0,W=[];h===0&&W.push(\"obj\");for(var F=[\"retType\"],re=[v],J=0;J<o;++J)W.push(\"arg\"+J),F.push(\"argType\"+J),re.push(p[J]),I+=`  var arg${J} = argType${J}.readValueFromPointer(args${O?\"+\"+O:\"\"});\n`,O+=p[J].argPackAdvance;return I+=`  var rv = ${h===1?\"new func\":\"func.call\"}(${W.join(\", \")});\n`,v.Vb||(F.push(\"emval_returnValue\"),re.push(Xr),I+=`  return emval_returnValue(retType, destructorsRef, rv);\n`),F.push(I+`};\n`),o=Gt(F)(...re),h=`methodCaller<(${p.map(ce=>ce.name).join(\", \")}) => ${v.name}>`,B(Te(h,o))},s:function(o,p){return p>>>=0,o=Je(o>>>0),p=Je(p),st(o[p])},d:function(o){o>>>=0,9<o&&(ft[o+1]+=1)},v:function(){return st([])},m:function(o){o=Je(o>>>0);for(var p=Array(o.length),h=0;h<o.length;h++)p[h]=o[h];return st(p)},g:function(o){return st(Ee(o>>>0))},l:function(){return st({})},i:function(o){o>>>=0;for(var p=Je(o);p.length;){var h=p.pop();p.pop()(h)}Cr(o)},h:function(o,p,h){p>>>=0,h>>>=0,o=Je(o>>>0),p=Je(p),h=Je(h),o[p]=h},e:function(o,p){return p>>>=0,o=Ar(o>>>0,\"_emval_take_value\"),o=o.readValueFromPointer(p),st(o)},ca:function(o,p){o=-9007199254740992>o||9007199254740992<o?NaN:Number(o),p>>>=0,o=new Date(1e3*o),a()[p>>>2>>>0]=o.getUTCSeconds(),a()[p+4>>>2>>>0]=o.getUTCMinutes(),a()[p+8>>>2>>>0]=o.getUTCHours(),a()[p+12>>>2>>>0]=o.getUTCDate(),a()[p+16>>>2>>>0]=o.getUTCMonth(),a()[p+20>>>2>>>0]=o.getUTCFullYear()-1900,a()[p+24>>>2>>>0]=o.getUTCDay(),o=(o.getTime()-Date.UTC(o.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,a()[p+28>>>2>>>0]=o},da:function(o,p){o=-9007199254740992>o||9007199254740992<o?NaN:Number(o),p>>>=0,o=new Date(1e3*o),a()[p>>>2>>>0]=o.getSeconds(),a()[p+4>>>2>>>0]=o.getMinutes(),a()[p+8>>>2>>>0]=o.getHours(),a()[p+12>>>2>>>0]=o.getDate(),a()[p+16>>>2>>>0]=o.getMonth(),a()[p+20>>>2>>>0]=o.getFullYear()-1900,a()[p+24>>>2>>>0]=o.getDay();var h=(Lt(o.getFullYear())?Ao:Eo)[o.getMonth()]+o.getDate()-1|0;a()[p+28>>>2>>>0]=h,a()[p+36>>>2>>>0]=-(60*o.getTimezoneOffset()),h=new Date(o.getFullYear(),6,1).getTimezoneOffset();var v=new Date(o.getFullYear(),0,1).getTimezoneOffset();o=(h!=v&&o.getTimezoneOffset()==Math.min(v,h))|0,a()[p+32>>>2>>>0]=o},ea:function(o){o>>>=0;var p=new Date(a()[o+20>>>2>>>0]+1900,a()[o+16>>>2>>>0],a()[o+12>>>2>>>0],a()[o+8>>>2>>>0],a()[o+4>>>2>>>0],a()[o>>>2>>>0],0),h=a()[o+32>>>2>>>0],v=p.getTimezoneOffset(),I=new Date(p.getFullYear(),6,1).getTimezoneOffset(),O=new Date(p.getFullYear(),0,1).getTimezoneOffset(),W=Math.min(O,I);return 0>h?a()[o+32>>>2>>>0]=+(I!=O&&W==v):0<h!=(W==v)&&(I=Math.max(O,I),p.setTime(p.getTime()+6e4*((0<h?W:I)-v))),a()[o+24>>>2>>>0]=p.getDay(),h=(Lt(p.getFullYear())?Ao:Eo)[p.getMonth()]+p.getDate()-1|0,a()[o+28>>>2>>>0]=h,a()[o>>>2>>>0]=p.getSeconds(),a()[o+4>>>2>>>0]=p.getMinutes(),a()[o+8>>>2>>>0]=p.getHours(),a()[o+12>>>2>>>0]=p.getDate(),a()[o+16>>>2>>>0]=p.getMonth(),a()[o+20>>>2>>>0]=p.getYear(),o=p.getTime(),BigInt(isNaN(o)?-1:o/1e3)},aa:ko,ba:Oo,R:function(o,p,h,v){o>>>=0,p>>>=0,h>>>=0,v>>>=0;var I=new Date().getFullYear(),O=new Date(I,0,1),W=new Date(I,6,1);I=O.getTimezoneOffset();var F=W.getTimezoneOffset(),re=Math.max(I,F);d()[o>>>2>>>0]=60*re,a()[p>>>2>>>0]=+(I!=F),o=J=>J.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:\"short\"}).split(\" \")[1],O=o(O),W=o(W),F<I?(Vt(O,h,17),Vt(W,v,17)):(Vt(O,v,17),Vt(W,h,17))},q:()=>{er(\"\")},f:function(o,p,h){return o>>>=0,p=Po(p>>>0,h>>>0),Wr[o](...p)},M:function(o,p,h){return o>>>=0,p=Po(p>>>0,h>>>0),Wr[o](...p)},H:()=>{},L:()=>Date.now(),ra:()=>{throw Ct+=1,\"unwind\"},T:function(){return 4294901760},u:()=>performance.timeOrigin+performance.now(),x:()=>k?(Ua(),sr(Ma)).cpus().length:navigator.hardwareConcurrency,Q:function(o){o>>>=0;var p=n().length;if(o<=p||4294901760<o)return!1;for(var h=1;4>=h;h*=2){var v=p*(1+.2/h);v=Math.min(v,o+100663296);var I=Math;v=Math.max(o,v);e:{I=(I.min.call(I,4294901760,v+(65536-v%65536)%65536)-ae.buffer.byteLength+65535)/65536;try{ae.grow(I),He();var O=1;break e}catch{}O=void 0}if(O)return!0}return!1},ja:zo,la:Bo,Z:Qe,B:Do,J:Mo,ga:Uo,I:Wo,a:ae||u.wasmMemory,ka:Ho,r:function(o,p,h,v){return Ho(o>>>0,p>>>0,h>>>0,v>>>0)}},ie=function(){function o(h,v){return ie=h.exports,ie=xn(),ie=rc(),ge.Qb.push(ie.cb),Nt.unshift(ie.va),Ie=v,Dr(),ie}var p={a:tc};if(qt++,u.instantiateWasm)try{return u.instantiateWasm(p,o)}catch(h){ee(`Module.instantiateWasm callback failed with error: ${h}`),b(h)}return Ur(p,function(h){o(h.instance,h.module)}).catch(b),{}}(),Lo=o=>(Lo=ie.wa)(o);u.__embind_initialize_bindings=()=>(u.__embind_initialize_bindings=ie.xa)(),u._OrtInit=(o,p)=>(u._OrtInit=ie.ya)(o,p),u._OrtGetLastError=(o,p)=>(u._OrtGetLastError=ie.za)(o,p),u._OrtCreateSessionOptions=(o,p,h,v,I,O,W,F,re,J)=>(u._OrtCreateSessionOptions=ie.Aa)(o,p,h,v,I,O,W,F,re,J),u._OrtAppendExecutionProvider=(o,p)=>(u._OrtAppendExecutionProvider=ie.Ba)(o,p),u._OrtAddFreeDimensionOverride=(o,p,h)=>(u._OrtAddFreeDimensionOverride=ie.Ca)(o,p,h),u._OrtAddSessionConfigEntry=(o,p,h)=>(u._OrtAddSessionConfigEntry=ie.Da)(o,p,h),u._OrtReleaseSessionOptions=o=>(u._OrtReleaseSessionOptions=ie.Ea)(o),u._OrtCreateSession=(o,p,h)=>(u._OrtCreateSession=ie.Fa)(o,p,h),u._OrtReleaseSession=o=>(u._OrtReleaseSession=ie.Ga)(o),u._OrtGetInputOutputCount=(o,p,h)=>(u._OrtGetInputOutputCount=ie.Ha)(o,p,h),u._OrtGetInputName=(o,p)=>(u._OrtGetInputName=ie.Ia)(o,p),u._OrtGetOutputName=(o,p)=>(u._OrtGetOutputName=ie.Ja)(o,p),u._OrtFree=o=>(u._OrtFree=ie.Ka)(o),u._OrtCreateTensor=(o,p,h,v,I,O)=>(u._OrtCreateTensor=ie.La)(o,p,h,v,I,O),u._OrtGetTensorData=(o,p,h,v,I)=>(u._OrtGetTensorData=ie.Ma)(o,p,h,v,I),u._OrtReleaseTensor=o=>(u._OrtReleaseTensor=ie.Na)(o),u._OrtCreateRunOptions=(o,p,h,v)=>(u._OrtCreateRunOptions=ie.Oa)(o,p,h,v),u._OrtAddRunConfigEntry=(o,p,h)=>(u._OrtAddRunConfigEntry=ie.Pa)(o,p,h),u._OrtReleaseRunOptions=o=>(u._OrtReleaseRunOptions=ie.Qa)(o),u._OrtCreateBinding=o=>(u._OrtCreateBinding=ie.Ra)(o),u._OrtBindInput=(o,p,h)=>(u._OrtBindInput=ie.Sa)(o,p,h),u._OrtBindOutput=(o,p,h,v)=>(u._OrtBindOutput=ie.Ta)(o,p,h,v),u._OrtClearBoundOutputs=o=>(u._OrtClearBoundOutputs=ie.Ua)(o),u._OrtReleaseBinding=o=>(u._OrtReleaseBinding=ie.Va)(o),u._OrtRunWithBinding=(o,p,h,v,I)=>(u._OrtRunWithBinding=ie.Wa)(o,p,h,v,I),u._OrtRun=(o,p,h,v,I,O,W,F)=>(u._OrtRun=ie.Xa)(o,p,h,v,I,O,W,F),u._OrtEndProfiling=o=>(u._OrtEndProfiling=ie.Ya)(o),u._JsepOutput=(o,p,h)=>(u._JsepOutput=ie.Za)(o,p,h),u._JsepGetNodeName=o=>(u._JsepGetNodeName=ie._a)(o);var In=u._pthread_self=()=>(In=u._pthread_self=ie.$a)(),Tn=u._malloc=o=>(Tn=u._malloc=ie.ab)(o),Rt=u._free=o=>(Rt=u._free=ie.bb)(o);u.__emscripten_tls_init=()=>(u.__emscripten_tls_init=ie.cb)();var Fo=u.__emscripten_thread_init=(o,p,h,v,I,O)=>(Fo=u.__emscripten_thread_init=ie.eb)(o,p,h,v,I,O);u.__emscripten_thread_crashed=()=>(u.__emscripten_thread_crashed=ie.fb)();var qo=(o,p,h,v,I)=>(qo=ie.gb)(o,p,h,v,I),Ti=o=>(Ti=ie.hb)(o),Ai=u.__emscripten_thread_exit=o=>(Ai=u.__emscripten_thread_exit=ie.ib)(o),jo=()=>(jo=ie.jb)(),Ko=(o,p)=>(Ko=ie.kb)(o,p),An=o=>(An=ie.lb)(o),Ei=o=>(Ei=ie.mb)(o),ki=()=>(ki=ie.nb)(),Yo=u.dynCall_ii=(o,p)=>(Yo=u.dynCall_ii=ie.pb)(o,p),Xo=o=>(Xo=ie.qb)(o),Zo=()=>(Zo=ie.rb)(),Qo=o=>(Qo=ie.sb)(o),Jo=()=>(Jo=ie.tb)();u.___start_em_js=839500,u.___stop_em_js=839661;function rc(){var o=ie;o=Object.assign({},o);var p=v=>I=>v(I)>>>0,h=v=>()=>v()>>>0;return o.wa=p(o.wa),o.$a=h(o.$a),o.ab=p(o.ab),o.emscripten_main_runtime_thread_id=h(o.emscripten_main_runtime_thread_id),o.mb=p(o.mb),o.nb=h(o.nb),o}u.wasmMemory=ae,u.stackSave=()=>ki(),u.stackRestore=o=>An(o),u.stackAlloc=o=>Ei(o),u.keepRuntimeAlive=()=>0<Ct,u.UTF8ToString=Le,u.stringToUTF8=Vt,u.lengthBytesUTF8=$t,u.ExitStatus=ct,u.PThread=ge;var En;Jt=function o(){En||ea(),En||(Jt=o)};function ea(){if(!(0<qt))if(P)g(u),P||tr(Nt),startWorker(u);else{if(u.preRun)for(typeof u.preRun==\"function\"&&(u.preRun=[u.preRun]);u.preRun.length;)bt.unshift(u.preRun.shift());tr(bt),0<qt||En||(En=!0,u.calledRun=!0,me||(P||tr(Nt),g(u),P||tr(Qt)))}}return ea(),$}})();typeof Na==\"object\"&&typeof Vi==\"object\"?Vi.exports=Wa:typeof define==\"function\"&&define.amd&&define([],()=>Wa)});var Ha=Er((gh,hc)=>{hc.exports='\"use strict\";var Module={},ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require(\"worker_threads\"),parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",e=>onmessage({data:e}));var fs=require(\"fs\"),vm=require(\"vm\");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,\"utf8\"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(...e){var a=e.join(\" \");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,a+`\\n`);return}console.error(a)}function threadAlert(...e){var a=e.join(\" \");postMessage({cmd:\"alert\",text:a,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,a)=>{var r=Module.wasmModule;Module.wasmModule=null;var t=new WebAssembly.Instance(r,e);return a(t)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd===\"load\"){let r=[];self.onmessage=t=>r.push(t),self.startWorker=t=>{Module=t,postMessage({cmd:\"loaded\"});for(let s of r)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const t of e.data.handlers)Module[t]=(...s)=>{postMessage({cmd:\"callHandler\",handler:t,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob==\"string\")importScripts(e.data.urlOrBlob);else{var a=URL.createObjectURL(e.data.urlOrBlob);importScripts(a),URL.revokeObjectURL(a)}ortWasmThreaded(Module)}else if(e.data.cmd===\"run\"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(r){if(r!=\"unwind\")throw r}}else e.data.cmd===\"cancel\"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target===\"setimmediate\"||(e.data.cmd===\"checkMailbox\"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(r){throw Module.__emscripten_thread_crashed?.(),r}}self.onmessage=handleMessage;\\n'});var La,gc,Hi,Gi,Un,Ga,yc,bc,vc,Fa,Fe,Or=j(()=>{\"use strict\";La=za();gc=Va(),Gi=!1,Un=!1,Ga=!1,yc=e=>{if(e===1)return!1;if(typeof SharedArrayBuffer>\"u\")return typeof self<\"u\"&&!self.crossOriginIsolated&&console.warn(\"env.wasm.numThreads is set to \"+e+\", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.\"),!1;typeof process<\"u\"&&process.versions&&process.versions.node&&console.warn(\"env.wasm.numThreads is set to \"+e+\", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.\");try{return typeof MessageChannel<\"u\"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},bc=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},vc=(e,t)=>e?t?\"ort-wasm-simd-threaded.wasm\":\"ort-wasm-simd.wasm\":t?\"ort-wasm-threaded.wasm\":\"ort-wasm.wasm\",Fa=async e=>{if(Gi)return Promise.resolve();if(Un)throw new Error(\"multiple calls to 'initializeWebAssembly()' detected.\");if(Ga)throw new Error(\"previous call to 'initializeWebAssembly()' failed.\");Un=!0;let t=e.initTimeout,r=e.numThreads,n=e.simd,i=yc(r),s=n&&bc(),a=e.wasmPaths,d=typeof a==\"string\"?a:void 0,c=vc(s,i),m=typeof a==\"object\"?a[c]:void 0,u=!1,g=[];if(t>0&&g.push(new Promise(b=>{setTimeout(()=>{u=!0,b()},t)})),g.push(new Promise((b,$)=>{let w=i?gc:La,x={locateFile:(C,T)=>{if(i&&C.endsWith(\".worker.js\")&&typeof Blob<\"u\")return URL.createObjectURL(new Blob([Ha()],{type:\"text/javascript\"}));if(C.endsWith(\".wasm\")){if(m)return m;let S=d??T;return c===\"ort-wasm-simd.wasm\"?S+\"ort-wasm-simd.jsep.wasm\":c===\"ort-wasm-simd-threaded.wasm\"?S+\"ort-wasm-simd-threaded.jsep.wasm\":S+c}return T+C}};if(i)if(x.numThreads=r,typeof Blob>\"u\")x.mainScriptUrlOrBlob=(void 0)(__dirname,\"ort-wasm-threaded.js\");else{let C=`var ortWasmThreaded=${w.toString()};`;x.mainScriptUrlOrBlob=new Blob([C],{type:\"text/javascript\"})}w(x).then(C=>{Un=!1,Gi=!0,Hi=C,b()},C=>{Un=!1,Ga=!0,$(C)})})),await Promise.race(g),u)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Fe=()=>{if(Gi&&Hi)return Hi;throw new Error(\"WebAssembly is not initialized yet.\")}});var qe,Jr,We,Wn=j(()=>{\"use strict\";Or();qe=(e,t)=>{let r=Fe(),n=r.lengthBytesUTF8(e)+1,i=r._malloc(n);return r.stringToUTF8(e,i,n),t.push(i),i},Jr=(e,t,r,n)=>{if(typeof e==\"object\"&&e!==null){if(r.has(e))throw new Error(\"Circular reference in options\");r.add(e)}Object.entries(e).forEach(([i,s])=>{let a=t?t+i:i;if(typeof s==\"object\")Jr(s,a+\".\",r,n);else if(typeof s==\"string\"||typeof s==\"number\")n(a,s.toString());else if(typeof s==\"boolean\")n(a,s?\"1\":\"0\");else throw new Error(`Can't handle extra config type: ${typeof s}`)})},We=e=>{let t=Fe(),r=t.stackSave();try{let n=t.stackAlloc(8);t._OrtGetLastError(n,n+4);let i=t.HEAP32[n/4],s=t.HEAPU32[n/4+1],a=s?t.UTF8ToString(s):\"\";throw new Error(`${e} ERROR_CODE: ${i}, ERROR_MESSAGE: ${a}`)}finally{t.stackRestore(r)}}});var qa,ja=j(()=>{\"use strict\";Or();Wn();qa=e=>{let t=Fe(),r=0,n=[],i=e||{};try{if(e?.logSeverityLevel===void 0)i.logSeverityLevel=2;else if(typeof e.logSeverityLevel!=\"number\"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)i.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!=\"number\"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(i.terminate=!1);let s=0;return e?.tag!==void 0&&(s=qe(e.tag,n)),r=t._OrtCreateRunOptions(i.logSeverityLevel,i.logVerbosityLevel,!!i.terminate,s),r===0&&We(\"Can't create run options.\"),e?.extra!==void 0&&Jr(e.extra,\"\",new WeakSet,(a,d)=>{let c=qe(a,n),m=qe(d,n);t._OrtAddRunConfigEntry(r,c,m)!==0&&We(`Can't set a run config entry: ${a} - ${d}.`)}),[r,n]}catch(s){throw r!==0&&t._OrtReleaseRunOptions(r),n.forEach(a=>t._free(a)),s}}});var wc,$c,_c,xc,Ka,Ya=j(()=>{\"use strict\";Or();Wn();wc=e=>{switch(e){case\"disabled\":return 0;case\"basic\":return 1;case\"extended\":return 2;case\"all\":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},$c=e=>{switch(e){case\"sequential\":return 0;case\"parallel\":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},_c=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly=\"1\"),e.executionProviders&&e.executionProviders.some(r=>(typeof r==\"string\"?r:r.name)===\"webgpu\")&&(e.enableMemPattern=!1)},xc=(e,t,r)=>{for(let n of t){let i=typeof n==\"string\"?n:n.name;switch(i){case\"webnn\":if(i=\"WEBNN\",typeof n!=\"string\"){let a=n;if(a?.deviceType){let d=qe(\"deviceType\",r),c=qe(a.deviceType,r);Fe()._OrtAddSessionConfigEntry(e,d,c)!==0&&We(`Can't set a session config entry: 'deviceType' - ${a.deviceType}.`)}if(a?.numThreads){let d=a.numThreads;(typeof d!=\"number\"||!Number.isInteger(d)||d<0)&&(d=0);let c=qe(\"numThreads\",r),m=qe(d.toString(),r);Fe()._OrtAddSessionConfigEntry(e,c,m)!==0&&We(`Can't set a session config entry: 'numThreads' - ${a.numThreads}.`)}if(a?.powerPreference){let d=qe(\"powerPreference\",r),c=qe(a.powerPreference,r);Fe()._OrtAddSessionConfigEntry(e,d,c)!==0&&We(`Can't set a session config entry: 'powerPreference' - ${a.powerPreference}.`)}}break;case\"webgpu\":if(i=\"JS\",typeof n!=\"string\"){let a=n;if(a?.preferredLayout){if(a.preferredLayout!==\"NCHW\"&&a.preferredLayout!==\"NHWC\")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${a.preferredLayout}`);let d=qe(\"preferredLayout\",r),c=qe(a.preferredLayout,r);Fe()._OrtAddSessionConfigEntry(e,d,c)!==0&&We(`Can't set a session config entry: 'preferredLayout' - ${a.preferredLayout}.`)}}break;case\"wasm\":case\"cpu\":continue;default:throw new Error(`not supported execution provider: ${i}`)}let s=qe(i,r);Fe()._OrtAppendExecutionProvider(e,s)!==0&&We(`Can't append execution provider: ${i}.`)}},Ka=e=>{let t=Fe(),r=0,n=[],i=e||{};_c(i);try{let s=wc(i.graphOptimizationLevel??\"all\"),a=$c(i.executionMode??\"sequential\"),d=typeof i.logId==\"string\"?qe(i.logId,n):0,c=i.logSeverityLevel??2;if(!Number.isInteger(c)||c<0||c>4)throw new Error(`log serverity level is not valid: ${c}`);let m=i.logVerbosityLevel??0;if(!Number.isInteger(m)||m<0||m>4)throw new Error(`log verbosity level is not valid: ${m}`);let u=typeof i.optimizedModelFilePath==\"string\"?qe(i.optimizedModelFilePath,n):0;if(r=t._OrtCreateSessionOptions(s,!!i.enableCpuMemArena,!!i.enableMemPattern,a,!!i.enableProfiling,0,d,c,m,u),r===0&&We(\"Can't create session options.\"),i.executionProviders&&xc(r,i.executionProviders,n),i.enableGraphCapture!==void 0){if(typeof i.enableGraphCapture!=\"boolean\")throw new Error(`enableGraphCapture must be a boolean value: ${i.enableGraphCapture}`);let g=qe(\"enableGraphCapture\",n),b=qe(i.enableGraphCapture.toString(),n);t._OrtAddSessionConfigEntry(r,g,b)!==0&&We(`Can't set a session config entry: 'enableGraphCapture' - ${i.enableGraphCapture}.`)}if(i.freeDimensionOverrides)for(let[g,b]of Object.entries(i.freeDimensionOverrides)){if(typeof g!=\"string\")throw new Error(`free dimension override name must be a string: ${g}`);if(typeof b!=\"number\"||!Number.isInteger(b)||b<0)throw new Error(`free dimension override value must be a non-negative integer: ${b}`);let $=qe(g,n);t._OrtAddFreeDimensionOverride(r,$,b)!==0&&We(`Can't set a free dimension override: ${g} - ${b}.`)}return i.extra!==void 0&&Jr(i.extra,\"\",new WeakSet,(g,b)=>{let $=qe(g,n),w=qe(b,n);t._OrtAddSessionConfigEntry(r,$,w)!==0&&We(`Can't set a session config entry: ${g} - ${b}.`)}),[r,n]}catch(s){throw r!==0&&t._OrtReleaseSessionOptions(r),n.forEach(a=>t._free(a)),s}}});var Li,Yt,cr,Nn,en,Vn,Fi,ye=j(()=>{\"use strict\";Li=e=>{switch(e){case\"int8\":return 3;case\"uint8\":return 2;case\"bool\":return 9;case\"int16\":return 5;case\"uint16\":return 4;case\"int32\":return 6;case\"uint32\":return 12;case\"float16\":return 10;case\"float32\":return 1;case\"float64\":return 11;case\"string\":return 8;case\"int64\":return 7;case\"uint64\":return 13;default:throw new Error(`unsupported data type: ${e}`)}},Yt=e=>{switch(e){case 3:return\"int8\";case 2:return\"uint8\";case 9:return\"bool\";case 5:return\"int16\";case 4:return\"uint16\";case 6:return\"int32\";case 12:return\"uint32\";case 10:return\"float16\";case 1:return\"float32\";case 11:return\"float64\";case 8:return\"string\";case 7:return\"int64\";case 13:return\"uint64\";default:throw new Error(`unsupported data type: ${e}`)}},cr=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],Nn=e=>{switch(e){case\"float16\":return typeof Float16Array<\"u\"&&Float16Array.from?Float16Array:Uint16Array;case\"float32\":return Float32Array;case\"uint8\":return Uint8Array;case\"int8\":return Int8Array;case\"uint16\":return Uint16Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"bool\":return Uint8Array;case\"float64\":return Float64Array;case\"uint32\":return Uint32Array;case\"int64\":return BigInt64Array;case\"uint64\":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},en=e=>{switch(e){case\"verbose\":return 0;case\"info\":return 1;case\"warning\":return 2;case\"error\":return 3;case\"fatal\":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},Vn=e=>e===\"float32\"||e===\"float16\"||e===\"int32\"||e===\"int64\"||e===\"uint32\"||e===\"uint8\"||e===\"bool\",Fi=e=>{switch(e){case\"none\":return 0;case\"cpu\":return 1;case\"cpu-pinned\":return 2;case\"texture\":return 3;case\"gpu-buffer\":return 4;default:throw new Error(`unsupported data location: ${e}`)}}});var tn,qi=j(()=>{\"use strict\";tn=async e=>{if(typeof e==\"string\")if(typeof process<\"u\"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(e))}catch(t){if(t.code===\"ERR_FS_FILE_TOO_LARGE\"){let r=(void 0)(e),n=[];for await(let i of r)n.push(i);return new Uint8Array(Buffer.concat(n))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get(\"Content-Length\"),n=r?parseInt(r,10):0;if(n<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let i=t.body.getReader(),s;try{s=new ArrayBuffer(n)}catch(d){if(d instanceof RangeError){let c=Math.ceil(n/65536);s=new WebAssembly.Memory({initial:c,maximum:c}).buffer}else throw d}let a=0;for(;;){let{done:d,value:c}=await i.read();if(d)break;let m=c.byteLength;new Uint8Array(s,a,m).set(c),a+=m}return new Uint8Array(s,0,n)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}});var Sc,Cc,Xa,Za,Qa,Ic,Ne,Xt=j(()=>{\"use strict\";ye();Sc=[\"V\",\"I\",\"W\",\"E\",\"F\"],Cc=(e,t)=>{console.log(`[${Sc[e]},${new Date().toISOString()}]${t}`)},Qa=(e,t)=>{Xa=e,Za=t},Ic=(e,t)=>{let r=en(e),n=en(Xa);r>=n&&Cc(r,typeof t==\"function\"?t():t)},Ne=(...e)=>{Za&&Ic(...e)}});var Ja,es=j(()=>{\"use strict\";ye();Ja=(e,t)=>new(Nn(t))(e)});var Hn=j(()=>{\"use strict\"});var ts,ji,Ki,Tc,Ac,rs,Xi,Yi,is,os=j(()=>{\"use strict\";Xt();Hn();ts=new Map([[64,250],[128,200],[256,200],[512,200],[2048,230],[4096,200],[8192,50],[16384,50],[32768,50],[65536,50],[131072,50],[262144,50],[524288,50],[1048576,50],[2097152,30],[4194304,20],[8388608,10],[12582912,10],[16777216,10],[26214400,15],[33554432,22],[44236800,2],[58982400,6],[67108864,6],[134217728,6],[167772160,6]]),ji=[],Ki=e=>Math.ceil(e/16)*16,Tc=e=>{for(let t=0;t<ji.length;t++){let r=ji[t];if(e<=r)return r}return Math.ceil(e/16)*16},Ac=1,rs=()=>Ac++,Xi=async(e,t,r,n)=>{let i=Ki(r),s=e.device.createBuffer({size:i,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let a=e.getCommandEncoder();e.endComputePass(),a.copyBufferToBuffer(t,0,s,0,i),e.flush(),await s.mapAsync(GPUMapMode.READ);let d=s.getMappedRange();if(n){let c=n();return c.set(new Uint8Array(d,0,r)),c}else return new Uint8Array(d.slice(0,r))}finally{s.destroy()}},Yi=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map,this.capturedPendingBuffers=new Map;for(let[r]of ts)ji.push(r),this.freeBuffers.set(r,[]),this.freeUniformBuffers.set(r,[])}upload(t,r){let n=r.buffer,i=r.byteOffset,s=r.byteLength,a=Ki(s),d=this.storageCache.get(t);if(!d)throw new Error(\"gpu data for uploading does not exist\");if(d.originalSize!==s)throw new Error(`inconsistent data size. gpu data size=${d.originalSize}, data size=${s}`);let c=this.backend.device.createBuffer({mappedAtCreation:!0,size:a,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),m=c.getMappedRange();new Uint8Array(m).set(new Uint8Array(n,i,s)),c.unmap();let u=this.backend.getCommandEncoder();this.backend.endComputePass(),u.copyBufferToBuffer(c,0,d.gpuData.buffer,0,a),Ne(\"verbose\",()=>`[WebGPU] GpuDataManager.upload(id=${t})`),this.buffersForUploadingPending.push(c)}memcpy(t,r){let n=this.storageCache.get(t);if(!n)throw new Error(\"source gpu data for memcpy does not exist\");let i=this.storageCache.get(r);if(!i)throw new Error(\"destination gpu data for memcpy does not exist\");if(n.originalSize!==i.originalSize)throw new Error(\"inconsistent source and destination gpu data size\");let s=Ki(n.originalSize),a=this.backend.getCommandEncoder();this.backend.endComputePass(),a.copyBufferToBuffer(n.gpuData.buffer,0,i.gpuData.buffer,0,s)}registerExternalBuffer(t,r,n){let i;if(n){if(i=this.externalBuffers.get(n),i===void 0)throw new Error(\"previous buffer is not registered\");if(t===n)return Ne(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${i}, buffer is the same, skip.`),i;if(this.backend.capturedCommandList.has(this.backend.currentSessionId))throw new Error(`Registering a different external buffer under graph capture mode is not supported yet.\n             Please use the previous external buffer!`);this.externalBuffers.delete(n)}else i=rs();return this.storageCache.set(i,{gpuData:{id:i,type:0,buffer:t},originalSize:r}),this.externalBuffers.set(t,i),Ne(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${i}, registered.`),i}unregisterExternalBuffer(t){let r=this.externalBuffers.get(t);r!==void 0&&(this.storageCache.delete(r),this.externalBuffers.delete(t),Ne(\"verbose\",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${r}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let n=Tc(t),i,s=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,a=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(s||a){let m=(s?this.freeBuffers:this.freeUniformBuffers).get(n);m?m.length>0?i=m.pop():i=this.backend.device.createBuffer({size:n,usage:r}):i=this.backend.device.createBuffer({size:n,usage:r})}else i=this.backend.device.createBuffer({size:n,usage:r});let d={id:rs(),type:0,buffer:i};return this.storageCache.set(d.id,{gpuData:d,originalSize:t}),Ne(\"verbose\",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${d.id}`),d}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r=this.storageCache.get(t);if(!r)throw new Error(\"releasing data does not exist\");return Ne(\"verbose\",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,r){let n=this.storageCache.get(t);if(!n)throw new Error(\"data does not exist\");await Xi(this.backend,n.gpuData.buffer,n.originalSize,r)}refreshPendingBuffers(){for(let t of this.buffersForUploadingPending)t.destroy();if(this.buffersForUploadingPending=[],this.buffersPending.length!==0)if(this.backend.sessionStatus===\"default\"){for(let t of this.buffersPending){let r=ts.get(t.size);if((t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE){let n=this.freeBuffers.get(t.size)||[];r===void 0||n.length>=r?t.destroy():n.push(t)}else if((t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM){let n=this.freeUniformBuffers.get(t.size)||[];r===void 0||n.length>=r?t.destroy():n.push(t)}else t.destroy()}this.buffersPending=[]}else{let t=this.capturedPendingBuffers.get(this.backend.currentSessionId);t||(t=[],this.capturedPendingBuffers.set(this.backend.currentSessionId,t));for(let r of this.buffersPending)t.push(r);this.buffersPending=[]}}dispose(){this.freeBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.capturedPendingBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.capturedPendingBuffers=new Map}onReleaseSession(t){let r=this.capturedPendingBuffers.get(t);r&&(r.forEach(n=>{n.destroy()}),this.capturedPendingBuffers.delete(t))}},is=(...e)=>new Yi(...e)});var Zi,we,Ze=j(()=>{\"use strict\";Zi=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(\";\")),this.key}},we=e=>new Zi(e)});var Qi,zt,M,pr,Gn,Ln,Fn,xe=j(()=>{\"use strict\";Qi=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},zt=class{static calcShape(t,r,n=!1){let i=t.length,s=r.length;if(i===0)return r;if(s===0)return t;let a=Math.max(t.length,r.length),d=new Array(a);if(n){if(i<2||s<2)return;let c=Qi.calcMatMulShape([t[i-2],t[i-1]],[r[s-2],r[s-1]]);if(c===void 0)return;[d[a-2],d[a-1]]=c}for(let c=n?3:1;c<=a;c++){let m=i-c<0?1:t[i-c],u=s-c<0?1:r[s-c];if(m!==u&&m>1&&u>1)return;let g=Math.max(m,u);if(m&&u)d[a-c]=Math.max(m,u);else{if(g>1)return;d[a-c]=0}}return d}static isValidBroadcast(t,r){let n=t.length,i=r.length;if(n>i)return!1;for(let s=1;s<=n;s++)if(t[n-s]!==1&&t[n-s]!==r[i-s])return!1;return!0}},M=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static convertShape(t,r=4){let n=t.length;if(n===0)return[];let i=new Array(n),s=n-1;for(;s>=0;){if(t[s]%r===0){i[s]=t[s]/r;break}if(r%t[s]!==0)throw new Error(\"cannot convert shape\");i[s]=1,r/=t[s],s--}for(s--;s>=0;s--)i[s]=t[s];return i}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,n){let i=1;for(let s=r;s<n;s++){if(t[s]<0)throw new Error(\"cannot get valid size from specified dimension range. Most likely the range contains negative values in them.\");i*=t[s]}return i}static computeStrides(t){let r=t.length;if(r===0)return[];if(r===1)return[1];let n=new Array(r);n[r-1]=1,n[r-2]=t[r-1];for(let i=r-3;i>=0;--i)n[i]=n[i+1]*t[i+1];return n}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error(\"unsupported axis for this operation.\");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(n=>this.normalizeAxis(n,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(n=>t[n]):t.slice().reverse()}static padShape(t,r){let n=t.length;return t.map((i,s)=>i+r[s]+r[s+n])}static areEqual(t,r){return t.length!==r.length?!1:t.every((n,i)=>n===r[i])}},pr=class e{static adjustPoolAttributes(t,r,n,i,s,a){if(!t&&n.length!==r.length-2)throw new Error(\"length of specified kernel shapes should be 2 less than length of input dimensions\");if(t)for(let d=0;d<r.length-2;d++)d>=n.length?n.push(r[d+2]):n[d]=r[d+2];for(let d=0;d<n.length;d++)if(d<i.length){if(i[d]<0)throw new Error(\"strides should be greater than or equal to 1\")}else i.push(1);for(let d=0;d<n.length;d++)if(d<s.length){if(s[d]<0)throw new Error(\"dilations should be greater than or equal to 1\")}else s.push(1);for(let d=0;d<n.length*2;d++)if(d<a.length){if(a[d]<0)throw new Error(\"pad should be greater than or equal to 1\")}else a.push(0);for(let d=0;d<n.length;d++){if(n[d]<=0)throw new Error(\"kernel shapes need to be greater than 0\");if(a[d]>=n[d]||a[d+n.length]>=n[d])throw new Error(\"pads should be smaller than kernel\")}}static adjustPadsBasedOnAutoPad(t,r,n,i,s,a,d){if(d){if(s.length!==2*(t.length-2))throw new Error(\"length of pads should be twice the length of data dimensions\");if(r.length!==t.length-2)throw new Error(\"length of strides should be the length of data dimensions\");if(i.length!==t.length-2)throw new Error(\"length of kernel shapes should be the length of data dimensions\");for(let c=0;c<t.length-2;c++)e.adjustPadAndReturnShape(t[c+(a?1:2)],r[c],n[c],i[c],s,c,c+t.length-2,d)}}static computePoolOutputShape(t,r,n,i,s,a,d){if(r.length<=0)throw new Error(\"input shape must be of size greater than 0\");let c=[r[0],r[1]];return e.computeShapeHelper(t,r,c,n,i,s,a,d),c}static computeConvOutputShape(t,r,n,i,s,a,d){if(t.length<=0||r.length<=0)throw new Error(\"invalid input tensor dims or invalid filter tensor dims\");let c=[t[0],r[0]];return e.computeShapeHelper(!1,t,c,n,i,s,a,d),c}static computeShapeHelper(t,r,n,i,s,a,d,c){if(t)for(let m=0;m<r.length-2;m++)n.push(1);else for(let m=0;m<r.length-2;m++)n.push(e.adjustPadAndReturnShape(r[m+2],i[m],s[m],a[m],d,m,m+r.length-2,c))}static adjustPadAndReturnShape(t,r,n,i,s,a,d,c){let m=n*(i-1)+1;if(c&&c!==\"NOTSET\")switch(c){case\"VALID\":return s[a]=0,s[d]=0,Math.floor((t-m)/r+1);case\"SAME_LOWER\":case\"SAME_UPPER\":if(n!==1)throw new Error(\"Dilation not supported for SAME_UPPER or SAME_LOWER\");{let g=((t+r-1)/r-1)*r+i-t;return s[a]=Math.floor(c===\"SAME_LOWER\"?(g+1)/2:g/2),s[d]=g-s[a],Math.floor((t+g-i)/r+1)}default:throw new Error(\"Unsupported AutoPad type\")}else return Math.floor((t+s[a]+s[d]-m)/r+1)}},Gn=class{static getShapeOfGemmResult(t,r,n,i,s){if(t.length!==2||n.length!==2)throw new Error(\"shape need to be of size 2\");let a,d,c;r?(a=t[1],d=t[0]):(a=t[0],d=t[1]);let m=-1;if(i?(c=n[0],m=1):(c=n[1],m=0),n[m]!==d)throw new Error(\"dimension mismatch\");if(a<=0||c<=0||d<=0)throw new Error(\"invalid shape specified\");if(s&&!zt.isValidBroadcast(s,[a,c]))throw new Error(\"gemm: invalid bias shape for broadcast\");return[a,c,d]}},Ln=-34028234663852886e22,Fn=34028234663852886e22});var mr,eo,De,rt,X,Ue,At,fr,Et,fe,to,U,K,qn,Ji,as,Pr,_e=j(()=>{\"use strict\";ye();xe();mr=64,eo=(e,t)=>{if(t===3)throw new Error(\"vec3 has same alignment as vec4, use vec4 instead\");switch(e){case 10:return t>1?`vec${t}<f16>`:\"f16\";case 1:return t>1?`vec${t}<f32>`:\"f32\";case 6:return t>1?`vec${t}<i32>`:\"i32\";case 12:return t>1?`vec${t}<u32>`:\"u32\";case 7:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2<u32>\",\"i32\"];case 13:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2<u32>\",\"u32\"];case 9:if(t!==4)throw new Error(\"bool must be vec4\");return[\"u32\",\"vec4<bool>\"];default:throw new Error(`Unknown data type: ${e}`)}},De=(e,t=1)=>{let r=eo(e,t);return typeof r==\"string\"?r:r[0]},rt=(e,t=1)=>{let r=eo(e,t);return typeof r==\"string\"?r:r[1]},X=(...e)=>{let t=[];return e.forEach(r=>{r.length!==0&&t.push({type:12,data:r},{type:12,data:M.computeStrides(r)})}),t},Ue=e=>e%4===0?4:e%2===0?2:1,At=(e=\"f32\",t,r=\"0\")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,fr=(e,t,r)=>e===\"f32\"?r:t===1?`f32(${r})`:`vec${t}<f32>(${r})`,Et=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,fe=(e,t,r,n)=>e.startsWith(\"uniforms.\")&&r>4?typeof t==\"string\"?n===\"f16\"?`${e}[(${t}) / 8][(${t}) % 8 / 4][(${t}) % 8 % 4]`:`${e}[(${t}) / 4][(${t}) % 4]`:n===\"f16\"?`${e}[${Math.floor(t/8)}][${Math.floor(t%8/4)}][${t%8%4}]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,to=(e,t,r,n,i)=>{let s=typeof r==\"number\",a=s?r:r.length,d=[...new Array(a).keys()],c=a<2?\"u32\":a<=4?`vec${a}<u32>`:`array<u32, ${a}>`,m=eo(t,i),u=typeof m==\"string\"?m:m[1],g=typeof m==\"string\"?m:m[0],b={indices:c,value:u,storage:g,tensor:t},$=H=>typeof H==\"string\"?H:`${H}u`,w={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},x=s?\"uniforms.\":\"\",C=`${x}${e}_shape`,T=`${x}${e}_strides`,S=\"\";for(let H=0;H<a-1;H++)S+=`\n    let dim${H} = current / ${fe(T,H,a)};\n    let rest${H} = current % ${fe(T,H,a)};\n    indices[${H}] = dim${H};\n    current = rest${H};\n    `;S+=`indices[${a-1}] = current;`;let E=a<2?\"\":`\n  fn o2i_${e}(offset: u32) -> ${b.indices} {\n    var indices: ${b.indices};\n    var current = offset;\n    ${S}\n    return indices;\n  }`,k=H=>(w.offsetToIndices=!0,a<2?H:`o2i_${e}(${H})`),P=[];if(a>=2)for(let H=a-1;H>=0;H--)P.push(`${fe(T,H,a)} * (indices[${H}])`);let R=a<2?\"\":`\n  fn i2o_${e}(indices: ${b.indices}) -> u32 {\n    return ${P.join(\"+\")};\n  }`,L=H=>(w.indicesToOffset=!0,a<2?H:`i2o_${e}(${H})`),V=(...H)=>a===0?\"0u\":`${b.indices}(${H.map($).join(\",\")})`,Y=(H,ne)=>a<2?`${H}`:`${fe(H,ne,a)}`,Q=(H,ne,Se)=>a<2?`${H}=${Se};`:`${fe(H,ne,a)}=${Se};`,he={},N=(H,ne)=>{w.broadcastedIndicesToOffset=!0;let Se=`${ne.name}broadcastedIndicesTo${e}Offset`;if(Se in he)return`${Se}(${H})`;let Ye=[];for(let Be=a-1;Be>=0;Be--){let Ge=ne.indicesGet(\"outputIndices\",Be+ne.rank-a);Ye.push(`${Y(T,Be)} * (${Ge} % ${Y(C,Be)})`)}return he[Se]=`fn ${Se}(outputIndices: ${ne.type.indices}) -> u32 {\n             return ${Ye.length>0?Ye.join(\"+\"):\"0u\"};\n           }`,`${Se}(${H})`},se=(H,ne)=>(()=>{if(b.storage===b.value)return`${e}[${H}]=${ne};`;if(b.storage===\"vec2<u32>\"&&b.value===\"i32\")return`${e}[${H}]=vec2<u32>(u32(${ne}), select(0u, 0xFFFFFFFFu, ${ne} < 0));`;if(b.storage===\"vec2<u32>\"&&b.value===\"u32\")return`${e}[${H}]=vec2<u32>(u32(${ne}), 0u);`;if(b.storage===\"u32\"&&b.value===\"vec4<bool>\")return`${e}[${H}]=dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(${ne}));`;throw new Error(`not supported combination of storage type ${b.storage} and value type ${b.value} yet`)})(),Ce=H=>(()=>{if(b.storage===b.value)return`${e}[${H}]`;if(b.storage===\"vec2<u32>\"&&b.value===\"i32\")return`i32(${e}[${H}].x)`;if(b.storage===\"vec2<u32>\"&&b.value===\"u32\")return`u32(${e}[${H}].x)`;if(b.storage===\"u32\"&&b.value===\"vec4<bool>\")return`vec4<bool>(bool(${e}[${H}] & 0xFFu), bool(${e}[${H}] & 0xFF00u), bool(${e}[${H}] & 0xFF0000u), bool(${e}[${H}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${b.storage} and value type ${b.value} yet`)})(),Ve=a<2?\"\":`\n  fn get_${e}ByIndices(indices: ${b.indices}) -> ${u} {\n    return ${Ce(`i2o_${e}(indices)`)};\n  }`,ee=a<2?\"\":(()=>{let H=d.map(Se=>`d${Se}: u32`).join(\", \"),ne=d.map(Se=>`d${Se}`).join(\", \");return`\n  fn get_${e}(${H}) -> ${u} {\n    return get_${e}ByIndices(${V(ne)});\n  }`})(),ae=(...H)=>{if(H.length!==a)throw new Error(`indices length must be ${a}`);let ne=H.map($).join(\",\");return a===0?Ce(\"0u\"):a===1?Ce(ne[0]):(w.get=!0,w.getByIndices=!0,w.indicesToOffset=!0,`get_${e}(${ne})`)},Ie=H=>a<2?Ce(H):(w.getByIndices=!0,w.indicesToOffset=!0,`get_${e}ByIndices(${H})`),me=a<2?\"\":`\n  fn set_${e}ByIndices(indices: ${b.indices}, value: ${u}) {\n    ${se(`i2o_${e}(indices)`,\"value\")}\n  }`,oe=a<2?\"\":(()=>{let H=d.map(Se=>`d${Se}: u32`).join(\", \"),ne=d.map(Se=>`d${Se}`).join(\", \");return`\n  fn set_${e}(${H}, value: ${u}) {\n    set_${e}ByIndices(${V(ne)}, value);\n  }`})();return{impl:()=>{let H=[],ne=!1;return w.offsetToIndices&&(H.push(E),ne=!0),w.indicesToOffset&&(H.push(R),ne=!0),w.broadcastedIndicesToOffset&&(Object.values(he).forEach(Se=>H.push(Se)),ne=!0),w.set&&(H.push(oe),ne=!0),w.setByIndices&&(H.push(me),ne=!0),w.get&&(H.push(ee),ne=!0),w.getByIndices&&(H.push(Ve),ne=!0),!s&&ne&&H.unshift(`const ${C} = ${b.indices}(${r.join(\",\")});`,`const ${T} = ${b.indices}(${M.computeStrides(r).join(\",\")});`),H.join(`\n`)},type:b,offsetToIndices:k,indicesToOffset:L,broadcastedIndicesToOffset:N,indices:V,indicesGet:Y,indicesSet:Q,set:(...H)=>{if(H.length!==a+1)throw new Error(`indices length must be ${a}`);let ne=H[a];if(typeof ne!=\"string\")throw new Error(\"value must be string\");let Se=H.slice(0,a).map($).join(\",\");return a===0?se(\"0u\",ne):a===1?se(Se[0],ne):(w.set=!0,w.setByIndices=!0,w.indicesToOffset=!0,`set_${e}(${Se}, ${ne})`)},setByOffset:se,setByIndices:(H,ne)=>a<2?se(H,ne):(w.setByIndices=!0,w.indicesToOffset=!0,`set_${e}ByIndices(${H}, ${ne});`),get:ae,getByOffset:Ce,getByIndices:Ie,usage:n,name:e,strides:T,shape:C,rank:a}},U=(e,t,r,n=1)=>to(e,t,r,\"input\",n),K=(e,t,r,n=1)=>to(e,t,r,\"output\",n),qn=(e,t,r,n=1)=>to(e,t,r,\"internal\",n),Ji=class{constructor(t,r){this.normalizedDispatchGroup=t;this.limits=r;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t==\"number\"?`${t}u`:t}) { return; }`}mainStart(t=mr){let r=typeof t==\"number\"?t:t[0],n=typeof t==\"number\"?1:t[1],i=typeof t==\"number\"?1:t[2];if(r>this.limits.maxComputeWorkgroupSizeX||n>this.limits.maxComputeWorkgroupSizeY||i>this.limits.maxComputeWorkgroupSizeZ)throw new Error(`workgroup size [${r}, ${n}, ${i}] exceeds the maximum workgroup size [${this.limits.maxComputeWorkgroupSizeX}, ${this.limits.maxComputeWorkgroupSizeY}, ${this.limits.maxComputeWorkgroupSizeZ}].`);if(r*n*i>this.limits.maxComputeInvocationsPerWorkgroup)throw new Error(`workgroup size [${r}, ${n}, ${i}] exceeds the maximum workgroup invocations ${this.limits.maxComputeInvocationsPerWorkgroup}.`);let s=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,a=s?`@builtin(global_invocation_id) global_id : vec3<u32>,\n    @builtin(workgroup_id) workgroup_id : vec3<u32>,\n    @builtin(local_invocation_id) local_id : vec3<u32>`:`@builtin(global_invocation_id) global_id : vec3<u32>,\n                                             @builtin(local_invocation_id) local_id : vec3<u32>,\n    @builtin(local_invocation_index) local_idx : u32,\n    @builtin(workgroup_id) workgroup_id : vec3<u32>,\n    @builtin(num_workgroups) num_workgroups : vec3<u32>`,d=s?\"let global_idx = global_id.x; let local_idx = local_id.x;\":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\n          workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${r*n*i}u + local_idx;`;return`@compute @workgroup_size(${r}, ${n}, ${i})\n  fn main(${a}) {\n    ${d}\n  `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.shape.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}),t.strides.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.strides.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}))}declareVariable(t,r){if(t.usage===\"internal\")throw new Error(\"cannot use internal variable with declareVariable(). use registerInternalVariables() instead.\");this.variables.push(t),this.appendVariableUniforms(t);let n=t.usage===\"input\"?\"read\":\"read_write\",i=t.type.storage;return`@group(0) @binding(${r}) var<storage, ${n}> ${t.name}: array<${i}>;`}declareVariables(...t){return t.map(r=>this.declareVariable(r,this.variableIndex++)).join(`\n`)}registerInternalVariable(t){if(t.usage!==\"internal\")throw new Error(\"cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.\");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(r=>this.registerInternalVariable(r)),this}registerUniform(t,r,n=1){return this.uniforms.push({name:t,type:r,length:n}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return\"\";let t=[];for(let{name:r,type:n,length:i}of this.uniforms)if(i&&i>4)n===\"f16\"?t.push(`@align(16) ${r}:array<mat2x4<${n}>, ${Math.ceil(i/8)}>`):t.push(`${r}:array<vec4<${n}>, ${Math.ceil(i/4)}>`);else{let s=i==null||i===1?n:`vec${i}<${n}>`;t.push(`${r}:${s}`)}return`\n      struct Uniforms { ${t.join(\", \")} };\n      @group(0) @binding(${this.variableIndex}) var<uniform> uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`\n`)+this.internalVariables.map(t=>t.impl()).join(`\n`)}get variablesInfo(){if(this.uniforms.length===0)return;let t=r=>[12,10,1,6][[\"u32\",\"f16\",\"f32\",\"i32\"].indexOf(r)];return this.uniforms.map(r=>[t(r.type),r.length??1])}},as=(e,t)=>new Ji(e,t),Pr=(e,t)=>{let r=e.length,n=[];for(let i=0;i<r;i++){let s=r-1-i,a=e[s]||1;(t[t.length-1-i]||1)>1&&a===1&&n.unshift(s)}return n}});var Ec,ss,kc,Oc,xt,us,ls,Rr=j(()=>{\"use strict\";ye();xe();Ze();_e();Ec=e=>{if(!e||e.length!==1)throw new Error(\"Transpose requires 1 input.\")},ss=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,kc=(e,t)=>M.sortBasedOnPerm(e,ss(e.length,t)),Oc=(e,t,r,n)=>{let i=[];i.push(`fn perm(i: ${n.type.indices}) -> ${r.type.indices} {\n    var a: ${r.type.indices};`);for(let s=0;s<t;++s)i.push(r.indicesSet(\"a\",e[s],`i[${s}]`));return i.push(\"return a;}\"),i.join(`\n`)},xt=(e,t)=>{let r=e.dataType,n=e.dims.length,i=ss(n,t),s=kc(e.dims,i),a=K(\"output\",r,s.length),d=U(\"a\",r,n),c=m=>`\n  ${m.registerUniform(\"output_size\",\"u32\").declareVariables(d,a)}\n\n  ${Oc(i,n,d,a)}\n\n  ${m.mainStart()}\n    ${m.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n    let indices = ${a.offsetToIndices(\"global_idx\")};\n    let aIndices = perm(indices);\n\n    ${a.setByOffset(\"global_idx\",d.getByIndices(\"aIndices\"))}\n  }`;return{name:\"Transpose\",shaderCache:{hint:`${t}`,inputDependencies:[\"rank\"]},getRunData:m=>{let u=M.size(s);return{outputs:[{dims:s,dataType:m[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:[{type:12,data:u},...X(m[0].dims,s)]}},getShaderSource:c}},us=(e,t)=>{Ec(e.inputs),e.compute(xt(e.inputs[0],t.perm))},ls=e=>we({perm:e.perm})});var Pc,Rc,zc,Bc,Dc,Mc,Uc,Wc,Nc,Vc,Bt,ds,cs,ps,ms,fs,hs,gs,ys,bs,vs,ws=j(()=>{\"use strict\";ye();xe();_e();jn();Rr();Pc={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate * candidate\",logSumExp:\"bestValue + exp(candidate)\",l1:\"bestValue + abs(candidate)\",l2:\"bestValue + candidate * candidate\",logSum:\"bestValue + candidate\"},Rc={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate\",logSumExp:\"bestValue + candidate\",l1:\"bestValue + candidate\",l2:\"bestValue + candidate\",logSum:\"bestValue + candidate\"},zc={max:\"_A[offset]\",min:\"_A[offset]\",mean:\"0\",sum:\"0\",prod:\"1\",sumSquare:\"0\",logSumExp:\"0\",l1:\"0\",l2:\"0\",logSum:\"0\"},Bc={max:\"bestValue\",min:\"bestValue\",sum:\"bestValue\",prod:\"bestValue\",sumSquare:\"bestValue\",logSumExp:\"log(bestValue)\",l1:\"bestValue\",l2:\"sqrt(bestValue)\",logSum:\"log(bestValue)\"},Dc=(e,t)=>{let r=[];for(let n=t-e;n<t;++n)r.push(n);return r},Mc=(e,t)=>{let r=[],n=e.length;for(let s=0;s<n;s++)t.indexOf(s)===-1&&r.push(e[s]);let i=t.map(s=>e[s]);return[r,i]},Uc=(e,t)=>{let r=e.length+t.length,n=[],i=0;for(let s=0;s<r;s++)t.indexOf(s)===-1?n.push(e[i++]):n.push(1);return n},Wc=(e,t)=>{for(let r=0;r<e.length;++r)if(e[e.length-r-1]!==t-1-r)return!1;return!0},Nc=(e,t)=>{let r=[];if(!Wc(e,t)){for(let n=0;n<t;++n)e.indexOf(n)===-1&&r.push(n);e.forEach(n=>r.push(n))}return r},Vc=(e,t,r,n,i,s,a)=>{let d=r[0].dims,c=M.size(s),m=M.size(a),u=U(\"_A\",r[0].dataType,d),g=K(\"output\",i,s),b=32,$=`\n          var<workgroup> aBestValues : array<f32, ${b}>;\n       `;return{name:e,shaderCache:t,getShaderSource:x=>`\n        ${x.registerUniform(\"reduceSize\",\"u32\").declareVariables(u,g)}\n        ${$}\n        fn DIV_CEIL(a : u32, b : u32) -> u32 {\n          return ((a - 1u) / b + 1u);\n         }\n         ${x.mainStart(b)}\n\n          let outputIndex = global_idx / ${b};\n          let offset = outputIndex * uniforms.reduceSize;\n\n          var bestValue = f32(${zc[n]});\n          let Length = uniforms.reduceSize;\n          for (var k = local_idx; k < Length; k = k + ${b}) {\n           let candidate = f32(${u.getByOffset(\"offset + k\")});\n           bestValue = ${Pc[n]};\n          }\n          aBestValues[local_idx] = bestValue;\n          workgroupBarrier();\n\n         var reduceSize = min(Length, ${b}u);\n         for (var currentSize = reduceSize / 2u; reduceSize > 1u;\n             currentSize = reduceSize / 2u) {\n           let interval = DIV_CEIL(reduceSize, 2u);\n           if (local_idx < currentSize) {\n            let candidate = aBestValues[local_idx + interval];\n            bestValue = ${Rc[n]};\n            aBestValues[local_idx] = bestValue;\n           }\n           reduceSize = interval;\n           workgroupBarrier();\n         }\n\n         if (local_idx == 0u) {\n          ${g.setByOffset(\"outputIndex\",`${n===\"mean\"?`${g.type.storage}(bestValue / f32(uniforms.reduceSize))`:`${g.type.storage}(${Bc[n]})`}`)};\n         }\n        }`,getRunData:()=>({outputs:[{dims:s,dataType:i}],dispatchGroup:{x:c},programUniforms:[{type:12,data:m}]})}},Bt=(e,t,r,n)=>{let i=e.inputs.length===1?r:ro(e.inputs,r),s=i.axes;s.length===0&&!i.noopWithEmptyAxes&&(s=e.inputs[0].dims.map(($,w)=>w));let a=M.normalizeAxes(s,e.inputs[0].dims.length),d=a,c=e.inputs[0],m=Nc(d,e.inputs[0].dims.length);m.length>0&&(c=e.compute(xt(e.inputs[0],m),{inputs:[0],outputs:[-1]})[0],d=Dc(d.length,c.dims.length));let[u,g]=Mc(c.dims,d),b=u;i.keepDims&&(b=Uc(u,a)),e.compute(Vc(t,{hint:i.cacheKey,inputDependencies:[\"type\"]},[c],n,e.inputs[0].dataType,b,g),{inputs:[c]})},ds=(e,t)=>{Bt(e,\"ReduceMeanShared\",t,\"mean\")},cs=(e,t)=>{Bt(e,\"ReduceL1Shared\",t,\"l1\")},ps=(e,t)=>{Bt(e,\"ReduceL2Shared\",t,\"l2\")},ms=(e,t)=>{Bt(e,\"ReduceLogSumExpShared\",t,\"logSumExp\")},fs=(e,t)=>{Bt(e,\"ReduceMaxShared\",t,\"max\")},hs=(e,t)=>{Bt(e,\"ReduceMinShared\",t,\"min\")},gs=(e,t)=>{Bt(e,\"ReduceProdShared\",t,\"prod\")},ys=(e,t)=>{Bt(e,\"ReduceSumShared\",t,\"sum\")},bs=(e,t)=>{Bt(e,\"ReduceSumSquareShared\",t,\"sumSquare\")},vs=(e,t)=>{Bt(e,\"ReduceLogSumShared\",t,\"logSum\")}});var Dt,Hc,Kn,ro,Mt,Gc,Lc,Fc,qc,jc,Kc,Yc,Xc,Zc,Qc,Ut,$s,_s,xs,Ss,Cs,Is,Ts,As,Es,ks,jn=j(()=>{\"use strict\";ye();xe();Ze();_e();ws();Dt=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"Reduce op requires 1 or 2 inputs.\");if(e.length===2&&e[1].dims.length!==1)throw new Error(\"Invalid axes input dims.\")},Hc=e=>[\"\",\"\",`var value = ${e.getByIndices(\"input_indices\")};`,\"\"],Kn=(e,t,r,n,i,s,a=!1,d=!1)=>{let c=[],m=r[0].dims,u=m.length,g=M.normalizeAxes(i,u),b=!d&&g.length===0;m.forEach((C,T)=>{b||g.indexOf(T)>=0?a&&c.push(1):c.push(C)});let $=c.length,w=M.size(c);return{name:e,shaderCache:t,getShaderSource:C=>{let T=[],S=U(\"_A\",r[0].dataType,u),E=K(\"output\",s,$),k=n(S,E,g),P=k[2];for(let R=0,L=0;R<u;R++)b||g.indexOf(R)>=0?(a&&L++,P=`for(var j${R}: u32 = 0; j${R} < ${m[R]}; j${R}++) {\n                  ${k[2].includes(\"last_index\")?`let last_index = j${R};`:\"\"}\n                  ${S.indicesSet(\"input_indices\",R,`j${R}`)}\n                  ${P}\n                }`):(T.push(`${S.indicesSet(\"input_indices\",R,E.indicesGet(\"output_indices\",L))};`),L++);return`\n\n        ${C.registerUniform(\"output_size\",\"u32\").declareVariables(S,E)}\n\n        ${C.mainStart()}\n          ${C.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n          var input_indices: ${S.type.indices};\n          let output_indices = ${E.offsetToIndices(\"global_idx\")};\n\n          ${T.join(`\n`)}\n          ${k[0]}       // init ops for reduce max/min\n          ${k[1]}\n          ${P}\n          ${k[3]}\n          ${k.length===4?E.setByOffset(\"global_idx\",\"value\"):k.slice(4).join(`\n`)}\n        }`},getRunData:()=>({outputs:[{dims:c,dataType:s}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:[{type:12,data:w},...X(m,c)]})}},ro=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),we({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},Mt=(e,t,r,n)=>{let i=e.inputs,s=i.length===1?r:ro(i,r);e.compute(Kn(t,{hint:s.cacheKey,inputDependencies:[\"rank\"]},[i[0]],s.noopWithEmptyAxes&&s.axes.length===0?Hc:n,s.axes,i[0].dataType,s.keepDims,s.noopWithEmptyAxes),{inputs:[0]})},Gc=(e,t)=>{Dt(e.inputs),Mt(e,\"ReduceLogSum\",t,(n,i)=>[`var value = ${i.type.storage}(0);`,\"\",`value += ${n.getByIndices(\"input_indices\")};`,\"value = log(value);\"])},Lc=(e,t)=>{Dt(e.inputs),Mt(e,\"ReduceL1\",t,(n,i)=>[`var value = ${i.type.storage}(0);`,\"\",`value += abs(${n.getByIndices(\"input_indices\")});`,\"\"])},Fc=(e,t)=>{Dt(e.inputs),Mt(e,\"ReduceL2\",t,(n,i)=>[`var t = ${i.type.value}(0); var value = ${i.type.value}(0);`,\"\",`t = ${n.getByIndices(\"input_indices\")}; value += (t * t);`,\"value = sqrt(value);\"])},qc=(e,t)=>{Dt(e.inputs),Mt(e,\"ReduceLogSumExp\",t,(n,i)=>[`var value = ${i.type.storage}(0);`,\"\",`value += exp(${n.getByIndices(\"input_indices\")});`,\"value = log(value);\"])},jc=(e,t)=>{Dt(e.inputs),Mt(e,\"ReduceMax\",t,(n,i,s)=>{let a=[];for(let d=0;d<n.rank;d++)(s.indexOf(d)>=0||s.length===0)&&a.push(n.indicesSet(\"input_indices\",d,0));return[`${a.join(`\n`)}`,`var value = ${n.getByIndices(\"input_indices\")};`,`value = max(value, ${n.getByIndices(\"input_indices\")});`,\"\"]})},Kc=(e,t)=>{Dt(e.inputs),Mt(e,\"ReduceMean\",t,(n,i,s)=>{let a=1;for(let d=0;d<n.rank;d++)(s.indexOf(d)>=0||s.length===0)&&(a*=e.inputs[0].dims[d]);return[\"var sum = f32(0);\",\"\",`sum += f32(${n.getByIndices(\"input_indices\")});`,`let value = ${i.type.value}(sum / ${a});`]})},Yc=(e,t)=>{Dt(e.inputs),Mt(e,\"ReduceMin\",t,(n,i,s)=>{let a=[];for(let d=0;d<n.rank;d++)(s.indexOf(d)>=0||s.length===0)&&a.push(`input_indices[${d}] = 0;`);return[`${a.join(`\n`)}`,`var value = ${n.getByIndices(\"input_indices\")};`,`value = min(value, ${n.getByIndices(\"input_indices\")});`,\"\"]})},Xc=(e,t)=>{Dt(e.inputs),Mt(e,\"ReduceProd\",t,(n,i)=>[`var value = ${i.type.storage}(1);`,\"\",`value *= ${n.getByIndices(\"input_indices\")};`,\"\"])},Zc=(e,t)=>{Dt(e.inputs),Mt(e,\"ReduceSum\",t,(n,i)=>[`var value = ${i.type.storage}(0);`,\"\",`value += ${n.getByIndices(\"input_indices\")};`,\"\"])},Qc=(e,t)=>{Dt(e.inputs),Mt(e,\"ReduceSumSquare\",t,(n,i)=>[`var t = ${i.type.value}(0); var value = ${i.type.value}(0);`,\"\",`t = ${n.getByIndices(\"input_indices\")}; value += t * t;`,\"\"])},Ut=(e,t,r)=>{if(t.length===0)return r;let n=1,i=1;for(let s=0;s<t.length;s++)t.indexOf(s)===-1?n*=e[s]:i*=e[s];return i<32&&n>1024},$s=(e,t)=>{Ut(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Kc(e,t):ds(e,t)},_s=(e,t)=>{Ut(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Lc(e,t):cs(e,t)},xs=(e,t)=>{Ut(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Fc(e,t):ps(e,t)},Ss=(e,t)=>{Ut(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?qc(e,t):ms(e,t)},Cs=(e,t)=>{Ut(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?jc(e,t):fs(e,t)},Is=(e,t)=>{Ut(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Yc(e,t):hs(e,t)},Ts=(e,t)=>{Ut(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Xc(e,t):gs(e,t)},As=(e,t)=>{Ut(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Zc(e,t):ys(e,t)},Es=(e,t)=>{Ut(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Qc(e,t):bs(e,t)},ks=(e,t)=>{Ut(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Gc(e,t):vs(e,t)}});var Os,Ps,Rs,no,zs=j(()=>{\"use strict\";ye();Ze();jn();Os=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"ArgMinMaxOp op requires 1 or 2 inputs.\");if(e[0].dataType!==1)throw new Error(\"Invalid input type.\")},Ps=(e,t)=>{Os(e.inputs);let r=(n,i,s)=>{let a=[];for(let d=0;d<n.rank;d++)(s.indexOf(d)>=0||s.length===0)&&a.push(`input_indices[${d}] = 0;`);return[`${a.join(`\n`)}`,`var value = ${n.getByIndices(\"input_indices\")};\nvar best_index : i32 = 0;`,`if (${n.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\"<=\":\"<\"} value) {\n         value = ${n.getByIndices(\"input_indices\")};\n         best_index = i32(last_index);\n       }`,\"\",i.setByOffset(\"global_idx\",\"best_index\")]};e.compute(Kn(\"ArgMin\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Rs=(e,t)=>{Os(e.inputs);let r=(n,i,s)=>{let a=[];for(let d=0;d<n.rank;d++)(s.indexOf(d)>=0||s.length===0)&&a.push(`input_indices[${d}] = 0;`);return[`${a.join(`\n`)}`,`var value = ${n.getByIndices(\"input_indices\")};\nvar best_index : i32 = 0;`,`if (${n.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\">=\":\">\"} value) {\n         value = ${n.getByIndices(\"input_indices\")};\n         best_index = i32(last_index);\n       }`,\"\",i.setByOffset(\"global_idx\",\"best_index\")]};e.compute(Kn(\"argMax\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},no=e=>we(e)});var Jc,ep,tp,Yn,Bs,Ds,io=j(()=>{\"use strict\";ye();xe();Ze();_e();Jc=(e,t)=>{if(!e||e.length<1)throw new Error(\"too few inputs\");let r=0,n=e[r],i=n.dataType,s=n.dims.length;e.forEach((a,d)=>{if(d!==r){if(a.dataType!==i)throw new Error(\"input tensors should be one type\");if(a.dims.length!==s)throw new Error(\"input tensors should have the same shape\");a.dims.forEach((c,m)=>{if(m!==t&&c!==n.dims[m])throw new Error(\"non concat dimensions must match\")})}})},ep=(e,t)=>`\n  fn calculateInputIndex(index: u32) -> u32 {\n    let sizeInConcatAxis = array<u32, ${e}u>(${t});\n    for (var i: u32 = 0u; i < ${e}; i += 1u ) {\n      if (index < sizeInConcatAxis[i]) {\n        return i;\n      }\n    }\n    return ${e}u;\n  }`,tp=(e,t)=>{let r=e.length,n=[];for(let i=0;i<r;++i){let s=t.setByOffset(\"global_idx\",e[i].getByIndices(\"indices\"));r===1?n.push(s):i===0?n.push(`if (inputIndex == ${i}u) { ${s} }`):i===r-1?n.push(`else { ${s} }`):n.push(`else if (inputIndex == ${i}) { ${s} }`)}return n.join(`\n`)},Yn=(e,t,r,n)=>{let i=M.size(r),s=new Array(e.length),a=new Array(e.length),d=0,c=[],m=[],u=[{type:12,data:i}];for(let x=0;x<e.length;++x)d+=e[x].dims[t],s[x]=d,m.push(e[x].dims.length),a[x]=U(`input${x}`,n,m[x]),c.push(\"rank\"),u.push({type:12,data:s[x]});for(let x=0;x<e.length;++x)u.push(...X(e[x].dims));u.push(...X(r));let g=K(\"output\",n,r.length),b=g.indicesGet(\"indices\",t),$=Array.from(Array(s.length).keys()).map(x=>`uniforms.sizeInConcatAxis${x}`).join(\",\"),w=x=>`\n\n  ${(()=>{x.registerUniform(\"outputSize\",\"u32\");for(let C=0;C<e.length;C++)x.registerUniform(`sizeInConcatAxis${C}`,\"u32\");return x.declareVariables(...a,g)})()}\n\n  ${ep(s.length,$)}\n\n  ${x.mainStart()}\n    ${x.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n\n    var indices = ${g.offsetToIndices(\"global_idx\")};\n\n    let inputIndex = calculateInputIndex(${b});\n    if (inputIndex != 0u) {\n      let sizeInConcatAxis = array<u32, ${s.length}u>(${$});\n      ${b} -= sizeInConcatAxis[inputIndex - 1u];\n    }\n\n    ${tp(a,g)}\n  }`;return{name:\"Concat\",shaderCache:{hint:`${t}`,inputDependencies:c},getRunData:()=>({outputs:[{dims:r,dataType:n}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:u}),getShaderSource:w}},Bs=(e,t)=>{let r=e.inputs,n=r[0].dims,i=M.normalizeAxis(t.axis,n.length);Jc(r,i);let s=n.slice();s[i]=r.reduce((d,c)=>d+(c.dims.length>i?c.dims[i]:0),0);let a=r.filter(d=>M.size(d.dims)>0);e.compute(Yn(a,i,s,r[0].dataType),{inputs:a})},Ds=e=>we({axis:e.axis})});var rp,np,ip,op,Xn,ap,Ms,oo=j(()=>{\"use strict\";ye();Hn();_e();io();rp=(e,t)=>{let r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],d=e[5];if(a&&d)throw new Error(\"Attention cannot have both past and relative_position_bias\");if(r.dims.length!==3)throw new Error('Input \"input\" must have 3 dimensions');let c=r.dims[0],m=r.dims[1],u=r.dims[2];if(i.dims.length!==1)throw new Error('Input \"bias\" is expected to have 1 dimensions');if(n.dims.length!==2)throw new Error('Input \"weights\" is expected to have 2 dimensions');if(n.dims[0]!==u)throw new Error(\"Input 1 dimension 0 should have same length as dimension 2 of input 0\");if(i.dims[0]!==n.dims[1])throw new Error('Input \"bias\" dimension 0 should have same length as dimension 1 of input \"weights\"');let g=i.dims[0]/3,b=g,$=b;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error(\"qkv_hidden_sizes attribute should have 3 elements\");for(let E of t.qkvHiddenSizes)if(E%t.numHeads!==0)throw new Error(\"qkv_hidden_sizes should be divisible by num_heads\");g=t.qkvHiddenSizes[0],b=t.qkvHiddenSizes[1],$=t.qkvHiddenSizes[2]}let w=m;if(g!==b)throw new Error(\"qkv_hidden_sizes first element should be same as the second\");if(i.dims[0]!==g+b+$)throw new Error('Input \"bias\" dimension 0 should have same length as sum of Q/K/V hidden sizes');let x=0;if(a){if(b!==$)throw new Error('Input \"past\" expect k_hidden_size == v_hidden_size');if(a.dims.length!==5)throw new Error('Input \"past\" must have 5 dimensions');if(a.dims[0]!==2)throw new Error('Input \"past\" first dimension must be 2');if(a.dims[1]!==c)throw new Error('Input \"past\" second dimension must be batch_size');if(a.dims[2]!==t.numHeads)throw new Error('Input \"past\" third dimension must be num_heads');if(a.dims[4]!==b/t.numHeads)throw new Error('Input \"past\" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(x=a.dims[3])}let C=w+x,T=-1,S=0;if(s)throw new Error(\"Mask not supported\");if(a)throw new Error(\"past is not supported\");return{batchSize:c,sequenceLength:m,pastSequenceLength:x,kvSequenceLength:w,totalSequenceLength:C,maxSequenceLength:T,inputHiddenSize:u,hiddenSize:g,vHiddenSize:$,headSize:Math.floor(g/t.numHeads),vHeadSize:Math.floor($/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:S,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},np=(e,t,r,n)=>{let i=Ue(n),s=64,a=n/i;a<s?s=1:a/8<64&&(s=Math.ceil(a/8));let d=Math.ceil(n/i/s),c=[{type:t.dataType,data:1/n},{type:12,data:a},{type:12,data:d}],m=De(t.dataType,i),u=rt(1,i),g=b=>{let $=K(\"x\",t.dataType,t.dims,i),x=[{name:\"d_inv\",type:rt(t.dataType)},{name:\"d_comp\",type:\"u32\"},{name:\"elements_per_thread\",type:\"u32\"}];return`\n  var<workgroup> thread_max: array<f32, ${s}>;\n  var<workgroup> thread_sum: array<f32, ${s}>;\n  ${b.registerUniforms(x).declareVariables($)}\n  ${b.mainStart([s,1,1])}\n    let local_offset = local_idx * uniforms.elements_per_thread;\n    let offset = workgroup_id.x * uniforms.d_comp + local_offset;\n\n    var thread_max_vector = ${u}(-3.402823e+38f);\n    for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < uniforms.d_comp; i++) {\n      thread_max_vector = max(${u}(x[offset + i]), thread_max_vector);\n    }\n    thread_max[local_idx] = ${(()=>{switch(i){case 1:return\"thread_max_vector\";case 2:return\"max(thread_max_vector.x, thread_max_vector.y)\";case 4:return\"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))\";default:throw new Error(`Unsupported components: ${i}`)}})()};\n    workgroupBarrier();\n\n    var max_value =  f32(-3.402823e+38f);\n    for (var i = 0u; i < ${s}; i++) {\n      max_value = max(thread_max[i], max_value);\n    }\n\n    var sum_vector = ${u}(0);\n    for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < uniforms.d_comp; i++) {\n      sum_vector += exp(${u}(x[offset + i]) - max_value);\n    }\n    thread_sum[local_idx] = ${(()=>{switch(i){case 1:return\"sum_vector\";case 2:return\"sum_vector.x + sum_vector.y\";case 4:return\"sum_vector.x + sum_vector.y + sum_vector.z + sum_vector.w\";default:throw new Error(`Unsupported components: ${i}`)}})()};\n    workgroupBarrier();\n\n    var sum: f32 = 0;\n    for (var i = 0u; i < ${s}; i++) {\n      sum += thread_sum[i];\n    }\n\n    if (sum == 0) {\n      for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < uniforms.d_comp; i++) {\n        x[offset + i] = ${$.type.value}(uniforms.d_inv);\n      }\n    } else {\n      for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < uniforms.d_comp; i++) {\n        var f32input = ${u}(x[offset + i]);\n        x[offset + i] = ${$.type.value}(exp(f32input - max_value) / sum);\n      }\n    }\n  }`};return{name:\"AttentionProbsSoftmax\",shaderCache:{hint:`${s};${m};${i}`},getShaderSource:g,getRunData:()=>({outputs:[],dispatchGroup:{x:r},programUniforms:c})}},ip=(e,t,r,n,i,s,a)=>{let d=a+i.kvSequenceLength,c=[i.batchSize,i.numHeads,i.sequenceLength,d],m=s.scale===0?1/Math.sqrt(i.headSize):s.scale,u=Ue(i.headSize),g=i.headSize/u,b=12,$={x:Math.ceil(d/b),y:Math.ceil(i.sequenceLength/b),z:i.batchSize*i.numHeads},w=[{type:12,data:i.sequenceLength},{type:12,data:g},{type:12,data:d},{type:12,data:i.numHeads},{type:1,data:m}],x=n?[\"type\",\"type\",\"type\"]:[\"type\",\"type\"],C=T=>{let S=U(\"q\",t.dataType,t.dims,u),E=U(\"key\",r.dataType,r.dims,u),k=[S,E];n&&k.push(U(\"relative_position_bias\",n.dataType,n.dims));let P=K(\"output\",t.dataType,c),R=rt(1,u),L=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"alpha\",type:\"f32\"}];return`\n  const TILE_SIZE = ${b}u;\n\n  var<workgroup> tileQ: array<${S.type.storage}, ${b*b}>;\n  var<workgroup> tileK: array<${S.type.storage}, ${b*b}>;\n  ${T.registerUniforms(L).declareVariables(...k,P)}\n  ${T.mainStart([b,b,1])}\n    // x holds the N and y holds the M\n    let headIdx = workgroup_id.z;\n    let m = workgroup_id.y * TILE_SIZE;\n    let n = workgroup_id.x * TILE_SIZE;\n    let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\n    let kOffset = uniforms.N * uniforms.K * headIdx + n * uniforms.K;\n\n    var value = ${R}(0);\n    for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n      if (global_id.y < uniforms.M && w + local_id.x < uniforms.K) {\n        tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\n      }\n      if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\n        tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\n      }\n      workgroupBarrier();\n\n      for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) {\n        value += ${R}(tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * local_id.x + k]);\n      }\n\n      workgroupBarrier();\n    }\n\n    let headOffset = headIdx * uniforms.M * uniforms.N;\n    if (global_id.y < uniforms.M && global_id.x < uniforms.N) {\n      let outputIdx = headOffset + global_id.y * uniforms.N + global_id.x;\n      var sum: f32 = ${(()=>{switch(u){case 1:return\"value\";case 2:return\"value.x + value.y\";case 4:return\"value.x + value.y + value.z + value.w\";default:throw new Error(`Unsupported components: ${u}`)}})()};\n        output[outputIdx] = ${P.type.value} (sum * uniforms.alpha) + ${n?\"relative_position_bias[outputIdx]\":\"0.0\"};\n    }\n  }`};return{name:\"AttentionProbs\",shaderCache:{hint:`${u}`,inputDependencies:x},getRunData:()=>({outputs:[{dims:c,dataType:t.dataType,gpuDataType:0}],dispatchGroup:$,programUniforms:w}),getShaderSource:C}},op=(e,t,r,n,i)=>{let s=i+n.kvSequenceLength,a=[n.batchSize,n.sequenceLength,n.vHiddenSize],d=12,c={x:Math.ceil(n.vHeadSize/d),y:Math.ceil(n.sequenceLength/d),z:n.batchSize*n.numHeads},m=[{type:12,data:n.sequenceLength},{type:12,data:s},{type:12,data:n.vHeadSize},{type:12,data:n.numHeads},{type:12,data:n.vHiddenSize}];return{name:\"AttentionScore\",shaderCache:{inputDependencies:[\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType,gpuDataType:0}],dispatchGroup:c,programUniforms:m}),getShaderSource:b=>{let $=U(\"probs\",t.dataType,t.dims),w=U(\"v\",r.dataType,r.dims),x=K(\"output\",t.dataType,a),C=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"v_hidden_size\",type:\"u32\"}];return`\n  const TILE_SIZE = ${d}u;\n  var<workgroup> tileQ: array<${$.type.value}, ${d*d}>;\n  var<workgroup> tileK: array<${$.type.value}, ${d*d}>;\n  ${b.registerUniforms(C).declareVariables($,w,x)}\n  ${b.mainStart([d,d,1])}\n   let headIdx = workgroup_id.z;\n   let m = global_id.y;\n   let n = global_id.x;\n\n   let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\n   let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\n\n   var value = ${$.type.storage}(0);\n   for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n     if (m < uniforms.M && w + local_id.x < uniforms.K) {\n       tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\n     }\n     if (n < uniforms.N && w + local_id.y < uniforms.K) {\n       tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\n     }\n     workgroupBarrier();\n     for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) {\n       value += tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * k + local_id.x];\n     }\n     workgroupBarrier();\n   }\n\n   // we need to transpose output from BNSH_v to BSND_v\n   let batchIdx = workgroup_id.z / uniforms.num_heads;\n   let currentBatchHeadNumber = workgroup_id.z % uniforms.num_heads;\n   if (m < uniforms.M && n < uniforms.N) {\n     let outputIdx = batchIdx * uniforms.M * uniforms.v_hidden_size + m * uniforms.v_hidden_size\n       + currentBatchHeadNumber * uniforms.N + n;\n     output[outputIdx] = value;\n   }\n  }`}}},Xn=(e,t,r,n,i,s,a,d,c,m,u)=>{let g=e.outputCount>1,b=e.outputCount>2,$=g&&b?m.pastSequenceLength:0,w=$+m.kvSequenceLength,x=[m.batchSize,m.numHeads,w,m.headSize],C=a?[a,r]:[r],T=g?e.compute(Yn(C,2,x,r.dataType),{inputs:C,outputs:[1]})[0]:r,S=[m.batchSize,m.numHeads,w,m.headSize],E=d?[d,n]:[n],k=b?e.compute(Yn(E,2,S,n.dataType),{inputs:E,outputs:[2]})[0]:n,P=[t,T];c&&P.push(c);let R=e.compute(ip(e,t,T,c,m,u,$),{inputs:P,outputs:[-1]})[0];e.compute(np(e,R,m.batchSize*m.numHeads*m.sequenceLength,w),{inputs:[R],outputs:[]});let L=[R,k];e.compute(op(e,R,k,m,$),{inputs:L,outputs:[0]})},ap=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],n=t.sequenceLength,i=t.inputHiddenSize,s=t.headSize,a=12,d={x:Math.ceil(t.headSize/a),y:Math.ceil(t.sequenceLength/a),z:t.batchSize*t.numHeads},c=[e.inputs[0],e.inputs[1],e.inputs[2]],m=[{type:12,data:n},{type:12,data:i},{type:12,data:s},{type:12,data:t.numHeads},{type:12,data:t.headSize},{type:12,data:t.hiddenSize},{type:12,data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],u=g=>{let b=K(\"output_q\",c[0].dataType,r),$=K(\"output_k\",c[0].dataType,r),w=K(\"output_v\",c[0].dataType,r),x=U(\"input\",c[0].dataType,c[0].dims),C=U(\"weight\",c[1].dataType,c[1].dims),T=U(\"bias\",c[2].dataType,c[2].dims),S=x.type.storage,E=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"head_size\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"},{name:\"ldb\",type:\"u32\"}];return`\n  const TILE_SIZE = ${a}u;\n  var<workgroup> tileInput: array<${S}, ${a*a}>;\n  var<workgroup> tileWeightQ: array<${S}, ${a*a}>;\n  var<workgroup> tileWeightK: array<${S}, ${a*a}>;\n  var<workgroup> tileWeightV: array<${S}, ${a*a}>;\n  ${g.registerUniforms(E).declareVariables(x,C,T,b,$,w)}\n  ${g.mainStart([a,a,1])}\n    let batchIndex = workgroup_id.z / uniforms.num_heads;\n    let headNumber = workgroup_id.z % uniforms.num_heads;\n    let m = global_id.y;\n    let n = global_id.x;\n\n    let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\n    let biasOffsetQ = headNumber * uniforms.head_size;\n    let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\n    let biasOffsetV = uniforms.hidden_size + biasOffsetK;\n\n    var valueQ = ${S}(0);\n    var valueK = ${S}(0);\n    var valueV = ${S}(0);\n    for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\n      if (m < uniforms.M && w + local_id.x < uniforms.K) {\n        tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\n      }\n      if (n < uniforms.N && w + local_id.y < uniforms.K) {\n        let offset = n + (w + local_id.y) * uniforms.ldb;\n        tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\n        tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\n        tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\n      }\n      workgroupBarrier();\n      for (var k: u32 = 0u; k<TILE_SIZE && w+k < uniforms.K; k++) {\n        let inputTileOffset = TILE_SIZE * local_id.y + k;\n        let weightTileOffset = TILE_SIZE * k + local_id.x;\n        valueQ += tileInput[inputTileOffset] * tileWeightQ[weightTileOffset];\n        valueK += tileInput[inputTileOffset] * tileWeightK[weightTileOffset];\n        valueV += tileInput[inputTileOffset] * tileWeightV[weightTileOffset];\n      }\n\n      workgroupBarrier();\n    }\n\n    let headOffset = (m * uniforms.N + n) % uniforms.head_size;\n    valueQ += bias[headOffset + biasOffsetQ];\n    valueK += bias[headOffset + biasOffsetK];\n    valueV += bias[headOffset + biasOffsetV];\n\n    let offset = workgroup_id.z * uniforms.M * uniforms.N;\n    if (m < uniforms.M && n < uniforms.N) {\n      let outputIdx = offset + m * uniforms.N + n;\n      output_q[outputIdx] = valueQ;\n      output_k[outputIdx] = valueK;\n      output_v[outputIdx] = valueV;\n    }\n  }`};return e.compute({name:\"AttentionPrepare\",shaderCache:{inputDependencies:[\"type\",\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:d,programUniforms:m}),getShaderSource:u},{inputs:c,outputs:[-1,-1,-1]})},Ms=(e,t)=>{let r=rp(e.inputs,t),[n,i,s]=ap(e,r);return Xn(e,n,i,s,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t)}});var sp,up,lp,Us,Ws=j(()=>{\"use strict\";_t();ye();xe();Ze();_e();sp=(e,t)=>{if(!e||e.length!==5)throw new Error(\"BatchNormalization requires 5 inputs\");let r=(n,i,s)=>{let a=i.length;if(a!==n.length)throw new Error(`${s}: num dimensions != ${a}`);i.forEach((d,c)=>{if(d!==n[c])throw new Error(`${s}: dim[${c}] do not match`)})};if(e[0].dims.length>1){let n=t.format===\"NHWC\"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,n,\"Invalid input scale\"),r(e[2].dims,n,\"Invalid input B\"),r(e[3].dims,n,\"Invalid input mean\"),r(e[4].dims,n,\"Invalid input var\")}else r(e[1].dims,[1],\"Invalid input scale\"),r(e[2].dims,[1],\"Invalid input B\"),r(e[3].dims,[1],\"Invalid input mean\"),r(e[4].dims,[1],\"Invalid input var\")},up=(e,t)=>{let{epsilon:r,spatial:n,format:i}=t,s=e[0].dims,a=n?Ue(s[s.length-1]):1,d=i===\"NHWC\"&&s.length>1?a:1,c=M.size(s)/a,m=n,u=m?s.length:s,g=U(\"x\",e[0].dataType,e[0].dims,a),b=U(\"scale\",e[1].dataType,e[1].dims,d),$=U(\"bias\",e[2].dataType,e[2].dims,d),w=U(\"inputMean\",e[3].dataType,e[3].dims,d),x=U(\"inputVar\",e[4].dataType,e[4].dims,d),C=K(\"y\",e[0].dataType,u,a),T=()=>{let E=\"\";if(n)E=`let cOffset = ${s.length===1?\"0u\":i===\"NHWC\"?`outputIndices[${s.length-1}] / ${a}`:\"outputIndices[1]\"};`;else if(i===\"NCHW\")E=`\n            ${C.indicesSet(\"outputIndices\",\"0\",\"0\")}\n            let cOffset = ${C.indicesToOffset(\"outputIndices\")};`;else{E=`var cIndices = ${b.type.indices}(0);\n                       cIndices[0] = outputIndices[${s.length-1}];`;for(let k=1;k<b.rank;k++)E+=`cIndices[${k}] = outputIndices[${k}];`;E+=`let cOffset = ${b.indicesToOffset(\"cIndices\")};`}return E},S=E=>`\n  const epsilon = ${r};\n  ${E.registerUniform(\"outputSize\",\"u32\").declareVariables(g,b,$,w,x,C)}\n  ${E.mainStart()}\n  ${E.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n    var outputIndices = ${C.offsetToIndices(`global_idx * ${a}`)};\n    ${T()}\n    let scale = ${b.getByOffset(\"cOffset\")};\n    let bias = ${$.getByOffset(\"cOffset\")};\n    let inputMean = ${w.getByOffset(\"cOffset\")};\n    let inputVar = ${x.getByOffset(\"cOffset\")};\n    let x = ${g.getByOffset(\"global_idx\")};\n    let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;\n    ${C.setByOffset(\"global_idx\",\"value\")}\n  }`;return{name:\"BatchNormalization\",shaderCache:{hint:`${t.epsilon}_${t.format}_${n}_${a}`,inputDependencies:m?[\"rank\",\"type\",\"type\",\"type\",\"type\"]:void 0},getShaderSource:S,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:m?[{type:12,data:c},...X(s)]:[{type:12,data:c}]})}},lp=e=>we(e),Us=(e,t)=>{let{inputs:r,outputCount:n}=e,i=lp({...t,outputCount:n});if(ke.webgpu.validateInputContent&&sp(r,i),t.trainingMode)throw new Error(\"BatchNormalization trainingMode is not supported yet.\");e.compute(up(r,i))}});var dp,cp,Ns,Vs=j(()=>{\"use strict\";xe();_e();dp=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![320,640,1280].includes(e[0].dims[2]))throw new Error(\"number of channels should be 320, 640 or 1280\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},cp=e=>{let t=e[0].dims,r=e[0].dims[2],n=M.size(t)/4,i=e[0].dataType,s=U(\"input\",i,t,4),a=U(\"bias\",i,[r],4),d=U(\"residual\",i,t,4),c=K(\"output\",i,t,4);return{name:\"BiasAdd\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)}}),getShaderSource:u=>`\n  const channels = ${r}u / 4;\n  ${u.declareVariables(s,a,d,c)}\n\n  ${u.mainStart()}\n    ${u.guardAgainstOutOfBoundsWorkgroupSizes(n)}\n    let value = ${s.getByOffset(\"global_idx\")}\n      + ${a.getByOffset(\"global_idx % channels\")} + ${d.getByOffset(\"global_idx\")};\n    ${c.setByOffset(\"global_idx\",\"value\")}\n  }`}},Ns=e=>{dp(e.inputs),e.compute(cp(e.inputs))}});var pp,Pe,Hs,Gs,Ls,Fs,qs,js,Ks,Ys,Xs,mp,Zs,Qs,Js,eu,Zn,tu,Qn,ru,nu,iu,ou,au,su,uu,lu,du,cu,pu,mu,fu,hu,gu,yu,bu,vu,ao,so,wu,$u,_u,Jn=j(()=>{\"use strict\";ye();xe();Ze();_e();pp=(e,t,r,n,i,s)=>{let a=Math.ceil(t/4),d=\"\";typeof i==\"string\"?d=`${i}(a)`:d=i(\"a\");let c=U(\"inputData\",r,[a],4),m=K(\"outputData\",n,[a],4);return`\n      ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(c,m)}\n\n  ${s??\"\"}\n\n  ${e.mainStart()}\n    ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n\n    let a = ${c.getByOffset(\"global_idx\")};\n    ${m.setByOffset(\"global_idx\",d)}\n  }`},Pe=(e,t,r,n,i,s=e.dataType)=>({name:t,shaderCache:{hint:i,inputDependencies:[\"type\"]},getShaderSource:a=>pp(a,M.size(e.dims),e.dataType,s,r,n),getRunData:a=>({outputs:[{dims:e.dims,dataType:s}],dispatchGroup:{x:Math.ceil(M.size(a[0].dims)/64/4)},programUniforms:[{type:12,data:Math.ceil(M.size(e.dims)/4)}]})}),Hs=e=>{e.compute(Pe(e.inputs[0],\"Abs\",\"abs\"))},Gs=e=>{e.compute(Pe(e.inputs[0],\"Acos\",\"acos\"))},Ls=e=>{e.compute(Pe(e.inputs[0],\"Acosh\",\"acosh\"))},Fs=e=>{e.compute(Pe(e.inputs[0],\"Asin\",\"asin\"))},qs=e=>{e.compute(Pe(e.inputs[0],\"Asinh\",\"asinh\"))},js=e=>{e.compute(Pe(e.inputs[0],\"Atan\",\"atan\"))},Ks=e=>{e.compute(Pe(e.inputs[0],\"Atanh\",\"atanh\"))},Ys=e=>we(e),Xs=(e,t)=>{let r;switch(t.to){case 10:r=\"vec4<f16>\";break;case 1:r=\"vec4<f32>\";break;case 12:r=\"vec4<u32>\";break;case 6:r=\"vec4<i32>\";break;case 9:r=\"vec4<bool>\";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}e.compute(Pe(e.inputs[0],\"Cast\",r,void 0,t.cacheKey,t.to))},mp=e=>{let t=e.length>=2&&e[1].data!==0?e[1].getFloat32Array()[0]:Ln,r=e.length>=3&&e[2].data!==0?e[2].getFloat32Array()[0]:Fn;return we({min:t,max:r})},Zs=(e,t)=>{let r=e.inputs.length===1?t:mp(e.inputs),n=rt(e.inputs[0].dataType);e.compute(Pe(e.inputs[0],\"Clip\",i=>`clamp(${i}, clip_min_, clip_max_)`,`\n    const clip_min_: vec4<${n}> = vec4(${n}(${r.min}));\n    const clip_max_: vec4<${n}> = vec4(${n}(${r.max}));\n`,r.cacheKey),{inputs:[0]})},Qs=e=>{e.compute(Pe(e.inputs[0],\"Ceil\",\"ceil\"))},Js=e=>{e.compute(Pe(e.inputs[0],\"Cos\",\"cos\"))},eu=e=>{e.compute(Pe(e.inputs[0],\"Cosh\",\"cosh\"))},Zn=e=>we(e),tu=(e,t)=>{let r=rt(e.inputs[0].dataType);e.compute(Pe(e.inputs[0],\"Elu\",n=>`elu_vf32(${n})`,`\n  const elu_alpha_ = ${r}(${t.alpha});\n\n  fn elu_f32(a: ${r}) -> ${r} {\n  return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\n  }\n\n  fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {\n  return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\n  }`,t.cacheKey))},Qn=(e=\"f32\")=>`\nconst r0: ${e} = 0.3275911;\nconst r1: ${e} = 0.254829592;\nconst r2: ${e} = -0.284496736;\nconst r3: ${e} = 1.421413741;\nconst r4: ${e} = -1.453152027;\nconst r5: ${e} = 1.061405429;\n\nfn erf_vf32(v: vec4<${e}>) -> vec4<${e}> {\n  let absv = abs(v);\n  let x = 1.0 / (1.0 + r0 * absv);\n  return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\n}`,ru=e=>{let t=rt(e.inputs[0].dataType);e.compute(Pe(e.inputs[0],\"Erf\",r=>`erf_vf32(${r})`,Qn(t)))},nu=e=>{e.compute(Pe(e.inputs[0],\"Exp\",\"exp\"))},iu=e=>{e.compute(Pe(e.inputs[0],\"Floor\",\"floor\"))},ou=e=>{let t=rt(e.inputs[0].dataType);e.compute(Pe(e.inputs[0],\"Gelu\",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,Qn(t)))},au=(e,t)=>{let r=rt(e.inputs[0].dataType);e.compute(Pe(e.inputs[0],\"LeakyRelu\",n=>`select(leaky_relu_alpha_ * ${n}, ${n}, ${n} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},su=e=>{e.compute(Pe(e.inputs[0],\"Not\",t=>`!${t}`))},uu=e=>{e.compute(Pe(e.inputs[0],\"Neg\",t=>`-${t}`))},lu=e=>{e.compute(Pe(e.inputs[0],\"Reciprocal\",t=>`1.0/${t}`))},du=e=>{let t=rt(e.inputs[0].dataType);e.compute(Pe(e.inputs[0],\"Relu\",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},cu=e=>{e.compute(Pe(e.inputs[0],\"Sigmoid\",t=>`(1.0 / (1.0 + exp(-${t})))`))},pu=e=>we(e),mu=(e,t)=>{let r=rt(e.inputs[0].dataType);e.compute(Pe(e.inputs[0],\"HardSigmoid\",n=>`max(vec4<${r}>(0.0), min(vec4<${r}>(1.0), ${t.alpha} * ${n} + vec4<${r}>(${t.beta})))`,void 0,t.cacheKey))},fu=e=>{e.compute(Pe(e.inputs[0],\"Sin\",\"sin\"))},hu=e=>{e.compute(Pe(e.inputs[0],\"Sinh\",\"sinh\"))},gu=e=>{e.compute(Pe(e.inputs[0],\"Sqrt\",\"sqrt\"))},yu=e=>{e.compute(Pe(e.inputs[0],\"Tan\",\"tan\"))},bu=e=>`sign(${e}) * (1 - exp(-2 * abs(${e}))) / (1 + exp(-2 * abs(${e})))`,vu=e=>{e.compute(Pe(e.inputs[0],\"Tanh\",bu))},ao=(e=\"f32\")=>`\nconst fast_gelu_a: ${e} = 0.5;\nconst fast_gelu_b: ${e} = 0.7978845608028654;\nconst fast_gelu_c: ${e} = 0.035677408136300125;\n\nfn tanh_v(v: vec4<${e}>) -> vec4<${e}> {\n  return ${bu(\"v\")};\n}\n`,so=e=>`(fast_gelu_a + fast_gelu_a * tanh_v(${e} * (fast_gelu_c * ${e} * ${e} + fast_gelu_b))) * ${e}`,wu=e=>{let t=rt(e.inputs[0].dataType);e.compute(Pe(e.inputs[0],\"FastGelu\",so,ao(t),void 0,e.inputs[0].dataType))},$u=(e,t)=>{let r=rt(e.inputs[0].dataType);return e.compute(Pe(e.inputs[0],\"ThresholdedRelu\",n=>`select(vec4<${r}>(0.0), ${n}, ${n} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},_u=e=>{e.compute(Pe(e.inputs[0],\"Log\",\"log\"))}});var fp,hp,Su,Cu=j(()=>{\"use strict\";xe();_e();Jn();fp=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error(\"hidden state should be 2560, 5120 or 10240\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},hp=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=U(\"input\",e[0].dataType,e[0].dims,4),n=U(\"bias\",e[0].dataType,[e[0].dims[2]],4),i=K(\"output\",e[0].dataType,t,4),s=M.size(t)/4,a=De(e[0].dataType);return{name:\"BiasSplitGelu\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)}}),getShaderSource:c=>`\n  const M_SQRT2 = sqrt(2.0);\n  const halfChannels = ${e[0].dims[2]/4/2}u;\n\n  ${c.declareVariables(r,n,i)}\n\n  ${Qn(a)}\n\n  ${c.mainStart()}\n    ${c.guardAgainstOutOfBoundsWorkgroupSizes(s)}\n    let biasIdx = global_idx % halfChannels;\n    let batchIndex = global_idx / halfChannels;\n    let inputOffset = biasIdx + batchIndex * halfChannels * 2;\n    let valueLeft = input[inputOffset] + bias[biasIdx];\n    let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\n    let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\n\n    ${i.setByOffset(\"global_idx\",\"valueLeft * geluRight\")}\n  }`}},Su=e=>{fp(e.inputs),e.compute(hp(e.inputs))}});var gp,yp,Wt,Iu,Tu,Au,Eu,ku,Ou,Pu,Ru,zu,Bu,Du=j(()=>{\"use strict\";ye();xe();_e();gp=(e,t,r,n,i,s,a,d,c,m,u,g)=>{let b,$;typeof d==\"string\"?b=$=(S,E)=>`${d}((${S}),(${E}))`:typeof d==\"function\"?b=$=d:(b=d.scalar,$=d.vector);let w=K(\"outputData\",u,n.length,4),x=U(\"aData\",c,t.length,4),C=U(\"bData\",m,r.length,4),T;if(i)if(s){let S=M.size(t)===1,E=M.size(r)===1,k=t.length>0&&t[t.length-1]%4===0,P=r.length>0&&r[r.length-1]%4===0;S||E?T=w.setByOffset(\"global_idx\",$(S?`${x.type.value}(${x.getByOffset(\"0\")}.x)`:x.getByOffset(\"global_idx\"),E?`${C.type.value}(${C.getByOffset(\"0\")}.x)`:C.getByOffset(\"global_idx\"))):T=`\n            let outputIndices = ${w.offsetToIndices(\"global_idx * 4u\")};\n            let offsetA = ${x.broadcastedIndicesToOffset(\"outputIndices\",w)};\n            let offsetB = ${C.broadcastedIndicesToOffset(\"outputIndices\",w)};\n            ${w.setByOffset(\"global_idx\",$(a||k?x.getByOffset(\"offsetA / 4u\"):`${x.type.value}(${x.getByOffset(\"offsetA / 4u\")}[offsetA % 4u])`,a||P?C.getByOffset(\"offsetB / 4u\"):`${C.type.value}(${C.getByOffset(\"offsetB / 4u\")}[offsetB % 4u])`))}\n          `}else T=w.setByOffset(\"global_idx\",$(x.getByOffset(\"global_idx\"),C.getByOffset(\"global_idx\")));else{if(!s)throw new Error(\"no necessary to use scalar implementation for element-wise binary op implementation.\");let S=(E,k,P=\"\")=>{let R=`aData[indexA${k}][componentA${k}]`,L=`bData[indexB${k}][componentB${k}]`;return`\n            let outputIndices${k} = ${w.offsetToIndices(`global_idx * 4u + ${k}u`)};\n            let offsetA${k} = ${x.broadcastedIndicesToOffset(`outputIndices${k}`,w)};\n            let offsetB${k} = ${C.broadcastedIndicesToOffset(`outputIndices${k}`,w)};\n            let indexA${k} = offsetA${k} / 4u;\n            let indexB${k} = offsetB${k} / 4u;\n            let componentA${k} = offsetA${k} % 4u;\n            let componentB${k} = offsetB${k} % 4u;\n            ${E}[${k}] = ${P}(${b(R,L)});\n          `};u===9?T=`\n            var data = vec4<u32>(0);\n            ${S(\"data\",0,\"u32\")}\n            ${S(\"data\",1,\"u32\")}\n            ${S(\"data\",2,\"u32\")}\n            ${S(\"data\",3,\"u32\")}\n            outputData[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:T=`\n            ${S(\"outputData[global_idx]\",0)}\n            ${S(\"outputData[global_idx]\",1)}\n            ${S(\"outputData[global_idx]\",2)}\n            ${S(\"outputData[global_idx]\",3)}\n          `}return`\n        ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(x,C,w)}\n\n        ${g??\"\"}\n\n        ${e.mainStart()}\n        ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n        ${T}\n      }`},yp=(e,t,r,n,i,s,a=r.dataType)=>{let d=!M.areEqual(r.dims,n.dims),c=r.dims,m=M.size(r.dims),u=!1,g=!1,b=[d];if(d){let $=zt.calcShape(r.dims,n.dims,!1);if(!$)throw new Error(\"Can't perform binary op on the given tensors\");c=$,m=M.size(c);let w=M.size(r.dims)===1,x=M.size(n.dims)===1,C=r.dims.length>0&&r.dims[r.dims.length-1]%4===0,T=n.dims.length>0&&n.dims[n.dims.length-1]%4===0;b.push(w),b.push(x),b.push(C),b.push(T);let S=1;for(let E=1;E<c.length;E++){let k=r.dims[r.dims.length-E]??1,P=n.dims[n.dims.length-E]??1;if(k===P)S*=k;else break}S%4===0?(g=!0,u=!0):(w||x||C||T)&&(u=!0)}else u=!0;return b.push(u),{name:e,shaderCache:{hint:t+b.map($=>$.toString()).join(\"_\"),inputDependencies:[\"rank\",\"rank\"]},getShaderSource:$=>gp($,r.dims,n.dims,c,u,d,g,i,r.dataType,n.dataType,a,s),getRunData:()=>({outputs:[{dims:c,dataType:a}],dispatchGroup:{x:Math.ceil(m/64/4)},programUniforms:[{type:12,data:Math.ceil(M.size(c)/4)},...X(r.dims,n.dims,c)]})}},Wt=(e,t,r,n,i,s)=>{e.compute(yp(t,i??\"\",e.inputs[0],e.inputs[1],r,n,s))},Iu=e=>{Wt(e,\"Add\",(t,r)=>`${t}+${r}`)},Tu=e=>{Wt(e,\"Div\",(t,r)=>`${t}/${r}`)},Au=e=>{Wt(e,\"Equal\",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4<u32>(${t}==${r})`},void 0,void 0,9)},Eu=e=>{Wt(e,\"Mul\",(t,r)=>`${t}*${r}`)},ku=e=>{let t=U(\"input\",e.inputs[0].dataType,e.inputs[0].dims).type.value;Wt(e,\"Pow\",{scalar:(n,i)=>`pow_custom(${n},${i})`,vector:(n,i)=>`pow_vector_custom(${n},${i})`},`\n    fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\n      if (b == ${t}(0.0)) {\n        return ${t}(1.0);\n      } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\n        return ${t}(pow(f32(a), f32(b))); // NaN\n      }\n      return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t===\"i32\"?\"round\":\"\"}(pow(f32(abs(a)), f32(b))));\n    }\n    fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\n      // TODO: implement vectorized pow\n      return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\n    }\n      `)},Ou=e=>{Wt(e,\"Sub\",(t,r)=>`${t}-${r}`)},Pu=e=>{Wt(e,\"Greater\",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4<u32>(${t}>${r})`},void 0,void 0,9)},Ru=e=>{Wt(e,\"Less\",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4<u32>(${t}<${r})`},void 0,void 0,9)},zu=e=>{Wt(e,\"GreaterOrEqual\",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4<u32>(${t}>=${r})`},void 0,void 0,9)},Bu=e=>{Wt(e,\"LessOrEqual\",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4<u32>(${t}<=${r})`},void 0,void 0,9)}});var kt,Ot,Pt,ei,Zt=j(()=>{\"use strict\";ye();xe();kt=(e,t,r=\"f32\")=>{switch(e.activation){case\"Relu\":return`value = max(value, ${t}(0.0));`;case\"Sigmoid\":return`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`;case\"Clip\":return`value = clamp(value, ${t}(${r}(uniforms.clip_min)), ${t}(${r}(uniforms.clip_max)));`;case\"HardSigmoid\":return`value = max(${t}(0.0), min(${t}(1.0), ${r}(uniforms.alpha) * value + ${r}(uniforms.beta)));`;case\"LeakyRelu\":return`value = select(${r}(uniforms.alpha) * value, value, value >= ${t}(0.0));`;case\"\":return\"\";default:throw new Error(`Unsupported activation ${e.activation}`)}},Ot=(e,t)=>{e.activation===\"Clip\"?t.push({type:1,data:e.clipMax},{type:1,data:e.clipMin}):e.activation===\"HardSigmoid\"?t.push({type:1,data:e.alpha},{type:1,data:e.beta}):e.activation===\"LeakyRelu\"&&t.push({type:1,data:e.alpha})},Pt=(e,t)=>{e.activation===\"Clip\"?t.push({name:\"clip_max\",type:\"f32\"},{name:\"clip_min\",type:\"f32\"}):e.activation===\"HardSigmoid\"?t.push({name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}):e.activation===\"LeakyRelu\"&&t.push({name:\"alpha\",type:\"f32\"})},ei=e=>{let t=e?.activation||\"\";if(t===\"HardSigmoid\"){let[r,n]=e?.activation_params||[.2,.5];return{activation:t,alpha:r,beta:n}}else if(t===\"Clip\"){let[r,n]=e?.activation_params||[Ln,Fn];return{activation:t,clipMax:n,clipMin:r}}else if(t===\"LeakyRelu\"){let[r]=e?.activation_params||[.01];return{activation:t,alpha:r}}return{activation:t}}});var nt,ti,ri=j(()=>{\"use strict\";nt=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},ti=e=>`\n      ${e?\"value = value + getBiasByOutputCoords(coords);\":\"\"}\n      `});var ni,uo=j(()=>{\"use strict\";ni=e=>`\nfn getIndexFromCoords4D(coords : vec4<i32>, shape : vec4<i32>) -> i32 {\n  return dot(coords, vec4<i32>(\n      shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\n}\nfn getOutputIndexFromCoords(coords : vec4<i32>) -> i32 {\n  return dot(coords, vec4<i32>(\n    i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\n}\n`});var vp,wp,rn,Mu,$p,nn,_p,ii,on=j(()=>{\"use strict\";ye();xe();_e();Zt();ri();vp=(e,t)=>e?`\n        mm_Asub[inputRow][inputCol] = mm_readA(batch,\n          kStart + inputRow,\n          globalRowStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\n        `:`\n        mm_Asub[inputRow][inputCol] = mm_readA(batch,\n          globalRow + innerRow,\n          kStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\n        `,wp=(e,t)=>e?`\n        let ACached0 = mm_Asub[k * innerElementSize][localRow];\n        let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\n        let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\n        ${t===3?\"\":\"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];\"}\n        for (var i = 0; i < rowPerThread; i = i + 1) {\n          acc[i] = BCached0 * ACached0[i] + acc[i];\n          acc[i] = BCached1 * ACached1[i] + acc[i];\n          acc[i] = BCached2 * ACached2[i] + acc[i];\n          ${t===3?\"\":\"acc[i] = BCached3 * ACached3[i] + acc[i];\"}\n        }`:`\n        for (var i = 0; i < rowPerThread; i = i + 1) {\n          let ACached = mm_Asub[tileRow + i][k];\n          acc[i] = BCached0 * ACached.x + acc[i];\n          acc[i] = BCached1 * ACached.y + acc[i];\n          acc[i] = BCached2 * ACached.z + acc[i];\n          ${t===3?\"\":\"acc[i] = BCached3 * ACached.w + acc[i];\"}\n        }`,rn=(e,t,r=\"f32\",n,i=!1,s=32,a=!1,d=32)=>{let c=t[1]*e[1],m=t[0]*e[0],u=i?c:s,g=i?s:c,b=u/t[0],$=s/t[1];if(!((i&&b===4&&e[1]===4||!i&&(b===3||b===4))&&u%t[0]===0&&s%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${i} is true, innerElementSize ${b} and workPerThread[1] ${e[1]} must be 4.\n      Otherwise, innerElementSize ${b} must be 3 or 4.\n  tileAWidth ${u} must be divisible by workgroupSize[0]${t[0]}. tileInner ${s} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\nvar<workgroup> mm_Asub: array<array<vec${b}<${r}>, ${u/b}>, ${g}>;\nvar<workgroup> mm_Bsub: array<array<vec4<${r}>, ${m/e[0]}>, ${s}>;\n\nconst rowPerThread = ${e[1]};\nconst colPerThread = ${e[0]};\nconst innerElementSize = ${b};\nconst tileInner = ${s};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3<u32>,\n        @builtin(global_invocation_id) globalId : vec3<u32>,\n        @builtin(workgroup_id) workgroupId : vec3<u32>) {\n  let localRow = i32(localId.y);\n  let tileRow = localRow * rowPerThread;\n  let tileCol = i32(localId.x);\n\n  let globalRow =i32(globalId.y) * rowPerThread;\n  let globalCol = i32(globalId.x);\n  let batch = ${a?\"0\":\"i32(globalId.z)\"};\n  ${n?`let batchIndices = ${n.offsetToIndices(\"u32(batch)\")};`:\"\"}\n  let globalRowStart = i32(workgroupId.y) * ${c};\n\n  let num_tiles = ${a?`${Math.ceil(d/s)}`:\"(uniforms.dim_inner - 1) / tileInner + 1\"};\n  var kStart = ${a?`i32(globalId.z) * ${d}`:\"0\"};\n\n  var acc: array<vec4<${r}>, rowPerThread>;\n\n  // Loop over shared dimension.\n  let tileRowB = localRow * ${$};\n  for (var t = 0; t < num_tiles; t = t + 1) {\n      // Load one tile of A into local memory.\n      for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n          let inputRow = tileRow + innerRow;\n          let inputCol = tileCol;\n          ${vp(i,n)}\n      }\n\n      // Load one tile of B into local memory.\n      for (var innerRow = 0; innerRow < ${$}; innerRow = innerRow + 1) {\n          let inputRow = tileRowB + innerRow;\n          let inputCol = tileCol;\n          mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${n?\", batchIndices\":\"\"});\n      }\n      kStart = kStart + tileInner;\n      workgroupBarrier();\n\n      // Compute acc values for a single thread.\n      for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\n          let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\n          let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\n          let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\n          ${b===3?\"\":\"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];\"}\n\n          ${wp(i,b)}\n      }\n\n      workgroupBarrier();\n  }\n\n  for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n      mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\n  }\n}`},Mu=(e,t)=>e?`\n            mm_Asub[inputRow][inputCol] = mm_readA(batch,\n              kStart + inputRow,\n              globalRowStart + inputCol${t?\", batchIndices\":\"\"});\n            `:`\n            mm_Asub[inputRow][inputCol] = mm_readA(batch,\n              globalRowStart + inputRow,\n              kStart + inputCol${t?\", batchIndices\":\"\"});\n            `,$p=e=>e?\"let ACached = mm_Asub[k][tileRow + innerRow];\":\"let ACached = mm_Asub[tileRow + innerRow][k];\",nn=(e,t,r=\"f32\",n,i=!1,s=32,a=!1,d=32,c=!1)=>{let m=e[1]*t[1],u=e[0]*t[0],g=i?m:s,b=i?s:m;if(!(b%t[1]===0&&g%t[0]===0&&s%t[1]===0))throw new Error(`tileAHight ${b} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${g} must be divisible by workgroupSize[0]${t[0]}, tileInner ${s} must be divisible by workgroupSize[1]${t[1]}`);let $=b/t[1],w=g/t[0],x=s/t[1],C=c?`\n    let localRow = i32(localId.y);\n    let localCol = i32(localId.x);\n    let globalRowStart = i32(workgroupId.y) * ${m};\n    let globalColStart = i32(workgroupId.x) * ${u};\n\n    // Loop over shared dimension.\n    for (var t = 0; t < num_tiles; t = t + 1) {\n      // Load one tile of A into local memory.\n      for (var inputRow = localRow; inputRow < ${b}; inputRow = inputRow + ${t[1]}) {\n        for (var inputCol = localCol; inputCol < ${g}; inputCol = inputCol + ${t[0]}) {\n          ${Mu(i,n)}\n        }\n      }\n      // Load one tile of B into local memory.\n      for (var inputRow = localRow; inputRow < ${s}; inputRow = inputRow + ${t[1]}) {\n            for (var inputCol = localCol; inputCol < ${u}; inputCol = inputCol + ${t[0]}) {\n          mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n            kStart + inputRow,\n            globalColStart + inputCol${n?\", batchIndices\":\"\"});\n        }\n      }\n      kStart = kStart + tileInner;\n      workgroupBarrier();\n\n      // Compute acc values for a single thread.\n      var BCached : array<${r}, colPerThread>;\n      for (var k = 0; k < tileInner; k = k + 1) {\n        for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n          BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\n        }\n        for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n          let ACached = ${i?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\n          for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n            acc[innerRow][innerCol] = acc[innerRow][innerCol] +\n                ACached * BCached[innerCol];\n          }\n        }\n      }\n      workgroupBarrier();\n    }\n    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n      let gRow = globalRowStart + localRow + innerRow * ${t[1]};\n      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n        let gCol = globalColStart + localCol + innerCol * ${t[0]};\n        mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\n      }\n    }\n    `:`\nlet tileRow = i32(localId.y) * rowPerThread;\nlet tileCol = i32(localId.x) * colPerThread;\n\nlet globalRow = i32(globalId.y) * rowPerThread;\nlet globalCol = i32(globalId.x) * colPerThread;\nlet globalRowStart = i32(workgroupId.y) * ${m};\n\nlet tileRowA = i32(localId.y) * ${$};\nlet tileColA = i32(localId.x) * ${w};\nlet tileRowB = i32(localId.y) * ${x};\n// Loop over shared dimension.\nfor (var t = 0; t < num_tiles; t = t + 1) {\n  // Load one tile of A into local memory.\n  for (var innerRow = 0; innerRow < ${$}; innerRow = innerRow + 1) {\n    for (var innerCol = 0; innerCol < ${w}; innerCol = innerCol + 1) {\n      let inputRow = tileRowA + innerRow;\n      let inputCol = tileColA + innerCol;\n      ${Mu(i,n)}\n    }\n  }\n\n  // Load one tile of B into local memory.\n  for (var innerRow = 0; innerRow < ${x}; innerRow = innerRow + 1) {\n    for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n      let inputRow = tileRowB + innerRow;\n      let inputCol = tileCol + innerCol;\n      mm_Bsub[inputRow][inputCol] = mm_readB(batch,\n        kStart + inputRow,\n        globalCol + innerCol${n?\", batchIndices\":\"\"});\n    }\n  }\n  kStart = kStart + tileInner;\n  workgroupBarrier();\n\n  // Compute acc values for a single thread.\n  var BCached : array<${r}, colPerThread>;\n  for (var k = 0; k < tileInner; k = k + 1) {\n    for (var inner = 0; inner < colPerThread; inner = inner + 1) {\n      BCached[inner] = mm_Bsub[k][tileCol + inner];\n    }\n\n    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n      ${$p(i)}\n      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n        acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\n      }\n    }\n  }\n\n  workgroupBarrier();\n}\n\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n  for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n    mm_write(batch, globalRow + innerRow, globalCol + innerCol,\n        acc[innerRow][innerCol]);\n  }\n}\n`;return`\n  var<workgroup> mm_Asub : array<array<${r}, ${g}>, ${b}>;\n  var<workgroup> mm_Bsub : array<array<${r}, ${u}>, ${s}>;\n  const rowPerThread = ${e[1]};\n  const colPerThread = ${e[0]};\n  const tileInner = ${s};\n\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\nfn main(@builtin(local_invocation_id) localId : vec3<u32>,\n        @builtin(global_invocation_id) globalId : vec3<u32>,\n        @builtin(workgroup_id) workgroupId : vec3<u32>) {\n    let batch = ${a?\"0\":\"i32(globalId.z)\"};\n    ${n?`let batchIndices = ${n.offsetToIndices(\"u32(batch)\")};`:\"\"}\n    let num_tiles = ${a?`${Math.ceil(d/s)}`:\"(uniforms.dim_inner - 1) / tileInner + 1\"};\n    var kStart = ${a?`i32(globalId.z) * ${d}`:\"0\"};\n\n    var acc : array<array<${r}, colPerThread>, rowPerThread>;\n\n    // Without this initialization strange values show up in acc.\n    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\n      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\n        acc[innerRow][innerCol] = 0.0;\n      }\n    }\n    ${C}\n  }\n`},_p=(e,t,r,n,i,s=!1)=>{let[a,d,c]=i,[m,u,g,b]=n,$=Pr(a,c),w=Pr(d,c),x=De(n[0].type.tensor),C=()=>{let E=u.rank,k=m.rank,P=`var aIndices: ${u.type.indices};`;for(let R=E-2-1,L=k-1;R>=0;R--,L--)P+=`\naIndices[${R}] = ${k>1?`batchIndices[${L}]`:\"batchIndices\"};`;return $.forEach(R=>{P+=`\naIndices[${R}] = 0;`}),P+=`\naIndices[${E-2}] = u32(row);\n                   aIndices[${E-1}] = u32(colIn);`,P},T=()=>{let E=g.rank,k=m.rank,P=`var bIndices: ${g.type.indices};`;for(let R=E-2-1,L=k-1;R>=0;R--,L--)P+=`\nbIndices[${R}] = ${k>1?`batchIndices[${L}]`:\"batchIndices\"};`;return w.forEach(R=>{P+=`\nbIndices[${R}] = 0;`}),P+=`\nbIndices[${E-2}] = u32(row);\n                   bIndices[${E-1}] = u32(colIn);`,P};return`\n    fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${m.type.indices}) -> ${nt(e,x)} {\n      var value = ${nt(e,x)}(0.0);\n      let col = colIn * ${e};\n      if(row < uniforms.dim_a_outer && col < uniforms.dim_inner)\n      {\n        ${C()}\n        value = ${u.getByIndices(\"aIndices\")};\n      }\n      return value;\n    }\n\n    fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${m.type.indices}) -> ${nt(e,x)} {\n      var value = ${nt(e,x)}(0.0);\n      let col = colIn * ${e};\n      if(row < uniforms.dim_inner && col < uniforms.dim_b_outer)\n      {\n        ${T()}\n        value = ${g.getByIndices(\"bIndices\")};\n      }\n      return value;\n    }\n\n    fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${nt(e,x)}) {\n      let col = colIn * ${e};\n      if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {\n        var value = valueIn;\n        let coords = vec3<i32>(batch, row, colIn);\n        ${t?`value = value + ${s?\"bias[colIn]\":`${nt(e,x)}(bias[row])`};`:\"\"}\n        ${r}\n        ${b.setByIndices(\"vec3<u32>(coords)\",\"value\")}\n      }\n    }\n    `},ii=(e,t,r,n,i=!1)=>{let s=e[0].dims,a=e[1].dims,d=s.slice(0,-2),c=a.slice(0,-2),m=n?n.slice(0,-2):r.slice(0,-2),u=M.size(m),g=s[s.length-2],b=s[s.length-1],$=a[a.length-1],w=b%4===0&&$%4===0,x=g<=8?[4,1,1]:[4,4,1],C=[8,8,1],T=[Math.ceil($/C[0]/x[0]),Math.ceil(g/C[1]/x[1]),Math.ceil(u/C[2]/x[2])],S=w?4:1,E=[...d,g,b/S],k=E.length,P=[...c,b,$/S],R=P.length,L=[u,g,$/S],V=[{type:6,data:g},{type:6,data:$},{type:6,data:b}];Ot(t,V),V.push(...X(m,E,P));let Y=[\"rank\",\"rank\"],Q=e.length>2;Q&&(V.push(...X(e[2].dims)),Y.push(\"rank\")),V.push(...X(L));let he=N=>{let se=m.length,Ce=qn(\"batchDims\",e[0].dataType,se,1),Ve=De(e[0].dataType),ee=U(\"a\",e[0].dataType,k,S),ae=U(\"b\",e[1].dataType,R,S),Ie=K(\"result\",e[0].dataType,L.length,S),me=[ee,ae];if(Q){let H=i?S:1;me.push(U(\"bias\",e[2].dataType,e[2].dims.length,H))}let oe=[{name:\"dim_a_outer\",type:\"i32\"},{name:\"dim_b_outer\",type:\"i32\"},{name:\"dim_inner\",type:\"i32\"}];Pt(t,oe);let ue=De(Ie.type.tensor),de=kt(t,Ie.type.value,ue),je=_p(S,Q,de,[Ce,ee,ae,Ie],[d,c,m],i);return`\n  ${N.registerUniforms(oe).registerInternalVariables(Ce).declareVariables(...me,Ie)}\n  ${je}\n  ${w?rn(x,C,Ve,Ce):nn(x,C,Ve,Ce)}\n                   `};return{name:\"MatMul\",shaderCache:{hint:`${x};${t.activation};${w};${i}`,inputDependencies:Y},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:T[0],y:T[1],z:T[2]},programUniforms:V}),getShaderSource:he}}});var xp,Uu,Wu=j(()=>{\"use strict\";ye();Xt();_e();Zt();ri();uo();on();xp=(e,t,r,n,i=!1,s,a=4,d=4,c=4,m=\"f32\")=>{let u=Q=>{switch(Q){case 1:return\"resData = x[xIndex];\";case 3:return`resData = vec3<${m}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return\"resData = x[xIndex / 4];\";default:throw new Error(`innerElementSize ${Q} is not supported.`)}},g=Q=>{switch(Q){case 1:return\"return w[row * i32(uniforms.w_shape[3]) + colIn];\";case 4:return\"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];\";default:throw new Error(`innerElementSize ${Q} is not supported.`)}},b=e?`\n    let coord = vec4<i32>(batch, xRow, xCol, xCh);\n    `:`\n    let coord = vec4<i32>(batch, xCh, xRow, xCol);\n    `,$=e?`\n    let coords = vec4<i32>(\n      batch,\n      row / outWidth,\n      row % outWidth,\n      col);\n    `:`\n    let coords = vec4<i32>(\n      batch,\n      row,\n      col / outWidth,\n      col % outWidth);\n    `,w=e?\"i32(uniforms.x_shape[1])\":\"i32(uniforms.x_shape[2])\",x=e?\"i32(uniforms.x_shape[2])\":\"i32(uniforms.x_shape[3])\",C=e?\"row\":\"col\",T=e?\"col\":\"row\",S=`\n    let inChannels = i32(uniforms.w_shape[2]);\n    let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n    let outRow = ${C} / outWidth;\n    let outCol = ${C} % outWidth;\n\n    let WRow = ${T} / (i32(uniforms.w_shape[1]) * inChannels);\n    let WCol = ${T} / inChannels % i32(uniforms.w_shape[1]);\n    let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0];\n    let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1];\n    let xCh = ${T} % inChannels;\n    var resData = ${nt(a,m)}(0.0);\n    // The bounds checking is always needed since we use it to pad zero for\n    // the 'same' padding type.\n    if (xRow >= 0 && xRow < ${w} && xCol >= 0 && xCol < ${x}) {\n      ${b}\n      let xIndex = getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape));\n      ${u(a)}\n    }\n    return resData;`,E=e?t&&n?`\n    let col = colIn * ${a};\n    ${S}`:`\n    let col = colIn * ${a};\n    if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {\n      ${S}\n    }\n    return ${nt(a,m)}(0.0);`:n&&r?`\n    let col = colIn * ${a};\n    ${S}`:`\n    let col = colIn * ${a};\n    if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {\n      ${S}\n    }\n    return ${nt(a,m)}(0.0);`,k=`${g(d)}`,P=nt(c,m),R=e?nt(a,m):nt(d,m),L=e?nt(d,m):nt(a,m),V=kt(s,P,m);return`\n    fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${R} {\n      ${e?E:k}\n    }\n\n    fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${L} {\n      ${e?k:E}\n    }\n\n    fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${P}) {\n      let col = colIn * ${c};\n      if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer)\n      {\n      var value = valueIn;\n      let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n      ${$}\n      ${ti(i)}\n      ${V}\n      setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\n      }\n    }`},Uu=(e,t,r,n,i,s,a,d)=>{let c=t.format===\"NHWC\",m=c?e[0].dims[3]:e[0].dims[1],u=r[0],g=c?r[2]:r[3],b=c?r[1]:r[2],$=c?r[3]:r[1],w=c&&(m%4===0||m%3===0)&&$%4===0,x=c?$:g*b,C=c?g*b:$,T=[8,8,1],S=n<=8?[4,1,1]:[4,4,1],E=[Math.ceil(x/T[0]/S[0]),Math.ceil(C/T[1]/S[1]),Math.ceil(u/T[2]/S[2])];Ne(\"verbose\",()=>`[conv2d_mm_webgpu] dispatch = ${E}`);let k=w?c&&m%4!==0?3:4:1,P=T[1]*S[1],R=T[0]*S[0],L=Math.max(T[0]*k,T[1]),V=n%P===0,Y=i%R===0,Q=s%L===0,he=w?[k,4,4]:[1,1,1],N=[{type:6,data:n},{type:6,data:i},{type:6,data:s},{type:6,data:[t.pads[0],t.pads[1]]},{type:6,data:t.strides},{type:6,data:t.dilations}];Ot(t,N),N.push(...X(e[0].dims,e[1].dims));let se=[\"rank\",\"rank\"];a&&(N.push(...X(e[2].dims)),se.push(\"rank\")),N.push(...X(r));let Ce=Ve=>{let ee=[{name:\"dim_a_outer\",type:\"i32\"},{name:\"dim_b_outer\",type:\"i32\"},{name:\"dim_inner\",type:\"i32\"},{name:\"pad\",type:\"i32\",length:2},{name:\"stride\",type:\"i32\",length:2},{name:\"dilation\",type:\"i32\",length:2}];Pt(t,ee);let ae=w?4:1,Ie=De(e[0].dataType),me=`\n      fn setOutputAtIndex(flatIndex : i32, value : ${w?`vec4<${Ie}>`:Ie}) {\n        result[flatIndex] = ${w?`vec4<${Ie}>`:Ie}(value);\n      }\n      fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${w?`vec4<${Ie}>`:Ie}) {\n        let flatIndex = getOutputIndexFromCoords(vec4<i32>(d0, d1, d2, d3));\n        setOutputAtIndex(flatIndex ${w?\"/ 4\":\"\"}, value);\n      }`,oe=U(\"x\",e[0].dataType,e[0].dims.length,k===3?1:k),ue=U(\"w\",e[1].dataType,e[1].dims.length,ae),de=[oe,ue],je=K(\"result\",e[0].dataType,r.length,ae);if(a){let H=U(\"bias\",e[2].dataType,e[2].dims.length,ae);de.push(H),me+=`\n        fn getBiasByOutputCoords(coords : vec4<i32>) -> ${w?`vec4<${Ie}>`:Ie} {\n          return bias[coords.${c?\"w\":\"y\"}${w?\"/ 4\":\"\"}];\n        }`}return`\n        ${ni(\"uniforms.result_strides\")}\n        //struct Uniforms { xShape : vec4<i32>, wShape : vec4<i32>, outShape : vec4<i32>,\n        //  outShapeStrides: vec3<i32>, filterDims : vec2<i32>, pad : vec2<i32>, stride : vec2<i32>,\n        //  dilation : vec2<i32>, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\n        ${Ve.registerUniforms(ee).declareVariables(...de,je)}\n        ${me}\n        ${xp(c,V,Y,Q,a,t,he[0],he[1],he[2],Ie)}\n        ${w?rn(S,T,Ie,void 0,!c,L):nn(S,T,Ie,void 0,!c,L,!1,void 0,d)}`};return{name:\"Conv2DMatMul\",shaderCache:{hint:`${t.cacheKey};${k};${w};${V};${Y};${Q};${P};${R};${L}`,inputDependencies:se},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:N}),getShaderSource:Ce}}});var lo,Nu,Vu=j(()=>{\"use strict\";ye();xe();_e();co();Zt();lo=(e,t,r)=>{let n=e.length>2,i=n?\"value += b[output_channel];\":\"\",s=e[0].dims,a=e[1].dims,d=a[0]/t.group,c=t.format===\"NHWC\",m=oi(s,a,t.dilations,t.pads,t.strides,c),u=M.size(m),g=[{type:12,data:u},{type:12,data:t.dilations},{type:12,data:[t.strides[0],t.strides[1]]},{type:12,data:[t.pads[0],t.pads[1]]},{type:12,data:d}];Ot(t,g),g.push(...X(s,a));let b=[\"rank\",\"rank\"];n&&(g.push(...X(e[2].dims)),b.push(\"rank\")),g.push(...X(m));let $=w=>{let x=K(\"output\",e[0].dataType,m.length),C=De(x.type.tensor),T=kt(t,x.type.value,C),S=U(\"x\",e[0].dataType,s.length),E=U(\"w\",e[1].dataType,a.length),k=[S,E];n&&k.push(U(\"b\",e[2].dataType,e[2].dims.length));let P=[{name:\"output_size\",type:\"u32\"},{name:\"dilations\",type:\"u32\",length:t.dilations.length},{name:\"strides\",type:\"u32\",length:2},{name:\"pads\",type:\"u32\",length:2},{name:\"output_channels_per_group\",type:\"u32\"}];return Pt(t,P),`\n  ${w.registerUniforms(P).declareVariables(...k,x)}\n\n  ${w.mainStart()}\n    ${w.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n    let outputIndices = ${x.offsetToIndices(\"global_idx\")};\n    let batch: u32 = outputIndices[0];\n    let output_channel: u32 = outputIndices[${c?3:1}];\n    let xRCCorner: vec2<u32> = vec2<u32>(outputIndices[${c?1:2}], outputIndices[${c?2:3}]) * uniforms.strides - uniforms.pads;\n    let group_id: u32 = output_channel / uniforms.output_channels_per_group;\n\n    var value: ${x.type.value} = ${x.type.value}(0);\n    for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) {\n      let input_channel = group_id * uniforms.w_shape[1] + wInChannel;\n      for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) {\n        let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];\n\n        if (xHeight < 0u || xHeight >= uniforms.x_shape[${c?1:2}]) {\n          continue;\n        }\n\n        for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) {\n          let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];\n          if (xWidth < 0u || xWidth >= uniforms.x_shape[${c?2:3}]) {\n            continue;\n          }\n\n          let xVal = ${c?S.get(\"batch\",\"xHeight\",\"xWidth\",\"input_channel\"):S.get(\"batch\",\"input_channel\",\"xHeight\",\"xWidth\")};\n          let wVal = ${E.get(\"output_channel\",\"wInChannel\",\"wHeight\",\"wWidth\")};\n          value += xVal*wVal;\n        }\n      }\n    }\n    ${i}\n    ${T}\n    ${x.setByOffset(\"global_idx\",\"value\")}\n  }`};return{name:\"GroupedConv\",shaderCache:{hint:t.cacheKey,inputDependencies:b},getRunData:()=>({outputs:[{dims:r?r(m):m,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:g}),getShaderSource:$}},Nu=(e,t,r)=>{let n=e.length>2,i=Ue(r[3]),s=Ue(r[2]),a=M.size(r)/i/s,d=[e[0].dims[0],e[0].dims[1],e[0].dims[2],e[0].dims[3]/i],c=[e[1].dims[0],e[1].dims[1],e[1].dims[2],e[1].dims[3]/i],m=[r[0],r[1],r[2],r[3]/i],u=[{type:12,data:a},{type:6,data:[t.strides[0],t.strides[1]]},{type:6,data:[t.pads[0],t.pads[1]]}];Ot(t,u),u.push(...X(d,c,m));let g=(s-1)*t.strides[1]+c[1],b=$=>{let w=K(\"output\",e[0].dataType,m.length,i),x=De(w.type.tensor),C=kt(t,w.type.value,x),T=U(\"x\",e[0].dataType,d.length,i),S=U(\"w\",e[1].dataType,c.length,i),E=[T,S];n&&E.push(U(\"b\",e[2].dataType,e[2].dims,i));let k=n?\"value += b[output_channel];\":\"\",P=[{name:\"output_size\",type:\"u32\"},{name:\"strides\",type:\"i32\",length:2},{name:\"pads\",type:\"i32\",length:2}];return Pt(t,P),`\n  ${$.registerUniforms(P).declareVariables(...E,w)}\n  ${$.mainStart()}\n    ${$.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n    let width0 = uniforms.output_shape[3];\n    let output_channel = global_idx % width0;\n    var index1 = global_idx / width0;\n    let width1 = uniforms.output_shape[2] / ${s}u;\n    let col = (index1 % width1) * ${s}u;\n    index1 = index1 / width1;\n    let row = index1 % uniforms.output_shape[1];\n    let batch = index1 / uniforms.output_shape[1];\n\n    let x_corner = vec2<i32>(i32(row), i32(col)) * uniforms.strides - uniforms.pads;\n\n    var x_vals: array<${T.type.value}, ${g}>;\n    var values: array<${w.type.value}, ${s}>;\n    let input_channel = output_channel;\n    // Use constant instead of uniform can give better performance for w's height/width.\n    for (var w_height: u32 = 0u; w_height < ${c[0]}; w_height++) {\n      let x_height = x_corner.x + i32(w_height);\n      if (x_height >= 0 && u32(x_height) < uniforms.x_shape[1]) {\n        for (var i = 0; i < ${g}; i++) {\n          let x_width = x_corner.y + i;\n          if (x_width >= 0 && u32(x_width) < uniforms.x_shape[2]) {\n            x_vals[i] = ${T.get(\"batch\",\"u32(x_height)\",\"u32(x_width)\",\"input_channel\")};\n          } else {\n            x_vals[i] = ${T.type.value}(0);\n          }\n        }\n        for (var w_width: u32 = 0u; w_width < ${c[1]}; w_width++) {\n          let w_val = ${S.get(\"w_height\",\"w_width\",\"0\",\"output_channel\")};\n          for (var i = 0u; i < ${s}u; i++) {\n            values[i] = fma(x_vals[i * u32(uniforms.strides[1]) + w_width], w_val, values[i]);\n          }\n        }\n      }\n    }\n\n    for (var i = 0u; i < ${s}u; i++) {\n      var value = values[i];\n      ${k}\n      ${C}\n      ${w.set(\"batch\",\"row\",\"col + i\",\"output_channel\",\"value\")};\n    }\n  }`};return{name:\"GroupedConv-Vectorize\",shaderCache:{hint:`${t.cacheKey};${i};${s};${g};${c[0]};${c[1]}`,inputDependencies:n?[\"rank\",\"rank\",\"type\"]:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:u}),getShaderSource:b}}});var po,Sp,Hu,mo=j(()=>{\"use strict\";ye();xe();on();_e();Zt();po=(e,t,r,n,i=!1)=>{let s=e[0].dims,a=e[1].dims,d=s[s.length-2],c=a[a.length-1],m=s[s.length-1],u=Ue(c),g=Ue(m),b=Ue(d),$=M.size(r)/u/b,w=e.length>2,x=n?n.slice(0,-2):r.slice(0,-2),T=[M.size(x),d,c],S=[{type:12,data:$},{type:12,data:d},{type:12,data:c},{type:12,data:m}];Ot(t,S),S.push(...X(x,s,a)),w&&S.push(...X(e[2].dims)),S.push(...X(T));let E=k=>{let P=qn(\"batch_dims\",e[0].dataType,x.length),R=U(\"a\",e[0].dataType,s.length,g),L=U(\"b\",e[1].dataType,a.length,u),V=K(\"output\",e[0].dataType,T.length,u),Y=De(V.type.tensor),Q=kt(t,V.type.value,Y),he=[R,L],N=\"\";if(w){let oe=i?u:1;he.push(U(\"bias\",e[2].dataType,e[2].dims.length,oe)),N=`${i?`value += bias[col / ${oe}];`:`value += ${V.type.value}(bias[row + i]);`}`}let se=s.slice(0,-2),Ce=a.slice(0,-2),Ve=Pr(se,x),ee=Pr(Ce,x),ae=[{name:\"output_size\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"}];Pt(t,ae);let Ie=(oe,ue)=>{let de=oe.rank,je=oe.name;if(de===2)return`var ${je}_indices = ${oe.type.indices}(0u, 0u);`;let H=P.rank,ne=`var ${je}_indices: ${oe.type.indices};`;for(let Se=de-2-1,Ye=H-1;Se>=0;Se--,Ye--)ne+=`\n${je}_indices[${Se}] = ${H>1?`batch_indices[${Ye}]`:\"batch_indices\"};`;return ue.forEach(Se=>{ne+=`\n${je}_indices[${Se}] = 0;`}),ne+=`${je}_indices[${de-2}] = 0u;\n                     ${je}_indices[${de-1}] = 0u;`,ne},me=()=>{let oe=`var a_data: ${R.type.value};`;for(let ue=0;ue<g;ue++)oe+=`\n              let b_data${ue} = b[(b_offset + (k + ${ue}) * uniforms.N + col) / ${u}];`;for(let ue=0;ue<b;ue++){oe+=`a_data = a[(a_offset + (row + ${ue}) * uniforms.K + k) / ${g}];`;for(let de=0;de<g;de++)oe+=`\n            values[${ue}] = fma(${L.type.value}(a_data${g===1?\"\":`[${de}]`}), b_data${de}, values[${ue}]);\n`}return oe};return`\n  ${k.registerUniforms(ae).registerInternalVariables(P).declareVariables(...he,V)}\n  ${k.mainStart()}\n    ${k.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n    let col = (global_idx % (uniforms.N / ${u})) * ${u};\n    var index1 = global_idx / (uniforms.N / ${u});\n    let stride1 = uniforms.M / ${b};\n    let row = (index1 % stride1) * ${b};\n    let batch = index1 / stride1;\n\n    ${r.length===2?\"\":`let batch_indices = ${P.offsetToIndices(\"batch\")};`}\n    ${Ie(R,Ve)}\n    let a_offset = ${R.indicesToOffset(\"a_indices\")};\n    ${Ie(L,ee)}\n    let b_offset = ${L.indicesToOffset(\"b_indices\")};\n    var values: array<${V.type.value}, ${b}>;\n    for (var k: u32 = 0u; k < uniforms.K; k = k + ${g}) {\n      ${me()}\n    }\n    for (var i = 0u; i < ${b}u; i++) {\n      var value = values[i];\n      ${N}\n      ${Q}\n      let cur_indices = ${V.type.indices}(batch, row + i, col);\n      let offset = ${V.indicesToOffset(\"cur_indices\")};\n      ${V.setByOffset(`offset / ${u}`,\"value\")};\n    }\n  }\n  `};return{name:\"MatMulNaive\",shaderCache:{hint:`${t.activation};${u};${g};${b};${i}`,inputDependencies:w?[\"rank\",\"rank\",\"rank\"]:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil($/64)},programUniforms:S}),getShaderSource:E}},Sp=e=>{if(!e||e.length!==2)throw new Error(\"MatMul requires 2 inputs.\");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error(\"shared dimension does not match.\")},Hu=e=>{Sp(e.inputs);let t=zt.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error(\"Can't use matmul on the given tensors\");let r=t[t.length-1],n=e.inputs[0].dims[e.inputs[0].dims.length-1];r<8&&n<8?e.compute(po(e.inputs,{activation:\"\"},t)):e.compute(ii(e.inputs,{activation:\"\"},t))}});var oi,fo,Cp,Gu,ho,Ip,Tp,go,co=j(()=>{\"use strict\";xe();Wu();on();Vu();Zt();mo();Rr();oi=(e,t,r,n,i,s)=>{let a=e[0],d=e.slice(s?1:2,s?3:4),c=d.length,m=t[0],g=t.slice(2).map((w,x)=>w+(w-1)*(r[x]-1)),$=d.map((w,x)=>w+n[x]+n[x+c]).map((w,x)=>Math.floor((w-g[x]+i[x])/i[x]));return $.splice(0,0,a),$.splice(s?3:1,0,m),$},fo=[2,3,1,0],Cp=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support conv 1D and 2D\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],n=e[1].dims[1]*t.group;if(r!==n)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error(\"invalid bias\");let i=e[0].dims.length-2;if(t.dilations.length!==i)throw new Error(`dilations should be ${i}D`);if(t.strides.length!==i)throw new Error(`strides should be ${i}D`);if(t.pads.length!==i*2)throw new Error(`pads should be ${i*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\")},Gu=(e,t)=>{let r=e.kernelShape.slice();for(let s=2;s<t[1].dims.length;++s)r[s-2]===0&&(r[s-2]=t[1].dims[s]);let n=e.pads.slice();pr.adjustPadsBasedOnAutoPad(t[0].dims,e.strides,e.dilations,r,n,e.format===\"NHWC\",e.autoPad);let i=Object.assign({},e);return Object.assign(i,{kernelShape:r,pads:n}),i},ho=e=>{let t=ei(e),r=e.format,n=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],i=e.dilations,s=e.group,a=e.kernel_shape,d=e.pads,c=e.strides,m=e.w_is_const();return{autoPad:n,format:r,dilations:i,group:s,kernelShape:a,pads:d,strides:c,wIsConst:m,...t,cacheKey:`${e.format};${t.activation};`}},Ip=(e,t,r)=>{let n=Gu(r,t),i=r.format===\"NHWC\";if(r.group!==1){if(!e.adapterInfo.isArchitecture(\"ampere\")&&i&&t[1].dims[0]===r.group&&t[1].dims[1]===1&&r.dilations[0]===1&&r.dilations[1]===1){let L=oi(t[0].dims,t[1].dims,r.dilations,n.pads,r.strides,i),V=e.kernelCustomData.wT??e.compute(xt(t[1],fo),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=V);let Y=[t[0],V];t.length===3&&Y.push(t[2]),e.compute(Nu(Y,n,L),{inputs:Y})}else e.compute(lo(t,n));return}let s=t.length===3,a=t[0].dims[i?1:2],d=t[0].dims[i?2:3],c=t[0].dims[i?3:1],m=t[1].dims[2],u=t[1].dims[3],g=oi(t[0].dims,t[1].dims,r.dilations,n.pads,r.strides,i),b=g[i?1:2],$=g[i?2:3],w=g[i?3:1],x=i&&m===a&&u===d&&r.pads[0]===0&&r.pads[1]===0;if(x||m===1&&u===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let R=g[0],L,V,Y,Q=[];if(i){let se=e.kernelCustomData.wT??e.compute(xt(t[1],fo),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=se),x){let Ce=a*d*c;L=t[0].reshape([1,R,Ce]),V=se.reshape([1,Ce,w]),Y=[1,R,w]}else L=t[0].reshape([R,a*d,c]),V=se.reshape([1,c,w]),Y=[R,b*$,w];Q.push(L),Q.push(V)}else L=t[0].reshape([R,c,a*d]),V=t[1].reshape([1,w,c]),Y=[R,w,b*$],Q.push(V),Q.push(L);s&&Q.push(t[2]);let he=Y[2],N=Q[0].dims[Q[0].dims.length-1];he<8&&N<8?e.compute(po(Q,n,g,Y,i),{inputs:Q}):e.compute(ii(Q,n,g,Y,i),{inputs:Q});return}let C=!0,T=e.kernelCustomData.wT??e.compute(xt(t[1],fo),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=T);let S=[t[0],T];s&&S.push(t[2]);let E=i?b*$:w,k=i?w:b*$,P=m*u*c;e.compute(Uu(S,n,g,E,k,P,s,C),{inputs:S})},Tp=(e,t)=>{let r=t.format===\"NHWC\",n=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&n.push(e.inputs[2]);let i=[0,t.pads[0],0,t.pads[1]],s=[1].concat(t.strides),a=[1].concat(t.dilations),d=[1].concat(t.kernelShape),c=Gu({...t,pads:i,strides:s,dilations:a,kernelShape:d},n);e.compute(lo(n,c,m=>r?[m[0],m[2],m[3]]:[]))},go=(e,t)=>{Cp(e.inputs,t),e.inputs[0].dims.length===3?Tp(e,t):Ip(e,e.inputs,t)}});var Ap,Lu,Fu=j(()=>{\"use strict\";ye();Xt();_e();Zt();ri();uo();on();Ap=(e,t=!1,r,n,i=4)=>{let s=T=>{switch(T){case 1:return\"return w[getIndexFromCoords4D(coord, vec4<i32>(uniforms.w_shape))];\";case 4:return`\n            let coord1 = vec4<i32>(coordX, coordY, col + 1, rowInner);\n            let coord2 = vec4<i32>(coordX, coordY, col + 2, rowInner);\n            let coord3 = vec4<i32>(coordX, coordY, col + 3, rowInner);\n            let v0 = w[getIndexFromCoords4D(coord, vec4<i32>(uniforms.w_shape))];\n            let v1 = w[getIndexFromCoords4D(coord1, vec4<i32>(uniforms.w_shape))];\n            let v2 = w[getIndexFromCoords4D(coord2, vec4<i32>(uniforms.w_shape))];\n            let v3 = w[getIndexFromCoords4D(coord3, vec4<i32>(uniforms.w_shape))];\n            return ${n}(v0, v1, v2, v3);\n            `;default:throw new Error(`innerElementSize ${T} is not supported.`)}},a=e?`\n      let coord = vec4<i32>(batch, iXR, iXC, xCh);\n      `:`\n      let coord = vec4<i32>(batch, xCh, iXR, iXC);\n      `,d=e?`\n    let coords = vec4<i32>(\n      batch,\n      row / outWidth,\n      row % outWidth,\n      col);\n    `:`\n    let coords = vec4<i32>(\n      batch,\n      row,\n      col / outWidth,\n      col % outWidth);\n    `,c=e?\"i32(uniforms.x_shape[1])\":\"i32(uniforms.x_shape[2])\",m=e?\"i32(uniforms.x_shape[2])\":\"i32(uniforms.x_shape[3])\",u=e?\"row\":\"col\",g=e?\"col\":\"row\",b=`\n      let inChannels = ${e?\"i32(uniforms.x_shape[3])\":\"i32(uniforms.x_shape[1])\"};\n      let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n      let outRow = ${u} / outWidth;\n      let outCol = ${u} % outWidth;\n\n      let WRow = ${g} / (uniforms.filter_dims[1] * inChannels);\n      let WCol = ${g} / inChannels % uniforms.filter_dims[1];\n      let xR = f32(outRow - uniforms.pads[0] + uniforms.dilations[0] * WRow) / f32(uniforms.strides[0]);\n      let xC = f32(outCol - uniforms.pads[1] + uniforms.dilations[1] * WCol) / f32(uniforms.strides[1]);\n      if (xR < 0.0 || xR >= f32(${c}) || fract(xR) > 0.0) {\n        return ${n}(0.0);\n      }\n      if (xC < 0.0 || xC >= f32(${m}) || fract(xC) > 0.0) {\n        return ${n}(0.0);\n      }\n      let iXR = i32(xR);\n      let iXC = i32(xC);\n      let xCh = ${g} % inChannels;\n      ${a}\n      return x[getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape))/${i}];`,$=e?`\n      let col = colIn * ${i};\n      if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {\n        ${b}\n      }\n      return ${n}(0.0);`:`\n      let col = colIn * ${i};\n      if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {\n        ${b}\n      }\n      return ${n}(0.0);`,w=`\n      let col = colIn * ${i};\n      let inChannels = ${e?\"i32(uniforms.x_shape[3])\":\"i32(uniforms.x_shape[1])\"};\n      let coordX = uniforms.filter_dims[0] - 1 - row / (uniforms.filter_dims[1] * inChannels);\n      let coordY = uniforms.filter_dims[1] - 1 - (row / inChannels) % uniforms.filter_dims[1];\n      if (${e?\"row < uniforms.dim_inner && col < uniforms.dim_b_outer\":\"row < uniforms.dim_inner && col < uniforms.dim_a_outer\"}  && coordX >= 0 && coordY >= 0) {\n        let rowInner = row % inChannels;\n        let coord = vec4<i32>(coordX, coordY, col, rowInner);\n        ${s(i)}\n      }\n      return ${n}(0.0);\n      `,x=kt(r,n);return`\n  fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${n} {\n    ${e?$:w}\n  }\n\n  fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${n} {\n    ${e?w:$}\n  }\n\n  fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${n}) {\n    let col = colIn * ${i};\n    if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {\n      var value = valueInput;\n      let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\n      ${d}\n      ${ti(t)}\n      ${x}\n      result[getIndexFromCoords4D(coords, vec4<i32>(uniforms.result_shape))/${i}] = value;\n    }\n  }`},Lu=(e,t,r,n,i,s,a,d)=>{let c=t.format===\"NHWC\",m=c?e[0].dims[3]:e[0].dims[1],u=r[0],g=c?r[2]:r[3],b=c?r[1]:r[2],$=c?r[3]:r[1],w=c&&m%4===0&&m%3&&$%4===0,x=c?$:g*b,C=c?g*b:$,T=[8,8,1],S=n<=8?[4,1,1]:[4,4,1],E=[Math.ceil(x/T[0]/S[0]),Math.ceil(C/T[1]/S[1]),Math.ceil(u/T[2]/S[2])];Ne(\"verbose\",()=>`[conv_backprop_mm_webgpu] dispatch = ${E}`);let k=w?4:1,P=Math.max(T[0]*k,T[1]),R=w?4:1,L=[t.kernelShape[c?1:2],t.kernelShape[c?2:3]],V=[L[0]+(t.dilations[0]<=1?0:(L[0]-1)*(t.dilations[0]-1)),L[1]+(t.dilations[1]<=1?0:(L[1]-1)*(t.dilations[1]-1))],Y=[V[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),V[1]-1-Math.floor((t.pads[1]+t.pads[3])/2)],Q=[{type:6,data:n},{type:6,data:i},{type:6,data:s},{type:6,data:t.strides},{type:6,data:t.dilations},{type:6,data:L},{type:6,data:Y}];Ot(t,Q),Q.push(...X(e[0].dims,e[1].dims));let he=[\"rank\",\"rank\"];a&&(Q.push(...X(e[2].dims)),he.push(\"rank\")),Q.push(...X(r));let N=se=>{let Ce=U(\"x\",e[0].dataType,e[0].dims.length,R),Ve=U(\"w\",e[1].dataType,e[1].dims.length,1),ee=K(\"result\",e[0].dataType,r.length,R),ae=[Ce,Ve],Ie=\"\";if(a){let ue=U(\"bias\",e[2].dataType,e[2].dims.length,R);ae.push(ue),Ie+=`\n          fn getBiasByOutputCoords(coords : vec4<i32>) -> ${ue.type.value} {\n            return bias[coords.${c?\"w\":\"y\"}${w?\"/ 4\":\"\"}];\n          }`}let me=[{name:\"dim_a_outer\",type:\"i32\"},{name:\"dim_b_outer\",type:\"i32\"},{name:\"dim_inner\",type:\"i32\"},{name:\"strides\",type:\"i32\",length:2},{name:\"dilations\",type:\"i32\",length:2},{name:\"filter_dims\",type:\"i32\",length:L.length},{name:\"pads\",type:\"i32\",length:Y.length}];Pt(t,me);let oe=De(e[0].dataType,1);if(oe!==\"f16\"&&oe!==\"f32\")throw new Error(`elemType ${oe} is not supported.`);return`\n        ${ni(\"uniforms.result_strides\")}\n        ${se.registerUniforms(me).declareVariables(...ae,ee)};\n        ${Ie}\n        ${Ap(c,a,t,Ce.type.value,k)}\n        ${w?rn(S,T,oe,void 0,!c,P):nn(S,T,oe,void 0,!c,P,!1,void 0,d)}`};return{name:\"Conv2DTransposeMatMul\",shaderCache:{hint:`${t.cacheKey};${S};${T};${w}`,inputDependencies:he},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:Q}),getShaderSource:N}}});var Ep,yo,qu=j(()=>{\"use strict\";ye();Xt();xe();_e();Ep=(e,t,r,n,i,s=!1,a,d,c=!1)=>{let m=c?1:2,u=c?2:3,g=c?3:1,b=s?2:1,$=`\n  fn setOutputAtIndex(flatIndex : u32, value : ${s?`vec4<${a}>`:a}) {\n    result[flatIndex] = ${s?`vec4<${a}>`:a}(value);\n  }`;n&&($+=`\n    fn getBiasByOutputCoords(coords : vec4<u32>) -> ${s?`vec4<${a}>`:a} {\n      return bias[coords.${c?\"w\":\"y\"}${s?\"/ 4\":\"\"}];\n    }`);let w=s?4:1,x=U(\"W\",t[1].dataType,t[1].dims.length,w),C=U(\"Dy\",t[0].dataType,t[0].dims.length,w),T=[C,x];n&&T.push(U(\"bias\",t[2].dataType,[r[g]].length,w));let S=K(\"result\",t[0].dataType,r.length,w),E=`{\n        let batch: u32 = ${i?\"global_id.z\":\"workgroup_id.z\"} / uniforms.result_shape[1];\n        let r = ${i?\"global_id.z\":\"workgroup_id.z\"} % uniforms.result_shape[1];\n        let c = ${i?\"global_id.y\":\"workgroup_id.y\"} * ${b};\n        let d1: u32 = ${i?\"global_id.x\":\"workgroup_id.x\"} * 4;\n\n        let dyCorner = vec2<i32>(i32(r), i32(c)) - vec2<i32>(uniforms.pads);\n\n        // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n        // ? = to be determined. : = across all values in that axis.\n        var dotProd: array<vec4<${a}>, ${b}>;\n        for (var i = 0; i < ${b}; i++) {\n          dotProd[i] = vec4<${a}>(0.0);\n        }\n        for (var wR: u32 = 0; wR < uniforms.filter_dims[0]; wR = wR + 1) {\n          var dyR = (${a}(dyCorner.x) + ${a}(wR)) / ${a}(uniforms.strides.x);\n          let wRPerm = uniforms.filter_dims[0] - 1 - wR;\n          if (dyR < 0.0 || dyR >= ${a}(uniforms.Dy_shape[1]) ||\n              fract(dyR) > 0.0 || wRPerm < 0) {\n            continue;\n          }\n          let idyR: u32 = u32(dyR);\n\n          for (var wC: u32 = 0; wC < uniforms.filter_dims[1]; wC = wC + 1) {\n            let dyC = (${a}(dyCorner.y) + ${a}(wC)) / ${a}(uniforms.strides.y);\n            let dyC2 = (${a}(dyCorner.y) + 1.0 + ${a}(wC)) / ${a}(uniforms.strides.y);\n            let wCPerm = uniforms.filter_dims[1] - 1 - wC;\n            if (wCPerm < 0) {\n              continue;\n            }\n            var bDyCVal = true;\n            var bDyCVal2 = true;\n            if (dyC < 0.0 || dyC >= ${a}(uniforms.Dy_shape[2]) ||\n                fract(dyC) > 0.0) {\n              bDyCVal = false;\n            }\n            if (dyC2 < 0.0 || dyC2 >= ${a}(uniforms.Dy_shape[2]) ||\n                fract(dyC2) > 0.0) {\n              bDyCVal2 = false;\n            }\n\n            let idyC: u32 = u32(dyC);\n            let idyC2: u32 = u32(dyC2);\n            if (bDyCVal && bDyCVal2) {\n              let d2Length = uniforms.Dy_shape[3];\n              for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n                let wValue0 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\n                let wValue1 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\n                let wValue2 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\n                let wValue3 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\n\n                var xValue = ${C.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\n                let tmpval = vec4<${a}>(dot(xValue, wValue0),\n                                      dot(xValue, wValue1),\n                                      dot(xValue, wValue2),\n                                      dot(xValue, wValue3));\n                dotProd[0] = dotProd[0] + tmpval;\n\n                xValue =  ${C.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\n\n                dotProd[1] = dotProd[1] + vec4<${a}>(dot(xValue, wValue0),\n                                                    dot(xValue, wValue1),\n                                                    dot(xValue, wValue2),\n                                                    dot(xValue, wValue3));\n              }\n            } else if (bDyCVal) {\n              let d2Length = uniforms.Dy_shape[${g}];\n              for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n                let wValue0 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\n                let wValue1 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\n                let wValue2 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\n                let wValue3 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\n\n                var xValue = ${C.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\n                let tmpval = vec4<${a}>(dot(xValue, wValue0),\n                                      dot(xValue, wValue1),\n                                      dot(xValue, wValue2),\n                                      dot(xValue, wValue3));\n                dotProd[0] = dotProd[0] + tmpval;\n              }\n            } else if (bDyCVal2) {\n              let d2Length = uniforms.Dy_shape[3];\n              for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\n                let wValue0 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\n                let wValue1 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\n                let wValue2 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\n                let wValue3 = ${x.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\n\n                var xValue = ${C.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\n                let tmpval = vec4<${a}>(dot(xValue, wValue0),\n                                      dot(xValue, wValue1),\n                                      dot(xValue, wValue2),\n                                      dot(xValue, wValue3));\n                dotProd[1] = dotProd[1] + tmpval;\n              }\n            }\n          }\n        }\n\n        for (var i: u32 = 0; i < ${b}; i = i + 1) {\n          let value = dotProd[i] + ${n?\"bias[c+i]\":`vec4<${a}>(0.0)`};\n          ${S.set(\"batch\",\"r\",\"c + i\",\"d1\",\"value\")};\n        }\n      }`,k=`\n          let outputIndices = ${S.offsetToIndices(\"global_idx\")};\n          let batch = ${S.indicesGet(\"outputIndices\",0)};\n          let d1 = ${S.indicesGet(\"outputIndices\",g)};\n          let r = ${S.indicesGet(\"outputIndices\",m)};\n          let c = ${S.indicesGet(\"outputIndices\",u)};\n          let dyCorner = vec2<i32>(i32(r), i32(c)) - uniforms.pads;\n          let dyRCorner = dyCorner.x;\n          let dyCCorner = dyCorner.y;\n          let groupId = d1 / uniforms.output_channels_per_group;\n          let wOutChannel = d1 - groupId * uniforms.output_channels_per_group;\n          // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n          // ? = to be determined. : = across all values in that axis.\n          var dotProd = ${a}(0.0);\n          for (var wR: u32 = 0; wR < uniforms.effective_filter_dims.x; wR = wR + 1) {\n            if (wR % uniforms.dilations.x != 0) {\n              continue;\n            }\n            let dyR = (${a}(dyRCorner) + ${a}(wR)) / ${a}(uniforms.strides[0]);\n            let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x;\n            if (dyR < 0.0 || dyR >= ${a}(uniforms.Dy_shape[${m}]) || fract(dyR) > 0.0 ||\n                wRPerm < 0) {\n              continue;\n            }\n            let idyR: u32 = u32(dyR);\n\n            for (var wC: u32 = 0; wC < uniforms.effective_filter_dims.y; wC = wC + 1) {\n              if (wC % uniforms.dilations.y != 0) {\n                continue;\n              }\n              let dyC = (${a}(dyCCorner) + ${a}(wC)) / ${a}(uniforms.strides.y);\n              let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y;\n              if (dyC < 0.0 || dyC >= ${a}(uniforms.Dy_shape[${u}]) ||\n                  fract(dyC) > 0.0 || wCPerm < 0) {\n                continue;\n              }\n              let idyC: u32 = u32(dyC);\n              var inputChannel = groupId * uniforms.input_channels_per_group;\n              for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group; d2 = d2 + 1) {\n                let xValue = ${c?C.get(\"batch\",\"idyR\",\"idyC\",\"inputChannel\"):C.get(\"batch\",\"inputChannel\",\"idyR\",\"idyC\")};\n                let wValue = ${x.get(\"inputChannel\",\"wOutChannel\",\"u32(wRPerm)\",\"u32(wCPerm)\")};\n                dotProd = dotProd + xValue * wValue;\n                inputChannel = inputChannel + 1;\n              }\n            }\n          }\n          let value = dotProd + ${n?\"bias[d1]\":`${a}(0.0)`};\n          ${S.setByOffset(\"global_idx\",\"value\")};\n        `;return`\n  ${e.registerUniforms(d).declareVariables(...T,S)}\n  ${$}\n\n    ${e.mainStart()}\n    ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")};\n  ${s?E:k}}`},yo=(e,t,r)=>{let n=e.length>2,i=t.outputShape,s=M.size(i),a=[Math.ceil(s/64),1,1];Ne(\"verbose\",()=>`[conv2d_backprop_webgpu] dispatch = ${a}`);let d=t.format===\"NHWC\",c=[\"rank\",\"rank\"],m=[t.strides[0],t.strides[1]],u=[t.kernelShape[d?1:2],t.kernelShape[d?2:3]],g=[t.dilations[0],t.dilations[1]],b=[u[0]+(t.dilations[0]<=1?0:(t.kernelShape[d?1:2]-1)*(t.dilations[0]-1)),u[1]+(t.dilations[1]<=1?0:(t.kernelShape[d?2:3]-1)*(t.dilations[1]-1))],$=[b[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),b[1]-1-Math.floor(t.pads[1]+t.pads[3])/2],w=!1,x=t.group,C=e[1].dims,T=C[0]/x,S=C[1],E=[{type:12,data:s},{type:12,data:m},{type:12,data:u},{type:12,data:g},{type:12,data:b},{type:6,data:$},{type:12,data:T},{type:12,data:S},...X(e[0].dims,e[1].dims)];n&&(E.push(...X(e[2].dims)),c.push(\"rank\")),E.push(...X(i));let k=a[1]===1&&a[2]===1,P=R=>{let L=[{name:\"output_size\",type:\"u32\"},{name:\"strides\",type:\"u32\",length:m.length},{name:\"filter_dims\",type:\"u32\",length:u.length},{name:\"dilations\",type:\"u32\",length:u.length},{name:\"effective_filter_dims\",type:\"u32\",length:b.length},{name:\"pads\",type:\"i32\",length:$.length},{name:\"input_channels_per_group\",type:\"u32\"},{name:\"output_channels_per_group\",type:\"u32\"}],V=De(e[0].dataType);return`${Ep(R,e,i,n,k,w,V,L,d)}`};return{name:\"ConvTranspose2D\",shaderCache:{hint:`${t.cacheKey};`,inputDependencies:c},getRunData:()=>({dispatchGroup:{x:a[0],y:a[1],z:a[2]},outputs:[{dims:r?r(i):i,dataType:e[0].dataType}],programUniforms:E}),getShaderSource:P}}});var kp,Op,Pp,ju,Ku,Rp,zp,Bp,Dp,Yu,Xu=j(()=>{\"use strict\";Fu();qu();Zt();Rr();kp=(e,t,r,n,i,s)=>(e-1)*t+r+(n-1)*i+1-s,Op=(e,t,r,n,i)=>{let s=Math.floor(e/2);t===\"SAME_UPPER\"?(r[n]=s,r[i]=e-s):t===\"SAME_LOWER\"&&(r[n]=e-s,r[i]=s)},Pp=(e,t,r,n,i,s,a,d,c,m)=>{let u=e.length-2,g=m.length===0;if(c.length===0)for(let w=0;w<u;++w)c.push(0);let b=e[0],$=t[d?3:1]*i;for(let w=0,x=e.length-u-(d?1:0);w<u;++w,++x){let C=e[x],T=g?C*a[w]:m[w],S=kp(C,a[w],s[w],t[x],r[w],T);Op(S,n,s,w,w+u),g&&m.push(a[w]*(C-1)+c[w]+(t[x]-1)*r[w]+1-s[w]-s[w+u])}m.splice(0,0,b),m.splice(d?3:1,0,$)},ju=(e,t)=>{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((g,b)=>g*b,1)===0){r.length=0;for(let g=2;g<t[1].dims.length;++g)r.push(t[1].dims[g])}let n=e.format===\"NHWC\";r.splice(0,0,t[1].dims[0]),r.splice(n?3:1,0,t[1].dims[1]);let i=e.pads.slice(),s=e.outputShape.slice(),a=e.outputPadding.slice(),d=t[0].dims,c=e.dilations.slice();if(c.reduce((g,b)=>g+b,0)===0){let g=t[0].dims.length-2;c=new Array(g).fill(1)}let m=e.strides.slice();if(m.reduce((g,b)=>g+b,0)===0){let g=t[0].dims.length-2;m=new Array(g).fill(1)}Pp(d,r,c,e.autoPad,e.group,i,m,n,a,s);let u=Object.assign({},e);return Object.assign(u,{kernelShape:r,pads:i,outputPadding:a,outputShape:s,dilations:c,strides:m}),u},Ku=e=>{let t=ei(e),r=e.format,n=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][typeof e.autoPad>\"u\"?0:e.autoPad],i=e.dilations,s=e.group,a=e.kernelShape,d=e.pads,c=e.strides,m=e.wIsConst(),u=e.outputPadding,g=e.outputShape;return{autoPad:n,format:r,dilations:i,group:s,kernelShape:a,outputPadding:u,outputShape:g,pads:d,strides:c,wIsConst:m,...t,cacheKey:`${e.format};${t.activation};`}},Rp=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support 2-dimensional conv\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],n=e[1].dims[0];if(r!==n)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");let i=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==i))throw new Error(\"invalid bias\");let s=e[0].dims.length-2;if(t.dilations.reduce((u,g)=>u+g,0)>0&&t.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(t.strides.reduce((u,g)=>u+g,0)>0&&t.strides.length!==s)throw new Error(`strides should be ${s}D`);if(t.pads.reduce((u,g)=>u+g,0)>0&&t.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(t.outputPadding.length!==s&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${s}D`);if(t.kernelShape.reduce((u,g)=>u+g,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error(\"invalid output shape\")},zp=[2,3,1,0],Bp=(e,t,r)=>{let n=ju(r,t),i=r.format===\"NHWC\",s=n.outputShape,a=s[i?3:1],d=t[0].dims[i?3:1];if(n.group!==1||a===1&&d===1){e.compute(yo(t,n));return}let c=s[i?1:2],m=s[i?2:3],u=t[1].dims[2],g=t[1].dims[3],b=i?c*m:a,$=i?a:c*m,w=u*g*d,x=!0,C=e.kernelCustomData.wT??e.compute(xt(t[1],zp),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=C);let T=[t[0],C],S=t.length===3;S&&(!i&&t[2].dims.length===1?T.push(t[2].reshape([t[2].dims[0],1,1])):T.push(t[2])),e.compute(Lu(T,n,s,b,$,w,S,x),{inputs:T})},Dp=(e,t)=>{let r=t.format===\"NHWC\",n=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&n.push(e.inputs[2]);let i=t.kernelShape;(i.length===0||i[0]===0)&&(i=[e.inputs[1].dims[2]]);let s=t.dilations;(s.length===0||s[0]===0)&&(s=[1]);let a=t.strides;(a.length===0||a[0]===0)&&(a=[1]);let d=t.pads;d.length===0&&(d=[0,0]),d=[0,d[0],0,d[1]],a=[1].concat(a),s=[1].concat(s),i=[1].concat(i);let c=ju({...t,pads:d,strides:a,dilations:s,kernelShape:i},n);e.compute(yo(n,c,m=>r?[m[0],m[2],m[3]]:[m[0],m[1],m[3]]))},Yu=(e,t)=>{Rp(e.inputs,t),e.inputs[0].dims.length===3?Dp(e,t):Bp(e,e.inputs,t)}});var Mp,Zu,Qu,Ju=j(()=>{\"use strict\";ye();xe();Ze();_e();Mp=(e,t,r,n)=>{let i=M.size(t),s=t.length,a=U(\"input\",e,s),d=K(\"output\",e,s),c=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),m=M.normalizeAxis(c,s),u=g=>{let b=` i32(${a.indicesGet(\"inputIndices\",\"uniforms.axis\")}) `,$=fe(\"uniforms.input_shape\",\"uniforms.axis\",s),w=n.reverse?b+(n.exclusive?\" + 1\":\"\"):\"0\",x=n.reverse?$:b+(n.exclusive?\"\":\" + 1\");return`\n                ${g.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axis\",\"u32\").declareVariables(a,d)}\n                ${g.mainStart()}\n                  ${g.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n                  var inputIndices = ${d.offsetToIndices(\"global_idx\")};\n                  var sum = ${d.type.value}(0);\n                  let first : i32 = ${w};\n                  let last : i32 = ${x};\n                  for (var i : i32 = first; i < last; i++) {\n                    ${a.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(i)\")};\n                    sum = sum + ${a.getByIndices(\"inputIndices\")};\n                  }\n                  ${d.setByOffset(\"global_idx\",\"sum\")};\n                }`};return{name:\"CumSum\",shaderCache:{hint:n.cacheKey,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:[{type:12,data:i},{type:12,data:m},...X(t,t)]}),getShaderSource:u}},Zu=(e,t)=>{let r=e.inputs[0].dims,n=e.inputs[0].dataType,i=e.inputs[1];e.compute(Mp(n,r,i,t),{inputs:[0]})},Qu=e=>{let t=e.exclusive===1,r=e.reverse===1;return we({exclusive:t,reverse:r})}});var Up,Wp,Np,el,tl,rl=j(()=>{\"use strict\";ye();xe();Ze();_e();Up=e=>{if(!e||e.length!==1)throw new Error(\"DepthToSpace requires 1 input.\");if(e[0].dims.length!==4)throw new Error(\"DepthToSpace requires 4D input.\")},Wp=(e,t,r,n)=>{let i=[];i.push(`fn perm(i: ${n.type.indices}) -> ${r.type.indices} {\n    var a: ${r.type.indices};`);for(let s=0;s<t;++s)i.push(r.indicesSet(\"a\",e[s],`i[${s}]`));return i.push(\"return a;}\"),i.join(`\n`)},Np=(e,t)=>{let r,n,i,s,a,d,c=t.format===\"NHWC\",m=t.blocksize,u=t.mode===\"DCR\";c?([r,n,i,s]=e.dims,a=u?[r,n,i,m,m,s/m**2]:[r,n,i,s/m**2,m,m],d=u?[0,1,3,2,4,5]:[0,1,4,2,5,3]):([r,n,i,s]=[e.dims[0],e.dims[2],e.dims[3],e.dims[1]],a=u?[r,m,m,s/m**2,n,i]:[r,s/m**2,m,m,n,i],d=u?[0,3,4,1,5,2]:[0,1,4,2,5,3]);let g=e.reshape(a),b=g.dims.length,$=e.dataType,w=U(\"a\",$,b),x=K(\"output\",$,b),C=T=>`\n  ${T.registerUniform(\"output_size\",\"u32\").declareVariables(w,x)}\n\n  ${Wp(d,b,w,x)}\n\n  ${T.mainStart()}\n    ${T.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n    let indices = ${x.offsetToIndices(\"global_idx\")};\n    let aIndices = perm(indices);\n\n    ${x.setByOffset(\"global_idx\",w.getByIndices(\"aIndices\"))}\n  }`;return{name:\"DepthToSpace\",shaderCache:{hint:`${e.dims};${t.blocksize};${t.mode}`,inputDependencies:[\"rank\"]},getRunData:T=>{let S=c?[r,n*m,i*m,s/m**2]:[r,s/m**2,n*m,i*m],E=M.size(S),k=g.dims,P=M.sortBasedOnPerm(k,d);return{outputs:[{dims:S,dataType:T[0].dataType}],dispatchGroup:{x:Math.ceil(E/64)},programUniforms:[{type:12,data:E},...X(k,P)]}},getShaderSource:C}},el=(e,t)=>{Up(e.inputs),e.compute(Np(e.inputs[0],t))},tl=e=>we({blocksize:e.blocksize,mode:e.mode,format:e.format})});var bo,ai,nl,Vp,Hp,vo,wo,il,Gp,ol,al,sl=j(()=>{\"use strict\";ye();xe();Ze();_e();bo=\"[a-zA-Z]|\\\\.\\\\.\\\\.\",ai=\"(\"+bo+\")+\",nl=\"^\"+ai+\"$\",Vp=\"(\"+ai+\",)*\"+ai,Hp=\"^\"+Vp+\"$\",vo=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let n=this.symbolToIndices.get(t);n===void 0?n=[r]:n.push(r),this.symbolToIndices.set(t,n)}},wo=class{constructor(t,r){this.equation=r;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[n,i]=r.includes(\"->\")?r.split(\"->\",2):[r,\"\"];if(!n.match(RegExp(Hp)))throw new Error(\"Invalid LHS term\");if(n.split(\",\").forEach((d,c)=>{let m=t[c].dims.slice();if(!d.match(RegExp(nl)))throw new Error(\"Invalid LHS term\");let u=this.processTerm(d,!0,m,c);this.lhs.push(u)}),i===\"\")i+=[...this.symbolToInfo.entries()].filter(([d,c])=>c.count===1||d===\"...\").map(([d])=>d).join(\"\");else if(!i.match(RegExp(ai)))throw new Error(\"Invalid RHS\");i.match(RegExp(bo,\"g\"))?.forEach(d=>{if(d===\"...\")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let c=this.symbolToInfo.get(d);if(c===void 0)throw new Error(\"Invalid RHS symbol\");this.outputDims.push(c.dimValue)}}),this.rhs=this.processTerm(i,!1,this.outputDims)}addSymbol(t,r,n){let i=this.symbolToInfo.get(t);if(i!==void 0){if(i.dimValue!==r&&i.count!==1)throw new Error(\"Dimension mismatch\");i.count++,i.inputIndices.push(n)}else i={count:1,dimValue:r,inputIndices:[n]};this.symbolToInfo.set(t,i)}processTerm(t,r,n,i=-1){let s=n.length,a=!1,d=[],c=0;if(!t.match(RegExp(nl))&&!r&&t!==\"\")throw new Error(\"Invalid LHS term\");let m=t.match(RegExp(bo,\"g\")),u=new vo(i);return m?.forEach((g,b)=>{if(g===\"...\"){if(a)throw new Error(\"Only one ellipsis is allowed per input term\");a=!0;let $=s-m.length+1;if($<0)throw new Error(\"Ellipsis out of bounds\");if(d=n.slice(c,c+$),this.hasEllipsis){if(this.ellipsisDims.length!==d.length||this.ellipsisDims.toString()!==d.toString())throw new Error(\"Ellipsis dimensions mismatch\")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=d;else throw new Error(\"Ellipsis must be specified in the LHS\");for(let w=0;w<d.length;w++){let x=String.fromCharCode(\"0\".charCodeAt(0)+w);u.addSymbol(x,b+w),this.addSymbol(x,n[c++],i)}}else u.addSymbol(g,b+(this.hasEllipsis?this.ellipsisDims.length-1:0)),this.addSymbol(g,n[c++],i)}),u}},il=e=>e+\"_max\",Gp=(e,t,r,n)=>{let s=e.map(u=>u.length).map((u,g)=>U(`input${g}`,t,u)),a=M.size(n),d=K(\"output\",t,n.length),c=[...r.symbolToInfo.keys()].filter(u=>!r.rhs.symbolToIndices.has(u)),m=u=>{let g=[],b=\"var prod = 1.0;\",$=\"var sum = 0.0;\",w=\"sum += prod;\",x=[],C=[],T=[],S=[],E=r.symbolToInfo.size===r.rhs.symbolToIndices.size;r.symbolToInfo.forEach((P,R)=>{if(r.rhs.symbolToIndices.has(R)){let L=r.rhs.symbolToIndices.get(R)?.[0];L!==void 0&&r.lhs.forEach((V,Y)=>{if(P.inputIndices.includes(Y)){let Q=V.symbolToIndices.get(R);if(Q===void 0)throw new Error(\"Invalid symbol error\");Q.forEach(he=>{g.push(`${s[Y].indicesSet(`input${Y}Indices`,he,d.indicesGet(\"outputIndices\",L))}`)})}})}else r.lhs.forEach((L,V)=>{if(P.inputIndices.includes(V)){let Y=L.symbolToIndices.get(R);if(Y===void 0)throw new Error(\"Invalid symbol error\");Y.forEach(Q=>{x.push(`${s[V].indicesSet(`input${V}Indices`,Q,`${R}`)}`)}),S.push(`prod *= ${s[V].getByIndices(`input${V}Indices`)};`)}}),C.push(`for(var ${R}: u32 = 0; ${R} < uniforms.${il(R)}; ${R}++) {`),T.push(\"}\")});let k=E?[...g,`let sum = ${s.map((P,R)=>P.getByIndices(`input${R}Indices`)).join(\" * \")};`]:[...g,$,...C,...x,b,...S,w,...T];return`\n            ${u.registerUniforms(c.map(P=>({name:`${il(P)}`,type:\"u32\"}))).registerUniform(\"outputSize\",\"u32\").declareVariables(...s,d)}\n\n            ${u.mainStart()}\n            ${u.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n            var outputIndices = ${d.offsetToIndices(\"global_idx\")};\n            ${s.map((P,R)=>`var input${R}Indices: ${s[R].type.indices};`).join(`\n`)}\n            ${k.join(`\n`)};\n            ${d.setByOffset(\"global_idx\",\"sum\")};\n          }`};return{name:\"Einsum\",shaderCache:{hint:r.equation,inputDependencies:e.map(()=>\"rank\")},getRunData:()=>{let u=c.filter(b=>r.symbolToInfo.has(b)).map(b=>({type:12,data:r.symbolToInfo.get(b)?.dimValue||0}));u.push({type:12,data:a});let g=e.map((b,$)=>[...X(b)]).reduce((b,$)=>b.concat($),u);return g.push(...X(n)),{outputs:[{dims:n,dataType:t}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:g}},getShaderSource:m}},ol=(e,t)=>{let r=new wo(e.inputs,t.equation),n=r.outputDims,i=e.inputs.map((s,a)=>s.dims);e.compute(Gp(i,e.inputs[0].dataType,r,n))},al=e=>{let t=e.equation.replace(/\\s+/g,\"\");return we({equation:t})}});var Lp,ul,Fp,qp,ll,dl=j(()=>{\"use strict\";ye();xe();_e();Lp=e=>{if(!e||e.length!==2)throw new Error(\"Expand requires 2 input.\");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),n=r.length<t.length?0:r.length-t.length,i=t.length<r.length?0:t.length-r.length;for(;n<r.length&&i<t.length;++n,++i)if(r[n]!==t[i]&&r[n]!==1&&t[i]!==1)throw new Error(\"Expand requires shape to be broadcastable to input\")},ul=(e,t)=>{let r=e.length-t.length,n=[];for(let i=0;i<r;++i)n.push(e[i]);for(let i=0;i<t.length;++i)n.push(t[i]===1?e[i+r]:t[i]);return n},Fp=(e,t)=>e.length>t.length?ul(e,t):ul(t,e),qp=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),n=Fp(t,r),i=e[0].dataType,s=i===9?4:1,a=Math.ceil(M.size(n)/s),d=m=>{let u=U(\"input\",i,t.length,s),g=K(\"output\",i,n.length,s),b;if(i===9){let $=(w,x,C=\"\")=>`\n          let outputIndices${x} = ${g.offsetToIndices(`outputOffset + ${x}u`)};\n          let offset${x} = ${u.broadcastedIndicesToOffset(`outputIndices${x}`,g)};\n          let index${x} = offset${x} / 4u;\n          let component${x} = offset${x} % 4u;\n          ${w}[${x}] = ${C}(${u.getByOffset(`index${x}`)}[component${x}]);\n        `;b=`\n        let outputOffset = global_idx * ${s};\n        var data = vec4<u32>(0);\n        ${$(\"data\",0,\"u32\")}\n        ${$(\"data\",1,\"u32\")}\n        ${$(\"data\",2,\"u32\")}\n        ${$(\"data\",3,\"u32\")}\n        ${g.setByOffset(\"global_idx\",\"data\")}\n      }`}else b=`\n        let outputIndices = ${g.offsetToIndices(\"global_idx\")};\n        let inputOffset = ${u.broadcastedIndicesToOffset(\"outputIndices\",g)};\n        ${g.setByOffset(\"global_idx\",u.getByOffset(\"inputOffset\"))}\n      }`;return`\n    ${m.registerUniform(\"vec_size\",\"u32\").declareVariables(u,g)}\n    ${m.mainStart()}\n    ${m.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n    ${b}`},c=[{type:12,data:a},...X(t,n)];return{name:\"Expand\",shaderCache:{hint:`${n.length}`,inputDependencies:[\"rank\"]},getShaderSource:d,getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:c})}},ll=e=>{Lp(e.inputs),e.compute(qp(e.inputs),{inputs:[0]})}});var jp,cl,pl=j(()=>{\"use strict\";ye();xe();_e();Jn();jp=e=>{let t=e[0].dataType,r=M.size(e[0].dims),n=M.size(e[1].dims),i=n%4===0,s=a=>{let d=U(\"x\",t,[1],4),c=U(\"bias\",t,[1],4),m=K(\"y\",t,[1],4),u=[{name:\"output_vec_size\",type:\"u32\"},{name:\"bias_size\",type:\"u32\"}],g=$=>`\n      let bias${$}_offset: u32 = (global_idx * 4 + ${$}) % uniforms.bias_size;\n      let bias${$} = ${c.getByOffset(`bias${$}_offset / 4`)}[bias${$}_offset % 4];`,b=i?`\n      let bias = ${c.getByOffset(\"global_idx % (uniforms.bias_size / 4)\")};`:`${g(0)}${g(1)}${g(2)}${g(3)}\n      let bias = ${d.type.value}(bias0, bias1, bias2, bias3);`;return`${a.registerUniforms(u).declareVariables(d,c,m)}\n\n    ${ao(rt(t))}\n\n    ${a.mainStart(mr)}\n      ${a.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_vec_size\")}\n\n      let x = ${d.getByOffset(\"global_idx\")};\n      ${b}\n      let x_in = x + bias;\n      ${m.setByOffset(\"global_idx\",so(\"x_in\"))}\n    }`};return{name:\"FastGeluWithBias\",shaderCache:{hint:`${i}`,inputDependencies:[\"type\",\"type\"]},getShaderSource:s,getRunData:a=>({outputs:[{dims:a[0].dims,dataType:a[0].dataType}],programUniforms:[{type:12,data:Math.ceil(r/4)},{type:12,data:n}],dispatchGroup:{x:Math.ceil(r/mr/4)}})}},cl=e=>{e.inputs.length<2||M.size(e.inputs[1].dims)===0?wu(e):e.compute(jp(e.inputs))}});var Kp,Yp,ml,fl,hl=j(()=>{\"use strict\";ye();xe();Ze();_e();Kp=e=>{if(!e||e.length!==2)throw new Error(\"Gather requires 2 inputs.\")},Yp=(e,t)=>{let r=e[0].dims,n=e[1].dims,i=r.length,s=M.normalizeAxis(t.axis,i),a=r.slice(0);a.splice(s,1,...n);let d=r[s],c=e[0].dataType===9?4:1,m=Math.ceil(M.size(a)/c),u=[{type:12,data:m},{type:6,data:d},{type:12,data:s},...X(e[0].dims,e[1].dims,a)],g=b=>{let $=U(\"data\",e[0].dataType,e[0].dims.length,c),w=U(\"inputIndices\",e[1].dataType,e[1].dims.length),x=K(\"output\",e[0].dataType,a.length,c),C=S=>{let E=n.length,k=`var indicesIndices${S}  = ${w.type.indices}(0);`;for(let P=0;P<E;P++)k+=`${E>1?`indicesIndices${S}[${P}]`:`indicesIndices${S}`} = ${a.length>1?`outputIndices${S}[uniforms.axis + ${P}]`:`outputIndices${S}`};`;k+=`\n          var idx${S} = ${w.getByIndices(`indicesIndices${S}`)};\n          if (idx${S} < 0) {\n            idx${S} = idx${S} + uniforms.axisDimLimit;\n          }\n          var dataIndices${S} : ${$.type.indices};\n        `;for(let P=0,R=0;P<i;P++)P===s?(k+=`${i>1?`dataIndices${S}[${P}]`:`dataIndices${S}`} = u32(idx${S});`,R+=E):(k+=`${i>1?`dataIndices${S}[${P}]`:`dataIndices${S}`} = ${a.length>1?`outputIndices${S}[${R}]`:`outputIndices${S}`};`,R++);return k},T;if(e[0].dataType===9){let S=(E,k,P=\"\")=>`\n          let outputIndices${k} = ${x.offsetToIndices(`outputOffset + ${k}u`)};\n          ${C(k)};\n          let offset${k} = ${$.indicesToOffset(`dataIndices${k}`)};\n          let index${k} = offset${k} / 4u;\n          let component${k} = offset${k} % 4u;\n          ${E}[${k}] = ${P}(${$.getByOffset(`index${k}`)}[component${k}]);\n        `;T=`\n        let outputOffset = global_idx * ${c};\n        var value = vec4<u32>(0);\n        ${S(\"value\",0,\"u32\")}\n        ${S(\"value\",1,\"u32\")}\n        ${S(\"value\",2,\"u32\")}\n        ${S(\"value\",3,\"u32\")}\n        ${x.setByOffset(\"global_idx\",\"value\")}\n      `}else T=`\n      let outputIndices = ${x.offsetToIndices(\"global_idx\")};\n      ${C(\"\")};\n      let value = ${$.getByIndices(\"dataIndices\")};\n      ${x.setByOffset(\"global_idx\",\"value\")};\n      `;return`\n      ${b.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables($,w,x)}\n      ${b.mainStart()}\n        ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n        ${T}\n      }`};return{name:\"Gather\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:u}),getShaderSource:g}},ml=e=>we({axis:e.axis}),fl=(e,t)=>{let r=e.inputs;Kp(r),e.compute(Yp(e.inputs,t))}});var Xp,Zp,gl,yl,bl=j(()=>{\"use strict\";ye();xe();Ze();_e();Xp=e=>{if(!e||e.length!==2)throw new Error(\"GatherElements requires 2 inputs.\");if(e[0].dims.length<1)throw new Error(\"GatherElements requires that the data input be rank >= 1.\");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and\n                     indices input tensors be of same rank.`)},Zp=(e,t)=>{let r=e[0].dims,n=e[0].dataType,i=r.length,s=e[1].dims,a=e[1].dataType,d=M.normalizeAxis(t.axis,i),c=r[d],m=s.slice(0),u=M.size(m),g=U(\"input\",n,i),b=U(\"indicesInput\",a,s.length),$=K(\"output\",n,m.length),w=[{type:12,data:u},{type:6,data:c},{type:12,data:d}];return w.push(...X(r,s,m)),{name:\"GatherElements\",shaderCache:{inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:m,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:w}),getShaderSource:T=>`\n      ${T.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(g,b,$)}\n      ${T.mainStart()}\n      ${T.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n\n      let outputIndices = ${$.offsetToIndices(\"global_idx\")};\n\n      var idx = ${b.getByOffset(\"global_idx\")};\n      if (idx < 0) {\n        idx = idx + uniforms.axisDimLimit;\n      }\n      var inputIndices = ${g.type.indices}(outputIndices);\n      ${g.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(idx)\")};\n      let value = ${g.getByIndices(\"inputIndices\")};\n\n      ${$.setByOffset(\"global_idx\",\"value\")};\n  }`}},gl=e=>we({axis:e.axis}),yl=(e,t)=>{let r=e.inputs;Xp(r),e.compute(Zp(e.inputs,t))}});var Qp,Jp,vl,wl,$l=j(()=>{\"use strict\";ye();xe();_e();Qp=e=>{if(!e)throw new Error(\"Input is missing\");if(e.length<2||e.length>3)throw new Error(\"Invaid input number.\");if(e.length===3&&e[2].dims.length>2)throw new Error(\"Invalid input shape of C\");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error(\"Input types are mismatched\")},Jp=(e,t)=>{let r=e[0].dims.slice(),n=e[1].dims.slice(),[i,s,a]=Gn.getShapeOfGemmResult(r,t.transA,n,t.transB,e.length===3?e[2].dims:void 0),d=[i,s];if(!d)throw new Error(\"Can't use gemm on the given tensors\");let c=M.size(d),m=[{type:12,data:c},{type:12,data:i},{type:12,data:s},{type:12,data:a},{type:1,data:t.alpha},{type:1,data:t.beta}],u=[\"type\",\"type\"];e.length===3&&(m.push(...X(e[2].dims)),u.push(\"rank\")),m.push(...X(d));let g=b=>{let $=\"\";t.transA&&t.transB?$=\"value += a[k * uniforms.M + m] * b[n * uniforms.K + k];\":t.transA&&!t.transB?$=\"value += a[k * uniforms.M + m] * b[k * uniforms.N + n];\":!t.transA&&t.transB?$=\"value += a[m * uniforms.K + k] * b[n * uniforms.K + k];\":!t.transA&&!t.transB&&($=\"value += a[m * uniforms.K + k] * b[k * uniforms.N + n];\");let w=t.alpha===1?\"\":\"value *= uniforms.alpha;\",x=U(\"a\",e[0].dataType,e[0].dims),C=U(\"b\",e[1].dataType,e[1].dims),T=x.type.value,S=null,E=[x,C];e.length===3&&(S=U(\"c\",e[2].dataType,e[2].dims.length),E.push(S));let k=K(\"output\",e[0].dataType,d.length);E.push(k);let P=[{name:\"output_size\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}];return`\n  ${b.registerUniforms(P).declareVariables(...E)}\n\n  ${b.mainStart()}\n    ${b.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n    let m = global_idx / uniforms.N;\n    let n = global_idx % uniforms.N;\n\n    var value = ${T}(0);\n    for (var k: u32 = 0u; k < uniforms.K; k++) {\n      ${$}\n    }\n\n    ${w}\n    ${(()=>S!=null?`let cOffset = ${S.broadcastedIndicesToOffset(\"vec2(m, n)\",k)}; value += ${T}(uniforms.beta) * ${S.getByOffset(\"cOffset\")};`:\"\")()}\n    output[global_idx] = value;\n  }`};return{name:\"Gemm\",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:d,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:m}),getShaderSource:g}},vl=e=>{let t=e.transA,r=e.transB,n=e.alpha,i=e.beta;return{transA:t,transB:r,alpha:n,beta:i,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},wl=(e,t)=>{Qp(e.inputs),e.compute(Jp(e.inputs,t))}});var em,tm,rm,_l,xl=j(()=>{\"use strict\";ye();xe();_e();em=(e,t)=>{let r=e[0].dims,n=r,i=2,s=M.sizeToDimension(r,i),a=M.sizeFromDimension(r,i),d=Ue(a),c=a/d,m=[r[0],r[1],c],u=[\"rank\",\"type\",\"type\"],g=[{type:12,data:a},{type:12,data:c}];g.push(...X(m,m));let b=$=>{let w=U(\"x\",e[0].dataType,m.length,d),x=U(\"scale\",e[1].dataType,e[1].dims),C=U(\"bias\",e[2].dataType,e[2].dims),T=K(\"output\",e[0].dataType,m.length,d),S=[w,x,C,T],E=w.type.value,k=d===1?\"f32\":`vec${d}<f32>`,P=64,R=[{name:\"normSize\",type:\"u32\"},{name:\"normPackedSize\",type:\"u32\"}];return`\n  var<workgroup> meanShared : f32;\n  var<workgroup> squaredNormShared : f32;\n  var<workgroup> workgroupShared : array<${k}, ${P}>;\n  const workgroupSize = ${P}u;\n  ${$.registerUniforms(R).declareVariables(...S)}\n  ${$.mainStart(P)}\n    let norm = global_idx / workgroupSize;\n    let batch = norm / uniforms.x_shape[1];\n    let channel = norm % uniforms.x_shape[1];\n    let localIndex = local_id.x;\n\n    // initialize workgroup memory\n    var initial = ${k}(0);\n    for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n      initial = initial + ${k}(${w.get(\"batch\",\"channel\",\"h\")});\n    }\n    workgroupShared[localIndex] = initial;\n    workgroupBarrier();\n\n    // Calculate the mean of current channel data.\n    for (var currSize = workgroupSize >> 1;  currSize > 0; currSize = currSize >> 1) {\n      if (localIndex < currSize) {\n        workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n      }\n      workgroupBarrier();\n    }\n    if (localIndex == 0) {\n      meanShared = ${Et(\"workgroupShared[0]\",d)} / f32(uniforms.normSize);\n    }\n    workgroupBarrier();\n\n    // reinitialize workgroup memory.\n    initial = ${k}(0);\n    for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n      let deviation =  ${k}(${w.get(\"batch\",\"channel\",\"h\")}) - ${k}(meanShared);\n      initial = initial + deviation * deviation;\n    }\n    workgroupShared[localIndex] = initial;\n    workgroupBarrier();\n\n    // Calculate the sum of square of deviation of current channel data.\n    for (var currSize = workgroupSize >> 1;  currSize > 0; currSize = currSize >> 1) {\n      if (localIndex < currSize) {\n        workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\n      }\n      workgroupBarrier();\n    }\n    if (localIndex == 0) {\n      squaredNormShared = ${Et(\"workgroupShared[0]\",d)};\n    }\n    workgroupBarrier();\n\n    let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\n    let channelScale = invStdDev * f32(${x.getByOffset(\"channel\")});\n    let channelShift = f32(${C.getByOffset(\"channel\")}) - meanShared * channelScale;\n    for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\n      let value = ${w.get(\"batch\",\"channel\",\"h\")} * ${E}(${k}(channelScale)) + ${E}(${k}(channelShift));\n      ${T.set(\"batch\",\"channel\",\"h\",\"value\")};\n    }\n  }`};return{name:\"InstanceNormalization\",shaderCache:{hint:`${t.epsilon};${d}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:s},programUniforms:g}),getShaderSource:b}},tm=(e,t,r,n,i,s,a,d)=>{let c=Ue(a),m=64,u=c===1?\"vec2f\":`mat2x${c}f`,g=c===1?\"f32\":`vec${c}f`,b=(R,L)=>`${u}(${R}, ${L})`,$=i*a/c,w=Math.ceil(s/m),x=[\"type\"],C=[{type:12,data:w},{type:12,data:s},{type:12,data:Math.floor(a/c)},{type:12,data:Math.floor(s*a/c)}],T=R=>{let L=U(\"input\",t.dataType,t.dims,c);return`\n  ${R.declareVariables(L)}\n  @group(0) @binding(1) var<storage, read_write> output : array<${u}>;\n  struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\n  @group(0) @binding(2) var<uniform> uniforms: Uniforms;\n\n  ${R.mainStart(m)}\n    let currentImageNumber = global_idx / ${m} / uniforms.C;\n    let currentChannelNumber = (global_idx / ${m}) % uniforms.C;\n    let wgOffset = local_id.x * uniforms.wg_size;\n    if (wgOffset >= uniforms.H) {\n        return;\n    }\n    let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\n\n    let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\n    var sum = ${At(\"f32\",c)};\n    var squaredSum = ${At(\"f32\",c)};\n    for (var i: u32 = wgOffset; i < wgMax; i++) {\n        let value = ${g}(input[offset + i * uniforms.C]);\n        sum += value;\n        squaredSum += value * value;\n    }\n    output[global_idx] = ${b(\"sum\",\"squaredSum\")};\n  }`},S=e.compute({name:\"InstanceNormComputeMean\",shaderCache:{hint:`${c}`,inputDependencies:x},getRunData:()=>({outputs:[{dims:[i,a,m,2],dataType:1}],dispatchGroup:{x:i*a/c},programUniforms:C}),getShaderSource:T},{inputs:[t],outputs:[-1]})[0],E=[{type:12,data:$},{type:12,data:s},{type:12,data:Math.floor(a/c)},{type:12,data:Math.floor(m*a/c)}],k=[\"type\",\"type\",\"type\"],P=R=>{let L=U(\"scale\",r.dataType,r.dims,c),V=U(\"bias\",n.dataType,n.dims,c);return`\n  @group(0) @binding(0) var<storage, read> input : array<${u}>;\n  @group(0) @binding(1) var<storage, read> scale : array<${L.type.storage}>;\n  @group(0) @binding(2) var<storage, read> bias : array<${V.type.storage}>;\n  @group(0) @binding(3) var<storage, read_write> output : array<${u}>;\n  struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\n  @group(0) @binding(4) var<uniform> uniforms: Uniforms;\n\n  ${R.mainStart()}\n    ${R.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.units_of_work\")}\n    let currentImageNumber = global_idx / uniforms.C;\n    let currentChannelNumber = global_idx % uniforms.C;\n\n    let offset = currentImageNumber * uniforms.image_size;\n    var sum = ${At(\"f32\",c)};\n    var squaredSum = ${At(\"f32\",c)};\n    for (var i: u32 = 0; i < min(${m}, uniforms.H); i++) {\n        let value = input[offset + i + currentChannelNumber * ${m}];\n        sum += value[0];\n        squaredSum += value[1];\n    }\n    sum = sum / f32(uniforms.H);\n    squaredSum = squaredSum / f32(uniforms.H);\n    let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${d}));\n    let channelScale = invStdDev * ${g}(scale[currentChannelNumber]);\n    let channelShift = ${g}(bias[currentChannelNumber]) - sum * channelScale;\n\n    output[global_idx] = ${b(\"channelScale\",\"channelShift\")};\n  }`};return e.compute({name:\"InstanceNormComputeChannelScaleShift\",shaderCache:{hint:`${c};${d}`,inputDependencies:k},getRunData:()=>({outputs:[{dims:[i,a,2],dataType:1}],dispatchGroup:{x:Math.ceil($/64)},programUniforms:E}),getShaderSource:P},{inputs:[S,r,n],outputs:[-1]})[0]},rm=(e,t,r)=>{let n=t[0].dims,i=n,s=n[0],a=n[n.length-1],d=M.sizeFromDimension(n,1)/a,c=Ue(a),m=M.size(i)/c,u=[{type:12,data:d},{type:12,data:Math.floor(a/c)}],g=[\"type\",\"type\"],b=tm(e,t[0],t[1],t[2],s,d,a,r.epsilon),$=w=>{let x=De(t[0].dataType),C=c===1?\"vec2f\":`mat2x${c}f`,T=c===1?x:`vec${c}<${x}>`,S=U(\"input\",t[0].dataType,t[0].dims,c),E=K(\"output\",t[0].dataType,i,c);return`\n  @group(0) @binding(0) var<storage, read> input : array<${S.type.storage}>;\n  @group(0) @binding(1) var<storage, read> scaleInput : array<${C}>;\n  @group(0) @binding(2) var<storage, read_write> output : array<${E.type.storage}>;\n  struct Uniforms {H: u32, C : u32};\n  @group(0) @binding(3) var<uniform> uniforms: Uniforms;\n\n  ${w.mainStart()}\n    let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\n    let currentChannelNumber = global_idx % uniforms.C;\n\n    let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\n    let scale = scaleInput[scaleOffset];\n    output[global_idx] = fma(input[global_idx], ${T}(scale[0]), ${T}(scale[1]));\n  }`};e.compute({name:\"InstanceNormalizationNHWC\",shaderCache:{hint:`${c}`,inputDependencies:g},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:u}),getShaderSource:$},{inputs:[t[0],b]})},_l=(e,t)=>{t.format===\"NHWC\"?rm(e,e.inputs,t):e.compute(em(e.inputs,t))}});var nm,im,Sl,Cl=j(()=>{\"use strict\";ye();xe();_e();nm=e=>{if(!e||e.length<2)throw new Error(\"layerNorm requires at least 2 inputs.\")},im=(e,t,r)=>{let n=t.simplified,i=e[0].dims,s=e[1],a=!n&&e[2],d=i,c=M.normalizeAxis(t.axis,i.length),m=M.sizeToDimension(i,c),u=M.sizeFromDimension(i,c),g=M.size(s.dims),b=a?M.size(a.dims):0;if(g!==u||a&&b!==u)throw new Error(`Size of X.shape()[axis:] == ${u}.\n       Size of scale and bias (if provided) must match this.\n       Got scale size of ${g} and bias size of ${b}`);let $=[];for(let P=0;P<i.length;++P)P<c?$.push(i[P]):$.push(1);let w=Ue(u),x=[\"type\",\"type\"],C=[{type:12,data:m},{type:1,data:u},{type:12,data:Math.floor(u/w)},{type:1,data:t.epsilon}];a&&x.push(\"type\");let T=r>1,S=r>2,E=P=>{let R=De(e[0].dataType),L=[U(\"x\",e[0].dataType,e[0].dims,w),U(\"scale\",s.dataType,s.dims,w)];a&&L.push(U(\"bias\",a.dataType,a.dims,w)),L.push(K(\"output\",e[0].dataType,d,w)),T&&L.push(K(\"mean_data_output\",1,$)),S&&L.push(K(\"inv_std_output\",1,$));let V=[{name:\"norm_count\",type:\"u32\"},{name:\"norm_size\",type:\"f32\"},{name:\"norm_size_vectorized\",type:\"u32\"},{name:\"epsilon\",type:\"f32\"}];return`\n  ${P.registerUniforms(V).declareVariables(...L)}\n  ${P.mainStart()}\n    ${P.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.norm_count\")}\n    let offset = global_idx * uniforms.norm_size_vectorized;\n    var mean_vector = ${At(\"f32\",w)};\n    var mean_square_vector = ${At(\"f32\",w)};\n\n    for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\n      let value = ${fr(R,w,\"x[h + offset]\")};\n      mean_vector += value;\n      mean_square_vector += value * value;\n    }\n    let mean = ${Et(\"mean_vector\",w)} / uniforms.norm_size;\n    let inv_std_dev = inverseSqrt(${Et(\"mean_square_vector\",w)} / uniforms.norm_size ${n?\"\":\"- mean * mean\"} + uniforms.epsilon);\n\n    for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\n      let f32input = ${fr(R,w,\"x[j + offset]\")};\n      let f32scale = ${fr(R,w,\"scale[j]\")};\n      output[j + offset] = ${L[0].type.value}((f32input ${n?\"\":\"- mean\"}) * inv_std_dev * f32scale\n        ${a?`+ ${fr(R,w,\"bias[j]\")}`:\"\"}\n      );\n    }\n\n    ${T?\"mean_data_output[global_idx] = mean\":\"\"};\n    ${S?\"inv_std_output[global_idx] = inv_std_dev\":\"\"};\n  }`},k=[{dims:d,dataType:e[0].dataType}];return T&&k.push({dims:$,dataType:1}),S&&k.push({dims:$,dataType:1}),{name:\"LayerNormalization\",shaderCache:{hint:`${w};${r};${n}`,inputDependencies:x},getRunData:()=>({outputs:k,dispatchGroup:{x:Math.ceil(m/64)},programUniforms:C}),getShaderSource:E}},Sl=(e,t)=>{nm(e.inputs),e.compute(im(e.inputs,t,e.outputCount))}});var om,am,Il,Tl,Al=j(()=>{\"use strict\";ye();xe();Ze();_e();om=(e,t)=>{if(e.length<3||e.length>4)throw new Error(\"MatMulNBits requires 3 or 4 inputs\");let r=e[0],n=r.dims.length;if(r.dims[n-1]!==t.k)throw new Error(\"The last dim of input shape does not match the k value\");let i=Math.floor((t.k+t.blockSize-1)/t.blockSize),s=t.blockSize/8*t.bits,a=e[1];if(!M.areEqual(a.dims,[t.n,i,s]))throw new Error(\"The second inputs must be 3D tensor with shape N X nBlocksPerCol X blobSize\");let c=e[2].dims;if(M.size(c)!==t.n*i)throw new Error(\"scales input size error.\");if(e.length===4){let u=e[3].dims,g=t.bits>4?t.n*i:t.n*Math.floor((i+1)/2);if(M.size(u)!==g)throw new Error(\"zeroPoints input size error.\")}},am=(e,t,r,n)=>{let i=e[0].dims,s=i.length,a=Math.floor((t.k+t.blockSize-1)/t.blockSize),d=i[s-2],c=t.k,m=t.n,u=i.slice(0,s-2),g=M.size(u),$=t.blockSize/8*t.bits/4,w=e[0].dataType,x=Ue(d),C=Ue(t.k),T=Ue($),S=cr(w),E=d*a*S,k=Math.floor(n/E),P=a<=r[0]&&k>0,R=!P||k>=4?Ue(m):k>=2&&Ue(m)>=2?2:1,L=u.concat([d,m]),V=M.size(L)/R/x,Y=P?[]:[{type:12,data:V},{type:12,data:t.blockSize}],Q=[g,d,c/C],he=M.convertShape(e[1].dims).slice();he.splice(-1,1,$/T),Y.push(...X(Q)),Y.push(...X(he)),Y.push(...X(e[2].dims)),e.length===4&&Y.push(...X(M.convertShape(e[3].dims)));let N=[g,d,m/R];Y.push(...X(N));let se=Ce=>{let Ve=Q.length,ee=U(\"a\",e[0].dataType,Ve,C),ae=U(\"b\",12,he.length,T),Ie=U(\"scales\",e[2].dataType,e[2].dims.length),me=[ee,ae,Ie],oe=e.length===4?U(\"zero_points\",12,e[3].dims.length):void 0;oe&&me.push(oe);let ue=N.length,de=K(\"output\",e[0].dataType,ue,R),je=[{name:\"output_size\",type:\"u32\"},{name:\"block_size\",type:\"u32\"}],H=De(e[0].dataType),ne=(()=>{switch(C){case 1:return`array<${H}, 8>`;case 2:return`mat4x2<${H}>`;case 4:return`mat2x4<${H}>`;default:throw new Error(`${C}-component is not supported.`)}})(),Se=`\n        for (var word: u32 = 0; word < ${$}; word += ${T}) {\n          ${ae.indicesSet(\"b_indices\",\"2\",\"word\")};\n          let b_data = ${ae.getByIndices(\"b_indices\")};\n          for (var i: u32 = 0; i < ${T}; i++) {\n            let b_value: u32 = ${T===1?\"b_data\":\"b_data[word + i]\"};\n            let b_mask: u32 = 0x0F0F0F0Fu;\n            let b_value_lower: vec4<u32> = unpack4xU8(b_value & b_mask);\n            let b_value_upper: vec4<u32> = unpack4xU8((b_value >> 4) & b_mask);\n            let b_quantized_values = ${ne}(${Array.from({length:4},(Be,Ge)=>`${H}(b_value_lower[${Ge}]), ${H}(b_value_upper[${Ge}])`).join(\", \")});\n            let b_dequantized_values = ${(()=>C===1?`${ne}(${Array.from({length:8},(Be,Ge)=>`(b_quantized_values[${Ge}] - zero_point) * scale`).join(\", \")});`:`(b_quantized_values - ${ne}(${Array(8).fill(\"zero_point\").join(\",\")})) * scale;`)()};\n            // Number of B elements per 32-bit word is 32/bits = 32/4 = 8\n            for (var m: u32 = 0; m < ${P?d:x}u; m++) {\n              ${ee.indicesSet(\"a_indices\",Ve-2,P?\"m\":`row * ${x} + m`)};\n              ${ee.indicesSet(\"a_indices\",Ve-1,\"word_offset\")};\n              var input_offset = ${ee.indicesToOffset(\"a_indices\")};\n              var a_data: ${ne};\n              for (var j: u32 = 0; j < ${8/C}; j++) {\n                a_data[j] = ${ee.getByOffset(\"input_offset\")};\n                input_offset++;\n              }\n              ${P?\"workgroup_shared[workgroup_shared_offset + m]\":\"output_values[m]\"}${R>1?\"[c]\":\"\"} += ${Array.from({length:8/C},(Be,Ge)=>`${C===1?`a_data[${Ge}] * b_dequantized_values[${Ge}]`:`dot(a_data[${Ge}], b_dequantized_values[${Ge}])`}`).join(\" + \")};\n            }\n            word_offset += ${8/C};\n          }\n        }`,Ye=oe?`\n          zero_point_offset += 4;\n          if (zero_point_offset == 32) {\n            zero_point_offset = 0;\n            zero_point_index++;\n            zero_point_word = ${oe.getByOffset(\"zero_point_index\")};\n          }`:\"\";return P?`\n        var<workgroup> workgroup_shared: array<${de.type.value}, ${d*a}>;\n        ${Ce.declareVariables(...me,de)}\n        ${Ce.mainStart([a,1,1])}\n          var a_indices: ${ee.type.indices};\n          var block = local_id.x;\n          var col = workgroup_id.y;\n          var batch = workgroup_id.z;\n          ${ee.indicesSet(\"a_indices\",\"0\",\"batch\")};\n          // Two zero points are packed into one byte when uniforms.bits is 4.\n          for (var c: u32 = 0; c < ${R}; c++) {\n            let col_times_components_plus_c = col * ${R} + c;\n              ${oe?`\n            var zero_point_bytes_per_col: u32 = (${a} + 1) / 2;\n            var zero_point_byte_count: u32 = col_times_components_plus_c * zero_point_bytes_per_col + (block >> 0x1u);\n            var zero_point_word_index: u32 = zero_point_byte_count >> 0x2u;\n            var zero_point_byte_offset: u32 = zero_point_byte_count & 0x3u;\n            var zero_point_nibble_offset: u32 = block & 0x1u;\n            var zero_point_bits_offset: u32 = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2);\n            var zero_point_word: u32 = ${oe.getByOffset(\"zero_point_word_index\")} >> zero_point_bits_offset;`:\"\"}\n            var b_indices: ${ae.type.indices};\n            ${ae.indicesSet(\"b_indices\",\"0\",\"col_times_components_plus_c\")};\n            // The scale and zero points are computed per block.\n            var scales_index = col_times_components_plus_c * ${a} + block;\n            let scale = ${Ie.getByOffset(\"scales_index\")};\n            // The default zero point is 8 for unsigned 4-bit quantization.\n            let zero_point = ${H}(${oe?\"(zero_point_word) & 0xFu\":8});\n            ${ae.indicesSet(\"b_indices\",\"1\",\"block\")};\n            var word_offset: u32 = block * ${t.blockSize/C};\n            var workgroup_shared_offset: u32 = block * ${d};\n            ${Se}\n          }\n          workgroupBarrier();\n          if (local_id.x == 0u) {\n            var output_indices: ${de.type.indices};\n            ${de.indicesSet(\"output_indices\",\"0\",\"batch\")};\n            ${de.indicesSet(\"output_indices\",ue-1,\"col\")};\n            ${de.indicesSet(\"output_indices\",ue-2,\"0\")};\n            var output_offset = ${de.indicesToOffset(\"output_indices\")};\n            for (var m: u32 = 0u; m < ${d}u; m++) {\n              var output_value: ${de.type.value} = ${de.type.value}(0);\n              var workgroup_shared_offset: u32 = m;\n              for (var b: u32 = 0u; b < ${a}u; b++) {\n                output_value += workgroup_shared[workgroup_shared_offset];\n                workgroup_shared_offset += ${d};\n              }\n              ${de.setByOffset(\"output_offset\",\"output_value\")};\n              output_offset += ${m/R};\n            }\n          }\n        }`:`\n        ${Ce.registerUniforms(je).declareVariables(...me,de)}\n        ${Ce.mainStart()}\n          ${Ce.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n          var output_values: array<${de.type.value}, ${x}>;\n          var output_indices = ${de.offsetToIndices(\"global_idx\")};\n          var col = ${de.indicesGet(\"output_indices\",ue-1)};\n          var row = ${de.indicesGet(\"output_indices\",ue-2)};\n          var a_indices: ${ee.type.indices} = output_indices;\n          // Two zero points are packed into one byte because uniforms.bits <= 4.\n          // zero_point_offset is either 0 or 4. It is bit offset within one byte.\n          // TODO support zero_point_offset for bits > 4\n          ${oe?`\n          var zero_point_abs_offset = col * ${R} * ((${a} + 1) / 2);\n          var zero_point_index: u32 = zero_point_abs_offset / 4;\n          var zero_point_word: u32 = ${oe.getByOffset(\"zero_point_index\")};\n          var zero_point_offset: u32 = (zero_point_abs_offset % 4) * 8;`:\"\"}\n          var scale_index = col * ${a*R};\n          var b_indices: ${ae.type.indices};\n          for (var c: u32 = 0; c < ${R}; c++) {\n            ${ae.indicesSet(\"b_indices\",\"0\",`col * ${R} + c`)};\n            var block_offset: u32 = 0;\n            for (var block: u32 = 0; block < ${a}; block++) {\n              // The scale and zero points are computed per block.\n              let scale = ${Ie.getByOffset(\"scale_index\")};\n              // The default zero point is 8 for unsigned 4-bit quantization.\n              let zero_point = ${H}(${oe?\"extractBits(zero_point_word, zero_point_offset, 4)\":8});\n              ${ae.indicesSet(\"b_indices\",\"1\",\"block\")};\n              var word_offset: u32 = block_offset;\n              ${Se}\n              scale_index++;\n              ${Ye}\n              block_offset += uniforms.block_size / ${C};\n            }\n            // Drop the trailing 4 bits if the zero_poit_offset is not a byte boundary to align with the next byte.\n            ${oe?`if (zero_point_offset % 8 > 0) {\n                ${Ye}\n              }`:\"\"}\n            }\n            for (var k: u32 = 0u; k < ${x}u; k++) {\n              ${de.indicesSet(\"output_indices\",ue-2,`${x} * row + k`)};\n              ${de.setByIndices(\"output_indices\",\"output_values[k]\")}\n            }\n        }`};return{name:P?\"BlockwiseMatMulNBits\":\"MatMulNBits\",shaderCache:{hint:`${t.cacheKey};${d};${w};${e.length}`,inputDependencies:Array(e.length).fill(\"rank\")},getRunData:()=>({outputs:[{dims:L,dataType:w}],name:P?\"BlockwiseMatMulNBits\":\"MatMulNBits\",dispatchGroup:P?{x:1,y:Math.ceil(m/R),z:g}:{x:Math.ceil(V/64)},programUniforms:Y}),getShaderSource:se}},Il=(e,t)=>{om(e.inputs,t);let r=e.getMaxComputeWorkgroupSizes(),n=e.getMaxComputeWorkgroupStoragesize();e.compute(am(e.inputs,t,r,n))},Tl=e=>we(e)});var lt,sm,kl,El,um,$o,Ol,Pl=j(()=>{\"use strict\";ye();xe();Ze();Hn();oo();_e();Rr();lt=(e,t)=>e.length>t&&e[t].dims.length>0&&M.size(e[t].dims)>0?e[t]:void 0,sm=(e,t)=>{let r=e[0],n=lt(e,1),i=lt(e,2),s=lt(e,3),a=lt(e,4),d=lt(e,5),c=lt(e,6),m=lt(e,7);if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\"Input query is expected to have 3 or 5 dimensions\");let u=!1,g=r.dims[0],b=r.dims[1],$=r.dims.length===3?u?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],w=b,x=0,C=0,T=Math.floor($/t.numHeads);if(c&&m){if(c.dims.length!==4)throw new Error('Input \"past_key\" is expected to have 4 dimensions');if(c.dims[0]!==g||c.dims[1]!==t.numHeads||c.dims[3]!==T)throw new Error('Input \"past_key\" shape (batch_size, num_heads, past_sequence_length, head_size)');if(m.dims[0]!==g||m.dims[1]!==t.numHeads||m.dims[3]!==T)throw new Error('Input \"past_value\" shape (batch_size, num_heads, past_sequence_length, head_size)');if(c.dims[2]!==m.dims[2])throw new Error('Input \"past_key\" and \"past_value\" shall have same dim 2 (past_sequence_length)');if(m.dims.length!==4)throw new Error('Input \"past_value\" is expected to have 4 dimensions');x=c.dims[2],C=c.dims[2]}else if(c||m)throw new Error('Input \"past_key\" and \"past_value\" shall be both present or both absent');let S;if(n){if(r.dims.length!==3)throw new Error('Input \"query\" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw new Error('Input \"key\" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input \"query\" and \"key\" shall have same dim 0 (batch size)');if(n.dims.length===3){if(n.dims[2]!==r.dims[2])throw new Error('Input \"query\" and \"key\" shall have same dim 2 (hidden_size)');S=2,w=n.dims[1]}else if(n.dims.length===5){if(n.dims[2]!==t.numHeads||n.dims[3]!==2||n.dims[4]!==T)throw new Error('Expect \"key\" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(i)throw new Error('Expect \"value\" be none when \"key\" has packed kv format.');S=5,w=n.dims[1]}else{if(n.dims[1]!==t.numHeads||n.dims[3]!==T)throw new Error('Expect \"key\" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');S=0,w=n.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error('Input \"query\" is expected to have 3 or 5 dimensions when key is empty');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error('Expect \"query\" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');S=3}if(s){if(s.dims.length!==1)throw new Error('Input \"bias\" is expected to have 1 dimension');if(i&&r.dims.length===5&&r.dims[3]===2)throw new Error(\"bias is not allowed for packed kv.\")}let E=0;if(a){E=8;let V=a.dims;throw V.length===1?V[0]===g?E=1:V[0]===3*g+2&&(E=3):V.length===2&&V[0]===g&&V[1]===w&&(E=5),E===8?new Error('Input \"key_padding_mask\" shape shall be (batch_size) or (batch_size, kv_sequence_length)'):new Error(\"Mask not supported\")}let k=!1,P=$;if(i){if(i.dims.length!==3&&i.dims.length!==4)throw new Error('Input \"value\" is expected to have 3 or 4 dimensions');if(r.dims[0]!==i.dims[0])throw new Error('Input \"query\" and \"value\" shall have same dim 0 (batch_size)');if(i.dims.length===3){if(w!==i.dims[1])throw new Error('Input \"key\" and \"value\" shall have the same dim 1 (kv_sequence_length)');P=i.dims[2]}else{if(w!==i.dims[2])throw new Error('Input \"past_key\" and \"past_value\" shall have the same dim 2 (kv_sequence_length)');P=i.dims[1]*i.dims[3],k=!0}}let R=x+w,L=!1;if(a)throw new Error(\"Key padding mask is not supported\");if(d){if(d.dims.length!==4)throw new Error('Input \"relative_position_bias\" is expected to have 4 dimensions');if(d.dims[0]!==g&&d.dims[0]!==1||d.dims[1]!==t.numHeads||d.dims[2]!==b||d.dims[3]!==R)throw new Error('Input \"relative_position_bias\" shape (batch_size, 1, sequence_length, kv_sequence_length)')}return{batchSize:g,sequenceLength:b,pastSequenceLength:x,kvSequenceLength:w,totalSequenceLength:R,maxSequenceLength:C,inputHiddenSize:0,hiddenSize:$,vHiddenSize:P,headSize:T,vHeadSize:Math.floor(P/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:E,scale:t.scale,broadcastResPosBias:L,passPastInKv:k,qkvFormat:S}},kl=e=>we({...e}),El=we({perm:[0,2,1,3]}),um=(e,t,r,n,i,s,a)=>{let d=[n,i,s],c=M.size(d),m=[{type:12,data:c},{type:12,data:a},{type:12,data:s}],u=g=>{let b=K(\"qkv_with_bias\",t.dataType,d),$=U(\"qkv\",t.dataType,d),w=U(\"bias\",r.dataType,d),x=[{name:\"output_size\",type:\"u32\"},{name:\"bias_offset\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"}];return`\n  ${g.registerUniforms(x).declareVariables($,w,b)}\n  ${g.mainStart()}\n    ${g.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n    let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\n\n    qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\n  }`};return e.compute({name:\"MultiHeadAttentionAddBias\",shaderCache:{inputDependencies:[\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:d,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:m}),getShaderSource:u},{inputs:[t,r],outputs:[-1]})[0]},$o=(e,t,r,n,i,s,a,d)=>{let c=s;if(a){if(n===1)throw new Error(\"AddBiasReshape is not implemented. Please export your model with packed QKV or KV\");return c=um(e,s,a,t,n,r*i,d),c=c.reshape([t,n,r,i]),e.compute(xt(c,El.perm),{inputs:[c],outputs:[-1]})[0]}else return s.dims.length===3&&(c=s.reshape([t,n,r,i])),e.compute(xt(c,El.perm),{inputs:[c],outputs:[-1]})[0]},Ol=(e,t)=>{let r=sm(e.inputs,t),n=e.inputs[0],i=lt(e.inputs,1),s=lt(e.inputs,2),a=lt(e.inputs,3),d=lt(e.inputs,4),c=lt(e.inputs,5),m=lt(e.inputs,6),u=lt(e.inputs,7);if(n.dims.length===5)throw new Error(\"Packed QKV is not implemented\");if(i?.dims.length===5)throw new Error(\"Packed KV is not implemented\");let g=i&&s&&i.dims.length===4&&s.dims.length===4,b=$o(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,n,a,0);if(g)return Xn(e,b,i,s,d,void 0,m,u,c,r,t);if(!i||!s)throw new Error(\"key and value must be provided\");let $=$o(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,i,a,r.hiddenSize),w=$o(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,s,a,2*r.hiddenSize);Xn(e,b,$,w,d,void 0,m,u,c,r,t)}});var lm,dm,cm,pm,mm,fm,hm,gm,Rl,zl=j(()=>{\"use strict\";ye();xe();_e();lm=e=>{if(!e||e.length<1)throw new Error(\"Too few inputs\");if(e[0].dataType!==1&&e[0].dataType!==10)throw new Error(\"Input type must be float or float16.\");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error(\"The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].\")}},dm=(e,t,r)=>{let n=\"\";for(let i=t-1;i>=0;--i)n+=`\n            k = i32(${e.indicesGet(\"indices\",i)}) - ${fe(\"uniforms.pads\",i,r)};\n            if (k < 0) {\n              break;\n            }\n            if (k >= i32(${fe(\"uniforms.x_shape\",i,t)})) {\n              break;\n            }\n            offset += k * i32(${fe(\"uniforms.x_strides\",i,t)});\n        `;return`\n          value = ${e.type.value}(uniforms.constant_value);\n          for (var i = 0; i < 1; i++) {\n            var offset = 0;\n            var k = 0;\n            ${n}\n            value = x[offset];\n          }\n      `},cm=(e,t,r)=>{let n=\"\";for(let i=t-1;i>=0;--i)n+=`\n                k = i32(${e.indicesGet(\"indices\",i)}) - ${fe(\"uniforms.pads\",i,r)};\n                if (k < 0) {\n                  k = -k;\n                }\n                {\n                  let _2n_1 = 2 * (i32(${fe(\"uniforms.x_shape\",i,t)}) - 1);\n                  k = k % _2n_1;\n                  if(k >= i32(${fe(\"uniforms.x_shape\",i,t)})) {\n                    k = _2n_1 - k;\n                  }\n                }\n                offset += k * i32(${fe(\"uniforms.x_strides\",i,t)});\n            `;return`\n              var offset = 0;\n              var k = 0;\n              ${n}\n              value = x[offset];\n          `},pm=(e,t,r)=>{let n=\"\";for(let i=t-1;i>=0;--i)n+=`\n                k = i32(${e.indicesGet(\"indices\",i)}) - ${fe(\"uniforms.pads\",i,r)};\n                if (k < 0) {\n                  k = 0;\n                }\n                if (k >= i32(${fe(\"uniforms.x_shape\",i,t)})) {\n                  k = i32(${fe(\"uniforms.x_shape\",i,t)}) - 1;\n                }\n                offset += k * i32(${fe(\"uniforms.x_strides\",i,t)});\n            `;return`\n              var offset = 0;\n              var k = 0;\n              ${n}\n              value = x[offset];\n          `},mm=(e,t,r)=>{let n=\"\";for(let i=t-1;i>=0;--i)n+=`\n                k = i32(${e.indicesGet(\"indices\",i)}) - ${fe(\"uniforms.pads\",i,r)};\n                if (k < 0)  {\n                  k += i32(${fe(\"uniforms.x_shape\",i,t)}]);\n                }\n                if (k >= i32(${fe(\"uniforms.x_shape\",i,t)})) {\n                  k -= i32(${fe(\"uniforms.x_shape\",i,t)});\n                }\n                offset += k * i32(${fe(\"uniforms.x_strides\",i,t)});\n            `;return`\n              var offset = 0;\n              var k = 0;\n              ${n}\n              value = x[offset];\n          `},fm=(e,t,r)=>{switch(r.mode){case 0:return dm(e,t,r.pads.length);case 1:return cm(e,t,r.pads.length);case 2:return pm(e,t,r.pads.length);case 3:return mm(e,t,r.pads.length);default:throw new Error(\"Invalid mode\")}},hm=(e,t)=>{let r=M.padShape(e[0].dims.slice(),t.pads),n=e[0].dims,i=M.size(r),s=[{type:12,data:i},{type:6,data:t.pads}];t.mode===0&&s.push({type:e[0].dataType,data:t.value}),s.push(...X(e[0].dims,r));let a=[\"rank\"],d=c=>{let m=K(\"output\",e[0].dataType,r.length),u=U(\"x\",e[0].dataType,n.length),g=u.type.value,b=fm(m,n.length,t),$=[{name:\"output_size\",type:\"u32\"},{name:\"pads\",type:\"i32\",length:t.pads.length}];return t.mode===0&&$.push({name:\"constant_value\",type:g}),`\n            ${c.registerUniforms($).declareVariables(u,m)}\n            ${c.mainStart()}\n            ${c.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n\n            let indices = ${m.offsetToIndices(\"global_idx\")};\n\n            var value = ${g}(0);\n            ${b}\n            output[global_idx] = value;\n        }`};return{name:\"Pad\",shaderCache:{hint:`${t.mode}`,inputDependencies:a},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(M.size(r)/64)},programUniforms:s}),getShaderSource:d}},gm=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),n=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,i=e[0].dims.length,s=new Int32Array(2*i).fill(0);if(e.length>=4){let d=e[3].getBigInt64Array();for(let c=0;c<d.length;c++)s[Number(d[c])]=Number(r[c]),s[Number(d[c])+i]=Number(r[c+d.length])}else r.forEach((d,c)=>s[Number(c)]=Number(d));let a=[];return s.forEach(d=>a.push(d)),{mode:t.mode,value:n,pads:a}}else return t},Rl=(e,t)=>{lm(e.inputs);let r=gm(e.inputs,t);e.compute(hm(e.inputs,r),{inputs:[0]})}});var si,Bl,Dl,Ml,Ul,ym,bm,Wl,Nl,Vl,Hl,Gl,Ll,Fl,ql,jl,Kl,Yl,Xl,Zl=j(()=>{\"use strict\";_t();ye();xe();_e();si=e=>{if(ke.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error(\"Pool ops requires 1 input.\")},Bl=(e,t,r)=>{let n=t.format===\"NHWC\",i=e.dims.slice();n&&i.splice(1,0,i.pop());let s=Object.hasOwnProperty.call(t,\"dilations\"),a=t.kernelShape.slice(),d=t.strides.slice(),c=s?t.dilations.slice():[],m=t.pads.slice();pr.adjustPoolAttributes(r,i,a,d,c,m);let u=pr.computePoolOutputShape(r,i,d,c,a,m,t.autoPad),g=Object.assign({},t);s?Object.assign(g,{kernelShape:a,strides:d,pads:m,dilations:c,cacheKey:t.cacheKey}):Object.assign(g,{kernelShape:a,strides:d,pads:m,cacheKey:t.cacheKey});let b=u.slice();return b.push(b.splice(1,1)[0]),[g,n?b:u]},Dl=(e,t)=>{let r=t.format===\"NHWC\",n=M.size(e),i=M.size(t.kernelShape),s=[{type:12,data:n},{type:12,data:i}],a=[{name:\"outputSize\",type:\"u32\"},{name:\"kernelSize\",type:\"u32\"}];if(t.kernelShape.length<=2){let d=t.kernelShape[t.kernelShape.length-1],c=t.strides[t.strides.length-1],m=t.pads[t.pads.length/2-1],u=t.pads[t.pads.length-1],g=!!(m+u);s.push({type:12,data:d},{type:12,data:c},{type:12,data:m},{type:12,data:u}),a.push({name:\"kw\",type:\"u32\"},{name:\"sw\",type:\"u32\"},{name:\"pwStart\",type:\"u32\"},{name:\"pwEnd\",type:\"u32\"});let b=!1;if(t.kernelShape.length===2){let $=t.kernelShape[t.kernelShape.length-2],w=t.strides[t.strides.length-2],x=t.pads[t.pads.length/2-2],C=t.pads[t.pads.length-2];b=!!(x+C),s.push({type:12,data:$},{type:12,data:w},{type:12,data:x},{type:12,data:C}),a.push({name:\"kh\",type:\"u32\"},{name:\"sh\",type:\"u32\"},{name:\"phStart\",type:\"u32\"},{name:\"phEnd\",type:\"u32\"})}return[s,a,!0,g,b]}else{if(r)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let d=M.computeStrides(t.kernelShape);s.push({type:12,data:d},{type:12,data:t.pads},{type:12,data:t.strides}),a.push({name:\"kernelStrides\",type:\"u32\",length:d.length},{name:\"pads\",type:\"u32\",length:t.pads.length},{name:\"strides\",type:\"u32\",length:t.strides.length});let c=t.pads.reduce((m,u)=>m+u);return[s,a,!!c,!1,!1]}},Ml=(e,t,r,n,i,s,a,d,c,m,u,g)=>{let b=i.format===\"NHWC\",$=t.type.value,w=K(\"output\",t.type.tensor,n);if(i.kernelShape.length<=2){let x=\"\",C=\"\",T=\"\",S=r-(b?2:1);if(u?x=`\n                for (var i: u32 = 0u; i < uniforms.kw; i++) {\n                  xIndices[${S}] = indices[${S}] * uniforms.sw - uniforms.pwStart + i;\n                  if (xIndices[${S}] < 0 || xIndices[${S}]\n                      >= uniforms.x_shape[${S}]) {\n                    pad++;\n                    continue;\n                  }\n                  let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n                  ${s}\n                }`:x=`\n                for (var i: u32 = 0u; i < uniforms.kw; i++) {\n                  xIndices[${S}] = indices[${S}] * uniforms.sw - uniforms.pwStart + i;\n                  let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n                  ${s}\n                }`,i.kernelShape.length===2){let k=r-(b?3:2);g?C=`\n                for (var j: u32 = 0u; j < uniforms.kh; j++) {\n                  xIndices[${k}] = indices[${k}] * uniforms.sh - uniforms.phStart + j;\n                  if (xIndices[${k}] < 0 || xIndices[${k}] >= uniforms.x_shape[${k}]) {\n                    pad += i32(uniforms.kw);\n                    continue;\n                  }\n              `:C=`\n                for (var j: u32 = 0u; j < uniforms.kh; j++) {\n                  xIndices[${k}] = indices[${k}] * uniforms.sh - uniforms.phStart + j;\n                `,T=`\n              }\n            `}return`\n            ${e.registerUniforms(c).declareVariables(t,w)}\n\n            ${e.mainStart()}\n              ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n\n              let indices = ${w.offsetToIndices(\"global_idx\")};\n              var xIndices = ${w.offsetToIndices(\"global_idx\")};\n\n              var value = ${$}(${d});\n              var pad = 0;\n              ${C}\n              ${x}\n              ${T}\n              ${a}\n\n              output[global_idx] = value;\n            }`}else{if(b)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let x=i.kernelShape.length,C=i.pads.length,T=\"\";return m?T=`\n                if (xIndices[j] >= uniforms.x_shape[j]) {\n                  pad++;\n                  isPad = true;\n                  break;\n                }\n              }\n              if (!isPad) {\n                let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n                ${s}\n              }`:T=`\n              }\n              let x_val = x[${t.indicesToOffset(\"xIndices\")}];\n              ${s}\n            `,`\n            ${e.registerUniforms(c).declareVariables(t,w)}\n\n            ${e.mainStart()}\n              ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n              let indices = ${w.offsetToIndices(\"global_idx\")};\n              var xIndices = ${w.offsetToIndices(\"global_idx\")};\n\n              var offsets: array<u32, ${x}>;\n\n              var value = ${$}(${d});\n              var pad = 0;\n              var isPad = false;\n\n              for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\n                var offset = i;\n                for (var j = 0u; j < ${x-1}u; j++) {\n                  offsets[j] = offset / ${fe(\"uniforms.kernelStrides\",\"j\",x)};\n                  offset -= offsets[j] * ${fe(\"uniforms.kernelStrides\",\"j\",x)};\n                }\n                offsets[${x-1}] = offset;\n\n                isPad = false;\n                for (var j = ${r-x}u; j < ${r}u; j++) {\n                  xIndices[j] = indices[j] * ${fe(\"uniforms.strides\",`j - ${r-x}u`,x)}\n                    + offsets[j - ${r-x}u] - ${fe(\"uniforms.pads\",\"j - 2u\",C)};\n                  ${T}\n              }\n              ${a}\n\n              output[global_idx] = value;\n            }`}},Ul=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,ym=e=>`${Ul(e)};${e.countIncludePad}`,bm=e=>`${Ul(e)};${e.storageOrder};${e.dilations}`,Wl=e=>({format:e.format,autoPad:[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Nl=(e,t,r,n)=>{let[i,s]=Bl(t,n,r),a=U(\"x\",t.dataType,t.dims.length),d=a.type.value,c=\"value += x_val;\",m=\"\";i.countIncludePad?m+=`value /= ${d}(uniforms.kernelSize);`:m+=`value /= ${d}(i32(uniforms.kernelSize) - pad);`;let[u,g,b,$,w]=Dl(s,i);u.push(...X(t.dims,s));let x=[\"rank\"];return{name:e,shaderCache:{hint:`${n.cacheKey};${b};${$};${w}`,inputDependencies:x},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(M.size(s)/64)},programUniforms:u}),getShaderSource:C=>Ml(C,a,t.dims.length,s.length,i,c,m,0,g,b,$,w)}},Vl=e=>{let t=e.count_include_pad!==0,r=Wl(e);if(r.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for AveragePool\");let n={countIncludePad:t,...r,cacheKey:\"\"};return{...n,cacheKey:ym(n)}},Hl=(e,t)=>{si(e.inputs),e.compute(Nl(\"AveragePool\",e.inputs[0],!1,t))},Gl={autoPad:\"\",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Ll=e=>{let t=e.format;return{format:t,...Gl,cacheKey:t}},Fl=(e,t)=>{si(e.inputs),e.compute(Nl(\"GlobalAveragePool\",e.inputs[0],!0,t))},ql=(e,t,r,n)=>{let[i,s]=Bl(t,n,r),a=`\n      value = max(x_val, value);\n    `,d=\"\",c=U(\"x\",t.dataType,t.dims.length),m=[\"rank\"],[u,g,b,$,w]=Dl(s,i);return u.push(...X(t.dims,s)),{name:e,shaderCache:{hint:`${n.cacheKey};${b};${$};${w}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(M.size(s)/64)},programUniforms:u}),getShaderSource:x=>Ml(x,c,t.dims.length,s.length,i,a,d,t.dataType===10?-65504:-1e5,g,b,$,w)}},jl=(e,t)=>{si(e.inputs),e.compute(ql(\"MaxPool\",e.inputs[0],!1,t))},Kl=e=>{let t=e.storage_order,r=e.dilations,n=Wl(e);if(t!==0)throw new Error(\"column major storage order is not yet supported for MaxPool\");if(n.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for MaxPool\");let i={storageOrder:t,dilations:r,...n,cacheKey:\"\"};return{...i,cacheKey:bm(i)}},Yl=e=>{let t=e.format;return{format:t,...Gl,cacheKey:t}},Xl=(e,t)=>{si(e.inputs),e.compute(ql(\"GlobalMaxPool\",e.inputs[0],!0,t))}});var wm,$m,Ql,Jl=j(()=>{\"use strict\";_t();ye();_e();wm=(e,t,r)=>{let n=e===t,i=e<t&&r<0,s=e>t&&r>0;if(n||i||s)throw new Error(\"Range these inputs' contents are invalid.\")},$m=(e,t,r,n)=>{let i=Math.abs(Math.ceil((t-e)/r)),s=[i],a=i,d=[{type:12,data:a},{type:n,data:e},{type:n,data:r},...X(s)],c=m=>{let u=K(\"output\",n,s.length),g=u.type.value,b=[{name:\"outputSize\",type:\"u32\"},{name:\"start\",type:g},{name:\"delta\",type:g}];return`\n        ${m.registerUniforms(b).declareVariables(u)}\n        ${m.mainStart()}\n        ${m.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n        output[global_idx] = uniforms.start + ${g}(global_idx) * uniforms.delta;\n      }`};return{name:\"Range\",shaderCache:{hint:`${n}`},getShaderSource:c,getRunData:()=>({outputs:[{dims:s,dataType:n}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:d})}},Ql=e=>{let t=0,r=0,n=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],n=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],n=e.inputs[2].getFloat32Array()[0]),ke.webgpu.validateInputContent&&wm(t,r,n),e.compute($m(t,r,n,e.inputs[0].dataType),{inputs:[]})}});var _m,xm,Sm,Cm,Im,Tm,Am,Em,km,Om,Pm,ed,Rm,zm,Bm,Dm,Mm,td,rd,nd=j(()=>{\"use strict\";ye();xe();Ze();_e();_m=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error(\"Resize requires scales input values to be positive\")})),e.length>0){if(t.mode===\"linear\"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\n            one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode===\"cubic\"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error(\"Resize requires scales input size to be 2 or 4 for cubic mode\")}},xm=(e,t,r)=>{t.every(i=>i>=0&&i<r||(()=>{throw new Error(\"Resize requires axes input values to be positive and less than rank\")}));let n=new Array(r).fill(1);return t.forEach((i,s)=>n[i]=e[s]),n},Sm=(e,t,r,n,i,s)=>{let[a,d,c]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],m=e[0].dims.length;if(a>0&&e.length>a&&e[a].dims.length>0)e[a].getFloat32Array().forEach(u=>s.push(u));else if(t.coordinateTransformMode===\"tf_crop_and_resize\")throw new Error(\"Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize\");if(d>0&&e.length>d&&e[d].dims.length>0){if(e[d].getFloat32Array().forEach(u=>n.push(u)),n.length!==0&&n.length!==m&&r>=18&&n.length!==t.axes.length)throw new Error(\"Resize requires scales input size to be same as input rank or axes size for opset 18 and up\");_m(n,t),t.axes.length>0&&xm(n,t.axes,m).forEach((u,g)=>n[g]=u)}if(c>0&&e.length>c&&(e[c].getBigInt64Array().forEach(u=>i.push(Number(u))),i.length!==m||r>=18&&i.length===t.axes.length))throw new Error(\"Resize requires sizes input size to be same as input rank or axes size for opset 18 and up\");if(t.axes.length>0){if(n.length!==t.axes.length)throw new Error('Resize requires \"scales\" input size to be of axes rank when axes attributes is specified');if(i.length!==t.axes.length)throw new Error('Resize requires \"sizes\" input size to be of rank axes rank when axes attributes is specified')}if(typeof n<\"u\"&&typeof i<\"u\"&&n.length>0&&i.length>m)throw new Error(\"Resize requires only of scales or sizes to be specified\")},Cm=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\n     lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case\"asymmetric\":return`return ${t}(xResized) / ${t}(xScale);`;case\"pytorch_half_pixel\":return`if (lengthResized > 1) {\n                    return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\n                  } else {\n                    return 0.0;\n                  }`;case\"tf_half_pixel_for_nn\":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case\"align_corners\":return`if (lengthResized == 1) {\n                    return 0.0;\n                  } else {\n                    // The whole part and the fractional part are calculated separately due to inaccuracy of floating\n                    // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\n                    // offset-by-one error later in floor().\n                    let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\n                    let fract =\n                        ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\n                    return whole + fract;\n                  }`;case\"tf_crop_and_resize\":return`if (lengthResized > 1) {\n                    return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\n                        (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\n                        ${t}(lengthResized - 1);\n                  } else {\n                    return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\n                  }`;case\"half_pixel_symmetric\":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\n                  const adjustment = ${t}(lengthResized) / outputWidth;\n                  const center = ${t}(lengthOriginal) / 2;\n                  const offset = center * (1 - adjustment);\n                  return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case\"half_pixel\":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+\"}\",Im=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case\"round_prefer_ceil\":return\"if (fract(xOriginal) == 0.5) {             return ceil(xOriginal);           } else {             return round(xOriginal);           }\";case\"floor\":return\"return floor(xOriginal);\";case\"ceil\":return\"return ceil(xOriginal);\";case\"round_prefer_floor\":return\"if (fract(xOriginal) == 0.5) {                     return floor(xOriginal);                   } else {                     return round(xOriginal);                   }\";case\"simple\":default:if(t<11)return\"if (isDownSample)                     {                       return ceil(xOriginal);                     } else {                       return xOriginal;                     }\";throw new Error(`Nearest mode ${e} is not supported`)}})()+\"}\",Tm=(e,t,r)=>{let n=new Array(r).fill(0).concat(new Array(r).fill(1)),i=e.length===0?n:e.slice();return t.length>0?(t.forEach((s,a)=>{n[s]=i[a],n[a+r]=i[t.length+a]}),n):i},Am=(e,t,r,n)=>{let i=[];if(r.length>0)if(n.length>0){if(e.forEach(s=>i.push(s)),Math.max(...n)>e.length)throw new Error(\"axes is out of bound\");n.forEach((s,a)=>i[s]=r[a])}else r.forEach(s=>i.push(s));else{if(t.length===0)throw new Error(\"Resize requires either scales or sizes.\");i=e.map((s,a)=>Math.round(s*t[a]))}return i},Em=(e,t,r)=>{let n=(()=>{switch(r.keepAspectRatioPolicy){case\"not_larger\":return r.axes.length>0?Math.min(...r.axes.map(s=>t[s]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case\"not_smaller\":return r.axes.length>0?Math.max(...r.axes.map(s=>t[s]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let i=e.slice();return r.axes.length>0?(r.axes.forEach(s=>t[s]=n),r.axes.forEach(s=>i[s]=Math.round(e[s]*t[s]))):(t.fill(n,0,t.length),i.forEach((s,a)=>i[a]=Math.round(s*t[a]))),i},km=(e,t,r,n,i)=>`\n    fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {\n      var original_indices: array<${e.type.value}, ${r.length}>;\n      for (var i:u32 = 0; i < ${r.length}; i++) {\n        var output_index = ${e.indicesGet(\"output_indices\",\"i\")};\n        var scale = ${fe(\"uniforms.scales\",\"i\",n)};\n        var roi_low = ${fe(\"uniforms.roi\",\"i\",i)};\n        var roi_hi = ${fe(\"uniforms.roi\",`i + ${t.length}`,i)};\n        if (scale == 1.0) {\n          original_indices[i] = ${e.type.value}(output_index);\n        } else {\n          var input_shape_i = ${fe(\"uniforms.input_shape\",\"i\",t.length)};\n          var output_shape_i = ${fe(\"uniforms.output_shape\",\"i\",r.length)};\n          original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n                                                                           input_shape_i, roi_low, roi_hi);\n        }\n      }\n      return original_indices;\n    }`,Om=(e,t,r,n,i,s,a)=>`\n    fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n      var input_indices: ${e.type.indices};\n      for (var i:u32 = 0; i < ${n.length}; i++) {\n        var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\n        var input_index: u32;\n        var scale = ${fe(\"uniforms.scales\",\"i\",i)};\n        if (scale == 1.0) {\n          input_index = output_index;\n        } else {\n          var roi_low = ${fe(\"uniforms.roi\",\"i\",s)};\n          var roi_hi = ${fe(\"uniforms.roi\",`i + ${r.length}`,s)};\n          var input_shape_i = ${fe(\"uniforms.input_shape\",\"i\",r.length)};\n          var output_shape_i = ${fe(\"uniforms.output_shape\",\"i\",n.length)};\n          var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\n                                                                        input_shape_i, roi_low, roi_hi);\n          if (!${a} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\n            if (original_idx < 0) {\n              input_index = 0;\n            } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\n              input_index = input_shape_i - 1;\n            } else {\n              input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\n            }\n          } else {\n            input_index = u32(original_idx);\n          }\n        }\n        ${e.indicesSet(\"input_indices\",\"i\",\" input_index\")}\n      }\n      return input_indices;\n    }`,Pm=(e,t)=>`\n    fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\n      for (var i:u32 = 0; i < ${t.length}; i++) {\n        var input_index = ${e.indicesGet(\"input_indices\",\"i\")};\n        if (input_index < 0 || input_index >= ${fe(\"uniforms.input_shape\",\"i\",t.length)}) {\n          return false;\n        }\n      }\n      return true;\n    }`,ed=(e,t,r,n)=>e.rank>n?`\n    ${e.indicesSet(\"input_indices\",t,\"channel\")};\n    ${e.indicesSet(\"input_indices\",r,\"batch\")};\n`:\"\",Rm=(e,t,r,n,i)=>{let[a,d,c,m]=r.length===2?[-1,0,1,-1]:[0,2,3,1],u=e.type.value;return`\n    fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${u} {\n      var input_indices: ${e.type.indices};\n      ${e.indicesSet(\"input_indices\",d,`max(0, min(row, ${r[d]} - 1))`)};\n      ${e.indicesSet(\"input_indices\",c,`max(0, min(col, ${r[c]} - 1))`)};\n      ${ed(e,m,a,2)}\n      return ${e.getByIndices(\"input_indices\")};\n    }\n\n    fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${u} {\n      var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n      var row:${u} = originalIndices[${d}];\n      var col:${u} = originalIndices[${c}];\n      ${n?`if (row < 0 || row > (${r[d]} - 1) || col < 0 || col > (${r[c]} - 1)) {\n        return ${i};\n      }`:\"\"};\n      row = max(0, min(row, ${r[d]} - 1));\n      col = max(0, min(col, ${r[c]} - 1));\n      var row1: u32 = u32(row);\n      var col1: u32 = u32(col);\n      var row2: u32 = u32(row + 1);\n      var col2: u32 = u32(col + 1);\n      var channel: u32 = ${r.length>2?`u32(originalIndices[${m}])`:\"0\"};\n      var batch: u32 =  ${r.length>2?`u32(originalIndices[${a}])`:\"0\"};\n      var x11: ${u} = getInputValue(batch, channel, row1, col1);\n      var x12: ${u} = getInputValue(batch, channel, row1, col2);\n      var x21: ${u} = getInputValue(batch, channel, row2, col1);\n      var x22: ${u} = getInputValue(batch, channel, row2, col2);\n      var dx1: ${u} = abs(row - ${u}(row1));\n      var dx2: ${u} = abs(${u}(row2) - row);\n      var dy1: ${u} = abs(col - ${u}(col1));\n      var dy2: ${u} = abs(${u}(col2) - col);\n      if (row1 == row2) {\n        dx1 = 0.5;\n        dx2 = 0.5;\n      }\n      if (col1 == col2) {\n        dy1 = 0.5;\n        dy2 = 0.5;\n      }\n      return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\n    }`},zm=(e,t,r,n,i,s,a,d,c,m)=>{let u=r.length===2,g=!0,[b,$]=u?[0,1]:g?[2,3]:[1,2],w=e.type.value,x=C=>{let T=C===b?\"row\":\"col\";return`\n      fn ${T}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${w} {\n        var output_index = ${t.indicesGet(\"output_indices\",C)};\n        var originalIdx: ${w} = getOriginalCoordinateFromResizedCoordinate(output_index, ${i[C]},\n        ${n[C]}, ${r[C]}, ${s[C]}, ${s[C]} + ${r.length});\n        var fractOriginalIdx: ${w} = originalIdx - floor(originalIdx);\n        var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\n\n        if (${d} && (originalIdx < 0 || originalIdx > (${r[C]} - 1))) {\n          return ${c};\n        }\n        var data: array<${w}, 4> = array<${w}, 4>(0.0, 0.0, 0.0, 0.0);\n        for (var i: i32 = -1; i < 3; i++) {\n          var ${T}: ${w} = originalIdx + ${w}(i);\n          if (${T} < 0 || ${T} >= ${r[C]}) {\n            ${(()=>m?`coefs[i + 1] = 0.0;\n                        continue;`:d?`return ${c};`:`${T} = max(0, min(${T}, ${r[C]} - 1));`)()};\n          }\n        var input_indices_copy: ${e.type.indices} = input_indices;\n          ${e.indicesSet(\"input_indices_copy\",C,`u32(${T})`)};\n          data[i + 1] = ${C===b?e.getByIndices(\"input_indices_copy\"):\"rowCubicInterpolation(input_indices_copy, output_indices)\"};\n        }\n        return cubicInterpolation1D(data, coefs);\n      }`};return`\n    ${x(b)};\n    ${x($)};\n  fn getCubicInterpolationCoefs(s: ${w}) -> array<${w}, 4> {\n    var absS = abs(s);\n    var coeffs: array<${w}, 4> = array<${w}, 4>(0.0, 0.0, 0.0, 0.0);\n    var oneMinusAbsS: ${w} = 1.0 - absS;\n    var twoMinusAbsS: ${w} = 2.0 - absS;\n    var onePlusAbsS: ${w} = 1.0 + absS;\n    coeffs[0] = ((${a} * onePlusAbsS - 5 * ${a}) * onePlusAbsS + 8 * ${a}) * onePlusAbsS - 4 * ${a};\n    coeffs[1] = ((${a} + 2) * absS - (${a} + 3)) * absS * absS + 1;\n    coeffs[2] = ((${a} + 2) * oneMinusAbsS - (${a} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\n    coeffs[3] = ((${a} * twoMinusAbsS - 5 * ${a}) * twoMinusAbsS + 8 * ${a}) * twoMinusAbsS - 4 * ${a};\n    return coeffs;\n  }\n\n  fn cubicInterpolation1D(x: array<${w}, 4>, coefs: array<${w}, 4>) -> ${w} {\n    var coefsSum: ${w} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\n    return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\n  }\n\n  fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${w} {\n    var input_indices: ${e.type.indices} = output_indices;\n    return colCubicInterpolation(input_indices, output_indices);\n  }\n    `},Bm=(e,t,r,n,i)=>{let[a,d,c,m,u]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],g=e.type.value;return`\n    fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${g} {\n      var input_indices: ${e.type.indices};\n      ${e.indicesSet(\"input_indices\",d,`max(0, min(depth, ${r[d]} - 1))`)};\n      ${e.indicesSet(\"input_indices\",c,`max(0, min(height, ${r[c]} - 1))`)};\n      ${e.indicesSet(\"input_indices\",m,`max(0, min(width, ${r[m]} - 1))`)};\n      ${ed(e,u,a,3)}\n      return ${e.getByIndices(\"input_indices\")};\n    }\n\n    fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${g} {\n      var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\n      var depth:${g} = originalIndices[${d}];\n      var height:${g} = originalIndices[${c}];\n      var width:${g} = originalIndices[${m}];\n      ${n?`if (depth < 0 || depth > (${r[d]} - 1) || height < 0 || height > (${r[c]} - 1) || width < 0 || (width > ${r[m]} - 1)) {\n      return ${i};\n        }`:\"\"};\n\n    depth = max(0, min(depth, ${r[d]} - 1));\n      height = max(0, min(height, ${r[c]} - 1));\n      width = max(0, min(width, ${r[m]} - 1));\n      var depth1: u32 = u32(depth);\n      var height1: u32 = u32(height);\n      var width1: u32 = u32(width);\n      var depth2: u32 = u32(depth + 1);\n      var height2: u32 = u32(height + 1);\n      var width2: u32 = u32(width + 1);\n      var channel: u32 = ${r.length>3?`u32(originalIndices[${u}])`:\"0\"};\n      var batch: u32 =  ${r.length>3?`u32(originalIndices[${a}])`:\"0\"};\n\n      var x111: ${g} = getInputValue(batch, channel, depth1, height1, width1);\n      var x112: ${g} = getInputValue(batch, channel, depth1, height1, width2);\n      var x121: ${g} = getInputValue(batch, channel, depth1, height2, width1);\n      var x122: ${g} = getInputValue(batch, channel, depth1, height2, width2);\n      var x211: ${g} = getInputValue(batch, channel, depth2, height1, width1);\n      var x212: ${g} = getInputValue(batch, channel, depth2, height1, width2);\n      var x221: ${g} = getInputValue(batch, channel, depth2, height2, width1);\n      var x222: ${g} = getInputValue(batch, channel, depth2, height2, width2);\n      var dx1: ${g} = abs(depth - ${g}(depth1));\n      var dx2: ${g} = abs(${g}(depth2) - depth);\n      var dy1: ${g} = abs(height - ${g}(height1));\n      var dy2: ${g} = abs(${g}(height2) - height);\n      var dz1: ${g} = abs(width - ${g}(width1));\n      var dz2: ${g} = abs(${g}(width2) - width);\n      if (depth1 == depth2) {\n        dx1 = 0.5;\n        dx2 = 0.5;\n      }\n      if (height1 == height2) {\n        dy1 = 0.5;\n        dy2 = 0.5;\n      }\n      if (width1 == width2) {\n        dz1 = 0.5;\n        dz2 = 0.5;\n      }\n      return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\n              x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\n    }`},Dm=(e,t,r,n,i,s)=>{let a=e.dims,d=Tm(s,t.axes,a.length),c=Am(a,n,i,t.axes),m=n.slice();n.length===0&&(m=a.map((S,E)=>S===0?1:c[E]/S),t.keepAspectRatioPolicy!==\"stretch\"&&(c=Em(a,m,t)));let u=K(\"output\",e.dataType,c.length),g=U(\"input\",e.dataType,a.length),b=M.size(c),$=a.length===c.length&&a.every((S,E)=>S===c[E]),w=t.coordinateTransformMode===\"tf_crop_and_resize\",x=t.extrapolationValue,C=g.type.value,T=S=>`\n      ${$?\"\":`\n      ${Cm(t.coordinateTransformMode,C)};\n      ${(()=>{switch(t.mode){case\"nearest\":return`\n              ${Pm(g,a)};\n              ${Im(t.nearestMode,r,C)};\n              ${Om(g,u,a,c,m.length,d.length,w)};\n              `;case\"linear\":return`\n              ${km(u,a,c,m.length,d.length)};\n              ${(()=>{if(a.length===2||a.length===4)return`${Rm(g,u,a,w,x)}`;if(a.length===3||a.length===5)return`${Bm(g,u,a,w,x)}`;throw Error(\"Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.\")})()};\n            `;case\"cubic\":return`\n            ${(()=>{if(a.length===2||a.length===4)return`${zm(g,u,a,c,m,d,t.cubicCoeffA,w,t.extrapolationValue,t.excludeOutside)}`;throw Error(\"Cubic mode only supports input dims 2 and 4 are supported in linear mode.\")})()};\n            `;default:throw Error(\"Invalid resize mode\")}})()};\n      `}\n      ${S.registerUniform(\"output_size\",\"u32\").registerUniform(\"scales\",\"f32\",m.length).registerUniform(\"roi\",\"f32\",d.length).declareVariables(g,u)}\n      ${S.mainStart()}\n        ${S.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n        ${$?\"output[global_idx] = input[global_idx];\":`\n        let output_indices = ${u.offsetToIndices(\"global_idx\")};\n        var input_indices: ${g.type.indices};\n        ${(()=>{switch(t.mode){case\"nearest\":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\n                if (checkInputIndices(input_indices)) {\n                  output[global_idx] = ${g.getByIndices(\"input_indices\")};\n                } else {\n                  output[global_idx] = ${t.extrapolationValue};\n                }`;case\"linear\":return`output[global_idx] = ${a.length===2||a.length===4?\"bilinearInterpolation\":\"trilinearInterpolation\"}(output_indices);`;case\"cubic\":return\"output[global_idx] = bicubicInterpolation(output_indices);\";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\n`}\n      }`;return{name:\"Resize\",shaderCache:{hint:`${t.cacheKey}|${r}|${m.length>0?m:\"\"}|${i.length>0?i:\"\"}|${d.length>0?d:\"\"}|${$}|${a}`,inputDependencies:[\"rank\"]},getShaderSource:T,getRunData:()=>({outputs:[{dims:c,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:[{type:12,data:b},{type:1,data:m},{type:1,data:d},...X(a,c)]})}},Mm=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},td=(e,t)=>{let r=[],n=[],i=[],s=Mm(e);if(t.antialias!==0)throw Error(\"Only default value (0) for Antialias attribute is supported\");Sm(e.inputs,t,s,r,n,i),e.compute(Dm(e.inputs[0],t,s,r,n,i),{inputs:[0]})},rd=e=>{let t=e.antialias,r=e.axes,n=e.coordinateTransformMode,i=e.cubicCoeffA,s=e.excludeOutside!==0,a=e.extrapolationValue,d=e.keepAspectRatioPolicy,c=e.mode,m=e.nearestMode===\"\"?\"simple\":e.nearestMode;return we({antialias:t,axes:r,coordinateTransformMode:n,cubicCoeffA:i,excludeOutside:s,extrapolationValue:a,keepAspectRatioPolicy:d,mode:c,nearestMode:m})}});var Um,Wm,id,od=j(()=>{\"use strict\";ye();xe();Ze();_e();Um=(e,t)=>{let[r,n,i,s]=e,{numHeads:a,rotaryEmbeddingDim:d}=t;if(r.dims.length!==3&&r.dims.length!==4)throw new Error(`Input 'x' is expected to have 3 or 4 dimensions, got ${r.dims.length}`);if(!M.areEqual(n.dims,[])&&!M.areEqual(n.dims,[1])&&n.dims.length!==2)throw new Error(`Input 'position_ids' is expected to have 0, 1, or 2 dimensions, got ${n.dims.length}`);if(i.dims.length!==2)throw new Error(`Input 'cos_cache' is expected to have 2 dimensions, got ${i.dims.length}`);if(s.dims.length!==2)throw new Error(`Input 'sin_cache' is expected to have 2 dimensions, got ${s.dims.length}`);if(!M.areEqual(i.dims,s.dims))throw new Error(\"Inputs 'cos_cache' and 'sin_cache' are expected to have the same shape\");if(d>0&&a===0)throw new Error(\"num_heads must be provided if rotary_embedding_dim is specified\");let c=r.dims[0],m=r.dims[r.dims.length-2],u=i.dims[0],g=M.sizeFromDimension(r.dims,1)/m,b=d===0?i.dims[1]*2:g/a;if(d>b)throw new Error(\"rotary_embedding_dim must be less than or equal to head_size\");if(n.dims.length===2){if(c!==n.dims[0])throw new Error(`Input 'position_ids' dimension 0 should be of size batch_size, got ${n.dims[0]}`);if(m!==n.dims[1])throw new Error(`Input 'position_ids' dimension 1 should be of size sequence_length, got ${n.dims[1]}`)}if(b/2!==i.dims[1]&&d/2!==i.dims[1])throw new Error(`Input 'cos_cache' dimension 1 should be same as head_size / 2 or rotary_embedding_dim / 2, got ${i.dims[1]}`);if(m>u)throw new Error(\"Updating cos_cache and sin_cache in RotaryEmbedding is not currently supported\")},Wm=(e,t)=>{let{interleaved:r,numHeads:n,rotaryEmbeddingDim:i,scale:s}=t,a=e[0].dims[0],d=M.sizeFromDimension(e[0].dims,1),c=e[0].dims[e[0].dims.length-2],m=d/c,u=e[2].dims[1],g=i===0?u*2:m/n,b=new Array(a,c,m/g,g-u),$=M.computeStrides(b),w=[{type:1,data:s},{type:12,data:b},{type:12,data:$},...e[0].dims.length===3?new Array({type:12,data:[d,m,g,1]}):[],...e[0].dims.length===4?new Array({type:12,data:[d,g,c*g,1]}):[],...X(e[0].dims,e[1].dims,e[2].dims,e[3].dims,e[0].dims)],x=C=>{let T=U(\"input\",e[0].dataType,e[0].dims.length),S=U(\"position_ids\",e[1].dataType,e[1].dims.length),E=U(\"cos_cache\",e[2].dataType,e[2].dims.length),k=U(\"sin_cache\",e[3].dataType,e[3].dims.length),P=K(\"output\",e[0].dataType,e[0].dims.length);return C.registerUniforms([{name:\"scale\",type:\"f32\"},{name:\"global_shape\",type:\"u32\",length:b.length},{name:\"global_strides\",type:\"u32\",length:$.length},{name:\"input_output_strides\",type:\"u32\",length:$.length}]),`\n        ${C.declareVariables(T,S,E,k,P)}\n\n        ${C.mainStart(mr)}\n          let half_rotary_emb_dim = uniforms.${E.name}_shape[1];\n          let bsnh = global_idx / uniforms.global_strides % uniforms.global_shape;\n          let size = uniforms.global_shape[0] * uniforms.global_strides[0];\n          ${C.guardAgainstOutOfBoundsWorkgroupSizes(\"size\")}\n\n          if (bsnh[3] < half_rotary_emb_dim) {\n            let position_ids_idx =\n                ${S.broadcastedIndicesToOffset(\"bsnh.xy\",K(\"\",S.type.tensor,2))};\n            let position_id =\n                u32(${S.getByOffset(\"position_ids_idx\")}) + select(0, bsnh[1], position_ids_idx == 0);\n            let i = dot(bsnh, uniforms.input_output_strides) + select(0, bsnh[3], ${r});\n            let j = i + select(half_rotary_emb_dim, 1, ${r});\n            let re = ${T.getByOffset(\"i\")} * ${E.get(\"position_id\",\"bsnh[3]\")} -\n                ${T.getByOffset(\"j\")} * ${k.get(\"position_id\",\"bsnh[3]\")};\n            ${P.setByOffset(\"i\",\"re\")}\n            let im = ${T.getByOffset(\"i\")} * ${k.get(\"position_id\",\"bsnh[3]\")} +\n                ${T.getByOffset(\"j\")} * ${E.get(\"position_id\",\"bsnh[3]\")};\n            ${P.setByOffset(\"j\",\"im\")}\n          } else {\n            let k = dot(bsnh, uniforms.input_output_strides) + half_rotary_emb_dim;\n            ${P.setByOffset(\"k\",T.getByOffset(\"k\"))}\n          }\n        }`};return{name:\"RotaryEmbedding\",shaderCache:{hint:we({interleaved:r}).cacheKey,inputDependencies:[\"rank\",\"rank\",\"rank\",\"rank\"]},getShaderSource:x,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(M.size(b)/mr)},programUniforms:w})}},id=(e,t)=>{Um(e.inputs,t),e.compute(Wm(e.inputs,t))}});var Nm,Vm,ad,sd=j(()=>{\"use strict\";ye();xe();_e();Nm=e=>{if(!e||e.length<3)throw new Error(\"layerNorm requires at least 3 inputs.\");let t=e[0],r=e[1],n=e[2];if(t.dataType!==r.dataType||t.dataType!==n.dataType)throw new Error(\"All inputs must have the same data type\");if(t.dims.length!==3&&t.dims.length!==2)throw new Error(\"Input must be 2D or 3D\");if(r.dims.length!==3&&r.dims.length!==2)throw new Error(\"Skip must be 2D or 3D\");let i=t.dims[t.dims.length-1],s=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==i)throw new Error(\"Skip must have the same hidden size as input\");if(r.dims[r.dims.length-2]!==s)throw new Error(\"Skip must have the same sequence length as input\");if(n.dims.length!==1)throw new Error(\"Gamma must be 1D\");if(n.dims[n.dims.length-1]!==i)throw new Error(\"Gamma must have the same hidden size as input\");if(e.length>3){let a=e[3];if(a.dims.length!==1)throw new Error(\"Beta must be 1D\");if(a.dims[a.dims.length-1]!==i)throw new Error(\"Beta must have the same hidden size as input\")}if(e.length>4){let a=e[4];if(a.dims.length!==1)throw new Error(\"Bias must be 1D\");if(a.dims[a.dims.length-1]!==i)throw new Error(\"Bias must have the same hidden size as input\")}},Vm=(e,t,r,n)=>{let i=t.simplified,s=e[0].dims,a=M.size(s),d=s,c=a,m=s.slice(-1)[0],u=n?s.slice(0,-1).concat(1):[],g=!i&&e.length>3,b=e.length>4,$=n&&r>1,w=n&&r>2,x=r>3,C=Ue(m),T=[{type:12,data:c},{type:12,data:C},{type:12,data:m},{type:1,data:t.epsilon}],S=k=>{let P=[{name:\"output_size\",type:\"u32\"},{name:\"components\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"},{name:\"epsilon\",type:\"f32\"}],R=[U(\"x\",e[0].dataType,e[0].dims,C),U(\"skip\",e[1].dataType,e[1].dims,C),U(\"gamma\",e[2].dataType,e[2].dims,C)];g&&R.push(U(\"beta\",e[3].dataType,e[3].dims,C)),b&&R.push(U(\"bias\",e[4].dataType,e[4].dims,C)),R.push(K(\"output\",e[0].dataType,d,C)),$&&R.push(K(\"mean_output\",1,u)),w&&R.push(K(\"inv_std_output\",1,u)),x&&R.push(K(\"input_skip_bias_sum\",e[0].dataType,d,C));let L=De(e[0].dataType);return`\n\n      ${k.registerUniforms(P).declareVariables(...R)}\n\n      ${k.mainStart()}\n        ${k.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size / uniforms.hidden_size\")}\n        let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components;\n        let offset = global_idx * hidden_size_vectorized;\n        var sum = ${At(\"f32\",C)};\n        var squareSum = ${At(\"f32\",C)};\n        for (var i: u32 = 0; i < hidden_size_vectorized; i++) {\n          let skip_value = skip[offset + i];\n          let bias_value = ${b?\"bias[i]\":L+\"(0.0)\"};\n          let input_value = x[offset + i];\n          let value = input_value + skip_value + bias_value;\n          ${x?\"input_skip_bias_sum[offset + i] = value;\":\"\"}\n          output[offset + i] = value;\n          let f32_value = ${fr(L,C,\"value\")};\n          sum += f32_value;\n          squareSum += f32_value * f32_value;\n        }\n        let mean = ${Et(\"sum\",C)} / f32(uniforms.hidden_size);\n        let inv_std_dev = inverseSqrt(${Et(\"squareSum\",C)} / f32(uniforms.hidden_size) ${i?\"\":\"- mean * mean\"} + uniforms.epsilon);\n        ${$?\"mean_output[global_idx] = mean;\":\"\"}\n        ${w?\"inv_std_output[global_idx] = inv_std_dev;\":\"\"}\n        for (var i: u32 = 0; i < hidden_size_vectorized; i++) {\n          output[offset + i] = (output[offset + i] ${i?\"\":`- ${L}(mean)`}) * ${L}(inv_std_dev) * gamma[i] ${g?\"+ beta[i]\":\"\"};\n        }\n      }`},E=[{dims:d,dataType:e[0].dataType}];return r>1&&E.push({dims:u,dataType:1}),r>2&&E.push({dims:u,dataType:1}),r>3&&E.push({dims:s,dataType:e[0].dataType}),{name:\"SkipLayerNormalization\",shaderCache:{hint:`${C};${$};${w};${x}`,inputDependencies:e.map((k,P)=>\"type\")},getShaderSource:S,getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(c/m/64)},programUniforms:T})}},ad=(e,t)=>{Nm(e.inputs);let n=[0];e.outputCount>1&&n.push(-3),e.outputCount>2&&n.push(-3),e.outputCount>3&&n.push(3),e.compute(Vm(e.inputs,t,e.outputCount,!1),{outputs:n})}});var Hm,ui,Gm,ud,Lm,Fm,ld,dd,cd=j(()=>{\"use strict\";ye();xe();Ze();_e();Hm=(e,t)=>{if(!e||e.length<1)throw new Error(\"too few inputs\");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error(\"axes, starts and ends must have the same length\")}else if(t.starts.length!==t.ends.length)throw new Error(\"starts and ends must have the same length\");e.slice(1).forEach((r,n)=>{if(e[n+1].dataType!==6&&e[n+1].dataType!==7)throw new Error(`Input ${n} must be an array of int32 or int64`)})},ui=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(n=>r.push(Number(n)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(n=>r.push(Number(n)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},Gm=(e,t)=>{if(e.length>1){let r=ui(e,1),n=ui(e,2),i=ui(e,3);return i.length===0&&(i=[...Array(e[0].dims.length).keys()]),we({starts:r,ends:n,axes:i})}else return t},ud=(e,t,r,n,i)=>{let s=e;return e<0&&(s+=r[n[t]]),i[t]<0?Math.max(0,Math.min(s,r[n[t]]-1)):Math.max(0,Math.min(s,r[n[t]]))},Lm=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\n          var input_indices: ${e.type.indices};\n          var carry = 0u;\n          for (var i = ${r.length}; i >= 0; i--) {\n            let input_shape_i = ${fe(\"uniforms.input_shape\",\"i\",r.length)};\n            let steps_i = ${fe(\"uniforms.steps\",\"i\",r.length)};\n            let signs_i = ${fe(\"uniforms.signs\",\"i\",r.length)};\n            let starts_i = ${fe(\"uniforms.starts\",\"i\",r.length)};\n            var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\n            var input_index = output_index * steps_i + starts_i + carry;\n            carry = input_index / input_shape_i;\n            input_index = input_index % input_shape_i;\n            if (signs_i < 0) {\n              input_index = input_shape_i - input_index - 1u + starts_i;\n            }\n            ${e.indicesSet(\"input_indices\",\"i\",\"input_index\")};\n          }\n          return input_indices;\n      }`,Fm=(e,t)=>{let r=e[0].dims,n=M.size(r),i=t.axes.length>0?M.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],s=ui(e,4);s.forEach(T=>T!==0||(()=>{throw new Error(\"step cannot be 0\")})),s.length===0&&(s=Array(i.length).fill(1));let a=t.starts.map((T,S)=>ud(T,S,r,i,s)),d=t.ends.map((T,S)=>ud(T,S,r,i,s));if(i.length!==a.length||i.length!==d.length)throw new Error(\"start, ends and axes should have the same number of elements\");if(i.length!==r.length)for(let T=0;T<r.length;++T)i.includes(T)||(a.splice(T,0,0),d.splice(T,0,r[T]),s.splice(T,0,1));let c=s.map(T=>Math.sign(T));s.forEach((T,S,E)=>{if(T<0){let k=(d[S]-a[S])/T,P=a[S],R=P+k*s[S];a[S]=R,d[S]=P,E[S]=-T}});let m=r.slice(0);i.forEach((T,S)=>{m[T]=Math.ceil((d[T]-a[T])/s[T])});let u={dims:m,dataType:e[0].dataType},g=K(\"output\",e[0].dataType,m.length),b=U(\"input\",e[0].dataType,e[0].dims.length),$=M.size(m),w=[{name:\"outputSize\",type:\"u32\"},{name:\"starts\",type:\"u32\",length:a.length},{name:\"signs\",type:\"i32\",length:c.length},{name:\"steps\",type:\"u32\",length:s.length}],x=[{type:12,data:$},{type:12,data:a},{type:6,data:c},{type:12,data:s},...X(e[0].dims,m)],C=T=>`\n      ${T.registerUniforms(w).declareVariables(b,g)}\n        ${Lm(b,g,r)}\n        ${T.mainStart()}\n          ${T.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\n          let output_indices = ${g.offsetToIndices(\"global_idx\")};\n          let input_indices = calculateInputIndices(output_indices);\n          ${g.setByOffset(\"global_idx\",b.getByIndices(\"input_indices\"))}\n      }`;return{name:\"Slice\",shaderCache:{hint:`${c.length}_${a.length}_${s.length}`,inputDependencies:[\"rank\"]},getShaderSource:C,getRunData:()=>({outputs:[u],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:x})}},ld=(e,t)=>{Hm(e.inputs,t);let r=Gm(e.inputs,t);e.compute(Fm(e.inputs,r),{inputs:[0]})},dd=e=>{let t=e.starts,r=e.ends,n=e.axes;return we({starts:t,ends:r,axes:n})}});var qm,jm,pd,md,fd=j(()=>{\"use strict\";ye();xe();Ze();_e();qm=e=>{if(!e||e.length!==1)throw new Error(\"Softmax op requires 1 input.\")},jm=(e,t)=>{let r=e.dims,n=M.size(r),i=64,s=t.axis;if(s<0&&(s=r.length+s),s<r.length-1)throw new Error(\"softmax only supports last axis for now.\");let a=r[s],d=n/a,c=Ue(a),m=a/c,u=(C,T)=>T===4?`max(max(${C}.x, ${C}.y), max(${C}.z, ${C}.w))`:T===2?`max(${C}.x, ${C}.y)`:T===3?`max(max(${C}.x, ${C}.y), ${C}.z)`:C,g=U(\"x\",e.dataType,e.dims,c),b=K(\"result\",e.dataType,e.dims,c),$=g.type.value,w=De(e.dataType)===\"f32\"?`var threadMax = ${$}(-3.402823e+38f);`:`var threadMax = ${$}(-65504.0h);`,x=C=>`\n      var<workgroup> rowMaxShared : ${$};\n      var<workgroup> rowSumShared : ${$};\n      var<workgroup> threadShared : array<${$}, ${i}>;\n\n      fn getValue(row: i32, col: i32, row_stride: i32) -> ${$} {\n        let index = row * row_stride + col;\n        return x[index];\n      }\n\n      fn setValue(row: i32, col: i32, row_stride: i32, value: ${$}) {\n        let index = row * row_stride + col;\n        result[index] = value;\n      }\n      ${C.registerUniform(\"packedCols\",\"i32\").declareVariables(g,b)}\n      ${C.mainStart()}\n        let gindex = i32(global_idx);\n        let lindex = i32(local_idx);\n        const wg = ${i};\n        let row = gindex / wg;\n        let cols = uniforms.packedCols;\n        let row_stride : i32 = uniforms.packedCols;\n\n        // find the rows max\n        ${w}\n        for (var col = lindex; col < cols; col += wg) {\n          let value = getValue(row, col, row_stride);\n          threadMax = max(threadMax, value);\n        }\n        if (lindex < cols) {\n          threadShared[lindex] = threadMax;\n        }\n        workgroupBarrier();\n\n        var reduceSize = min(cols, wg);\n        for (var currSize = reduceSize >> 1;  currSize > 0; currSize = reduceSize >> 1) {\n          reduceSize = currSize + (reduceSize & 1);\n          if (lindex < currSize) {\n            threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\n          }\n          workgroupBarrier();\n        }\n        if (lindex == 0) {\n          rowMaxShared = ${$}(${u(\"threadShared[0]\",c)});\n        }\n        workgroupBarrier();\n\n        // find the rows sum\n        var threadSum = ${$}(0.0);\n        for (var col = lindex; col < cols; col += wg) {\n          let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\n          threadSum += subExp;\n        }\n        threadShared[lindex] = threadSum;\n        workgroupBarrier();\n\n        for (var currSize = wg >> 1;  currSize > 0; currSize = currSize >> 1) {\n          if (lindex < currSize) {\n            threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\n          }\n          workgroupBarrier();\n        }\n        if (lindex == 0) {\n          rowSumShared = ${$}(${Et(\"threadShared[0]\",c)});\n        }\n        workgroupBarrier();\n\n        // calculate final value for each element in the row\n        for (var col = lindex; col < cols; col += wg) {\n          let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\n          setValue(row, col, row_stride, value);\n        }\n      }`;return{name:\"Softmax\",shaderCache:{hint:`${c}`,inputDependencies:[\"type\"]},getRunData:()=>({outputs:[{dims:r,dataType:e.dataType}],dispatchGroup:{x:d},programUniforms:[{type:6,data:m}]}),getShaderSource:x}},pd=(e,t)=>{qm(e.inputs),e.compute(jm(e.inputs[0],t))},md=e=>we({axis:e.axis})});var Km,Ym,Xm,Zm,Qm,hd,gd,yd=j(()=>{\"use strict\";ye();xe();Ze();_e();Km=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\")},Ym=(e,t)=>{let r=[],n=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(i=>r.push(Number(i))),n=r.length),we({numOutputs:n,axis:t.axis,splitSizes:r})},Xm=e=>`\nfn calculateOutputIndex(index: u32) -> u32 {\n    for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\n    if (index < ${fe(\"uniforms.size_in_split_axis\",\"i\",e)}) {\n        return i;\n    }\n    }\n    return ${e}u;\n}`,Zm=e=>{let t=e.length,r=[];for(let n=0;n<t;++n){let i=e[n].setByIndices(\"indices\",\"input[global_idx]\");t===1?r.push(i):n===0?r.push(`if (output_number == ${n}u) { ${i} }`):n===t-1?r.push(`else { ${i} }`):r.push(`else if (output_number == ${n}) { ${i} }`)}return`\n      fn writeBufferData(output_number: u32, indices: ${e[0].type.indices}, global_idx: u32) {\n        ${r.join(`\n`)}\n      }`},Qm=(e,t)=>{let r=e[0].dims,n=M.size(r),i=e[0].dataType,s=M.normalizeAxis(t.axis,r.length),a=new Array(t.numOutputs),d=U(\"input\",i,r.length),c=new Array(t.numOutputs),m=[],u=[],g=0,b=[{type:12,data:n}];for(let w=0;w<t.numOutputs;w++){g+=t.splitSizes[w],c[w]=g;let x=r.slice();x[t.axis]=t.splitSizes[w],u.push(x),a[w]=K(`output${w}`,i,x.length),m.push({dims:u[w],dataType:e[0].dataType})}b.push({type:12,data:c},...X(r,...u));let $=w=>`\n  ${w.registerUniform(\"input_size\",\"u32\").registerUniform(\"size_in_split_axis\",\"u32\",c.length).declareVariables(d,...a)}\n  ${Xm(c.length)}\n  ${Zm(a)}\n\n  ${w.mainStart()}\n    ${w.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.input_size\")}\n\n    var indices = ${d.offsetToIndices(\"global_idx\")};\n    var index = ${d.indicesGet(\"indices\",s)};\n    let output_number = calculateOutputIndex(index);\n    if (output_number != 0) {\n      index -= ${fe(\"uniforms.size_in_split_axis\",\"output_number - 1u\",c.length)};\n      ${d.indicesSet(\"indices\",s,\"index\")};\n    }\n    writeBufferData(output_number, indices, global_idx);\n  }`;return{name:\"Split\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\"]},getShaderSource:$,getRunData:()=>({outputs:m,dispatchGroup:{x:Math.ceil(n/64)},programUniforms:b})}},hd=(e,t)=>{Km(e.inputs);let r=e.inputs.length===1?t:Ym(e.inputs,t);e.compute(Qm(e.inputs,r),{inputs:[0]})},gd=e=>{let t=e.axis,r=e.splitSizes,n=e.numOutputs<0?r.length:e.numOutputs;if(n!==r.length)throw new Error(\"numOutputs and splitSizes lengh must be equal\");return we({axis:t,numOutputs:n,splitSizes:r})}});var bd,Jm,ef,tf,vd,wd=j(()=>{\"use strict\";ye();xe();_e();bd=e=>Array.from(e.getBigInt64Array(),Number),Jm=e=>{if(!e||e.length!==2)throw new Error(\"Tile requires 2 inputs.\");if(e[0].dataType!==1&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error(\"Tile only support float, int32, and uint32 data types\");if(e[1].dataType!==7)throw new Error(\"Tile `repeats` input should be of int64 data type\");if(e[1].dims.length!==1)throw new Error(\"Tile `repeats` input should be 1-D\");if(bd(e[1]).length!==e[0].dims.length)throw new Error(\"Tile `repeats` input should have same number of elements as rank of input data tensor\")},ef=(e,t)=>{let r=[];for(let n=0;n<e.length;++n)r.push(e[n]*t[n]);return r},tf=e=>{let t=e[0].dims,r=bd(e[1]),n=ef(t,r),i=M.size(n),s=e[0].dataType,a=U(\"input\",s,t.length),d=K(\"output\",s,n.length),c=m=>`\n      const inputShape = ${a.indices(...t)};\n      ${m.registerUniform(\"output_size\",\"u32\").declareVariables(a,d)}\n      ${m.mainStart()}\n      ${m.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\n      let output_indices = ${d.offsetToIndices(\"global_idx\")};\n      var input_indices: ${a.type.indices};\n      for (var i = 0; i < ${t.length}; i++) {\n        let input_dim_i = ${a.indicesGet(\"uniforms.input_shape\",\"i\")};\n        let input_dim_value = ${d.indicesGet(\"output_indices\",\"i\")}  % input_dim_i;\n\n        ${a.indicesSet(\"input_indices\",\"i\",\"input_dim_value\")}\n      }\n      ${d.setByOffset(\"global_idx\",a.getByIndices(\"input_indices\"))}\n    }`;return{name:\"Tile\",shaderCache:{hint:`${r}`,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:[{type:12,data:i},...X(e[0].dims,n)]}),getShaderSource:c}},vd=e=>{Jm(e.inputs),e.compute(tf(e.inputs),{inputs:[0]})}});var rf,nf,$d,_d=j(()=>{\"use strict\";ye();xe();_e();rf=(e,t,r,n,i)=>{let s=K(\"output_data\",i,r.length,4),a=U(\"a_data\",t[1].dataType,t[1].dims.length,4),d=U(\"b_data\",t[2].dataType,t[2].dims.length,4),c=U(\"c_data\",t[0].dataType,t[0].dims.length,4),m,u=(g,b,$)=>`select(${b}, ${g}, ${$})`;if(!n)m=s.setByOffset(\"global_idx\",u(a.getByOffset(\"global_idx\"),d.getByOffset(\"global_idx\"),c.getByOffset(\"global_idx\")));else{let g=(b,$,w=\"\")=>{let x=`a_data[index_a${$}][component_a${$}]`,C=`b_data[index_b${$}][component_b${$}]`,T=`bool(c_data[index_c${$}] & (0xffu << (component_c${$} * 8)))`;return`\n            let output_indices${$} = ${s.offsetToIndices(`global_idx * 4u + ${$}u`)};\n            let offset_a${$} = ${a.broadcastedIndicesToOffset(`output_indices${$}`,s)};\n            let offset_b${$} = ${d.broadcastedIndicesToOffset(`output_indices${$}`,s)};\n            let offset_c${$} = ${c.broadcastedIndicesToOffset(`output_indices${$}`,s)};\n            let index_a${$} = offset_a${$} / 4u;\n            let index_b${$} = offset_b${$} / 4u;\n            let index_c${$} = offset_c${$} / 4u;\n            let component_a${$} = offset_a${$} % 4u;\n            let component_b${$} = offset_b${$} % 4u;\n            let component_c${$} = offset_c${$} % 4u;\n            ${b}[${$}] = ${w}(${u(x,C,T)});\n          `};i===9?m=`\n            var data = vec4<u32>(0);\n            ${g(\"data\",0,\"u32\")}\n            ${g(\"data\",1,\"u32\")}\n            ${g(\"data\",2,\"u32\")}\n            ${g(\"data\",3,\"u32\")}\n            output_data[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:m=`\n            ${g(\"output_data[global_idx]\",0)}\n            ${g(\"output_data[global_idx]\",1)}\n            ${g(\"output_data[global_idx]\",2)}\n            ${g(\"output_data[global_idx]\",3)}\n          `}return`\n        ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(c,a,d,s)}\n        ${e.mainStart()}\n        ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\n        ${m}\n      }`},nf=e=>{let t=e[1].dims,r=e[2].dims,n=e[0].dims,i=e[1].dataType,s=!(M.areEqual(t,r)&&M.areEqual(r,n)),a=t,d=M.size(t);if(s){let m=zt.calcShape(zt.calcShape(t,r,!1),n,!1);if(!m)throw new Error(\"Can't perform where op on the given tensors\");a=m,d=M.size(a)}let c=Math.ceil(d/4);return{name:\"Where\",shaderCache:{inputDependencies:[\"rank\",\"rank\",\"rank\"]},getShaderSource:m=>rf(m,e,a,s,i),getRunData:()=>({outputs:[{dims:a,dataType:i}],dispatchGroup:{x:Math.ceil(d/64/4)},programUniforms:[{type:12,data:c},...X(n,t,r,a)]})}},$d=e=>{e.compute(nf(e.inputs))}});var xd,Sd=j(()=>{\"use strict\";zs();oo();Ws();Vs();Cu();Du();io();co();Xu();Ju();rl();sl();dl();pl();hl();bl();$l();xl();Cl();mo();Al();Pl();zl();Zl();Jl();jn();nd();od();sd();cd();fd();yd();wd();Rr();Jn();_d();xd=new Map([[\"Abs\",[Hs]],[\"Acos\",[Gs]],[\"Acosh\",[Ls]],[\"Add\",[Iu]],[\"ArgMax\",[Rs,no]],[\"ArgMin\",[Ps,no]],[\"Asin\",[Fs]],[\"Asinh\",[qs]],[\"Atan\",[js]],[\"Atanh\",[Ks]],[\"Attention\",[Ms]],[\"AveragePool\",[Hl,Vl]],[\"BatchNormalization\",[Us]],[\"BiasAdd\",[Ns]],[\"BiasSplitGelu\",[Su]],[\"Cast\",[Xs,Ys]],[\"Ceil\",[Qs]],[\"Clip\",[Zs]],[\"Concat\",[Bs,Ds]],[\"Conv\",[go,ho]],[\"ConvTranspose\",[Yu,Ku]],[\"Cos\",[Js]],[\"Cosh\",[eu]],[\"CumSum\",[Zu,Qu]],[\"DepthToSpace\",[el,tl]],[\"Div\",[Tu]],[\"Einsum\",[ol,al]],[\"Elu\",[tu,Zn]],[\"Equal\",[Au]],[\"Erf\",[ru]],[\"Exp\",[nu]],[\"Expand\",[ll]],[\"FastGelu\",[cl]],[\"Floor\",[iu]],[\"FusedConv\",[go,ho]],[\"Gather\",[fl,ml]],[\"GatherElements\",[yl,gl]],[\"Gelu\",[ou]],[\"Gemm\",[wl,vl]],[\"GlobalAveragePool\",[Fl,Ll]],[\"GlobalMaxPool\",[Xl,Yl]],[\"Greater\",[Pu]],[\"GreaterOrEqual\",[zu]],[\"HardSigmoid\",[mu,pu]],[\"InstanceNormalization\",[_l]],[\"LayerNormalization\",[Sl]],[\"LeakyRelu\",[au,Zn]],[\"Less\",[Ru]],[\"LessOrEqual\",[Bu]],[\"Log\",[_u]],[\"MatMul\",[Hu]],[\"MatMulNBits\",[Il,Tl]],[\"MaxPool\",[jl,Kl]],[\"Mul\",[Eu]],[\"MultiHeadAttention\",[Ol,kl]],[\"Neg\",[uu]],[\"Not\",[su]],[\"Pad\",[Rl]],[\"Pow\",[ku]],[\"Range\",[Ql]],[\"Reciprocal\",[lu]],[\"ReduceMin\",[Is]],[\"ReduceMean\",[$s]],[\"ReduceMax\",[Cs]],[\"ReduceSum\",[As]],[\"ReduceProd\",[Ts]],[\"ReduceL1\",[_s]],[\"ReduceL2\",[xs]],[\"ReduceLogSum\",[ks]],[\"ReduceLogSumExp\",[Ss]],[\"ReduceSumSquare\",[Es]],[\"Relu\",[du]],[\"Resize\",[td,rd]],[\"RotaryEmbedding\",[id]],[\"Sigmoid\",[cu]],[\"Sin\",[fu]],[\"Sinh\",[hu]],[\"Slice\",[ld,dd]],[\"SkipLayerNormalization\",[ad]],[\"Split\",[hd,gd]],[\"Sqrt\",[gu]],[\"Softmax\",[pd,md]],[\"Sub\",[Ou]],[\"Tan\",[yu]],[\"Tanh\",[vu]],[\"ThresholdedRelu\",[$u,Zn]],[\"Tile\",[vd]],[\"Transpose\",[us,ls]],[\"Where\",[$d]]])});var li,Cd=j(()=>{\"use strict\";_t();Xt();_e();li=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,n,i,s){yt(t.programInfo.name);let a=this.backend.device,d=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2);let c=[];for(let u of r)c.push({binding:c.length,resource:{buffer:u.buffer}});for(let u of n)c.push({binding:c.length,resource:{buffer:u.buffer}});s&&c.push({binding:c.length,resource:s});let m=a.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:c,label:t.programInfo.name});if(this.backend.sessionStatus===\"capturing\"){let u={kernelId:this.backend.currentKernelId,computePipeline:t.computePipeline,bindGroup:m,dispatchGroup:i};this.backend.capturedCommandList.get(this.backend.currentSessionId).push(u)}d.setPipeline(t.computePipeline),d.setBindGroup(0,m),d.dispatchWorkgroups(...i),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType===\"at-passes\")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),ut(t.programInfo.name)}dispose(){}build(t,r){yt(t.name);let n=this.backend.device,i=[];n.features.has(\"shader-f16\")&&i.push(\"enable f16;\");let s=as(r,this.backend.device.limits),a=t.getShaderSource(s),d=`${i.join(`\n`)}\n${s.additionalImplementations}\n${a}`,c=n.createShaderModule({code:d,label:t.name});Ne(\"verbose\",()=>`[WebGPU] ${t.name} shader code: ${d}`);let m=n.createComputePipeline({compute:{module:c,entryPoint:\"main\"},layout:\"auto\",label:t.name});return ut(t.name),{programInfo:t,computePipeline:m,uniformVariablesInfo:s.variablesInfo}}normalizeDispatchGroupSize(t){let r=typeof t==\"number\"?t:t.x,n=typeof t==\"number\"?1:t.y||1,i=typeof t==\"number\"?1:t.z||1,s=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=s&&n<=s&&i<=s)return[r,n,i];let a=r*n*i,d=Math.ceil(Math.sqrt(a));if(d>s){if(d=Math.ceil(Math.cbrt(a)),d>s)throw new Error(\"Total dispatch size exceeds WebGPU maximum.\");return[d,d,d]}else return[d,d,1]}}});var of,af,_o,di,Id=j(()=>{\"use strict\";_t();ye();Xt();es();os();Sd();Cd();of=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let n=0;n<e.length;++n){let i=e[n].dataType;switch(t[n]){case\"none\":{r.push(\"\");break}case\"type\":{r.push(`${i}`);break}case\"rank\":{let s=e[n].dims.length;r.push(`${i};${s}`);break}case\"dims\":{let s=e[n].dims.join(\",\");r.push(`${i};${s}`);break}default:throw new Error(`unsupported input dependency: ${t[n]}`)}}return r.join(\"|\")},af=(e,t,r)=>{let n=e.name;return e.shaderCache?.hint&&(n+=\"[\"+e.shaderCache.hint+\"]\"),n+=\":\"+r+`:${of(t,e.shaderCache?.inputDependencies??new Array(t.length).fill(\"dims\"))}`,n},_o=class{constructor(t){t&&(this.architecture=t.architecture,this.vendor=t.vendor)}isArchitecture(t){return this.architecture===t}isVendor(t){return this.vendor===t}},di=class{constructor(){this.currentSessionId=null;this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionStatus=\"default\";this.capturedCommandList=new Map;this.capturedPendingKernels=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error(\"currentKernelCustomData(): currentKernelId is null. (should not happen)\");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let n=[],i={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:n};r.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?n.push(\"chromium-experimental-timestamp-query-inside-passes\"):r.features.has(\"timestamp-query\")&&n.push(\"timestamp-query\"),r.features.has(\"shader-f16\")&&n.push(\"shader-f16\"),this.device=await r.requestDevice(i),this.adapterInfo=new _o(await r.requestAdapterInfo()),this.gpuDataManager=is(this),this.programManager=new li(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,Qa(t.logLevel,!!t.debug),this.device.onuncapturederror=s=>{s.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${s.error.message}`)},Object.defineProperty(this.env.webgpu,\"device\",{value:this.device,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.env.webgpu,\"adapter\",{value:r,writable:!1,enumerable:!0,configurable:!1}),this.setQueryType()}dispose(){typeof this.querySet<\"u\"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t=this.getCommandEncoder(),r={};this.queryType===\"at-passes\"&&(r.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=t.beginComputePass(r)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;yt(),this.endComputePass();let t;this.queryType!==\"none\"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!==\"none\"&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),n=this.pendingQueries.get(t);for(let i=0;i<r.length/2;i++){let s=n[i],a=s.kernelId,d=this.kernels.get(a),c=d.kernelType,m=d.kernelName,u=s.programName,g=s.inputTensorViews,b=s.outputTensorViews,$=r[i*2],w=r[i*2+1];typeof this.queryTimeBase>\"u\"&&(this.queryTimeBase=$);let x=Number($-this.queryTimeBase),C=Number(w-this.queryTimeBase);if(!Number.isSafeInteger(x)||!Number.isSafeInteger(C))throw new RangeError(\"incorrect timestamp range\");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:g.map(T=>({dims:T.dims,dataType:Yt(T.dataType)})),outputsMetadata:b.map(T=>({dims:T.dims,dataType:Yt(T.dataType)})),kernelId:a,kernelType:c,kernelName:m,programName:u,startTime:x,endTime:C});else{let T=\"\";g.forEach((E,k)=>{T+=`input[${k}]: [${E.dims}] | ${Yt(E.dataType)}, `});let S=\"\";b.forEach((E,k)=>{S+=`output[${k}]: [${E.dims}] | ${Yt(E.dataType)}, `}),console.log(`[profiling] kernel \"${a}|${c}|${m}|${u}\" ${T}${S}execution time: ${C-x} ns`)}Bn(\"GPU\",`${u}::${$}::${w}`)}t.unmap(),this.pendingQueries.delete(t)}),ut()}run(t,r,n,i,s,a){yt(t.name);let d=[];for(let E=0;E<r.length;++E){let k=r[E].data;if(k===0)continue;let P=this.gpuDataManager.get(k);if(!P)throw new Error(`no GPU data for input: ${k}`);d.push(P)}let{outputs:c,dispatchGroup:m,programUniforms:u}=t.getRunData(r),g=n.length===0?c.map((E,k)=>k):n;if(g.length!==c.length)throw new Error(`Output size ${g.length} must be equal to ${c.length}.`);let b=[],$=[];for(let E=0;E<c.length;++E){if(!Number.isInteger(g[E])||g[E]<-3||g[E]>=a)throw new Error(`Invalid output index: ${g[E]}`);if(g[E]===-3)continue;let k=g[E]===-1,P=g[E]===-2,R=k||P?s(c[E].dataType,c[E].dims):i(g[E],c[E].dataType,c[E].dims);if(b.push(R),R.data===0)continue;let L=this.gpuDataManager.get(R.data);if(!L)throw new Error(`no GPU data for output: ${R.data}`);if(k&&this.temporaryData.push(L),P){let V=this.kernelPersistentData.get(this.currentKernelId);V||(V=[],this.kernelPersistentData.set(this.currentKernelId,V)),V.push(L)}$.push(L)}if(d.length!==r.length||$.length!==b.length){if($.length===0)return ut(t.name),b;throw new Error(`Program ${t.name} has zero-sized tensor(s) in inputs or outputs. This is not supported now.`)}let w;if(u){let E=0,k=[];u.forEach(V=>{let Y=typeof V.data==\"number\"?[V.data]:V.data;if(Y.length===0)return;let Q=V.type===10?2:4,he,N;V.type===10?(N=Y.length>4?16:Y.length>2?8:Y.length*Q,he=Y.length>4?16:Q*Y.length):(N=Y.length<=2?Y.length*Q:16,he=16),E=Math.ceil(E/N)*N,k.push(E);let se=V.type===10?8:4;E+=Y.length>4?Math.ceil(Y.length/se)*he:Y.length*Q});let P=16;E=Math.ceil(E/P)*P;let R=new ArrayBuffer(E);u.forEach((V,Y)=>{let Q=k[Y],he=typeof V.data==\"number\"?[V.data]:V.data;if(V.type===6)new Int32Array(R,Q,he.length).set(he);else if(V.type===12)new Uint32Array(R,Q,he.length).set(he);else if(V.type===10)new Uint16Array(R,Q,he.length).set(he);else if(V.type===1)new Float32Array(R,Q,he.length).set(he);else throw new Error(`Unsupported uniform type: ${Yt(V.type)}`)});let L=this.gpuDataManager.create(E,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(L.buffer,0,R,0,E),this.gpuDataManager.release(L.id),w={offset:0,size:E,buffer:L.buffer}}let x=this.programManager.normalizeDispatchGroupSize(m),C=x[1]===1&&x[2]===1,T=af(t,r,C),S=this.programManager.getArtifact(T);if(S||(S=this.programManager.build(t,x),this.programManager.setArtifact(T,S),Ne(\"info\",()=>`[artifact] key: ${T}, programName: ${t.name}`)),u&&S.uniformVariablesInfo){if(u.length!==S.uniformVariablesInfo.length)throw new Error(`Uniform variables count mismatch: expect ${S.uniformVariablesInfo.length}, got ${u.length} in program \"${S.programInfo.name}\".`);for(let E=0;E<u.length;E++){let k=u[E],P=k.type,R=typeof k.data==\"number\"?1:k.data.length,[L,V]=S.uniformVariablesInfo[E];if(P!==L||R!==V)throw new Error(`Uniform variable ${E} mismatch: expect type ${L} with size ${V}, got type ${P} with size ${R} in program \"${S.programInfo.name}\".`)}}if(Ne(\"info\",()=>`[ProgramManager] run \"${t.name}\" (key=${T}) with ${x[0]}x${x[1]}x${x[2]}`),this.queryType!==\"none\"||this.sessionStatus===\"capturing\"){let E={kernelId:this.currentKernelId,programName:S.programInfo.name,inputTensorViews:r,outputTensorViews:b};this.pendingKernels.push(E),this.sessionStatus===\"capturing\"&&this.capturedPendingKernels.get(this.currentSessionId).push(E)}return this.programManager.run(S,d,$,x,w),ut(t.name),b}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,n,i){let s=xd.get(t);if(!s)throw new Error(`kernel not implemented: ${t}`);let a={kernelType:t,kernelName:i,kernelEntry:s[0],attributes:[s[1],n]};this.kernels.set(r,a)}releaseKernel(t){let r=this.kernelPersistentData.get(t);if(r){for(let n of r)this.gpuDataManager.release(n.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,n){let i=this.kernels.get(t);if(!i)throw new Error(`kernel not created: ${t}`);let s=i.kernelType,a=i.kernelName,d=i.kernelEntry,c=i.attributes;if(this.currentKernelId!==null)throw new Error(`kernel \"[${s}] ${a}\" is not allowed to be called recursively`);this.currentKernelId=t,c[0]&&(c[1]=c[0](c[1]),c[0]=void 0),Ne(\"info\",()=>`[WebGPU] Start to run kernel \"[${s}] ${a}\"...`);let m=this.env.debug;this.temporaryData=[];try{return m&&this.device.pushErrorScope(\"validation\"),d(r,c[1]),0}catch(u){return n.push(Promise.resolve(`[WebGPU] Kernel \"[${s}] ${a}\" failed. ${u}`)),1}finally{m&&n.push(this.device.popErrorScope().then(u=>u?`GPU validation error for kernel \"[${s}] ${a}\": ${u.message}`:null));for(let u of this.temporaryData)this.gpuDataManager.release(u.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,n,i){let s=this.sessionExternalDataMapping.get(t);s||(s=new Map,this.sessionExternalDataMapping.set(t,s));let a=s.get(r),d=this.gpuDataManager.registerExternalBuffer(n,i,a?.[1]);return s.set(r,[d,n]),d}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(n=>this.gpuDataManager.unregisterExternalBuffer(n[1])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw new Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,n){return async()=>{let i=await Xi(this,t,r);return Ja(i.buffer,n)}}writeTimestamp(t){this.queryType===\"inside-passes\"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType=\"none\",(this.env.webgpu.profiling?.mode===\"default\"||(typeof this.env.trace>\"u\"?this.env.wasm.trace:this.env.trace))&&(this.device.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?this.queryType=\"inside-passes\":this.device.features.has(\"timestamp-query\")&&(this.queryType=\"at-passes\"),this.queryType!==\"none\"&&typeof this.querySet>\"u\"&&(this.querySet=this.device.createQuerySet({type:\"timestamp\",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}captureBegin(){Ne(\"info\",\"captureBegin\"),this.capturedCommandList.get(this.currentSessionId)||this.capturedCommandList.set(this.currentSessionId,[]),this.capturedPendingKernels.get(this.currentSessionId)||this.capturedPendingKernels.set(this.currentSessionId,[]),this.flush(),this.sessionStatus=\"capturing\"}captureEnd(){Ne(\"info\",\"captureEnd\"),this.flush(),this.sessionStatus=\"default\"}replay(){Ne(\"info\",\"replay\"),this.sessionStatus=\"replaying\";let t=this.capturedCommandList.get(this.currentSessionId),r=this.capturedPendingKernels.get(this.currentSessionId),n=t.length;this.pendingKernels=[];for(let i=0;i<n;i++){let s=this.getComputePassEncoder(),a=t[i];this.writeTimestamp(this.pendingDispatchNumber*2),s.setPipeline(a.computePipeline),s.setBindGroup(0,a.bindGroup),s.dispatchWorkgroups(...a.dispatchGroup),this.writeTimestamp(this.pendingDispatchNumber*2+1),this.pendingDispatchNumber++,this.queryType!==\"none\"&&this.pendingKernels.push(r[i]),(this.pendingDispatchNumber>=this.maxDispatchNumber||this.queryType===\"at-passes\")&&this.endComputePass(),this.pendingDispatchNumber>=this.maxDispatchNumber&&this.flush()}this.flush(),this.sessionStatus=\"default\"}onReleaseSession(t){this.unregisterBuffers(t),this.capturedCommandList.has(t)&&this.capturedCommandList.delete(t),this.capturedPendingKernels.has(t)&&this.capturedPendingKernels.delete(t),this.gpuDataManager.onReleaseSession(t)}onRunStart(t){this.currentSessionId=t,this.setQueryType()}}});var Td={};kr(Td,{init:()=>sf});var an,xo,sf,Ad=j(()=>{\"use strict\";ye();Id();Xt();xe();an=class e{constructor(t,r,n,i){this.module=t;this.dataType=r;this.data=n;this.dims=i}getFloat32Array(){if(this.dataType!==1)throw new Error(\"Invalid data type\");let t=M.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error(\"Invalid data type\");let t=M.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error(\"Invalid data type\");let t=M.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(M.size(t)!==M.size(this.dims))throw new Error(\"Invalid new shape\");return new e(this.module,this.dataType,this.data,t)}},xo=class{constructor(t,r,n){this.module=t;this.backend=r;this.customDataOffset=0;this.customDataSize=0;this.adapterInfo=r.adapterInfo;let i=t.HEAPU32,s=n>>>2;this.opKernelContext=i[s++];let a=i[s++];this.outputCount=i[s++],this.customDataOffset=i[s++],this.customDataSize=i[s++];let d=[];for(let c=0;c<a;c++){let m=i[s++],u=i[s++],g=i[s++],b=[];for(let $=0;$<g;$++)b.push(i[s++]);d.push(new an(t,m,u,b))}this.inputs=d}get kernelCustomData(){return this.backend.currentKernelCustomData}get customDataBuffer(){return this.module.HEAPU8.subarray(this.customDataOffset,this.customDataOffset+this.customDataSize)}getMaxComputeWorkgroupSizes(){return[this.backend.device.limits.maxComputeWorkgroupSizeX,this.backend.device.limits.maxComputeWorkgroupSizeY,this.backend.device.limits.maxComputeWorkgroupSizeZ]}getMaxComputeWorkgroupStoragesize(){return this.backend.device.limits.maxComputeWorkgroupStorageSize}compute(t,r){let n=r?.inputs?.map(d=>typeof d==\"number\"?this.inputs[d]:d)??this.inputs,i=r?.outputs??[],s=(d,c,m)=>new an(this.module,c,this.output(d,m),m),a=(d,c)=>{let m=cr(d);if(!m)throw new Error(`Unsupported data type: ${d}`);let u=m*M.size(c),g=u>0?this.backend.gpuDataManager.create(u).id:0;return new an(this.module,d,g,c)};return this.backend.run(t,n,i,s,a,this.outputCount)}output(t,r){let n=this.module.stackSave();try{let i=this.module.stackAlloc((1+r.length)*4),s=i>>2;this.module.HEAPU32[s++]=r.length;for(let a=0;a<r.length;a++)this.module.HEAPU32[s++]=r[a];return this.module._JsepOutput(this.opKernelContext,t,i)}catch(i){throw new Error(`Failed to generate kernel's output[${t}] with dims [${r}]. If you are running with pre-allocated output, please make sure the output type/dims are correct. Error: ${i}`)}finally{this.module.stackRestore(n)}}},sf=async(e,t,r,n)=>{let i=t.jsepInit;if(!i)throw new Error(\"Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.\");if(e===\"webgpu\"){let s=new di;await s.initialize(r,n),i(\"webgpu\",[s,a=>s.alloc(a),a=>s.free(a),(a,d,c,m=!1)=>{if(m)Ne(\"verbose\",()=>`[WebGPU] jsepCopyGpuToGpu: src=${a}, dst=${d}, size=${c}`),s.memcpy(a,d);else{Ne(\"verbose\",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${a}, gpuDataId=${d}, size=${c}`);let u=t.HEAPU8.subarray(a>>>0,(a>>>0)+c);s.upload(d,u)}},async(a,d,c)=>{Ne(\"verbose\",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${a}, dataOffset=${d}, size=${c}`),await s.download(a,()=>t.HEAPU8.subarray(d>>>0,(d>>>0)+c))},(a,d,c)=>s.createKernel(a,d,c,t.UTF8ToString(t._JsepGetNodeName(d))),a=>s.releaseKernel(a),(a,d,c,m)=>{Ne(\"verbose\",()=>`[WebGPU] jsepRun: sessionHandle=${c}, kernel=${a}, contextDataOffset=${d}`);let u=new xo(t,s,d);return s.computeKernel(a,u,m)},()=>s.captureBegin(),()=>s.captureEnd(),()=>s.replay()])}else i(\"webnn\")}});var uf,kd,Od,hr,lf,So,Pd,Rd,Ed,zd,Bd,Dd,Md=j(()=>{\"use strict\";ja();Ya();ye();Or();Wn();qi();uf=(e,t)=>{Fe()._OrtInit(e,t)!==0&&We(\"Can't initialize onnxruntime.\")},kd=async e=>{uf(e.wasm.numThreads,en(e.logLevel))},Od=async(e,t)=>{{let r=(Ad(),sr(Td)).init;if(t===\"webgpu\"){if(typeof navigator>\"u\"||!navigator.gpu)throw new Error(\"WebGPU is not supported in current environment\");let n=e.webgpu.adapter;if(n){if(typeof n.limits!=\"object\"||typeof n.features!=\"object\"||typeof n.requestDevice!=\"function\")throw new Error(\"Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.\")}else{let i=e.webgpu.powerPreference;if(i!==void 0&&i!==\"low-power\"&&i!==\"high-performance\")throw new Error(`Invalid powerPreference setting: \"${i}\"`);let s=e.webgpu.forceFallbackAdapter;if(s!==void 0&&typeof s!=\"boolean\")throw new Error(`Invalid forceFallbackAdapter setting: \"${s}\"`);if(n=await navigator.gpu.requestAdapter({powerPreference:i,forceFallbackAdapter:s}),!n)throw new Error('Failed to get GPU adapter. You may need to enable flag \"--enable-unsafe-webgpu\" if you are using Chrome.')}if(!e.wasm.simd)throw new Error(\"Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP\");await r(\"webgpu\",Fe(),e,n)}if(t===\"webnn\"){if(typeof navigator>\"u\"||!navigator.ml)throw new Error(\"WebNN is not supported in current environment\");await r(\"webnn\",Fe(),e)}}},hr=new Map,lf=e=>{let t=Fe(),r=t.stackSave();try{let n=t.stackAlloc(8);return t._OrtGetInputOutputCount(e,n,n+4)!==0&&We(\"Can't get session input/output count.\"),[t.HEAP32[n/4],t.HEAP32[n/4+1]]}finally{t.stackRestore(r)}},So=e=>{let t=Fe(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},Pd=async(e,t)=>{let r,n,i=Fe();Array.isArray(e)?[r,n]=e:e.buffer===i.HEAPU8.buffer?[r,n]=[e.byteOffset,e.byteLength]:[r,n]=So(e);let s=0,a=0,d=0,c=[],m=[],u=[];try{if([a,c]=Ka(t),t?.externalData&&i.mountExternalData){let S=[];for(let E of t.externalData){let k=typeof E==\"string\"?E:E.path;S.push(tn(typeof E==\"string\"?E:E.data).then(P=>{i.mountExternalData(k,P)}))}await Promise.all(S)}s=await i._OrtCreateSession(r,n,a),s===0&&We(\"Can't create a session.\");let[g,b]=lf(s),$=!!t?.enableGraphCapture,w=[],x=[],C=[];for(let S=0;S<g;S++){let E=i._OrtGetInputName(s,S);E===0&&We(\"Can't get an input name.\"),m.push(E),w.push(i.UTF8ToString(E))}for(let S=0;S<b;S++){let E=i._OrtGetOutputName(s,S);E===0&&We(\"Can't get an output name.\"),u.push(E);let k=i.UTF8ToString(E);x.push(k);{if($&&t?.preferredOutputLocation===void 0){C.push(\"gpu-buffer\");continue}let P=typeof t?.preferredOutputLocation==\"string\"?t.preferredOutputLocation:t?.preferredOutputLocation?.[k]??\"cpu\";if(P!==\"cpu\"&&P!==\"cpu-pinned\"&&P!==\"gpu-buffer\")throw new Error(`Not supported preferred output location: ${P}.`);if($&&P!==\"gpu-buffer\")throw new Error(`Not supported preferred output location: ${P}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);C.push(P)}}let T=null;return C.some(S=>S===\"gpu-buffer\")&&(d=i._OrtCreateBinding(s),d===0&&We(\"Can't create IO binding.\"),T={handle:d,outputPreferredLocations:C,outputPreferredLocationsEncoded:C.map(S=>Fi(S))}),hr.set(s,[s,m,u,T,$,!1]),[s,w,x]}catch(g){throw m.forEach(b=>i._OrtFree(b)),u.forEach(b=>i._OrtFree(b)),d!==0&&i._OrtReleaseBinding(d),s!==0&&i._OrtReleaseSession(s),g}finally{i._free(r),a!==0&&i._OrtReleaseSessionOptions(a),c.forEach(g=>i._free(g)),i.unmountExternalData?.()}},Rd=e=>{let t=Fe(),r=hr.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[n,i,s,a,d]=r;a&&(d&&t._OrtClearBoundOutputs(a.handle),t._OrtReleaseBinding(a.handle)),t.jsepOnReleaseSession?.(e),i.forEach(c=>t._OrtFree(c)),s.forEach(c=>t._OrtFree(c)),t._OrtReleaseSession(n),hr.delete(e)},Ed=(e,t,r,n,i,s=!1)=>{if(!e){t.push(0);return}let a=Fe(),d=e[0],c=e[1],m=e[3],u,g;if(d===\"string\"&&m===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");if(s&&m!==\"gpu-buffer\")throw new Error(`External buffer must be provided for input/output index ${i} when enableGraphCapture is true.`);if(m===\"gpu-buffer\"){let w=e[2].gpuBuffer,x=cr(Li(d));g=c.reduce((T,S)=>T*S,1)*x;let C=a.jsepRegisterBuffer;if(!C)throw new Error('Tensor location \"gpu-buffer\" is not supported without using WebGPU.');u=C(n,i,w,g)}else{let w=e[2];if(Array.isArray(w)){g=4*w.length,u=a._malloc(g),r.push(u);let x=u/4;for(let C=0;C<w.length;C++){if(typeof w[C]!=\"string\")throw new TypeError(`tensor data at index ${C} is not a string`);a.HEAPU32[x++]=qe(w[C],r)}}else g=w.byteLength,u=a._malloc(g),r.push(u),a.HEAPU8.set(new Uint8Array(w.buffer,w.byteOffset,g),u)}let b=a.stackSave(),$=a.stackAlloc(4*c.length);try{let w=$/4;c.forEach(C=>a.HEAP32[w++]=C);let x=a._OrtCreateTensor(Li(d),u,g,$,c.length,Fi(m));x===0&&We(`Can't create tensor for input/output. session=${n}, index=${i}.`),t.push(x)}finally{a.stackRestore(b)}},zd=async(e,t,r,n,i,s)=>{let a=Fe(),d=hr.get(e);if(!d)throw new Error(`cannot run inference. invalid session id: ${e}`);let c=d[0],m=d[1],u=d[2],g=d[3],b=d[4],$=d[5],w=t.length,x=n.length,C=0,T=[],S=[],E=[],k=[],P=a.stackSave(),R=a.stackAlloc(w*4),L=a.stackAlloc(w*4),V=a.stackAlloc(x*4),Y=a.stackAlloc(x*4);try{[C,T]=qa(s);for(let ee=0;ee<w;ee++)Ed(r[ee],S,k,e,t[ee],b);for(let ee=0;ee<x;ee++)Ed(i[ee],E,k,e,w+n[ee],b);let Q=R/4,he=L/4,N=V/4,se=Y/4;for(let ee=0;ee<w;ee++)a.HEAPU32[Q++]=S[ee],a.HEAPU32[he++]=m[t[ee]];for(let ee=0;ee<x;ee++)a.HEAPU32[N++]=E[ee],a.HEAPU32[se++]=u[n[ee]];if(g&&!$){let{handle:ee,outputPreferredLocations:ae,outputPreferredLocationsEncoded:Ie}=g;if(m.length!==w)throw new Error(`input count from feeds (${w}) is expected to be always equal to model's input count (${m.length}).`);for(let me=0;me<w;me++){let oe=t[me];await a._OrtBindInput(ee,m[oe],S[me])!==0&&We(`Can't bind input[${me}] for session=${e}.`)}for(let me=0;me<x;me++){let oe=n[me];i[me]?.[3]?a._OrtBindOutput(ee,u[oe],E[me],0)!==0&&We(`Can't bind pre-allocated output[${me}] for session=${e}.`):a._OrtBindOutput(ee,u[oe],0,Ie[oe])!==0&&We(`Can't bind output[${me}] to ${ae[me]} for session=${e}.`)}hr.set(e,[c,m,u,g,b,!0])}a.jsepOnRunStart?.(c);let Ce;g?Ce=await a._OrtRunWithBinding(c,g.handle,x,V,C):Ce=await a._OrtRun(c,L,R,w,Y,x,V,C),Ce!==0&&We(\"failed to call OrtRun().\");let Ve=[];for(let ee=0;ee<x;ee++){let ae=a.HEAPU32[V/4+ee];if(ae===E[ee]){Ve.push(i[ee]);continue}let Ie=a.stackSave(),me=a.stackAlloc(4*4),oe=!1,ue,de=0;try{a._OrtGetTensorData(ae,me,me+4,me+8,me+12)!==0&&We(`Can't access output tensor data on index ${ee}.`);let H=me/4,ne=a.HEAPU32[H++];de=a.HEAPU32[H++];let Se=a.HEAPU32[H++],Ye=a.HEAPU32[H++],Be=[];for(let He=0;He<Ye;He++)Be.push(a.HEAPU32[Se/4+He]);a._OrtFree(Se);let Ge=Be.reduce((He,Xe)=>He*Xe,1);ue=Yt(ne);let Ft=g?.outputPreferredLocations[n[ee]];if(ue===\"string\"){if(Ft===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");let He=[],Xe=de/4;for(let bt=0;bt<Ge;bt++){let Nt=a.HEAPU32[Xe++],Qt=bt===Ge-1?void 0:a.HEAPU32[Xe]-Nt;He.push(a.UTF8ToString(Nt,Qt))}Ve.push([ue,Be,He,\"cpu\"])}else if(Ft===\"gpu-buffer\"&&Ge>0){let He=a.jsepGetBuffer;if(!He)throw new Error('preferredLocation \"gpu-buffer\" is not supported without using WebGPU.');let Xe=He(de),bt=cr(ne);if(bt===void 0||!Vn(ue))throw new Error(`Unsupported data type: ${ue}`);oe=!0,Ve.push([ue,Be,{gpuBuffer:Xe,download:a.jsepCreateDownloader(Xe,Ge*bt,ue),dispose:()=>{a._OrtReleaseTensor(ae)}},\"gpu-buffer\"])}else{let He=Nn(ue),Xe=new He(Ge);new Uint8Array(Xe.buffer,Xe.byteOffset,Xe.byteLength).set(a.HEAPU8.subarray(de,de+Xe.byteLength)),Ve.push([ue,Be,Xe,\"cpu\"])}}finally{a.stackRestore(Ie),ue===\"string\"&&de&&a._free(de),oe||a._OrtReleaseTensor(ae)}}return g&&!b&&(a._OrtClearBoundOutputs(g.handle),hr.set(e,[c,m,u,g,b,!1])),Ve}finally{a.stackRestore(P),S.forEach(Q=>a._OrtReleaseTensor(Q)),E.forEach(Q=>a._OrtReleaseTensor(Q)),k.forEach(Q=>a._free(Q)),C!==0&&a._OrtReleaseRunOptions(C),T.forEach(Q=>a._free(Q))}},Bd=e=>{let t=Fe(),r=hr.get(e);if(!r)throw new Error(\"invalid session id\");let n=r[0],i=t._OrtEndProfiling(n);i===0&&We(\"Can't get an profile file name.\"),t._OrtFree(i)},Dd=e=>{let t=[];for(let r of e){let n=r[2];!Array.isArray(n)&&\"buffer\"in n&&t.push(n.buffer)}return t}});var Ud=Er((j2,cf)=>{cf.exports='/*!\\n * ONNX Runtime Web v1.18.0\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\n * Licensed under the MIT License.\\n */\\n\"use strict\";(()=>{var ao=Object.defineProperty;var nl=Object.getOwnPropertyDescriptor;var ol=Object.getOwnPropertyNames;var il=Object.prototype.hasOwnProperty;var Y=(e,t)=>()=>(e&&(t=e(e=0)),t);var Wr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),gn=(e,t)=>{for(var r in t)ao(e,r,{get:t[r],enumerable:!0})},al=(e,t,r,o)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let i of ol(t))!il.call(e,i)&&i!==r&&ao(e,i,{get:()=>t[i],enumerable:!(o=nl(t,i))||o.enumerable});return e};var wr=e=>al(ao({},\"__esModule\",{value:!0}),e);var so={};gn(so,{createReadStream:()=>Ai,readFile:()=>sl,readFileSync:()=>ul});var sl,ul,Ai,uo=Y(()=>{sl=void 0,ul=void 0,Ai=void 0});var lo={};gn(lo,{join:()=>dl});var dl,co=Y(()=>{dl=void 0});var Ei=Wr((Ti,po)=>{\"use strict\";var Ii=(()=>{var e=typeof document<\"u\"?document.currentScript?.src:void 0;return typeof __filename<\"u\"&&(e||=__filename),function(t={}){var r=t,o,i,u=new Promise((s,m)=>{o=s,i=m});r.mountExternalData=(s,m)=>{(r.eb||(r.eb=new Map)).set(s,m)},r.unmountExternalData=()=>{delete r.eb};let a=()=>{let s=(g,$,T)=>(...B)=>{let H=dt,q=$?.();B=g(...B);let te=$?.();return q!==te&&(g=te,T(q),$=T=null),dt!=H?tn():B},m=g=>async(...$)=>{try{if(r.cb)throw Error(\"Session already started\");let T=r.cb={xb:$[0],errors:[]},B=await g(...$);if(r.cb!==T)throw Error(\"Session mismatch\");r.kb?.flush();let H=T.errors;if(0<H.length){let q=await Promise.all(H);if(q=q.filter(te=>te),0<q.length)throw Error(q.join(`\\n`))}return B}finally{r.cb=null}};r._OrtCreateSession=s(r._OrtCreateSession,()=>r._OrtCreateSession,g=>r._OrtCreateSession=g),r._OrtRun=m(s(r._OrtRun,()=>r._OrtRun,g=>r._OrtRun=g)),r._OrtRunWithBinding=m(s(r._OrtRunWithBinding,()=>r._OrtRunWithBinding,g=>r._OrtRunWithBinding=g)),r._OrtBindInput=s(r._OrtBindInput,()=>r._OrtBindInput,g=>r._OrtBindInput=g),a=void 0};r.jsepInit=(s,m)=>{if(a?.(),s===\"webgpu\"){[r.kb,r.pb,r.tb,r.lb,r.sb,r.Ra,r.ub,r.wb,r.qb,r.rb,r.vb]=m;let g=r.kb;r.jsepRegisterBuffer=($,T,B,H)=>g.registerBuffer($,T,B,H),r.jsepGetBuffer=$=>g.getBuffer($),r.jsepCreateDownloader=($,T,B)=>g.createDownloader($,T,B),r.jsepOnReleaseSession=$=>{g.onReleaseSession($)},r.jsepOnRunStart=$=>g.onRunStart($)}};var c=Object.assign({},r),p=\"./this.program\",h=(s,m)=>{throw m},d=typeof window==\"object\",y=typeof importScripts==\"function\",w=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",_=\"\",v,S,A;if(w){var I=(uo(),wr(so)),x=(co(),wr(lo));_=y?x.dirname(_)+\"/\":__dirname+\"/\",v=(s,m)=>(s=Ke(s)?new URL(s):x.normalize(s),I.readFileSync(s,m?void 0:\"utf8\")),A=s=>(s=v(s,!0),s.buffer||(s=new Uint8Array(s)),s),S=(s,m,g,$=!0)=>{s=Ke(s)?new URL(s):x.normalize(s),I.readFile(s,$?void 0:\"utf8\",(T,B)=>{T?g(T):m($?B.buffer:B)})},!r.thisProgram&&1<process.argv.length&&(p=process.argv[1].replace(/\\\\\\\\/g,\"/\")),process.argv.slice(2),h=(s,m)=>{throw process.exitCode=s,m}}else(d||y)&&(y?_=self.location.href:typeof document<\"u\"&&document.currentScript&&(_=document.currentScript.src),e&&(_=e),_.startsWith(\"blob:\")?_=\"\":_=_.substr(0,_.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),v=s=>{var m=new XMLHttpRequest;return m.open(\"GET\",s,!1),m.send(null),m.responseText},y&&(A=s=>{var m=new XMLHttpRequest;return m.open(\"GET\",s,!1),m.responseType=\"arraybuffer\",m.send(null),new Uint8Array(m.response)}),S=(s,m,g)=>{var $=new XMLHttpRequest;$.open(\"GET\",s,!0),$.responseType=\"arraybuffer\",$.onload=()=>{$.status==200||$.status==0&&$.response?m($.response):g()},$.onerror=g,$.send(null)});var E=console.log.bind(console),P=console.error.bind(console);Object.assign(r,c),c=null;var O,R=!1,L,N,K,Q,he,W,se,Ce,We,ee,ae;function Ae(){var s=O.buffer;r.HEAP8=N=new Int8Array(s),r.HEAP16=Q=new Int16Array(s),r.HEAPU8=K=new Uint8Array(s),r.HEAPU16=he=new Uint16Array(s),r.HEAP32=W=new Int32Array(s),r.HEAPU32=se=new Uint32Array(s),r.HEAPF32=Ce=new Float32Array(s),r.HEAPF64=ae=new Float64Array(s),r.HEAP64=We=new BigInt64Array(s),r.HEAPU64=ee=new BigUint64Array(s)}var me=[],ie=[],ue=[],le=0,qe=null,G=null;function ne(s){throw s=\"Aborted(\"+s+\")\",P(s),R=!0,L=1,s=new WebAssembly.RuntimeError(s+\". Build with -sASSERTIONS for more info.\"),i(s),s}var xe=s=>s.startsWith(\"data:application/octet-stream;base64,\"),Ke=s=>s.startsWith(\"file://\"),Be;if(Be=\"ort-wasm-simd.wasm\",!xe(Be)){var Ge=Be;Be=r.locateFile?r.locateFile(Ge,_):_+Ge}function Ut(s){if(A)return A(s);throw\"both async and sync fetching of the wasm failed\"}function Ne(s){if(d||y){if(typeof fetch==\"function\"&&!Ke(s))return fetch(s,{credentials:\"same-origin\"}).then(m=>{if(!m.ok)throw`failed to load wasm binary file at \\'${s}\\'`;return m.arrayBuffer()}).catch(()=>Ut(s));if(S)return new Promise((m,g)=>{S(s,$=>m(new Uint8Array($)),g)})}return Promise.resolve().then(()=>Ut(s))}function Ye(s,m,g){return Ne(s).then($=>WebAssembly.instantiate($,m)).then(g,$=>{P(`failed to asynchronously prepare wasm: ${$}`),ne($)})}function mt(s,m){var g=Be;return typeof WebAssembly.instantiateStreaming!=\"function\"||xe(g)||Ke(g)||w||typeof fetch!=\"function\"?Ye(g,s,m):fetch(g,{credentials:\"same-origin\"}).then($=>WebAssembly.instantiateStreaming($,s).then(m,function(T){return P(`wasm streaming compile failed: ${T}`),P(\"falling back to ArrayBuffer instantiation\"),Ye(g,s,m)}))}var Rt={824920:(s,m,g,$)=>{if(typeof r>\"u\"||!r.eb)return 1;if(s=je(s>>>0),s.startsWith(\"./\")&&(s=s.substring(2)),s=r.eb.get(s),!s)return 2;if(m>>>=0,g>>>=0,m+g>s.byteLength)return 3;try{return K.set(s.subarray(m,m+g),$>>>0>>>0),0}catch{return 4}},825421:()=>{r.qb()},825452:()=>{r.rb()},825481:()=>{r.vb()},825506:s=>r.pb(s),825539:s=>r.tb(s),825571:(s,m,g)=>{r.lb(s,m,g,!0)},825610:(s,m,g)=>{r.lb(s,m,g)},825643:s=>{r.Ra(\"Abs\",s,void 0)},825694:s=>{r.Ra(\"Neg\",s,void 0)},825745:s=>{r.Ra(\"Floor\",s,void 0)},825798:s=>{r.Ra(\"Ceil\",s,void 0)},825850:s=>{r.Ra(\"Reciprocal\",s,void 0)},825908:s=>{r.Ra(\"Sqrt\",s,void 0)},825960:s=>{r.Ra(\"Exp\",s,void 0)},826011:s=>{r.Ra(\"Erf\",s,void 0)},826062:s=>{r.Ra(\"Sigmoid\",s,void 0)},826117:(s,m,g)=>{r.Ra(\"HardSigmoid\",s,{alpha:m,beta:g})},826196:s=>{r.Ra(\"Log\",s,void 0)},826247:s=>{r.Ra(\"Sin\",s,void 0)},826298:s=>{r.Ra(\"Cos\",s,void 0)},826349:s=>{r.Ra(\"Tan\",s,void 0)},826400:s=>{r.Ra(\"Asin\",s,void 0)},826452:s=>{r.Ra(\"Acos\",s,void 0)},826504:s=>{r.Ra(\"Atan\",s,void 0)},826556:s=>{r.Ra(\"Sinh\",s,void 0)},826608:s=>{r.Ra(\"Cosh\",s,void 0)},826660:s=>{r.Ra(\"Asinh\",s,void 0)},826713:s=>{r.Ra(\"Acosh\",s,void 0)},826766:s=>{r.Ra(\"Atanh\",s,void 0)},826819:s=>{r.Ra(\"Tanh\",s,void 0)},826871:s=>{r.Ra(\"Not\",s,void 0)},826922:(s,m,g)=>{r.Ra(\"Clip\",s,{min:m,max:g})},826991:s=>{r.Ra(\"Clip\",s,void 0)},827043:(s,m)=>{r.Ra(\"Elu\",s,{alpha:m})},827101:s=>{r.Ra(\"Relu\",s,void 0)},827153:(s,m)=>{r.Ra(\"LeakyRelu\",s,{alpha:m})},827217:(s,m)=>{r.Ra(\"ThresholdedRelu\",s,{alpha:m})},827287:(s,m)=>{r.Ra(\"Cast\",s,{to:m})},827345:s=>{r.Ra(\"Add\",s,void 0)},827396:s=>{r.Ra(\"Sub\",s,void 0)},827447:s=>{r.Ra(\"Mul\",s,void 0)},827498:s=>{r.Ra(\"Div\",s,void 0)},827549:s=>{r.Ra(\"Pow\",s,void 0)},827600:s=>{r.Ra(\"Equal\",s,void 0)},827653:s=>{r.Ra(\"Greater\",s,void 0)},827708:s=>{r.Ra(\"GreaterOrEqual\",s,void 0)},827770:s=>{r.Ra(\"Less\",s,void 0)},827822:s=>{r.Ra(\"LessOrEqual\",s,void 0)},827881:(s,m,g,$,T)=>{r.Ra(\"ReduceMean\",s,{keepDims:!!m,noopWithEmptyAxes:!!g,axes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},828040:(s,m,g,$,T)=>{r.Ra(\"ReduceMax\",s,{keepDims:!!m,noopWithEmptyAxes:!!g,axes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},828198:(s,m,g,$,T)=>{r.Ra(\"ReduceMin\",s,{keepDims:!!m,noopWithEmptyAxes:!!g,axes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},828356:(s,m,g,$,T)=>{r.Ra(\"ReduceProd\",s,{keepDims:!!m,noopWithEmptyAxes:!!g,axes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},828515:(s,m,g,$,T)=>{r.Ra(\"ReduceSum\",s,{keepDims:!!m,noopWithEmptyAxes:!!g,axes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},828673:(s,m,g,$,T)=>{r.Ra(\"ReduceL1\",s,{keepDims:!!m,noopWithEmptyAxes:!!g,axes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},828830:(s,m,g,$,T)=>{r.Ra(\"ReduceL2\",s,{keepDims:!!m,noopWithEmptyAxes:!!g,axes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},828987:(s,m,g,$,T)=>{r.Ra(\"ReduceLogSum\",s,{keepDims:!!m,noopWithEmptyAxes:!!g,axes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},829148:(s,m,g,$,T)=>{r.Ra(\"ReduceSumSquare\",s,{keepDims:!!m,noopWithEmptyAxes:!!g,axes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},829312:(s,m,g,$,T)=>{r.Ra(\"ReduceLogSumExp\",s,{keepDims:!!m,noopWithEmptyAxes:!!g,axes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},829476:s=>{r.Ra(\"Where\",s,void 0)},829529:(s,m,g)=>{r.Ra(\"Transpose\",s,{perm:m?Array.from(W.subarray(m>>>0,g>>>0)):[]})},829637:(s,m,g,$)=>{r.Ra(\"DepthToSpace\",s,{blocksize:m,mode:je(g),format:$?\"NHWC\":\"NCHW\"})},829770:(s,m,g,$)=>{r.Ra(\"DepthToSpace\",s,{blocksize:m,mode:je(g),format:$?\"NHWC\":\"NCHW\"})},829903:(s,m,g,$,T,B,H,q,te,X,de,Ee,Oe,D,be)=>{r.Ra(\"ConvTranspose\",s,{format:te?\"NHWC\":\"NCHW\",autoPad:m,dilations:[g],group:$,kernelShape:[T],pads:[B,H],strides:[q],wIsConst:()=>!!N[X>>>0],outputPadding:de?Array.from(W.subarray(de>>>0,Ee>>>0)):[],outputShape:Oe?Array.from(W.subarray(Oe>>>0,D>>>0)):[],activation:je(be)})},830304:(s,m,g,$,T,B,H,q,te,X,de,Ee,Oe,D)=>{r.Ra(\"ConvTranspose\",s,{format:q?\"NHWC\":\"NCHW\",autoPad:m,dilations:Array.from(W.subarray(g>>>0,(g>>>0)+2>>>0)),group:$,kernelShape:Array.from(W.subarray(T>>>0,(T>>>0)+2>>>0)),pads:Array.from(W.subarray(B>>>0,(B>>>0)+4>>>0)),strides:Array.from(W.subarray(H>>>0,(H>>>0)+2>>>0)),wIsConst:()=>!!N[te>>>0],outputPadding:X?Array.from(W.subarray(X>>>0,de>>>0)):[],outputShape:Ee?Array.from(W.subarray(Ee>>>0,Oe>>>0)):[],activation:je(D)})},830869:(s,m,g,$,T,B,H,q,te,X,de,Ee,Oe,D,be)=>{r.Ra(\"ConvTranspose\",s,{format:te?\"NHWC\":\"NCHW\",autoPad:m,dilations:[g],group:$,kernelShape:[T],pads:[B,H],strides:[q],wIsConst:()=>!!N[X>>>0],outputPadding:de?Array.from(W.subarray(de>>>0,Ee>>>0)):[],outputShape:Oe?Array.from(W.subarray(Oe>>>0,D>>>0)):[],activation:je(be)})},831270:(s,m,g,$,T,B,H,q,te,X,de,Ee,Oe,D)=>{r.Ra(\"ConvTranspose\",s,{format:q?\"NHWC\":\"NCHW\",autoPad:m,dilations:Array.from(W.subarray(g>>>0,(g>>>0)+2>>>0)),group:$,kernelShape:Array.from(W.subarray(T>>>0,(T>>>0)+2>>>0)),pads:Array.from(W.subarray(B>>>0,(B>>>0)+4>>>0)),strides:Array.from(W.subarray(H>>>0,(H>>>0)+2>>>0)),wIsConst:()=>!!N[te>>>0],outputPadding:X?Array.from(W.subarray(X>>>0,de>>>0)):[],outputShape:Ee?Array.from(W.subarray(Ee>>>0,Oe>>>0)):[],activation:je(D)})},831835:(s,m)=>{r.Ra(\"GlobalAveragePool\",s,{format:m?\"NHWC\":\"NCHW\"})},831926:(s,m,g,$,T,B,H,q,te,X,de,Ee,Oe,D,be,Ie)=>{r.Ra(\"AveragePool\",s,{format:Ie?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:g,count_include_pad:$,storage_order:T,dilations:[B,H],kernel_shape:[q,te],pads:[X,de,Ee,Oe],strides:[D,be]})},832210:(s,m)=>{r.Ra(\"GlobalAveragePool\",s,{format:m?\"NHWC\":\"NCHW\"})},832301:(s,m,g,$,T,B,H,q,te,X,de,Ee,Oe,D,be,Ie)=>{r.Ra(\"AveragePool\",s,{format:Ie?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:g,count_include_pad:$,storage_order:T,dilations:[B,H],kernel_shape:[q,te],pads:[X,de,Ee,Oe],strides:[D,be]})},832585:(s,m)=>{r.Ra(\"GlobalMaxPool\",s,{format:m?\"NHWC\":\"NCHW\"})},832672:(s,m,g,$,T,B,H,q,te,X,de,Ee,Oe,D,be,Ie)=>{r.Ra(\"MaxPool\",s,{format:Ie?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:g,count_include_pad:$,storage_order:T,dilations:[B,H],kernel_shape:[q,te],pads:[X,de,Ee,Oe],strides:[D,be]})},832952:(s,m)=>{r.Ra(\"GlobalMaxPool\",s,{format:m?\"NHWC\":\"NCHW\"})},833039:(s,m,g,$,T,B,H,q,te,X,de,Ee,Oe,D,be,Ie)=>{r.Ra(\"MaxPool\",s,{format:Ie?\"NHWC\":\"NCHW\",auto_pad:m,ceil_mode:g,count_include_pad:$,storage_order:T,dilations:[B,H],kernel_shape:[q,te],pads:[X,de,Ee,Oe],strides:[D,be]})},833319:(s,m,g,$,T)=>{r.Ra(\"Gemm\",s,{alpha:m,beta:g,transA:$,transB:T})},833423:s=>{r.Ra(\"MatMul\",s,void 0)},833477:(s,m,g,$)=>{r.Ra(\"ArgMax\",s,{keepDims:!!m,selectLastIndex:!!g,axis:$})},833585:(s,m,g,$)=>{r.Ra(\"ArgMin\",s,{keepDims:!!m,selectLastIndex:!!g,axis:$})},833693:(s,m)=>{r.Ra(\"Softmax\",s,{axis:m})},833756:(s,m)=>{r.Ra(\"Concat\",s,{axis:m})},833816:(s,m,g,$,T)=>{r.Ra(\"Split\",s,{axis:m,numOutputs:g,splitSizes:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},833956:s=>{r.Ra(\"Expand\",s,void 0)},834010:(s,m)=>{r.Ra(\"Gather\",s,{axis:Number(m)})},834081:(s,m)=>{r.Ra(\"GatherElements\",s,{axis:Number(m)})},834160:(s,m,g,$,T,B,H,q,te,X,de)=>{r.Ra(\"Resize\",s,{antialias:m,axes:g?Array.from(W.subarray(g>>>0,$>>>0)):[],coordinateTransformMode:je(T),cubicCoeffA:B,excludeOutside:H,extrapolationValue:q,keepAspectRatioPolicy:je(te),mode:je(X),nearestMode:je(de)})},834506:(s,m,g,$,T,B,H)=>{r.Ra(\"Slice\",s,{starts:m?Array.from(W.subarray(m>>>0,g>>>0)):[],ends:$?Array.from(W.subarray($>>>0,T>>>0)):[],axes:B?Array.from(W.subarray(B>>>0,H>>>0)):[]})},834722:s=>{r.Ra(\"Tile\",s,void 0)},834774:(s,m,g,$)=>{r.Ra(\"LayerNormalization\",s,{axis:m,epsilon:g,simplified:!!$})},834885:(s,m,g)=>{r.Ra(\"InstanceNormalization\",s,{epsilon:m,format:g?\"NHWC\":\"NCHW\"})},834999:(s,m,g)=>{r.Ra(\"InstanceNormalization\",s,{epsilon:m,format:g?\"NHWC\":\"NCHW\"})},835113:s=>{r.Ra(\"Range\",s,void 0)},835166:(s,m)=>{r.Ra(\"Einsum\",s,{equation:je(m)})},835247:(s,m,g,$,T)=>{r.Ra(\"Pad\",s,{mode:m,value:g,pads:$?Array.from(W.subarray($>>>0,T>>>0)):[]})},835374:(s,m,g,$,T,B)=>{r.Ra(\"BatchNormalization\",s,{epsilon:m,momentum:g,spatial:!!T,trainingMode:!!$,format:B?\"NHWC\":\"NCHW\"})},835543:(s,m,g,$,T,B)=>{r.Ra(\"BatchNormalization\",s,{epsilon:m,momentum:g,spatial:!!T,trainingMode:!!$,format:B?\"NHWC\":\"NCHW\"})},835712:(s,m,g)=>{r.Ra(\"CumSum\",s,{exclusive:Number(m),reverse:Number(g)})},835809:(s,m,g,$,T,B,H,q,te)=>{r.Ra(\"Attention\",s,{numHeads:m,isUnidirectional:g,maskFilterValue:$,scale:T,doRotary:B,qkvHiddenSizes:H?Array.from(W.subarray(Number(q)>>>0,Number(q)+H>>>0)):[],pastPresentShareBuffer:!!te})},836081:s=>{r.Ra(\"BiasAdd\",s,void 0)},836136:s=>{r.Ra(\"BiasSplitGelu\",s,void 0)},836197:s=>{r.Ra(\"FastGelu\",s,void 0)},836253:(s,m,g,$,T,B,H,q,te,X,de,Ee,Oe)=>{r.Ra(\"Conv\",s,{format:te?\"NHWC\":\"NCHW\",auto_pad:m,dilations:[g],group:$,kernel_shape:[T],pads:B?Array.from(W.subarray(B>>>0,H>>>0)):[],strides:[q],w_is_const:()=>!!N[X>>>0],activation:je(de),activation_params:Ee?Array.from(Ce.subarray(Ee>>>0,Oe>>>0)):[]})},836623:(s,m,g,$,T,B,H,q,te,X,de,Ee,Oe,D,be,Ie)=>{r.Ra(\"Conv\",s,{format:Ee?\"NHWC\":\"NCHW\",auto_pad:m,dilations:[g,$],group:T,kernel_shape:[B,H],pads:q?Array.from(W.subarray(q>>>0,te>>>0)):[],strides:[X,de],w_is_const:()=>!!N[Oe>>>0],activation:je(D),activation_params:be?Array.from(Ce.subarray(be>>>0,Ie>>>0)):[]})},837014:s=>{r.Ra(\"Gelu\",s,void 0)},837066:(s,m,g,$,T,B)=>{r.Ra(\"MatMulNBits\",s,{k:m,n:g,accuracyLevel:$,bits:T,blockSize:B})},837193:(s,m,g,$,T,B)=>{r.Ra(\"MultiHeadAttention\",s,{numHeads:m,isUnidirectional:g,maskFilterValue:$,scale:T,doRotary:B})},837352:(s,m,g,$,T)=>{r.Ra(\"RotaryEmbedding\",s,{interleaved:!!m,numHeads:g,rotaryEmbeddingDim:$,scale:T})},837491:(s,m,g)=>{r.Ra(\"SkipLayerNormalization\",s,{epsilon:m,simplified:!!g})},837593:(s,m,g)=>{r.Ra(\"SkipLayerNormalization\",s,{epsilon:m,simplified:!!g})},837695:(s,m,g,$)=>{r.Ra(\"LayerNormalization\",s,{axis:m,epsilon:g,simplified:!!$})},837806:s=>{r.ub(s)},837840:(s,m)=>r.wb(s,m,r.cb.xb,r.cb.errors)};function qt(s){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${s})`,this.status=s}class Vt{constructor(m){this.hb=m-24}}var sr=0,jt=0,xr=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,Kt=(s,m,g)=>{m>>>=0;var $=m+g;for(g=m;s[g]&&!(g>=$);)++g;if(16<g-m&&s.buffer&&xr)return xr.decode(s.subarray(m,g));for($=\"\";m<g;){var T=s[m++];if(T&128){var B=s[m++]&63;if((T&224)==192)$+=String.fromCharCode((T&31)<<6|B);else{var H=s[m++]&63;T=(T&240)==224?(T&15)<<12|B<<6|H:(T&7)<<18|B<<12|H<<6|s[m++]&63,65536>T?$+=String.fromCharCode(T):(T-=65536,$+=String.fromCharCode(55296|T>>10,56320|T&1023))}}else $+=String.fromCharCode(T)}return $},je=(s,m)=>(s>>>=0)?Kt(K,s,m):\"\",Wt=s=>{for(var m=0,g=0;g<s.length;++g){var $=s.charCodeAt(g);127>=$?m++:2047>=$?m+=2:55296<=$&&57343>=$?(m+=4,++g):m+=3}return m},at=(s,m,g,$)=>{if(g>>>=0,!(0<$))return 0;var T=g;$=g+$-1;for(var B=0;B<s.length;++B){var H=s.charCodeAt(B);if(55296<=H&&57343>=H){var q=s.charCodeAt(++B);H=65536+((H&1023)<<10)|q&1023}if(127>=H){if(g>=$)break;m[g++>>>0]=H}else{if(2047>=H){if(g+1>=$)break;m[g++>>>0]=192|H>>6}else{if(65535>=H){if(g+2>=$)break;m[g++>>>0]=224|H>>12}else{if(g+3>=$)break;m[g++>>>0]=240|H>>18,m[g++>>>0]=128|H>>12&63}m[g++>>>0]=128|H>>6&63}m[g++>>>0]=128|H&63}}return m[g>>>0]=0,g-T},Cr,ft=s=>{for(var m=\"\";K[s>>>0];)m+=Cr[K[s++>>>0]];return m},ur={},Ar={},Ir={},st;function Tr(s,m,g={}){var $=m.name;if(!s)throw new st(`type \"${$}\" must have a positive integer typeid pointer`);if(Ar.hasOwnProperty(s)){if(g.nb)return;throw new st(`Cannot register type \\'${$}\\' twice`)}Ar[s]=m,delete Ir[s],ur.hasOwnProperty(s)&&(m=ur[s],delete ur[s],m.forEach(T=>T()))}function ht(s,m,g={}){if(!(\"argPackAdvance\"in m))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");return Tr(s,m,g)}var bt=(s,m,g)=>{switch(m){case 1:return g?$=>N[$>>>0]:$=>K[$>>>0];case 2:return g?$=>Q[$>>>1>>>0]:$=>he[$>>>1>>>0];case 4:return g?$=>W[$>>>2>>>0]:$=>se[$>>>2>>>0];case 8:return g?$=>We[$>>>3]:$=>ee[$>>>3];default:throw new TypeError(`invalid integer width (${m}): ${s}`)}},Er=[],Te=[];function dr(s){s>>>=0,9<s&&--Te[s+1]===0&&(Te[s]=void 0,Er.push(s))}var Xe=s=>{if(!s)throw new st(\"Cannot use deleted val. handle = \"+s);return Te[s]},ut=s=>{switch(s){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let m=Er.pop()||Te.length;return Te[m]=s,Te[m+1]=1,m}};function lr(s){return this.fromWireType(se[s>>>2>>>0])}var Fn={name:\"emscripten::val\",fromWireType:s=>{var m=Xe(s);return dr(s),m},toWireType:(s,m)=>ut(m),argPackAdvance:8,readValueFromPointer:lr,bb:null},ge=(s,m)=>{switch(m){case 4:return function(g){return this.fromWireType(Ce[g>>>2>>>0])};case 8:return function(g){return this.fromWireType(ae[g>>>3>>>0])};default:throw new TypeError(`invalid float width (${m}): ${s}`)}},Yt=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0,jr=(s,m)=>{for(var g=s>>1,$=g+m/2;!(g>=$)&&he[g>>>0];)++g;if(g<<=1,32<g-s&&Yt)return Yt.decode(K.subarray(s>>>0,g>>>0));for(g=\"\",$=0;!($>=m/2);++$){var T=Q[s+2*$>>>1>>>0];if(T==0)break;g+=String.fromCharCode(T)}return g},qn=(s,m,g)=>{if(g??=2147483647,2>g)return 0;g-=2;var $=m;g=g<2*s.length?g/2:s.length;for(var T=0;T<g;++T)Q[m>>>1>>>0]=s.charCodeAt(T),m+=2;return Q[m>>>1>>>0]=0,m-$},Kr=s=>2*s.length,jn=(s,m)=>{for(var g=0,$=\"\";!(g>=m/4);){var T=W[s+4*g>>>2>>>0];if(T==0)break;++g,65536<=T?(T-=65536,$+=String.fromCharCode(55296|T>>10,56320|T&1023)):$+=String.fromCharCode(T)}return $},Yr=(s,m,g)=>{if(m>>>=0,g??=2147483647,4>g)return 0;var $=m;g=$+g-4;for(var T=0;T<s.length;++T){var B=s.charCodeAt(T);if(55296<=B&&57343>=B){var H=s.charCodeAt(++T);B=65536+((B&1023)<<10)|H&1023}if(W[m>>>2>>>0]=B,m+=4,m+4>g)break}return W[m>>>2>>>0]=0,m-$},Zr=s=>{for(var m=0,g=0;g<s.length;++g){var $=s.charCodeAt(g);55296<=$&&57343>=$&&++g,m+=4}return m},cr=(s,m)=>{var g=Ar[s];if(g===void 0)throw s=Mr(s),g=ft(s),rt(s),new st(`${m} has unknown type ${g}`);return g},Pr=(s,m,g)=>{var $=[];return s=s.toWireType($,g),$.length&&(se[m>>>2>>>0]=ut($)),s},He=s=>{try{s()}catch(m){ne(m)}},Xr=s=>{if(!R)try{s();try{L=L=s=L,r.onExit?.(s),R=!0,h(s,new qt(s))}catch(m){m instanceof qt||m==\"unwind\"||h(1,m)}}catch(m){m instanceof qt||m==\"unwind\"||h(1,m)}};function Qr(){var s=pe,m={};for(let[g,$]of Object.entries(s))m[g]=typeof $==\"function\"?(...T)=>{Zt.push(g);try{return $(...T)}finally{R||(Zt.pop(),dt&&gt===1&&Zt.length===0&&(gt=0,He(dn),typeof Fibers<\"u\"&&Fibers.Db()))}}:$;return m}var gt=0,dt=null,Bt=0,Zt=[],kr={},Or={},Jr=0,pr=null,en=[];function tn(){return new Promise((s,m)=>{pr={resolve:s,reject:m}})}function rn(){var s=Nt(65548),m=s+12;se[s>>>2>>>0]=m,se[s+4>>>2>>>0]=m+65536,m=Zt[0];var g=kr[m];return g===void 0&&(g=Jr++,kr[m]=g,Or[g]=m),W[s+8>>>2>>>0]=g,s}function nn(s){if(!R){if(gt===0){var m=!1,g=!1;s(($=0)=>{if(!R&&(Bt=$,m=!0,g)){gt=2,He(()=>vt(dt)),typeof Browser<\"u\"&&Browser.ib.mb&&Browser.ib.resume(),$=!1;try{var T=(0,pe[Or[W[dt+8>>>2>>>0]]])()}catch(q){T=q,$=!0}var B=!1;if(!dt){var H=pr;H&&(pr=null,($?H.reject:H.resolve)(T),B=!0)}if($&&!B)throw T}}),g=!0,m||(gt=1,dt=rn(),typeof Browser<\"u\"&&Browser.ib.mb&&Browser.ib.pause(),He(()=>Jt(dt)))}else gt===2?(gt=0,He(ct),rt(dt),dt=null,en.forEach(Xr)):ne(`invalid state: ${gt}`);return Bt}}function Rr(s){return nn(m=>{s().then(m)})}var Xt=[],on={},nt=s=>{var m=on[s];return m===void 0?ft(s):m},mr=()=>typeof globalThis==\"object\"?globalThis:Function(\"return this\")(),Br=s=>{var m=Xt.length;return Xt.push(s),m},Kn=(s,m)=>{for(var g=Array(s),$=0;$<s;++$)g[$]=cr(se[m+4*$>>>2>>>0],\"parameter \"+$);return g},wt=(s,m)=>Object.defineProperty(m,\"name\",{value:s});function Yn(s){var m=Function;if(!(m instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof m} which is not a function`);var g=wt(m.name||\"unknownFunctionName\",function(){});return g.prototype=m.prototype,g=new g,s=m.apply(g,s),s instanceof Object?s:g}var Je=s=>s%4===0&&(s%100!==0||s%400===0),Dr=[0,31,60,91,121,152,182,213,244,274,305,335],fr=[0,31,59,90,120,151,181,212,243,273,304,334],lt=[],hr=(s,m)=>{lt.length=0;for(var g;g=K[s++>>>0];){var $=g!=105;$&=g!=112,m+=$&&m%8?4:0,lt.push(g==112?se[m>>>2>>>0]:g==106?We[m>>>3]:g==105?W[m>>>2>>>0]:ae[m>>>3>>>0]),m+=$?8:4}return lt},Qe={},ot=()=>{if(!Qt){var s={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:p||\"./this.program\"},m;for(m in Qe)Qe[m]===void 0?delete s[m]:s[m]=Qe[m];var g=[];for(m in s)g.push(`${m}=${s[m]}`);Qt=g}return Qt},Qt,Zn=[null,[],[]],an=[31,29,31,30,31,30,31,31,30,31,30,31],zr=[31,28,31,30,31,30,31,31,30,31,30,31];function Xn(s){var m=Array(Wt(s)+1);return at(s,m,0,m.length),m}function sn(s,m,g,$){function T(D,be,Ie){for(D=typeof D==\"number\"?D.toString():D||\"\";D.length<be;)D=Ie[0]+D;return D}function B(D,be){return T(D,be,\"0\")}function H(D,be){function Ie(Mt){return 0>Mt?-1:0<Mt?1:0}var zt;return(zt=Ie(D.getFullYear()-be.getFullYear()))===0&&(zt=Ie(D.getMonth()-be.getMonth()))===0&&(zt=Ie(D.getDate()-be.getDate())),zt}function q(D){switch(D.getDay()){case 0:return new Date(D.getFullYear()-1,11,29);case 1:return D;case 2:return new Date(D.getFullYear(),0,3);case 3:return new Date(D.getFullYear(),0,2);case 4:return new Date(D.getFullYear(),0,1);case 5:return new Date(D.getFullYear()-1,11,31);case 6:return new Date(D.getFullYear()-1,11,30)}}function te(D){var be=D.$a;for(D=new Date(new Date(D.ab+1900,0,1).getTime());0<be;){var Ie=D.getMonth(),zt=(Je(D.getFullYear())?an:zr)[Ie];if(be>zt-D.getDate())be-=zt-D.getDate()+1,D.setDate(1),11>Ie?D.setMonth(Ie+1):(D.setMonth(0),D.setFullYear(D.getFullYear()+1));else{D.setDate(D.getDate()+be);break}}return Ie=new Date(D.getFullYear()+1,0,4),be=q(new Date(D.getFullYear(),0,4)),Ie=q(Ie),0>=H(be,D)?0>=H(Ie,D)?D.getFullYear()+1:D.getFullYear():D.getFullYear()-1}s>>>=0,m>>>=0,g>>>=0,$>>>=0;var X=se[$+40>>>2>>>0];$={Ab:W[$>>>2>>>0],zb:W[$+4>>>2>>>0],fb:W[$+8>>>2>>>0],jb:W[$+12>>>2>>>0],gb:W[$+16>>>2>>>0],ab:W[$+20>>>2>>>0],Va:W[$+24>>>2>>>0],$a:W[$+28>>>2>>>0],Cb:W[$+32>>>2>>>0],yb:W[$+36>>>2>>>0],Bb:X?je(X):\"\"},g=je(g),X={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var de in X)g=g.replace(new RegExp(de,\"g\"),X[de]);var Ee=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),Oe=\"January February March April May June July August September October November December\".split(\" \");X={\"%a\":D=>Ee[D.Va].substring(0,3),\"%A\":D=>Ee[D.Va],\"%b\":D=>Oe[D.gb].substring(0,3),\"%B\":D=>Oe[D.gb],\"%C\":D=>B((D.ab+1900)/100|0,2),\"%d\":D=>B(D.jb,2),\"%e\":D=>T(D.jb,2,\" \"),\"%g\":D=>te(D).toString().substring(2),\"%G\":te,\"%H\":D=>B(D.fb,2),\"%I\":D=>(D=D.fb,D==0?D=12:12<D&&(D-=12),B(D,2)),\"%j\":D=>{for(var be=0,Ie=0;Ie<=D.gb-1;be+=(Je(D.ab+1900)?an:zr)[Ie++]);return B(D.jb+be,3)},\"%m\":D=>B(D.gb+1,2),\"%M\":D=>B(D.zb,2),\"%n\":()=>`\\n`,\"%p\":D=>0<=D.fb&&12>D.fb?\"AM\":\"PM\",\"%S\":D=>B(D.Ab,2),\"%t\":()=>\"\t\",\"%u\":D=>D.Va||7,\"%U\":D=>B(Math.floor((D.$a+7-D.Va)/7),2),\"%V\":D=>{var be=Math.floor((D.$a+7-(D.Va+6)%7)/7);if(2>=(D.Va+371-D.$a-2)%7&&be++,be)be==53&&(Ie=(D.Va+371-D.$a)%7,Ie==4||Ie==3&&Je(D.ab)||(be=1));else{be=52;var Ie=(D.Va+7-D.$a-1)%7;(Ie==4||Ie==5&&Je(D.ab%400-1))&&be++}return B(be,2)},\"%w\":D=>D.Va,\"%W\":D=>B(Math.floor((D.$a+7-(D.Va+6)%7)/7),2),\"%y\":D=>(D.ab+1900).toString().substring(2),\"%Y\":D=>D.ab+1900,\"%z\":D=>{D=D.yb;var be=0<=D;return D=Math.abs(D)/60,(be?\"+\":\"-\")+(\"0000\"+(D/60*100+D%60)).slice(-4)},\"%Z\":D=>D.Bb,\"%%\":()=>\"%\"},g=g.replace(/%%/g,\"\\\\0\\\\0\");for(de in X)g.includes(de)&&(g=g.replace(new RegExp(de,\"g\"),X[de]($)));return g=g.replace(/\\\\0\\\\0/g,\"%\"),de=Xn(g),de.length>m?0:(N.set(de,s>>>0),de.length-1)}for(var un=Array(256),gr=0;256>gr;++gr)un[gr]=String.fromCharCode(gr);Cr=un,st=r.BindingError=class extends Error{constructor(s){super(s),this.name=\"BindingError\"}},r.InternalError=class extends Error{constructor(s){super(s),this.name=\"InternalError\"}},Te.push(0,1,void 0,1,null,1,!0,1,!1,1),r.count_emval_handles=()=>Te.length/2-5-Er.length;var Qn={ia:function(s,m,g){return Rr(async()=>{await r.sb(s,m,g)})},a:function(s,m,g){s>>>=0;var $=new Vt(s);throw se[$.hb+16>>>2>>>0]=0,se[$.hb+4>>>2>>>0]=m>>>0,se[$.hb+8>>>2>>>0]=g>>>0,sr=s,jt++,sr},y:function(){return 0},ea:function(){},R:function(){},T:function(){},ga:function(){return 0},ca:function(){},Z:function(){},ba:function(){},G:function(){},S:function(){},P:function(){},da:function(){},Q:function(){},C:function(s,m,g){m=ft(m>>>0),ht(s>>>0,{name:m,fromWireType:$=>$,toWireType:function($,T){if(typeof T!=\"bigint\"&&typeof T!=\"number\")throw T===null?T=\"null\":($=typeof T,T=$===\"object\"||$===\"array\"||$===\"function\"?T.toString():\"\"+T),new TypeError(`Cannot convert \"${T}\" to ${this.name}`);return typeof T==\"number\"&&(T=BigInt(T)),T},argPackAdvance:8,readValueFromPointer:bt(m,g>>>0,m.indexOf(\"u\")==-1),bb:null})},K:function(s,m,g,$){m=ft(m>>>0),ht(s>>>0,{name:m,fromWireType:function(T){return!!T},toWireType:function(T,B){return B?g:$},argPackAdvance:8,readValueFromPointer:function(T){return this.fromWireType(K[T>>>0])},bb:null})},J:function(s){return ht(s>>>0,Fn)},B:function(s,m,g){m=ft(m>>>0),ht(s>>>0,{name:m,fromWireType:$=>$,toWireType:($,T)=>T,argPackAdvance:8,readValueFromPointer:ge(m,g>>>0),bb:null})},s:function(s,m,g,$,T){if(s>>>=0,g>>>=0,m=ft(m>>>0),T===-1&&(T=4294967295),T=q=>q,$===0){var B=32-8*g;T=q=>q<<B>>>B}var H=m.includes(\"unsigned\")?function(q,te){return te>>>0}:function(q,te){return te};ht(s,{name:m,fromWireType:T,toWireType:H,argPackAdvance:8,readValueFromPointer:bt(m,g,$!==0),bb:null})},o:function(s,m,g){function $(B){return new T(N.buffer,se[B+4>>>2>>>0],se[B>>>2>>>0])}var T=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][m];g=ft(g>>>0),ht(s>>>0,{name:g,fromWireType:$,argPackAdvance:8,readValueFromPointer:$},{nb:!0})},D:function(s,m){m=ft(m>>>0);var g=m===\"std::string\";ht(s>>>0,{name:m,fromWireType:function($){var T=se[$>>>2>>>0],B=$+4;if(g)for(var H=B,q=0;q<=T;++q){var te=B+q;if(q==T||K[te>>>0]==0){if(H=je(H,te-H),X===void 0)var X=H;else X+=String.fromCharCode(0),X+=H;H=te+1}}else{for(X=Array(T),q=0;q<T;++q)X[q]=String.fromCharCode(K[B+q>>>0]);X=X.join(\"\")}return rt($),X},toWireType:function($,T){T instanceof ArrayBuffer&&(T=new Uint8Array(T));var B=typeof T==\"string\";if(!(B||T instanceof Uint8Array||T instanceof Uint8ClampedArray||T instanceof Int8Array))throw new st(\"Cannot pass non-string to std::string\");var H=g&&B?Wt(T):T.length,q=Nt(4+H+1),te=q+4;if(se[q>>>2>>>0]=H,g&&B)at(T,K,te,H+1);else if(B)for(B=0;B<H;++B){var X=T.charCodeAt(B);if(255<X)throw rt(te),new st(\"String has UTF-16 code units that do not fit in 8 bits\");K[te+B>>>0]=X}else for(B=0;B<H;++B)K[te+B>>>0]=T[B];return $!==null&&$.push(rt,q),q},argPackAdvance:8,readValueFromPointer:lr,bb($){rt($)}})},x:function(s,m,g){if(m>>>=0,g>>>=0,g=ft(g),m===2)var $=jr,T=qn,B=Kr,H=q=>he[q>>>1>>>0];else m===4&&($=jn,T=Yr,B=Zr,H=q=>se[q>>>2>>>0]);ht(s>>>0,{name:g,fromWireType:q=>{for(var te=se[q>>>2>>>0],X,de=q+4,Ee=0;Ee<=te;++Ee){var Oe=q+4+Ee*m;(Ee==te||H(Oe)==0)&&(de=$(de,Oe-de),X===void 0?X=de:(X+=String.fromCharCode(0),X+=de),de=Oe+m)}return rt(q),X},toWireType:(q,te)=>{if(typeof te!=\"string\")throw new st(`Cannot pass non-string to C++ string type ${g}`);var X=B(te),de=Nt(4+X+m);return se[de>>>2>>>0]=X/m,T(te,de+4,X+m),q!==null&&q.push(rt,de),de},argPackAdvance:8,readValueFromPointer:lr,bb(q){rt(q)}})},L:function(s,m){m=ft(m>>>0),ht(s>>>0,{ob:!0,name:m,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},ha:()=>1,u:function(s,m,g){return m>>>=0,g>>>=0,s=Xe(s>>>0),m=cr(m,\"emval::as\"),Pr(m,g,s)},w:function(s){return s>>>=0,Rr(()=>(s=Xe(s),s.then(ut)))},n:function(s,m,g,$){return g>>>=0,$>>>=0,s=Xt[s>>>0],m=Xe(m>>>0),s(null,m,g,$)},j:function(s,m,g,$,T){return g>>>=0,$>>>=0,T>>>=0,s=Xt[s>>>0],m=Xe(m>>>0),g=nt(g),s(m,m[g],$,T)},b:dr,A:function(s,m){return m>>>=0,s=Xe(s>>>0),m=Xe(m),s==m},m:function(s){return s>>>=0,s===0?ut(mr()):(s=nt(s),ut(mr()[s]))},i:function(s,m,g){m=Kn(s,m>>>0);var $=m.shift();s--;var T=`return function (obj, func, destructorsRef, args) {\\n`,B=0,H=[];g===0&&H.push(\"obj\");for(var q=[\"retType\"],te=[$],X=0;X<s;++X)H.push(\"arg\"+X),q.push(\"argType\"+X),te.push(m[X]),T+=`  var arg${X} = argType${X}.readValueFromPointer(args${B?\"+\"+B:\"\"});\\n`,B+=m[X].argPackAdvance;return T+=`  var rv = ${g===1?\"new func\":\"func.call\"}(${H.join(\", \")});\\n`,$.ob||(q.push(\"emval_returnValue\"),te.push(Pr),T+=`  return emval_returnValue(retType, destructorsRef, rv);\\n`),q.push(T+`};\\n`),s=Yn(q)(...te),g=`methodCaller<(${m.map(de=>de.name).join(\", \")}) => ${$.name}>`,Br(wt(g,s))},r:function(s,m){return m>>>=0,s=Xe(s>>>0),m=Xe(m),ut(s[m])},e:function(s){s>>>=0,9<s&&(Te[s+1]+=1)},t:function(){return ut([])},l:function(s){s=Xe(s>>>0);for(var m=Array(s.length),g=0;g<s.length;g++)m[g]=s[g];return ut(m)},f:function(s){return ut(nt(s>>>0))},k:function(){return ut({})},h:function(s){s>>>=0;for(var m=Xe(s);m.length;){var g=m.pop();m.pop()(g)}dr(s)},g:function(s,m,g){m>>>=0,g>>>=0,s=Xe(s>>>0),m=Xe(m),g=Xe(g),s[m]=g},c:function(s,m){return m>>>=0,s=cr(s>>>0,\"_emval_take_value\"),s=s.readValueFromPointer(m),ut(s)},W:function(s,m){s=-9007199254740992>s||9007199254740992<s?NaN:Number(s),m>>>=0,s=new Date(1e3*s),W[m>>>2>>>0]=s.getUTCSeconds(),W[m+4>>>2>>>0]=s.getUTCMinutes(),W[m+8>>>2>>>0]=s.getUTCHours(),W[m+12>>>2>>>0]=s.getUTCDate(),W[m+16>>>2>>>0]=s.getUTCMonth(),W[m+20>>>2>>>0]=s.getUTCFullYear()-1900,W[m+24>>>2>>>0]=s.getUTCDay(),W[m+28>>>2>>>0]=(s.getTime()-Date.UTC(s.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},X:function(s,m){s=-9007199254740992>s||9007199254740992<s?NaN:Number(s),m>>>=0,s=new Date(1e3*s),W[m>>>2>>>0]=s.getSeconds(),W[m+4>>>2>>>0]=s.getMinutes(),W[m+8>>>2>>>0]=s.getHours(),W[m+12>>>2>>>0]=s.getDate(),W[m+16>>>2>>>0]=s.getMonth(),W[m+20>>>2>>>0]=s.getFullYear()-1900,W[m+24>>>2>>>0]=s.getDay(),W[m+28>>>2>>>0]=(Je(s.getFullYear())?Dr:fr)[s.getMonth()]+s.getDate()-1|0,W[m+36>>>2>>>0]=-(60*s.getTimezoneOffset());var g=new Date(s.getFullYear(),6,1).getTimezoneOffset(),$=new Date(s.getFullYear(),0,1).getTimezoneOffset();W[m+32>>>2>>>0]=(g!=$&&s.getTimezoneOffset()==Math.min($,g))|0},Y:function(s){s>>>=0;var m=new Date(W[s+20>>>2>>>0]+1900,W[s+16>>>2>>>0],W[s+12>>>2>>>0],W[s+8>>>2>>>0],W[s+4>>>2>>>0],W[s>>>2>>>0],0),g=W[s+32>>>2>>>0],$=m.getTimezoneOffset(),T=new Date(m.getFullYear(),6,1).getTimezoneOffset(),B=new Date(m.getFullYear(),0,1).getTimezoneOffset(),H=Math.min(B,T);return 0>g?W[s+32>>>2>>>0]=+(T!=B&&H==$):0<g!=(H==$)&&(T=Math.max(B,T),m.setTime(m.getTime()+6e4*((0<g?H:T)-$))),W[s+24>>>2>>>0]=m.getDay(),W[s+28>>>2>>>0]=(Je(m.getFullYear())?Dr:fr)[m.getMonth()]+m.getDate()-1|0,W[s>>>2>>>0]=m.getSeconds(),W[s+4>>>2>>>0]=m.getMinutes(),W[s+8>>>2>>>0]=m.getHours(),W[s+12>>>2>>>0]=m.getDate(),W[s+16>>>2>>>0]=m.getMonth(),W[s+20>>>2>>>0]=m.getYear(),s=m.getTime(),BigInt(isNaN(s)?-1:s/1e3)},U:function(){return-52},V:function(){},N:function(s,m,g,$){g>>>=0,$>>>=0;var T=new Date().getFullYear(),B=new Date(T,0,1),H=new Date(T,6,1);T=B.getTimezoneOffset();var q=H.getTimezoneOffset();se[s>>>0>>>2>>>0]=60*Math.max(T,q),W[m>>>0>>>2>>>0]=+(T!=q),s=te=>te.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:\"short\"}).split(\" \")[1],B=s(B),H=s(H),q<T?(at(B,K,g,17),at(H,K,$,17)):(at(B,K,$,17),at(H,K,g,17))},v:()=>{ne(\"\")},d:function(s,m,g){return s>>>=0,m=hr(m>>>0,g>>>0),Rt[s](...m)},I:function(s,m,g){return s>>>=0,m=hr(m>>>0,g>>>0),Rt[s](...m)},H:()=>Date.now(),O:function(){return 4294901760},q:()=>performance.now(),M:function(s){s>>>=0;var m=K.length;if(4294901760<s)return!1;for(var g=1;4>=g;g*=2){var $=m*(1+.2/g);$=Math.min($,s+100663296);var T=Math;$=Math.max(s,$);e:{T=(T.min.call(T,4294901760,$+(65536-$%65536)%65536)-O.buffer.byteLength+65535)/65536;try{O.grow(T),Ae();var B=1;break e}catch{}B=void 0}if(B)return!0}return!1},$:function(s,m){s>>>=0,m>>>=0;var g=0;return ot().forEach(($,T)=>{var B=m+g;for(T=se[s+4*T>>>2>>>0]=B,B=0;B<$.length;++B)N[T++>>>0]=$.charCodeAt(B);N[T>>>0]=0,g+=$.length+1}),0},aa:function(s,m){s>>>=0,m>>>=0;var g=ot();se[s>>>2>>>0]=g.length;var $=0;return g.forEach(T=>$+=T.length+1),se[m>>>2>>>0]=$,0},z:()=>52,F:function(){return 52},_:function(){return 70},E:function(s,m,g,$){m>>>=0,g>>>=0,$>>>=0;for(var T=0,B=0;B<g;B++){var H=se[m>>>2>>>0],q=se[m+4>>>2>>>0];m+=8;for(var te=0;te<q;te++){var X=K[H+te>>>0],de=Zn[s];X===0||X===10?((s===1?E:P)(Kt(de,0)),de.length=0):de.push(X)}T+=q}return se[$>>>2>>>0]=T,0},fa:sn,p:function(s,m,g,$){return sn(s>>>0,m>>>0,g>>>0,$>>>0)}},pe=function(){function s(g){return pe=g.exports,pe=Qr(),pe=ln(),O=pe.ja,Ae(),ie.unshift(pe.ka),le--,le==0&&(qe!==null&&(clearInterval(qe),qe=null),G&&(g=G,G=null,g())),pe}var m={a:Qn};if(le++,r.instantiateWasm)try{return r.instantiateWasm(m,s)}catch(g){P(`Module.instantiateWasm callback failed with error: ${g}`),i(g)}return mt(m,function(g){s(g.instance)}).catch(i),{}}(),Mr=s=>(Mr=pe.la)(s);r._OrtInit=(s,m)=>(r._OrtInit=pe.ma)(s,m),r._OrtGetLastError=(s,m)=>(r._OrtGetLastError=pe.na)(s,m),r._OrtCreateSessionOptions=(s,m,g,$,T,B,H,q,te,X)=>(r._OrtCreateSessionOptions=pe.oa)(s,m,g,$,T,B,H,q,te,X),r._OrtAppendExecutionProvider=(s,m)=>(r._OrtAppendExecutionProvider=pe.pa)(s,m),r._OrtAddFreeDimensionOverride=(s,m,g)=>(r._OrtAddFreeDimensionOverride=pe.qa)(s,m,g),r._OrtAddSessionConfigEntry=(s,m,g)=>(r._OrtAddSessionConfigEntry=pe.ra)(s,m,g),r._OrtReleaseSessionOptions=s=>(r._OrtReleaseSessionOptions=pe.sa)(s),r._OrtCreateSession=(s,m,g)=>(r._OrtCreateSession=pe.ta)(s,m,g),r._OrtReleaseSession=s=>(r._OrtReleaseSession=pe.ua)(s),r._OrtGetInputOutputCount=(s,m,g)=>(r._OrtGetInputOutputCount=pe.va)(s,m,g),r._OrtGetInputName=(s,m)=>(r._OrtGetInputName=pe.wa)(s,m),r._OrtGetOutputName=(s,m)=>(r._OrtGetOutputName=pe.xa)(s,m),r._OrtFree=s=>(r._OrtFree=pe.ya)(s),r._OrtCreateTensor=(s,m,g,$,T,B)=>(r._OrtCreateTensor=pe.za)(s,m,g,$,T,B),r._OrtGetTensorData=(s,m,g,$,T)=>(r._OrtGetTensorData=pe.Aa)(s,m,g,$,T),r._OrtReleaseTensor=s=>(r._OrtReleaseTensor=pe.Ba)(s),r._OrtCreateRunOptions=(s,m,g,$)=>(r._OrtCreateRunOptions=pe.Ca)(s,m,g,$),r._OrtAddRunConfigEntry=(s,m,g)=>(r._OrtAddRunConfigEntry=pe.Da)(s,m,g),r._OrtReleaseRunOptions=s=>(r._OrtReleaseRunOptions=pe.Ea)(s),r._OrtCreateBinding=s=>(r._OrtCreateBinding=pe.Fa)(s),r._OrtBindInput=(s,m,g)=>(r._OrtBindInput=pe.Ga)(s,m,g),r._OrtBindOutput=(s,m,g,$)=>(r._OrtBindOutput=pe.Ha)(s,m,g,$),r._OrtClearBoundOutputs=s=>(r._OrtClearBoundOutputs=pe.Ia)(s),r._OrtReleaseBinding=s=>(r._OrtReleaseBinding=pe.Ja)(s),r._OrtRunWithBinding=(s,m,g,$,T)=>(r._OrtRunWithBinding=pe.Ka)(s,m,g,$,T),r._OrtRun=(s,m,g,$,T,B,H,q)=>(r._OrtRun=pe.La)(s,m,g,$,T,B,H,q),r._OrtEndProfiling=s=>(r._OrtEndProfiling=pe.Ma)(s),r._JsepOutput=(s,m,g)=>(r._JsepOutput=pe.Na)(s,m,g),r._JsepGetNodeName=s=>(r._JsepGetNodeName=pe.Oa)(s);var Nt=r._malloc=s=>(Nt=r._malloc=pe.Pa)(s),rt=r._free=s=>(rt=r._free=pe.Qa)(s),yr=s=>(yr=pe.Sa)(s),br=s=>(br=pe.Ta)(s),Ur=()=>(Ur=pe.Ua)(),Jt=s=>(Jt=pe.Wa)(s),dn=()=>(dn=pe.Xa)(),vt=s=>(vt=pe.Ya)(s),ct=()=>(ct=pe.Za)();r.___start_em_js=837952,r.___stop_em_js=838113;function ln(){var s=pe;s=Object.assign({},s);var m=g=>$=>g($)>>>0;return s.la=m(s.la),s.Pa=m(s.Pa),s.Ta=m(s.Ta),s.Ua=(g=>()=>g()>>>0)(s.Ua),s}r.stackSave=()=>Ur(),r.stackRestore=s=>yr(s),r.stackAlloc=s=>br(s),r.UTF8ToString=je,r.stringToUTF8=(s,m,g)=>at(s,K,m,g),r.lengthBytesUTF8=Wt;var Dt;G=function s(){Dt||Vr(),Dt||(G=s)};function Vr(){if(!(0<le)){if(r.preRun)for(typeof r.preRun==\"function\"&&(r.preRun=[r.preRun]);r.preRun.length;){var s=r.preRun.shift();me.unshift(s)}for(;0<me.length;)me.shift()(r);if(!(0<le||Dt||(Dt=!0,r.calledRun=!0,R))){for(;0<ie.length;)ie.shift()(r);for(o(r);0<ue.length;)ue.shift()(r)}}}return Vr(),u}})();typeof Ti==\"object\"&&typeof po==\"object\"?po.exports=Ii:typeof define==\"function\"&&define.amd&&define([],()=>Ii)});var Pi=Wr(()=>{});var ki=Wr(()=>{});var Oi={};gn(Oi,{cpus:()=>ll});var ll,Ri=Y(()=>{ll=void 0});var zi=Wr((Di,mo)=>{\"use strict\";var Bi=(()=>{var e=typeof document<\"u\"?document.currentScript?.src:void 0;return typeof __filename<\"u\"&&(e||=__filename),function(t={}){function r(){return ae.buffer!=ue.buffer&&Ne(),ue}function o(){return ae.buffer!=ue.buffer&&Ne(),le}function i(){return ae.buffer!=ue.buffer&&Ne(),qe}function u(){return ae.buffer!=ue.buffer&&Ne(),G}function a(){return ae.buffer!=ue.buffer&&Ne(),ne}function c(){return ae.buffer!=ue.buffer&&Ne(),xe}function p(){return ae.buffer!=ue.buffer&&Ne(),Ke}function h(){return ae.buffer!=ue.buffer&&Ne(),Ut}var d=t,y,w,_=new Promise((n,l)=>{y=n,w=l});d.mountExternalData=(n,l)=>{(d.Db||(d.Db=new Map)).set(n,l)},d.unmountExternalData=()=>{delete d.Db};let v=()=>{let n=(f,b,C)=>(...k)=>{let V=ct,F=b?.();k=f(...k);let re=b?.();return F!==re&&(f=re,C(F),b=C=null),ct!=V?T():k},l=f=>async(...b)=>{try{if(d.Cb)throw Error(\"Session already started\");let C=d.Cb={ec:b[0],errors:[]},k=await f(...b);if(d.Cb!==C)throw Error(\"Session mismatch\");d.Kb?.flush();let V=C.errors;if(0<V.length){let F=await Promise.all(V);if(F=F.filter(re=>re),0<F.length)throw Error(F.join(`\\n`))}return k}finally{d.Cb=null}};d._OrtCreateSession=n(d._OrtCreateSession,()=>d._OrtCreateSession,f=>d._OrtCreateSession=f),d._OrtRun=l(n(d._OrtRun,()=>d._OrtRun,f=>d._OrtRun=f)),d._OrtRunWithBinding=l(n(d._OrtRunWithBinding,()=>d._OrtRunWithBinding,f=>d._OrtRunWithBinding=f)),d._OrtBindInput=n(d._OrtBindInput,()=>d._OrtBindInput,f=>d._OrtBindInput=f),v=void 0};d.jsepInit=(n,l)=>{if(v?.(),n===\"webgpu\"){[d.Kb,d.Wb,d.$b,d.Lb,d.Zb,d.ob,d.ac,d.cc,d.Xb,d.Yb,d.bc]=l;let f=d.Kb;d.jsepRegisterBuffer=(b,C,k,V)=>f.registerBuffer(b,C,k,V),d.jsepGetBuffer=b=>f.getBuffer(b),d.jsepCreateDownloader=(b,C,k)=>f.createDownloader(b,C,k),d.jsepOnReleaseSession=b=>{f.onReleaseSession(b)},d.jsepOnRunStart=b=>f.onRunStart(b)}};var S=Object.assign({},d),A=\"./this.program\",I=(n,l)=>{throw l},x=typeof window==\"object\",E=typeof importScripts==\"function\",P=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",O=d.ENVIRONMENT_IS_PTHREAD||!1,R=\"\";function L(n){return d.locateFile?d.locateFile(n,R):R+n}var N,K,Q;if(P){var he=(uo(),wr(so)),W=(co(),wr(lo));R=E?W.dirname(R)+\"/\":__dirname+\"/\",N=(n,l)=>(n=Wt(n)?new URL(n):W.normalize(n),he.readFileSync(n,l?void 0:\"utf8\")),Q=n=>(n=N(n,!0),n.buffer||(n=new Uint8Array(n)),n),K=(n,l,f,b=!0)=>{n=Wt(n)?new URL(n):W.normalize(n),he.readFile(n,b?void 0:\"utf8\",(C,k)=>{C?f(C):l(b?k.buffer:k)})},!d.thisProgram&&1<process.argv.length&&(A=process.argv[1].replace(/\\\\\\\\/g,\"/\")),process.argv.slice(2),I=(n,l)=>{throw process.exitCode=n,l},global.Worker=Pi().Worker}else(x||E)&&(E?R=self.location.href:typeof document<\"u\"&&document.currentScript&&(R=document.currentScript.src),typeof e<\"u\"&&e&&(R=e),R.startsWith(\"blob:\")?R=\"\":R=R.substr(0,R.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),P||(N=n=>{var l=new XMLHttpRequest;return l.open(\"GET\",n,!1),l.send(null),l.responseText},E&&(Q=n=>{var l=new XMLHttpRequest;return l.open(\"GET\",n,!1),l.responseType=\"arraybuffer\",l.send(null),new Uint8Array(l.response)}),K=(n,l,f)=>{var b=new XMLHttpRequest;b.open(\"GET\",n,!0),b.responseType=\"arraybuffer\",b.onload=()=>{b.status==200||b.status==0&&b.response?l(b.response):f()},b.onerror=f,b.send(null)}));P&&typeof performance>\"u\"&&(global.performance=ki().performance);var se=console.log.bind(console),Ce=console.error.bind(console);P&&(se=(...n)=>he.writeSync(1,n.join(\" \")+`\\n`),Ce=(...n)=>he.writeSync(2,n.join(\" \")+`\\n`));var We=se,ee=Ce;Object.assign(d,S),S=null;var ae,Ae,me=!1,ie,ue,le,qe,G,ne,xe,Ke,Be,Ge,Ut;function Ne(){var n=ae.buffer;d.HEAP8=ue=new Int8Array(n),d.HEAP16=qe=new Int16Array(n),d.HEAPU8=le=new Uint8Array(n),d.HEAPU16=G=new Uint16Array(n),d.HEAP32=ne=new Int32Array(n),d.HEAPU32=xe=new Uint32Array(n),d.HEAPF32=Ke=new Float32Array(n),d.HEAPF64=Ut=new Float64Array(n),d.HEAP64=Be=new BigInt64Array(n),d.HEAPU64=Ge=new BigUint64Array(n)}var Ye=16777216;if(O)ae=d.wasmMemory;else if(d.wasmMemory)ae=d.wasmMemory;else if(ae=new WebAssembly.Memory({initial:Ye/65536,maximum:65536,shared:!0}),!(ae.buffer instanceof SharedArrayBuffer))throw ee(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\"),P&&ee(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)\"),Error(\"bad memory\");Ne(),Ye=ae.buffer.byteLength;var mt=[],Rt=[],qt=[],Vt=0,sr=null,jt=null;function xr(){if(Vt--,Vt==0&&(sr!==null&&(clearInterval(sr),sr=null),jt)){var n=jt;jt=null,n()}}function Kt(n){throw n=\"Aborted(\"+n+\")\",ee(n),me=!0,ie=1,n=new WebAssembly.RuntimeError(n+\". Build with -sASSERTIONS for more info.\"),w(n),n}var je=n=>n.startsWith(\"data:application/octet-stream;base64,\"),Wt=n=>n.startsWith(\"file://\"),at;at=\"ort-wasm-simd-threaded.wasm\",je(at)||(at=L(at));function Cr(n){if(Q)return Q(n);throw\"both async and sync fetching of the wasm failed\"}function ft(n){if(x||E){if(typeof fetch==\"function\"&&!Wt(n))return fetch(n,{credentials:\"same-origin\"}).then(l=>{if(!l.ok)throw`failed to load wasm binary file at \\'${n}\\'`;return l.arrayBuffer()}).catch(()=>Cr(n));if(K)return new Promise((l,f)=>{K(n,b=>l(new Uint8Array(b)),f)})}return Promise.resolve().then(()=>Cr(n))}function ur(n,l,f){return ft(n).then(b=>WebAssembly.instantiate(b,l)).then(f,b=>{ee(`failed to asynchronously prepare wasm: ${b}`),Kt(b)})}function Ar(n,l){var f=at;return typeof WebAssembly.instantiateStreaming!=\"function\"||je(f)||Wt(f)||P||typeof fetch!=\"function\"?ur(f,n,l):fetch(f,{credentials:\"same-origin\"}).then(b=>WebAssembly.instantiateStreaming(b,n).then(l,function(C){return ee(`wasm streaming compile failed: ${C}`),ee(\"falling back to ArrayBuffer instantiation\"),ur(f,n,l)}))}var Ir={826468:(n,l,f,b)=>{if(typeof d>\"u\"||!d.Db)return 1;if(n=He(n>>>0),n.startsWith(\"./\")&&(n=n.substring(2)),n=d.Db.get(n),!n)return 2;if(l>>>=0,f>>>=0,b>>>=0,l+f>n.byteLength)return 3;try{return o().set(n.subarray(l,l+f),b>>>0),0}catch{return 4}},826969:()=>{d.Xb()},827e3:()=>{d.Yb()},827029:()=>{d.bc()},827054:n=>d.Wb(n),827087:n=>d.$b(n),827119:(n,l,f)=>{d.Lb(n,l,f,!0)},827158:(n,l,f)=>{d.Lb(n,l,f)},827191:n=>{d.ob(\"Abs\",n,void 0)},827242:n=>{d.ob(\"Neg\",n,void 0)},827293:n=>{d.ob(\"Floor\",n,void 0)},827346:n=>{d.ob(\"Ceil\",n,void 0)},827398:n=>{d.ob(\"Reciprocal\",n,void 0)},827456:n=>{d.ob(\"Sqrt\",n,void 0)},827508:n=>{d.ob(\"Exp\",n,void 0)},827559:n=>{d.ob(\"Erf\",n,void 0)},827610:n=>{d.ob(\"Sigmoid\",n,void 0)},827665:(n,l,f)=>{d.ob(\"HardSigmoid\",n,{alpha:l,beta:f})},827744:n=>{d.ob(\"Log\",n,void 0)},827795:n=>{d.ob(\"Sin\",n,void 0)},827846:n=>{d.ob(\"Cos\",n,void 0)},827897:n=>{d.ob(\"Tan\",n,void 0)},827948:n=>{d.ob(\"Asin\",n,void 0)},828e3:n=>{d.ob(\"Acos\",n,void 0)},828052:n=>{d.ob(\"Atan\",n,void 0)},828104:n=>{d.ob(\"Sinh\",n,void 0)},828156:n=>{d.ob(\"Cosh\",n,void 0)},828208:n=>{d.ob(\"Asinh\",n,void 0)},828261:n=>{d.ob(\"Acosh\",n,void 0)},828314:n=>{d.ob(\"Atanh\",n,void 0)},828367:n=>{d.ob(\"Tanh\",n,void 0)},828419:n=>{d.ob(\"Not\",n,void 0)},828470:(n,l,f)=>{d.ob(\"Clip\",n,{min:l,max:f})},828539:n=>{d.ob(\"Clip\",n,void 0)},828591:(n,l)=>{d.ob(\"Elu\",n,{alpha:l})},828649:n=>{d.ob(\"Relu\",n,void 0)},828701:(n,l)=>{d.ob(\"LeakyRelu\",n,{alpha:l})},828765:(n,l)=>{d.ob(\"ThresholdedRelu\",n,{alpha:l})},828835:(n,l)=>{d.ob(\"Cast\",n,{to:l})},828893:n=>{d.ob(\"Add\",n,void 0)},828944:n=>{d.ob(\"Sub\",n,void 0)},828995:n=>{d.ob(\"Mul\",n,void 0)},829046:n=>{d.ob(\"Div\",n,void 0)},829097:n=>{d.ob(\"Pow\",n,void 0)},829148:n=>{d.ob(\"Equal\",n,void 0)},829201:n=>{d.ob(\"Greater\",n,void 0)},829256:n=>{d.ob(\"GreaterOrEqual\",n,void 0)},829318:n=>{d.ob(\"Less\",n,void 0)},829370:n=>{d.ob(\"LessOrEqual\",n,void 0)},829429:(n,l,f,b,C)=>{d.ob(\"ReduceMean\",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},829588:(n,l,f,b,C)=>{d.ob(\"ReduceMax\",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},829746:(n,l,f,b,C)=>{d.ob(\"ReduceMin\",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},829904:(n,l,f,b,C)=>{d.ob(\"ReduceProd\",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},830063:(n,l,f,b,C)=>{d.ob(\"ReduceSum\",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},830221:(n,l,f,b,C)=>{d.ob(\"ReduceL1\",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},830378:(n,l,f,b,C)=>{d.ob(\"ReduceL2\",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},830535:(n,l,f,b,C)=>{d.ob(\"ReduceLogSum\",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},830696:(n,l,f,b,C)=>{d.ob(\"ReduceSumSquare\",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},830860:(n,l,f,b,C)=>{d.ob(\"ReduceLogSumExp\",n,{keepDims:!!l,noopWithEmptyAxes:!!f,axes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},831024:n=>{d.ob(\"Where\",n,void 0)},831077:(n,l,f)=>{d.ob(\"Transpose\",n,{perm:l?Array.from(a().subarray(l>>>0,f>>>0)):[]})},831185:(n,l,f,b)=>{d.ob(\"DepthToSpace\",n,{blocksize:l,mode:He(f),format:b?\"NHWC\":\"NCHW\"})},831318:(n,l,f,b)=>{d.ob(\"DepthToSpace\",n,{blocksize:l,mode:He(f),format:b?\"NHWC\":\"NCHW\"})},831451:(n,l,f,b,C,k,V,F,re,J,ce,Re,ze,z,we)=>{d.ob(\"ConvTranspose\",n,{format:re?\"NHWC\":\"NCHW\",autoPad:l,dilations:[f],group:b,kernelShape:[C],pads:[k,V],strides:[F],wIsConst:()=>!!r()[J>>>0],outputPadding:ce?Array.from(a().subarray(ce>>>0,Re>>>0)):[],outputShape:ze?Array.from(a().subarray(ze>>>0,z>>>0)):[],activation:He(we)})},831852:(n,l,f,b,C,k,V,F,re,J,ce,Re,ze,z)=>{d.ob(\"ConvTranspose\",n,{format:F?\"NHWC\":\"NCHW\",autoPad:l,dilations:Array.from(a().subarray(f>>>0,(f>>>0)+2>>>0)),group:b,kernelShape:Array.from(a().subarray(C>>>0,(C>>>0)+2>>>0)),pads:Array.from(a().subarray(k>>>0,(k>>>0)+4>>>0)),strides:Array.from(a().subarray(V>>>0,(V>>>0)+2>>>0)),wIsConst:()=>!!r()[re>>>0],outputPadding:J?Array.from(a().subarray(J>>>0,ce>>>0)):[],outputShape:Re?Array.from(a().subarray(Re>>>0,ze>>>0)):[],activation:He(z)})},832417:(n,l,f,b,C,k,V,F,re,J,ce,Re,ze,z,we)=>{d.ob(\"ConvTranspose\",n,{format:re?\"NHWC\":\"NCHW\",autoPad:l,dilations:[f],group:b,kernelShape:[C],pads:[k,V],strides:[F],wIsConst:()=>!!r()[J>>>0],outputPadding:ce?Array.from(a().subarray(ce>>>0,Re>>>0)):[],outputShape:ze?Array.from(a().subarray(ze>>>0,z>>>0)):[],activation:He(we)})},832818:(n,l,f,b,C,k,V,F,re,J,ce,Re,ze,z)=>{d.ob(\"ConvTranspose\",n,{format:F?\"NHWC\":\"NCHW\",autoPad:l,dilations:Array.from(a().subarray(f>>>0,(f>>>0)+2>>>0)),group:b,kernelShape:Array.from(a().subarray(C>>>0,(C>>>0)+2>>>0)),pads:Array.from(a().subarray(k>>>0,(k>>>0)+4>>>0)),strides:Array.from(a().subarray(V>>>0,(V>>>0)+2>>>0)),wIsConst:()=>!!r()[re>>>0],outputPadding:J?Array.from(a().subarray(J>>>0,ce>>>0)):[],outputShape:Re?Array.from(a().subarray(Re>>>0,ze>>>0)):[],activation:He(z)})},833383:(n,l)=>{d.ob(\"GlobalAveragePool\",n,{format:l?\"NHWC\":\"NCHW\"})},833474:(n,l,f,b,C,k,V,F,re,J,ce,Re,ze,z,we,Pe)=>{d.ob(\"AveragePool\",n,{format:Pe?\"NHWC\":\"NCHW\",auto_pad:l,ceil_mode:f,count_include_pad:b,storage_order:C,dilations:[k,V],kernel_shape:[F,re],pads:[J,ce,Re,ze],strides:[z,we]})},833758:(n,l)=>{d.ob(\"GlobalAveragePool\",n,{format:l?\"NHWC\":\"NCHW\"})},833849:(n,l,f,b,C,k,V,F,re,J,ce,Re,ze,z,we,Pe)=>{d.ob(\"AveragePool\",n,{format:Pe?\"NHWC\":\"NCHW\",auto_pad:l,ceil_mode:f,count_include_pad:b,storage_order:C,dilations:[k,V],kernel_shape:[F,re],pads:[J,ce,Re,ze],strides:[z,we]})},834133:(n,l)=>{d.ob(\"GlobalMaxPool\",n,{format:l?\"NHWC\":\"NCHW\"})},834220:(n,l,f,b,C,k,V,F,re,J,ce,Re,ze,z,we,Pe)=>{d.ob(\"MaxPool\",n,{format:Pe?\"NHWC\":\"NCHW\",auto_pad:l,ceil_mode:f,count_include_pad:b,storage_order:C,dilations:[k,V],kernel_shape:[F,re],pads:[J,ce,Re,ze],strides:[z,we]})},834500:(n,l)=>{d.ob(\"GlobalMaxPool\",n,{format:l?\"NHWC\":\"NCHW\"})},834587:(n,l,f,b,C,k,V,F,re,J,ce,Re,ze,z,we,Pe)=>{d.ob(\"MaxPool\",n,{format:Pe?\"NHWC\":\"NCHW\",auto_pad:l,ceil_mode:f,count_include_pad:b,storage_order:C,dilations:[k,V],kernel_shape:[F,re],pads:[J,ce,Re,ze],strides:[z,we]})},834867:(n,l,f,b,C)=>{d.ob(\"Gemm\",n,{alpha:l,beta:f,transA:b,transB:C})},834971:n=>{d.ob(\"MatMul\",n,void 0)},835025:(n,l,f,b)=>{d.ob(\"ArgMax\",n,{keepDims:!!l,selectLastIndex:!!f,axis:b})},835133:(n,l,f,b)=>{d.ob(\"ArgMin\",n,{keepDims:!!l,selectLastIndex:!!f,axis:b})},835241:(n,l)=>{d.ob(\"Softmax\",n,{axis:l})},835304:(n,l)=>{d.ob(\"Concat\",n,{axis:l})},835364:(n,l,f,b,C)=>{d.ob(\"Split\",n,{axis:l,numOutputs:f,splitSizes:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},835504:n=>{d.ob(\"Expand\",n,void 0)},835558:(n,l)=>{d.ob(\"Gather\",n,{axis:Number(l)})},835629:(n,l)=>{d.ob(\"GatherElements\",n,{axis:Number(l)})},835708:(n,l,f,b,C,k,V,F,re,J,ce)=>{d.ob(\"Resize\",n,{antialias:l,axes:f?Array.from(a().subarray(f>>>0,b>>>0)):[],coordinateTransformMode:He(C),cubicCoeffA:k,excludeOutside:V,extrapolationValue:F,keepAspectRatioPolicy:He(re),mode:He(J),nearestMode:He(ce)})},836054:(n,l,f,b,C,k,V)=>{d.ob(\"Slice\",n,{starts:l?Array.from(a().subarray(l>>>0,f>>>0)):[],ends:b?Array.from(a().subarray(b>>>0,C>>>0)):[],axes:k?Array.from(a().subarray(k>>>0,V>>>0)):[]})},836270:n=>{d.ob(\"Tile\",n,void 0)},836322:(n,l,f,b)=>{d.ob(\"LayerNormalization\",n,{axis:l,epsilon:f,simplified:!!b})},836433:(n,l,f)=>{d.ob(\"InstanceNormalization\",n,{epsilon:l,format:f?\"NHWC\":\"NCHW\"})},836547:(n,l,f)=>{d.ob(\"InstanceNormalization\",n,{epsilon:l,format:f?\"NHWC\":\"NCHW\"})},836661:n=>{d.ob(\"Range\",n,void 0)},836714:(n,l)=>{d.ob(\"Einsum\",n,{equation:He(l)})},836795:(n,l,f,b,C)=>{d.ob(\"Pad\",n,{mode:l,value:f,pads:b?Array.from(a().subarray(b>>>0,C>>>0)):[]})},836922:(n,l,f,b,C,k)=>{d.ob(\"BatchNormalization\",n,{epsilon:l,momentum:f,spatial:!!C,trainingMode:!!b,format:k?\"NHWC\":\"NCHW\"})},837091:(n,l,f,b,C,k)=>{d.ob(\"BatchNormalization\",n,{epsilon:l,momentum:f,spatial:!!C,trainingMode:!!b,format:k?\"NHWC\":\"NCHW\"})},837260:(n,l,f)=>{d.ob(\"CumSum\",n,{exclusive:Number(l),reverse:Number(f)})},837357:(n,l,f,b,C,k,V,F,re)=>{d.ob(\"Attention\",n,{numHeads:l,isUnidirectional:f,maskFilterValue:b,scale:C,doRotary:k,qkvHiddenSizes:V?Array.from(a().subarray(Number(F)>>>0,Number(F)+V>>>0)):[],pastPresentShareBuffer:!!re})},837629:n=>{d.ob(\"BiasAdd\",n,void 0)},837684:n=>{d.ob(\"BiasSplitGelu\",n,void 0)},837745:n=>{d.ob(\"FastGelu\",n,void 0)},837801:(n,l,f,b,C,k,V,F,re,J,ce,Re,ze)=>{d.ob(\"Conv\",n,{format:re?\"NHWC\":\"NCHW\",auto_pad:l,dilations:[f],group:b,kernel_shape:[C],pads:k?Array.from(a().subarray(k>>>0,V>>>0)):[],strides:[F],w_is_const:()=>!!r()[J>>>0],activation:He(ce),activation_params:Re?Array.from(p().subarray(Re>>>0,ze>>>0)):[]})},838171:(n,l,f,b,C,k,V,F,re,J,ce,Re,ze,z,we,Pe)=>{d.ob(\"Conv\",n,{format:Re?\"NHWC\":\"NCHW\",auto_pad:l,dilations:[f,b],group:C,kernel_shape:[k,V],pads:F?Array.from(a().subarray(F>>>0,re>>>0)):[],strides:[J,ce],w_is_const:()=>!!r()[ze>>>0],activation:He(z),activation_params:we?Array.from(p().subarray(we>>>0,Pe>>>0)):[]})},838562:n=>{d.ob(\"Gelu\",n,void 0)},838614:(n,l,f,b,C,k)=>{d.ob(\"MatMulNBits\",n,{k:l,n:f,accuracyLevel:b,bits:C,blockSize:k})},838741:(n,l,f,b,C,k)=>{d.ob(\"MultiHeadAttention\",n,{numHeads:l,isUnidirectional:f,maskFilterValue:b,scale:C,doRotary:k})},838900:(n,l,f,b,C)=>{d.ob(\"RotaryEmbedding\",n,{interleaved:!!l,numHeads:f,rotaryEmbeddingDim:b,scale:C})},839039:(n,l,f)=>{d.ob(\"SkipLayerNormalization\",n,{epsilon:l,simplified:!!f})},839141:(n,l,f)=>{d.ob(\"SkipLayerNormalization\",n,{epsilon:l,simplified:!!f})},839243:(n,l,f,b)=>{d.ob(\"LayerNormalization\",n,{axis:l,epsilon:f,simplified:!!b})},839354:n=>{d.ac(n)},839388:(n,l)=>d.cc(n,l,d.Cb.ec,d.Cb.errors)};function st(n){this.name=\"ExitStatus\",this.message=`Program terminated with exit(${n})`,this.status=n}var Tr=n=>{n.terminate(),n.onmessage=()=>{}},ht=n=>{ge.xb.length==0&&(lr(),ge.Mb(ge.xb[0]));var l=ge.xb.pop();if(!l)return 6;ge.yb.push(l),ge.ub[n.wb]=l,l.wb=n.wb;var f={cmd:\"run\",start_routine:n.fc,arg:n.Rb,pthread_ptr:n.wb};return P&&l.unref(),l.postMessage(f,n.mc),0},bt=0,Er=n=>{var l=io();return n=n(),fn(l),n},Te=(n,l,...f)=>Er(()=>{for(var b=2*f.length,C=oo(8*b),k=C>>>3,V=0;V<f.length;V++){var F=f[V];typeof F==\"bigint\"?(Be[k+2*V]=1n,Be[k+2*V+1]=F):(Be[k+2*V]=0n,h()[k+2*V+1>>>0]=F)}return gi(n,0,b,C,l)});function dr(n){if(O)return Te(0,1,n);ie=n,0<bt||(ge.hc(),d.onExit?.(n),me=!0),I(n,new st(n))}var Xe=n=>{if(ie=n,O)throw jr(n),\"unwind\";dr(n)};function ut(){for(var n=d.numThreads;n--;)lr();mt.unshift(()=>{Vt++,Fn(()=>xr())})}function lr(){var n=L(\"ort-wasm-simd-threaded.worker.js\");n=new Worker(n),ge.xb.push(n)}function Fn(n){O?n():Promise.all(ge.xb.map(ge.Mb)).then(n)}var ge={xb:[],yb:[],Qb:[],ub:{},Gb(){O?(ge.receiveObjectTransfer=ge.dc,ge.threadInitTLS=ge.Pb,ge.setExitStatus=ge.Ob):ut()},Ob:n=>ie=n,pc:[\"$terminateWorker\"],hc:()=>{for(var n of ge.yb)Tr(n);for(n of ge.xb)Tr(n);ge.xb=[],ge.yb=[],ge.ub=[]},Nb:n=>{var l=n.wb;delete ge.ub[l],ge.xb.push(n),ge.yb.splice(ge.yb.indexOf(n),1),n.wb=0,ro(l)},dc(){},Pb(){ge.Qb.forEach(n=>n())},Mb:n=>new Promise(l=>{n.onmessage=k=>{k=k.data;var V=k.cmd;if(k.targetThread&&k.targetThread!=pn()){var F=ge.ub[k.targetThread];F?F.postMessage(k,k.transferList):ee(`Internal error! Worker sent a message \"${V}\" to target pthread ${k.targetThread}, but that thread no longer exists!`)}else V===\"checkMailbox\"?rt():V===\"spawnThread\"?ht(k):V===\"cleanupThread\"?ge.Nb(ge.ub[k.thread]):V===\"killThread\"?(k=k.thread,V=ge.ub[k],delete ge.ub[k],Tr(V),ro(k),ge.yb.splice(ge.yb.indexOf(V),1),V.wb=0):V===\"cancelThread\"?ge.ub[k.thread].postMessage({cmd:\"cancel\"}):V===\"loaded\"?(n.loaded=!0,P&&!n.wb&&n.unref(),l(n)):V===\"alert\"?alert(`Thread ${k.threadId}: ${k.text}`):k.target===\"setimmediate\"?n.postMessage(k):V===\"callHandler\"?d[k.handler](...k.args):V&&ee(`worker sent an unknown command ${V}`)},n.onerror=k=>{throw ee(`worker sent an error! ${k.filename}:${k.lineno}: ${k.message}`),k},P&&(n.on(\"message\",k=>n.onmessage({data:k})),n.on(\"error\",k=>n.onerror(k)));var f=[],b=[\"onExit\"],C;for(C of b)d.hasOwnProperty(C)&&f.push(C);n.postMessage({cmd:\"load\",handlers:f,urlOrBlob:d.mainScriptUrlOrBlob||e,wasmMemory:ae,wasmModule:Ae})})};d.PThread=ge;var Yt=n=>{for(;0<n.length;)n.shift()(d)};d.establishStackSpace=()=>{var n=pn(),l=c()[n+52>>>2>>>0];n=c()[n+56>>>2>>>0],bi(l,l-n),fn(l)};function jr(n){if(O)return Te(1,0,n);Xe(n)}d.invokeEntryPoint=(n,l)=>{bt=0,n=wi(n,l),0<bt?ge.Ob(n):no(n)};class qn{constructor(l){this.Ib=l-24}Gb(l,f){c()[this.Ib+16>>>2>>>0]=0,c()[this.Ib+4>>>2>>>0]=l,c()[this.Ib+8>>>2>>>0]=f}}var Kr=0,jn=0;function Yr(n,l,f,b){return O?Te(2,1,n,l,f,b):Zr(n,l,f,b)}function Zr(n,l,f,b){if(n>>>=0,l>>>=0,f>>>=0,b>>>=0,typeof SharedArrayBuffer>\"u\")return ee(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\"),6;var C=[];return O&&C.length===0?Yr(n,l,f,b):(n={fc:f,wb:n,Rb:b,mc:C},O?(n.oc=\"spawnThread\",postMessage(n,C),0):ht(n))}var cr=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0,Pr=(n,l,f)=>{l>>>=0;var b=l+f;for(f=l;n[f]&&!(f>=b);)++f;if(16<f-l&&n.buffer&&cr)return cr.decode(n.buffer instanceof SharedArrayBuffer?n.slice(l,f):n.subarray(l,f));for(b=\"\";l<f;){var C=n[l++];if(C&128){var k=n[l++]&63;if((C&224)==192)b+=String.fromCharCode((C&31)<<6|k);else{var V=n[l++]&63;C=(C&240)==224?(C&15)<<12|k<<6|V:(C&7)<<18|k<<12|V<<6|n[l++]&63,65536>C?b+=String.fromCharCode(C):(C-=65536,b+=String.fromCharCode(55296|C>>10,56320|C&1023))}}else b+=String.fromCharCode(C)}return b},He=(n,l)=>(n>>>=0)?Pr(o(),n,l):\"\";function Xr(n,l,f){return O?Te(3,1,n,l,f):0}function Qr(n,l){if(O)return Te(4,1,n,l)}var gt=n=>{for(var l=0,f=0;f<n.length;++f){var b=n.charCodeAt(f);127>=b?l++:2047>=b?l+=2:55296<=b&&57343>=b?(l+=4,++f):l+=3}return l},dt=(n,l,f,b)=>{if(f>>>=0,!(0<b))return 0;var C=f;b=f+b-1;for(var k=0;k<n.length;++k){var V=n.charCodeAt(k);if(55296<=V&&57343>=V){var F=n.charCodeAt(++k);V=65536+((V&1023)<<10)|F&1023}if(127>=V){if(f>=b)break;l[f++>>>0]=V}else{if(2047>=V){if(f+1>=b)break;l[f++>>>0]=192|V>>6}else{if(65535>=V){if(f+2>=b)break;l[f++>>>0]=224|V>>12}else{if(f+3>=b)break;l[f++>>>0]=240|V>>18,l[f++>>>0]=128|V>>12&63}l[f++>>>0]=128|V>>6&63}l[f++>>>0]=128|V&63}}return l[f>>>0]=0,f-C},Bt=(n,l,f)=>dt(n,o(),l,f);function Zt(n,l){if(O)return Te(5,1,n,l)}function kr(n,l,f){if(O)return Te(6,1,n,l,f)}function Or(n,l,f){return O?Te(7,1,n,l,f):0}function Jr(n,l){if(O)return Te(8,1,n,l)}function pr(n,l,f){if(O)return Te(9,1,n,l,f)}function en(n,l,f,b){if(O)return Te(10,1,n,l,f,b)}function tn(n,l,f,b){if(O)return Te(11,1,n,l,f,b)}function rn(n,l,f,b){if(O)return Te(12,1,n,l,f,b)}function nn(n){if(O)return Te(13,1,n)}function Rr(n,l){if(O)return Te(14,1,n,l)}function Xt(n,l,f){if(O)return Te(15,1,n,l,f)}var on,nt=n=>{for(var l=\"\";o()[n>>>0];)l+=on[o()[n++>>>0]];return l},mr={},Br={},Kn={},wt;function Yn(n,l,f={}){var b=l.name;if(!n)throw new wt(`type \"${b}\" must have a positive integer typeid pointer`);if(Br.hasOwnProperty(n)){if(f.Ub)return;throw new wt(`Cannot register type \\'${b}\\' twice`)}Br[n]=l,delete Kn[n],mr.hasOwnProperty(n)&&(l=mr[n],delete mr[n],l.forEach(C=>C()))}function Je(n,l,f={}){if(!(\"argPackAdvance\"in l))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");return Yn(n,l,f)}var Dr=(n,l,f)=>{switch(l){case 1:return f?b=>r()[b>>>0]:b=>o()[b>>>0];case 2:return f?b=>i()[b>>>1>>>0]:b=>u()[b>>>1>>>0];case 4:return f?b=>a()[b>>>2>>>0]:b=>c()[b>>>2>>>0];case 8:return f?b=>Be[b>>>3]:b=>Ge[b>>>3];default:throw new TypeError(`invalid integer width (${l}): ${n}`)}},fr=[],lt=[];function hr(n){n>>>=0,9<n&&--lt[n+1]===0&&(lt[n]=void 0,fr.push(n))}var Qe=n=>{if(!n)throw new wt(\"Cannot use deleted val. handle = \"+n);return lt[n]},ot=n=>{switch(n){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let l=fr.pop()||lt.length;return lt[l]=n,lt[l+1]=1,l}};function Qt(n){return this.fromWireType(c()[n>>>2>>>0])}var Zn={name:\"emscripten::val\",fromWireType:n=>{var l=Qe(n);return hr(n),l},toWireType:(n,l)=>ot(l),argPackAdvance:8,readValueFromPointer:Qt,Bb:null},an=(n,l)=>{switch(l){case 4:return function(f){return this.fromWireType(p()[f>>>2>>>0])};case 8:return function(f){return this.fromWireType(h()[f>>>3>>>0])};default:throw new TypeError(`invalid float width (${l}): ${n}`)}},zr=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0,Xn=(n,l)=>{for(var f=n>>1,b=f+l/2;!(f>=b)&&u()[f>>>0];)++f;if(f<<=1,32<f-n&&zr)return zr.decode(o().slice(n,f));for(f=\"\",b=0;!(b>=l/2);++b){var C=i()[n+2*b>>>1>>>0];if(C==0)break;f+=String.fromCharCode(C)}return f},sn=(n,l,f)=>{if(f??=2147483647,2>f)return 0;f-=2;var b=l;f=f<2*n.length?f/2:n.length;for(var C=0;C<f;++C){var k=n.charCodeAt(C);i()[l>>>1>>>0]=k,l+=2}return i()[l>>>1>>>0]=0,l-b},un=n=>2*n.length,gr=(n,l)=>{for(var f=0,b=\"\";!(f>=l/4);){var C=a()[n+4*f>>>2>>>0];if(C==0)break;++f,65536<=C?(C-=65536,b+=String.fromCharCode(55296|C>>10,56320|C&1023)):b+=String.fromCharCode(C)}return b},Qn=(n,l,f)=>{if(l>>>=0,f??=2147483647,4>f)return 0;var b=l;f=b+f-4;for(var C=0;C<n.length;++C){var k=n.charCodeAt(C);if(55296<=k&&57343>=k){var V=n.charCodeAt(++C);k=65536+((k&1023)<<10)|V&1023}if(a()[l>>>2>>>0]=k,l+=4,l+4>f)break}return a()[l>>>2>>>0]=0,l-b},pe=n=>{for(var l=0,f=0;f<n.length;++f){var b=n.charCodeAt(f);55296<=b&&57343>=b&&++f,l+=4}return l},Mr=n=>{if(!me)try{if(n(),!(0<bt))try{O?no(ie):Xe(ie)}catch(l){l instanceof st||l==\"unwind\"||I(1,l)}}catch(l){l instanceof st||l==\"unwind\"||I(1,l)}};function Nt(n){n>>>=0,typeof Atomics.nc==\"function\"&&(Atomics.nc(a(),n>>>2,n).value.then(rt),n+=128,Atomics.store(a(),n>>>2,1))}d.__emscripten_thread_mailbox_await=Nt;var rt=()=>{var n=pn();n&&(Nt(n),Mr(yi))};d.checkMailbox=rt;var yr=[],br=(n,l)=>{var f=Br[n];if(f===void 0)throw n=fi(n),f=nt(n),At(n),new wt(`${l} has unknown type ${f}`);return f},Ur=(n,l,f)=>{var b=[];return n=n.toWireType(b,f),b.length&&(c()[l>>>2>>>0]=ot(b)),n},Jt=n=>{try{n()}catch(l){Kt(l)}};function dn(){var n=oe,l={};for(let[f,b]of Object.entries(n))l[f]=typeof b==\"function\"?(...C)=>{Dt.push(f);try{return b(...C)}finally{me||(Dt.pop(),ct&&vt===1&&Dt.length===0&&(vt=0,bt+=1,Jt($i),typeof Fibers<\"u\"&&Fibers.rc()))}}:b;return l}var vt=0,ct=null,ln=0,Dt=[],Vr={},s={},m=0,g=null,$=[];function T(){return new Promise((n,l)=>{g={resolve:n,reject:l}})}function B(){var n=mn(65548),l=n+12;c()[n>>>2>>>0]=l,c()[n+4>>>2>>>0]=l+65536,l=Dt[0];var f=Vr[l];return f===void 0&&(f=m++,Vr[l]=f,s[f]=l),l=f,a()[n+8>>>2>>>0]=l,n}function H(){var n=a()[ct+8>>>2>>>0];return n=oe[s[n]],--bt,n()}function q(n){if(!me){if(vt===0){var l=!1,f=!1;n((b=0)=>{if(!me&&(ln=b,l=!0,f)){vt=2,Jt(()=>_i(ct)),typeof Browser<\"u\"&&Browser.Hb.Tb&&Browser.Hb.resume(),b=!1;try{var C=H()}catch(F){C=F,b=!0}var k=!1;if(!ct){var V=g;V&&(g=null,(b?V.reject:V.resolve)(C),k=!0)}if(b&&!k)throw C}}),f=!0,l||(vt=1,ct=B(),typeof Browser<\"u\"&&Browser.Hb.Tb&&Browser.Hb.pause(),Jt(()=>vi(ct)))}else vt===2?(vt=0,Jt(Si),At(ct),ct=null,$.forEach(Mr)):Kt(`invalid state: ${vt}`);return ln}}function te(n){return q(l=>{n().then(l)})}var X=[],de={},Ee=n=>{var l=de[n];return l===void 0?nt(n):l},Oe=()=>typeof globalThis==\"object\"?globalThis:Function(\"return this\")(),D=n=>{var l=X.length;return X.push(n),l},be=(n,l)=>{for(var f=Array(n),b=0;b<n;++b)f[b]=br(c()[l+4*b>>>2>>>0],\"parameter \"+b);return f},Ie=(n,l)=>Object.defineProperty(l,\"name\",{value:n});function zt(n){var l=Function;if(!(l instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof l} which is not a function`);var f=Ie(l.name||\"unknownFunctionName\",function(){});return f.prototype=l.prototype,f=new f,n=l.apply(f,n),n instanceof Object?n:f}var Mt=n=>n%4===0&&(n%100!==0||n%400===0),Qo=[0,31,60,91,121,152,182,213,244,274,305,335],Jo=[0,31,59,90,120,151,181,212,243,273,304,334];function ei(n,l,f,b,C,k,V){return O?Te(16,1,n,l,f,b,C,k,V):-52}function ti(n,l,f,b,C,k){if(O)return Te(17,1,n,l,f,b,C,k)}var Jn=[],ri=(n,l)=>{Jn.length=0;for(var f;f=o()[n++>>>0];){var b=f!=105;b&=f!=112,l+=b&&l%8?4:0,Jn.push(f==112?c()[l>>>2>>>0]:f==106?Be[l>>>3]:f==105?a()[l>>>2>>>0]:h()[l>>>3>>>0]),l+=b?8:4}return Jn},eo={},ni=()=>{if(!to){var n={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:A||\"./this.program\"},l;for(l in eo)eo[l]===void 0?delete n[l]:n[l]=eo[l];var f=[];for(l in n)f.push(`${l}=${n[l]}`);to=f}return to},to;function oi(n,l){if(O)return Te(18,1,n,l);n>>>=0,l>>>=0;var f=0;return ni().forEach((b,C)=>{var k=l+f;for(C=c()[n+4*C>>>2>>>0]=k,k=0;k<b.length;++k)r()[C++>>>0]=b.charCodeAt(k);r()[C>>>0]=0,f+=b.length+1}),0}function ii(n,l){if(O)return Te(19,1,n,l);n>>>=0,l>>>=0;var f=ni();c()[n>>>2>>>0]=f.length;var b=0;return f.forEach(C=>b+=C.length+1),c()[l>>>2>>>0]=b,0}function ai(n){return O?Te(20,1,n):52}function si(n,l,f,b){return O?Te(21,1,n,l,f,b):52}function ui(n,l,f,b){return O?Te(22,1,n,l,f,b):70}var Xd=[null,[],[]];function di(n,l,f,b){if(O)return Te(23,1,n,l,f,b);l>>>=0,f>>>=0,b>>>=0;for(var C=0,k=0;k<f;k++){var V=c()[l>>>2>>>0],F=c()[l+4>>>2>>>0];l+=8;for(var re=0;re<F;re++){var J=o()[V+re>>>0],ce=Xd[n];J===0||J===10?((n===1?We:ee)(Pr(ce,0)),ce.length=0):ce.push(J)}C+=F}return c()[b>>>2>>>0]=C,0}var li=[31,29,31,30,31,30,31,31,30,31,30,31],ci=[31,28,31,30,31,30,31,31,30,31,30,31];function Qd(n){var l=Array(gt(n)+1);return dt(n,l,0,l.length),l}var Jd=(n,l)=>{r().set(n,l>>>0)};function pi(n,l,f,b){function C(z,we,Pe){for(z=typeof z==\"number\"?z.toString():z||\"\";z.length<we;)z=Pe[0]+z;return z}function k(z,we){return C(z,we,\"0\")}function V(z,we){function Pe(Ci){return 0>Ci?-1:0<Ci?1:0}var er;return(er=Pe(z.getFullYear()-we.getFullYear()))===0&&(er=Pe(z.getMonth()-we.getMonth()))===0&&(er=Pe(z.getDate()-we.getDate())),er}function F(z){switch(z.getDay()){case 0:return new Date(z.getFullYear()-1,11,29);case 1:return z;case 2:return new Date(z.getFullYear(),0,3);case 3:return new Date(z.getFullYear(),0,2);case 4:return new Date(z.getFullYear(),0,1);case 5:return new Date(z.getFullYear()-1,11,31);case 6:return new Date(z.getFullYear()-1,11,30)}}function re(z){var we=z.zb;for(z=new Date(new Date(z.Ab+1900,0,1).getTime());0<we;){var Pe=z.getMonth(),er=(Mt(z.getFullYear())?li:ci)[Pe];if(we>er-z.getDate())we-=er-z.getDate()+1,z.setDate(1),11>Pe?z.setMonth(Pe+1):(z.setMonth(0),z.setFullYear(z.getFullYear()+1));else{z.setDate(z.getDate()+we);break}}return Pe=new Date(z.getFullYear()+1,0,4),we=F(new Date(z.getFullYear(),0,4)),Pe=F(Pe),0>=V(we,z)?0>=V(Pe,z)?z.getFullYear()+1:z.getFullYear():z.getFullYear()-1}n>>>=0,l>>>=0,f>>>=0,b>>>=0;var J=c()[b+40>>>2>>>0];b={kc:a()[b>>>2>>>0],jc:a()[b+4>>>2>>>0],Eb:a()[b+8>>>2>>>0],Jb:a()[b+12>>>2>>>0],Fb:a()[b+16>>>2>>>0],Ab:a()[b+20>>>2>>>0],vb:a()[b+24>>>2>>>0],zb:a()[b+28>>>2>>>0],qc:a()[b+32>>>2>>>0],ic:a()[b+36>>>2>>>0],lc:J?He(J):\"\"},f=He(f),J={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var ce in J)f=f.replace(new RegExp(ce,\"g\"),J[ce]);var Re=\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),ze=\"January February March April May June July August September October November December\".split(\" \");J={\"%a\":z=>Re[z.vb].substring(0,3),\"%A\":z=>Re[z.vb],\"%b\":z=>ze[z.Fb].substring(0,3),\"%B\":z=>ze[z.Fb],\"%C\":z=>k((z.Ab+1900)/100|0,2),\"%d\":z=>k(z.Jb,2),\"%e\":z=>C(z.Jb,2,\" \"),\"%g\":z=>re(z).toString().substring(2),\"%G\":re,\"%H\":z=>k(z.Eb,2),\"%I\":z=>(z=z.Eb,z==0?z=12:12<z&&(z-=12),k(z,2)),\"%j\":z=>{for(var we=0,Pe=0;Pe<=z.Fb-1;we+=(Mt(z.Ab+1900)?li:ci)[Pe++]);return k(z.Jb+we,3)},\"%m\":z=>k(z.Fb+1,2),\"%M\":z=>k(z.jc,2),\"%n\":()=>`\\n`,\"%p\":z=>0<=z.Eb&&12>z.Eb?\"AM\":\"PM\",\"%S\":z=>k(z.kc,2),\"%t\":()=>\"\t\",\"%u\":z=>z.vb||7,\"%U\":z=>k(Math.floor((z.zb+7-z.vb)/7),2),\"%V\":z=>{var we=Math.floor((z.zb+7-(z.vb+6)%7)/7);if(2>=(z.vb+371-z.zb-2)%7&&we++,we)we==53&&(Pe=(z.vb+371-z.zb)%7,Pe==4||Pe==3&&Mt(z.Ab)||(we=1));else{we=52;var Pe=(z.vb+7-z.zb-1)%7;(Pe==4||Pe==5&&Mt(z.Ab%400-1))&&we++}return k(we,2)},\"%w\":z=>z.vb,\"%W\":z=>k(Math.floor((z.zb+7-(z.vb+6)%7)/7),2),\"%y\":z=>(z.Ab+1900).toString().substring(2),\"%Y\":z=>z.Ab+1900,\"%z\":z=>{z=z.ic;var we=0<=z;return z=Math.abs(z)/60,(we?\"+\":\"-\")+(\"0000\"+(z/60*100+z%60)).slice(-4)},\"%Z\":z=>z.lc,\"%%\":()=>\"%\"},f=f.replace(/%%/g,\"\\\\0\\\\0\");for(ce in J)f.includes(ce)&&(f=f.replace(new RegExp(ce,\"g\"),J[ce](b)));return f=f.replace(/\\\\0\\\\0/g,\"%\"),ce=Qd(f),ce.length>l?0:(Jd(ce,n),ce.length-1)}ge.Gb();for(var mi=Array(256),cn=0;256>cn;++cn)mi[cn]=String.fromCharCode(cn);on=mi,wt=d.BindingError=class extends Error{constructor(n){super(n),this.name=\"BindingError\"}},d.InternalError=class extends Error{constructor(n){super(n),this.name=\"InternalError\"}},lt.push(0,1,void 0,1,null,1,!0,1,!1,1),d.count_emval_handles=()=>lt.length/2-5-fr.length;var el=[dr,jr,Yr,Xr,Qr,Zt,kr,Or,Jr,pr,en,tn,rn,nn,Rr,Xt,ei,ti,oi,ii,ai,si,ui,di],tl={ua:function(n,l,f){return te(async()=>{await d.Zb(n,l,f)})},b:function(n,l,f){throw n>>>=0,new qn(n).Gb(l>>>0,f>>>0),Kr=n,jn++,Kr},ia:function(n){hi(n>>>0,!E,1,!x,131072,!1),ge.Pb()},G:function(n){n>>>=0,O?postMessage({cmd:\"cleanupThread\",thread:n}):ge.Nb(ge.ub[n])},_:Zr,A:Xr,pa:Qr,W:Zt,Y:kr,qa:Or,na:Jr,fa:pr,ma:en,K:tn,X:rn,U:nn,oa:Rr,V:Xt,E:function(n,l,f){n>>>=0,f>>>=0,l=nt(l>>>0),Je(n,{name:l,fromWireType:b=>b,toWireType:function(b,C){if(typeof C!=\"bigint\"&&typeof C!=\"number\")throw C===null?C=\"null\":(b=typeof C,C=b===\"object\"||b===\"array\"||b===\"function\"?C.toString():\"\"+C),new TypeError(`Cannot convert \"${C}\" to ${this.name}`);return typeof C==\"number\"&&(C=BigInt(C)),C},argPackAdvance:8,readValueFromPointer:Dr(l,f,l.indexOf(\"u\")==-1),Bb:null})},O:function(n,l,f,b){n>>>=0,l=nt(l>>>0),Je(n,{name:l,fromWireType:function(C){return!!C},toWireType:function(C,k){return k?f:b},argPackAdvance:8,readValueFromPointer:function(C){return this.fromWireType(o()[C>>>0])},Bb:null})},N:function(n){return Je(n>>>0,Zn)},D:function(n,l,f){n>>>=0,f>>>=0,l=nt(l>>>0),Je(n,{name:l,fromWireType:b=>b,toWireType:(b,C)=>C,argPackAdvance:8,readValueFromPointer:an(l,f),Bb:null})},t:function(n,l,f,b,C){if(n>>>=0,f>>>=0,l=nt(l>>>0),C===-1&&(C=4294967295),C=F=>F,b===0){var k=32-8*f;C=F=>F<<k>>>k}var V=l.includes(\"unsigned\")?function(F,re){return re>>>0}:function(F,re){return re};Je(n,{name:l,fromWireType:C,toWireType:V,argPackAdvance:8,readValueFromPointer:Dr(l,f,b!==0),Bb:null})},p:function(n,l,f){function b(k){var V=c()[k>>>2>>>0];return k=c()[k+4>>>2>>>0],new C(r().buffer,k,V)}n>>>=0;var C=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][l];f=nt(f>>>0),Je(n,{name:f,fromWireType:b,argPackAdvance:8,readValueFromPointer:b},{Ub:!0})},F:function(n,l){n>>>=0,l=nt(l>>>0);var f=l===\"std::string\";Je(n,{name:l,fromWireType:function(b){var C=c()[b>>>2>>>0],k=b+4;if(f)for(var V=k,F=0;F<=C;++F){var re=k+F;if(F==C||o()[re>>>0]==0){if(V=He(V,re-V),J===void 0)var J=V;else J+=String.fromCharCode(0),J+=V;V=re+1}}else{for(J=Array(C),F=0;F<C;++F)J[F]=String.fromCharCode(o()[k+F>>>0]);J=J.join(\"\")}return At(b),J},toWireType:function(b,C){C instanceof ArrayBuffer&&(C=new Uint8Array(C));var k=typeof C==\"string\";if(!(k||C instanceof Uint8Array||C instanceof Uint8ClampedArray||C instanceof Int8Array))throw new wt(\"Cannot pass non-string to std::string\");var V=f&&k?gt(C):C.length,F=mn(4+V+1),re=F+4;if(c()[F>>>2>>>0]=V,f&&k)Bt(C,re,V+1);else if(k)for(k=0;k<V;++k){var J=C.charCodeAt(k);if(255<J)throw At(re),new wt(\"String has UTF-16 code units that do not fit in 8 bits\");o()[re+k>>>0]=J}else for(k=0;k<V;++k)o()[re+k>>>0]=C[k];return b!==null&&b.push(At,F),F},argPackAdvance:8,readValueFromPointer:Qt,Bb(b){At(b)}})},z:function(n,l,f){if(n>>>=0,l>>>=0,f>>>=0,f=nt(f),l===2)var b=Xn,C=sn,k=un,V=F=>u()[F>>>1>>>0];else l===4&&(b=gr,C=Qn,k=pe,V=F=>c()[F>>>2>>>0]);Je(n,{name:f,fromWireType:F=>{for(var re=c()[F>>>2>>>0],J,ce=F+4,Re=0;Re<=re;++Re){var ze=F+4+Re*l;(Re==re||V(ze)==0)&&(ce=b(ce,ze-ce),J===void 0?J=ce:(J+=String.fromCharCode(0),J+=ce),ce=ze+l)}return At(F),J},toWireType:(F,re)=>{if(typeof re!=\"string\")throw new wt(`Cannot pass non-string to C++ string type ${f}`);var J=k(re),ce=mn(4+J+l);return c()[ce>>>2>>>0]=J/l,C(re,ce+4,J+l),F!==null&&F.push(At,ce),ce},argPackAdvance:8,readValueFromPointer:Qt,Bb(F){At(F)}})},P:function(n,l){n>>>=0,l=nt(l>>>0),Je(n,{Vb:!0,name:l,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},ta:()=>1,S:function(n,l){n>>>=0,n==l>>>0?setTimeout(rt):O?postMessage({targetThread:n,cmd:\"checkMailbox\"}):(n=ge.ub[n])&&n.postMessage({cmd:\"checkMailbox\"})},$:function(n,l,f,b,C){l>>>=0,f>>>=0,b/=2,yr.length=b,C=C>>>0>>>3;for(var k=0;k<b;k++)yr[k]=Be[C+2*k]?Be[C+2*k+1]:h()[C+2*k+1>>>0];return n=l?Ir[l]:el[n],ge.Sb=f,f=n(...yr),ge.Sb=0,f},ha:Nt,sa:function(n){P&&ge.ub[n>>>0].ref()},w:function(n,l,f){return l>>>=0,f>>>=0,n=Qe(n>>>0),l=br(l,\"emval::as\"),Ur(l,f,n)},y:function(n){return n>>>=0,te(()=>(n=Qe(n),n.then(ot)))},o:function(n,l,f,b){return f>>>=0,b>>>=0,n=X[n>>>0],l=Qe(l>>>0),n(null,l,f,b)},k:function(n,l,f,b,C){return f>>>=0,b>>>=0,C>>>=0,n=X[n>>>0],l=Qe(l>>>0),f=Ee(f),n(l,l[f],b,C)},c:hr,C:function(n,l){return l>>>=0,n=Qe(n>>>0),l=Qe(l),n==l},n:function(n){return n>>>=0,n===0?ot(Oe()):(n=Ee(n),ot(Oe()[n]))},j:function(n,l,f){l=be(n,l>>>0);var b=l.shift();n--;var C=`return function (obj, func, destructorsRef, args) {\\n`,k=0,V=[];f===0&&V.push(\"obj\");for(var F=[\"retType\"],re=[b],J=0;J<n;++J)V.push(\"arg\"+J),F.push(\"argType\"+J),re.push(l[J]),C+=`  var arg${J} = argType${J}.readValueFromPointer(args${k?\"+\"+k:\"\"});\\n`,k+=l[J].argPackAdvance;return C+=`  var rv = ${f===1?\"new func\":\"func.call\"}(${V.join(\", \")});\\n`,b.Vb||(F.push(\"emval_returnValue\"),re.push(Ur),C+=`  return emval_returnValue(retType, destructorsRef, rv);\\n`),F.push(C+`};\\n`),n=zt(F)(...re),f=`methodCaller<(${l.map(ce=>ce.name).join(\", \")}) => ${b.name}>`,D(Ie(f,n))},s:function(n,l){return l>>>=0,n=Qe(n>>>0),l=Qe(l),ot(n[l])},d:function(n){n>>>=0,9<n&&(lt[n+1]+=1)},v:function(){return ot([])},m:function(n){n=Qe(n>>>0);for(var l=Array(n.length),f=0;f<n.length;f++)l[f]=n[f];return ot(l)},g:function(n){return ot(Ee(n>>>0))},l:function(){return ot({})},i:function(n){n>>>=0;for(var l=Qe(n);l.length;){var f=l.pop();l.pop()(f)}hr(n)},h:function(n,l,f){l>>>=0,f>>>=0,n=Qe(n>>>0),l=Qe(l),f=Qe(f),n[l]=f},e:function(n,l){return l>>>=0,n=br(n>>>0,\"_emval_take_value\"),n=n.readValueFromPointer(l),ot(n)},ca:function(n,l){n=-9007199254740992>n||9007199254740992<n?NaN:Number(n),l>>>=0,n=new Date(1e3*n),a()[l>>>2>>>0]=n.getUTCSeconds(),a()[l+4>>>2>>>0]=n.getUTCMinutes(),a()[l+8>>>2>>>0]=n.getUTCHours(),a()[l+12>>>2>>>0]=n.getUTCDate(),a()[l+16>>>2>>>0]=n.getUTCMonth(),a()[l+20>>>2>>>0]=n.getUTCFullYear()-1900,a()[l+24>>>2>>>0]=n.getUTCDay(),n=(n.getTime()-Date.UTC(n.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,a()[l+28>>>2>>>0]=n},da:function(n,l){n=-9007199254740992>n||9007199254740992<n?NaN:Number(n),l>>>=0,n=new Date(1e3*n),a()[l>>>2>>>0]=n.getSeconds(),a()[l+4>>>2>>>0]=n.getMinutes(),a()[l+8>>>2>>>0]=n.getHours(),a()[l+12>>>2>>>0]=n.getDate(),a()[l+16>>>2>>>0]=n.getMonth(),a()[l+20>>>2>>>0]=n.getFullYear()-1900,a()[l+24>>>2>>>0]=n.getDay();var f=(Mt(n.getFullYear())?Qo:Jo)[n.getMonth()]+n.getDate()-1|0;a()[l+28>>>2>>>0]=f,a()[l+36>>>2>>>0]=-(60*n.getTimezoneOffset()),f=new Date(n.getFullYear(),6,1).getTimezoneOffset();var b=new Date(n.getFullYear(),0,1).getTimezoneOffset();n=(f!=b&&n.getTimezoneOffset()==Math.min(b,f))|0,a()[l+32>>>2>>>0]=n},ea:function(n){n>>>=0;var l=new Date(a()[n+20>>>2>>>0]+1900,a()[n+16>>>2>>>0],a()[n+12>>>2>>>0],a()[n+8>>>2>>>0],a()[n+4>>>2>>>0],a()[n>>>2>>>0],0),f=a()[n+32>>>2>>>0],b=l.getTimezoneOffset(),C=new Date(l.getFullYear(),6,1).getTimezoneOffset(),k=new Date(l.getFullYear(),0,1).getTimezoneOffset(),V=Math.min(k,C);return 0>f?a()[n+32>>>2>>>0]=+(C!=k&&V==b):0<f!=(V==b)&&(C=Math.max(k,C),l.setTime(l.getTime()+6e4*((0<f?V:C)-b))),a()[n+24>>>2>>>0]=l.getDay(),f=(Mt(l.getFullYear())?Qo:Jo)[l.getMonth()]+l.getDate()-1|0,a()[n+28>>>2>>>0]=f,a()[n>>>2>>>0]=l.getSeconds(),a()[n+4>>>2>>>0]=l.getMinutes(),a()[n+8>>>2>>>0]=l.getHours(),a()[n+12>>>2>>>0]=l.getDate(),a()[n+16>>>2>>>0]=l.getMonth(),a()[n+20>>>2>>>0]=l.getYear(),n=l.getTime(),BigInt(isNaN(n)?-1:n/1e3)},aa:ei,ba:ti,R:function(n,l,f,b){n>>>=0,l>>>=0,f>>>=0,b>>>=0;var C=new Date().getFullYear(),k=new Date(C,0,1),V=new Date(C,6,1);C=k.getTimezoneOffset();var F=V.getTimezoneOffset(),re=Math.max(C,F);c()[n>>>2>>>0]=60*re,a()[l>>>2>>>0]=+(C!=F),n=J=>J.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:\"short\"}).split(\" \")[1],k=n(k),V=n(V),F<C?(Bt(k,f,17),Bt(V,b,17)):(Bt(k,b,17),Bt(V,f,17))},q:()=>{Kt(\"\")},f:function(n,l,f){return n>>>=0,l=ri(l>>>0,f>>>0),Ir[n](...l)},M:function(n,l,f){return n>>>=0,l=ri(l>>>0,f>>>0),Ir[n](...l)},H:()=>{},L:()=>Date.now(),ra:()=>{throw bt+=1,\"unwind\"},T:function(){return 4294901760},u:()=>performance.timeOrigin+performance.now(),x:()=>P?(Ri(),wr(Oi)).cpus().length:navigator.hardwareConcurrency,Q:function(n){n>>>=0;var l=o().length;if(n<=l||4294901760<n)return!1;for(var f=1;4>=f;f*=2){var b=l*(1+.2/f);b=Math.min(b,n+100663296);var C=Math;b=Math.max(n,b);e:{C=(C.min.call(C,4294901760,b+(65536-b%65536)%65536)-ae.buffer.byteLength+65535)/65536;try{ae.grow(C),Ne();var k=1;break e}catch{}k=void 0}if(k)return!0}return!1},ja:oi,la:ii,Z:Xe,B:ai,J:si,ga:ui,I:di,a:ae||d.wasmMemory,ka:pi,r:function(n,l,f,b){return pi(n>>>0,l>>>0,f>>>0,b>>>0)}},oe=function(){function n(f,b){return oe=f.exports,oe=dn(),oe=rl(),ge.Qb.push(oe.cb),Rt.unshift(oe.va),Ae=b,xr(),oe}var l={a:tl};if(Vt++,d.instantiateWasm)try{return d.instantiateWasm(l,n)}catch(f){ee(`Module.instantiateWasm callback failed with error: ${f}`),w(f)}return Ar(l,function(f){n(f.instance,f.module)}).catch(w),{}}(),fi=n=>(fi=oe.wa)(n);d.__embind_initialize_bindings=()=>(d.__embind_initialize_bindings=oe.xa)(),d._OrtInit=(n,l)=>(d._OrtInit=oe.ya)(n,l),d._OrtGetLastError=(n,l)=>(d._OrtGetLastError=oe.za)(n,l),d._OrtCreateSessionOptions=(n,l,f,b,C,k,V,F,re,J)=>(d._OrtCreateSessionOptions=oe.Aa)(n,l,f,b,C,k,V,F,re,J),d._OrtAppendExecutionProvider=(n,l)=>(d._OrtAppendExecutionProvider=oe.Ba)(n,l),d._OrtAddFreeDimensionOverride=(n,l,f)=>(d._OrtAddFreeDimensionOverride=oe.Ca)(n,l,f),d._OrtAddSessionConfigEntry=(n,l,f)=>(d._OrtAddSessionConfigEntry=oe.Da)(n,l,f),d._OrtReleaseSessionOptions=n=>(d._OrtReleaseSessionOptions=oe.Ea)(n),d._OrtCreateSession=(n,l,f)=>(d._OrtCreateSession=oe.Fa)(n,l,f),d._OrtReleaseSession=n=>(d._OrtReleaseSession=oe.Ga)(n),d._OrtGetInputOutputCount=(n,l,f)=>(d._OrtGetInputOutputCount=oe.Ha)(n,l,f),d._OrtGetInputName=(n,l)=>(d._OrtGetInputName=oe.Ia)(n,l),d._OrtGetOutputName=(n,l)=>(d._OrtGetOutputName=oe.Ja)(n,l),d._OrtFree=n=>(d._OrtFree=oe.Ka)(n),d._OrtCreateTensor=(n,l,f,b,C,k)=>(d._OrtCreateTensor=oe.La)(n,l,f,b,C,k),d._OrtGetTensorData=(n,l,f,b,C)=>(d._OrtGetTensorData=oe.Ma)(n,l,f,b,C),d._OrtReleaseTensor=n=>(d._OrtReleaseTensor=oe.Na)(n),d._OrtCreateRunOptions=(n,l,f,b)=>(d._OrtCreateRunOptions=oe.Oa)(n,l,f,b),d._OrtAddRunConfigEntry=(n,l,f)=>(d._OrtAddRunConfigEntry=oe.Pa)(n,l,f),d._OrtReleaseRunOptions=n=>(d._OrtReleaseRunOptions=oe.Qa)(n),d._OrtCreateBinding=n=>(d._OrtCreateBinding=oe.Ra)(n),d._OrtBindInput=(n,l,f)=>(d._OrtBindInput=oe.Sa)(n,l,f),d._OrtBindOutput=(n,l,f,b)=>(d._OrtBindOutput=oe.Ta)(n,l,f,b),d._OrtClearBoundOutputs=n=>(d._OrtClearBoundOutputs=oe.Ua)(n),d._OrtReleaseBinding=n=>(d._OrtReleaseBinding=oe.Va)(n),d._OrtRunWithBinding=(n,l,f,b,C)=>(d._OrtRunWithBinding=oe.Wa)(n,l,f,b,C),d._OrtRun=(n,l,f,b,C,k,V,F)=>(d._OrtRun=oe.Xa)(n,l,f,b,C,k,V,F),d._OrtEndProfiling=n=>(d._OrtEndProfiling=oe.Ya)(n),d._JsepOutput=(n,l,f)=>(d._JsepOutput=oe.Za)(n,l,f),d._JsepGetNodeName=n=>(d._JsepGetNodeName=oe._a)(n);var pn=d._pthread_self=()=>(pn=d._pthread_self=oe.$a)(),mn=d._malloc=n=>(mn=d._malloc=oe.ab)(n),At=d._free=n=>(At=d._free=oe.bb)(n);d.__emscripten_tls_init=()=>(d.__emscripten_tls_init=oe.cb)();var hi=d.__emscripten_thread_init=(n,l,f,b,C,k)=>(hi=d.__emscripten_thread_init=oe.eb)(n,l,f,b,C,k);d.__emscripten_thread_crashed=()=>(d.__emscripten_thread_crashed=oe.fb)();var gi=(n,l,f,b,C)=>(gi=oe.gb)(n,l,f,b,C),ro=n=>(ro=oe.hb)(n),no=d.__emscripten_thread_exit=n=>(no=d.__emscripten_thread_exit=oe.ib)(n),yi=()=>(yi=oe.jb)(),bi=(n,l)=>(bi=oe.kb)(n,l),fn=n=>(fn=oe.lb)(n),oo=n=>(oo=oe.mb)(n),io=()=>(io=oe.nb)(),wi=d.dynCall_ii=(n,l)=>(wi=d.dynCall_ii=oe.pb)(n,l),vi=n=>(vi=oe.qb)(n),$i=()=>($i=oe.rb)(),_i=n=>(_i=oe.sb)(n),Si=()=>(Si=oe.tb)();d.___start_em_js=839500,d.___stop_em_js=839661;function rl(){var n=oe;n=Object.assign({},n);var l=b=>C=>b(C)>>>0,f=b=>()=>b()>>>0;return n.wa=l(n.wa),n.$a=f(n.$a),n.ab=l(n.ab),n.emscripten_main_runtime_thread_id=f(n.emscripten_main_runtime_thread_id),n.mb=l(n.mb),n.nb=f(n.nb),n}d.wasmMemory=ae,d.stackSave=()=>io(),d.stackRestore=n=>fn(n),d.stackAlloc=n=>oo(n),d.keepRuntimeAlive=()=>0<bt,d.UTF8ToString=He,d.stringToUTF8=Bt,d.lengthBytesUTF8=gt,d.ExitStatus=st,d.PThread=ge;var hn;jt=function n(){hn||xi(),hn||(jt=n)};function xi(){if(!(0<Vt))if(O)y(d),O||Yt(Rt),startWorker(d);else{if(d.preRun)for(typeof d.preRun==\"function\"&&(d.preRun=[d.preRun]);d.preRun.length;)mt.unshift(d.preRun.shift());Yt(mt),0<Vt||hn||(hn=!0,d.calledRun=!0,me||(O||Yt(Rt),y(d),O||Yt(qt)))}}return xi(),_}})();typeof Di==\"object\"&&typeof mo==\"object\"?mo.exports=Bi:typeof define==\"function\"&&define.amd&&define([],()=>Bi)});var Mi=Wr((gm,cl)=>{cl.exports=\\'\"use strict\";var Module={},ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require(\"worker_threads\"),parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",e=>onmessage({data:e}));var fs=require(\"fs\"),vm=require(\"vm\");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,\"utf8\"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(...e){var a=e.join(\" \");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,a+`\\\\n`);return}console.error(a)}function threadAlert(...e){var a=e.join(\" \");postMessage({cmd:\"alert\",text:a,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,a)=>{var r=Module.wasmModule;Module.wasmModule=null;var t=new WebAssembly.Instance(r,e);return a(t)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd===\"load\"){let r=[];self.onmessage=t=>r.push(t),self.startWorker=t=>{Module=t,postMessage({cmd:\"loaded\"});for(let s of r)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const t of e.data.handlers)Module[t]=(...s)=>{postMessage({cmd:\"callHandler\",handler:t,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob==\"string\")importScripts(e.data.urlOrBlob);else{var a=URL.createObjectURL(e.data.urlOrBlob);importScripts(a),URL.revokeObjectURL(a)}ortWasmThreaded(Module)}else if(e.data.cmd===\"run\"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(r){if(r!=\"unwind\")throw r}}else e.data.cmd===\"cancel\"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target===\"setimmediate\"||(e.data.cmd===\"checkMailbox\"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(r){throw Module.__emscripten_thread_crashed?.(),r}}self.onmessage=handleMessage;\\\\n\\'});var go,Gt,tr,bn,Gr,Hi,yo,ye=Y(()=>{\"use strict\";go=e=>{switch(e){case\"int8\":return 3;case\"uint8\":return 2;case\"bool\":return 9;case\"int16\":return 5;case\"uint16\":return 4;case\"int32\":return 6;case\"uint32\":return 12;case\"float16\":return 10;case\"float32\":return 1;case\"float64\":return 11;case\"string\":return 8;case\"int64\":return 7;case\"uint64\":return 13;default:throw new Error(`unsupported data type: ${e}`)}},Gt=e=>{switch(e){case 3:return\"int8\";case 2:return\"uint8\";case 9:return\"bool\";case 5:return\"int16\";case 4:return\"uint16\";case 6:return\"int32\";case 12:return\"uint32\";case 10:return\"float16\";case 1:return\"float32\";case 11:return\"float64\";case 8:return\"string\";case 7:return\"int64\";case 13:return\"uint64\";default:throw new Error(`unsupported data type: ${e}`)}},tr=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],bn=e=>{switch(e){case\"float16\":return typeof Float16Array<\"u\"&&Float16Array.from?Float16Array:Uint16Array;case\"float32\":return Float32Array;case\"uint8\":return Uint8Array;case\"int8\":return Int8Array;case\"uint16\":return Uint16Array;case\"int16\":return Int16Array;case\"int32\":return Int32Array;case\"bool\":return Uint8Array;case\"float64\":return Float64Array;case\"uint32\":return Uint32Array;case\"int64\":return BigInt64Array;case\"uint64\":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},Gr=e=>{switch(e){case\"verbose\":return 0;case\"info\":return 1;case\"warning\":return 2;case\"error\":return 3;case\"fatal\":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},Hi=e=>e===\"float32\"||e===\"float16\"||e===\"int32\"||e===\"int64\"||e===\"uint32\"||e===\"uint8\"||e===\"bool\",yo=e=>{switch(e){case\"none\":return 0;case\"cpu\":return 1;case\"cpu-pinned\":return 2;case\"texture\":return 3;case\"gpu-buffer\":return 4;default:throw new Error(`unsupported data location: ${e}`)}}});var wn=Y(()=>{\"use strict\"});var Fi=Y(()=>{\"use strict\";wn()});var qi,ji=Y(()=>{\"use strict\";qi=\"1.18.0\"});var Ki,pt,bo=Y(()=>{\"use strict\";ji();Ki=\"warning\",pt={wasm:{},webgl:{},webgpu:{},versions:{common:qi},set logLevel(e){if(e!==void 0){if(typeof e!=\"string\"||[\"verbose\",\"info\",\"warning\",\"error\",\"fatal\"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);Ki=e}},get logLevel(){return Ki}};Object.defineProperty(pt,\"logLevel\",{enumerable:!0})});var vr,Yi=Y(()=>{\"use strict\";bo();vr=pt});var Zi=Y(()=>{\"use strict\"});var Xi=Y(()=>{\"use strict\";vn()});var Ji=Y(()=>{\"use strict\"});var ea=Y(()=>{\"use strict\";vn()});var vn=Y(()=>{\"use strict\";Zi();Xi();Ji();ea()});var $n=Y(()=>{\"use strict\";vn()});var wo,ta,rr,Ht,vo=Y(()=>{\"use strict\";bo();wo=(e,t)=>{(typeof pt.trace>\"u\"?!pt.wasm.trace:!pt.trace)||console.timeStamp(`${e}::ORT::${t}`)},ta=(e,t)=>{let r=new Error().stack?.split(/\\\\r\\\\n|\\\\r|\\\\n/g)||[],o=!1;for(let i=0;i<r.length;i++){if(o&&!r[i].includes(\"TRACE_FUNC\")){let u=`FUNC_${e}::${r[i].trim().split(\" \")[1]}`;t&&(u+=`::${t}`),wo(\"CPU\",u);return}r[i].includes(\"TRACE_FUNC\")&&(o=!0)}},rr=e=>{(typeof pt.trace>\"u\"?!pt.wasm.trace:!pt.trace)||ta(\"BEGIN\",e)},Ht=e=>{(typeof pt.trace>\"u\"?!pt.wasm.trace:!pt.trace)||ta(\"END\",e)}});var ra=Y(()=>{\"use strict\";wn();$n();vo()});var na=Y(()=>{\"use strict\";ra()});var oa=Y(()=>{\"use strict\"});var ia=Y(()=>{\"use strict\"});var aa=Y(()=>{\"use strict\"});var sa=Y(()=>{\"use strict\"});var ua=Y(()=>{\"use strict\";wn();$n()});var da=Y(()=>{\"use strict\";ua()});var $r=Y(()=>{\"use strict\";Fi();Yi();na();$n();oa();ia();vo();aa();sa();da()});var _l,Sl,la,ca,pa,xl,Ve,Lt=Y(()=>{\"use strict\";ye();_l=[\"V\",\"I\",\"W\",\"E\",\"F\"],Sl=(e,t)=>{console.log(`[${_l[e]},${new Date().toISOString()}]${t}`)},pa=(e,t)=>{la=e,ca=t},xl=(e,t)=>{let r=Gr(e),o=Gr(la);r>=o&&Sl(r,typeof t==\"function\"?t():t)},Ve=(...e)=>{ca&&xl(...e)}});var ma,fa=Y(()=>{\"use strict\";ye();ma=(e,t)=>new(bn(t))(e)});var _n=Y(()=>{\"use strict\"});var ha,$o,_o,Cl,Al,ga,xo,So,ba,wa=Y(()=>{\"use strict\";Lt();_n();ha=new Map([[64,250],[128,200],[256,200],[512,200],[2048,230],[4096,200],[8192,50],[16384,50],[32768,50],[65536,50],[131072,50],[262144,50],[524288,50],[1048576,50],[2097152,30],[4194304,20],[8388608,10],[12582912,10],[16777216,10],[26214400,15],[33554432,22],[44236800,2],[58982400,6],[67108864,6],[134217728,6],[167772160,6]]),$o=[],_o=e=>Math.ceil(e/16)*16,Cl=e=>{for(let t=0;t<$o.length;t++){let r=$o[t];if(e<=r)return r}return Math.ceil(e/16)*16},Al=1,ga=()=>Al++,xo=async(e,t,r,o)=>{let i=_o(r),u=e.device.createBuffer({size:i,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let a=e.getCommandEncoder();e.endComputePass(),a.copyBufferToBuffer(t,0,u,0,i),e.flush(),await u.mapAsync(GPUMapMode.READ);let c=u.getMappedRange();if(o){let p=o();return p.set(new Uint8Array(c,0,r)),p}else return new Uint8Array(c.slice(0,r))}finally{u.destroy()}},So=class{constructor(t){this.backend=t;this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersForUploadingPending=[],this.buffersPending=[],this.externalBuffers=new Map,this.capturedPendingBuffers=new Map;for(let[r]of ha)$o.push(r),this.freeBuffers.set(r,[]),this.freeUniformBuffers.set(r,[])}upload(t,r){let o=r.buffer,i=r.byteOffset,u=r.byteLength,a=_o(u),c=this.storageCache.get(t);if(!c)throw new Error(\"gpu data for uploading does not exist\");if(c.originalSize!==u)throw new Error(`inconsistent data size. gpu data size=${c.originalSize}, data size=${u}`);let p=this.backend.device.createBuffer({mappedAtCreation:!0,size:a,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),h=p.getMappedRange();new Uint8Array(h).set(new Uint8Array(o,i,u)),p.unmap();let d=this.backend.getCommandEncoder();this.backend.endComputePass(),d.copyBufferToBuffer(p,0,c.gpuData.buffer,0,a),Ve(\"verbose\",()=>`[WebGPU] GpuDataManager.upload(id=${t})`),this.buffersForUploadingPending.push(p)}memcpy(t,r){let o=this.storageCache.get(t);if(!o)throw new Error(\"source gpu data for memcpy does not exist\");let i=this.storageCache.get(r);if(!i)throw new Error(\"destination gpu data for memcpy does not exist\");if(o.originalSize!==i.originalSize)throw new Error(\"inconsistent source and destination gpu data size\");let u=_o(o.originalSize),a=this.backend.getCommandEncoder();this.backend.endComputePass(),a.copyBufferToBuffer(o.gpuData.buffer,0,i.gpuData.buffer,0,u)}registerExternalBuffer(t,r,o){let i;if(o){if(i=this.externalBuffers.get(o),i===void 0)throw new Error(\"previous buffer is not registered\");if(t===o)return Ve(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${i}, buffer is the same, skip.`),i;if(this.backend.capturedCommandList.has(this.backend.currentSessionId))throw new Error(`Registering a different external buffer under graph capture mode is not supported yet.\\n             Please use the previous external buffer!`);this.externalBuffers.delete(o)}else i=ga();return this.storageCache.set(i,{gpuData:{id:i,type:0,buffer:t},originalSize:r}),this.externalBuffers.set(t,i),Ve(\"verbose\",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${i}, registered.`),i}unregisterExternalBuffer(t){let r=this.externalBuffers.get(t);r!==void 0&&(this.storageCache.delete(r),this.externalBuffers.delete(t),Ve(\"verbose\",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${r}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let o=Cl(t),i,u=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,a=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(u||a){let h=(u?this.freeBuffers:this.freeUniformBuffers).get(o);h?h.length>0?i=h.pop():i=this.backend.device.createBuffer({size:o,usage:r}):i=this.backend.device.createBuffer({size:o,usage:r})}else i=this.backend.device.createBuffer({size:o,usage:r});let c={id:ga(),type:0,buffer:i};return this.storageCache.set(c.id,{gpuData:c,originalSize:t}),Ve(\"verbose\",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${c.id}`),c}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r=this.storageCache.get(t);if(!r)throw new Error(\"releasing data does not exist\");return Ve(\"verbose\",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(t,r){let o=this.storageCache.get(t);if(!o)throw new Error(\"data does not exist\");await xo(this.backend,o.gpuData.buffer,o.originalSize,r)}refreshPendingBuffers(){for(let t of this.buffersForUploadingPending)t.destroy();if(this.buffersForUploadingPending=[],this.buffersPending.length!==0)if(this.backend.sessionStatus===\"default\"){for(let t of this.buffersPending){let r=ha.get(t.size);if((t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE){let o=this.freeBuffers.get(t.size)||[];r===void 0||o.length>=r?t.destroy():o.push(t)}else if((t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM){let o=this.freeUniformBuffers.get(t.size)||[];r===void 0||o.length>=r?t.destroy():o.push(t)}else t.destroy()}this.buffersPending=[]}else{let t=this.capturedPendingBuffers.get(this.backend.currentSessionId);t||(t=[],this.capturedPendingBuffers.set(this.backend.currentSessionId,t));for(let r of this.buffersPending)t.push(r);this.buffersPending=[]}}dispose(){this.freeBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.capturedPendingBuffers.forEach(t=>{t.forEach(r=>{r.destroy()})}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.capturedPendingBuffers=new Map}onReleaseSession(t){let r=this.capturedPendingBuffers.get(t);r&&(r.forEach(o=>{o.destroy()}),this.capturedPendingBuffers.delete(t))}},ba=(...e)=>new So(...e)});var Co,ve,Ze=Y(()=>{\"use strict\";Co=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(\";\")),this.key}},ve=e=>new Co(e)});var Ao,It,M,nr,Sn,xn,Cn,Se=Y(()=>{\"use strict\";Ao=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},It=class{static calcShape(t,r,o=!1){let i=t.length,u=r.length;if(i===0)return r;if(u===0)return t;let a=Math.max(t.length,r.length),c=new Array(a);if(o){if(i<2||u<2)return;let p=Ao.calcMatMulShape([t[i-2],t[i-1]],[r[u-2],r[u-1]]);if(p===void 0)return;[c[a-2],c[a-1]]=p}for(let p=o?3:1;p<=a;p++){let h=i-p<0?1:t[i-p],d=u-p<0?1:r[u-p];if(h!==d&&h>1&&d>1)return;let y=Math.max(h,d);if(h&&d)c[a-p]=Math.max(h,d);else{if(y>1)return;c[a-p]=0}}return c}static isValidBroadcast(t,r){let o=t.length,i=r.length;if(o>i)return!1;for(let u=1;u<=o;u++)if(t[o-u]!==1&&t[o-u]!==r[i-u])return!1;return!0}},M=class e{static size(t){return e.getSizeFromDimensionRange(t,0,t.length)}static convertShape(t,r=4){let o=t.length;if(o===0)return[];let i=new Array(o),u=o-1;for(;u>=0;){if(t[u]%r===0){i[u]=t[u]/r;break}if(r%t[u]!==0)throw new Error(\"cannot convert shape\");i[u]=1,r/=t[u],u--}for(u--;u>=0;u--)i[u]=t[u];return i}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return e.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,o){let i=1;for(let u=r;u<o;u++){if(t[u]<0)throw new Error(\"cannot get valid size from specified dimension range. Most likely the range contains negative values in them.\");i*=t[u]}return i}static computeStrides(t){let r=t.length;if(r===0)return[];if(r===1)return[1];let o=new Array(r);o[r-1]=1,o[r-2]=t[r-1];for(let i=r-3;i>=0;--i)o[i]=o[i+1]*t[i+1];return o}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error(\"unsupported axis for this operation.\");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(o=>this.normalizeAxis(o,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(o=>t[o]):t.slice().reverse()}static padShape(t,r){let o=t.length;return t.map((i,u)=>i+r[u]+r[u+o])}static areEqual(t,r){return t.length!==r.length?!1:t.every((o,i)=>o===r[i])}},nr=class e{static adjustPoolAttributes(t,r,o,i,u,a){if(!t&&o.length!==r.length-2)throw new Error(\"length of specified kernel shapes should be 2 less than length of input dimensions\");if(t)for(let c=0;c<r.length-2;c++)c>=o.length?o.push(r[c+2]):o[c]=r[c+2];for(let c=0;c<o.length;c++)if(c<i.length){if(i[c]<0)throw new Error(\"strides should be greater than or equal to 1\")}else i.push(1);for(let c=0;c<o.length;c++)if(c<u.length){if(u[c]<0)throw new Error(\"dilations should be greater than or equal to 1\")}else u.push(1);for(let c=0;c<o.length*2;c++)if(c<a.length){if(a[c]<0)throw new Error(\"pad should be greater than or equal to 1\")}else a.push(0);for(let c=0;c<o.length;c++){if(o[c]<=0)throw new Error(\"kernel shapes need to be greater than 0\");if(a[c]>=o[c]||a[c+o.length]>=o[c])throw new Error(\"pads should be smaller than kernel\")}}static adjustPadsBasedOnAutoPad(t,r,o,i,u,a,c){if(c){if(u.length!==2*(t.length-2))throw new Error(\"length of pads should be twice the length of data dimensions\");if(r.length!==t.length-2)throw new Error(\"length of strides should be the length of data dimensions\");if(i.length!==t.length-2)throw new Error(\"length of kernel shapes should be the length of data dimensions\");for(let p=0;p<t.length-2;p++)e.adjustPadAndReturnShape(t[p+(a?1:2)],r[p],o[p],i[p],u,p,p+t.length-2,c)}}static computePoolOutputShape(t,r,o,i,u,a,c){if(r.length<=0)throw new Error(\"input shape must be of size greater than 0\");let p=[r[0],r[1]];return e.computeShapeHelper(t,r,p,o,i,u,a,c),p}static computeConvOutputShape(t,r,o,i,u,a,c){if(t.length<=0||r.length<=0)throw new Error(\"invalid input tensor dims or invalid filter tensor dims\");let p=[t[0],r[0]];return e.computeShapeHelper(!1,t,p,o,i,u,a,c),p}static computeShapeHelper(t,r,o,i,u,a,c,p){if(t)for(let h=0;h<r.length-2;h++)o.push(1);else for(let h=0;h<r.length-2;h++)o.push(e.adjustPadAndReturnShape(r[h+2],i[h],u[h],a[h],c,h,h+r.length-2,p))}static adjustPadAndReturnShape(t,r,o,i,u,a,c,p){let h=o*(i-1)+1;if(p&&p!==\"NOTSET\")switch(p){case\"VALID\":return u[a]=0,u[c]=0,Math.floor((t-h)/r+1);case\"SAME_LOWER\":case\"SAME_UPPER\":if(o!==1)throw new Error(\"Dilation not supported for SAME_UPPER or SAME_LOWER\");{let y=((t+r-1)/r-1)*r+i-t;return u[a]=Math.floor(p===\"SAME_LOWER\"?(y+1)/2:y/2),u[c]=y-u[a],Math.floor((t+y-i)/r+1)}default:throw new Error(\"Unsupported AutoPad type\")}else return Math.floor((t+u[a]+u[c]-h)/r+1)}},Sn=class{static getShapeOfGemmResult(t,r,o,i,u){if(t.length!==2||o.length!==2)throw new Error(\"shape need to be of size 2\");let a,c,p;r?(a=t[1],c=t[0]):(a=t[0],c=t[1]);let h=-1;if(i?(p=o[0],h=1):(p=o[1],h=0),o[h]!==c)throw new Error(\"dimension mismatch\");if(a<=0||p<=0||c<=0)throw new Error(\"invalid shape specified\");if(u&&!It.isValidBroadcast(u,[a,p]))throw new Error(\"gemm: invalid bias shape for broadcast\");return[a,p,c]}},xn=-34028234663852886e22,Cn=34028234663852886e22});var or,To,De,et,Z,Me,$t,ir,_t,fe,Eo,U,j,An,Io,va,_r,_e=Y(()=>{\"use strict\";ye();Se();or=64,To=(e,t)=>{if(t===3)throw new Error(\"vec3 has same alignment as vec4, use vec4 instead\");switch(e){case 10:return t>1?`vec${t}<f16>`:\"f16\";case 1:return t>1?`vec${t}<f32>`:\"f32\";case 6:return t>1?`vec${t}<i32>`:\"i32\";case 12:return t>1?`vec${t}<u32>`:\"u32\";case 7:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2<u32>\",\"i32\"];case 13:if(t>1)throw new Error(\"currently not supported vecX of uint64 yet\");return[\"vec2<u32>\",\"u32\"];case 9:if(t!==4)throw new Error(\"bool must be vec4\");return[\"u32\",\"vec4<bool>\"];default:throw new Error(`Unknown data type: ${e}`)}},De=(e,t=1)=>{let r=To(e,t);return typeof r==\"string\"?r:r[0]},et=(e,t=1)=>{let r=To(e,t);return typeof r==\"string\"?r:r[1]},Z=(...e)=>{let t=[];return e.forEach(r=>{r.length!==0&&t.push({type:12,data:r},{type:12,data:M.computeStrides(r)})}),t},Me=e=>e%4===0?4:e%2===0?2:1,$t=(e=\"f32\",t,r=\"0\")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,ir=(e,t,r)=>e===\"f32\"?r:t===1?`f32(${r})`:`vec${t}<f32>(${r})`,_t=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,fe=(e,t,r,o)=>e.startsWith(\"uniforms.\")&&r>4?typeof t==\"string\"?o===\"f16\"?`${e}[(${t}) / 8][(${t}) % 8 / 4][(${t}) % 8 % 4]`:`${e}[(${t}) / 4][(${t}) % 4]`:o===\"f16\"?`${e}[${Math.floor(t/8)}][${Math.floor(t%8/4)}][${t%8%4}]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,Eo=(e,t,r,o,i)=>{let u=typeof r==\"number\",a=u?r:r.length,c=[...new Array(a).keys()],p=a<2?\"u32\":a<=4?`vec${a}<u32>`:`array<u32, ${a}>`,h=To(t,i),d=typeof h==\"string\"?h:h[1],y=typeof h==\"string\"?h:h[0],w={indices:p,value:d,storage:y,tensor:t},_=G=>typeof G==\"string\"?G:`${G}u`,v={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},S=u?\"uniforms.\":\"\",A=`${S}${e}_shape`,I=`${S}${e}_strides`,x=\"\";for(let G=0;G<a-1;G++)x+=`\\n    let dim${G} = current / ${fe(I,G,a)};\\n    let rest${G} = current % ${fe(I,G,a)};\\n    indices[${G}] = dim${G};\\n    current = rest${G};\\n    `;x+=`indices[${a-1}] = current;`;let E=a<2?\"\":`\\n  fn o2i_${e}(offset: u32) -> ${w.indices} {\\n    var indices: ${w.indices};\\n    var current = offset;\\n    ${x}\\n    return indices;\\n  }`,P=G=>(v.offsetToIndices=!0,a<2?G:`o2i_${e}(${G})`),O=[];if(a>=2)for(let G=a-1;G>=0;G--)O.push(`${fe(I,G,a)} * (indices[${G}])`);let R=a<2?\"\":`\\n  fn i2o_${e}(indices: ${w.indices}) -> u32 {\\n    return ${O.join(\"+\")};\\n  }`,L=G=>(v.indicesToOffset=!0,a<2?G:`i2o_${e}(${G})`),N=(...G)=>a===0?\"0u\":`${w.indices}(${G.map(_).join(\",\")})`,K=(G,ne)=>a<2?`${G}`:`${fe(G,ne,a)}`,Q=(G,ne,xe)=>a<2?`${G}=${xe};`:`${fe(G,ne,a)}=${xe};`,he={},W=(G,ne)=>{v.broadcastedIndicesToOffset=!0;let xe=`${ne.name}broadcastedIndicesTo${e}Offset`;if(xe in he)return`${xe}(${G})`;let Ke=[];for(let Be=a-1;Be>=0;Be--){let Ge=ne.indicesGet(\"outputIndices\",Be+ne.rank-a);Ke.push(`${K(I,Be)} * (${Ge} % ${K(A,Be)})`)}return he[xe]=`fn ${xe}(outputIndices: ${ne.type.indices}) -> u32 {\\n             return ${Ke.length>0?Ke.join(\"+\"):\"0u\"};\\n           }`,`${xe}(${G})`},se=(G,ne)=>(()=>{if(w.storage===w.value)return`${e}[${G}]=${ne};`;if(w.storage===\"vec2<u32>\"&&w.value===\"i32\")return`${e}[${G}]=vec2<u32>(u32(${ne}), select(0u, 0xFFFFFFFFu, ${ne} < 0));`;if(w.storage===\"vec2<u32>\"&&w.value===\"u32\")return`${e}[${G}]=vec2<u32>(u32(${ne}), 0u);`;if(w.storage===\"u32\"&&w.value===\"vec4<bool>\")return`${e}[${G}]=dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(${ne}));`;throw new Error(`not supported combination of storage type ${w.storage} and value type ${w.value} yet`)})(),Ce=G=>(()=>{if(w.storage===w.value)return`${e}[${G}]`;if(w.storage===\"vec2<u32>\"&&w.value===\"i32\")return`i32(${e}[${G}].x)`;if(w.storage===\"vec2<u32>\"&&w.value===\"u32\")return`u32(${e}[${G}].x)`;if(w.storage===\"u32\"&&w.value===\"vec4<bool>\")return`vec4<bool>(bool(${e}[${G}] & 0xFFu), bool(${e}[${G}] & 0xFF00u), bool(${e}[${G}] & 0xFF0000u), bool(${e}[${G}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${w.storage} and value type ${w.value} yet`)})(),We=a<2?\"\":`\\n  fn get_${e}ByIndices(indices: ${w.indices}) -> ${d} {\\n    return ${Ce(`i2o_${e}(indices)`)};\\n  }`,ee=a<2?\"\":(()=>{let G=c.map(xe=>`d${xe}: u32`).join(\", \"),ne=c.map(xe=>`d${xe}`).join(\", \");return`\\n  fn get_${e}(${G}) -> ${d} {\\n    return get_${e}ByIndices(${N(ne)});\\n  }`})(),ae=(...G)=>{if(G.length!==a)throw new Error(`indices length must be ${a}`);let ne=G.map(_).join(\",\");return a===0?Ce(\"0u\"):a===1?Ce(ne[0]):(v.get=!0,v.getByIndices=!0,v.indicesToOffset=!0,`get_${e}(${ne})`)},Ae=G=>a<2?Ce(G):(v.getByIndices=!0,v.indicesToOffset=!0,`get_${e}ByIndices(${G})`),me=a<2?\"\":`\\n  fn set_${e}ByIndices(indices: ${w.indices}, value: ${d}) {\\n    ${se(`i2o_${e}(indices)`,\"value\")}\\n  }`,ie=a<2?\"\":(()=>{let G=c.map(xe=>`d${xe}: u32`).join(\", \"),ne=c.map(xe=>`d${xe}`).join(\", \");return`\\n  fn set_${e}(${G}, value: ${d}) {\\n    set_${e}ByIndices(${N(ne)}, value);\\n  }`})();return{impl:()=>{let G=[],ne=!1;return v.offsetToIndices&&(G.push(E),ne=!0),v.indicesToOffset&&(G.push(R),ne=!0),v.broadcastedIndicesToOffset&&(Object.values(he).forEach(xe=>G.push(xe)),ne=!0),v.set&&(G.push(ie),ne=!0),v.setByIndices&&(G.push(me),ne=!0),v.get&&(G.push(ee),ne=!0),v.getByIndices&&(G.push(We),ne=!0),!u&&ne&&G.unshift(`const ${A} = ${w.indices}(${r.join(\",\")});`,`const ${I} = ${w.indices}(${M.computeStrides(r).join(\",\")});`),G.join(`\\n`)},type:w,offsetToIndices:P,indicesToOffset:L,broadcastedIndicesToOffset:W,indices:N,indicesGet:K,indicesSet:Q,set:(...G)=>{if(G.length!==a+1)throw new Error(`indices length must be ${a}`);let ne=G[a];if(typeof ne!=\"string\")throw new Error(\"value must be string\");let xe=G.slice(0,a).map(_).join(\",\");return a===0?se(\"0u\",ne):a===1?se(xe[0],ne):(v.set=!0,v.setByIndices=!0,v.indicesToOffset=!0,`set_${e}(${xe}, ${ne})`)},setByOffset:se,setByIndices:(G,ne)=>a<2?se(G,ne):(v.setByIndices=!0,v.indicesToOffset=!0,`set_${e}ByIndices(${G}, ${ne});`),get:ae,getByOffset:Ce,getByIndices:Ae,usage:o,name:e,strides:I,shape:A,rank:a}},U=(e,t,r,o=1)=>Eo(e,t,r,\"input\",o),j=(e,t,r,o=1)=>Eo(e,t,r,\"output\",o),An=(e,t,r,o=1)=>Eo(e,t,r,\"internal\",o),Io=class{constructor(t,r){this.normalizedDispatchGroup=t;this.limits=r;this.internalVariables=[];this.variables=[];this.uniforms=[];this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${typeof t==\"number\"?`${t}u`:t}) { return; }`}mainStart(t=or){let r=typeof t==\"number\"?t:t[0],o=typeof t==\"number\"?1:t[1],i=typeof t==\"number\"?1:t[2];if(r>this.limits.maxComputeWorkgroupSizeX||o>this.limits.maxComputeWorkgroupSizeY||i>this.limits.maxComputeWorkgroupSizeZ)throw new Error(`workgroup size [${r}, ${o}, ${i}] exceeds the maximum workgroup size [${this.limits.maxComputeWorkgroupSizeX}, ${this.limits.maxComputeWorkgroupSizeY}, ${this.limits.maxComputeWorkgroupSizeZ}].`);if(r*o*i>this.limits.maxComputeInvocationsPerWorkgroup)throw new Error(`workgroup size [${r}, ${o}, ${i}] exceeds the maximum workgroup invocations ${this.limits.maxComputeInvocationsPerWorkgroup}.`);let u=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,a=u?`@builtin(global_invocation_id) global_id : vec3<u32>,\\n    @builtin(workgroup_id) workgroup_id : vec3<u32>,\\n    @builtin(local_invocation_id) local_id : vec3<u32>`:`@builtin(global_invocation_id) global_id : vec3<u32>,\\n                                             @builtin(local_invocation_id) local_id : vec3<u32>,\\n    @builtin(local_invocation_index) local_idx : u32,\\n    @builtin(workgroup_id) workgroup_id : vec3<u32>,\\n    @builtin(num_workgroups) num_workgroups : vec3<u32>`,c=u?\"let global_idx = global_id.x; let local_idx = local_id.x;\":`let global_idx = (workgroup_id.z * num_workgroups[0] * num_workgroups[1] +\\n          workgroup_id.y * num_workgroups[0] + workgroup_id.x) * ${r*o*i}u + local_idx;`;return`@compute @workgroup_size(${r}, ${o}, ${i})\\n  fn main(${a}) {\\n    ${c}\\n  `}appendVariableUniforms(t){t.rank!==0&&(t.shape.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.shape.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}),t.strides.startsWith(\"uniforms.\")&&this.uniforms.push({name:t.strides.replace(\"uniforms.\",\"\"),type:\"u32\",length:t.rank}))}declareVariable(t,r){if(t.usage===\"internal\")throw new Error(\"cannot use internal variable with declareVariable(). use registerInternalVariables() instead.\");this.variables.push(t),this.appendVariableUniforms(t);let o=t.usage===\"input\"?\"read\":\"read_write\",i=t.type.storage;return`@group(0) @binding(${r}) var<storage, ${o}> ${t.name}: array<${i}>;`}declareVariables(...t){return t.map(r=>this.declareVariable(r,this.variableIndex++)).join(`\\n`)}registerInternalVariable(t){if(t.usage!==\"internal\")throw new Error(\"cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.\");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(r=>this.registerInternalVariable(r)),this}registerUniform(t,r,o=1){return this.uniforms.push({name:t,type:r,length:o}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(this.uniforms.length===0)return\"\";let t=[];for(let{name:r,type:o,length:i}of this.uniforms)if(i&&i>4)o===\"f16\"?t.push(`@align(16) ${r}:array<mat2x4<${o}>, ${Math.ceil(i/8)}>`):t.push(`${r}:array<vec4<${o}>, ${Math.ceil(i/4)}>`);else{let u=i==null||i===1?o:`vec${i}<${o}>`;t.push(`${r}:${u}`)}return`\\n      struct Uniforms { ${t.join(\", \")} };\\n      @group(0) @binding(${this.variableIndex}) var<uniform> uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`\\n`)+this.internalVariables.map(t=>t.impl()).join(`\\n`)}get variablesInfo(){if(this.uniforms.length===0)return;let t=r=>[12,10,1,6][[\"u32\",\"f16\",\"f32\",\"i32\"].indexOf(r)];return this.uniforms.map(r=>[t(r.type),r.length??1])}},va=(e,t)=>new Io(e,t),_r=(e,t)=>{let r=e.length,o=[];for(let i=0;i<r;i++){let u=r-1-i,a=e[u]||1;(t[t.length-1-i]||1)>1&&a===1&&o.unshift(u)}return o}});var Il,$a,Tl,El,yt,_a,Sa,Sr=Y(()=>{\"use strict\";ye();Se();Ze();_e();Il=e=>{if(!e||e.length!==1)throw new Error(\"Transpose requires 1 input.\")},$a=(e,t)=>t&&t.length!==e?[...new Array(e).keys()].reverse():t,Tl=(e,t)=>M.sortBasedOnPerm(e,$a(e.length,t)),El=(e,t,r,o)=>{let i=[];i.push(`fn perm(i: ${o.type.indices}) -> ${r.type.indices} {\\n    var a: ${r.type.indices};`);for(let u=0;u<t;++u)i.push(r.indicesSet(\"a\",e[u],`i[${u}]`));return i.push(\"return a;}\"),i.join(`\\n`)},yt=(e,t)=>{let r=e.dataType,o=e.dims.length,i=$a(o,t),u=Tl(e.dims,i),a=j(\"output\",r,u.length),c=U(\"a\",r,o),p=h=>`\\n  ${h.registerUniform(\"output_size\",\"u32\").declareVariables(c,a)}\\n\\n  ${El(i,o,c,a)}\\n\\n  ${h.mainStart()}\\n    ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n    let indices = ${a.offsetToIndices(\"global_idx\")};\\n    let aIndices = perm(indices);\\n\\n    ${a.setByOffset(\"global_idx\",c.getByIndices(\"aIndices\"))}\\n  }`;return{name:\"Transpose\",shaderCache:{hint:`${t}`,inputDependencies:[\"rank\"]},getRunData:h=>{let d=M.size(u);return{outputs:[{dims:u,dataType:h[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:[{type:12,data:d},...Z(h[0].dims,u)]}},getShaderSource:p}},_a=(e,t)=>{Il(e.inputs),e.compute(yt(e.inputs[0],t.perm))},Sa=e=>ve({perm:e.perm})});var Pl,kl,Ol,Rl,Bl,Dl,zl,Ml,Ul,Vl,Tt,xa,Ca,Aa,Ia,Ta,Ea,Pa,ka,Oa,Ra,Ba=Y(()=>{\"use strict\";ye();Se();_e();In();Sr();Pl={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate * candidate\",logSumExp:\"bestValue + exp(candidate)\",l1:\"bestValue + abs(candidate)\",l2:\"bestValue + candidate * candidate\",logSum:\"bestValue + candidate\"},kl={max:\"select(bestValue, candidate, candidate > bestValue)\",min:\"select(bestValue, candidate, candidate < bestValue)\",mean:\"bestValue + candidate\",sum:\"bestValue + candidate\",prod:\"bestValue * candidate\",sumSquare:\"bestValue + candidate\",logSumExp:\"bestValue + candidate\",l1:\"bestValue + candidate\",l2:\"bestValue + candidate\",logSum:\"bestValue + candidate\"},Ol={max:\"_A[offset]\",min:\"_A[offset]\",mean:\"0\",sum:\"0\",prod:\"1\",sumSquare:\"0\",logSumExp:\"0\",l1:\"0\",l2:\"0\",logSum:\"0\"},Rl={max:\"bestValue\",min:\"bestValue\",sum:\"bestValue\",prod:\"bestValue\",sumSquare:\"bestValue\",logSumExp:\"log(bestValue)\",l1:\"bestValue\",l2:\"sqrt(bestValue)\",logSum:\"log(bestValue)\"},Bl=(e,t)=>{let r=[];for(let o=t-e;o<t;++o)r.push(o);return r},Dl=(e,t)=>{let r=[],o=e.length;for(let u=0;u<o;u++)t.indexOf(u)===-1&&r.push(e[u]);let i=t.map(u=>e[u]);return[r,i]},zl=(e,t)=>{let r=e.length+t.length,o=[],i=0;for(let u=0;u<r;u++)t.indexOf(u)===-1?o.push(e[i++]):o.push(1);return o},Ml=(e,t)=>{for(let r=0;r<e.length;++r)if(e[e.length-r-1]!==t-1-r)return!1;return!0},Ul=(e,t)=>{let r=[];if(!Ml(e,t)){for(let o=0;o<t;++o)e.indexOf(o)===-1&&r.push(o);e.forEach(o=>r.push(o))}return r},Vl=(e,t,r,o,i,u,a)=>{let c=r[0].dims,p=M.size(u),h=M.size(a),d=U(\"_A\",r[0].dataType,c),y=j(\"output\",i,u),w=32,_=`\\n          var<workgroup> aBestValues : array<f32, ${w}>;\\n       `;return{name:e,shaderCache:t,getShaderSource:S=>`\\n        ${S.registerUniform(\"reduceSize\",\"u32\").declareVariables(d,y)}\\n        ${_}\\n        fn DIV_CEIL(a : u32, b : u32) -> u32 {\\n          return ((a - 1u) / b + 1u);\\n         }\\n         ${S.mainStart(w)}\\n\\n          let outputIndex = global_idx / ${w};\\n          let offset = outputIndex * uniforms.reduceSize;\\n\\n          var bestValue = f32(${Ol[o]});\\n          let Length = uniforms.reduceSize;\\n          for (var k = local_idx; k < Length; k = k + ${w}) {\\n           let candidate = f32(${d.getByOffset(\"offset + k\")});\\n           bestValue = ${Pl[o]};\\n          }\\n          aBestValues[local_idx] = bestValue;\\n          workgroupBarrier();\\n\\n         var reduceSize = min(Length, ${w}u);\\n         for (var currentSize = reduceSize / 2u; reduceSize > 1u;\\n             currentSize = reduceSize / 2u) {\\n           let interval = DIV_CEIL(reduceSize, 2u);\\n           if (local_idx < currentSize) {\\n            let candidate = aBestValues[local_idx + interval];\\n            bestValue = ${kl[o]};\\n            aBestValues[local_idx] = bestValue;\\n           }\\n           reduceSize = interval;\\n           workgroupBarrier();\\n         }\\n\\n         if (local_idx == 0u) {\\n          ${y.setByOffset(\"outputIndex\",`${o===\"mean\"?`${y.type.storage}(bestValue / f32(uniforms.reduceSize))`:`${y.type.storage}(${Rl[o]})`}`)};\\n         }\\n        }`,getRunData:()=>({outputs:[{dims:u,dataType:i}],dispatchGroup:{x:p},programUniforms:[{type:12,data:h}]})}},Tt=(e,t,r,o)=>{let i=e.inputs.length===1?r:Po(e.inputs,r),u=i.axes;u.length===0&&!i.noopWithEmptyAxes&&(u=e.inputs[0].dims.map((_,v)=>v));let a=M.normalizeAxes(u,e.inputs[0].dims.length),c=a,p=e.inputs[0],h=Ul(c,e.inputs[0].dims.length);h.length>0&&(p=e.compute(yt(e.inputs[0],h),{inputs:[0],outputs:[-1]})[0],c=Bl(c.length,p.dims.length));let[d,y]=Dl(p.dims,c),w=d;i.keepDims&&(w=zl(d,a)),e.compute(Vl(t,{hint:i.cacheKey,inputDependencies:[\"type\"]},[p],o,e.inputs[0].dataType,w,y),{inputs:[p]})},xa=(e,t)=>{Tt(e,\"ReduceMeanShared\",t,\"mean\")},Ca=(e,t)=>{Tt(e,\"ReduceL1Shared\",t,\"l1\")},Aa=(e,t)=>{Tt(e,\"ReduceL2Shared\",t,\"l2\")},Ia=(e,t)=>{Tt(e,\"ReduceLogSumExpShared\",t,\"logSumExp\")},Ta=(e,t)=>{Tt(e,\"ReduceMaxShared\",t,\"max\")},Ea=(e,t)=>{Tt(e,\"ReduceMinShared\",t,\"min\")},Pa=(e,t)=>{Tt(e,\"ReduceProdShared\",t,\"prod\")},ka=(e,t)=>{Tt(e,\"ReduceSumShared\",t,\"sum\")},Oa=(e,t)=>{Tt(e,\"ReduceSumSquareShared\",t,\"sumSquare\")},Ra=(e,t)=>{Tt(e,\"ReduceLogSumShared\",t,\"logSum\")}});var Et,Wl,Tn,Po,Pt,Nl,Gl,Hl,Ll,Fl,ql,jl,Kl,Yl,Zl,kt,Da,za,Ma,Ua,Va,Wa,Na,Ga,Ha,La,In=Y(()=>{\"use strict\";ye();Se();Ze();_e();Ba();Et=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"Reduce op requires 1 or 2 inputs.\");if(e.length===2&&e[1].dims.length!==1)throw new Error(\"Invalid axes input dims.\")},Wl=e=>[\"\",\"\",`var value = ${e.getByIndices(\"input_indices\")};`,\"\"],Tn=(e,t,r,o,i,u,a=!1,c=!1)=>{let p=[],h=r[0].dims,d=h.length,y=M.normalizeAxes(i,d),w=!c&&y.length===0;h.forEach((A,I)=>{w||y.indexOf(I)>=0?a&&p.push(1):p.push(A)});let _=p.length,v=M.size(p);return{name:e,shaderCache:t,getShaderSource:A=>{let I=[],x=U(\"_A\",r[0].dataType,d),E=j(\"output\",u,_),P=o(x,E,y),O=P[2];for(let R=0,L=0;R<d;R++)w||y.indexOf(R)>=0?(a&&L++,O=`for(var j${R}: u32 = 0; j${R} < ${h[R]}; j${R}++) {\\n                  ${P[2].includes(\"last_index\")?`let last_index = j${R};`:\"\"}\\n                  ${x.indicesSet(\"input_indices\",R,`j${R}`)}\\n                  ${O}\\n                }`):(I.push(`${x.indicesSet(\"input_indices\",R,E.indicesGet(\"output_indices\",L))};`),L++);return`\\n\\n        ${A.registerUniform(\"output_size\",\"u32\").declareVariables(x,E)}\\n\\n        ${A.mainStart()}\\n          ${A.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n          var input_indices: ${x.type.indices};\\n          let output_indices = ${E.offsetToIndices(\"global_idx\")};\\n\\n          ${I.join(`\\n`)}\\n          ${P[0]}       // init ops for reduce max/min\\n          ${P[1]}\\n          ${O}\\n          ${P[3]}\\n          ${P.length===4?E.setByOffset(\"global_idx\",\"value\"):P.slice(4).join(`\\n`)}\\n        }`},getRunData:()=>({outputs:[{dims:p,dataType:u}],dispatchGroup:{x:Math.ceil(v/64)},programUniforms:[{type:12,data:v},...Z(h,p)]})}},Po=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(o=>r.push(Number(o))),ve({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},Pt=(e,t,r,o)=>{let i=e.inputs,u=i.length===1?r:Po(i,r);e.compute(Tn(t,{hint:u.cacheKey,inputDependencies:[\"rank\"]},[i[0]],u.noopWithEmptyAxes&&u.axes.length===0?Wl:o,u.axes,i[0].dataType,u.keepDims,u.noopWithEmptyAxes),{inputs:[0]})},Nl=(e,t)=>{Et(e.inputs),Pt(e,\"ReduceLogSum\",t,(o,i)=>[`var value = ${i.type.storage}(0);`,\"\",`value += ${o.getByIndices(\"input_indices\")};`,\"value = log(value);\"])},Gl=(e,t)=>{Et(e.inputs),Pt(e,\"ReduceL1\",t,(o,i)=>[`var value = ${i.type.storage}(0);`,\"\",`value += abs(${o.getByIndices(\"input_indices\")});`,\"\"])},Hl=(e,t)=>{Et(e.inputs),Pt(e,\"ReduceL2\",t,(o,i)=>[`var t = ${i.type.value}(0); var value = ${i.type.value}(0);`,\"\",`t = ${o.getByIndices(\"input_indices\")}; value += (t * t);`,\"value = sqrt(value);\"])},Ll=(e,t)=>{Et(e.inputs),Pt(e,\"ReduceLogSumExp\",t,(o,i)=>[`var value = ${i.type.storage}(0);`,\"\",`value += exp(${o.getByIndices(\"input_indices\")});`,\"value = log(value);\"])},Fl=(e,t)=>{Et(e.inputs),Pt(e,\"ReduceMax\",t,(o,i,u)=>{let a=[];for(let c=0;c<o.rank;c++)(u.indexOf(c)>=0||u.length===0)&&a.push(o.indicesSet(\"input_indices\",c,0));return[`${a.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};`,`value = max(value, ${o.getByIndices(\"input_indices\")});`,\"\"]})},ql=(e,t)=>{Et(e.inputs),Pt(e,\"ReduceMean\",t,(o,i,u)=>{let a=1;for(let c=0;c<o.rank;c++)(u.indexOf(c)>=0||u.length===0)&&(a*=e.inputs[0].dims[c]);return[\"var sum = f32(0);\",\"\",`sum += f32(${o.getByIndices(\"input_indices\")});`,`let value = ${i.type.value}(sum / ${a});`]})},jl=(e,t)=>{Et(e.inputs),Pt(e,\"ReduceMin\",t,(o,i,u)=>{let a=[];for(let c=0;c<o.rank;c++)(u.indexOf(c)>=0||u.length===0)&&a.push(`input_indices[${c}] = 0;`);return[`${a.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};`,`value = min(value, ${o.getByIndices(\"input_indices\")});`,\"\"]})},Kl=(e,t)=>{Et(e.inputs),Pt(e,\"ReduceProd\",t,(o,i)=>[`var value = ${i.type.storage}(1);`,\"\",`value *= ${o.getByIndices(\"input_indices\")};`,\"\"])},Yl=(e,t)=>{Et(e.inputs),Pt(e,\"ReduceSum\",t,(o,i)=>[`var value = ${i.type.storage}(0);`,\"\",`value += ${o.getByIndices(\"input_indices\")};`,\"\"])},Zl=(e,t)=>{Et(e.inputs),Pt(e,\"ReduceSumSquare\",t,(o,i)=>[`var t = ${i.type.value}(0); var value = ${i.type.value}(0);`,\"\",`t = ${o.getByIndices(\"input_indices\")}; value += t * t;`,\"\"])},kt=(e,t,r)=>{if(t.length===0)return r;let o=1,i=1;for(let u=0;u<t.length;u++)t.indexOf(u)===-1?o*=e[u]:i*=e[u];return i<32&&o>1024},Da=(e,t)=>{kt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?ql(e,t):xa(e,t)},za=(e,t)=>{kt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Gl(e,t):Ca(e,t)},Ma=(e,t)=>{kt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Hl(e,t):Aa(e,t)},Ua=(e,t)=>{kt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Ll(e,t):Ia(e,t)},Va=(e,t)=>{kt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Fl(e,t):Ta(e,t)},Wa=(e,t)=>{kt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?jl(e,t):Ea(e,t)},Na=(e,t)=>{kt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Kl(e,t):Pa(e,t)},Ga=(e,t)=>{kt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Yl(e,t):ka(e,t)},Ha=(e,t)=>{kt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Zl(e,t):Oa(e,t)},La=(e,t)=>{kt(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Nl(e,t):Ra(e,t)}});var Fa,qa,ja,ko,Ka=Y(()=>{\"use strict\";ye();Ze();In();Fa=e=>{if(!e||e.length===0||e.length>2)throw new Error(\"ArgMinMaxOp op requires 1 or 2 inputs.\");if(e[0].dataType!==1)throw new Error(\"Invalid input type.\")},qa=(e,t)=>{Fa(e.inputs);let r=(o,i,u)=>{let a=[];for(let c=0;c<o.rank;c++)(u.indexOf(c)>=0||u.length===0)&&a.push(`input_indices[${c}] = 0;`);return[`${a.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};\\nvar best_index : i32 = 0;`,`if (${o.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\"<=\":\"<\"} value) {\\n         value = ${o.getByIndices(\"input_indices\")};\\n         best_index = i32(last_index);\\n       }`,\"\",i.setByOffset(\"global_idx\",\"best_index\")]};e.compute(Tn(\"ArgMin\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},ja=(e,t)=>{Fa(e.inputs);let r=(o,i,u)=>{let a=[];for(let c=0;c<o.rank;c++)(u.indexOf(c)>=0||u.length===0)&&a.push(`input_indices[${c}] = 0;`);return[`${a.join(`\\n`)}`,`var value = ${o.getByIndices(\"input_indices\")};\\nvar best_index : i32 = 0;`,`if (${o.getByIndices(\"input_indices\")} ${t.selectLastIndex>0?\">=\":\">\"} value) {\\n         value = ${o.getByIndices(\"input_indices\")};\\n         best_index = i32(last_index);\\n       }`,\"\",i.setByOffset(\"global_idx\",\"best_index\")]};e.compute(Tn(\"argMax\",{hint:t.cacheKey,inputDependencies:[\"rank\"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},ko=e=>ve(e)});var Xl,Ql,Jl,En,Ya,Za,Oo=Y(()=>{\"use strict\";ye();Se();Ze();_e();Xl=(e,t)=>{if(!e||e.length<1)throw new Error(\"too few inputs\");let r=0,o=e[r],i=o.dataType,u=o.dims.length;e.forEach((a,c)=>{if(c!==r){if(a.dataType!==i)throw new Error(\"input tensors should be one type\");if(a.dims.length!==u)throw new Error(\"input tensors should have the same shape\");a.dims.forEach((p,h)=>{if(h!==t&&p!==o.dims[h])throw new Error(\"non concat dimensions must match\")})}})},Ql=(e,t)=>`\\n  fn calculateInputIndex(index: u32) -> u32 {\\n    let sizeInConcatAxis = array<u32, ${e}u>(${t});\\n    for (var i: u32 = 0u; i < ${e}; i += 1u ) {\\n      if (index < sizeInConcatAxis[i]) {\\n        return i;\\n      }\\n    }\\n    return ${e}u;\\n  }`,Jl=(e,t)=>{let r=e.length,o=[];for(let i=0;i<r;++i){let u=t.setByOffset(\"global_idx\",e[i].getByIndices(\"indices\"));r===1?o.push(u):i===0?o.push(`if (inputIndex == ${i}u) { ${u} }`):i===r-1?o.push(`else { ${u} }`):o.push(`else if (inputIndex == ${i}) { ${u} }`)}return o.join(`\\n`)},En=(e,t,r,o)=>{let i=M.size(r),u=new Array(e.length),a=new Array(e.length),c=0,p=[],h=[],d=[{type:12,data:i}];for(let S=0;S<e.length;++S)c+=e[S].dims[t],u[S]=c,h.push(e[S].dims.length),a[S]=U(`input${S}`,o,h[S]),p.push(\"rank\"),d.push({type:12,data:u[S]});for(let S=0;S<e.length;++S)d.push(...Z(e[S].dims));d.push(...Z(r));let y=j(\"output\",o,r.length),w=y.indicesGet(\"indices\",t),_=Array.from(Array(u.length).keys()).map(S=>`uniforms.sizeInConcatAxis${S}`).join(\",\"),v=S=>`\\n\\n  ${(()=>{S.registerUniform(\"outputSize\",\"u32\");for(let A=0;A<e.length;A++)S.registerUniform(`sizeInConcatAxis${A}`,\"u32\");return S.declareVariables(...a,y)})()}\\n\\n  ${Ql(u.length,_)}\\n\\n  ${S.mainStart()}\\n    ${S.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n\\n    var indices = ${y.offsetToIndices(\"global_idx\")};\\n\\n    let inputIndex = calculateInputIndex(${w});\\n    if (inputIndex != 0u) {\\n      let sizeInConcatAxis = array<u32, ${u.length}u>(${_});\\n      ${w} -= sizeInConcatAxis[inputIndex - 1u];\\n    }\\n\\n    ${Jl(a,y)}\\n  }`;return{name:\"Concat\",shaderCache:{hint:`${t}`,inputDependencies:p},getRunData:()=>({outputs:[{dims:r,dataType:o}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:d}),getShaderSource:v}},Ya=(e,t)=>{let r=e.inputs,o=r[0].dims,i=M.normalizeAxis(t.axis,o.length);Xl(r,i);let u=o.slice();u[i]=r.reduce((c,p)=>c+(p.dims.length>i?p.dims[i]:0),0);let a=r.filter(c=>M.size(c.dims)>0);e.compute(En(a,i,u,r[0].dataType),{inputs:a})},Za=e=>ve({axis:e.axis})});var ec,tc,rc,nc,Pn,oc,Xa,Ro=Y(()=>{\"use strict\";ye();_n();_e();Oo();ec=(e,t)=>{let r=e[0],o=e[1],i=e[2],u=e[3],a=e[4],c=e[5];if(a&&c)throw new Error(\"Attention cannot have both past and relative_position_bias\");if(r.dims.length!==3)throw new Error(\\'Input \"input\" must have 3 dimensions\\');let p=r.dims[0],h=r.dims[1],d=r.dims[2];if(i.dims.length!==1)throw new Error(\\'Input \"bias\" is expected to have 1 dimensions\\');if(o.dims.length!==2)throw new Error(\\'Input \"weights\" is expected to have 2 dimensions\\');if(o.dims[0]!==d)throw new Error(\"Input 1 dimension 0 should have same length as dimension 2 of input 0\");if(i.dims[0]!==o.dims[1])throw new Error(\\'Input \"bias\" dimension 0 should have same length as dimension 1 of input \"weights\"\\');let y=i.dims[0]/3,w=y,_=w;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error(\"qkv_hidden_sizes attribute should have 3 elements\");for(let E of t.qkvHiddenSizes)if(E%t.numHeads!==0)throw new Error(\"qkv_hidden_sizes should be divisible by num_heads\");y=t.qkvHiddenSizes[0],w=t.qkvHiddenSizes[1],_=t.qkvHiddenSizes[2]}let v=h;if(y!==w)throw new Error(\"qkv_hidden_sizes first element should be same as the second\");if(i.dims[0]!==y+w+_)throw new Error(\\'Input \"bias\" dimension 0 should have same length as sum of Q/K/V hidden sizes\\');let S=0;if(a){if(w!==_)throw new Error(\\'Input \"past\" expect k_hidden_size == v_hidden_size\\');if(a.dims.length!==5)throw new Error(\\'Input \"past\" must have 5 dimensions\\');if(a.dims[0]!==2)throw new Error(\\'Input \"past\" first dimension must be 2\\');if(a.dims[1]!==p)throw new Error(\\'Input \"past\" second dimension must be batch_size\\');if(a.dims[2]!==t.numHeads)throw new Error(\\'Input \"past\" third dimension must be num_heads\\');if(a.dims[4]!==w/t.numHeads)throw new Error(\\'Input \"past\" fifth dimension must be k_hidden_size / num_heads\\');t.pastPresentShareBuffer||(S=a.dims[3])}let A=v+S,I=-1,x=0;if(u)throw new Error(\"Mask not supported\");if(a)throw new Error(\"past is not supported\");return{batchSize:p,sequenceLength:h,pastSequenceLength:S,kvSequenceLength:v,totalSequenceLength:A,maxSequenceLength:I,inputHiddenSize:d,hiddenSize:y,vHiddenSize:_,headSize:Math.floor(y/t.numHeads),vHeadSize:Math.floor(_/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:x,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},tc=(e,t,r,o)=>{let i=Me(o),u=64,a=o/i;a<u?u=1:a/8<64&&(u=Math.ceil(a/8));let c=Math.ceil(o/i/u),p=[{type:t.dataType,data:1/o},{type:12,data:a},{type:12,data:c}],h=De(t.dataType,i),d=et(1,i),y=w=>{let _=j(\"x\",t.dataType,t.dims,i),S=[{name:\"d_inv\",type:et(t.dataType)},{name:\"d_comp\",type:\"u32\"},{name:\"elements_per_thread\",type:\"u32\"}];return`\\n  var<workgroup> thread_max: array<f32, ${u}>;\\n  var<workgroup> thread_sum: array<f32, ${u}>;\\n  ${w.registerUniforms(S).declareVariables(_)}\\n  ${w.mainStart([u,1,1])}\\n    let local_offset = local_idx * uniforms.elements_per_thread;\\n    let offset = workgroup_id.x * uniforms.d_comp + local_offset;\\n\\n    var thread_max_vector = ${d}(-3.402823e+38f);\\n    for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < uniforms.d_comp; i++) {\\n      thread_max_vector = max(${d}(x[offset + i]), thread_max_vector);\\n    }\\n    thread_max[local_idx] = ${(()=>{switch(i){case 1:return\"thread_max_vector\";case 2:return\"max(thread_max_vector.x, thread_max_vector.y)\";case 4:return\"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))\";default:throw new Error(`Unsupported components: ${i}`)}})()};\\n    workgroupBarrier();\\n\\n    var max_value =  f32(-3.402823e+38f);\\n    for (var i = 0u; i < ${u}; i++) {\\n      max_value = max(thread_max[i], max_value);\\n    }\\n\\n    var sum_vector = ${d}(0);\\n    for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < uniforms.d_comp; i++) {\\n      sum_vector += exp(${d}(x[offset + i]) - max_value);\\n    }\\n    thread_sum[local_idx] = ${(()=>{switch(i){case 1:return\"sum_vector\";case 2:return\"sum_vector.x + sum_vector.y\";case 4:return\"sum_vector.x + sum_vector.y + sum_vector.z + sum_vector.w\";default:throw new Error(`Unsupported components: ${i}`)}})()};\\n    workgroupBarrier();\\n\\n    var sum: f32 = 0;\\n    for (var i = 0u; i < ${u}; i++) {\\n      sum += thread_sum[i];\\n    }\\n\\n    if (sum == 0) {\\n      for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < uniforms.d_comp; i++) {\\n        x[offset + i] = ${_.type.value}(uniforms.d_inv);\\n      }\\n    } else {\\n      for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < uniforms.d_comp; i++) {\\n        var f32input = ${d}(x[offset + i]);\\n        x[offset + i] = ${_.type.value}(exp(f32input - max_value) / sum);\\n      }\\n    }\\n  }`};return{name:\"AttentionProbsSoftmax\",shaderCache:{hint:`${u};${h};${i}`},getShaderSource:y,getRunData:()=>({outputs:[],dispatchGroup:{x:r},programUniforms:p})}},rc=(e,t,r,o,i,u,a)=>{let c=a+i.kvSequenceLength,p=[i.batchSize,i.numHeads,i.sequenceLength,c],h=u.scale===0?1/Math.sqrt(i.headSize):u.scale,d=Me(i.headSize),y=i.headSize/d,w=12,_={x:Math.ceil(c/w),y:Math.ceil(i.sequenceLength/w),z:i.batchSize*i.numHeads},v=[{type:12,data:i.sequenceLength},{type:12,data:y},{type:12,data:c},{type:12,data:i.numHeads},{type:1,data:h}],S=o?[\"type\",\"type\",\"type\"]:[\"type\",\"type\"],A=I=>{let x=U(\"q\",t.dataType,t.dims,d),E=U(\"key\",r.dataType,r.dims,d),P=[x,E];o&&P.push(U(\"relative_position_bias\",o.dataType,o.dims));let O=j(\"output\",t.dataType,p),R=et(1,d),L=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"alpha\",type:\"f32\"}];return`\\n  const TILE_SIZE = ${w}u;\\n\\n  var<workgroup> tileQ: array<${x.type.storage}, ${w*w}>;\\n  var<workgroup> tileK: array<${x.type.storage}, ${w*w}>;\\n  ${I.registerUniforms(L).declareVariables(...P,O)}\\n  ${I.mainStart([w,w,1])}\\n    // x holds the N and y holds the M\\n    let headIdx = workgroup_id.z;\\n    let m = workgroup_id.y * TILE_SIZE;\\n    let n = workgroup_id.x * TILE_SIZE;\\n    let qOffset = uniforms.M * uniforms.K * headIdx + m * uniforms.K;\\n    let kOffset = uniforms.N * uniforms.K * headIdx + n * uniforms.K;\\n\\n    var value = ${R}(0);\\n    for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\\n      if (global_id.y < uniforms.M && w + local_id.x < uniforms.K) {\\n        tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];\\n      }\\n      if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {\\n        tileK[TILE_SIZE * local_id.y + local_id.x] = key[kOffset + local_id.y * uniforms.K + w + local_id.x];\\n      }\\n      workgroupBarrier();\\n\\n      for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) {\\n        value += ${R}(tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * local_id.x + k]);\\n      }\\n\\n      workgroupBarrier();\\n    }\\n\\n    let headOffset = headIdx * uniforms.M * uniforms.N;\\n    if (global_id.y < uniforms.M && global_id.x < uniforms.N) {\\n      let outputIdx = headOffset + global_id.y * uniforms.N + global_id.x;\\n      var sum: f32 = ${(()=>{switch(d){case 1:return\"value\";case 2:return\"value.x + value.y\";case 4:return\"value.x + value.y + value.z + value.w\";default:throw new Error(`Unsupported components: ${d}`)}})()};\\n        output[outputIdx] = ${O.type.value} (sum * uniforms.alpha) + ${o?\"relative_position_bias[outputIdx]\":\"0.0\"};\\n    }\\n  }`};return{name:\"AttentionProbs\",shaderCache:{hint:`${d}`,inputDependencies:S},getRunData:()=>({outputs:[{dims:p,dataType:t.dataType,gpuDataType:0}],dispatchGroup:_,programUniforms:v}),getShaderSource:A}},nc=(e,t,r,o,i)=>{let u=i+o.kvSequenceLength,a=[o.batchSize,o.sequenceLength,o.vHiddenSize],c=12,p={x:Math.ceil(o.vHeadSize/c),y:Math.ceil(o.sequenceLength/c),z:o.batchSize*o.numHeads},h=[{type:12,data:o.sequenceLength},{type:12,data:u},{type:12,data:o.vHeadSize},{type:12,data:o.numHeads},{type:12,data:o.vHiddenSize}];return{name:\"AttentionScore\",shaderCache:{inputDependencies:[\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType,gpuDataType:0}],dispatchGroup:p,programUniforms:h}),getShaderSource:w=>{let _=U(\"probs\",t.dataType,t.dims),v=U(\"v\",r.dataType,r.dims),S=j(\"output\",t.dataType,a),A=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"v_hidden_size\",type:\"u32\"}];return`\\n  const TILE_SIZE = ${c}u;\\n  var<workgroup> tileQ: array<${_.type.value}, ${c*c}>;\\n  var<workgroup> tileK: array<${_.type.value}, ${c*c}>;\\n  ${w.registerUniforms(A).declareVariables(_,v,S)}\\n  ${w.mainStart([c,c,1])}\\n   let headIdx = workgroup_id.z;\\n   let m = global_id.y;\\n   let n = global_id.x;\\n\\n   let offsetA = headIdx * (uniforms.M * uniforms.K) + m * uniforms.K;\\n   let offsetB = headIdx * (uniforms.N * uniforms.K) + n;\\n\\n   var value = ${_.type.storage}(0);\\n   for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\\n     if (m < uniforms.M && w + local_id.x < uniforms.K) {\\n       tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];\\n     }\\n     if (n < uniforms.N && w + local_id.y < uniforms.K) {\\n       tileK[TILE_SIZE * local_id.y + local_id.x] = v[offsetB + (w + local_id.y) * uniforms.N];\\n     }\\n     workgroupBarrier();\\n     for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) {\\n       value += tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * k + local_id.x];\\n     }\\n     workgroupBarrier();\\n   }\\n\\n   // we need to transpose output from BNSH_v to BSND_v\\n   let batchIdx = workgroup_id.z / uniforms.num_heads;\\n   let currentBatchHeadNumber = workgroup_id.z % uniforms.num_heads;\\n   if (m < uniforms.M && n < uniforms.N) {\\n     let outputIdx = batchIdx * uniforms.M * uniforms.v_hidden_size + m * uniforms.v_hidden_size\\n       + currentBatchHeadNumber * uniforms.N + n;\\n     output[outputIdx] = value;\\n   }\\n  }`}}},Pn=(e,t,r,o,i,u,a,c,p,h,d)=>{let y=e.outputCount>1,w=e.outputCount>2,_=y&&w?h.pastSequenceLength:0,v=_+h.kvSequenceLength,S=[h.batchSize,h.numHeads,v,h.headSize],A=a?[a,r]:[r],I=y?e.compute(En(A,2,S,r.dataType),{inputs:A,outputs:[1]})[0]:r,x=[h.batchSize,h.numHeads,v,h.headSize],E=c?[c,o]:[o],P=w?e.compute(En(E,2,x,o.dataType),{inputs:E,outputs:[2]})[0]:o,O=[t,I];p&&O.push(p);let R=e.compute(rc(e,t,I,p,h,d,_),{inputs:O,outputs:[-1]})[0];e.compute(tc(e,R,h.batchSize*h.numHeads*h.sequenceLength,v),{inputs:[R],outputs:[]});let L=[R,P];e.compute(nc(e,R,P,h,_),{inputs:L,outputs:[0]})},oc=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],o=t.sequenceLength,i=t.inputHiddenSize,u=t.headSize,a=12,c={x:Math.ceil(t.headSize/a),y:Math.ceil(t.sequenceLength/a),z:t.batchSize*t.numHeads},p=[e.inputs[0],e.inputs[1],e.inputs[2]],h=[{type:12,data:o},{type:12,data:i},{type:12,data:u},{type:12,data:t.numHeads},{type:12,data:t.headSize},{type:12,data:t.hiddenSize},{type:12,data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],d=y=>{let w=j(\"output_q\",p[0].dataType,r),_=j(\"output_k\",p[0].dataType,r),v=j(\"output_v\",p[0].dataType,r),S=U(\"input\",p[0].dataType,p[0].dims),A=U(\"weight\",p[1].dataType,p[1].dims),I=U(\"bias\",p[2].dataType,p[2].dims),x=S.type.storage,E=[{name:\"M\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"num_heads\",type:\"u32\"},{name:\"head_size\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"},{name:\"ldb\",type:\"u32\"}];return`\\n  const TILE_SIZE = ${a}u;\\n  var<workgroup> tileInput: array<${x}, ${a*a}>;\\n  var<workgroup> tileWeightQ: array<${x}, ${a*a}>;\\n  var<workgroup> tileWeightK: array<${x}, ${a*a}>;\\n  var<workgroup> tileWeightV: array<${x}, ${a*a}>;\\n  ${y.registerUniforms(E).declareVariables(S,A,I,w,_,v)}\\n  ${y.mainStart([a,a,1])}\\n    let batchIndex = workgroup_id.z / uniforms.num_heads;\\n    let headNumber = workgroup_id.z % uniforms.num_heads;\\n    let m = global_id.y;\\n    let n = global_id.x;\\n\\n    let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;\\n    let biasOffsetQ = headNumber * uniforms.head_size;\\n    let biasOffsetK = uniforms.hidden_size + biasOffsetQ;\\n    let biasOffsetV = uniforms.hidden_size + biasOffsetK;\\n\\n    var valueQ = ${x}(0);\\n    var valueK = ${x}(0);\\n    var valueV = ${x}(0);\\n    for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {\\n      if (m < uniforms.M && w + local_id.x < uniforms.K) {\\n        tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];\\n      }\\n      if (n < uniforms.N && w + local_id.y < uniforms.K) {\\n        let offset = n + (w + local_id.y) * uniforms.ldb;\\n        tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];\\n        tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];\\n        tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];\\n      }\\n      workgroupBarrier();\\n      for (var k: u32 = 0u; k<TILE_SIZE && w+k < uniforms.K; k++) {\\n        let inputTileOffset = TILE_SIZE * local_id.y + k;\\n        let weightTileOffset = TILE_SIZE * k + local_id.x;\\n        valueQ += tileInput[inputTileOffset] * tileWeightQ[weightTileOffset];\\n        valueK += tileInput[inputTileOffset] * tileWeightK[weightTileOffset];\\n        valueV += tileInput[inputTileOffset] * tileWeightV[weightTileOffset];\\n      }\\n\\n      workgroupBarrier();\\n    }\\n\\n    let headOffset = (m * uniforms.N + n) % uniforms.head_size;\\n    valueQ += bias[headOffset + biasOffsetQ];\\n    valueK += bias[headOffset + biasOffsetK];\\n    valueV += bias[headOffset + biasOffsetV];\\n\\n    let offset = workgroup_id.z * uniforms.M * uniforms.N;\\n    if (m < uniforms.M && n < uniforms.N) {\\n      let outputIdx = offset + m * uniforms.N + n;\\n      output_q[outputIdx] = valueQ;\\n      output_k[outputIdx] = valueK;\\n      output_v[outputIdx] = valueV;\\n    }\\n  }`};return e.compute({name:\"AttentionPrepare\",shaderCache:{inputDependencies:[\"type\",\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:c,programUniforms:h}),getShaderSource:d},{inputs:p,outputs:[-1,-1,-1]})},Xa=(e,t)=>{let r=ec(e.inputs,t),[o,i,u]=oc(e,r);return Pn(e,o,i,u,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r,t)}});var ic,ac,sc,Qa,Ja=Y(()=>{\"use strict\";$r();ye();Se();Ze();_e();ic=(e,t)=>{if(!e||e.length!==5)throw new Error(\"BatchNormalization requires 5 inputs\");let r=(o,i,u)=>{let a=i.length;if(a!==o.length)throw new Error(`${u}: num dimensions != ${a}`);i.forEach((c,p)=>{if(c!==o[p])throw new Error(`${u}: dim[${p}] do not match`)})};if(e[0].dims.length>1){let o=t.format===\"NHWC\"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,o,\"Invalid input scale\"),r(e[2].dims,o,\"Invalid input B\"),r(e[3].dims,o,\"Invalid input mean\"),r(e[4].dims,o,\"Invalid input var\")}else r(e[1].dims,[1],\"Invalid input scale\"),r(e[2].dims,[1],\"Invalid input B\"),r(e[3].dims,[1],\"Invalid input mean\"),r(e[4].dims,[1],\"Invalid input var\")},ac=(e,t)=>{let{epsilon:r,spatial:o,format:i}=t,u=e[0].dims,a=o?Me(u[u.length-1]):1,c=i===\"NHWC\"&&u.length>1?a:1,p=M.size(u)/a,h=o,d=h?u.length:u,y=U(\"x\",e[0].dataType,e[0].dims,a),w=U(\"scale\",e[1].dataType,e[1].dims,c),_=U(\"bias\",e[2].dataType,e[2].dims,c),v=U(\"inputMean\",e[3].dataType,e[3].dims,c),S=U(\"inputVar\",e[4].dataType,e[4].dims,c),A=j(\"y\",e[0].dataType,d,a),I=()=>{let E=\"\";if(o)E=`let cOffset = ${u.length===1?\"0u\":i===\"NHWC\"?`outputIndices[${u.length-1}] / ${a}`:\"outputIndices[1]\"};`;else if(i===\"NCHW\")E=`\\n            ${A.indicesSet(\"outputIndices\",\"0\",\"0\")}\\n            let cOffset = ${A.indicesToOffset(\"outputIndices\")};`;else{E=`var cIndices = ${w.type.indices}(0);\\n                       cIndices[0] = outputIndices[${u.length-1}];`;for(let P=1;P<w.rank;P++)E+=`cIndices[${P}] = outputIndices[${P}];`;E+=`let cOffset = ${w.indicesToOffset(\"cIndices\")};`}return E},x=E=>`\\n  const epsilon = ${r};\\n  ${E.registerUniform(\"outputSize\",\"u32\").declareVariables(y,w,_,v,S,A)}\\n  ${E.mainStart()}\\n  ${E.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n    var outputIndices = ${A.offsetToIndices(`global_idx * ${a}`)};\\n    ${I()}\\n    let scale = ${w.getByOffset(\"cOffset\")};\\n    let bias = ${_.getByOffset(\"cOffset\")};\\n    let inputMean = ${v.getByOffset(\"cOffset\")};\\n    let inputVar = ${S.getByOffset(\"cOffset\")};\\n    let x = ${y.getByOffset(\"global_idx\")};\\n    let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;\\n    ${A.setByOffset(\"global_idx\",\"value\")}\\n  }`;return{name:\"BatchNormalization\",shaderCache:{hint:`${t.epsilon}_${t.format}_${o}_${a}`,inputDependencies:h?[\"rank\",\"type\",\"type\",\"type\",\"type\"]:void 0},getShaderSource:x,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:h?[{type:12,data:p},...Z(u)]:[{type:12,data:p}]})}},sc=e=>ve(e),Qa=(e,t)=>{let{inputs:r,outputCount:o}=e,i=sc({...t,outputCount:o});if(vr.webgpu.validateInputContent&&ic(r,i),t.trainingMode)throw new Error(\"BatchNormalization trainingMode is not supported yet.\");e.compute(ac(r,i))}});var uc,dc,es,ts=Y(()=>{\"use strict\";Se();_e();uc=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![320,640,1280].includes(e[0].dims[2]))throw new Error(\"number of channels should be 320, 640 or 1280\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},dc=e=>{let t=e[0].dims,r=e[0].dims[2],o=M.size(t)/4,i=e[0].dataType,u=U(\"input\",i,t,4),a=U(\"bias\",i,[r],4),c=U(\"residual\",i,t,4),p=j(\"output\",i,t,4);return{name:\"BiasAdd\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)}}),getShaderSource:d=>`\\n  const channels = ${r}u / 4;\\n  ${d.declareVariables(u,a,c,p)}\\n\\n  ${d.mainStart()}\\n    ${d.guardAgainstOutOfBoundsWorkgroupSizes(o)}\\n    let value = ${u.getByOffset(\"global_idx\")}\\n      + ${a.getByOffset(\"global_idx % channels\")} + ${c.getByOffset(\"global_idx\")};\\n    ${p.setByOffset(\"global_idx\",\"value\")}\\n  }`}},es=e=>{uc(e.inputs),e.compute(dc(e.inputs))}});var lc,ke,rs,ns,os,is,as,ss,us,ds,ls,cc,cs,ps,ms,fs,kn,hs,On,gs,ys,bs,ws,vs,$s,_s,Ss,xs,Cs,As,Is,Ts,Es,Ps,ks,Os,Rs,Bo,Do,Bs,Ds,zs,Rn=Y(()=>{\"use strict\";ye();Se();Ze();_e();lc=(e,t,r,o,i,u)=>{let a=Math.ceil(t/4),c=\"\";typeof i==\"string\"?c=`${i}(a)`:c=i(\"a\");let p=U(\"inputData\",r,[a],4),h=j(\"outputData\",o,[a],4);return`\\n      ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(p,h)}\\n\\n  ${u??\"\"}\\n\\n  ${e.mainStart()}\\n    ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n\\n    let a = ${p.getByOffset(\"global_idx\")};\\n    ${h.setByOffset(\"global_idx\",c)}\\n  }`},ke=(e,t,r,o,i,u=e.dataType)=>({name:t,shaderCache:{hint:i,inputDependencies:[\"type\"]},getShaderSource:a=>lc(a,M.size(e.dims),e.dataType,u,r,o),getRunData:a=>({outputs:[{dims:e.dims,dataType:u}],dispatchGroup:{x:Math.ceil(M.size(a[0].dims)/64/4)},programUniforms:[{type:12,data:Math.ceil(M.size(e.dims)/4)}]})}),rs=e=>{e.compute(ke(e.inputs[0],\"Abs\",\"abs\"))},ns=e=>{e.compute(ke(e.inputs[0],\"Acos\",\"acos\"))},os=e=>{e.compute(ke(e.inputs[0],\"Acosh\",\"acosh\"))},is=e=>{e.compute(ke(e.inputs[0],\"Asin\",\"asin\"))},as=e=>{e.compute(ke(e.inputs[0],\"Asinh\",\"asinh\"))},ss=e=>{e.compute(ke(e.inputs[0],\"Atan\",\"atan\"))},us=e=>{e.compute(ke(e.inputs[0],\"Atanh\",\"atanh\"))},ds=e=>ve(e),ls=(e,t)=>{let r;switch(t.to){case 10:r=\"vec4<f16>\";break;case 1:r=\"vec4<f32>\";break;case 12:r=\"vec4<u32>\";break;case 6:r=\"vec4<i32>\";break;case 9:r=\"vec4<bool>\";break;default:throw new RangeError(`not supported type (specified in attribute \\'to\\' from \\'Cast\\' operator): ${t.to}`)}e.compute(ke(e.inputs[0],\"Cast\",r,void 0,t.cacheKey,t.to))},cc=e=>{let t=e.length>=2&&e[1].data!==0?e[1].getFloat32Array()[0]:xn,r=e.length>=3&&e[2].data!==0?e[2].getFloat32Array()[0]:Cn;return ve({min:t,max:r})},cs=(e,t)=>{let r=e.inputs.length===1?t:cc(e.inputs),o=et(e.inputs[0].dataType);e.compute(ke(e.inputs[0],\"Clip\",i=>`clamp(${i}, clip_min_, clip_max_)`,`\\n    const clip_min_: vec4<${o}> = vec4(${o}(${r.min}));\\n    const clip_max_: vec4<${o}> = vec4(${o}(${r.max}));\\n`,r.cacheKey),{inputs:[0]})},ps=e=>{e.compute(ke(e.inputs[0],\"Ceil\",\"ceil\"))},ms=e=>{e.compute(ke(e.inputs[0],\"Cos\",\"cos\"))},fs=e=>{e.compute(ke(e.inputs[0],\"Cosh\",\"cosh\"))},kn=e=>ve(e),hs=(e,t)=>{let r=et(e.inputs[0].dataType);e.compute(ke(e.inputs[0],\"Elu\",o=>`elu_vf32(${o})`,`\\n  const elu_alpha_ = ${r}(${t.alpha});\\n\\n  fn elu_f32(a: ${r}) -> ${r} {\\n  return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);\\n  }\\n\\n  fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {\\n  return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));\\n  }`,t.cacheKey))},On=(e=\"f32\")=>`\\nconst r0: ${e} = 0.3275911;\\nconst r1: ${e} = 0.254829592;\\nconst r2: ${e} = -0.284496736;\\nconst r3: ${e} = 1.421413741;\\nconst r4: ${e} = -1.453152027;\\nconst r5: ${e} = 1.061405429;\\n\\nfn erf_vf32(v: vec4<${e}>) -> vec4<${e}> {\\n  let absv = abs(v);\\n  let x = 1.0 / (1.0 + r0 * absv);\\n  return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));\\n}`,gs=e=>{let t=et(e.inputs[0].dataType);e.compute(ke(e.inputs[0],\"Erf\",r=>`erf_vf32(${r})`,On(t)))},ys=e=>{e.compute(ke(e.inputs[0],\"Exp\",\"exp\"))},bs=e=>{e.compute(ke(e.inputs[0],\"Floor\",\"floor\"))},ws=e=>{let t=et(e.inputs[0].dataType);e.compute(ke(e.inputs[0],\"Gelu\",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,On(t)))},vs=(e,t)=>{let r=et(e.inputs[0].dataType);e.compute(ke(e.inputs[0],\"LeakyRelu\",o=>`select(leaky_relu_alpha_ * ${o}, ${o}, ${o} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},$s=e=>{e.compute(ke(e.inputs[0],\"Not\",t=>`!${t}`))},_s=e=>{e.compute(ke(e.inputs[0],\"Neg\",t=>`-${t}`))},Ss=e=>{e.compute(ke(e.inputs[0],\"Reciprocal\",t=>`1.0/${t}`))},xs=e=>{let t=et(e.inputs[0].dataType);e.compute(ke(e.inputs[0],\"Relu\",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},Cs=e=>{e.compute(ke(e.inputs[0],\"Sigmoid\",t=>`(1.0 / (1.0 + exp(-${t})))`))},As=e=>ve(e),Is=(e,t)=>{let r=et(e.inputs[0].dataType);e.compute(ke(e.inputs[0],\"HardSigmoid\",o=>`max(vec4<${r}>(0.0), min(vec4<${r}>(1.0), ${t.alpha} * ${o} + vec4<${r}>(${t.beta})))`,void 0,t.cacheKey))},Ts=e=>{e.compute(ke(e.inputs[0],\"Sin\",\"sin\"))},Es=e=>{e.compute(ke(e.inputs[0],\"Sinh\",\"sinh\"))},Ps=e=>{e.compute(ke(e.inputs[0],\"Sqrt\",\"sqrt\"))},ks=e=>{e.compute(ke(e.inputs[0],\"Tan\",\"tan\"))},Os=e=>`sign(${e}) * (1 - exp(-2 * abs(${e}))) / (1 + exp(-2 * abs(${e})))`,Rs=e=>{e.compute(ke(e.inputs[0],\"Tanh\",Os))},Bo=(e=\"f32\")=>`\\nconst fast_gelu_a: ${e} = 0.5;\\nconst fast_gelu_b: ${e} = 0.7978845608028654;\\nconst fast_gelu_c: ${e} = 0.035677408136300125;\\n\\nfn tanh_v(v: vec4<${e}>) -> vec4<${e}> {\\n  return ${Os(\"v\")};\\n}\\n`,Do=e=>`(fast_gelu_a + fast_gelu_a * tanh_v(${e} * (fast_gelu_c * ${e} * ${e} + fast_gelu_b))) * ${e}`,Bs=e=>{let t=et(e.inputs[0].dataType);e.compute(ke(e.inputs[0],\"FastGelu\",Do,Bo(t),void 0,e.inputs[0].dataType))},Ds=(e,t)=>{let r=et(e.inputs[0].dataType);return e.compute(ke(e.inputs[0],\"ThresholdedRelu\",o=>`select(vec4<${r}>(0.0), ${o}, ${o} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},zs=e=>{e.compute(ke(e.inputs[0],\"Log\",\"log\"))}});var pc,mc,Us,Vs=Y(()=>{\"use strict\";Se();_e();Rn();pc=e=>{if(e[0].dims.length!==3)throw new Error(\"input should have 3 dimensions\");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error(\"hidden state should be 2560, 5120 or 10240\");if(e[1].dims.length!==1)throw new Error(\"bias is expected to have 1 dimensions\");if(e[0].dims[2]!==e[1].dims[0])throw new Error(\"last dimension of input and bias are not the same\")},mc=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=U(\"input\",e[0].dataType,e[0].dims,4),o=U(\"bias\",e[0].dataType,[e[0].dims[2]],4),i=j(\"output\",e[0].dataType,t,4),u=M.size(t)/4,a=De(e[0].dataType);return{name:\"BiasSplitGelu\",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)}}),getShaderSource:p=>`\\n  const M_SQRT2 = sqrt(2.0);\\n  const halfChannels = ${e[0].dims[2]/4/2}u;\\n\\n  ${p.declareVariables(r,o,i)}\\n\\n  ${On(a)}\\n\\n  ${p.mainStart()}\\n    ${p.guardAgainstOutOfBoundsWorkgroupSizes(u)}\\n    let biasIdx = global_idx % halfChannels;\\n    let batchIndex = global_idx / halfChannels;\\n    let inputOffset = biasIdx + batchIndex * halfChannels * 2;\\n    let valueLeft = input[inputOffset] + bias[biasIdx];\\n    let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];\\n    let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);\\n\\n    ${i.setByOffset(\"global_idx\",\"valueLeft * geluRight\")}\\n  }`}},Us=e=>{pc(e.inputs),e.compute(mc(e.inputs))}});var fc,hc,Ot,Ws,Ns,Gs,Hs,Ls,Fs,qs,js,Ks,Ys,Zs=Y(()=>{\"use strict\";ye();Se();_e();fc=(e,t,r,o,i,u,a,c,p,h,d,y)=>{let w,_;typeof c==\"string\"?w=_=(x,E)=>`${c}((${x}),(${E}))`:typeof c==\"function\"?w=_=c:(w=c.scalar,_=c.vector);let v=j(\"outputData\",d,o.length,4),S=U(\"aData\",p,t.length,4),A=U(\"bData\",h,r.length,4),I;if(i)if(u){let x=M.size(t)===1,E=M.size(r)===1,P=t.length>0&&t[t.length-1]%4===0,O=r.length>0&&r[r.length-1]%4===0;x||E?I=v.setByOffset(\"global_idx\",_(x?`${S.type.value}(${S.getByOffset(\"0\")}.x)`:S.getByOffset(\"global_idx\"),E?`${A.type.value}(${A.getByOffset(\"0\")}.x)`:A.getByOffset(\"global_idx\"))):I=`\\n            let outputIndices = ${v.offsetToIndices(\"global_idx * 4u\")};\\n            let offsetA = ${S.broadcastedIndicesToOffset(\"outputIndices\",v)};\\n            let offsetB = ${A.broadcastedIndicesToOffset(\"outputIndices\",v)};\\n            ${v.setByOffset(\"global_idx\",_(a||P?S.getByOffset(\"offsetA / 4u\"):`${S.type.value}(${S.getByOffset(\"offsetA / 4u\")}[offsetA % 4u])`,a||O?A.getByOffset(\"offsetB / 4u\"):`${A.type.value}(${A.getByOffset(\"offsetB / 4u\")}[offsetB % 4u])`))}\\n          `}else I=v.setByOffset(\"global_idx\",_(S.getByOffset(\"global_idx\"),A.getByOffset(\"global_idx\")));else{if(!u)throw new Error(\"no necessary to use scalar implementation for element-wise binary op implementation.\");let x=(E,P,O=\"\")=>{let R=`aData[indexA${P}][componentA${P}]`,L=`bData[indexB${P}][componentB${P}]`;return`\\n            let outputIndices${P} = ${v.offsetToIndices(`global_idx * 4u + ${P}u`)};\\n            let offsetA${P} = ${S.broadcastedIndicesToOffset(`outputIndices${P}`,v)};\\n            let offsetB${P} = ${A.broadcastedIndicesToOffset(`outputIndices${P}`,v)};\\n            let indexA${P} = offsetA${P} / 4u;\\n            let indexB${P} = offsetB${P} / 4u;\\n            let componentA${P} = offsetA${P} % 4u;\\n            let componentB${P} = offsetB${P} % 4u;\\n            ${E}[${P}] = ${O}(${w(R,L)});\\n          `};d===9?I=`\\n            var data = vec4<u32>(0);\\n            ${x(\"data\",0,\"u32\")}\\n            ${x(\"data\",1,\"u32\")}\\n            ${x(\"data\",2,\"u32\")}\\n            ${x(\"data\",3,\"u32\")}\\n            outputData[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:I=`\\n            ${x(\"outputData[global_idx]\",0)}\\n            ${x(\"outputData[global_idx]\",1)}\\n            ${x(\"outputData[global_idx]\",2)}\\n            ${x(\"outputData[global_idx]\",3)}\\n          `}return`\\n        ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(S,A,v)}\\n\\n        ${y??\"\"}\\n\\n        ${e.mainStart()}\\n        ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n        ${I}\\n      }`},hc=(e,t,r,o,i,u,a=r.dataType)=>{let c=!M.areEqual(r.dims,o.dims),p=r.dims,h=M.size(r.dims),d=!1,y=!1,w=[c];if(c){let _=It.calcShape(r.dims,o.dims,!1);if(!_)throw new Error(\"Can\\'t perform binary op on the given tensors\");p=_,h=M.size(p);let v=M.size(r.dims)===1,S=M.size(o.dims)===1,A=r.dims.length>0&&r.dims[r.dims.length-1]%4===0,I=o.dims.length>0&&o.dims[o.dims.length-1]%4===0;w.push(v),w.push(S),w.push(A),w.push(I);let x=1;for(let E=1;E<p.length;E++){let P=r.dims[r.dims.length-E]??1,O=o.dims[o.dims.length-E]??1;if(P===O)x*=P;else break}x%4===0?(y=!0,d=!0):(v||S||A||I)&&(d=!0)}else d=!0;return w.push(d),{name:e,shaderCache:{hint:t+w.map(_=>_.toString()).join(\"_\"),inputDependencies:[\"rank\",\"rank\"]},getShaderSource:_=>fc(_,r.dims,o.dims,p,d,c,y,i,r.dataType,o.dataType,a,u),getRunData:()=>({outputs:[{dims:p,dataType:a}],dispatchGroup:{x:Math.ceil(h/64/4)},programUniforms:[{type:12,data:Math.ceil(M.size(p)/4)},...Z(r.dims,o.dims,p)]})}},Ot=(e,t,r,o,i,u)=>{e.compute(hc(t,i??\"\",e.inputs[0],e.inputs[1],r,o,u))},Ws=e=>{Ot(e,\"Add\",(t,r)=>`${t}+${r}`)},Ns=e=>{Ot(e,\"Div\",(t,r)=>`${t}/${r}`)},Gs=e=>{Ot(e,\"Equal\",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4<u32>(${t}==${r})`},void 0,void 0,9)},Hs=e=>{Ot(e,\"Mul\",(t,r)=>`${t}*${r}`)},Ls=e=>{let t=U(\"input\",e.inputs[0].dataType,e.inputs[0].dims).type.value;Ot(e,\"Pow\",{scalar:(o,i)=>`pow_custom(${o},${i})`,vector:(o,i)=>`pow_vector_custom(${o},${i})`},`\\n    fn pow_custom(a : ${t}, b : ${t}) -> ${t} {\\n      if (b == ${t}(0.0)) {\\n        return ${t}(1.0);\\n      } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {\\n        return ${t}(pow(f32(a), f32(b))); // NaN\\n      }\\n      return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t===\"i32\"?\"round\":\"\"}(pow(f32(abs(a)), f32(b))));\\n    }\\n    fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {\\n      // TODO: implement vectorized pow\\n      return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));\\n    }\\n      `)},Fs=e=>{Ot(e,\"Sub\",(t,r)=>`${t}-${r}`)},qs=e=>{Ot(e,\"Greater\",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4<u32>(${t}>${r})`},void 0,void 0,9)},js=e=>{Ot(e,\"Less\",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4<u32>(${t}<${r})`},void 0,void 0,9)},Ks=e=>{Ot(e,\"GreaterOrEqual\",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4<u32>(${t}>=${r})`},void 0,void 0,9)},Ys=e=>{Ot(e,\"LessOrEqual\",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4<u32>(${t}<=${r})`},void 0,void 0,9)}});var St,xt,Ct,Bn,Ft=Y(()=>{\"use strict\";ye();Se();St=(e,t,r=\"f32\")=>{switch(e.activation){case\"Relu\":return`value = max(value, ${t}(0.0));`;case\"Sigmoid\":return`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`;case\"Clip\":return`value = clamp(value, ${t}(${r}(uniforms.clip_min)), ${t}(${r}(uniforms.clip_max)));`;case\"HardSigmoid\":return`value = max(${t}(0.0), min(${t}(1.0), ${r}(uniforms.alpha) * value + ${r}(uniforms.beta)));`;case\"LeakyRelu\":return`value = select(${r}(uniforms.alpha) * value, value, value >= ${t}(0.0));`;case\"\":return\"\";default:throw new Error(`Unsupported activation ${e.activation}`)}},xt=(e,t)=>{e.activation===\"Clip\"?t.push({type:1,data:e.clipMax},{type:1,data:e.clipMin}):e.activation===\"HardSigmoid\"?t.push({type:1,data:e.alpha},{type:1,data:e.beta}):e.activation===\"LeakyRelu\"&&t.push({type:1,data:e.alpha})},Ct=(e,t)=>{e.activation===\"Clip\"?t.push({name:\"clip_max\",type:\"f32\"},{name:\"clip_min\",type:\"f32\"}):e.activation===\"HardSigmoid\"?t.push({name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}):e.activation===\"LeakyRelu\"&&t.push({name:\"alpha\",type:\"f32\"})},Bn=e=>{let t=e?.activation||\"\";if(t===\"HardSigmoid\"){let[r,o]=e?.activation_params||[.2,.5];return{activation:t,alpha:r,beta:o}}else if(t===\"Clip\"){let[r,o]=e?.activation_params||[xn,Cn];return{activation:t,clipMax:o,clipMin:r}}else if(t===\"LeakyRelu\"){let[r]=e?.activation_params||[.01];return{activation:t,alpha:r}}return{activation:t}}});var tt,Dn,zn=Y(()=>{\"use strict\";tt=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},Dn=e=>`\\n      ${e?\"value = value + getBiasByOutputCoords(coords);\":\"\"}\\n      `});var Mn,zo=Y(()=>{\"use strict\";Mn=e=>`\\nfn getIndexFromCoords4D(coords : vec4<i32>, shape : vec4<i32>) -> i32 {\\n  return dot(coords, vec4<i32>(\\n      shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));\\n}\\nfn getOutputIndexFromCoords(coords : vec4<i32>) -> i32 {\\n  return dot(coords, vec4<i32>(\\n    i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));\\n}\\n`});var yc,bc,Hr,Xs,wc,Lr,vc,Un,Fr=Y(()=>{\"use strict\";ye();Se();_e();Ft();zn();yc=(e,t)=>e?`\\n        mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n          kStart + inputRow,\\n          globalRowStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\\n        `:`\\n        mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n          globalRow + innerRow,\\n          kStart / innerElementSize + inputCol${t?\", batchIndices\":\"\"});\\n        `,bc=(e,t)=>e?`\\n        let ACached0 = mm_Asub[k * innerElementSize][localRow];\\n        let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];\\n        let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];\\n        ${t===3?\"\":\"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];\"}\\n        for (var i = 0; i < rowPerThread; i = i + 1) {\\n          acc[i] = BCached0 * ACached0[i] + acc[i];\\n          acc[i] = BCached1 * ACached1[i] + acc[i];\\n          acc[i] = BCached2 * ACached2[i] + acc[i];\\n          ${t===3?\"\":\"acc[i] = BCached3 * ACached3[i] + acc[i];\"}\\n        }`:`\\n        for (var i = 0; i < rowPerThread; i = i + 1) {\\n          let ACached = mm_Asub[tileRow + i][k];\\n          acc[i] = BCached0 * ACached.x + acc[i];\\n          acc[i] = BCached1 * ACached.y + acc[i];\\n          acc[i] = BCached2 * ACached.z + acc[i];\\n          ${t===3?\"\":\"acc[i] = BCached3 * ACached.w + acc[i];\"}\\n        }`,Hr=(e,t,r=\"f32\",o,i=!1,u=32,a=!1,c=32)=>{let p=t[1]*e[1],h=t[0]*e[0],d=i?p:u,y=i?u:p,w=d/t[0],_=u/t[1];if(!((i&&w===4&&e[1]===4||!i&&(w===3||w===4))&&d%t[0]===0&&u%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${i} is true, innerElementSize ${w} and workPerThread[1] ${e[1]} must be 4.\\n      Otherwise, innerElementSize ${w} must be 3 or 4.\\n  tileAWidth ${d} must be divisible by workgroupSize[0]${t[0]}. tileInner ${u} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`\\nvar<workgroup> mm_Asub: array<array<vec${w}<${r}>, ${d/w}>, ${y}>;\\nvar<workgroup> mm_Bsub: array<array<vec4<${r}>, ${h/e[0]}>, ${u}>;\\n\\nconst rowPerThread = ${e[1]};\\nconst colPerThread = ${e[0]};\\nconst innerElementSize = ${w};\\nconst tileInner = ${u};\\n\\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\\nfn main(@builtin(local_invocation_id) localId : vec3<u32>,\\n        @builtin(global_invocation_id) globalId : vec3<u32>,\\n        @builtin(workgroup_id) workgroupId : vec3<u32>) {\\n  let localRow = i32(localId.y);\\n  let tileRow = localRow * rowPerThread;\\n  let tileCol = i32(localId.x);\\n\\n  let globalRow =i32(globalId.y) * rowPerThread;\\n  let globalCol = i32(globalId.x);\\n  let batch = ${a?\"0\":\"i32(globalId.z)\"};\\n  ${o?`let batchIndices = ${o.offsetToIndices(\"u32(batch)\")};`:\"\"}\\n  let globalRowStart = i32(workgroupId.y) * ${p};\\n\\n  let num_tiles = ${a?`${Math.ceil(c/u)}`:\"(uniforms.dim_inner - 1) / tileInner + 1\"};\\n  var kStart = ${a?`i32(globalId.z) * ${c}`:\"0\"};\\n\\n  var acc: array<vec4<${r}>, rowPerThread>;\\n\\n  // Loop over shared dimension.\\n  let tileRowB = localRow * ${_};\\n  for (var t = 0; t < num_tiles; t = t + 1) {\\n      // Load one tile of A into local memory.\\n      for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n          let inputRow = tileRow + innerRow;\\n          let inputCol = tileCol;\\n          ${yc(i,o)}\\n      }\\n\\n      // Load one tile of B into local memory.\\n      for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) {\\n          let inputRow = tileRowB + innerRow;\\n          let inputCol = tileCol;\\n          mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${o?\", batchIndices\":\"\"});\\n      }\\n      kStart = kStart + tileInner;\\n      workgroupBarrier();\\n\\n      // Compute acc values for a single thread.\\n      for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {\\n          let BCached0 = mm_Bsub[k * innerElementSize][tileCol];\\n          let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];\\n          let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];\\n          ${w===3?\"\":\"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];\"}\\n\\n          ${bc(i,w)}\\n      }\\n\\n      workgroupBarrier();\\n  }\\n\\n  for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n      mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);\\n  }\\n}`},Xs=(e,t)=>e?`\\n            mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n              kStart + inputRow,\\n              globalRowStart + inputCol${t?\", batchIndices\":\"\"});\\n            `:`\\n            mm_Asub[inputRow][inputCol] = mm_readA(batch,\\n              globalRowStart + inputRow,\\n              kStart + inputCol${t?\", batchIndices\":\"\"});\\n            `,wc=e=>e?\"let ACached = mm_Asub[k][tileRow + innerRow];\":\"let ACached = mm_Asub[tileRow + innerRow][k];\",Lr=(e,t,r=\"f32\",o,i=!1,u=32,a=!1,c=32,p=!1)=>{let h=e[1]*t[1],d=e[0]*t[0],y=i?h:u,w=i?u:h;if(!(w%t[1]===0&&y%t[0]===0&&u%t[1]===0))throw new Error(`tileAHight ${w} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${y} must be divisible by workgroupSize[0]${t[0]}, tileInner ${u} must be divisible by workgroupSize[1]${t[1]}`);let _=w/t[1],v=y/t[0],S=u/t[1],A=p?`\\n    let localRow = i32(localId.y);\\n    let localCol = i32(localId.x);\\n    let globalRowStart = i32(workgroupId.y) * ${h};\\n    let globalColStart = i32(workgroupId.x) * ${d};\\n\\n    // Loop over shared dimension.\\n    for (var t = 0; t < num_tiles; t = t + 1) {\\n      // Load one tile of A into local memory.\\n      for (var inputRow = localRow; inputRow < ${w}; inputRow = inputRow + ${t[1]}) {\\n        for (var inputCol = localCol; inputCol < ${y}; inputCol = inputCol + ${t[0]}) {\\n          ${Xs(i,o)}\\n        }\\n      }\\n      // Load one tile of B into local memory.\\n      for (var inputRow = localRow; inputRow < ${u}; inputRow = inputRow + ${t[1]}) {\\n            for (var inputCol = localCol; inputCol < ${d}; inputCol = inputCol + ${t[0]}) {\\n          mm_Bsub[inputRow][inputCol] = mm_readB(batch,\\n            kStart + inputRow,\\n            globalColStart + inputCol${o?\", batchIndices\":\"\"});\\n        }\\n      }\\n      kStart = kStart + tileInner;\\n      workgroupBarrier();\\n\\n      // Compute acc values for a single thread.\\n      var BCached : array<${r}, colPerThread>;\\n      for (var k = 0; k < tileInner; k = k + 1) {\\n        for (var inner = 0; inner < colPerThread; inner = inner + 1) {\\n          BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];\\n        }\\n        for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n          let ACached = ${i?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}\\n          for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n            acc[innerRow][innerCol] = acc[innerRow][innerCol] +\\n                ACached * BCached[innerCol];\\n          }\\n        }\\n      }\\n      workgroupBarrier();\\n    }\\n    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n      let gRow = globalRowStart + localRow + innerRow * ${t[1]};\\n      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n        let gCol = globalColStart + localCol + innerCol * ${t[0]};\\n        mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);\\n      }\\n    }\\n    `:`\\nlet tileRow = i32(localId.y) * rowPerThread;\\nlet tileCol = i32(localId.x) * colPerThread;\\n\\nlet globalRow = i32(globalId.y) * rowPerThread;\\nlet globalCol = i32(globalId.x) * colPerThread;\\nlet globalRowStart = i32(workgroupId.y) * ${h};\\n\\nlet tileRowA = i32(localId.y) * ${_};\\nlet tileColA = i32(localId.x) * ${v};\\nlet tileRowB = i32(localId.y) * ${S};\\n// Loop over shared dimension.\\nfor (var t = 0; t < num_tiles; t = t + 1) {\\n  // Load one tile of A into local memory.\\n  for (var innerRow = 0; innerRow < ${_}; innerRow = innerRow + 1) {\\n    for (var innerCol = 0; innerCol < ${v}; innerCol = innerCol + 1) {\\n      let inputRow = tileRowA + innerRow;\\n      let inputCol = tileColA + innerCol;\\n      ${Xs(i,o)}\\n    }\\n  }\\n\\n  // Load one tile of B into local memory.\\n  for (var innerRow = 0; innerRow < ${S}; innerRow = innerRow + 1) {\\n    for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n      let inputRow = tileRowB + innerRow;\\n      let inputCol = tileCol + innerCol;\\n      mm_Bsub[inputRow][inputCol] = mm_readB(batch,\\n        kStart + inputRow,\\n        globalCol + innerCol${o?\", batchIndices\":\"\"});\\n    }\\n  }\\n  kStart = kStart + tileInner;\\n  workgroupBarrier();\\n\\n  // Compute acc values for a single thread.\\n  var BCached : array<${r}, colPerThread>;\\n  for (var k = 0; k < tileInner; k = k + 1) {\\n    for (var inner = 0; inner < colPerThread; inner = inner + 1) {\\n      BCached[inner] = mm_Bsub[k][tileCol + inner];\\n    }\\n\\n    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n      ${wc(i)}\\n      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n        acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];\\n      }\\n    }\\n  }\\n\\n  workgroupBarrier();\\n}\\n\\nfor (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n  for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n    mm_write(batch, globalRow + innerRow, globalCol + innerCol,\\n        acc[innerRow][innerCol]);\\n  }\\n}\\n`;return`\\n  var<workgroup> mm_Asub : array<array<${r}, ${y}>, ${w}>;\\n  var<workgroup> mm_Bsub : array<array<${r}, ${d}>, ${u}>;\\n  const rowPerThread = ${e[1]};\\n  const colPerThread = ${e[0]};\\n  const tileInner = ${u};\\n\\n@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})\\nfn main(@builtin(local_invocation_id) localId : vec3<u32>,\\n        @builtin(global_invocation_id) globalId : vec3<u32>,\\n        @builtin(workgroup_id) workgroupId : vec3<u32>) {\\n    let batch = ${a?\"0\":\"i32(globalId.z)\"};\\n    ${o?`let batchIndices = ${o.offsetToIndices(\"u32(batch)\")};`:\"\"}\\n    let num_tiles = ${a?`${Math.ceil(c/u)}`:\"(uniforms.dim_inner - 1) / tileInner + 1\"};\\n    var kStart = ${a?`i32(globalId.z) * ${c}`:\"0\"};\\n\\n    var acc : array<array<${r}, colPerThread>, rowPerThread>;\\n\\n    // Without this initialization strange values show up in acc.\\n    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {\\n      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {\\n        acc[innerRow][innerCol] = 0.0;\\n      }\\n    }\\n    ${A}\\n  }\\n`},vc=(e,t,r,o,i,u=!1)=>{let[a,c,p]=i,[h,d,y,w]=o,_=_r(a,p),v=_r(c,p),S=De(o[0].type.tensor),A=()=>{let E=d.rank,P=h.rank,O=`var aIndices: ${d.type.indices};`;for(let R=E-2-1,L=P-1;R>=0;R--,L--)O+=`\\naIndices[${R}] = ${P>1?`batchIndices[${L}]`:\"batchIndices\"};`;return _.forEach(R=>{O+=`\\naIndices[${R}] = 0;`}),O+=`\\naIndices[${E-2}] = u32(row);\\n                   aIndices[${E-1}] = u32(colIn);`,O},I=()=>{let E=y.rank,P=h.rank,O=`var bIndices: ${y.type.indices};`;for(let R=E-2-1,L=P-1;R>=0;R--,L--)O+=`\\nbIndices[${R}] = ${P>1?`batchIndices[${L}]`:\"batchIndices\"};`;return v.forEach(R=>{O+=`\\nbIndices[${R}] = 0;`}),O+=`\\nbIndices[${E-2}] = u32(row);\\n                   bIndices[${E-1}] = u32(colIn);`,O};return`\\n    fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${h.type.indices}) -> ${tt(e,S)} {\\n      var value = ${tt(e,S)}(0.0);\\n      let col = colIn * ${e};\\n      if(row < uniforms.dim_a_outer && col < uniforms.dim_inner)\\n      {\\n        ${A()}\\n        value = ${d.getByIndices(\"aIndices\")};\\n      }\\n      return value;\\n    }\\n\\n    fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${h.type.indices}) -> ${tt(e,S)} {\\n      var value = ${tt(e,S)}(0.0);\\n      let col = colIn * ${e};\\n      if(row < uniforms.dim_inner && col < uniforms.dim_b_outer)\\n      {\\n        ${I()}\\n        value = ${y.getByIndices(\"bIndices\")};\\n      }\\n      return value;\\n    }\\n\\n    fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${tt(e,S)}) {\\n      let col = colIn * ${e};\\n      if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {\\n        var value = valueIn;\\n        let coords = vec3<i32>(batch, row, colIn);\\n        ${t?`value = value + ${u?\"bias[colIn]\":`${tt(e,S)}(bias[row])`};`:\"\"}\\n        ${r}\\n        ${w.setByIndices(\"vec3<u32>(coords)\",\"value\")}\\n      }\\n    }\\n    `},Un=(e,t,r,o,i=!1)=>{let u=e[0].dims,a=e[1].dims,c=u.slice(0,-2),p=a.slice(0,-2),h=o?o.slice(0,-2):r.slice(0,-2),d=M.size(h),y=u[u.length-2],w=u[u.length-1],_=a[a.length-1],v=w%4===0&&_%4===0,S=y<=8?[4,1,1]:[4,4,1],A=[8,8,1],I=[Math.ceil(_/A[0]/S[0]),Math.ceil(y/A[1]/S[1]),Math.ceil(d/A[2]/S[2])],x=v?4:1,E=[...c,y,w/x],P=E.length,O=[...p,w,_/x],R=O.length,L=[d,y,_/x],N=[{type:6,data:y},{type:6,data:_},{type:6,data:w}];xt(t,N),N.push(...Z(h,E,O));let K=[\"rank\",\"rank\"],Q=e.length>2;Q&&(N.push(...Z(e[2].dims)),K.push(\"rank\")),N.push(...Z(L));let he=W=>{let se=h.length,Ce=An(\"batchDims\",e[0].dataType,se,1),We=De(e[0].dataType),ee=U(\"a\",e[0].dataType,P,x),ae=U(\"b\",e[1].dataType,R,x),Ae=j(\"result\",e[0].dataType,L.length,x),me=[ee,ae];if(Q){let G=i?x:1;me.push(U(\"bias\",e[2].dataType,e[2].dims.length,G))}let ie=[{name:\"dim_a_outer\",type:\"i32\"},{name:\"dim_b_outer\",type:\"i32\"},{name:\"dim_inner\",type:\"i32\"}];Ct(t,ie);let ue=De(Ae.type.tensor),le=St(t,Ae.type.value,ue),qe=vc(x,Q,le,[Ce,ee,ae,Ae],[c,p,h],i);return`\\n  ${W.registerUniforms(ie).registerInternalVariables(Ce).declareVariables(...me,Ae)}\\n  ${qe}\\n  ${v?Hr(S,A,We,Ce):Lr(S,A,We,Ce)}\\n                   `};return{name:\"MatMul\",shaderCache:{hint:`${S};${t.activation};${v};${i}`,inputDependencies:K},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:I[0],y:I[1],z:I[2]},programUniforms:N}),getShaderSource:he}}});var $c,Qs,Js=Y(()=>{\"use strict\";ye();Lt();_e();Ft();zn();zo();Fr();$c=(e,t,r,o,i=!1,u,a=4,c=4,p=4,h=\"f32\")=>{let d=Q=>{switch(Q){case 1:return\"resData = x[xIndex];\";case 3:return`resData = vec3<${h}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return\"resData = x[xIndex / 4];\";default:throw new Error(`innerElementSize ${Q} is not supported.`)}},y=Q=>{switch(Q){case 1:return\"return w[row * i32(uniforms.w_shape[3]) + colIn];\";case 4:return\"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];\";default:throw new Error(`innerElementSize ${Q} is not supported.`)}},w=e?`\\n    let coord = vec4<i32>(batch, xRow, xCol, xCh);\\n    `:`\\n    let coord = vec4<i32>(batch, xCh, xRow, xCol);\\n    `,_=e?`\\n    let coords = vec4<i32>(\\n      batch,\\n      row / outWidth,\\n      row % outWidth,\\n      col);\\n    `:`\\n    let coords = vec4<i32>(\\n      batch,\\n      row,\\n      col / outWidth,\\n      col % outWidth);\\n    `,v=e?\"i32(uniforms.x_shape[1])\":\"i32(uniforms.x_shape[2])\",S=e?\"i32(uniforms.x_shape[2])\":\"i32(uniforms.x_shape[3])\",A=e?\"row\":\"col\",I=e?\"col\":\"row\",x=`\\n    let inChannels = i32(uniforms.w_shape[2]);\\n    let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n    let outRow = ${A} / outWidth;\\n    let outCol = ${A} % outWidth;\\n\\n    let WRow = ${I} / (i32(uniforms.w_shape[1]) * inChannels);\\n    let WCol = ${I} / inChannels % i32(uniforms.w_shape[1]);\\n    let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0];\\n    let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1];\\n    let xCh = ${I} % inChannels;\\n    var resData = ${tt(a,h)}(0.0);\\n    // The bounds checking is always needed since we use it to pad zero for\\n    // the \\'same\\' padding type.\\n    if (xRow >= 0 && xRow < ${v} && xCol >= 0 && xCol < ${S}) {\\n      ${w}\\n      let xIndex = getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape));\\n      ${d(a)}\\n    }\\n    return resData;`,E=e?t&&o?`\\n    let col = colIn * ${a};\\n    ${x}`:`\\n    let col = colIn * ${a};\\n    if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {\\n      ${x}\\n    }\\n    return ${tt(a,h)}(0.0);`:o&&r?`\\n    let col = colIn * ${a};\\n    ${x}`:`\\n    let col = colIn * ${a};\\n    if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {\\n      ${x}\\n    }\\n    return ${tt(a,h)}(0.0);`,P=`${y(c)}`,O=tt(p,h),R=e?tt(a,h):tt(c,h),L=e?tt(c,h):tt(a,h),N=St(u,O,h);return`\\n    fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${R} {\\n      ${e?E:P}\\n    }\\n\\n    fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${L} {\\n      ${e?P:E}\\n    }\\n\\n    fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${O}) {\\n      let col = colIn * ${p};\\n      if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer)\\n      {\\n      var value = valueIn;\\n      let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n      ${_}\\n      ${Dn(i)}\\n      ${N}\\n      setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);\\n      }\\n    }`},Qs=(e,t,r,o,i,u,a,c)=>{let p=t.format===\"NHWC\",h=p?e[0].dims[3]:e[0].dims[1],d=r[0],y=p?r[2]:r[3],w=p?r[1]:r[2],_=p?r[3]:r[1],v=p&&(h%4===0||h%3===0)&&_%4===0,S=p?_:y*w,A=p?y*w:_,I=[8,8,1],x=o<=8?[4,1,1]:[4,4,1],E=[Math.ceil(S/I[0]/x[0]),Math.ceil(A/I[1]/x[1]),Math.ceil(d/I[2]/x[2])];Ve(\"verbose\",()=>`[conv2d_mm_webgpu] dispatch = ${E}`);let P=v?p&&h%4!==0?3:4:1,O=I[1]*x[1],R=I[0]*x[0],L=Math.max(I[0]*P,I[1]),N=o%O===0,K=i%R===0,Q=u%L===0,he=v?[P,4,4]:[1,1,1],W=[{type:6,data:o},{type:6,data:i},{type:6,data:u},{type:6,data:[t.pads[0],t.pads[1]]},{type:6,data:t.strides},{type:6,data:t.dilations}];xt(t,W),W.push(...Z(e[0].dims,e[1].dims));let se=[\"rank\",\"rank\"];a&&(W.push(...Z(e[2].dims)),se.push(\"rank\")),W.push(...Z(r));let Ce=We=>{let ee=[{name:\"dim_a_outer\",type:\"i32\"},{name:\"dim_b_outer\",type:\"i32\"},{name:\"dim_inner\",type:\"i32\"},{name:\"pad\",type:\"i32\",length:2},{name:\"stride\",type:\"i32\",length:2},{name:\"dilation\",type:\"i32\",length:2}];Ct(t,ee);let ae=v?4:1,Ae=De(e[0].dataType),me=`\\n      fn setOutputAtIndex(flatIndex : i32, value : ${v?`vec4<${Ae}>`:Ae}) {\\n        result[flatIndex] = ${v?`vec4<${Ae}>`:Ae}(value);\\n      }\\n      fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${v?`vec4<${Ae}>`:Ae}) {\\n        let flatIndex = getOutputIndexFromCoords(vec4<i32>(d0, d1, d2, d3));\\n        setOutputAtIndex(flatIndex ${v?\"/ 4\":\"\"}, value);\\n      }`,ie=U(\"x\",e[0].dataType,e[0].dims.length,P===3?1:P),ue=U(\"w\",e[1].dataType,e[1].dims.length,ae),le=[ie,ue],qe=j(\"result\",e[0].dataType,r.length,ae);if(a){let G=U(\"bias\",e[2].dataType,e[2].dims.length,ae);le.push(G),me+=`\\n        fn getBiasByOutputCoords(coords : vec4<i32>) -> ${v?`vec4<${Ae}>`:Ae} {\\n          return bias[coords.${p?\"w\":\"y\"}${v?\"/ 4\":\"\"}];\\n        }`}return`\\n        ${Mn(\"uniforms.result_strides\")}\\n        //struct Uniforms { xShape : vec4<i32>, wShape : vec4<i32>, outShape : vec4<i32>,\\n        //  outShapeStrides: vec3<i32>, filterDims : vec2<i32>, pad : vec2<i32>, stride : vec2<i32>,\\n        //  dilation : vec2<i32>, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };\\n        ${We.registerUniforms(ee).declareVariables(...le,qe)}\\n        ${me}\\n        ${$c(p,N,K,Q,a,t,he[0],he[1],he[2],Ae)}\\n        ${v?Hr(x,I,Ae,void 0,!p,L):Lr(x,I,Ae,void 0,!p,L,!1,void 0,c)}`};return{name:\"Conv2DMatMul\",shaderCache:{hint:`${t.cacheKey};${P};${v};${N};${K};${Q};${O};${R};${L}`,inputDependencies:se},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:W}),getShaderSource:Ce}}});var Mo,eu,tu=Y(()=>{\"use strict\";ye();Se();_e();Uo();Ft();Mo=(e,t,r)=>{let o=e.length>2,i=o?\"value += b[output_channel];\":\"\",u=e[0].dims,a=e[1].dims,c=a[0]/t.group,p=t.format===\"NHWC\",h=Vn(u,a,t.dilations,t.pads,t.strides,p),d=M.size(h),y=[{type:12,data:d},{type:12,data:t.dilations},{type:12,data:[t.strides[0],t.strides[1]]},{type:12,data:[t.pads[0],t.pads[1]]},{type:12,data:c}];xt(t,y),y.push(...Z(u,a));let w=[\"rank\",\"rank\"];o&&(y.push(...Z(e[2].dims)),w.push(\"rank\")),y.push(...Z(h));let _=v=>{let S=j(\"output\",e[0].dataType,h.length),A=De(S.type.tensor),I=St(t,S.type.value,A),x=U(\"x\",e[0].dataType,u.length),E=U(\"w\",e[1].dataType,a.length),P=[x,E];o&&P.push(U(\"b\",e[2].dataType,e[2].dims.length));let O=[{name:\"output_size\",type:\"u32\"},{name:\"dilations\",type:\"u32\",length:t.dilations.length},{name:\"strides\",type:\"u32\",length:2},{name:\"pads\",type:\"u32\",length:2},{name:\"output_channels_per_group\",type:\"u32\"}];return Ct(t,O),`\\n  ${v.registerUniforms(O).declareVariables(...P,S)}\\n\\n  ${v.mainStart()}\\n    ${v.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n    let outputIndices = ${S.offsetToIndices(\"global_idx\")};\\n    let batch: u32 = outputIndices[0];\\n    let output_channel: u32 = outputIndices[${p?3:1}];\\n    let xRCCorner: vec2<u32> = vec2<u32>(outputIndices[${p?1:2}], outputIndices[${p?2:3}]) * uniforms.strides - uniforms.pads;\\n    let group_id: u32 = output_channel / uniforms.output_channels_per_group;\\n\\n    var value: ${S.type.value} = ${S.type.value}(0);\\n    for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) {\\n      let input_channel = group_id * uniforms.w_shape[1] + wInChannel;\\n      for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) {\\n        let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];\\n\\n        if (xHeight < 0u || xHeight >= uniforms.x_shape[${p?1:2}]) {\\n          continue;\\n        }\\n\\n        for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) {\\n          let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];\\n          if (xWidth < 0u || xWidth >= uniforms.x_shape[${p?2:3}]) {\\n            continue;\\n          }\\n\\n          let xVal = ${p?x.get(\"batch\",\"xHeight\",\"xWidth\",\"input_channel\"):x.get(\"batch\",\"input_channel\",\"xHeight\",\"xWidth\")};\\n          let wVal = ${E.get(\"output_channel\",\"wInChannel\",\"wHeight\",\"wWidth\")};\\n          value += xVal*wVal;\\n        }\\n      }\\n    }\\n    ${i}\\n    ${I}\\n    ${S.setByOffset(\"global_idx\",\"value\")}\\n  }`};return{name:\"GroupedConv\",shaderCache:{hint:t.cacheKey,inputDependencies:w},getRunData:()=>({outputs:[{dims:r?r(h):h,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:y}),getShaderSource:_}},eu=(e,t,r)=>{let o=e.length>2,i=Me(r[3]),u=Me(r[2]),a=M.size(r)/i/u,c=[e[0].dims[0],e[0].dims[1],e[0].dims[2],e[0].dims[3]/i],p=[e[1].dims[0],e[1].dims[1],e[1].dims[2],e[1].dims[3]/i],h=[r[0],r[1],r[2],r[3]/i],d=[{type:12,data:a},{type:6,data:[t.strides[0],t.strides[1]]},{type:6,data:[t.pads[0],t.pads[1]]}];xt(t,d),d.push(...Z(c,p,h));let y=(u-1)*t.strides[1]+p[1],w=_=>{let v=j(\"output\",e[0].dataType,h.length,i),S=De(v.type.tensor),A=St(t,v.type.value,S),I=U(\"x\",e[0].dataType,c.length,i),x=U(\"w\",e[1].dataType,p.length,i),E=[I,x];o&&E.push(U(\"b\",e[2].dataType,e[2].dims,i));let P=o?\"value += b[output_channel];\":\"\",O=[{name:\"output_size\",type:\"u32\"},{name:\"strides\",type:\"i32\",length:2},{name:\"pads\",type:\"i32\",length:2}];return Ct(t,O),`\\n  ${_.registerUniforms(O).declareVariables(...E,v)}\\n  ${_.mainStart()}\\n    ${_.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n    let width0 = uniforms.output_shape[3];\\n    let output_channel = global_idx % width0;\\n    var index1 = global_idx / width0;\\n    let width1 = uniforms.output_shape[2] / ${u}u;\\n    let col = (index1 % width1) * ${u}u;\\n    index1 = index1 / width1;\\n    let row = index1 % uniforms.output_shape[1];\\n    let batch = index1 / uniforms.output_shape[1];\\n\\n    let x_corner = vec2<i32>(i32(row), i32(col)) * uniforms.strides - uniforms.pads;\\n\\n    var x_vals: array<${I.type.value}, ${y}>;\\n    var values: array<${v.type.value}, ${u}>;\\n    let input_channel = output_channel;\\n    // Use constant instead of uniform can give better performance for w\\'s height/width.\\n    for (var w_height: u32 = 0u; w_height < ${p[0]}; w_height++) {\\n      let x_height = x_corner.x + i32(w_height);\\n      if (x_height >= 0 && u32(x_height) < uniforms.x_shape[1]) {\\n        for (var i = 0; i < ${y}; i++) {\\n          let x_width = x_corner.y + i;\\n          if (x_width >= 0 && u32(x_width) < uniforms.x_shape[2]) {\\n            x_vals[i] = ${I.get(\"batch\",\"u32(x_height)\",\"u32(x_width)\",\"input_channel\")};\\n          } else {\\n            x_vals[i] = ${I.type.value}(0);\\n          }\\n        }\\n        for (var w_width: u32 = 0u; w_width < ${p[1]}; w_width++) {\\n          let w_val = ${x.get(\"w_height\",\"w_width\",\"0\",\"output_channel\")};\\n          for (var i = 0u; i < ${u}u; i++) {\\n            values[i] = fma(x_vals[i * u32(uniforms.strides[1]) + w_width], w_val, values[i]);\\n          }\\n        }\\n      }\\n    }\\n\\n    for (var i = 0u; i < ${u}u; i++) {\\n      var value = values[i];\\n      ${P}\\n      ${A}\\n      ${v.set(\"batch\",\"row\",\"col + i\",\"output_channel\",\"value\")};\\n    }\\n  }`};return{name:\"GroupedConv-Vectorize\",shaderCache:{hint:`${t.cacheKey};${i};${u};${y};${p[0]};${p[1]}`,inputDependencies:o?[\"rank\",\"rank\",\"type\"]:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:d}),getShaderSource:w}}});var Vo,_c,ru,Wo=Y(()=>{\"use strict\";ye();Se();Fr();_e();Ft();Vo=(e,t,r,o,i=!1)=>{let u=e[0].dims,a=e[1].dims,c=u[u.length-2],p=a[a.length-1],h=u[u.length-1],d=Me(p),y=Me(h),w=Me(c),_=M.size(r)/d/w,v=e.length>2,S=o?o.slice(0,-2):r.slice(0,-2),I=[M.size(S),c,p],x=[{type:12,data:_},{type:12,data:c},{type:12,data:p},{type:12,data:h}];xt(t,x),x.push(...Z(S,u,a)),v&&x.push(...Z(e[2].dims)),x.push(...Z(I));let E=P=>{let O=An(\"batch_dims\",e[0].dataType,S.length),R=U(\"a\",e[0].dataType,u.length,y),L=U(\"b\",e[1].dataType,a.length,d),N=j(\"output\",e[0].dataType,I.length,d),K=De(N.type.tensor),Q=St(t,N.type.value,K),he=[R,L],W=\"\";if(v){let ie=i?d:1;he.push(U(\"bias\",e[2].dataType,e[2].dims.length,ie)),W=`${i?`value += bias[col / ${ie}];`:`value += ${N.type.value}(bias[row + i]);`}`}let se=u.slice(0,-2),Ce=a.slice(0,-2),We=_r(se,S),ee=_r(Ce,S),ae=[{name:\"output_size\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"}];Ct(t,ae);let Ae=(ie,ue)=>{let le=ie.rank,qe=ie.name;if(le===2)return`var ${qe}_indices = ${ie.type.indices}(0u, 0u);`;let G=O.rank,ne=`var ${qe}_indices: ${ie.type.indices};`;for(let xe=le-2-1,Ke=G-1;xe>=0;xe--,Ke--)ne+=`\\n${qe}_indices[${xe}] = ${G>1?`batch_indices[${Ke}]`:\"batch_indices\"};`;return ue.forEach(xe=>{ne+=`\\n${qe}_indices[${xe}] = 0;`}),ne+=`${qe}_indices[${le-2}] = 0u;\\n                     ${qe}_indices[${le-1}] = 0u;`,ne},me=()=>{let ie=`var a_data: ${R.type.value};`;for(let ue=0;ue<y;ue++)ie+=`\\n              let b_data${ue} = b[(b_offset + (k + ${ue}) * uniforms.N + col) / ${d}];`;for(let ue=0;ue<w;ue++){ie+=`a_data = a[(a_offset + (row + ${ue}) * uniforms.K + k) / ${y}];`;for(let le=0;le<y;le++)ie+=`\\n            values[${ue}] = fma(${L.type.value}(a_data${y===1?\"\":`[${le}]`}), b_data${le}, values[${ue}]);\\n`}return ie};return`\\n  ${P.registerUniforms(ae).registerInternalVariables(O).declareVariables(...he,N)}\\n  ${P.mainStart()}\\n    ${P.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n    let col = (global_idx % (uniforms.N / ${d})) * ${d};\\n    var index1 = global_idx / (uniforms.N / ${d});\\n    let stride1 = uniforms.M / ${w};\\n    let row = (index1 % stride1) * ${w};\\n    let batch = index1 / stride1;\\n\\n    ${r.length===2?\"\":`let batch_indices = ${O.offsetToIndices(\"batch\")};`}\\n    ${Ae(R,We)}\\n    let a_offset = ${R.indicesToOffset(\"a_indices\")};\\n    ${Ae(L,ee)}\\n    let b_offset = ${L.indicesToOffset(\"b_indices\")};\\n    var values: array<${N.type.value}, ${w}>;\\n    for (var k: u32 = 0u; k < uniforms.K; k = k + ${y}) {\\n      ${me()}\\n    }\\n    for (var i = 0u; i < ${w}u; i++) {\\n      var value = values[i];\\n      ${W}\\n      ${Q}\\n      let cur_indices = ${N.type.indices}(batch, row + i, col);\\n      let offset = ${N.indicesToOffset(\"cur_indices\")};\\n      ${N.setByOffset(`offset / ${d}`,\"value\")};\\n    }\\n  }\\n  `};return{name:\"MatMulNaive\",shaderCache:{hint:`${t.activation};${d};${y};${w};${i}`,inputDependencies:v?[\"rank\",\"rank\",\"rank\"]:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(_/64)},programUniforms:x}),getShaderSource:E}},_c=e=>{if(!e||e.length!==2)throw new Error(\"MatMul requires 2 inputs.\");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error(\"shared dimension does not match.\")},ru=e=>{_c(e.inputs);let t=It.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error(\"Can\\'t use matmul on the given tensors\");let r=t[t.length-1],o=e.inputs[0].dims[e.inputs[0].dims.length-1];r<8&&o<8?e.compute(Vo(e.inputs,{activation:\"\"},t)):e.compute(Un(e.inputs,{activation:\"\"},t))}});var Vn,No,Sc,nu,Go,xc,Cc,Ho,Uo=Y(()=>{\"use strict\";Se();Js();Fr();tu();Ft();Wo();Sr();Vn=(e,t,r,o,i,u)=>{let a=e[0],c=e.slice(u?1:2,u?3:4),p=c.length,h=t[0],y=t.slice(2).map((v,S)=>v+(v-1)*(r[S]-1)),_=c.map((v,S)=>v+o[S]+o[S+p]).map((v,S)=>Math.floor((v-y[S]+i[S])/i[S]));return _.splice(0,0,a),_.splice(u?3:1,0,h),_},No=[2,3,1,0],Sc=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support conv 1D and 2D\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],o=e[1].dims[1]*t.group;if(r!==o)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[0]))throw new Error(\"invalid bias\");let i=e[0].dims.length-2;if(t.dilations.length!==i)throw new Error(`dilations should be ${i}D`);if(t.strides.length!==i)throw new Error(`strides should be ${i}D`);if(t.pads.length!==i*2)throw new Error(`pads should be ${i*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\")},nu=(e,t)=>{let r=e.kernelShape.slice();for(let u=2;u<t[1].dims.length;++u)r[u-2]===0&&(r[u-2]=t[1].dims[u]);let o=e.pads.slice();nr.adjustPadsBasedOnAutoPad(t[0].dims,e.strides,e.dilations,r,o,e.format===\"NHWC\",e.autoPad);let i=Object.assign({},e);return Object.assign(i,{kernelShape:r,pads:o}),i},Go=e=>{let t=Bn(e),r=e.format,o=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],i=e.dilations,u=e.group,a=e.kernel_shape,c=e.pads,p=e.strides,h=e.w_is_const();return{autoPad:o,format:r,dilations:i,group:u,kernelShape:a,pads:c,strides:p,wIsConst:h,...t,cacheKey:`${e.format};${t.activation};`}},xc=(e,t,r)=>{let o=nu(r,t),i=r.format===\"NHWC\";if(r.group!==1){if(!e.adapterInfo.isArchitecture(\"ampere\")&&i&&t[1].dims[0]===r.group&&t[1].dims[1]===1&&r.dilations[0]===1&&r.dilations[1]===1){let L=Vn(t[0].dims,t[1].dims,r.dilations,o.pads,r.strides,i),N=e.kernelCustomData.wT??e.compute(yt(t[1],No),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=N);let K=[t[0],N];t.length===3&&K.push(t[2]),e.compute(eu(K,o,L),{inputs:K})}else e.compute(Mo(t,o));return}let u=t.length===3,a=t[0].dims[i?1:2],c=t[0].dims[i?2:3],p=t[0].dims[i?3:1],h=t[1].dims[2],d=t[1].dims[3],y=Vn(t[0].dims,t[1].dims,r.dilations,o.pads,r.strides,i),w=y[i?1:2],_=y[i?2:3],v=y[i?3:1],S=i&&h===a&&d===c&&r.pads[0]===0&&r.pads[1]===0;if(S||h===1&&d===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let R=y[0],L,N,K,Q=[];if(i){let se=e.kernelCustomData.wT??e.compute(yt(t[1],No),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=se),S){let Ce=a*c*p;L=t[0].reshape([1,R,Ce]),N=se.reshape([1,Ce,v]),K=[1,R,v]}else L=t[0].reshape([R,a*c,p]),N=se.reshape([1,p,v]),K=[R,w*_,v];Q.push(L),Q.push(N)}else L=t[0].reshape([R,p,a*c]),N=t[1].reshape([1,v,p]),K=[R,v,w*_],Q.push(N),Q.push(L);u&&Q.push(t[2]);let he=K[2],W=Q[0].dims[Q[0].dims.length-1];he<8&&W<8?e.compute(Vo(Q,o,y,K,i),{inputs:Q}):e.compute(Un(Q,o,y,K,i),{inputs:Q});return}let A=!0,I=e.kernelCustomData.wT??e.compute(yt(t[1],No),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=I);let x=[t[0],I];u&&x.push(t[2]);let E=i?w*_:v,P=i?v:w*_,O=h*d*p;e.compute(Qs(x,o,y,E,P,O,u,A),{inputs:x})},Cc=(e,t)=>{let r=t.format===\"NHWC\",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&o.push(e.inputs[2]);let i=[0,t.pads[0],0,t.pads[1]],u=[1].concat(t.strides),a=[1].concat(t.dilations),c=[1].concat(t.kernelShape),p=nu({...t,pads:i,strides:u,dilations:a,kernelShape:c},o);e.compute(Mo(o,p,h=>r?[h[0],h[2],h[3]]:[]))},Ho=(e,t)=>{Sc(e.inputs,t),e.inputs[0].dims.length===3?Cc(e,t):xc(e,e.inputs,t)}});var Ac,ou,iu=Y(()=>{\"use strict\";ye();Lt();_e();Ft();zn();zo();Fr();Ac=(e,t=!1,r,o,i=4)=>{let u=I=>{switch(I){case 1:return\"return w[getIndexFromCoords4D(coord, vec4<i32>(uniforms.w_shape))];\";case 4:return`\\n            let coord1 = vec4<i32>(coordX, coordY, col + 1, rowInner);\\n            let coord2 = vec4<i32>(coordX, coordY, col + 2, rowInner);\\n            let coord3 = vec4<i32>(coordX, coordY, col + 3, rowInner);\\n            let v0 = w[getIndexFromCoords4D(coord, vec4<i32>(uniforms.w_shape))];\\n            let v1 = w[getIndexFromCoords4D(coord1, vec4<i32>(uniforms.w_shape))];\\n            let v2 = w[getIndexFromCoords4D(coord2, vec4<i32>(uniforms.w_shape))];\\n            let v3 = w[getIndexFromCoords4D(coord3, vec4<i32>(uniforms.w_shape))];\\n            return ${o}(v0, v1, v2, v3);\\n            `;default:throw new Error(`innerElementSize ${I} is not supported.`)}},a=e?`\\n      let coord = vec4<i32>(batch, iXR, iXC, xCh);\\n      `:`\\n      let coord = vec4<i32>(batch, xCh, iXR, iXC);\\n      `,c=e?`\\n    let coords = vec4<i32>(\\n      batch,\\n      row / outWidth,\\n      row % outWidth,\\n      col);\\n    `:`\\n    let coords = vec4<i32>(\\n      batch,\\n      row,\\n      col / outWidth,\\n      col % outWidth);\\n    `,p=e?\"i32(uniforms.x_shape[1])\":\"i32(uniforms.x_shape[2])\",h=e?\"i32(uniforms.x_shape[2])\":\"i32(uniforms.x_shape[3])\",d=e?\"row\":\"col\",y=e?\"col\":\"row\",w=`\\n      let inChannels = ${e?\"i32(uniforms.x_shape[3])\":\"i32(uniforms.x_shape[1])\"};\\n      let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n      let outRow = ${d} / outWidth;\\n      let outCol = ${d} % outWidth;\\n\\n      let WRow = ${y} / (uniforms.filter_dims[1] * inChannels);\\n      let WCol = ${y} / inChannels % uniforms.filter_dims[1];\\n      let xR = f32(outRow - uniforms.pads[0] + uniforms.dilations[0] * WRow) / f32(uniforms.strides[0]);\\n      let xC = f32(outCol - uniforms.pads[1] + uniforms.dilations[1] * WCol) / f32(uniforms.strides[1]);\\n      if (xR < 0.0 || xR >= f32(${p}) || fract(xR) > 0.0) {\\n        return ${o}(0.0);\\n      }\\n      if (xC < 0.0 || xC >= f32(${h}) || fract(xC) > 0.0) {\\n        return ${o}(0.0);\\n      }\\n      let iXR = i32(xR);\\n      let iXC = i32(xC);\\n      let xCh = ${y} % inChannels;\\n      ${a}\\n      return x[getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape))/${i}];`,_=e?`\\n      let col = colIn * ${i};\\n      if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {\\n        ${w}\\n      }\\n      return ${o}(0.0);`:`\\n      let col = colIn * ${i};\\n      if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {\\n        ${w}\\n      }\\n      return ${o}(0.0);`,v=`\\n      let col = colIn * ${i};\\n      let inChannels = ${e?\"i32(uniforms.x_shape[3])\":\"i32(uniforms.x_shape[1])\"};\\n      let coordX = uniforms.filter_dims[0] - 1 - row / (uniforms.filter_dims[1] * inChannels);\\n      let coordY = uniforms.filter_dims[1] - 1 - (row / inChannels) % uniforms.filter_dims[1];\\n      if (${e?\"row < uniforms.dim_inner && col < uniforms.dim_b_outer\":\"row < uniforms.dim_inner && col < uniforms.dim_a_outer\"}  && coordX >= 0 && coordY >= 0) {\\n        let rowInner = row % inChannels;\\n        let coord = vec4<i32>(coordX, coordY, col, rowInner);\\n        ${u(i)}\\n      }\\n      return ${o}(0.0);\\n      `,S=St(r,o);return`\\n  fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${o} {\\n    ${e?_:v}\\n  }\\n\\n  fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${o} {\\n    ${e?v:_}\\n  }\\n\\n  fn mm_write(batch: i32, row : i32, colIn : i32, valueInput : ${o}) {\\n    let col = colIn * ${i};\\n    if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {\\n      var value = valueInput;\\n      let outWidth = ${e?\"i32(uniforms.result_shape[2])\":\"i32(uniforms.result_shape[3])\"};\\n      ${c}\\n      ${Dn(t)}\\n      ${S}\\n      result[getIndexFromCoords4D(coords, vec4<i32>(uniforms.result_shape))/${i}] = value;\\n    }\\n  }`},ou=(e,t,r,o,i,u,a,c)=>{let p=t.format===\"NHWC\",h=p?e[0].dims[3]:e[0].dims[1],d=r[0],y=p?r[2]:r[3],w=p?r[1]:r[2],_=p?r[3]:r[1],v=p&&h%4===0&&h%3&&_%4===0,S=p?_:y*w,A=p?y*w:_,I=[8,8,1],x=o<=8?[4,1,1]:[4,4,1],E=[Math.ceil(S/I[0]/x[0]),Math.ceil(A/I[1]/x[1]),Math.ceil(d/I[2]/x[2])];Ve(\"verbose\",()=>`[conv_backprop_mm_webgpu] dispatch = ${E}`);let P=v?4:1,O=Math.max(I[0]*P,I[1]),R=v?4:1,L=[t.kernelShape[p?1:2],t.kernelShape[p?2:3]],N=[L[0]+(t.dilations[0]<=1?0:(L[0]-1)*(t.dilations[0]-1)),L[1]+(t.dilations[1]<=1?0:(L[1]-1)*(t.dilations[1]-1))],K=[N[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),N[1]-1-Math.floor((t.pads[1]+t.pads[3])/2)],Q=[{type:6,data:o},{type:6,data:i},{type:6,data:u},{type:6,data:t.strides},{type:6,data:t.dilations},{type:6,data:L},{type:6,data:K}];xt(t,Q),Q.push(...Z(e[0].dims,e[1].dims));let he=[\"rank\",\"rank\"];a&&(Q.push(...Z(e[2].dims)),he.push(\"rank\")),Q.push(...Z(r));let W=se=>{let Ce=U(\"x\",e[0].dataType,e[0].dims.length,R),We=U(\"w\",e[1].dataType,e[1].dims.length,1),ee=j(\"result\",e[0].dataType,r.length,R),ae=[Ce,We],Ae=\"\";if(a){let ue=U(\"bias\",e[2].dataType,e[2].dims.length,R);ae.push(ue),Ae+=`\\n          fn getBiasByOutputCoords(coords : vec4<i32>) -> ${ue.type.value} {\\n            return bias[coords.${p?\"w\":\"y\"}${v?\"/ 4\":\"\"}];\\n          }`}let me=[{name:\"dim_a_outer\",type:\"i32\"},{name:\"dim_b_outer\",type:\"i32\"},{name:\"dim_inner\",type:\"i32\"},{name:\"strides\",type:\"i32\",length:2},{name:\"dilations\",type:\"i32\",length:2},{name:\"filter_dims\",type:\"i32\",length:L.length},{name:\"pads\",type:\"i32\",length:K.length}];Ct(t,me);let ie=De(e[0].dataType,1);if(ie!==\"f16\"&&ie!==\"f32\")throw new Error(`elemType ${ie} is not supported.`);return`\\n        ${Mn(\"uniforms.result_strides\")}\\n        ${se.registerUniforms(me).declareVariables(...ae,ee)};\\n        ${Ae}\\n        ${Ac(p,a,t,Ce.type.value,P)}\\n        ${v?Hr(x,I,ie,void 0,!p,O):Lr(x,I,ie,void 0,!p,O,!1,void 0,c)}`};return{name:\"Conv2DTransposeMatMul\",shaderCache:{hint:`${t.cacheKey};${x};${I};${v}`,inputDependencies:he},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:E[0],y:E[1],z:E[2]},programUniforms:Q}),getShaderSource:W}}});var Ic,Lo,au=Y(()=>{\"use strict\";ye();Lt();Se();_e();Ic=(e,t,r,o,i,u=!1,a,c,p=!1)=>{let h=p?1:2,d=p?2:3,y=p?3:1,w=u?2:1,_=`\\n  fn setOutputAtIndex(flatIndex : u32, value : ${u?`vec4<${a}>`:a}) {\\n    result[flatIndex] = ${u?`vec4<${a}>`:a}(value);\\n  }`;o&&(_+=`\\n    fn getBiasByOutputCoords(coords : vec4<u32>) -> ${u?`vec4<${a}>`:a} {\\n      return bias[coords.${p?\"w\":\"y\"}${u?\"/ 4\":\"\"}];\\n    }`);let v=u?4:1,S=U(\"W\",t[1].dataType,t[1].dims.length,v),A=U(\"Dy\",t[0].dataType,t[0].dims.length,v),I=[A,S];o&&I.push(U(\"bias\",t[2].dataType,[r[y]].length,v));let x=j(\"result\",t[0].dataType,r.length,v),E=`{\\n        let batch: u32 = ${i?\"global_id.z\":\"workgroup_id.z\"} / uniforms.result_shape[1];\\n        let r = ${i?\"global_id.z\":\"workgroup_id.z\"} % uniforms.result_shape[1];\\n        let c = ${i?\"global_id.y\":\"workgroup_id.y\"} * ${w};\\n        let d1: u32 = ${i?\"global_id.x\":\"workgroup_id.x\"} * 4;\\n\\n        let dyCorner = vec2<i32>(i32(r), i32(c)) - vec2<i32>(uniforms.pads);\\n\\n        // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\\n        // ? = to be determined. : = across all values in that axis.\\n        var dotProd: array<vec4<${a}>, ${w}>;\\n        for (var i = 0; i < ${w}; i++) {\\n          dotProd[i] = vec4<${a}>(0.0);\\n        }\\n        for (var wR: u32 = 0; wR < uniforms.filter_dims[0]; wR = wR + 1) {\\n          var dyR = (${a}(dyCorner.x) + ${a}(wR)) / ${a}(uniforms.strides.x);\\n          let wRPerm = uniforms.filter_dims[0] - 1 - wR;\\n          if (dyR < 0.0 || dyR >= ${a}(uniforms.Dy_shape[1]) ||\\n              fract(dyR) > 0.0 || wRPerm < 0) {\\n            continue;\\n          }\\n          let idyR: u32 = u32(dyR);\\n\\n          for (var wC: u32 = 0; wC < uniforms.filter_dims[1]; wC = wC + 1) {\\n            let dyC = (${a}(dyCorner.y) + ${a}(wC)) / ${a}(uniforms.strides.y);\\n            let dyC2 = (${a}(dyCorner.y) + 1.0 + ${a}(wC)) / ${a}(uniforms.strides.y);\\n            let wCPerm = uniforms.filter_dims[1] - 1 - wC;\\n            if (wCPerm < 0) {\\n              continue;\\n            }\\n            var bDyCVal = true;\\n            var bDyCVal2 = true;\\n            if (dyC < 0.0 || dyC >= ${a}(uniforms.Dy_shape[2]) ||\\n                fract(dyC) > 0.0) {\\n              bDyCVal = false;\\n            }\\n            if (dyC2 < 0.0 || dyC2 >= ${a}(uniforms.Dy_shape[2]) ||\\n                fract(dyC2) > 0.0) {\\n              bDyCVal2 = false;\\n            }\\n\\n            let idyC: u32 = u32(dyC);\\n            let idyC2: u32 = u32(dyC2);\\n            if (bDyCVal && bDyCVal2) {\\n              let d2Length = uniforms.Dy_shape[3];\\n              for (var d2 :u32 = 0; d2 < d2Length; d2 = d2 + 4) {\\n                let wValue0 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\\n                let wValue1 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\\n                let wValue2 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\\n                let wValue3 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\\n\\n                var xValue = ${A.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\\n                let tmpval = vec4<${a}>(dot(xValue, wValue0),\\n                                      dot(xValue, wValue1),\\n                                      dot(xValue, wValue2),\\n                                      dot(xValue, wValue3));\\n                dotProd[0] = dotProd[0] + tmpval;\\n\\n                xValue =  ${A.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\\n\\n                dotProd[1] = dotProd[1] + vec4<${a}>(dot(xValue, wValue0),\\n                                                    dot(xValue, wValue1),\\n                                                    dot(xValue, wValue2),\\n                                                    dot(xValue, wValue3));\\n              }\\n            } else if (bDyCVal) {\\n              let d2Length = uniforms.Dy_shape[${y}];\\n              for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\\n                let wValue0 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\\n                let wValue1 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\\n                let wValue2 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\\n                let wValue3 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\\n\\n                var xValue = ${A.get(\"batch\",\"idyR\",\"idyC\",\"d2\")};\\n                let tmpval = vec4<${a}>(dot(xValue, wValue0),\\n                                      dot(xValue, wValue1),\\n                                      dot(xValue, wValue2),\\n                                      dot(xValue, wValue3));\\n                dotProd[0] = dotProd[0] + tmpval;\\n              }\\n            } else if (bDyCVal2) {\\n              let d2Length = uniforms.Dy_shape[3];\\n              for (var d2: u32 = 0; d2 < d2Length; d2 = d2 + 4) {\\n                let wValue0 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1\",\"d2\")};\\n                let wValue1 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 1\",\"d2\")};\\n                let wValue2 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 2\",\"d2\")};\\n                let wValue3 = ${S.get(\"u32(wRPerm)\",\"u32(wCPerm)\",\"d1 + 3\",\"d2\")};\\n\\n                var xValue = ${A.get(\"batch\",\"idyR\",\"idyC2\",\"d2\")};\\n                let tmpval = vec4<${a}>(dot(xValue, wValue0),\\n                                      dot(xValue, wValue1),\\n                                      dot(xValue, wValue2),\\n                                      dot(xValue, wValue3));\\n                dotProd[1] = dotProd[1] + tmpval;\\n              }\\n            }\\n          }\\n        }\\n\\n        for (var i: u32 = 0; i < ${w}; i = i + 1) {\\n          let value = dotProd[i] + ${o?\"bias[c+i]\":`vec4<${a}>(0.0)`};\\n          ${x.set(\"batch\",\"r\",\"c + i\",\"d1\",\"value\")};\\n        }\\n      }`,P=`\\n          let outputIndices = ${x.offsetToIndices(\"global_idx\")};\\n          let batch = ${x.indicesGet(\"outputIndices\",0)};\\n          let d1 = ${x.indicesGet(\"outputIndices\",y)};\\n          let r = ${x.indicesGet(\"outputIndices\",h)};\\n          let c = ${x.indicesGet(\"outputIndices\",d)};\\n          let dyCorner = vec2<i32>(i32(r), i32(c)) - uniforms.pads;\\n          let dyRCorner = dyCorner.x;\\n          let dyCCorner = dyCorner.y;\\n          let groupId = d1 / uniforms.output_channels_per_group;\\n          let wOutChannel = d1 - groupId * uniforms.output_channels_per_group;\\n          // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\\n          // ? = to be determined. : = across all values in that axis.\\n          var dotProd = ${a}(0.0);\\n          for (var wR: u32 = 0; wR < uniforms.effective_filter_dims.x; wR = wR + 1) {\\n            if (wR % uniforms.dilations.x != 0) {\\n              continue;\\n            }\\n            let dyR = (${a}(dyRCorner) + ${a}(wR)) / ${a}(uniforms.strides[0]);\\n            let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x;\\n            if (dyR < 0.0 || dyR >= ${a}(uniforms.Dy_shape[${h}]) || fract(dyR) > 0.0 ||\\n                wRPerm < 0) {\\n              continue;\\n            }\\n            let idyR: u32 = u32(dyR);\\n\\n            for (var wC: u32 = 0; wC < uniforms.effective_filter_dims.y; wC = wC + 1) {\\n              if (wC % uniforms.dilations.y != 0) {\\n                continue;\\n              }\\n              let dyC = (${a}(dyCCorner) + ${a}(wC)) / ${a}(uniforms.strides.y);\\n              let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y;\\n              if (dyC < 0.0 || dyC >= ${a}(uniforms.Dy_shape[${d}]) ||\\n                  fract(dyC) > 0.0 || wCPerm < 0) {\\n                continue;\\n              }\\n              let idyC: u32 = u32(dyC);\\n              var inputChannel = groupId * uniforms.input_channels_per_group;\\n              for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group; d2 = d2 + 1) {\\n                let xValue = ${p?A.get(\"batch\",\"idyR\",\"idyC\",\"inputChannel\"):A.get(\"batch\",\"inputChannel\",\"idyR\",\"idyC\")};\\n                let wValue = ${S.get(\"inputChannel\",\"wOutChannel\",\"u32(wRPerm)\",\"u32(wCPerm)\")};\\n                dotProd = dotProd + xValue * wValue;\\n                inputChannel = inputChannel + 1;\\n              }\\n            }\\n          }\\n          let value = dotProd + ${o?\"bias[d1]\":`${a}(0.0)`};\\n          ${x.setByOffset(\"global_idx\",\"value\")};\\n        `;return`\\n  ${e.registerUniforms(c).declareVariables(...I,x)}\\n  ${_}\\n\\n    ${e.mainStart()}\\n    ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")};\\n  ${u?E:P}}`},Lo=(e,t,r)=>{let o=e.length>2,i=t.outputShape,u=M.size(i),a=[Math.ceil(u/64),1,1];Ve(\"verbose\",()=>`[conv2d_backprop_webgpu] dispatch = ${a}`);let c=t.format===\"NHWC\",p=[\"rank\",\"rank\"],h=[t.strides[0],t.strides[1]],d=[t.kernelShape[c?1:2],t.kernelShape[c?2:3]],y=[t.dilations[0],t.dilations[1]],w=[d[0]+(t.dilations[0]<=1?0:(t.kernelShape[c?1:2]-1)*(t.dilations[0]-1)),d[1]+(t.dilations[1]<=1?0:(t.kernelShape[c?2:3]-1)*(t.dilations[1]-1))],_=[w[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),w[1]-1-Math.floor(t.pads[1]+t.pads[3])/2],v=!1,S=t.group,A=e[1].dims,I=A[0]/S,x=A[1],E=[{type:12,data:u},{type:12,data:h},{type:12,data:d},{type:12,data:y},{type:12,data:w},{type:6,data:_},{type:12,data:I},{type:12,data:x},...Z(e[0].dims,e[1].dims)];o&&(E.push(...Z(e[2].dims)),p.push(\"rank\")),E.push(...Z(i));let P=a[1]===1&&a[2]===1,O=R=>{let L=[{name:\"output_size\",type:\"u32\"},{name:\"strides\",type:\"u32\",length:h.length},{name:\"filter_dims\",type:\"u32\",length:d.length},{name:\"dilations\",type:\"u32\",length:d.length},{name:\"effective_filter_dims\",type:\"u32\",length:w.length},{name:\"pads\",type:\"i32\",length:_.length},{name:\"input_channels_per_group\",type:\"u32\"},{name:\"output_channels_per_group\",type:\"u32\"}],N=De(e[0].dataType);return`${Ic(R,e,i,o,P,v,N,L,c)}`};return{name:\"ConvTranspose2D\",shaderCache:{hint:`${t.cacheKey};`,inputDependencies:p},getRunData:()=>({dispatchGroup:{x:a[0],y:a[1],z:a[2]},outputs:[{dims:r?r(i):i,dataType:e[0].dataType}],programUniforms:E}),getShaderSource:O}}});var Tc,Ec,Pc,su,uu,kc,Oc,Rc,Bc,du,lu=Y(()=>{\"use strict\";iu();au();Ft();Sr();Tc=(e,t,r,o,i,u)=>(e-1)*t+r+(o-1)*i+1-u,Ec=(e,t,r,o,i)=>{let u=Math.floor(e/2);t===\"SAME_UPPER\"?(r[o]=u,r[i]=e-u):t===\"SAME_LOWER\"&&(r[o]=e-u,r[i]=u)},Pc=(e,t,r,o,i,u,a,c,p,h)=>{let d=e.length-2,y=h.length===0;if(p.length===0)for(let v=0;v<d;++v)p.push(0);let w=e[0],_=t[c?3:1]*i;for(let v=0,S=e.length-d-(c?1:0);v<d;++v,++S){let A=e[S],I=y?A*a[v]:h[v],x=Tc(A,a[v],u[v],t[S],r[v],I);Ec(x,o,u,v,v+d),y&&h.push(a[v]*(A-1)+p[v]+(t[S]-1)*r[v]+1-u[v]-u[v+d])}h.splice(0,0,w),h.splice(c?3:1,0,_)},su=(e,t)=>{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((y,w)=>y*w,1)===0){r.length=0;for(let y=2;y<t[1].dims.length;++y)r.push(t[1].dims[y])}let o=e.format===\"NHWC\";r.splice(0,0,t[1].dims[0]),r.splice(o?3:1,0,t[1].dims[1]);let i=e.pads.slice(),u=e.outputShape.slice(),a=e.outputPadding.slice(),c=t[0].dims,p=e.dilations.slice();if(p.reduce((y,w)=>y+w,0)===0){let y=t[0].dims.length-2;p=new Array(y).fill(1)}let h=e.strides.slice();if(h.reduce((y,w)=>y+w,0)===0){let y=t[0].dims.length-2;h=new Array(y).fill(1)}Pc(c,r,p,e.autoPad,e.group,i,h,o,a,u);let d=Object.assign({},e);return Object.assign(d,{kernelShape:r,pads:i,outputPadding:a,outputShape:u,dilations:p,strides:h}),d},uu=e=>{let t=Bn(e),r=e.format,o=[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][typeof e.autoPad>\"u\"?0:e.autoPad],i=e.dilations,u=e.group,a=e.kernelShape,c=e.pads,p=e.strides,h=e.wIsConst(),d=e.outputPadding,y=e.outputShape;return{autoPad:o,format:r,dilations:i,group:u,kernelShape:a,outputPadding:d,outputShape:y,pads:c,strides:p,wIsConst:h,...t,cacheKey:`${e.format};${t.activation};`}},kc=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error(\"Conv requires 2 or 3 inputs\");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error(\"currently only support 2-dimensional conv\");if(e[0].dims.length!==e[1].dims.length)throw new Error(\"filter does not have same dimension as input\");let r=e[0].dims[t.format===\"NHWC\"?e[0].dims.length-1:1],o=e[1].dims[0];if(r!==o)throw new Error(\"FILTER_IN_CHANNEL should be equal to DATA_CHANNEL\");let i=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==i))throw new Error(\"invalid bias\");let u=e[0].dims.length-2;if(t.dilations.reduce((d,y)=>d+y,0)>0&&t.dilations.length!==u)throw new Error(`dilations should be ${u}D`);if(t.strides.reduce((d,y)=>d+y,0)>0&&t.strides.length!==u)throw new Error(`strides should be ${u}D`);if(t.pads.reduce((d,y)=>d+y,0)>0&&t.pads.length!==u*2)throw new Error(`pads should be ${u*2}D`);if(t.outputPadding.length!==u&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${u}D`);if(t.kernelShape.reduce((d,y)=>d+y,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error(\"invalid kernel shape\");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error(\"invalid output shape\")},Oc=[2,3,1,0],Rc=(e,t,r)=>{let o=su(r,t),i=r.format===\"NHWC\",u=o.outputShape,a=u[i?3:1],c=t[0].dims[i?3:1];if(o.group!==1||a===1&&c===1){e.compute(Lo(t,o));return}let p=u[i?1:2],h=u[i?2:3],d=t[1].dims[2],y=t[1].dims[3],w=i?p*h:a,_=i?a:p*h,v=d*y*c,S=!0,A=e.kernelCustomData.wT??e.compute(yt(t[1],Oc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=A);let I=[t[0],A],x=t.length===3;x&&(!i&&t[2].dims.length===1?I.push(t[2].reshape([t[2].dims[0],1,1])):I.push(t[2])),e.compute(ou(I,o,u,w,_,v,x,S),{inputs:I})},Bc=(e,t)=>{let r=t.format===\"NHWC\",o=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&o.push(e.inputs[2]);let i=t.kernelShape;(i.length===0||i[0]===0)&&(i=[e.inputs[1].dims[2]]);let u=t.dilations;(u.length===0||u[0]===0)&&(u=[1]);let a=t.strides;(a.length===0||a[0]===0)&&(a=[1]);let c=t.pads;c.length===0&&(c=[0,0]),c=[0,c[0],0,c[1]],a=[1].concat(a),u=[1].concat(u),i=[1].concat(i);let p=su({...t,pads:c,strides:a,dilations:u,kernelShape:i},o);e.compute(Lo(o,p,h=>r?[h[0],h[2],h[3]]:[h[0],h[1],h[3]]))},du=(e,t)=>{kc(e.inputs,t),e.inputs[0].dims.length===3?Bc(e,t):Rc(e,e.inputs,t)}});var Dc,cu,pu,mu=Y(()=>{\"use strict\";ye();Se();Ze();_e();Dc=(e,t,r,o)=>{let i=M.size(t),u=t.length,a=U(\"input\",e,u),c=j(\"output\",e,u),p=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),h=M.normalizeAxis(p,u),d=y=>{let w=` i32(${a.indicesGet(\"inputIndices\",\"uniforms.axis\")}) `,_=fe(\"uniforms.input_shape\",\"uniforms.axis\",u),v=o.reverse?w+(o.exclusive?\" + 1\":\"\"):\"0\",S=o.reverse?_:w+(o.exclusive?\"\":\" + 1\");return`\\n                ${y.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axis\",\"u32\").declareVariables(a,c)}\\n                ${y.mainStart()}\\n                  ${y.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n                  var inputIndices = ${c.offsetToIndices(\"global_idx\")};\\n                  var sum = ${c.type.value}(0);\\n                  let first : i32 = ${v};\\n                  let last : i32 = ${S};\\n                  for (var i : i32 = first; i < last; i++) {\\n                    ${a.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(i)\")};\\n                    sum = sum + ${a.getByIndices(\"inputIndices\")};\\n                  }\\n                  ${c.setByOffset(\"global_idx\",\"sum\")};\\n                }`};return{name:\"CumSum\",shaderCache:{hint:o.cacheKey,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:[{type:12,data:i},{type:12,data:h},...Z(t,t)]}),getShaderSource:d}},cu=(e,t)=>{let r=e.inputs[0].dims,o=e.inputs[0].dataType,i=e.inputs[1];e.compute(Dc(o,r,i,t),{inputs:[0]})},pu=e=>{let t=e.exclusive===1,r=e.reverse===1;return ve({exclusive:t,reverse:r})}});var zc,Mc,Uc,fu,hu,gu=Y(()=>{\"use strict\";ye();Se();Ze();_e();zc=e=>{if(!e||e.length!==1)throw new Error(\"DepthToSpace requires 1 input.\");if(e[0].dims.length!==4)throw new Error(\"DepthToSpace requires 4D input.\")},Mc=(e,t,r,o)=>{let i=[];i.push(`fn perm(i: ${o.type.indices}) -> ${r.type.indices} {\\n    var a: ${r.type.indices};`);for(let u=0;u<t;++u)i.push(r.indicesSet(\"a\",e[u],`i[${u}]`));return i.push(\"return a;}\"),i.join(`\\n`)},Uc=(e,t)=>{let r,o,i,u,a,c,p=t.format===\"NHWC\",h=t.blocksize,d=t.mode===\"DCR\";p?([r,o,i,u]=e.dims,a=d?[r,o,i,h,h,u/h**2]:[r,o,i,u/h**2,h,h],c=d?[0,1,3,2,4,5]:[0,1,4,2,5,3]):([r,o,i,u]=[e.dims[0],e.dims[2],e.dims[3],e.dims[1]],a=d?[r,h,h,u/h**2,o,i]:[r,u/h**2,h,h,o,i],c=d?[0,3,4,1,5,2]:[0,1,4,2,5,3]);let y=e.reshape(a),w=y.dims.length,_=e.dataType,v=U(\"a\",_,w),S=j(\"output\",_,w),A=I=>`\\n  ${I.registerUniform(\"output_size\",\"u32\").declareVariables(v,S)}\\n\\n  ${Mc(c,w,v,S)}\\n\\n  ${I.mainStart()}\\n    ${I.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n    let indices = ${S.offsetToIndices(\"global_idx\")};\\n    let aIndices = perm(indices);\\n\\n    ${S.setByOffset(\"global_idx\",v.getByIndices(\"aIndices\"))}\\n  }`;return{name:\"DepthToSpace\",shaderCache:{hint:`${e.dims};${t.blocksize};${t.mode}`,inputDependencies:[\"rank\"]},getRunData:I=>{let x=p?[r,o*h,i*h,u/h**2]:[r,u/h**2,o*h,i*h],E=M.size(x),P=y.dims,O=M.sortBasedOnPerm(P,c);return{outputs:[{dims:x,dataType:I[0].dataType}],dispatchGroup:{x:Math.ceil(E/64)},programUniforms:[{type:12,data:E},...Z(P,O)]}},getShaderSource:A}},fu=(e,t)=>{zc(e.inputs),e.compute(Uc(e.inputs[0],t))},hu=e=>ve({blocksize:e.blocksize,mode:e.mode,format:e.format})});var Fo,Wn,yu,Vc,Wc,qo,jo,bu,Nc,wu,vu,$u=Y(()=>{\"use strict\";ye();Se();Ze();_e();Fo=\"[a-zA-Z]|\\\\\\\\.\\\\\\\\.\\\\\\\\.\",Wn=\"(\"+Fo+\")+\",yu=\"^\"+Wn+\"$\",Vc=\"(\"+Wn+\",)*\"+Wn,Wc=\"^\"+Vc+\"$\",qo=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let o=this.symbolToIndices.get(t);o===void 0?o=[r]:o.push(r),this.symbolToIndices.set(t,o)}},jo=class{constructor(t,r){this.equation=r;this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[o,i]=r.includes(\"->\")?r.split(\"->\",2):[r,\"\"];if(!o.match(RegExp(Wc)))throw new Error(\"Invalid LHS term\");if(o.split(\",\").forEach((c,p)=>{let h=t[p].dims.slice();if(!c.match(RegExp(yu)))throw new Error(\"Invalid LHS term\");let d=this.processTerm(c,!0,h,p);this.lhs.push(d)}),i===\"\")i+=[...this.symbolToInfo.entries()].filter(([c,p])=>p.count===1||c===\"...\").map(([c])=>c).join(\"\");else if(!i.match(RegExp(Wn)))throw new Error(\"Invalid RHS\");i.match(RegExp(Fo,\"g\"))?.forEach(c=>{if(c===\"...\")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let p=this.symbolToInfo.get(c);if(p===void 0)throw new Error(\"Invalid RHS symbol\");this.outputDims.push(p.dimValue)}}),this.rhs=this.processTerm(i,!1,this.outputDims)}addSymbol(t,r,o){let i=this.symbolToInfo.get(t);if(i!==void 0){if(i.dimValue!==r&&i.count!==1)throw new Error(\"Dimension mismatch\");i.count++,i.inputIndices.push(o)}else i={count:1,dimValue:r,inputIndices:[o]};this.symbolToInfo.set(t,i)}processTerm(t,r,o,i=-1){let u=o.length,a=!1,c=[],p=0;if(!t.match(RegExp(yu))&&!r&&t!==\"\")throw new Error(\"Invalid LHS term\");let h=t.match(RegExp(Fo,\"g\")),d=new qo(i);return h?.forEach((y,w)=>{if(y===\"...\"){if(a)throw new Error(\"Only one ellipsis is allowed per input term\");a=!0;let _=u-h.length+1;if(_<0)throw new Error(\"Ellipsis out of bounds\");if(c=o.slice(p,p+_),this.hasEllipsis){if(this.ellipsisDims.length!==c.length||this.ellipsisDims.toString()!==c.toString())throw new Error(\"Ellipsis dimensions mismatch\")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=c;else throw new Error(\"Ellipsis must be specified in the LHS\");for(let v=0;v<c.length;v++){let S=String.fromCharCode(\"0\".charCodeAt(0)+v);d.addSymbol(S,w+v),this.addSymbol(S,o[p++],i)}}else d.addSymbol(y,w+(this.hasEllipsis?this.ellipsisDims.length-1:0)),this.addSymbol(y,o[p++],i)}),d}},bu=e=>e+\"_max\",Nc=(e,t,r,o)=>{let u=e.map(d=>d.length).map((d,y)=>U(`input${y}`,t,d)),a=M.size(o),c=j(\"output\",t,o.length),p=[...r.symbolToInfo.keys()].filter(d=>!r.rhs.symbolToIndices.has(d)),h=d=>{let y=[],w=\"var prod = 1.0;\",_=\"var sum = 0.0;\",v=\"sum += prod;\",S=[],A=[],I=[],x=[],E=r.symbolToInfo.size===r.rhs.symbolToIndices.size;r.symbolToInfo.forEach((O,R)=>{if(r.rhs.symbolToIndices.has(R)){let L=r.rhs.symbolToIndices.get(R)?.[0];L!==void 0&&r.lhs.forEach((N,K)=>{if(O.inputIndices.includes(K)){let Q=N.symbolToIndices.get(R);if(Q===void 0)throw new Error(\"Invalid symbol error\");Q.forEach(he=>{y.push(`${u[K].indicesSet(`input${K}Indices`,he,c.indicesGet(\"outputIndices\",L))}`)})}})}else r.lhs.forEach((L,N)=>{if(O.inputIndices.includes(N)){let K=L.symbolToIndices.get(R);if(K===void 0)throw new Error(\"Invalid symbol error\");K.forEach(Q=>{S.push(`${u[N].indicesSet(`input${N}Indices`,Q,`${R}`)}`)}),x.push(`prod *= ${u[N].getByIndices(`input${N}Indices`)};`)}}),A.push(`for(var ${R}: u32 = 0; ${R} < uniforms.${bu(R)}; ${R}++) {`),I.push(\"}\")});let P=E?[...y,`let sum = ${u.map((O,R)=>O.getByIndices(`input${R}Indices`)).join(\" * \")};`]:[...y,_,...A,...S,w,...x,v,...I];return`\\n            ${d.registerUniforms(p.map(O=>({name:`${bu(O)}`,type:\"u32\"}))).registerUniform(\"outputSize\",\"u32\").declareVariables(...u,c)}\\n\\n            ${d.mainStart()}\\n            ${d.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n            var outputIndices = ${c.offsetToIndices(\"global_idx\")};\\n            ${u.map((O,R)=>`var input${R}Indices: ${u[R].type.indices};`).join(`\\n`)}\\n            ${P.join(`\\n`)};\\n            ${c.setByOffset(\"global_idx\",\"sum\")};\\n          }`};return{name:\"Einsum\",shaderCache:{hint:r.equation,inputDependencies:e.map(()=>\"rank\")},getRunData:()=>{let d=p.filter(w=>r.symbolToInfo.has(w)).map(w=>({type:12,data:r.symbolToInfo.get(w)?.dimValue||0}));d.push({type:12,data:a});let y=e.map((w,_)=>[...Z(w)]).reduce((w,_)=>w.concat(_),d);return y.push(...Z(o)),{outputs:[{dims:o,dataType:t}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:y}},getShaderSource:h}},wu=(e,t)=>{let r=new jo(e.inputs,t.equation),o=r.outputDims,i=e.inputs.map((u,a)=>u.dims);e.compute(Nc(i,e.inputs[0].dataType,r,o))},vu=e=>{let t=e.equation.replace(/\\\\s+/g,\"\");return ve({equation:t})}});var Gc,_u,Hc,Lc,Su,xu=Y(()=>{\"use strict\";ye();Se();_e();Gc=e=>{if(!e||e.length!==2)throw new Error(\"Expand requires 2 input.\");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=r.length<t.length?0:r.length-t.length,i=t.length<r.length?0:t.length-r.length;for(;o<r.length&&i<t.length;++o,++i)if(r[o]!==t[i]&&r[o]!==1&&t[i]!==1)throw new Error(\"Expand requires shape to be broadcastable to input\")},_u=(e,t)=>{let r=e.length-t.length,o=[];for(let i=0;i<r;++i)o.push(e[i]);for(let i=0;i<t.length;++i)o.push(t[i]===1?e[i+r]:t[i]);return o},Hc=(e,t)=>e.length>t.length?_u(e,t):_u(t,e),Lc=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),o=Hc(t,r),i=e[0].dataType,u=i===9?4:1,a=Math.ceil(M.size(o)/u),c=h=>{let d=U(\"input\",i,t.length,u),y=j(\"output\",i,o.length,u),w;if(i===9){let _=(v,S,A=\"\")=>`\\n          let outputIndices${S} = ${y.offsetToIndices(`outputOffset + ${S}u`)};\\n          let offset${S} = ${d.broadcastedIndicesToOffset(`outputIndices${S}`,y)};\\n          let index${S} = offset${S} / 4u;\\n          let component${S} = offset${S} % 4u;\\n          ${v}[${S}] = ${A}(${d.getByOffset(`index${S}`)}[component${S}]);\\n        `;w=`\\n        let outputOffset = global_idx * ${u};\\n        var data = vec4<u32>(0);\\n        ${_(\"data\",0,\"u32\")}\\n        ${_(\"data\",1,\"u32\")}\\n        ${_(\"data\",2,\"u32\")}\\n        ${_(\"data\",3,\"u32\")}\\n        ${y.setByOffset(\"global_idx\",\"data\")}\\n      }`}else w=`\\n        let outputIndices = ${y.offsetToIndices(\"global_idx\")};\\n        let inputOffset = ${d.broadcastedIndicesToOffset(\"outputIndices\",y)};\\n        ${y.setByOffset(\"global_idx\",d.getByOffset(\"inputOffset\"))}\\n      }`;return`\\n    ${h.registerUniform(\"vec_size\",\"u32\").declareVariables(d,y)}\\n    ${h.mainStart()}\\n    ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n    ${w}`},p=[{type:12,data:a},...Z(t,o)];return{name:\"Expand\",shaderCache:{hint:`${o.length}`,inputDependencies:[\"rank\"]},getShaderSource:c,getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p})}},Su=e=>{Gc(e.inputs),e.compute(Lc(e.inputs),{inputs:[0]})}});var Fc,Cu,Au=Y(()=>{\"use strict\";ye();Se();_e();Rn();Fc=e=>{let t=e[0].dataType,r=M.size(e[0].dims),o=M.size(e[1].dims),i=o%4===0,u=a=>{let c=U(\"x\",t,[1],4),p=U(\"bias\",t,[1],4),h=j(\"y\",t,[1],4),d=[{name:\"output_vec_size\",type:\"u32\"},{name:\"bias_size\",type:\"u32\"}],y=_=>`\\n      let bias${_}_offset: u32 = (global_idx * 4 + ${_}) % uniforms.bias_size;\\n      let bias${_} = ${p.getByOffset(`bias${_}_offset / 4`)}[bias${_}_offset % 4];`,w=i?`\\n      let bias = ${p.getByOffset(\"global_idx % (uniforms.bias_size / 4)\")};`:`${y(0)}${y(1)}${y(2)}${y(3)}\\n      let bias = ${c.type.value}(bias0, bias1, bias2, bias3);`;return`${a.registerUniforms(d).declareVariables(c,p,h)}\\n\\n    ${Bo(et(t))}\\n\\n    ${a.mainStart(or)}\\n      ${a.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_vec_size\")}\\n\\n      let x = ${c.getByOffset(\"global_idx\")};\\n      ${w}\\n      let x_in = x + bias;\\n      ${h.setByOffset(\"global_idx\",Do(\"x_in\"))}\\n    }`};return{name:\"FastGeluWithBias\",shaderCache:{hint:`${i}`,inputDependencies:[\"type\",\"type\"]},getShaderSource:u,getRunData:a=>({outputs:[{dims:a[0].dims,dataType:a[0].dataType}],programUniforms:[{type:12,data:Math.ceil(r/4)},{type:12,data:o}],dispatchGroup:{x:Math.ceil(r/or/4)}})}},Cu=e=>{e.inputs.length<2||M.size(e.inputs[1].dims)===0?Bs(e):e.compute(Fc(e.inputs))}});var qc,jc,Iu,Tu,Eu=Y(()=>{\"use strict\";ye();Se();Ze();_e();qc=e=>{if(!e||e.length!==2)throw new Error(\"Gather requires 2 inputs.\")},jc=(e,t)=>{let r=e[0].dims,o=e[1].dims,i=r.length,u=M.normalizeAxis(t.axis,i),a=r.slice(0);a.splice(u,1,...o);let c=r[u],p=e[0].dataType===9?4:1,h=Math.ceil(M.size(a)/p),d=[{type:12,data:h},{type:6,data:c},{type:12,data:u},...Z(e[0].dims,e[1].dims,a)],y=w=>{let _=U(\"data\",e[0].dataType,e[0].dims.length,p),v=U(\"inputIndices\",e[1].dataType,e[1].dims.length),S=j(\"output\",e[0].dataType,a.length,p),A=x=>{let E=o.length,P=`var indicesIndices${x}  = ${v.type.indices}(0);`;for(let O=0;O<E;O++)P+=`${E>1?`indicesIndices${x}[${O}]`:`indicesIndices${x}`} = ${a.length>1?`outputIndices${x}[uniforms.axis + ${O}]`:`outputIndices${x}`};`;P+=`\\n          var idx${x} = ${v.getByIndices(`indicesIndices${x}`)};\\n          if (idx${x} < 0) {\\n            idx${x} = idx${x} + uniforms.axisDimLimit;\\n          }\\n          var dataIndices${x} : ${_.type.indices};\\n        `;for(let O=0,R=0;O<i;O++)O===u?(P+=`${i>1?`dataIndices${x}[${O}]`:`dataIndices${x}`} = u32(idx${x});`,R+=E):(P+=`${i>1?`dataIndices${x}[${O}]`:`dataIndices${x}`} = ${a.length>1?`outputIndices${x}[${R}]`:`outputIndices${x}`};`,R++);return P},I;if(e[0].dataType===9){let x=(E,P,O=\"\")=>`\\n          let outputIndices${P} = ${S.offsetToIndices(`outputOffset + ${P}u`)};\\n          ${A(P)};\\n          let offset${P} = ${_.indicesToOffset(`dataIndices${P}`)};\\n          let index${P} = offset${P} / 4u;\\n          let component${P} = offset${P} % 4u;\\n          ${E}[${P}] = ${O}(${_.getByOffset(`index${P}`)}[component${P}]);\\n        `;I=`\\n        let outputOffset = global_idx * ${p};\\n        var value = vec4<u32>(0);\\n        ${x(\"value\",0,\"u32\")}\\n        ${x(\"value\",1,\"u32\")}\\n        ${x(\"value\",2,\"u32\")}\\n        ${x(\"value\",3,\"u32\")}\\n        ${S.setByOffset(\"global_idx\",\"value\")}\\n      `}else I=`\\n      let outputIndices = ${S.offsetToIndices(\"global_idx\")};\\n      ${A(\"\")};\\n      let value = ${_.getByIndices(\"dataIndices\")};\\n      ${S.setByOffset(\"global_idx\",\"value\")};\\n      `;return`\\n      ${w.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(_,v,S)}\\n      ${w.mainStart()}\\n        ${w.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n        ${I}\\n      }`};return{name:\"Gather\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:a,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:d}),getShaderSource:y}},Iu=e=>ve({axis:e.axis}),Tu=(e,t)=>{let r=e.inputs;qc(r),e.compute(jc(e.inputs,t))}});var Kc,Yc,Pu,ku,Ou=Y(()=>{\"use strict\";ye();Se();Ze();_e();Kc=e=>{if(!e||e.length!==2)throw new Error(\"GatherElements requires 2 inputs.\");if(e[0].dims.length<1)throw new Error(\"GatherElements requires that the data input be rank >= 1.\");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and\\n                     indices input tensors be of same rank.`)},Yc=(e,t)=>{let r=e[0].dims,o=e[0].dataType,i=r.length,u=e[1].dims,a=e[1].dataType,c=M.normalizeAxis(t.axis,i),p=r[c],h=u.slice(0),d=M.size(h),y=U(\"input\",o,i),w=U(\"indicesInput\",a,u.length),_=j(\"output\",o,h.length),v=[{type:12,data:d},{type:6,data:p},{type:12,data:c}];return v.push(...Z(r,u,h)),{name:\"GatherElements\",shaderCache:{inputDependencies:[\"rank\",\"rank\"]},getRunData:()=>({outputs:[{dims:h,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:v}),getShaderSource:I=>`\\n      ${I.registerUniform(\"outputSize\",\"u32\").registerUniform(\"axisDimLimit\",\"i32\").registerUniform(\"axis\",\"u32\").declareVariables(y,w,_)}\\n      ${I.mainStart()}\\n      ${I.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n\\n      let outputIndices = ${_.offsetToIndices(\"global_idx\")};\\n\\n      var idx = ${w.getByOffset(\"global_idx\")};\\n      if (idx < 0) {\\n        idx = idx + uniforms.axisDimLimit;\\n      }\\n      var inputIndices = ${y.type.indices}(outputIndices);\\n      ${y.indicesSet(\"inputIndices\",\"uniforms.axis\",\"u32(idx)\")};\\n      let value = ${y.getByIndices(\"inputIndices\")};\\n\\n      ${_.setByOffset(\"global_idx\",\"value\")};\\n  }`}},Pu=e=>ve({axis:e.axis}),ku=(e,t)=>{let r=e.inputs;Kc(r),e.compute(Yc(e.inputs,t))}});var Zc,Xc,Ru,Bu,Du=Y(()=>{\"use strict\";ye();Se();_e();Zc=e=>{if(!e)throw new Error(\"Input is missing\");if(e.length<2||e.length>3)throw new Error(\"Invaid input number.\");if(e.length===3&&e[2].dims.length>2)throw new Error(\"Invalid input shape of C\");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error(\"Input types are mismatched\")},Xc=(e,t)=>{let r=e[0].dims.slice(),o=e[1].dims.slice(),[i,u,a]=Sn.getShapeOfGemmResult(r,t.transA,o,t.transB,e.length===3?e[2].dims:void 0),c=[i,u];if(!c)throw new Error(\"Can\\'t use gemm on the given tensors\");let p=M.size(c),h=[{type:12,data:p},{type:12,data:i},{type:12,data:u},{type:12,data:a},{type:1,data:t.alpha},{type:1,data:t.beta}],d=[\"type\",\"type\"];e.length===3&&(h.push(...Z(e[2].dims)),d.push(\"rank\")),h.push(...Z(c));let y=w=>{let _=\"\";t.transA&&t.transB?_=\"value += a[k * uniforms.M + m] * b[n * uniforms.K + k];\":t.transA&&!t.transB?_=\"value += a[k * uniforms.M + m] * b[k * uniforms.N + n];\":!t.transA&&t.transB?_=\"value += a[m * uniforms.K + k] * b[n * uniforms.K + k];\":!t.transA&&!t.transB&&(_=\"value += a[m * uniforms.K + k] * b[k * uniforms.N + n];\");let v=t.alpha===1?\"\":\"value *= uniforms.alpha;\",S=U(\"a\",e[0].dataType,e[0].dims),A=U(\"b\",e[1].dataType,e[1].dims),I=S.type.value,x=null,E=[S,A];e.length===3&&(x=U(\"c\",e[2].dataType,e[2].dims.length),E.push(x));let P=j(\"output\",e[0].dataType,c.length);E.push(P);let O=[{name:\"output_size\",type:\"u32\"},{name:\"M\",type:\"u32\"},{name:\"N\",type:\"u32\"},{name:\"K\",type:\"u32\"},{name:\"alpha\",type:\"f32\"},{name:\"beta\",type:\"f32\"}];return`\\n  ${w.registerUniforms(O).declareVariables(...E)}\\n\\n  ${w.mainStart()}\\n    ${w.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n    let m = global_idx / uniforms.N;\\n    let n = global_idx % uniforms.N;\\n\\n    var value = ${I}(0);\\n    for (var k: u32 = 0u; k < uniforms.K; k++) {\\n      ${_}\\n    }\\n\\n    ${v}\\n    ${(()=>x!=null?`let cOffset = ${x.broadcastedIndicesToOffset(\"vec2(m, n)\",P)}; value += ${I}(uniforms.beta) * ${x.getByOffset(\"cOffset\")};`:\"\")()}\\n    output[global_idx] = value;\\n  }`};return{name:\"Gemm\",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:c,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:h}),getShaderSource:y}},Ru=e=>{let t=e.transA,r=e.transB,o=e.alpha,i=e.beta;return{transA:t,transB:r,alpha:o,beta:i,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},Bu=(e,t)=>{Zc(e.inputs),e.compute(Xc(e.inputs,t))}});var Qc,Jc,ep,zu,Mu=Y(()=>{\"use strict\";ye();Se();_e();Qc=(e,t)=>{let r=e[0].dims,o=r,i=2,u=M.sizeToDimension(r,i),a=M.sizeFromDimension(r,i),c=Me(a),p=a/c,h=[r[0],r[1],p],d=[\"rank\",\"type\",\"type\"],y=[{type:12,data:a},{type:12,data:p}];y.push(...Z(h,h));let w=_=>{let v=U(\"x\",e[0].dataType,h.length,c),S=U(\"scale\",e[1].dataType,e[1].dims),A=U(\"bias\",e[2].dataType,e[2].dims),I=j(\"output\",e[0].dataType,h.length,c),x=[v,S,A,I],E=v.type.value,P=c===1?\"f32\":`vec${c}<f32>`,O=64,R=[{name:\"normSize\",type:\"u32\"},{name:\"normPackedSize\",type:\"u32\"}];return`\\n  var<workgroup> meanShared : f32;\\n  var<workgroup> squaredNormShared : f32;\\n  var<workgroup> workgroupShared : array<${P}, ${O}>;\\n  const workgroupSize = ${O}u;\\n  ${_.registerUniforms(R).declareVariables(...x)}\\n  ${_.mainStart(O)}\\n    let norm = global_idx / workgroupSize;\\n    let batch = norm / uniforms.x_shape[1];\\n    let channel = norm % uniforms.x_shape[1];\\n    let localIndex = local_id.x;\\n\\n    // initialize workgroup memory\\n    var initial = ${P}(0);\\n    for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\\n      initial = initial + ${P}(${v.get(\"batch\",\"channel\",\"h\")});\\n    }\\n    workgroupShared[localIndex] = initial;\\n    workgroupBarrier();\\n\\n    // Calculate the mean of current channel data.\\n    for (var currSize = workgroupSize >> 1;  currSize > 0; currSize = currSize >> 1) {\\n      if (localIndex < currSize) {\\n        workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\\n      }\\n      workgroupBarrier();\\n    }\\n    if (localIndex == 0) {\\n      meanShared = ${_t(\"workgroupShared[0]\",c)} / f32(uniforms.normSize);\\n    }\\n    workgroupBarrier();\\n\\n    // reinitialize workgroup memory.\\n    initial = ${P}(0);\\n    for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\\n      let deviation =  ${P}(${v.get(\"batch\",\"channel\",\"h\")}) - ${P}(meanShared);\\n      initial = initial + deviation * deviation;\\n    }\\n    workgroupShared[localIndex] = initial;\\n    workgroupBarrier();\\n\\n    // Calculate the sum of square of deviation of current channel data.\\n    for (var currSize = workgroupSize >> 1;  currSize > 0; currSize = currSize >> 1) {\\n      if (localIndex < currSize) {\\n        workgroupShared[localIndex] = workgroupShared[localIndex] + workgroupShared[localIndex + currSize];\\n      }\\n      workgroupBarrier();\\n    }\\n    if (localIndex == 0) {\\n      squaredNormShared = ${_t(\"workgroupShared[0]\",c)};\\n    }\\n    workgroupBarrier();\\n\\n    let invStdDev = inverseSqrt(squaredNormShared / f32(uniforms.normSize) + f32(${t.epsilon}));\\n    let channelScale = invStdDev * f32(${S.getByOffset(\"channel\")});\\n    let channelShift = f32(${A.getByOffset(\"channel\")}) - meanShared * channelScale;\\n    for (var h = localIndex; h < uniforms.normPackedSize; h += workgroupSize) {\\n      let value = ${v.get(\"batch\",\"channel\",\"h\")} * ${E}(${P}(channelScale)) + ${E}(${P}(channelShift));\\n      ${I.set(\"batch\",\"channel\",\"h\",\"value\")};\\n    }\\n  }`};return{name:\"InstanceNormalization\",shaderCache:{hint:`${t.epsilon};${c}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:u},programUniforms:y}),getShaderSource:w}},Jc=(e,t,r,o,i,u,a,c)=>{let p=Me(a),h=64,d=p===1?\"vec2f\":`mat2x${p}f`,y=p===1?\"f32\":`vec${p}f`,w=(R,L)=>`${d}(${R}, ${L})`,_=i*a/p,v=Math.ceil(u/h),S=[\"type\"],A=[{type:12,data:v},{type:12,data:u},{type:12,data:Math.floor(a/p)},{type:12,data:Math.floor(u*a/p)}],I=R=>{let L=U(\"input\",t.dataType,t.dims,p);return`\\n  ${R.declareVariables(L)}\\n  @group(0) @binding(1) var<storage, read_write> output : array<${d}>;\\n  struct Uniforms {wg_size:u32, H:u32, C:u32, image_size:u32};\\n  @group(0) @binding(2) var<uniform> uniforms: Uniforms;\\n\\n  ${R.mainStart(h)}\\n    let currentImageNumber = global_idx / ${h} / uniforms.C;\\n    let currentChannelNumber = (global_idx / ${h}) % uniforms.C;\\n    let wgOffset = local_id.x * uniforms.wg_size;\\n    if (wgOffset >= uniforms.H) {\\n        return;\\n    }\\n    let wgMax = min(wgOffset + uniforms.wg_size, uniforms.H);\\n\\n    let offset = currentImageNumber * uniforms.image_size + currentChannelNumber;\\n    var sum = ${$t(\"f32\",p)};\\n    var squaredSum = ${$t(\"f32\",p)};\\n    for (var i: u32 = wgOffset; i < wgMax; i++) {\\n        let value = ${y}(input[offset + i * uniforms.C]);\\n        sum += value;\\n        squaredSum += value * value;\\n    }\\n    output[global_idx] = ${w(\"sum\",\"squaredSum\")};\\n  }`},x=e.compute({name:\"InstanceNormComputeMean\",shaderCache:{hint:`${p}`,inputDependencies:S},getRunData:()=>({outputs:[{dims:[i,a,h,2],dataType:1}],dispatchGroup:{x:i*a/p},programUniforms:A}),getShaderSource:I},{inputs:[t],outputs:[-1]})[0],E=[{type:12,data:_},{type:12,data:u},{type:12,data:Math.floor(a/p)},{type:12,data:Math.floor(h*a/p)}],P=[\"type\",\"type\",\"type\"],O=R=>{let L=U(\"scale\",r.dataType,r.dims,p),N=U(\"bias\",o.dataType,o.dims,p);return`\\n  @group(0) @binding(0) var<storage, read> input : array<${d}>;\\n  @group(0) @binding(1) var<storage, read> scale : array<${L.type.storage}>;\\n  @group(0) @binding(2) var<storage, read> bias : array<${N.type.storage}>;\\n  @group(0) @binding(3) var<storage, read_write> output : array<${d}>;\\n  struct Uniforms {units_of_work : u32, H: u32, C : u32, image_size : u32};\\n  @group(0) @binding(4) var<uniform> uniforms: Uniforms;\\n\\n  ${R.mainStart()}\\n    ${R.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.units_of_work\")}\\n    let currentImageNumber = global_idx / uniforms.C;\\n    let currentChannelNumber = global_idx % uniforms.C;\\n\\n    let offset = currentImageNumber * uniforms.image_size;\\n    var sum = ${$t(\"f32\",p)};\\n    var squaredSum = ${$t(\"f32\",p)};\\n    for (var i: u32 = 0; i < min(${h}, uniforms.H); i++) {\\n        let value = input[offset + i + currentChannelNumber * ${h}];\\n        sum += value[0];\\n        squaredSum += value[1];\\n    }\\n    sum = sum / f32(uniforms.H);\\n    squaredSum = squaredSum / f32(uniforms.H);\\n    let invStdDev = inverseSqrt(squaredSum - sum * sum + f32(${c}));\\n    let channelScale = invStdDev * ${y}(scale[currentChannelNumber]);\\n    let channelShift = ${y}(bias[currentChannelNumber]) - sum * channelScale;\\n\\n    output[global_idx] = ${w(\"channelScale\",\"channelShift\")};\\n  }`};return e.compute({name:\"InstanceNormComputeChannelScaleShift\",shaderCache:{hint:`${p};${c}`,inputDependencies:P},getRunData:()=>({outputs:[{dims:[i,a,2],dataType:1}],dispatchGroup:{x:Math.ceil(_/64)},programUniforms:E}),getShaderSource:O},{inputs:[x,r,o],outputs:[-1]})[0]},ep=(e,t,r)=>{let o=t[0].dims,i=o,u=o[0],a=o[o.length-1],c=M.sizeFromDimension(o,1)/a,p=Me(a),h=M.size(i)/p,d=[{type:12,data:c},{type:12,data:Math.floor(a/p)}],y=[\"type\",\"type\"],w=Jc(e,t[0],t[1],t[2],u,c,a,r.epsilon),_=v=>{let S=De(t[0].dataType),A=p===1?\"vec2f\":`mat2x${p}f`,I=p===1?S:`vec${p}<${S}>`,x=U(\"input\",t[0].dataType,t[0].dims,p),E=j(\"output\",t[0].dataType,i,p);return`\\n  @group(0) @binding(0) var<storage, read> input : array<${x.type.storage}>;\\n  @group(0) @binding(1) var<storage, read> scaleInput : array<${A}>;\\n  @group(0) @binding(2) var<storage, read_write> output : array<${E.type.storage}>;\\n  struct Uniforms {H: u32, C : u32};\\n  @group(0) @binding(3) var<uniform> uniforms: Uniforms;\\n\\n  ${v.mainStart()}\\n    let currentImageNumber = global_idx / (uniforms.C * uniforms.H);\\n    let currentChannelNumber = global_idx % uniforms.C;\\n\\n    let scaleOffset = currentImageNumber * uniforms.C + currentChannelNumber;\\n    let scale = scaleInput[scaleOffset];\\n    output[global_idx] = fma(input[global_idx], ${I}(scale[0]), ${I}(scale[1]));\\n  }`};e.compute({name:\"InstanceNormalizationNHWC\",shaderCache:{hint:`${p}`,inputDependencies:y},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(h/64)},programUniforms:d}),getShaderSource:_},{inputs:[t[0],w]})},zu=(e,t)=>{t.format===\"NHWC\"?ep(e,e.inputs,t):e.compute(Qc(e.inputs,t))}});var tp,rp,Uu,Vu=Y(()=>{\"use strict\";ye();Se();_e();tp=e=>{if(!e||e.length<2)throw new Error(\"layerNorm requires at least 2 inputs.\")},rp=(e,t,r)=>{let o=t.simplified,i=e[0].dims,u=e[1],a=!o&&e[2],c=i,p=M.normalizeAxis(t.axis,i.length),h=M.sizeToDimension(i,p),d=M.sizeFromDimension(i,p),y=M.size(u.dims),w=a?M.size(a.dims):0;if(y!==d||a&&w!==d)throw new Error(`Size of X.shape()[axis:] == ${d}.\\n       Size of scale and bias (if provided) must match this.\\n       Got scale size of ${y} and bias size of ${w}`);let _=[];for(let O=0;O<i.length;++O)O<p?_.push(i[O]):_.push(1);let v=Me(d),S=[\"type\",\"type\"],A=[{type:12,data:h},{type:1,data:d},{type:12,data:Math.floor(d/v)},{type:1,data:t.epsilon}];a&&S.push(\"type\");let I=r>1,x=r>2,E=O=>{let R=De(e[0].dataType),L=[U(\"x\",e[0].dataType,e[0].dims,v),U(\"scale\",u.dataType,u.dims,v)];a&&L.push(U(\"bias\",a.dataType,a.dims,v)),L.push(j(\"output\",e[0].dataType,c,v)),I&&L.push(j(\"mean_data_output\",1,_)),x&&L.push(j(\"inv_std_output\",1,_));let N=[{name:\"norm_count\",type:\"u32\"},{name:\"norm_size\",type:\"f32\"},{name:\"norm_size_vectorized\",type:\"u32\"},{name:\"epsilon\",type:\"f32\"}];return`\\n  ${O.registerUniforms(N).declareVariables(...L)}\\n  ${O.mainStart()}\\n    ${O.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.norm_count\")}\\n    let offset = global_idx * uniforms.norm_size_vectorized;\\n    var mean_vector = ${$t(\"f32\",v)};\\n    var mean_square_vector = ${$t(\"f32\",v)};\\n\\n    for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {\\n      let value = ${ir(R,v,\"x[h + offset]\")};\\n      mean_vector += value;\\n      mean_square_vector += value * value;\\n    }\\n    let mean = ${_t(\"mean_vector\",v)} / uniforms.norm_size;\\n    let inv_std_dev = inverseSqrt(${_t(\"mean_square_vector\",v)} / uniforms.norm_size ${o?\"\":\"- mean * mean\"} + uniforms.epsilon);\\n\\n    for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {\\n      let f32input = ${ir(R,v,\"x[j + offset]\")};\\n      let f32scale = ${ir(R,v,\"scale[j]\")};\\n      output[j + offset] = ${L[0].type.value}((f32input ${o?\"\":\"- mean\"}) * inv_std_dev * f32scale\\n        ${a?`+ ${ir(R,v,\"bias[j]\")}`:\"\"}\\n      );\\n    }\\n\\n    ${I?\"mean_data_output[global_idx] = mean\":\"\"};\\n    ${x?\"inv_std_output[global_idx] = inv_std_dev\":\"\"};\\n  }`},P=[{dims:c,dataType:e[0].dataType}];return I&&P.push({dims:_,dataType:1}),x&&P.push({dims:_,dataType:1}),{name:\"LayerNormalization\",shaderCache:{hint:`${v};${r};${o}`,inputDependencies:S},getRunData:()=>({outputs:P,dispatchGroup:{x:Math.ceil(h/64)},programUniforms:A}),getShaderSource:E}},Uu=(e,t)=>{tp(e.inputs),e.compute(rp(e.inputs,t,e.outputCount))}});var np,op,Wu,Nu,Gu=Y(()=>{\"use strict\";ye();Se();Ze();_e();np=(e,t)=>{if(e.length<3||e.length>4)throw new Error(\"MatMulNBits requires 3 or 4 inputs\");let r=e[0],o=r.dims.length;if(r.dims[o-1]!==t.k)throw new Error(\"The last dim of input shape does not match the k value\");let i=Math.floor((t.k+t.blockSize-1)/t.blockSize),u=t.blockSize/8*t.bits,a=e[1];if(!M.areEqual(a.dims,[t.n,i,u]))throw new Error(\"The second inputs must be 3D tensor with shape N X nBlocksPerCol X blobSize\");let p=e[2].dims;if(M.size(p)!==t.n*i)throw new Error(\"scales input size error.\");if(e.length===4){let d=e[3].dims,y=t.bits>4?t.n*i:t.n*Math.floor((i+1)/2);if(M.size(d)!==y)throw new Error(\"zeroPoints input size error.\")}},op=(e,t,r,o)=>{let i=e[0].dims,u=i.length,a=Math.floor((t.k+t.blockSize-1)/t.blockSize),c=i[u-2],p=t.k,h=t.n,d=i.slice(0,u-2),y=M.size(d),_=t.blockSize/8*t.bits/4,v=e[0].dataType,S=Me(c),A=Me(t.k),I=Me(_),x=tr(v),E=c*a*x,P=Math.floor(o/E),O=a<=r[0]&&P>0,R=!O||P>=4?Me(h):P>=2&&Me(h)>=2?2:1,L=d.concat([c,h]),N=M.size(L)/R/S,K=O?[]:[{type:12,data:N},{type:12,data:t.blockSize}],Q=[y,c,p/A],he=M.convertShape(e[1].dims).slice();he.splice(-1,1,_/I),K.push(...Z(Q)),K.push(...Z(he)),K.push(...Z(e[2].dims)),e.length===4&&K.push(...Z(M.convertShape(e[3].dims)));let W=[y,c,h/R];K.push(...Z(W));let se=Ce=>{let We=Q.length,ee=U(\"a\",e[0].dataType,We,A),ae=U(\"b\",12,he.length,I),Ae=U(\"scales\",e[2].dataType,e[2].dims.length),me=[ee,ae,Ae],ie=e.length===4?U(\"zero_points\",12,e[3].dims.length):void 0;ie&&me.push(ie);let ue=W.length,le=j(\"output\",e[0].dataType,ue,R),qe=[{name:\"output_size\",type:\"u32\"},{name:\"block_size\",type:\"u32\"}],G=De(e[0].dataType),ne=(()=>{switch(A){case 1:return`array<${G}, 8>`;case 2:return`mat4x2<${G}>`;case 4:return`mat2x4<${G}>`;default:throw new Error(`${A}-component is not supported.`)}})(),xe=`\\n        for (var word: u32 = 0; word < ${_}; word += ${I}) {\\n          ${ae.indicesSet(\"b_indices\",\"2\",\"word\")};\\n          let b_data = ${ae.getByIndices(\"b_indices\")};\\n          for (var i: u32 = 0; i < ${I}; i++) {\\n            let b_value: u32 = ${I===1?\"b_data\":\"b_data[word + i]\"};\\n            let b_mask: u32 = 0x0F0F0F0Fu;\\n            let b_value_lower: vec4<u32> = unpack4xU8(b_value & b_mask);\\n            let b_value_upper: vec4<u32> = unpack4xU8((b_value >> 4) & b_mask);\\n            let b_quantized_values = ${ne}(${Array.from({length:4},(Be,Ge)=>`${G}(b_value_lower[${Ge}]), ${G}(b_value_upper[${Ge}])`).join(\", \")});\\n            let b_dequantized_values = ${(()=>A===1?`${ne}(${Array.from({length:8},(Be,Ge)=>`(b_quantized_values[${Ge}] - zero_point) * scale`).join(\", \")});`:`(b_quantized_values - ${ne}(${Array(8).fill(\"zero_point\").join(\",\")})) * scale;`)()};\\n            // Number of B elements per 32-bit word is 32/bits = 32/4 = 8\\n            for (var m: u32 = 0; m < ${O?c:S}u; m++) {\\n              ${ee.indicesSet(\"a_indices\",We-2,O?\"m\":`row * ${S} + m`)};\\n              ${ee.indicesSet(\"a_indices\",We-1,\"word_offset\")};\\n              var input_offset = ${ee.indicesToOffset(\"a_indices\")};\\n              var a_data: ${ne};\\n              for (var j: u32 = 0; j < ${8/A}; j++) {\\n                a_data[j] = ${ee.getByOffset(\"input_offset\")};\\n                input_offset++;\\n              }\\n              ${O?\"workgroup_shared[workgroup_shared_offset + m]\":\"output_values[m]\"}${R>1?\"[c]\":\"\"} += ${Array.from({length:8/A},(Be,Ge)=>`${A===1?`a_data[${Ge}] * b_dequantized_values[${Ge}]`:`dot(a_data[${Ge}], b_dequantized_values[${Ge}])`}`).join(\" + \")};\\n            }\\n            word_offset += ${8/A};\\n          }\\n        }`,Ke=ie?`\\n          zero_point_offset += 4;\\n          if (zero_point_offset == 32) {\\n            zero_point_offset = 0;\\n            zero_point_index++;\\n            zero_point_word = ${ie.getByOffset(\"zero_point_index\")};\\n          }`:\"\";return O?`\\n        var<workgroup> workgroup_shared: array<${le.type.value}, ${c*a}>;\\n        ${Ce.declareVariables(...me,le)}\\n        ${Ce.mainStart([a,1,1])}\\n          var a_indices: ${ee.type.indices};\\n          var block = local_id.x;\\n          var col = workgroup_id.y;\\n          var batch = workgroup_id.z;\\n          ${ee.indicesSet(\"a_indices\",\"0\",\"batch\")};\\n          // Two zero points are packed into one byte when uniforms.bits is 4.\\n          for (var c: u32 = 0; c < ${R}; c++) {\\n            let col_times_components_plus_c = col * ${R} + c;\\n              ${ie?`\\n            var zero_point_bytes_per_col: u32 = (${a} + 1) / 2;\\n            var zero_point_byte_count: u32 = col_times_components_plus_c * zero_point_bytes_per_col + (block >> 0x1u);\\n            var zero_point_word_index: u32 = zero_point_byte_count >> 0x2u;\\n            var zero_point_byte_offset: u32 = zero_point_byte_count & 0x3u;\\n            var zero_point_nibble_offset: u32 = block & 0x1u;\\n            var zero_point_bits_offset: u32 = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2);\\n            var zero_point_word: u32 = ${ie.getByOffset(\"zero_point_word_index\")} >> zero_point_bits_offset;`:\"\"}\\n            var b_indices: ${ae.type.indices};\\n            ${ae.indicesSet(\"b_indices\",\"0\",\"col_times_components_plus_c\")};\\n            // The scale and zero points are computed per block.\\n            var scales_index = col_times_components_plus_c * ${a} + block;\\n            let scale = ${Ae.getByOffset(\"scales_index\")};\\n            // The default zero point is 8 for unsigned 4-bit quantization.\\n            let zero_point = ${G}(${ie?\"(zero_point_word) & 0xFu\":8});\\n            ${ae.indicesSet(\"b_indices\",\"1\",\"block\")};\\n            var word_offset: u32 = block * ${t.blockSize/A};\\n            var workgroup_shared_offset: u32 = block * ${c};\\n            ${xe}\\n          }\\n          workgroupBarrier();\\n          if (local_id.x == 0u) {\\n            var output_indices: ${le.type.indices};\\n            ${le.indicesSet(\"output_indices\",\"0\",\"batch\")};\\n            ${le.indicesSet(\"output_indices\",ue-1,\"col\")};\\n            ${le.indicesSet(\"output_indices\",ue-2,\"0\")};\\n            var output_offset = ${le.indicesToOffset(\"output_indices\")};\\n            for (var m: u32 = 0u; m < ${c}u; m++) {\\n              var output_value: ${le.type.value} = ${le.type.value}(0);\\n              var workgroup_shared_offset: u32 = m;\\n              for (var b: u32 = 0u; b < ${a}u; b++) {\\n                output_value += workgroup_shared[workgroup_shared_offset];\\n                workgroup_shared_offset += ${c};\\n              }\\n              ${le.setByOffset(\"output_offset\",\"output_value\")};\\n              output_offset += ${h/R};\\n            }\\n          }\\n        }`:`\\n        ${Ce.registerUniforms(qe).declareVariables(...me,le)}\\n        ${Ce.mainStart()}\\n          ${Ce.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n          var output_values: array<${le.type.value}, ${S}>;\\n          var output_indices = ${le.offsetToIndices(\"global_idx\")};\\n          var col = ${le.indicesGet(\"output_indices\",ue-1)};\\n          var row = ${le.indicesGet(\"output_indices\",ue-2)};\\n          var a_indices: ${ee.type.indices} = output_indices;\\n          // Two zero points are packed into one byte because uniforms.bits <= 4.\\n          // zero_point_offset is either 0 or 4. It is bit offset within one byte.\\n          // TODO support zero_point_offset for bits > 4\\n          ${ie?`\\n          var zero_point_abs_offset = col * ${R} * ((${a} + 1) / 2);\\n          var zero_point_index: u32 = zero_point_abs_offset / 4;\\n          var zero_point_word: u32 = ${ie.getByOffset(\"zero_point_index\")};\\n          var zero_point_offset: u32 = (zero_point_abs_offset % 4) * 8;`:\"\"}\\n          var scale_index = col * ${a*R};\\n          var b_indices: ${ae.type.indices};\\n          for (var c: u32 = 0; c < ${R}; c++) {\\n            ${ae.indicesSet(\"b_indices\",\"0\",`col * ${R} + c`)};\\n            var block_offset: u32 = 0;\\n            for (var block: u32 = 0; block < ${a}; block++) {\\n              // The scale and zero points are computed per block.\\n              let scale = ${Ae.getByOffset(\"scale_index\")};\\n              // The default zero point is 8 for unsigned 4-bit quantization.\\n              let zero_point = ${G}(${ie?\"extractBits(zero_point_word, zero_point_offset, 4)\":8});\\n              ${ae.indicesSet(\"b_indices\",\"1\",\"block\")};\\n              var word_offset: u32 = block_offset;\\n              ${xe}\\n              scale_index++;\\n              ${Ke}\\n              block_offset += uniforms.block_size / ${A};\\n            }\\n            // Drop the trailing 4 bits if the zero_poit_offset is not a byte boundary to align with the next byte.\\n            ${ie?`if (zero_point_offset % 8 > 0) {\\n                ${Ke}\\n              }`:\"\"}\\n            }\\n            for (var k: u32 = 0u; k < ${S}u; k++) {\\n              ${le.indicesSet(\"output_indices\",ue-2,`${S} * row + k`)};\\n              ${le.setByIndices(\"output_indices\",\"output_values[k]\")}\\n            }\\n        }`};return{name:O?\"BlockwiseMatMulNBits\":\"MatMulNBits\",shaderCache:{hint:`${t.cacheKey};${c};${v};${e.length}`,inputDependencies:Array(e.length).fill(\"rank\")},getRunData:()=>({outputs:[{dims:L,dataType:v}],name:O?\"BlockwiseMatMulNBits\":\"MatMulNBits\",dispatchGroup:O?{x:1,y:Math.ceil(h/R),z:y}:{x:Math.ceil(N/64)},programUniforms:K}),getShaderSource:se}},Wu=(e,t)=>{np(e.inputs,t);let r=e.getMaxComputeWorkgroupSizes(),o=e.getMaxComputeWorkgroupStoragesize();e.compute(op(e.inputs,t,r,o))},Nu=e=>ve(e)});var it,ip,Lu,Hu,ap,Ko,Fu,qu=Y(()=>{\"use strict\";ye();Se();Ze();_n();Ro();_e();Sr();it=(e,t)=>e.length>t&&e[t].dims.length>0&&M.size(e[t].dims)>0?e[t]:void 0,ip=(e,t)=>{let r=e[0],o=it(e,1),i=it(e,2),u=it(e,3),a=it(e,4),c=it(e,5),p=it(e,6),h=it(e,7);if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\"Input query is expected to have 3 or 5 dimensions\");let d=!1,y=r.dims[0],w=r.dims[1],_=r.dims.length===3?d?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],v=w,S=0,A=0,I=Math.floor(_/t.numHeads);if(p&&h){if(p.dims.length!==4)throw new Error(\\'Input \"past_key\" is expected to have 4 dimensions\\');if(p.dims[0]!==y||p.dims[1]!==t.numHeads||p.dims[3]!==I)throw new Error(\\'Input \"past_key\" shape (batch_size, num_heads, past_sequence_length, head_size)\\');if(h.dims[0]!==y||h.dims[1]!==t.numHeads||h.dims[3]!==I)throw new Error(\\'Input \"past_value\" shape (batch_size, num_heads, past_sequence_length, head_size)\\');if(p.dims[2]!==h.dims[2])throw new Error(\\'Input \"past_key\" and \"past_value\" shall have same dim 2 (past_sequence_length)\\');if(h.dims.length!==4)throw new Error(\\'Input \"past_value\" is expected to have 4 dimensions\\');S=p.dims[2],A=p.dims[2]}else if(p||h)throw new Error(\\'Input \"past_key\" and \"past_value\" shall be both present or both absent\\');let x;if(o){if(r.dims.length!==3)throw new Error(\\'Input \"query\" is expected to have 3 dimensions when key is given\\');if(o.dims.length<3||o.dims.length>5)throw new Error(\\'Input \"key\" is expected to have 3, 4, or 5 dimensions\\');if(r.dims[0]!==o.dims[0])throw new Error(\\'Input \"query\" and \"key\" shall have same dim 0 (batch size)\\');if(o.dims.length===3){if(o.dims[2]!==r.dims[2])throw new Error(\\'Input \"query\" and \"key\" shall have same dim 2 (hidden_size)\\');x=2,v=o.dims[1]}else if(o.dims.length===5){if(o.dims[2]!==t.numHeads||o.dims[3]!==2||o.dims[4]!==I)throw new Error(\\'Expect \"key\" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv\\');if(i)throw new Error(\\'Expect \"value\" be none when \"key\" has packed kv format.\\');x=5,v=o.dims[1]}else{if(o.dims[1]!==t.numHeads||o.dims[3]!==I)throw new Error(\\'Expect \"key\" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key\\');x=0,v=o.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error(\\'Input \"query\" is expected to have 3 or 5 dimensions when key is empty\\');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error(\\'Expect \"query\" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv\\');x=3}if(u){if(u.dims.length!==1)throw new Error(\\'Input \"bias\" is expected to have 1 dimension\\');if(i&&r.dims.length===5&&r.dims[3]===2)throw new Error(\"bias is not allowed for packed kv.\")}let E=0;if(a){E=8;let N=a.dims;throw N.length===1?N[0]===y?E=1:N[0]===3*y+2&&(E=3):N.length===2&&N[0]===y&&N[1]===v&&(E=5),E===8?new Error(\\'Input \"key_padding_mask\" shape shall be (batch_size) or (batch_size, kv_sequence_length)\\'):new Error(\"Mask not supported\")}let P=!1,O=_;if(i){if(i.dims.length!==3&&i.dims.length!==4)throw new Error(\\'Input \"value\" is expected to have 3 or 4 dimensions\\');if(r.dims[0]!==i.dims[0])throw new Error(\\'Input \"query\" and \"value\" shall have same dim 0 (batch_size)\\');if(i.dims.length===3){if(v!==i.dims[1])throw new Error(\\'Input \"key\" and \"value\" shall have the same dim 1 (kv_sequence_length)\\');O=i.dims[2]}else{if(v!==i.dims[2])throw new Error(\\'Input \"past_key\" and \"past_value\" shall have the same dim 2 (kv_sequence_length)\\');O=i.dims[1]*i.dims[3],P=!0}}let R=S+v,L=!1;if(a)throw new Error(\"Key padding mask is not supported\");if(c){if(c.dims.length!==4)throw new Error(\\'Input \"relative_position_bias\" is expected to have 4 dimensions\\');if(c.dims[0]!==y&&c.dims[0]!==1||c.dims[1]!==t.numHeads||c.dims[2]!==w||c.dims[3]!==R)throw new Error(\\'Input \"relative_position_bias\" shape (batch_size, 1, sequence_length, kv_sequence_length)\\')}return{batchSize:y,sequenceLength:w,pastSequenceLength:S,kvSequenceLength:v,totalSequenceLength:R,maxSequenceLength:A,inputHiddenSize:0,hiddenSize:_,vHiddenSize:O,headSize:I,vHeadSize:Math.floor(O/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:E,scale:t.scale,broadcastResPosBias:L,passPastInKv:P,qkvFormat:x}},Lu=e=>ve({...e}),Hu=ve({perm:[0,2,1,3]}),ap=(e,t,r,o,i,u,a)=>{let c=[o,i,u],p=M.size(c),h=[{type:12,data:p},{type:12,data:a},{type:12,data:u}],d=y=>{let w=j(\"qkv_with_bias\",t.dataType,c),_=U(\"qkv\",t.dataType,c),v=U(\"bias\",r.dataType,c),S=[{name:\"output_size\",type:\"u32\"},{name:\"bias_offset\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"}];return`\\n  ${y.registerUniforms(S).declareVariables(_,v,w)}\\n  ${y.mainStart()}\\n    ${y.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n    let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;\\n\\n    qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];\\n  }`};return e.compute({name:\"MultiHeadAttentionAddBias\",shaderCache:{inputDependencies:[\"type\",\"type\"]},getRunData:()=>({outputs:[{dims:c,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:h}),getShaderSource:d},{inputs:[t,r],outputs:[-1]})[0]},Ko=(e,t,r,o,i,u,a,c)=>{let p=u;if(a){if(o===1)throw new Error(\"AddBiasReshape is not implemented. Please export your model with packed QKV or KV\");return p=ap(e,u,a,t,o,r*i,c),p=p.reshape([t,o,r,i]),e.compute(yt(p,Hu.perm),{inputs:[p],outputs:[-1]})[0]}else return u.dims.length===3&&(p=u.reshape([t,o,r,i])),e.compute(yt(p,Hu.perm),{inputs:[p],outputs:[-1]})[0]},Fu=(e,t)=>{let r=ip(e.inputs,t),o=e.inputs[0],i=it(e.inputs,1),u=it(e.inputs,2),a=it(e.inputs,3),c=it(e.inputs,4),p=it(e.inputs,5),h=it(e.inputs,6),d=it(e.inputs,7);if(o.dims.length===5)throw new Error(\"Packed QKV is not implemented\");if(i?.dims.length===5)throw new Error(\"Packed KV is not implemented\");let y=i&&u&&i.dims.length===4&&u.dims.length===4,w=Ko(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,o,a,0);if(y)return Pn(e,w,i,u,c,void 0,h,d,p,r,t);if(!i||!u)throw new Error(\"key and value must be provided\");let _=Ko(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,i,a,r.hiddenSize),v=Ko(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,u,a,2*r.hiddenSize);Pn(e,w,_,v,c,void 0,h,d,p,r,t)}});var sp,up,dp,lp,cp,pp,mp,fp,ju,Ku=Y(()=>{\"use strict\";ye();Se();_e();sp=e=>{if(!e||e.length<1)throw new Error(\"Too few inputs\");if(e[0].dataType!==1&&e[0].dataType!==10)throw new Error(\"Input type must be float or float16.\");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error(\"The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].\")}},up=(e,t,r)=>{let o=\"\";for(let i=t-1;i>=0;--i)o+=`\\n            k = i32(${e.indicesGet(\"indices\",i)}) - ${fe(\"uniforms.pads\",i,r)};\\n            if (k < 0) {\\n              break;\\n            }\\n            if (k >= i32(${fe(\"uniforms.x_shape\",i,t)})) {\\n              break;\\n            }\\n            offset += k * i32(${fe(\"uniforms.x_strides\",i,t)});\\n        `;return`\\n          value = ${e.type.value}(uniforms.constant_value);\\n          for (var i = 0; i < 1; i++) {\\n            var offset = 0;\\n            var k = 0;\\n            ${o}\\n            value = x[offset];\\n          }\\n      `},dp=(e,t,r)=>{let o=\"\";for(let i=t-1;i>=0;--i)o+=`\\n                k = i32(${e.indicesGet(\"indices\",i)}) - ${fe(\"uniforms.pads\",i,r)};\\n                if (k < 0) {\\n                  k = -k;\\n                }\\n                {\\n                  let _2n_1 = 2 * (i32(${fe(\"uniforms.x_shape\",i,t)}) - 1);\\n                  k = k % _2n_1;\\n                  if(k >= i32(${fe(\"uniforms.x_shape\",i,t)})) {\\n                    k = _2n_1 - k;\\n                  }\\n                }\\n                offset += k * i32(${fe(\"uniforms.x_strides\",i,t)});\\n            `;return`\\n              var offset = 0;\\n              var k = 0;\\n              ${o}\\n              value = x[offset];\\n          `},lp=(e,t,r)=>{let o=\"\";for(let i=t-1;i>=0;--i)o+=`\\n                k = i32(${e.indicesGet(\"indices\",i)}) - ${fe(\"uniforms.pads\",i,r)};\\n                if (k < 0) {\\n                  k = 0;\\n                }\\n                if (k >= i32(${fe(\"uniforms.x_shape\",i,t)})) {\\n                  k = i32(${fe(\"uniforms.x_shape\",i,t)}) - 1;\\n                }\\n                offset += k * i32(${fe(\"uniforms.x_strides\",i,t)});\\n            `;return`\\n              var offset = 0;\\n              var k = 0;\\n              ${o}\\n              value = x[offset];\\n          `},cp=(e,t,r)=>{let o=\"\";for(let i=t-1;i>=0;--i)o+=`\\n                k = i32(${e.indicesGet(\"indices\",i)}) - ${fe(\"uniforms.pads\",i,r)};\\n                if (k < 0)  {\\n                  k += i32(${fe(\"uniforms.x_shape\",i,t)}]);\\n                }\\n                if (k >= i32(${fe(\"uniforms.x_shape\",i,t)})) {\\n                  k -= i32(${fe(\"uniforms.x_shape\",i,t)});\\n                }\\n                offset += k * i32(${fe(\"uniforms.x_strides\",i,t)});\\n            `;return`\\n              var offset = 0;\\n              var k = 0;\\n              ${o}\\n              value = x[offset];\\n          `},pp=(e,t,r)=>{switch(r.mode){case 0:return up(e,t,r.pads.length);case 1:return dp(e,t,r.pads.length);case 2:return lp(e,t,r.pads.length);case 3:return cp(e,t,r.pads.length);default:throw new Error(\"Invalid mode\")}},mp=(e,t)=>{let r=M.padShape(e[0].dims.slice(),t.pads),o=e[0].dims,i=M.size(r),u=[{type:12,data:i},{type:6,data:t.pads}];t.mode===0&&u.push({type:e[0].dataType,data:t.value}),u.push(...Z(e[0].dims,r));let a=[\"rank\"],c=p=>{let h=j(\"output\",e[0].dataType,r.length),d=U(\"x\",e[0].dataType,o.length),y=d.type.value,w=pp(h,o.length,t),_=[{name:\"output_size\",type:\"u32\"},{name:\"pads\",type:\"i32\",length:t.pads.length}];return t.mode===0&&_.push({name:\"constant_value\",type:y}),`\\n            ${p.registerUniforms(_).declareVariables(d,h)}\\n            ${p.mainStart()}\\n            ${p.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n\\n            let indices = ${h.offsetToIndices(\"global_idx\")};\\n\\n            var value = ${y}(0);\\n            ${w}\\n            output[global_idx] = value;\\n        }`};return{name:\"Pad\",shaderCache:{hint:`${t.mode}`,inputDependencies:a},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(M.size(r)/64)},programUniforms:u}),getShaderSource:c}},fp=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),o=e.length>=3&&e[2].data?e[2].getFloat32Array()[0]:0,i=e[0].dims.length,u=new Int32Array(2*i).fill(0);if(e.length>=4){let c=e[3].getBigInt64Array();for(let p=0;p<c.length;p++)u[Number(c[p])]=Number(r[p]),u[Number(c[p])+i]=Number(r[p+c.length])}else r.forEach((c,p)=>u[Number(p)]=Number(c));let a=[];return u.forEach(c=>a.push(c)),{mode:t.mode,value:o,pads:a}}else return t},ju=(e,t)=>{sp(e.inputs);let r=fp(e.inputs,t);e.compute(mp(e.inputs,r),{inputs:[0]})}});var Nn,Yu,Zu,Xu,Qu,hp,gp,Ju,ed,td,rd,nd,od,id,ad,sd,ud,dd,ld,cd=Y(()=>{\"use strict\";$r();ye();Se();_e();Nn=e=>{if(vr.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error(\"Pool ops requires 1 input.\")},Yu=(e,t,r)=>{let o=t.format===\"NHWC\",i=e.dims.slice();o&&i.splice(1,0,i.pop());let u=Object.hasOwnProperty.call(t,\"dilations\"),a=t.kernelShape.slice(),c=t.strides.slice(),p=u?t.dilations.slice():[],h=t.pads.slice();nr.adjustPoolAttributes(r,i,a,c,p,h);let d=nr.computePoolOutputShape(r,i,c,p,a,h,t.autoPad),y=Object.assign({},t);u?Object.assign(y,{kernelShape:a,strides:c,pads:h,dilations:p,cacheKey:t.cacheKey}):Object.assign(y,{kernelShape:a,strides:c,pads:h,cacheKey:t.cacheKey});let w=d.slice();return w.push(w.splice(1,1)[0]),[y,o?w:d]},Zu=(e,t)=>{let r=t.format===\"NHWC\",o=M.size(e),i=M.size(t.kernelShape),u=[{type:12,data:o},{type:12,data:i}],a=[{name:\"outputSize\",type:\"u32\"},{name:\"kernelSize\",type:\"u32\"}];if(t.kernelShape.length<=2){let c=t.kernelShape[t.kernelShape.length-1],p=t.strides[t.strides.length-1],h=t.pads[t.pads.length/2-1],d=t.pads[t.pads.length-1],y=!!(h+d);u.push({type:12,data:c},{type:12,data:p},{type:12,data:h},{type:12,data:d}),a.push({name:\"kw\",type:\"u32\"},{name:\"sw\",type:\"u32\"},{name:\"pwStart\",type:\"u32\"},{name:\"pwEnd\",type:\"u32\"});let w=!1;if(t.kernelShape.length===2){let _=t.kernelShape[t.kernelShape.length-2],v=t.strides[t.strides.length-2],S=t.pads[t.pads.length/2-2],A=t.pads[t.pads.length-2];w=!!(S+A),u.push({type:12,data:_},{type:12,data:v},{type:12,data:S},{type:12,data:A}),a.push({name:\"kh\",type:\"u32\"},{name:\"sh\",type:\"u32\"},{name:\"phStart\",type:\"u32\"},{name:\"phEnd\",type:\"u32\"})}return[u,a,!0,y,w]}else{if(r)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let c=M.computeStrides(t.kernelShape);u.push({type:12,data:c},{type:12,data:t.pads},{type:12,data:t.strides}),a.push({name:\"kernelStrides\",type:\"u32\",length:c.length},{name:\"pads\",type:\"u32\",length:t.pads.length},{name:\"strides\",type:\"u32\",length:t.strides.length});let p=t.pads.reduce((h,d)=>h+d);return[u,a,!!p,!1,!1]}},Xu=(e,t,r,o,i,u,a,c,p,h,d,y)=>{let w=i.format===\"NHWC\",_=t.type.value,v=j(\"output\",t.type.tensor,o);if(i.kernelShape.length<=2){let S=\"\",A=\"\",I=\"\",x=r-(w?2:1);if(d?S=`\\n                for (var i: u32 = 0u; i < uniforms.kw; i++) {\\n                  xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\\n                  if (xIndices[${x}] < 0 || xIndices[${x}]\\n                      >= uniforms.x_shape[${x}]) {\\n                    pad++;\\n                    continue;\\n                  }\\n                  let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n                  ${u}\\n                }`:S=`\\n                for (var i: u32 = 0u; i < uniforms.kw; i++) {\\n                  xIndices[${x}] = indices[${x}] * uniforms.sw - uniforms.pwStart + i;\\n                  let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n                  ${u}\\n                }`,i.kernelShape.length===2){let P=r-(w?3:2);y?A=`\\n                for (var j: u32 = 0u; j < uniforms.kh; j++) {\\n                  xIndices[${P}] = indices[${P}] * uniforms.sh - uniforms.phStart + j;\\n                  if (xIndices[${P}] < 0 || xIndices[${P}] >= uniforms.x_shape[${P}]) {\\n                    pad += i32(uniforms.kw);\\n                    continue;\\n                  }\\n              `:A=`\\n                for (var j: u32 = 0u; j < uniforms.kh; j++) {\\n                  xIndices[${P}] = indices[${P}] * uniforms.sh - uniforms.phStart + j;\\n                `,I=`\\n              }\\n            `}return`\\n            ${e.registerUniforms(p).declareVariables(t,v)}\\n\\n            ${e.mainStart()}\\n              ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n\\n              let indices = ${v.offsetToIndices(\"global_idx\")};\\n              var xIndices = ${v.offsetToIndices(\"global_idx\")};\\n\\n              var value = ${_}(${c});\\n              var pad = 0;\\n              ${A}\\n              ${S}\\n              ${I}\\n              ${a}\\n\\n              output[global_idx] = value;\\n            }`}else{if(w)throw new Error(\"Pooling with kernelShape.length > 2 is not supported for NHWC format.\");let S=i.kernelShape.length,A=i.pads.length,I=\"\";return h?I=`\\n                if (xIndices[j] >= uniforms.x_shape[j]) {\\n                  pad++;\\n                  isPad = true;\\n                  break;\\n                }\\n              }\\n              if (!isPad) {\\n                let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n                ${u}\\n              }`:I=`\\n              }\\n              let x_val = x[${t.indicesToOffset(\"xIndices\")}];\\n              ${u}\\n            `,`\\n            ${e.registerUniforms(p).declareVariables(t,v)}\\n\\n            ${e.mainStart()}\\n              ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n              let indices = ${v.offsetToIndices(\"global_idx\")};\\n              var xIndices = ${v.offsetToIndices(\"global_idx\")};\\n\\n              var offsets: array<u32, ${S}>;\\n\\n              var value = ${_}(${c});\\n              var pad = 0;\\n              var isPad = false;\\n\\n              for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {\\n                var offset = i;\\n                for (var j = 0u; j < ${S-1}u; j++) {\\n                  offsets[j] = offset / ${fe(\"uniforms.kernelStrides\",\"j\",S)};\\n                  offset -= offsets[j] * ${fe(\"uniforms.kernelStrides\",\"j\",S)};\\n                }\\n                offsets[${S-1}] = offset;\\n\\n                isPad = false;\\n                for (var j = ${r-S}u; j < ${r}u; j++) {\\n                  xIndices[j] = indices[j] * ${fe(\"uniforms.strides\",`j - ${r-S}u`,S)}\\n                    + offsets[j - ${r-S}u] - ${fe(\"uniforms.pads\",\"j - 2u\",A)};\\n                  ${I}\\n              }\\n              ${a}\\n\\n              output[global_idx] = value;\\n            }`}},Qu=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,hp=e=>`${Qu(e)};${e.countIncludePad}`,gp=e=>`${Qu(e)};${e.storageOrder};${e.dilations}`,Ju=e=>({format:e.format,autoPad:[\"NOTSET\",\"VALID\",\"SAME_UPPER\",\"SAME_LOWER\"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),ed=(e,t,r,o)=>{let[i,u]=Yu(t,o,r),a=U(\"x\",t.dataType,t.dims.length),c=a.type.value,p=\"value += x_val;\",h=\"\";i.countIncludePad?h+=`value /= ${c}(uniforms.kernelSize);`:h+=`value /= ${c}(i32(uniforms.kernelSize) - pad);`;let[d,y,w,_,v]=Zu(u,i);d.push(...Z(t.dims,u));let S=[\"rank\"];return{name:e,shaderCache:{hint:`${o.cacheKey};${w};${_};${v}`,inputDependencies:S},getRunData:()=>({outputs:[{dims:u,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(M.size(u)/64)},programUniforms:d}),getShaderSource:A=>Xu(A,a,t.dims.length,u.length,i,p,h,0,y,w,_,v)}},td=e=>{let t=e.count_include_pad!==0,r=Ju(e);if(r.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for AveragePool\");let o={countIncludePad:t,...r,cacheKey:\"\"};return{...o,cacheKey:hp(o)}},rd=(e,t)=>{Nn(e.inputs),e.compute(ed(\"AveragePool\",e.inputs[0],!1,t))},nd={autoPad:\"\",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},od=e=>{let t=e.format;return{format:t,...nd,cacheKey:t}},id=(e,t)=>{Nn(e.inputs),e.compute(ed(\"GlobalAveragePool\",e.inputs[0],!0,t))},ad=(e,t,r,o)=>{let[i,u]=Yu(t,o,r),a=`\\n      value = max(x_val, value);\\n    `,c=\"\",p=U(\"x\",t.dataType,t.dims.length),h=[\"rank\"],[d,y,w,_,v]=Zu(u,i);return d.push(...Z(t.dims,u)),{name:e,shaderCache:{hint:`${o.cacheKey};${w};${_};${v}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:u,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(M.size(u)/64)},programUniforms:d}),getShaderSource:S=>Xu(S,p,t.dims.length,u.length,i,a,c,t.dataType===10?-65504:-1e5,y,w,_,v)}},sd=(e,t)=>{Nn(e.inputs),e.compute(ad(\"MaxPool\",e.inputs[0],!1,t))},ud=e=>{let t=e.storage_order,r=e.dilations,o=Ju(e);if(t!==0)throw new Error(\"column major storage order is not yet supported for MaxPool\");if(o.ceilMode!==0)throw new Error(\"using ceil() in shape computation is not yet supported for MaxPool\");let i={storageOrder:t,dilations:r,...o,cacheKey:\"\"};return{...i,cacheKey:gp(i)}},dd=e=>{let t=e.format;return{format:t,...nd,cacheKey:t}},ld=(e,t)=>{Nn(e.inputs),e.compute(ad(\"GlobalMaxPool\",e.inputs[0],!0,t))}});var bp,wp,pd,md=Y(()=>{\"use strict\";$r();ye();_e();bp=(e,t,r)=>{let o=e===t,i=e<t&&r<0,u=e>t&&r>0;if(o||i||u)throw new Error(\"Range these inputs\\' contents are invalid.\")},wp=(e,t,r,o)=>{let i=Math.abs(Math.ceil((t-e)/r)),u=[i],a=i,c=[{type:12,data:a},{type:o,data:e},{type:o,data:r},...Z(u)],p=h=>{let d=j(\"output\",o,u.length),y=d.type.value,w=[{name:\"outputSize\",type:\"u32\"},{name:\"start\",type:y},{name:\"delta\",type:y}];return`\\n        ${h.registerUniforms(w).declareVariables(d)}\\n        ${h.mainStart()}\\n        ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n        output[global_idx] = uniforms.start + ${y}(global_idx) * uniforms.delta;\\n      }`};return{name:\"Range\",shaderCache:{hint:`${o}`},getShaderSource:p,getRunData:()=>({outputs:[{dims:u,dataType:o}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:c})}},pd=e=>{let t=0,r=0,o=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],o=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],o=e.inputs[2].getFloat32Array()[0]),vr.webgpu.validateInputContent&&bp(t,r,o),e.compute(wp(t,r,o,e.inputs[0].dataType),{inputs:[]})}});var vp,$p,_p,Sp,xp,Cp,Ap,Ip,Tp,Ep,Pp,fd,kp,Op,Rp,Bp,Dp,hd,gd,yd=Y(()=>{\"use strict\";ye();Se();Ze();_e();vp=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error(\"Resize requires scales input values to be positive\")})),e.length>0){if(t.mode===\"linear\"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and\\n            one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode===\"cubic\"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error(\"Resize requires scales input size to be 2 or 4 for cubic mode\")}},$p=(e,t,r)=>{t.every(i=>i>=0&&i<r||(()=>{throw new Error(\"Resize requires axes input values to be positive and less than rank\")}));let o=new Array(r).fill(1);return t.forEach((i,u)=>o[i]=e[u]),o},_p=(e,t,r,o,i,u)=>{let[a,c,p]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],h=e[0].dims.length;if(a>0&&e.length>a&&e[a].dims.length>0)e[a].getFloat32Array().forEach(d=>u.push(d));else if(t.coordinateTransformMode===\"tf_crop_and_resize\")throw new Error(\"Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize\");if(c>0&&e.length>c&&e[c].dims.length>0){if(e[c].getFloat32Array().forEach(d=>o.push(d)),o.length!==0&&o.length!==h&&r>=18&&o.length!==t.axes.length)throw new Error(\"Resize requires scales input size to be same as input rank or axes size for opset 18 and up\");vp(o,t),t.axes.length>0&&$p(o,t.axes,h).forEach((d,y)=>o[y]=d)}if(p>0&&e.length>p&&(e[p].getBigInt64Array().forEach(d=>i.push(Number(d))),i.length!==h||r>=18&&i.length===t.axes.length))throw new Error(\"Resize requires sizes input size to be same as input rank or axes size for opset 18 and up\");if(t.axes.length>0){if(o.length!==t.axes.length)throw new Error(\\'Resize requires \"scales\" input size to be of axes rank when axes attributes is specified\\');if(i.length!==t.axes.length)throw new Error(\\'Resize requires \"sizes\" input size to be of rank axes rank when axes attributes is specified\\')}if(typeof o<\"u\"&&typeof i<\"u\"&&o.length>0&&i.length>h)throw new Error(\"Resize requires only of scales or sizes to be specified\")},Sp=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,\\n     lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case\"asymmetric\":return`return ${t}(xResized) / ${t}(xScale);`;case\"pytorch_half_pixel\":return`if (lengthResized > 1) {\\n                    return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;\\n                  } else {\\n                    return 0.0;\\n                  }`;case\"tf_half_pixel_for_nn\":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case\"align_corners\":return`if (lengthResized == 1) {\\n                    return 0.0;\\n                  } else {\\n                    // The whole part and the fractional part are calculated separately due to inaccuracy of floating\\n                    // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an\\n                    // offset-by-one error later in floor().\\n                    let whole = ${t}(xResized * (lengthOriginal - 1) / (lengthResized - 1));\\n                    let fract =\\n                        ${t}(xResized * (lengthOriginal - 1) % (lengthResized - 1)) / ${t}(lengthResized - 1);\\n                    return whole + fract;\\n                  }`;case\"tf_crop_and_resize\":return`if (lengthResized > 1) {\\n                    return ${t}(roiStart) * ${t}(lengthOriginal - 1) +\\n                        (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /\\n                        ${t}(lengthResized - 1);\\n                  } else {\\n                    return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);\\n                  }`;case\"half_pixel_symmetric\":return`const outputWidth = ${t}xScale * ${t}(lengthResized);\\n                  const adjustment = ${t}(lengthResized) / outputWidth;\\n                  const center = ${t}(lengthOriginal) / 2;\\n                  const offset = center * (1 - adjustment);\\n                  return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case\"half_pixel\":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+\"}\",xp=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case\"round_prefer_ceil\":return\"if (fract(xOriginal) == 0.5) {             return ceil(xOriginal);           } else {             return round(xOriginal);           }\";case\"floor\":return\"return floor(xOriginal);\";case\"ceil\":return\"return ceil(xOriginal);\";case\"round_prefer_floor\":return\"if (fract(xOriginal) == 0.5) {                     return floor(xOriginal);                   } else {                     return round(xOriginal);                   }\";case\"simple\":default:if(t<11)return\"if (isDownSample)                     {                       return ceil(xOriginal);                     } else {                       return xOriginal;                     }\";throw new Error(`Nearest mode ${e} is not supported`)}})()+\"}\",Cp=(e,t,r)=>{let o=new Array(r).fill(0).concat(new Array(r).fill(1)),i=e.length===0?o:e.slice();return t.length>0?(t.forEach((u,a)=>{o[u]=i[a],o[a+r]=i[t.length+a]}),o):i},Ap=(e,t,r,o)=>{let i=[];if(r.length>0)if(o.length>0){if(e.forEach(u=>i.push(u)),Math.max(...o)>e.length)throw new Error(\"axes is out of bound\");o.forEach((u,a)=>i[u]=r[a])}else r.forEach(u=>i.push(u));else{if(t.length===0)throw new Error(\"Resize requires either scales or sizes.\");i=e.map((u,a)=>Math.round(u*t[a]))}return i},Ip=(e,t,r)=>{let o=(()=>{switch(r.keepAspectRatioPolicy){case\"not_larger\":return r.axes.length>0?Math.min(...r.axes.map(u=>t[u]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case\"not_smaller\":return r.axes.length>0?Math.max(...r.axes.map(u=>t[u]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let i=e.slice();return r.axes.length>0?(r.axes.forEach(u=>t[u]=o),r.axes.forEach(u=>i[u]=Math.round(e[u]*t[u]))):(t.fill(o,0,t.length),i.forEach((u,a)=>i[a]=Math.round(u*t[a]))),i},Tp=(e,t,r,o,i)=>`\\n    fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {\\n      var original_indices: array<${e.type.value}, ${r.length}>;\\n      for (var i:u32 = 0; i < ${r.length}; i++) {\\n        var output_index = ${e.indicesGet(\"output_indices\",\"i\")};\\n        var scale = ${fe(\"uniforms.scales\",\"i\",o)};\\n        var roi_low = ${fe(\"uniforms.roi\",\"i\",i)};\\n        var roi_hi = ${fe(\"uniforms.roi\",`i + ${t.length}`,i)};\\n        if (scale == 1.0) {\\n          original_indices[i] = ${e.type.value}(output_index);\\n        } else {\\n          var input_shape_i = ${fe(\"uniforms.input_shape\",\"i\",t.length)};\\n          var output_shape_i = ${fe(\"uniforms.output_shape\",\"i\",r.length)};\\n          original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\\n                                                                           input_shape_i, roi_low, roi_hi);\\n        }\\n      }\\n      return original_indices;\\n    }`,Ep=(e,t,r,o,i,u,a)=>`\\n    fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\\n      var input_indices: ${e.type.indices};\\n      for (var i:u32 = 0; i < ${o.length}; i++) {\\n        var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\\n        var input_index: u32;\\n        var scale = ${fe(\"uniforms.scales\",\"i\",i)};\\n        if (scale == 1.0) {\\n          input_index = output_index;\\n        } else {\\n          var roi_low = ${fe(\"uniforms.roi\",\"i\",u)};\\n          var roi_hi = ${fe(\"uniforms.roi\",`i + ${r.length}`,u)};\\n          var input_shape_i = ${fe(\"uniforms.input_shape\",\"i\",r.length)};\\n          var output_shape_i = ${fe(\"uniforms.output_shape\",\"i\",o.length)};\\n          var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,\\n                                                                        input_shape_i, roi_low, roi_hi);\\n          if (!${a} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {\\n            if (original_idx < 0) {\\n              input_index = 0;\\n            } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {\\n              input_index = input_shape_i - 1;\\n            } else {\\n              input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));\\n            }\\n          } else {\\n            input_index = u32(original_idx);\\n          }\\n        }\\n        ${e.indicesSet(\"input_indices\",\"i\",\" input_index\")}\\n      }\\n      return input_indices;\\n    }`,Pp=(e,t)=>`\\n    fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {\\n      for (var i:u32 = 0; i < ${t.length}; i++) {\\n        var input_index = ${e.indicesGet(\"input_indices\",\"i\")};\\n        if (input_index < 0 || input_index >= ${fe(\"uniforms.input_shape\",\"i\",t.length)}) {\\n          return false;\\n        }\\n      }\\n      return true;\\n    }`,fd=(e,t,r,o)=>e.rank>o?`\\n    ${e.indicesSet(\"input_indices\",t,\"channel\")};\\n    ${e.indicesSet(\"input_indices\",r,\"batch\")};\\n`:\"\",kp=(e,t,r,o,i)=>{let[a,c,p,h]=r.length===2?[-1,0,1,-1]:[0,2,3,1],d=e.type.value;return`\\n    fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${d} {\\n      var input_indices: ${e.type.indices};\\n      ${e.indicesSet(\"input_indices\",c,`max(0, min(row, ${r[c]} - 1))`)};\\n      ${e.indicesSet(\"input_indices\",p,`max(0, min(col, ${r[p]} - 1))`)};\\n      ${fd(e,h,a,2)}\\n      return ${e.getByIndices(\"input_indices\")};\\n    }\\n\\n    fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${d} {\\n      var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\\n      var row:${d} = originalIndices[${c}];\\n      var col:${d} = originalIndices[${p}];\\n      ${o?`if (row < 0 || row > (${r[c]} - 1) || col < 0 || col > (${r[p]} - 1)) {\\n        return ${i};\\n      }`:\"\"};\\n      row = max(0, min(row, ${r[c]} - 1));\\n      col = max(0, min(col, ${r[p]} - 1));\\n      var row1: u32 = u32(row);\\n      var col1: u32 = u32(col);\\n      var row2: u32 = u32(row + 1);\\n      var col2: u32 = u32(col + 1);\\n      var channel: u32 = ${r.length>2?`u32(originalIndices[${h}])`:\"0\"};\\n      var batch: u32 =  ${r.length>2?`u32(originalIndices[${a}])`:\"0\"};\\n      var x11: ${d} = getInputValue(batch, channel, row1, col1);\\n      var x12: ${d} = getInputValue(batch, channel, row1, col2);\\n      var x21: ${d} = getInputValue(batch, channel, row2, col1);\\n      var x22: ${d} = getInputValue(batch, channel, row2, col2);\\n      var dx1: ${d} = abs(row - ${d}(row1));\\n      var dx2: ${d} = abs(${d}(row2) - row);\\n      var dy1: ${d} = abs(col - ${d}(col1));\\n      var dy2: ${d} = abs(${d}(col2) - col);\\n      if (row1 == row2) {\\n        dx1 = 0.5;\\n        dx2 = 0.5;\\n      }\\n      if (col1 == col2) {\\n        dy1 = 0.5;\\n        dy2 = 0.5;\\n      }\\n      return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);\\n    }`},Op=(e,t,r,o,i,u,a,c,p,h)=>{let d=r.length===2,y=!0,[w,_]=d?[0,1]:y?[2,3]:[1,2],v=e.type.value,S=A=>{let I=A===w?\"row\":\"col\";return`\\n      fn ${I}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${v} {\\n        var output_index = ${t.indicesGet(\"output_indices\",A)};\\n        var originalIdx: ${v} = getOriginalCoordinateFromResizedCoordinate(output_index, ${i[A]},\\n        ${o[A]}, ${r[A]}, ${u[A]}, ${u[A]} + ${r.length});\\n        var fractOriginalIdx: ${v} = originalIdx - floor(originalIdx);\\n        var coefs = getCubicInterpolationCoefs(fractOriginalIdx);\\n\\n        if (${c} && (originalIdx < 0 || originalIdx > (${r[A]} - 1))) {\\n          return ${p};\\n        }\\n        var data: array<${v}, 4> = array<${v}, 4>(0.0, 0.0, 0.0, 0.0);\\n        for (var i: i32 = -1; i < 3; i++) {\\n          var ${I}: ${v} = originalIdx + ${v}(i);\\n          if (${I} < 0 || ${I} >= ${r[A]}) {\\n            ${(()=>h?`coefs[i + 1] = 0.0;\\n                        continue;`:c?`return ${p};`:`${I} = max(0, min(${I}, ${r[A]} - 1));`)()};\\n          }\\n        var input_indices_copy: ${e.type.indices} = input_indices;\\n          ${e.indicesSet(\"input_indices_copy\",A,`u32(${I})`)};\\n          data[i + 1] = ${A===w?e.getByIndices(\"input_indices_copy\"):\"rowCubicInterpolation(input_indices_copy, output_indices)\"};\\n        }\\n        return cubicInterpolation1D(data, coefs);\\n      }`};return`\\n    ${S(w)};\\n    ${S(_)};\\n  fn getCubicInterpolationCoefs(s: ${v}) -> array<${v}, 4> {\\n    var absS = abs(s);\\n    var coeffs: array<${v}, 4> = array<${v}, 4>(0.0, 0.0, 0.0, 0.0);\\n    var oneMinusAbsS: ${v} = 1.0 - absS;\\n    var twoMinusAbsS: ${v} = 2.0 - absS;\\n    var onePlusAbsS: ${v} = 1.0 + absS;\\n    coeffs[0] = ((${a} * onePlusAbsS - 5 * ${a}) * onePlusAbsS + 8 * ${a}) * onePlusAbsS - 4 * ${a};\\n    coeffs[1] = ((${a} + 2) * absS - (${a} + 3)) * absS * absS + 1;\\n    coeffs[2] = ((${a} + 2) * oneMinusAbsS - (${a} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;\\n    coeffs[3] = ((${a} * twoMinusAbsS - 5 * ${a}) * twoMinusAbsS + 8 * ${a}) * twoMinusAbsS - 4 * ${a};\\n    return coeffs;\\n  }\\n\\n  fn cubicInterpolation1D(x: array<${v}, 4>, coefs: array<${v}, 4>) -> ${v} {\\n    var coefsSum: ${v} = coefs[0] + coefs[1] + coefs[2] + coefs[3];\\n    return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;\\n  }\\n\\n  fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${v} {\\n    var input_indices: ${e.type.indices} = output_indices;\\n    return colCubicInterpolation(input_indices, output_indices);\\n  }\\n    `},Rp=(e,t,r,o,i)=>{let[a,c,p,h,d]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],y=e.type.value;return`\\n    fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${y} {\\n      var input_indices: ${e.type.indices};\\n      ${e.indicesSet(\"input_indices\",c,`max(0, min(depth, ${r[c]} - 1))`)};\\n      ${e.indicesSet(\"input_indices\",p,`max(0, min(height, ${r[p]} - 1))`)};\\n      ${e.indicesSet(\"input_indices\",h,`max(0, min(width, ${r[h]} - 1))`)};\\n      ${fd(e,d,a,3)}\\n      return ${e.getByIndices(\"input_indices\")};\\n    }\\n\\n    fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${y} {\\n      var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);\\n      var depth:${y} = originalIndices[${c}];\\n      var height:${y} = originalIndices[${p}];\\n      var width:${y} = originalIndices[${h}];\\n      ${o?`if (depth < 0 || depth > (${r[c]} - 1) || height < 0 || height > (${r[p]} - 1) || width < 0 || (width > ${r[h]} - 1)) {\\n      return ${i};\\n        }`:\"\"};\\n\\n    depth = max(0, min(depth, ${r[c]} - 1));\\n      height = max(0, min(height, ${r[p]} - 1));\\n      width = max(0, min(width, ${r[h]} - 1));\\n      var depth1: u32 = u32(depth);\\n      var height1: u32 = u32(height);\\n      var width1: u32 = u32(width);\\n      var depth2: u32 = u32(depth + 1);\\n      var height2: u32 = u32(height + 1);\\n      var width2: u32 = u32(width + 1);\\n      var channel: u32 = ${r.length>3?`u32(originalIndices[${d}])`:\"0\"};\\n      var batch: u32 =  ${r.length>3?`u32(originalIndices[${a}])`:\"0\"};\\n\\n      var x111: ${y} = getInputValue(batch, channel, depth1, height1, width1);\\n      var x112: ${y} = getInputValue(batch, channel, depth1, height1, width2);\\n      var x121: ${y} = getInputValue(batch, channel, depth1, height2, width1);\\n      var x122: ${y} = getInputValue(batch, channel, depth1, height2, width2);\\n      var x211: ${y} = getInputValue(batch, channel, depth2, height1, width1);\\n      var x212: ${y} = getInputValue(batch, channel, depth2, height1, width2);\\n      var x221: ${y} = getInputValue(batch, channel, depth2, height2, width1);\\n      var x222: ${y} = getInputValue(batch, channel, depth2, height2, width2);\\n      var dx1: ${y} = abs(depth - ${y}(depth1));\\n      var dx2: ${y} = abs(${y}(depth2) - depth);\\n      var dy1: ${y} = abs(height - ${y}(height1));\\n      var dy2: ${y} = abs(${y}(height2) - height);\\n      var dz1: ${y} = abs(width - ${y}(width1));\\n      var dz2: ${y} = abs(${y}(width2) - width);\\n      if (depth1 == depth2) {\\n        dx1 = 0.5;\\n        dx2 = 0.5;\\n      }\\n      if (height1 == height2) {\\n        dy1 = 0.5;\\n        dy2 = 0.5;\\n      }\\n      if (width1 == width2) {\\n        dz1 = 0.5;\\n        dz2 = 0.5;\\n      }\\n      return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +\\n              x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);\\n    }`},Bp=(e,t,r,o,i,u)=>{let a=e.dims,c=Cp(u,t.axes,a.length),p=Ap(a,o,i,t.axes),h=o.slice();o.length===0&&(h=a.map((x,E)=>x===0?1:p[E]/x),t.keepAspectRatioPolicy!==\"stretch\"&&(p=Ip(a,h,t)));let d=j(\"output\",e.dataType,p.length),y=U(\"input\",e.dataType,a.length),w=M.size(p),_=a.length===p.length&&a.every((x,E)=>x===p[E]),v=t.coordinateTransformMode===\"tf_crop_and_resize\",S=t.extrapolationValue,A=y.type.value,I=x=>`\\n      ${_?\"\":`\\n      ${Sp(t.coordinateTransformMode,A)};\\n      ${(()=>{switch(t.mode){case\"nearest\":return`\\n              ${Pp(y,a)};\\n              ${xp(t.nearestMode,r,A)};\\n              ${Ep(y,d,a,p,h.length,c.length,v)};\\n              `;case\"linear\":return`\\n              ${Tp(d,a,p,h.length,c.length)};\\n              ${(()=>{if(a.length===2||a.length===4)return`${kp(y,d,a,v,S)}`;if(a.length===3||a.length===5)return`${Rp(y,d,a,v,S)}`;throw Error(\"Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.\")})()};\\n            `;case\"cubic\":return`\\n            ${(()=>{if(a.length===2||a.length===4)return`${Op(y,d,a,p,h,c,t.cubicCoeffA,v,t.extrapolationValue,t.excludeOutside)}`;throw Error(\"Cubic mode only supports input dims 2 and 4 are supported in linear mode.\")})()};\\n            `;default:throw Error(\"Invalid resize mode\")}})()};\\n      `}\\n      ${x.registerUniform(\"output_size\",\"u32\").registerUniform(\"scales\",\"f32\",h.length).registerUniform(\"roi\",\"f32\",c.length).declareVariables(y,d)}\\n      ${x.mainStart()}\\n        ${x.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n        ${_?\"output[global_idx] = input[global_idx];\":`\\n        let output_indices = ${d.offsetToIndices(\"global_idx\")};\\n        var input_indices: ${y.type.indices};\\n        ${(()=>{switch(t.mode){case\"nearest\":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);\\n                if (checkInputIndices(input_indices)) {\\n                  output[global_idx] = ${y.getByIndices(\"input_indices\")};\\n                } else {\\n                  output[global_idx] = ${t.extrapolationValue};\\n                }`;case\"linear\":return`output[global_idx] = ${a.length===2||a.length===4?\"bilinearInterpolation\":\"trilinearInterpolation\"}(output_indices);`;case\"cubic\":return\"output[global_idx] = bicubicInterpolation(output_indices);\";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};\\n`}\\n      }`;return{name:\"Resize\",shaderCache:{hint:`${t.cacheKey}|${r}|${h.length>0?h:\"\"}|${i.length>0?i:\"\"}|${c.length>0?c:\"\"}|${_}|${a}`,inputDependencies:[\"rank\"]},getShaderSource:I,getRunData:()=>({outputs:[{dims:p,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(w/64)},programUniforms:[{type:12,data:w},{type:1,data:h},{type:1,data:c},...Z(a,p)]})}},Dp=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},hd=(e,t)=>{let r=[],o=[],i=[],u=Dp(e);if(t.antialias!==0)throw Error(\"Only default value (0) for Antialias attribute is supported\");_p(e.inputs,t,u,r,o,i),e.compute(Bp(e.inputs[0],t,u,r,o,i),{inputs:[0]})},gd=e=>{let t=e.antialias,r=e.axes,o=e.coordinateTransformMode,i=e.cubicCoeffA,u=e.excludeOutside!==0,a=e.extrapolationValue,c=e.keepAspectRatioPolicy,p=e.mode,h=e.nearestMode===\"\"?\"simple\":e.nearestMode;return ve({antialias:t,axes:r,coordinateTransformMode:o,cubicCoeffA:i,excludeOutside:u,extrapolationValue:a,keepAspectRatioPolicy:c,mode:p,nearestMode:h})}});var zp,Mp,bd,wd=Y(()=>{\"use strict\";ye();Se();Ze();_e();zp=(e,t)=>{let[r,o,i,u]=e,{numHeads:a,rotaryEmbeddingDim:c}=t;if(r.dims.length!==3&&r.dims.length!==4)throw new Error(`Input \\'x\\' is expected to have 3 or 4 dimensions, got ${r.dims.length}`);if(!M.areEqual(o.dims,[])&&!M.areEqual(o.dims,[1])&&o.dims.length!==2)throw new Error(`Input \\'position_ids\\' is expected to have 0, 1, or 2 dimensions, got ${o.dims.length}`);if(i.dims.length!==2)throw new Error(`Input \\'cos_cache\\' is expected to have 2 dimensions, got ${i.dims.length}`);if(u.dims.length!==2)throw new Error(`Input \\'sin_cache\\' is expected to have 2 dimensions, got ${u.dims.length}`);if(!M.areEqual(i.dims,u.dims))throw new Error(\"Inputs \\'cos_cache\\' and \\'sin_cache\\' are expected to have the same shape\");if(c>0&&a===0)throw new Error(\"num_heads must be provided if rotary_embedding_dim is specified\");let p=r.dims[0],h=r.dims[r.dims.length-2],d=i.dims[0],y=M.sizeFromDimension(r.dims,1)/h,w=c===0?i.dims[1]*2:y/a;if(c>w)throw new Error(\"rotary_embedding_dim must be less than or equal to head_size\");if(o.dims.length===2){if(p!==o.dims[0])throw new Error(`Input \\'position_ids\\' dimension 0 should be of size batch_size, got ${o.dims[0]}`);if(h!==o.dims[1])throw new Error(`Input \\'position_ids\\' dimension 1 should be of size sequence_length, got ${o.dims[1]}`)}if(w/2!==i.dims[1]&&c/2!==i.dims[1])throw new Error(`Input \\'cos_cache\\' dimension 1 should be same as head_size / 2 or rotary_embedding_dim / 2, got ${i.dims[1]}`);if(h>d)throw new Error(\"Updating cos_cache and sin_cache in RotaryEmbedding is not currently supported\")},Mp=(e,t)=>{let{interleaved:r,numHeads:o,rotaryEmbeddingDim:i,scale:u}=t,a=e[0].dims[0],c=M.sizeFromDimension(e[0].dims,1),p=e[0].dims[e[0].dims.length-2],h=c/p,d=e[2].dims[1],y=i===0?d*2:h/o,w=new Array(a,p,h/y,y-d),_=M.computeStrides(w),v=[{type:1,data:u},{type:12,data:w},{type:12,data:_},...e[0].dims.length===3?new Array({type:12,data:[c,h,y,1]}):[],...e[0].dims.length===4?new Array({type:12,data:[c,y,p*y,1]}):[],...Z(e[0].dims,e[1].dims,e[2].dims,e[3].dims,e[0].dims)],S=A=>{let I=U(\"input\",e[0].dataType,e[0].dims.length),x=U(\"position_ids\",e[1].dataType,e[1].dims.length),E=U(\"cos_cache\",e[2].dataType,e[2].dims.length),P=U(\"sin_cache\",e[3].dataType,e[3].dims.length),O=j(\"output\",e[0].dataType,e[0].dims.length);return A.registerUniforms([{name:\"scale\",type:\"f32\"},{name:\"global_shape\",type:\"u32\",length:w.length},{name:\"global_strides\",type:\"u32\",length:_.length},{name:\"input_output_strides\",type:\"u32\",length:_.length}]),`\\n        ${A.declareVariables(I,x,E,P,O)}\\n\\n        ${A.mainStart(or)}\\n          let half_rotary_emb_dim = uniforms.${E.name}_shape[1];\\n          let bsnh = global_idx / uniforms.global_strides % uniforms.global_shape;\\n          let size = uniforms.global_shape[0] * uniforms.global_strides[0];\\n          ${A.guardAgainstOutOfBoundsWorkgroupSizes(\"size\")}\\n\\n          if (bsnh[3] < half_rotary_emb_dim) {\\n            let position_ids_idx =\\n                ${x.broadcastedIndicesToOffset(\"bsnh.xy\",j(\"\",x.type.tensor,2))};\\n            let position_id =\\n                u32(${x.getByOffset(\"position_ids_idx\")}) + select(0, bsnh[1], position_ids_idx == 0);\\n            let i = dot(bsnh, uniforms.input_output_strides) + select(0, bsnh[3], ${r});\\n            let j = i + select(half_rotary_emb_dim, 1, ${r});\\n            let re = ${I.getByOffset(\"i\")} * ${E.get(\"position_id\",\"bsnh[3]\")} -\\n                ${I.getByOffset(\"j\")} * ${P.get(\"position_id\",\"bsnh[3]\")};\\n            ${O.setByOffset(\"i\",\"re\")}\\n            let im = ${I.getByOffset(\"i\")} * ${P.get(\"position_id\",\"bsnh[3]\")} +\\n                ${I.getByOffset(\"j\")} * ${E.get(\"position_id\",\"bsnh[3]\")};\\n            ${O.setByOffset(\"j\",\"im\")}\\n          } else {\\n            let k = dot(bsnh, uniforms.input_output_strides) + half_rotary_emb_dim;\\n            ${O.setByOffset(\"k\",I.getByOffset(\"k\"))}\\n          }\\n        }`};return{name:\"RotaryEmbedding\",shaderCache:{hint:ve({interleaved:r}).cacheKey,inputDependencies:[\"rank\",\"rank\",\"rank\",\"rank\"]},getShaderSource:S,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(M.size(w)/or)},programUniforms:v})}},bd=(e,t)=>{zp(e.inputs,t),e.compute(Mp(e.inputs,t))}});var Up,Vp,vd,$d=Y(()=>{\"use strict\";ye();Se();_e();Up=e=>{if(!e||e.length<3)throw new Error(\"layerNorm requires at least 3 inputs.\");let t=e[0],r=e[1],o=e[2];if(t.dataType!==r.dataType||t.dataType!==o.dataType)throw new Error(\"All inputs must have the same data type\");if(t.dims.length!==3&&t.dims.length!==2)throw new Error(\"Input must be 2D or 3D\");if(r.dims.length!==3&&r.dims.length!==2)throw new Error(\"Skip must be 2D or 3D\");let i=t.dims[t.dims.length-1],u=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==i)throw new Error(\"Skip must have the same hidden size as input\");if(r.dims[r.dims.length-2]!==u)throw new Error(\"Skip must have the same sequence length as input\");if(o.dims.length!==1)throw new Error(\"Gamma must be 1D\");if(o.dims[o.dims.length-1]!==i)throw new Error(\"Gamma must have the same hidden size as input\");if(e.length>3){let a=e[3];if(a.dims.length!==1)throw new Error(\"Beta must be 1D\");if(a.dims[a.dims.length-1]!==i)throw new Error(\"Beta must have the same hidden size as input\")}if(e.length>4){let a=e[4];if(a.dims.length!==1)throw new Error(\"Bias must be 1D\");if(a.dims[a.dims.length-1]!==i)throw new Error(\"Bias must have the same hidden size as input\")}},Vp=(e,t,r,o)=>{let i=t.simplified,u=e[0].dims,a=M.size(u),c=u,p=a,h=u.slice(-1)[0],d=o?u.slice(0,-1).concat(1):[],y=!i&&e.length>3,w=e.length>4,_=o&&r>1,v=o&&r>2,S=r>3,A=Me(h),I=[{type:12,data:p},{type:12,data:A},{type:12,data:h},{type:1,data:t.epsilon}],x=P=>{let O=[{name:\"output_size\",type:\"u32\"},{name:\"components\",type:\"u32\"},{name:\"hidden_size\",type:\"u32\"},{name:\"epsilon\",type:\"f32\"}],R=[U(\"x\",e[0].dataType,e[0].dims,A),U(\"skip\",e[1].dataType,e[1].dims,A),U(\"gamma\",e[2].dataType,e[2].dims,A)];y&&R.push(U(\"beta\",e[3].dataType,e[3].dims,A)),w&&R.push(U(\"bias\",e[4].dataType,e[4].dims,A)),R.push(j(\"output\",e[0].dataType,c,A)),_&&R.push(j(\"mean_output\",1,d)),v&&R.push(j(\"inv_std_output\",1,d)),S&&R.push(j(\"input_skip_bias_sum\",e[0].dataType,c,A));let L=De(e[0].dataType);return`\\n\\n      ${P.registerUniforms(O).declareVariables(...R)}\\n\\n      ${P.mainStart()}\\n        ${P.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size / uniforms.hidden_size\")}\\n        let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components;\\n        let offset = global_idx * hidden_size_vectorized;\\n        var sum = ${$t(\"f32\",A)};\\n        var squareSum = ${$t(\"f32\",A)};\\n        for (var i: u32 = 0; i < hidden_size_vectorized; i++) {\\n          let skip_value = skip[offset + i];\\n          let bias_value = ${w?\"bias[i]\":L+\"(0.0)\"};\\n          let input_value = x[offset + i];\\n          let value = input_value + skip_value + bias_value;\\n          ${S?\"input_skip_bias_sum[offset + i] = value;\":\"\"}\\n          output[offset + i] = value;\\n          let f32_value = ${ir(L,A,\"value\")};\\n          sum += f32_value;\\n          squareSum += f32_value * f32_value;\\n        }\\n        let mean = ${_t(\"sum\",A)} / f32(uniforms.hidden_size);\\n        let inv_std_dev = inverseSqrt(${_t(\"squareSum\",A)} / f32(uniforms.hidden_size) ${i?\"\":\"- mean * mean\"} + uniforms.epsilon);\\n        ${_?\"mean_output[global_idx] = mean;\":\"\"}\\n        ${v?\"inv_std_output[global_idx] = inv_std_dev;\":\"\"}\\n        for (var i: u32 = 0; i < hidden_size_vectorized; i++) {\\n          output[offset + i] = (output[offset + i] ${i?\"\":`- ${L}(mean)`}) * ${L}(inv_std_dev) * gamma[i] ${y?\"+ beta[i]\":\"\"};\\n        }\\n      }`},E=[{dims:c,dataType:e[0].dataType}];return r>1&&E.push({dims:d,dataType:1}),r>2&&E.push({dims:d,dataType:1}),r>3&&E.push({dims:u,dataType:e[0].dataType}),{name:\"SkipLayerNormalization\",shaderCache:{hint:`${A};${_};${v};${S}`,inputDependencies:e.map((P,O)=>\"type\")},getShaderSource:x,getRunData:()=>({outputs:E,dispatchGroup:{x:Math.ceil(p/h/64)},programUniforms:I})}},vd=(e,t)=>{Up(e.inputs);let o=[0];e.outputCount>1&&o.push(-3),e.outputCount>2&&o.push(-3),e.outputCount>3&&o.push(3),e.compute(Vp(e.inputs,t,e.outputCount,!1),{outputs:o})}});var Wp,Gn,Np,_d,Gp,Hp,Sd,xd,Cd=Y(()=>{\"use strict\";ye();Se();Ze();_e();Wp=(e,t)=>{if(!e||e.length<1)throw new Error(\"too few inputs\");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error(\"axes, starts and ends must have the same length\")}else if(t.starts.length!==t.ends.length)throw new Error(\"starts and ends must have the same length\");e.slice(1).forEach((r,o)=>{if(e[o+1].dataType!==6&&e[o+1].dataType!==7)throw new Error(`Input ${o} must be an array of int32 or int64`)})},Gn=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(o=>r.push(Number(o)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(o=>r.push(Number(o)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},Np=(e,t)=>{if(e.length>1){let r=Gn(e,1),o=Gn(e,2),i=Gn(e,3);return i.length===0&&(i=[...Array(e[0].dims.length).keys()]),ve({starts:r,ends:o,axes:i})}else return t},_d=(e,t,r,o,i)=>{let u=e;return e<0&&(u+=r[o[t]]),i[t]<0?Math.max(0,Math.min(u,r[o[t]]-1)):Math.max(0,Math.min(u,r[o[t]]))},Gp=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {\\n          var input_indices: ${e.type.indices};\\n          var carry = 0u;\\n          for (var i = ${r.length}; i >= 0; i--) {\\n            let input_shape_i = ${fe(\"uniforms.input_shape\",\"i\",r.length)};\\n            let steps_i = ${fe(\"uniforms.steps\",\"i\",r.length)};\\n            let signs_i = ${fe(\"uniforms.signs\",\"i\",r.length)};\\n            let starts_i = ${fe(\"uniforms.starts\",\"i\",r.length)};\\n            var output_index = ${t.indicesGet(\"output_indices\",\"i\")};\\n            var input_index = output_index * steps_i + starts_i + carry;\\n            carry = input_index / input_shape_i;\\n            input_index = input_index % input_shape_i;\\n            if (signs_i < 0) {\\n              input_index = input_shape_i - input_index - 1u + starts_i;\\n            }\\n            ${e.indicesSet(\"input_indices\",\"i\",\"input_index\")};\\n          }\\n          return input_indices;\\n      }`,Hp=(e,t)=>{let r=e[0].dims,o=M.size(r),i=t.axes.length>0?M.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],u=Gn(e,4);u.forEach(I=>I!==0||(()=>{throw new Error(\"step cannot be 0\")})),u.length===0&&(u=Array(i.length).fill(1));let a=t.starts.map((I,x)=>_d(I,x,r,i,u)),c=t.ends.map((I,x)=>_d(I,x,r,i,u));if(i.length!==a.length||i.length!==c.length)throw new Error(\"start, ends and axes should have the same number of elements\");if(i.length!==r.length)for(let I=0;I<r.length;++I)i.includes(I)||(a.splice(I,0,0),c.splice(I,0,r[I]),u.splice(I,0,1));let p=u.map(I=>Math.sign(I));u.forEach((I,x,E)=>{if(I<0){let P=(c[x]-a[x])/I,O=a[x],R=O+P*u[x];a[x]=R,c[x]=O,E[x]=-I}});let h=r.slice(0);i.forEach((I,x)=>{h[I]=Math.ceil((c[I]-a[I])/u[I])});let d={dims:h,dataType:e[0].dataType},y=j(\"output\",e[0].dataType,h.length),w=U(\"input\",e[0].dataType,e[0].dims.length),_=M.size(h),v=[{name:\"outputSize\",type:\"u32\"},{name:\"starts\",type:\"u32\",length:a.length},{name:\"signs\",type:\"i32\",length:p.length},{name:\"steps\",type:\"u32\",length:u.length}],S=[{type:12,data:_},{type:12,data:a},{type:6,data:p},{type:12,data:u},...Z(e[0].dims,h)],A=I=>`\\n      ${I.registerUniforms(v).declareVariables(w,y)}\\n        ${Gp(w,y,r)}\\n        ${I.mainStart()}\\n          ${I.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.outputSize\")}\\n          let output_indices = ${y.offsetToIndices(\"global_idx\")};\\n          let input_indices = calculateInputIndices(output_indices);\\n          ${y.setByOffset(\"global_idx\",w.getByIndices(\"input_indices\"))}\\n      }`;return{name:\"Slice\",shaderCache:{hint:`${p.length}_${a.length}_${u.length}`,inputDependencies:[\"rank\"]},getShaderSource:A,getRunData:()=>({outputs:[d],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:S})}},Sd=(e,t)=>{Wp(e.inputs,t);let r=Np(e.inputs,t);e.compute(Hp(e.inputs,r),{inputs:[0]})},xd=e=>{let t=e.starts,r=e.ends,o=e.axes;return ve({starts:t,ends:r,axes:o})}});var Lp,Fp,Ad,Id,Td=Y(()=>{\"use strict\";ye();Se();Ze();_e();Lp=e=>{if(!e||e.length!==1)throw new Error(\"Softmax op requires 1 input.\")},Fp=(e,t)=>{let r=e.dims,o=M.size(r),i=64,u=t.axis;if(u<0&&(u=r.length+u),u<r.length-1)throw new Error(\"softmax only supports last axis for now.\");let a=r[u],c=o/a,p=Me(a),h=a/p,d=(A,I)=>I===4?`max(max(${A}.x, ${A}.y), max(${A}.z, ${A}.w))`:I===2?`max(${A}.x, ${A}.y)`:I===3?`max(max(${A}.x, ${A}.y), ${A}.z)`:A,y=U(\"x\",e.dataType,e.dims,p),w=j(\"result\",e.dataType,e.dims,p),_=y.type.value,v=De(e.dataType)===\"f32\"?`var threadMax = ${_}(-3.402823e+38f);`:`var threadMax = ${_}(-65504.0h);`,S=A=>`\\n      var<workgroup> rowMaxShared : ${_};\\n      var<workgroup> rowSumShared : ${_};\\n      var<workgroup> threadShared : array<${_}, ${i}>;\\n\\n      fn getValue(row: i32, col: i32, row_stride: i32) -> ${_} {\\n        let index = row * row_stride + col;\\n        return x[index];\\n      }\\n\\n      fn setValue(row: i32, col: i32, row_stride: i32, value: ${_}) {\\n        let index = row * row_stride + col;\\n        result[index] = value;\\n      }\\n      ${A.registerUniform(\"packedCols\",\"i32\").declareVariables(y,w)}\\n      ${A.mainStart()}\\n        let gindex = i32(global_idx);\\n        let lindex = i32(local_idx);\\n        const wg = ${i};\\n        let row = gindex / wg;\\n        let cols = uniforms.packedCols;\\n        let row_stride : i32 = uniforms.packedCols;\\n\\n        // find the rows max\\n        ${v}\\n        for (var col = lindex; col < cols; col += wg) {\\n          let value = getValue(row, col, row_stride);\\n          threadMax = max(threadMax, value);\\n        }\\n        if (lindex < cols) {\\n          threadShared[lindex] = threadMax;\\n        }\\n        workgroupBarrier();\\n\\n        var reduceSize = min(cols, wg);\\n        for (var currSize = reduceSize >> 1;  currSize > 0; currSize = reduceSize >> 1) {\\n          reduceSize = currSize + (reduceSize & 1);\\n          if (lindex < currSize) {\\n            threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);\\n          }\\n          workgroupBarrier();\\n        }\\n        if (lindex == 0) {\\n          rowMaxShared = ${_}(${d(\"threadShared[0]\",p)});\\n        }\\n        workgroupBarrier();\\n\\n        // find the rows sum\\n        var threadSum = ${_}(0.0);\\n        for (var col = lindex; col < cols; col += wg) {\\n          let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);\\n          threadSum += subExp;\\n        }\\n        threadShared[lindex] = threadSum;\\n        workgroupBarrier();\\n\\n        for (var currSize = wg >> 1;  currSize > 0; currSize = currSize >> 1) {\\n          if (lindex < currSize) {\\n            threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];\\n          }\\n          workgroupBarrier();\\n        }\\n        if (lindex == 0) {\\n          rowSumShared = ${_}(${_t(\"threadShared[0]\",p)});\\n        }\\n        workgroupBarrier();\\n\\n        // calculate final value for each element in the row\\n        for (var col = lindex; col < cols; col += wg) {\\n          let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;\\n          setValue(row, col, row_stride, value);\\n        }\\n      }`;return{name:\"Softmax\",shaderCache:{hint:`${p}`,inputDependencies:[\"type\"]},getRunData:()=>({outputs:[{dims:r,dataType:e.dataType}],dispatchGroup:{x:c},programUniforms:[{type:6,data:h}]}),getShaderSource:S}},Ad=(e,t)=>{Lp(e.inputs),e.compute(Fp(e.inputs[0],t))},Id=e=>ve({axis:e.axis})});var qp,jp,Kp,Yp,Zp,Ed,Pd,kd=Y(()=>{\"use strict\";ye();Se();Ze();_e();qp=e=>{if(!e||e.length<1)throw new Error(\"too few inputs\")},jp=(e,t)=>{let r=[],o=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(i=>r.push(Number(i))),o=r.length),ve({numOutputs:o,axis:t.axis,splitSizes:r})},Kp=e=>`\\nfn calculateOutputIndex(index: u32) -> u32 {\\n    for (var i: u32 = 0u; i < ${e}u; i += 1u ) {\\n    if (index < ${fe(\"uniforms.size_in_split_axis\",\"i\",e)}) {\\n        return i;\\n    }\\n    }\\n    return ${e}u;\\n}`,Yp=e=>{let t=e.length,r=[];for(let o=0;o<t;++o){let i=e[o].setByIndices(\"indices\",\"input[global_idx]\");t===1?r.push(i):o===0?r.push(`if (output_number == ${o}u) { ${i} }`):o===t-1?r.push(`else { ${i} }`):r.push(`else if (output_number == ${o}) { ${i} }`)}return`\\n      fn writeBufferData(output_number: u32, indices: ${e[0].type.indices}, global_idx: u32) {\\n        ${r.join(`\\n`)}\\n      }`},Zp=(e,t)=>{let r=e[0].dims,o=M.size(r),i=e[0].dataType,u=M.normalizeAxis(t.axis,r.length),a=new Array(t.numOutputs),c=U(\"input\",i,r.length),p=new Array(t.numOutputs),h=[],d=[],y=0,w=[{type:12,data:o}];for(let v=0;v<t.numOutputs;v++){y+=t.splitSizes[v],p[v]=y;let S=r.slice();S[t.axis]=t.splitSizes[v],d.push(S),a[v]=j(`output${v}`,i,S.length),h.push({dims:d[v],dataType:e[0].dataType})}w.push({type:12,data:p},...Z(r,...d));let _=v=>`\\n  ${v.registerUniform(\"input_size\",\"u32\").registerUniform(\"size_in_split_axis\",\"u32\",p.length).declareVariables(c,...a)}\\n  ${Kp(p.length)}\\n  ${Yp(a)}\\n\\n  ${v.mainStart()}\\n    ${v.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.input_size\")}\\n\\n    var indices = ${c.offsetToIndices(\"global_idx\")};\\n    var index = ${c.indicesGet(\"indices\",u)};\\n    let output_number = calculateOutputIndex(index);\\n    if (output_number != 0) {\\n      index -= ${fe(\"uniforms.size_in_split_axis\",\"output_number - 1u\",p.length)};\\n      ${c.indicesSet(\"indices\",u,\"index\")};\\n    }\\n    writeBufferData(output_number, indices, global_idx);\\n  }`;return{name:\"Split\",shaderCache:{hint:t.cacheKey,inputDependencies:[\"rank\"]},getShaderSource:_,getRunData:()=>({outputs:h,dispatchGroup:{x:Math.ceil(o/64)},programUniforms:w})}},Ed=(e,t)=>{qp(e.inputs);let r=e.inputs.length===1?t:jp(e.inputs,t);e.compute(Zp(e.inputs,r),{inputs:[0]})},Pd=e=>{let t=e.axis,r=e.splitSizes,o=e.numOutputs<0?r.length:e.numOutputs;if(o!==r.length)throw new Error(\"numOutputs and splitSizes lengh must be equal\");return ve({axis:t,numOutputs:o,splitSizes:r})}});var Od,Xp,Qp,Jp,Rd,Bd=Y(()=>{\"use strict\";ye();Se();_e();Od=e=>Array.from(e.getBigInt64Array(),Number),Xp=e=>{if(!e||e.length!==2)throw new Error(\"Tile requires 2 inputs.\");if(e[0].dataType!==1&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error(\"Tile only support float, int32, and uint32 data types\");if(e[1].dataType!==7)throw new Error(\"Tile `repeats` input should be of int64 data type\");if(e[1].dims.length!==1)throw new Error(\"Tile `repeats` input should be 1-D\");if(Od(e[1]).length!==e[0].dims.length)throw new Error(\"Tile `repeats` input should have same number of elements as rank of input data tensor\")},Qp=(e,t)=>{let r=[];for(let o=0;o<e.length;++o)r.push(e[o]*t[o]);return r},Jp=e=>{let t=e[0].dims,r=Od(e[1]),o=Qp(t,r),i=M.size(o),u=e[0].dataType,a=U(\"input\",u,t.length),c=j(\"output\",u,o.length),p=h=>`\\n      const inputShape = ${a.indices(...t)};\\n      ${h.registerUniform(\"output_size\",\"u32\").declareVariables(a,c)}\\n      ${h.mainStart()}\\n      ${h.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.output_size\")}\\n      let output_indices = ${c.offsetToIndices(\"global_idx\")};\\n      var input_indices: ${a.type.indices};\\n      for (var i = 0; i < ${t.length}; i++) {\\n        let input_dim_i = ${a.indicesGet(\"uniforms.input_shape\",\"i\")};\\n        let input_dim_value = ${c.indicesGet(\"output_indices\",\"i\")}  % input_dim_i;\\n\\n        ${a.indicesSet(\"input_indices\",\"i\",\"input_dim_value\")}\\n      }\\n      ${c.setByOffset(\"global_idx\",a.getByIndices(\"input_indices\"))}\\n    }`;return{name:\"Tile\",shaderCache:{hint:`${r}`,inputDependencies:[\"rank\"]},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:[{type:12,data:i},...Z(e[0].dims,o)]}),getShaderSource:p}},Rd=e=>{Xp(e.inputs),e.compute(Jp(e.inputs),{inputs:[0]})}});var em,tm,Dd,zd=Y(()=>{\"use strict\";ye();Se();_e();em=(e,t,r,o,i)=>{let u=j(\"output_data\",i,r.length,4),a=U(\"a_data\",t[1].dataType,t[1].dims.length,4),c=U(\"b_data\",t[2].dataType,t[2].dims.length,4),p=U(\"c_data\",t[0].dataType,t[0].dims.length,4),h,d=(y,w,_)=>`select(${w}, ${y}, ${_})`;if(!o)h=u.setByOffset(\"global_idx\",d(a.getByOffset(\"global_idx\"),c.getByOffset(\"global_idx\"),p.getByOffset(\"global_idx\")));else{let y=(w,_,v=\"\")=>{let S=`a_data[index_a${_}][component_a${_}]`,A=`b_data[index_b${_}][component_b${_}]`,I=`bool(c_data[index_c${_}] & (0xffu << (component_c${_} * 8)))`;return`\\n            let output_indices${_} = ${u.offsetToIndices(`global_idx * 4u + ${_}u`)};\\n            let offset_a${_} = ${a.broadcastedIndicesToOffset(`output_indices${_}`,u)};\\n            let offset_b${_} = ${c.broadcastedIndicesToOffset(`output_indices${_}`,u)};\\n            let offset_c${_} = ${p.broadcastedIndicesToOffset(`output_indices${_}`,u)};\\n            let index_a${_} = offset_a${_} / 4u;\\n            let index_b${_} = offset_b${_} / 4u;\\n            let index_c${_} = offset_c${_} / 4u;\\n            let component_a${_} = offset_a${_} % 4u;\\n            let component_b${_} = offset_b${_} % 4u;\\n            let component_c${_} = offset_c${_} % 4u;\\n            ${w}[${_}] = ${v}(${d(S,A,I)});\\n          `};i===9?h=`\\n            var data = vec4<u32>(0);\\n            ${y(\"data\",0,\"u32\")}\\n            ${y(\"data\",1,\"u32\")}\\n            ${y(\"data\",2,\"u32\")}\\n            ${y(\"data\",3,\"u32\")}\\n            output_data[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:h=`\\n            ${y(\"output_data[global_idx]\",0)}\\n            ${y(\"output_data[global_idx]\",1)}\\n            ${y(\"output_data[global_idx]\",2)}\\n            ${y(\"output_data[global_idx]\",3)}\\n          `}return`\\n        ${e.registerUniform(\"vec_size\",\"u32\").declareVariables(p,a,c,u)}\\n        ${e.mainStart()}\\n        ${e.guardAgainstOutOfBoundsWorkgroupSizes(\"uniforms.vec_size\")}\\n        ${h}\\n      }`},tm=e=>{let t=e[1].dims,r=e[2].dims,o=e[0].dims,i=e[1].dataType,u=!(M.areEqual(t,r)&&M.areEqual(r,o)),a=t,c=M.size(t);if(u){let h=It.calcShape(It.calcShape(t,r,!1),o,!1);if(!h)throw new Error(\"Can\\'t perform where op on the given tensors\");a=h,c=M.size(a)}let p=Math.ceil(c/4);return{name:\"Where\",shaderCache:{inputDependencies:[\"rank\",\"rank\",\"rank\"]},getShaderSource:h=>em(h,e,a,u,i),getRunData:()=>({outputs:[{dims:a,dataType:i}],dispatchGroup:{x:Math.ceil(c/64/4)},programUniforms:[{type:12,data:p},...Z(o,t,r,a)]})}},Dd=e=>{e.compute(tm(e.inputs))}});var Md,Ud=Y(()=>{\"use strict\";Ka();Ro();Ja();ts();Vs();Zs();Oo();Uo();lu();mu();gu();$u();xu();Au();Eu();Ou();Du();Mu();Vu();Wo();Gu();qu();Ku();cd();md();In();yd();wd();$d();Cd();Td();kd();Bd();Sr();Rn();zd();Md=new Map([[\"Abs\",[rs]],[\"Acos\",[ns]],[\"Acosh\",[os]],[\"Add\",[Ws]],[\"ArgMax\",[ja,ko]],[\"ArgMin\",[qa,ko]],[\"Asin\",[is]],[\"Asinh\",[as]],[\"Atan\",[ss]],[\"Atanh\",[us]],[\"Attention\",[Xa]],[\"AveragePool\",[rd,td]],[\"BatchNormalization\",[Qa]],[\"BiasAdd\",[es]],[\"BiasSplitGelu\",[Us]],[\"Cast\",[ls,ds]],[\"Ceil\",[ps]],[\"Clip\",[cs]],[\"Concat\",[Ya,Za]],[\"Conv\",[Ho,Go]],[\"ConvTranspose\",[du,uu]],[\"Cos\",[ms]],[\"Cosh\",[fs]],[\"CumSum\",[cu,pu]],[\"DepthToSpace\",[fu,hu]],[\"Div\",[Ns]],[\"Einsum\",[wu,vu]],[\"Elu\",[hs,kn]],[\"Equal\",[Gs]],[\"Erf\",[gs]],[\"Exp\",[ys]],[\"Expand\",[Su]],[\"FastGelu\",[Cu]],[\"Floor\",[bs]],[\"FusedConv\",[Ho,Go]],[\"Gather\",[Tu,Iu]],[\"GatherElements\",[ku,Pu]],[\"Gelu\",[ws]],[\"Gemm\",[Bu,Ru]],[\"GlobalAveragePool\",[id,od]],[\"GlobalMaxPool\",[ld,dd]],[\"Greater\",[qs]],[\"GreaterOrEqual\",[Ks]],[\"HardSigmoid\",[Is,As]],[\"InstanceNormalization\",[zu]],[\"LayerNormalization\",[Uu]],[\"LeakyRelu\",[vs,kn]],[\"Less\",[js]],[\"LessOrEqual\",[Ys]],[\"Log\",[zs]],[\"MatMul\",[ru]],[\"MatMulNBits\",[Wu,Nu]],[\"MaxPool\",[sd,ud]],[\"Mul\",[Hs]],[\"MultiHeadAttention\",[Fu,Lu]],[\"Neg\",[_s]],[\"Not\",[$s]],[\"Pad\",[ju]],[\"Pow\",[Ls]],[\"Range\",[pd]],[\"Reciprocal\",[Ss]],[\"ReduceMin\",[Wa]],[\"ReduceMean\",[Da]],[\"ReduceMax\",[Va]],[\"ReduceSum\",[Ga]],[\"ReduceProd\",[Na]],[\"ReduceL1\",[za]],[\"ReduceL2\",[Ma]],[\"ReduceLogSum\",[La]],[\"ReduceLogSumExp\",[Ua]],[\"ReduceSumSquare\",[Ha]],[\"Relu\",[xs]],[\"Resize\",[hd,gd]],[\"RotaryEmbedding\",[bd]],[\"Sigmoid\",[Cs]],[\"Sin\",[Ts]],[\"Sinh\",[Es]],[\"Slice\",[Sd,xd]],[\"SkipLayerNormalization\",[vd]],[\"Split\",[Ed,Pd]],[\"Sqrt\",[Ps]],[\"Softmax\",[Ad,Id]],[\"Sub\",[Fs]],[\"Tan\",[ks]],[\"Tanh\",[Rs]],[\"ThresholdedRelu\",[Ds,kn]],[\"Tile\",[Rd]],[\"Transpose\",[_a,Sa]],[\"Where\",[Dd]]])});var Hn,Vd=Y(()=>{\"use strict\";$r();Lt();_e();Hn=class{constructor(t){this.backend=t;this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,o,i,u){rr(t.programInfo.name);let a=this.backend.device,c=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2);let p=[];for(let d of r)p.push({binding:p.length,resource:{buffer:d.buffer}});for(let d of o)p.push({binding:p.length,resource:{buffer:d.buffer}});u&&p.push({binding:p.length,resource:u});let h=a.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:p,label:t.programInfo.name});if(this.backend.sessionStatus===\"capturing\"){let d={kernelId:this.backend.currentKernelId,computePipeline:t.computePipeline,bindGroup:h,dispatchGroup:i};this.backend.capturedCommandList.get(this.backend.currentSessionId).push(d)}c.setPipeline(t.computePipeline),c.setBindGroup(0,h),c.dispatchWorkgroups(...i),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType===\"at-passes\")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),Ht(t.programInfo.name)}dispose(){}build(t,r){rr(t.name);let o=this.backend.device,i=[];o.features.has(\"shader-f16\")&&i.push(\"enable f16;\");let u=va(r,this.backend.device.limits),a=t.getShaderSource(u),c=`${i.join(`\\n`)}\\n${u.additionalImplementations}\\n${a}`,p=o.createShaderModule({code:c,label:t.name});Ve(\"verbose\",()=>`[WebGPU] ${t.name} shader code: ${c}`);let h=o.createComputePipeline({compute:{module:p,entryPoint:\"main\"},layout:\"auto\",label:t.name});return Ht(t.name),{programInfo:t,computePipeline:h,uniformVariablesInfo:u.variablesInfo}}normalizeDispatchGroupSize(t){let r=typeof t==\"number\"?t:t.x,o=typeof t==\"number\"?1:t.y||1,i=typeof t==\"number\"?1:t.z||1,u=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=u&&o<=u&&i<=u)return[r,o,i];let a=r*o*i,c=Math.ceil(Math.sqrt(a));if(c>u){if(c=Math.ceil(Math.cbrt(a)),c>u)throw new Error(\"Total dispatch size exceeds WebGPU maximum.\");return[c,c,c]}else return[c,c,1]}}});var rm,nm,Yo,Ln,Wd=Y(()=>{\"use strict\";$r();ye();Lt();fa();wa();Ud();Vd();rm=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let o=0;o<e.length;++o){let i=e[o].dataType;switch(t[o]){case\"none\":{r.push(\"\");break}case\"type\":{r.push(`${i}`);break}case\"rank\":{let u=e[o].dims.length;r.push(`${i};${u}`);break}case\"dims\":{let u=e[o].dims.join(\",\");r.push(`${i};${u}`);break}default:throw new Error(`unsupported input dependency: ${t[o]}`)}}return r.join(\"|\")},nm=(e,t,r)=>{let o=e.name;return e.shaderCache?.hint&&(o+=\"[\"+e.shaderCache.hint+\"]\"),o+=\":\"+r+`:${rm(t,e.shaderCache?.inputDependencies??new Array(t.length).fill(\"dims\"))}`,o},Yo=class{constructor(t){t&&(this.architecture=t.architecture,this.vendor=t.vendor)}isArchitecture(t){return this.architecture===t}isVendor(t){return this.vendor===t}},Ln=class{constructor(){this.currentSessionId=null;this.currentKernelId=null;this.commandEncoder=null;this.computePassEncoder=null;this.maxDispatchNumber=16;this.pendingDispatchNumber=0;this.pendingKernels=[];this.pendingQueries=new Map;this.sessionStatus=\"default\";this.capturedCommandList=new Map;this.capturedPendingKernels=new Map;this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error(\"currentKernelCustomData(): currentKernelId is null. (should not happen)\");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let o=[],i={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:o};r.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?o.push(\"chromium-experimental-timestamp-query-inside-passes\"):r.features.has(\"timestamp-query\")&&o.push(\"timestamp-query\"),r.features.has(\"shader-f16\")&&o.push(\"shader-f16\"),this.device=await r.requestDevice(i),this.adapterInfo=new Yo(await r.requestAdapterInfo()),this.gpuDataManager=ba(this),this.programManager=new Hn(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,pa(t.logLevel,!!t.debug),this.device.onuncapturederror=u=>{u.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${u.error.message}`)},Object.defineProperty(this.env.webgpu,\"device\",{value:this.device,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.env.webgpu,\"adapter\",{value:r,writable:!1,enumerable:!0,configurable:!1}),this.setQueryType()}dispose(){typeof this.querySet<\"u\"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t=this.getCommandEncoder(),r={};this.queryType===\"at-passes\"&&(r.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=t.beginComputePass(r)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;rr(),this.endComputePass();let t;this.queryType!==\"none\"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),t=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!==\"none\"&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),o=this.pendingQueries.get(t);for(let i=0;i<r.length/2;i++){let u=o[i],a=u.kernelId,c=this.kernels.get(a),p=c.kernelType,h=c.kernelName,d=u.programName,y=u.inputTensorViews,w=u.outputTensorViews,_=r[i*2],v=r[i*2+1];typeof this.queryTimeBase>\"u\"&&(this.queryTimeBase=_);let S=Number(_-this.queryTimeBase),A=Number(v-this.queryTimeBase);if(!Number.isSafeInteger(S)||!Number.isSafeInteger(A))throw new RangeError(\"incorrect timestamp range\");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:y.map(I=>({dims:I.dims,dataType:Gt(I.dataType)})),outputsMetadata:w.map(I=>({dims:I.dims,dataType:Gt(I.dataType)})),kernelId:a,kernelType:p,kernelName:h,programName:d,startTime:S,endTime:A});else{let I=\"\";y.forEach((E,P)=>{I+=`input[${P}]: [${E.dims}] | ${Gt(E.dataType)}, `});let x=\"\";w.forEach((E,P)=>{x+=`output[${P}]: [${E.dims}] | ${Gt(E.dataType)}, `}),console.log(`[profiling] kernel \"${a}|${p}|${h}|${d}\" ${I}${x}execution time: ${A-S} ns`)}wo(\"GPU\",`${d}::${_}::${v}`)}t.unmap(),this.pendingQueries.delete(t)}),Ht()}run(t,r,o,i,u,a){rr(t.name);let c=[];for(let E=0;E<r.length;++E){let P=r[E].data;if(P===0)continue;let O=this.gpuDataManager.get(P);if(!O)throw new Error(`no GPU data for input: ${P}`);c.push(O)}let{outputs:p,dispatchGroup:h,programUniforms:d}=t.getRunData(r),y=o.length===0?p.map((E,P)=>P):o;if(y.length!==p.length)throw new Error(`Output size ${y.length} must be equal to ${p.length}.`);let w=[],_=[];for(let E=0;E<p.length;++E){if(!Number.isInteger(y[E])||y[E]<-3||y[E]>=a)throw new Error(`Invalid output index: ${y[E]}`);if(y[E]===-3)continue;let P=y[E]===-1,O=y[E]===-2,R=P||O?u(p[E].dataType,p[E].dims):i(y[E],p[E].dataType,p[E].dims);if(w.push(R),R.data===0)continue;let L=this.gpuDataManager.get(R.data);if(!L)throw new Error(`no GPU data for output: ${R.data}`);if(P&&this.temporaryData.push(L),O){let N=this.kernelPersistentData.get(this.currentKernelId);N||(N=[],this.kernelPersistentData.set(this.currentKernelId,N)),N.push(L)}_.push(L)}if(c.length!==r.length||_.length!==w.length){if(_.length===0)return Ht(t.name),w;throw new Error(`Program ${t.name} has zero-sized tensor(s) in inputs or outputs. This is not supported now.`)}let v;if(d){let E=0,P=[];d.forEach(N=>{let K=typeof N.data==\"number\"?[N.data]:N.data;if(K.length===0)return;let Q=N.type===10?2:4,he,W;N.type===10?(W=K.length>4?16:K.length>2?8:K.length*Q,he=K.length>4?16:Q*K.length):(W=K.length<=2?K.length*Q:16,he=16),E=Math.ceil(E/W)*W,P.push(E);let se=N.type===10?8:4;E+=K.length>4?Math.ceil(K.length/se)*he:K.length*Q});let O=16;E=Math.ceil(E/O)*O;let R=new ArrayBuffer(E);d.forEach((N,K)=>{let Q=P[K],he=typeof N.data==\"number\"?[N.data]:N.data;if(N.type===6)new Int32Array(R,Q,he.length).set(he);else if(N.type===12)new Uint32Array(R,Q,he.length).set(he);else if(N.type===10)new Uint16Array(R,Q,he.length).set(he);else if(N.type===1)new Float32Array(R,Q,he.length).set(he);else throw new Error(`Unsupported uniform type: ${Gt(N.type)}`)});let L=this.gpuDataManager.create(E,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(L.buffer,0,R,0,E),this.gpuDataManager.release(L.id),v={offset:0,size:E,buffer:L.buffer}}let S=this.programManager.normalizeDispatchGroupSize(h),A=S[1]===1&&S[2]===1,I=nm(t,r,A),x=this.programManager.getArtifact(I);if(x||(x=this.programManager.build(t,S),this.programManager.setArtifact(I,x),Ve(\"info\",()=>`[artifact] key: ${I}, programName: ${t.name}`)),d&&x.uniformVariablesInfo){if(d.length!==x.uniformVariablesInfo.length)throw new Error(`Uniform variables count mismatch: expect ${x.uniformVariablesInfo.length}, got ${d.length} in program \"${x.programInfo.name}\".`);for(let E=0;E<d.length;E++){let P=d[E],O=P.type,R=typeof P.data==\"number\"?1:P.data.length,[L,N]=x.uniformVariablesInfo[E];if(O!==L||R!==N)throw new Error(`Uniform variable ${E} mismatch: expect type ${L} with size ${N}, got type ${O} with size ${R} in program \"${x.programInfo.name}\".`)}}if(Ve(\"info\",()=>`[ProgramManager] run \"${t.name}\" (key=${I}) with ${S[0]}x${S[1]}x${S[2]}`),this.queryType!==\"none\"||this.sessionStatus===\"capturing\"){let E={kernelId:this.currentKernelId,programName:x.programInfo.name,inputTensorViews:r,outputTensorViews:w};this.pendingKernels.push(E),this.sessionStatus===\"capturing\"&&this.capturedPendingKernels.get(this.currentSessionId).push(E)}return this.programManager.run(x,c,_,S,v),Ht(t.name),w}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,o,i){let u=Md.get(t);if(!u)throw new Error(`kernel not implemented: ${t}`);let a={kernelType:t,kernelName:i,kernelEntry:u[0],attributes:[u[1],o]};this.kernels.set(r,a)}releaseKernel(t){let r=this.kernelPersistentData.get(t);if(r){for(let o of r)this.gpuDataManager.release(o.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,o){let i=this.kernels.get(t);if(!i)throw new Error(`kernel not created: ${t}`);let u=i.kernelType,a=i.kernelName,c=i.kernelEntry,p=i.attributes;if(this.currentKernelId!==null)throw new Error(`kernel \"[${u}] ${a}\" is not allowed to be called recursively`);this.currentKernelId=t,p[0]&&(p[1]=p[0](p[1]),p[0]=void 0),Ve(\"info\",()=>`[WebGPU] Start to run kernel \"[${u}] ${a}\"...`);let h=this.env.debug;this.temporaryData=[];try{return h&&this.device.pushErrorScope(\"validation\"),c(r,p[1]),0}catch(d){return o.push(Promise.resolve(`[WebGPU] Kernel \"[${u}] ${a}\" failed. ${d}`)),1}finally{h&&o.push(this.device.popErrorScope().then(d=>d?`GPU validation error for kernel \"[${u}] ${a}\": ${d.message}`:null));for(let d of this.temporaryData)this.gpuDataManager.release(d.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,o,i){let u=this.sessionExternalDataMapping.get(t);u||(u=new Map,this.sessionExternalDataMapping.set(t,u));let a=u.get(r),c=this.gpuDataManager.registerExternalBuffer(o,i,a?.[1]);return u.set(r,[c,o]),c}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(o=>this.gpuDataManager.unregisterExternalBuffer(o[1])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw new Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,o){return async()=>{let i=await xo(this,t,r);return ma(i.buffer,o)}}writeTimestamp(t){this.queryType===\"inside-passes\"&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType=\"none\",(this.env.webgpu.profiling?.mode===\"default\"||(typeof this.env.trace>\"u\"?this.env.wasm.trace:this.env.trace))&&(this.device.features.has(\"chromium-experimental-timestamp-query-inside-passes\")?this.queryType=\"inside-passes\":this.device.features.has(\"timestamp-query\")&&(this.queryType=\"at-passes\"),this.queryType!==\"none\"&&typeof this.querySet>\"u\"&&(this.querySet=this.device.createQuerySet({type:\"timestamp\",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}captureBegin(){Ve(\"info\",\"captureBegin\"),this.capturedCommandList.get(this.currentSessionId)||this.capturedCommandList.set(this.currentSessionId,[]),this.capturedPendingKernels.get(this.currentSessionId)||this.capturedPendingKernels.set(this.currentSessionId,[]),this.flush(),this.sessionStatus=\"capturing\"}captureEnd(){Ve(\"info\",\"captureEnd\"),this.flush(),this.sessionStatus=\"default\"}replay(){Ve(\"info\",\"replay\"),this.sessionStatus=\"replaying\";let t=this.capturedCommandList.get(this.currentSessionId),r=this.capturedPendingKernels.get(this.currentSessionId),o=t.length;this.pendingKernels=[];for(let i=0;i<o;i++){let u=this.getComputePassEncoder(),a=t[i];this.writeTimestamp(this.pendingDispatchNumber*2),u.setPipeline(a.computePipeline),u.setBindGroup(0,a.bindGroup),u.dispatchWorkgroups(...a.dispatchGroup),this.writeTimestamp(this.pendingDispatchNumber*2+1),this.pendingDispatchNumber++,this.queryType!==\"none\"&&this.pendingKernels.push(r[i]),(this.pendingDispatchNumber>=this.maxDispatchNumber||this.queryType===\"at-passes\")&&this.endComputePass(),this.pendingDispatchNumber>=this.maxDispatchNumber&&this.flush()}this.flush(),this.sessionStatus=\"default\"}onReleaseSession(t){this.unregisterBuffers(t),this.capturedCommandList.has(t)&&this.capturedCommandList.delete(t),this.capturedPendingKernels.has(t)&&this.capturedPendingKernels.delete(t),this.gpuDataManager.onReleaseSession(t)}onRunStart(t){this.currentSessionId=t,this.setQueryType()}}});var Nd={};gn(Nd,{init:()=>om});var qr,Zo,om,Gd=Y(()=>{\"use strict\";ye();Wd();Lt();Se();qr=class e{constructor(t,r,o,i){this.module=t;this.dataType=r;this.data=o;this.dims=i}getFloat32Array(){if(this.dataType!==1)throw new Error(\"Invalid data type\");let t=M.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error(\"Invalid data type\");let t=M.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error(\"Invalid data type\");let t=M.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(M.size(t)!==M.size(this.dims))throw new Error(\"Invalid new shape\");return new e(this.module,this.dataType,this.data,t)}},Zo=class{constructor(t,r,o){this.module=t;this.backend=r;this.customDataOffset=0;this.customDataSize=0;this.adapterInfo=r.adapterInfo;let i=t.HEAPU32,u=o>>>2;this.opKernelContext=i[u++];let a=i[u++];this.outputCount=i[u++],this.customDataOffset=i[u++],this.customDataSize=i[u++];let c=[];for(let p=0;p<a;p++){let h=i[u++],d=i[u++],y=i[u++],w=[];for(let _=0;_<y;_++)w.push(i[u++]);c.push(new qr(t,h,d,w))}this.inputs=c}get kernelCustomData(){return this.backend.currentKernelCustomData}get customDataBuffer(){return this.module.HEAPU8.subarray(this.customDataOffset,this.customDataOffset+this.customDataSize)}getMaxComputeWorkgroupSizes(){return[this.backend.device.limits.maxComputeWorkgroupSizeX,this.backend.device.limits.maxComputeWorkgroupSizeY,this.backend.device.limits.maxComputeWorkgroupSizeZ]}getMaxComputeWorkgroupStoragesize(){return this.backend.device.limits.maxComputeWorkgroupStorageSize}compute(t,r){let o=r?.inputs?.map(c=>typeof c==\"number\"?this.inputs[c]:c)??this.inputs,i=r?.outputs??[],u=(c,p,h)=>new qr(this.module,p,this.output(c,h),h),a=(c,p)=>{let h=tr(c);if(!h)throw new Error(`Unsupported data type: ${c}`);let d=h*M.size(p),y=d>0?this.backend.gpuDataManager.create(d).id:0;return new qr(this.module,c,y,p)};return this.backend.run(t,o,i,u,a,this.outputCount)}output(t,r){let o=this.module.stackSave();try{let i=this.module.stackAlloc((1+r.length)*4),u=i>>2;this.module.HEAPU32[u++]=r.length;for(let a=0;a<r.length;a++)this.module.HEAPU32[u++]=r[a];return this.module._JsepOutput(this.opKernelContext,t,i)}catch(i){throw new Error(`Failed to generate kernel\\'s output[${t}] with dims [${r}]. If you are running with pre-allocated output, please make sure the output type/dims are correct. Error: ${i}`)}finally{this.module.stackRestore(o)}}},om=async(e,t,r,o)=>{let i=t.jsepInit;if(!i)throw new Error(\"Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.\");if(e===\"webgpu\"){let u=new Ln;await u.initialize(r,o),i(\"webgpu\",[u,a=>u.alloc(a),a=>u.free(a),(a,c,p,h=!1)=>{if(h)Ve(\"verbose\",()=>`[WebGPU] jsepCopyGpuToGpu: src=${a}, dst=${c}, size=${p}`),u.memcpy(a,c);else{Ve(\"verbose\",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${a}, gpuDataId=${c}, size=${p}`);let d=t.HEAPU8.subarray(a>>>0,(a>>>0)+p);u.upload(c,d)}},async(a,c,p)=>{Ve(\"verbose\",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${a}, dataOffset=${c}, size=${p}`),await u.download(a,()=>t.HEAPU8.subarray(c>>>0,(c>>>0)+p))},(a,c,p)=>u.createKernel(a,c,p,t.UTF8ToString(t._JsepGetNodeName(c))),a=>u.releaseKernel(a),(a,c,p,h)=>{Ve(\"verbose\",()=>`[WebGPU] jsepRun: sessionHandle=${p}, kernel=${a}, contextDataOffset=${c}`);let d=new Zo(t,u,c);return u.computeKernel(a,d,h)},()=>u.captureBegin(),()=>u.captureEnd(),()=>u.replay()])}else i(\"webnn\")}});var Vi;Vi=Ei();var pl=zi(),fo,ho=!1,yn=!1,Ui=!1,ml=e=>{if(e===1)return!1;if(typeof SharedArrayBuffer>\"u\")return typeof self<\"u\"&&!self.crossOriginIsolated&&console.warn(\"env.wasm.numThreads is set to \"+e+\", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.\"),!1;typeof process<\"u\"&&process.versions&&process.versions.node&&console.warn(\"env.wasm.numThreads is set to \"+e+\", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.\");try{return typeof MessageChannel<\"u\"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},fl=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},hl=(e,t)=>e?t?\"ort-wasm-simd-threaded.wasm\":\"ort-wasm-simd.wasm\":t?\"ort-wasm-threaded.wasm\":\"ort-wasm.wasm\",Wi=async e=>{if(ho)return Promise.resolve();if(yn)throw new Error(\"multiple calls to \\'initializeWebAssembly()\\' detected.\");if(Ui)throw new Error(\"previous call to \\'initializeWebAssembly()\\' failed.\");yn=!0;let t=e.initTimeout,r=e.numThreads,o=e.simd,i=ml(r),u=o&&fl(),a=e.wasmPaths,c=typeof a==\"string\"?a:void 0,p=hl(u,i),h=typeof a==\"object\"?a[p]:void 0,d=!1,y=[];if(t>0&&y.push(new Promise(w=>{setTimeout(()=>{d=!0,w()},t)})),y.push(new Promise((w,_)=>{let v=i?pl:Vi,S={locateFile:(A,I)=>{if(i&&A.endsWith(\".worker.js\")&&typeof Blob<\"u\")return URL.createObjectURL(new Blob([Mi()],{type:\"text/javascript\"}));if(A.endsWith(\".wasm\")){if(h)return h;let x=c??I;return p===\"ort-wasm-simd.wasm\"?x+\"ort-wasm-simd.jsep.wasm\":p===\"ort-wasm-simd-threaded.wasm\"?x+\"ort-wasm-simd-threaded.jsep.wasm\":x+p}return I+A}};if(i)if(S.numThreads=r,typeof Blob>\"u\")S.mainScriptUrlOrBlob=(void 0)(__dirname,\"ort-wasm-threaded.js\");else{let A=`var ortWasmThreaded=${v.toString()};`;S.mainScriptUrlOrBlob=new Blob([A],{type:\"text/javascript\"})}v(S).then(A=>{yn=!1,ho=!0,fo=A,w()},A=>{yn=!1,Ui=!0,_(A)})})),await Promise.race(y),d)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Le=()=>{if(ho&&fo)return fo;throw new Error(\"WebAssembly is not initialized yet.\")};var Fe=(e,t)=>{let r=Le(),o=r.lengthBytesUTF8(e)+1,i=r._malloc(o);return r.stringToUTF8(e,i,o),t.push(i),i},Nr=(e,t,r,o)=>{if(typeof e==\"object\"&&e!==null){if(r.has(e))throw new Error(\"Circular reference in options\");r.add(e)}Object.entries(e).forEach(([i,u])=>{let a=t?t+i:i;if(typeof u==\"object\")Nr(u,a+\".\",r,o);else if(typeof u==\"string\"||typeof u==\"number\")o(a,u.toString());else if(typeof u==\"boolean\")o(a,u?\"1\":\"0\");else throw new Error(`Can\\'t handle extra config type: ${typeof u}`)})},Ue=e=>{let t=Le(),r=t.stackSave();try{let o=t.stackAlloc(8);t._OrtGetLastError(o,o+4);let i=t.HEAP32[o/4],u=t.HEAPU32[o/4+1],a=u?t.UTF8ToString(u):\"\";throw new Error(`${e} ERROR_CODE: ${i}, ERROR_MESSAGE: ${a}`)}finally{t.stackRestore(r)}};var Ni=e=>{let t=Le(),r=0,o=[],i=e||{};try{if(e?.logSeverityLevel===void 0)i.logSeverityLevel=2;else if(typeof e.logSeverityLevel!=\"number\"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)i.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!=\"number\"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(i.terminate=!1);let u=0;return e?.tag!==void 0&&(u=Fe(e.tag,o)),r=t._OrtCreateRunOptions(i.logSeverityLevel,i.logVerbosityLevel,!!i.terminate,u),r===0&&Ue(\"Can\\'t create run options.\"),e?.extra!==void 0&&Nr(e.extra,\"\",new WeakSet,(a,c)=>{let p=Fe(a,o),h=Fe(c,o);t._OrtAddRunConfigEntry(r,p,h)!==0&&Ue(`Can\\'t set a run config entry: ${a} - ${c}.`)}),[r,o]}catch(u){throw r!==0&&t._OrtReleaseRunOptions(r),o.forEach(a=>t._free(a)),u}};var gl=e=>{switch(e){case\"disabled\":return 0;case\"basic\":return 1;case\"extended\":return 2;case\"all\":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},yl=e=>{switch(e){case\"sequential\":return 0;case\"parallel\":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},bl=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly=\"1\"),e.executionProviders&&e.executionProviders.some(r=>(typeof r==\"string\"?r:r.name)===\"webgpu\")&&(e.enableMemPattern=!1)},wl=(e,t,r)=>{for(let o of t){let i=typeof o==\"string\"?o:o.name;switch(i){case\"webnn\":if(i=\"WEBNN\",typeof o!=\"string\"){let a=o;if(a?.deviceType){let c=Fe(\"deviceType\",r),p=Fe(a.deviceType,r);Le()._OrtAddSessionConfigEntry(e,c,p)!==0&&Ue(`Can\\'t set a session config entry: \\'deviceType\\' - ${a.deviceType}.`)}if(a?.numThreads){let c=a.numThreads;(typeof c!=\"number\"||!Number.isInteger(c)||c<0)&&(c=0);let p=Fe(\"numThreads\",r),h=Fe(c.toString(),r);Le()._OrtAddSessionConfigEntry(e,p,h)!==0&&Ue(`Can\\'t set a session config entry: \\'numThreads\\' - ${a.numThreads}.`)}if(a?.powerPreference){let c=Fe(\"powerPreference\",r),p=Fe(a.powerPreference,r);Le()._OrtAddSessionConfigEntry(e,c,p)!==0&&Ue(`Can\\'t set a session config entry: \\'powerPreference\\' - ${a.powerPreference}.`)}}break;case\"webgpu\":if(i=\"JS\",typeof o!=\"string\"){let a=o;if(a?.preferredLayout){if(a.preferredLayout!==\"NCHW\"&&a.preferredLayout!==\"NHWC\")throw new Error(`preferredLayout must be either \\'NCHW\\' or \\'NHWC\\': ${a.preferredLayout}`);let c=Fe(\"preferredLayout\",r),p=Fe(a.preferredLayout,r);Le()._OrtAddSessionConfigEntry(e,c,p)!==0&&Ue(`Can\\'t set a session config entry: \\'preferredLayout\\' - ${a.preferredLayout}.`)}}break;case\"wasm\":case\"cpu\":continue;default:throw new Error(`not supported execution provider: ${i}`)}let u=Fe(i,r);Le()._OrtAppendExecutionProvider(e,u)!==0&&Ue(`Can\\'t append execution provider: ${i}.`)}},Gi=e=>{let t=Le(),r=0,o=[],i=e||{};bl(i);try{let u=gl(i.graphOptimizationLevel??\"all\"),a=yl(i.executionMode??\"sequential\"),c=typeof i.logId==\"string\"?Fe(i.logId,o):0,p=i.logSeverityLevel??2;if(!Number.isInteger(p)||p<0||p>4)throw new Error(`log serverity level is not valid: ${p}`);let h=i.logVerbosityLevel??0;if(!Number.isInteger(h)||h<0||h>4)throw new Error(`log verbosity level is not valid: ${h}`);let d=typeof i.optimizedModelFilePath==\"string\"?Fe(i.optimizedModelFilePath,o):0;if(r=t._OrtCreateSessionOptions(u,!!i.enableCpuMemArena,!!i.enableMemPattern,a,!!i.enableProfiling,0,c,p,h,d),r===0&&Ue(\"Can\\'t create session options.\"),i.executionProviders&&wl(r,i.executionProviders,o),i.enableGraphCapture!==void 0){if(typeof i.enableGraphCapture!=\"boolean\")throw new Error(`enableGraphCapture must be a boolean value: ${i.enableGraphCapture}`);let y=Fe(\"enableGraphCapture\",o),w=Fe(i.enableGraphCapture.toString(),o);t._OrtAddSessionConfigEntry(r,y,w)!==0&&Ue(`Can\\'t set a session config entry: \\'enableGraphCapture\\' - ${i.enableGraphCapture}.`)}if(i.freeDimensionOverrides)for(let[y,w]of Object.entries(i.freeDimensionOverrides)){if(typeof y!=\"string\")throw new Error(`free dimension override name must be a string: ${y}`);if(typeof w!=\"number\"||!Number.isInteger(w)||w<0)throw new Error(`free dimension override value must be a non-negative integer: ${w}`);let _=Fe(y,o);t._OrtAddFreeDimensionOverride(r,_,w)!==0&&Ue(`Can\\'t set a free dimension override: ${y} - ${w}.`)}return i.extra!==void 0&&Nr(i.extra,\"\",new WeakSet,(y,w)=>{let _=Fe(y,o),v=Fe(w,o);t._OrtAddSessionConfigEntry(r,_,v)!==0&&Ue(`Can\\'t set a session config entry: ${y} - ${w}.`)}),[r,o]}catch(u){throw r!==0&&t._OrtReleaseSessionOptions(r),o.forEach(a=>t._free(a)),u}};ye();var Li=async e=>{if(typeof e==\"string\")if(typeof process<\"u\"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(e))}catch(t){if(t.code===\"ERR_FS_FILE_TOO_LARGE\"){let r=(void 0)(e),o=[];for await(let i of r)o.push(i);return new Uint8Array(Buffer.concat(o))}throw t}else{let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get(\"Content-Length\"),o=r?parseInt(r,10):0;if(o<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let i=t.body.getReader(),u;try{u=new ArrayBuffer(o)}catch(c){if(c instanceof RangeError){let p=Math.ceil(o/65536);u=new WebAssembly.Memory({initial:p,maximum:p}).buffer}else throw c}let a=0;for(;;){let{done:c,value:p}=await i.read();if(c)break;let h=p.byteLength;new Uint8Array(u,a,h).set(p),a+=h}return new Uint8Array(u,0,o)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)};var im=(e,t)=>{Le()._OrtInit(e,t)!==0&&Ue(\"Can\\'t initialize onnxruntime.\")},Ld=async e=>{im(e.wasm.numThreads,Gr(e.logLevel))},Fd=async(e,t)=>{{let r=(Gd(),wr(Nd)).init;if(t===\"webgpu\"){if(typeof navigator>\"u\"||!navigator.gpu)throw new Error(\"WebGPU is not supported in current environment\");let o=e.webgpu.adapter;if(o){if(typeof o.limits!=\"object\"||typeof o.features!=\"object\"||typeof o.requestDevice!=\"function\")throw new Error(\"Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.\")}else{let i=e.webgpu.powerPreference;if(i!==void 0&&i!==\"low-power\"&&i!==\"high-performance\")throw new Error(`Invalid powerPreference setting: \"${i}\"`);let u=e.webgpu.forceFallbackAdapter;if(u!==void 0&&typeof u!=\"boolean\")throw new Error(`Invalid forceFallbackAdapter setting: \"${u}\"`);if(o=await navigator.gpu.requestAdapter({powerPreference:i,forceFallbackAdapter:u}),!o)throw new Error(\\'Failed to get GPU adapter. You may need to enable flag \"--enable-unsafe-webgpu\" if you are using Chrome.\\')}if(!e.wasm.simd)throw new Error(\"Not supported for WebGPU=ON and SIMD=OFF. Please set `env.wasm.simd` to true when using `webgpu` EP\");await r(\"webgpu\",Le(),e,o)}if(t===\"webnn\"){if(typeof navigator>\"u\"||!navigator.ml)throw new Error(\"WebNN is not supported in current environment\");await r(\"webnn\",Le(),e)}}},ar=new Map,am=e=>{let t=Le(),r=t.stackSave();try{let o=t.stackAlloc(8);return t._OrtGetInputOutputCount(e,o,o+4)!==0&&Ue(\"Can\\'t get session input/output count.\"),[t.HEAP32[o/4],t.HEAP32[o/4+1]]}finally{t.stackRestore(r)}},Xo=e=>{let t=Le(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can\\'t create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},qd=async(e,t)=>{let r,o,i=Le();Array.isArray(e)?[r,o]=e:e.buffer===i.HEAPU8.buffer?[r,o]=[e.byteOffset,e.byteLength]:[r,o]=Xo(e);let u=0,a=0,c=0,p=[],h=[],d=[];try{if([a,p]=Gi(t),t?.externalData&&i.mountExternalData){let x=[];for(let E of t.externalData){let P=typeof E==\"string\"?E:E.path;x.push(Li(typeof E==\"string\"?E:E.data).then(O=>{i.mountExternalData(P,O)}))}await Promise.all(x)}u=await i._OrtCreateSession(r,o,a),u===0&&Ue(\"Can\\'t create a session.\");let[y,w]=am(u),_=!!t?.enableGraphCapture,v=[],S=[],A=[];for(let x=0;x<y;x++){let E=i._OrtGetInputName(u,x);E===0&&Ue(\"Can\\'t get an input name.\"),h.push(E),v.push(i.UTF8ToString(E))}for(let x=0;x<w;x++){let E=i._OrtGetOutputName(u,x);E===0&&Ue(\"Can\\'t get an output name.\"),d.push(E);let P=i.UTF8ToString(E);S.push(P);{if(_&&t?.preferredOutputLocation===void 0){A.push(\"gpu-buffer\");continue}let O=typeof t?.preferredOutputLocation==\"string\"?t.preferredOutputLocation:t?.preferredOutputLocation?.[P]??\"cpu\";if(O!==\"cpu\"&&O!==\"cpu-pinned\"&&O!==\"gpu-buffer\")throw new Error(`Not supported preferred output location: ${O}.`);if(_&&O!==\"gpu-buffer\")throw new Error(`Not supported preferred output location: ${O}. Only \\'gpu-buffer\\' location is supported when enableGraphCapture is true.`);A.push(O)}}let I=null;return A.some(x=>x===\"gpu-buffer\")&&(c=i._OrtCreateBinding(u),c===0&&Ue(\"Can\\'t create IO binding.\"),I={handle:c,outputPreferredLocations:A,outputPreferredLocationsEncoded:A.map(x=>yo(x))}),ar.set(u,[u,h,d,I,_,!1]),[u,v,S]}catch(y){throw h.forEach(w=>i._OrtFree(w)),d.forEach(w=>i._OrtFree(w)),c!==0&&i._OrtReleaseBinding(c),u!==0&&i._OrtReleaseSession(u),y}finally{i._free(r),a!==0&&i._OrtReleaseSessionOptions(a),p.forEach(y=>i._free(y)),i.unmountExternalData?.()}},jd=e=>{let t=Le(),r=ar.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[o,i,u,a,c]=r;a&&(c&&t._OrtClearBoundOutputs(a.handle),t._OrtReleaseBinding(a.handle)),t.jsepOnReleaseSession?.(e),i.forEach(p=>t._OrtFree(p)),u.forEach(p=>t._OrtFree(p)),t._OrtReleaseSession(o),ar.delete(e)},Hd=(e,t,r,o,i,u=!1)=>{if(!e){t.push(0);return}let a=Le(),c=e[0],p=e[1],h=e[3],d,y;if(c===\"string\"&&h===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");if(u&&h!==\"gpu-buffer\")throw new Error(`External buffer must be provided for input/output index ${i} when enableGraphCapture is true.`);if(h===\"gpu-buffer\"){let v=e[2].gpuBuffer,S=tr(go(c));y=p.reduce((I,x)=>I*x,1)*S;let A=a.jsepRegisterBuffer;if(!A)throw new Error(\\'Tensor location \"gpu-buffer\" is not supported without using WebGPU.\\');d=A(o,i,v,y)}else{let v=e[2];if(Array.isArray(v)){y=4*v.length,d=a._malloc(y),r.push(d);let S=d/4;for(let A=0;A<v.length;A++){if(typeof v[A]!=\"string\")throw new TypeError(`tensor data at index ${A} is not a string`);a.HEAPU32[S++]=Fe(v[A],r)}}else y=v.byteLength,d=a._malloc(y),r.push(d),a.HEAPU8.set(new Uint8Array(v.buffer,v.byteOffset,y),d)}let w=a.stackSave(),_=a.stackAlloc(4*p.length);try{let v=_/4;p.forEach(A=>a.HEAP32[v++]=A);let S=a._OrtCreateTensor(go(c),d,y,_,p.length,yo(h));S===0&&Ue(`Can\\'t create tensor for input/output. session=${o}, index=${i}.`),t.push(S)}finally{a.stackRestore(w)}},Kd=async(e,t,r,o,i,u)=>{let a=Le(),c=ar.get(e);if(!c)throw new Error(`cannot run inference. invalid session id: ${e}`);let p=c[0],h=c[1],d=c[2],y=c[3],w=c[4],_=c[5],v=t.length,S=o.length,A=0,I=[],x=[],E=[],P=[],O=a.stackSave(),R=a.stackAlloc(v*4),L=a.stackAlloc(v*4),N=a.stackAlloc(S*4),K=a.stackAlloc(S*4);try{[A,I]=Ni(u);for(let ee=0;ee<v;ee++)Hd(r[ee],x,P,e,t[ee],w);for(let ee=0;ee<S;ee++)Hd(i[ee],E,P,e,v+o[ee],w);let Q=R/4,he=L/4,W=N/4,se=K/4;for(let ee=0;ee<v;ee++)a.HEAPU32[Q++]=x[ee],a.HEAPU32[he++]=h[t[ee]];for(let ee=0;ee<S;ee++)a.HEAPU32[W++]=E[ee],a.HEAPU32[se++]=d[o[ee]];if(y&&!_){let{handle:ee,outputPreferredLocations:ae,outputPreferredLocationsEncoded:Ae}=y;if(h.length!==v)throw new Error(`input count from feeds (${v}) is expected to be always equal to model\\'s input count (${h.length}).`);for(let me=0;me<v;me++){let ie=t[me];await a._OrtBindInput(ee,h[ie],x[me])!==0&&Ue(`Can\\'t bind input[${me}] for session=${e}.`)}for(let me=0;me<S;me++){let ie=o[me];i[me]?.[3]?a._OrtBindOutput(ee,d[ie],E[me],0)!==0&&Ue(`Can\\'t bind pre-allocated output[${me}] for session=${e}.`):a._OrtBindOutput(ee,d[ie],0,Ae[ie])!==0&&Ue(`Can\\'t bind output[${me}] to ${ae[me]} for session=${e}.`)}ar.set(e,[p,h,d,y,w,!0])}a.jsepOnRunStart?.(p);let Ce;y?Ce=await a._OrtRunWithBinding(p,y.handle,S,N,A):Ce=await a._OrtRun(p,L,R,v,K,S,N,A),Ce!==0&&Ue(\"failed to call OrtRun().\");let We=[];for(let ee=0;ee<S;ee++){let ae=a.HEAPU32[N/4+ee];if(ae===E[ee]){We.push(i[ee]);continue}let Ae=a.stackSave(),me=a.stackAlloc(4*4),ie=!1,ue,le=0;try{a._OrtGetTensorData(ae,me,me+4,me+8,me+12)!==0&&Ue(`Can\\'t access output tensor data on index ${ee}.`);let G=me/4,ne=a.HEAPU32[G++];le=a.HEAPU32[G++];let xe=a.HEAPU32[G++],Ke=a.HEAPU32[G++],Be=[];for(let Ne=0;Ne<Ke;Ne++)Be.push(a.HEAPU32[xe/4+Ne]);a._OrtFree(xe);let Ge=Be.reduce((Ne,Ye)=>Ne*Ye,1);ue=Gt(ne);let Ut=y?.outputPreferredLocations[o[ee]];if(ue===\"string\"){if(Ut===\"gpu-buffer\")throw new Error(\"String tensor is not supported on GPU.\");let Ne=[],Ye=le/4;for(let mt=0;mt<Ge;mt++){let Rt=a.HEAPU32[Ye++],qt=mt===Ge-1?void 0:a.HEAPU32[Ye]-Rt;Ne.push(a.UTF8ToString(Rt,qt))}We.push([ue,Be,Ne,\"cpu\"])}else if(Ut===\"gpu-buffer\"&&Ge>0){let Ne=a.jsepGetBuffer;if(!Ne)throw new Error(\\'preferredLocation \"gpu-buffer\" is not supported without using WebGPU.\\');let Ye=Ne(le),mt=tr(ne);if(mt===void 0||!Hi(ue))throw new Error(`Unsupported data type: ${ue}`);ie=!0,We.push([ue,Be,{gpuBuffer:Ye,download:a.jsepCreateDownloader(Ye,Ge*mt,ue),dispose:()=>{a._OrtReleaseTensor(ae)}},\"gpu-buffer\"])}else{let Ne=bn(ue),Ye=new Ne(Ge);new Uint8Array(Ye.buffer,Ye.byteOffset,Ye.byteLength).set(a.HEAPU8.subarray(le,le+Ye.byteLength)),We.push([ue,Be,Ye,\"cpu\"])}}finally{a.stackRestore(Ae),ue===\"string\"&&le&&a._free(le),ie||a._OrtReleaseTensor(ae)}}return y&&!w&&(a._OrtClearBoundOutputs(y.handle),ar.set(e,[p,h,d,y,w,!1])),We}finally{a.stackRestore(O),x.forEach(Q=>a._OrtReleaseTensor(Q)),E.forEach(Q=>a._OrtReleaseTensor(Q)),P.forEach(Q=>a._free(Q)),A!==0&&a._OrtReleaseRunOptions(A),I.forEach(Q=>a._free(Q))}},Yd=e=>{let t=Le(),r=ar.get(e);if(!r)throw new Error(\"invalid session id\");let o=r[0],i=t._OrtEndProfiling(o);i===0&&Ue(\"Can\\'t get an profile file name.\"),t._OrtFree(i)},Zd=e=>{let t=[];for(let r of e){let o=r[2];!Array.isArray(o)&&\"buffer\"in o&&t.push(o.buffer)}return t};self.onmessage=e=>{let{type:t,in:r}=e.data;try{switch(t){case\"init-wasm\":Wi(r.wasm).then(()=>{Ld(r).then(()=>{postMessage({type:t})},o=>{postMessage({type:t,err:o})})},o=>{postMessage({type:t,err:o})});break;case\"init-ep\":{let{epName:o,env:i}=r;Fd(i,o).then(()=>{postMessage({type:t})},u=>{postMessage({type:t,err:u})});break}case\"copy-from\":{let{buffer:o}=r,i=Xo(o);postMessage({type:t,out:i});break}case\"create\":{let{model:o,options:i}=r;qd(o,i).then(u=>{postMessage({type:t,out:u})},u=>{postMessage({type:t,err:u})});break}case\"release\":jd(r),postMessage({type:t});break;case\"run\":{let{sessionId:o,inputIndices:i,inputs:u,outputIndices:a,options:c}=r;Kd(o,i,u,a,new Array(a.length).fill(null),c).then(p=>{p.some(h=>h[3]!==\"cpu\")?postMessage({type:t,err:\"Proxy does not support non-cpu tensor location.\"}):postMessage({type:t,out:p},Zd([...u,...p]))},p=>{postMessage({type:t,err:p})});break}case\"end-profiling\":Yd(r),postMessage({type:t});break;default:}}catch(o){postMessage({type:t,err:o})}};})();\\n/**\\n * @license\\n * Copyright 2021 Google LLC. All Rights Reserved.\\n * Licensed under the Apache License, Version 2.0 (the \"License\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \"AS IS\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n * =============================================================================\\n */\\n/**\\n * @license\\n * Copyright 2020 Google LLC. All Rights Reserved.\\n * Licensed under the Apache License, Version 2.0 (the \"License\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \"AS IS\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n * =============================================================================\\n */\\n/**\\n * @license\\n * Copyright 2019 Google LLC. All Rights Reserved.\\n * Licensed under the Apache License, Version 2.0 (the \"License\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \"AS IS\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n * =============================================================================\\n */\\n'});var gr,St,sn,pi,mi,Co,Io,zr,Br,pf,ci,Wd,Nd,Vd,Hd,Gd,Ld,Fd,To=j(()=>{\"use strict\";_t();Md();Or();gr=()=>!!ke.wasm.proxy&&typeof document<\"u\",sn=!1,pi=!1,mi=!1,Io=new Map,zr=(e,t)=>{let r=Io.get(e);r?r.push(t):Io.set(e,[t])},Br=()=>{if(sn||!pi||mi||!St)throw new Error(\"worker not ready\")},pf=e=>{switch(e.data.type){case\"init-wasm\":sn=!1,e.data.err?(mi=!0,Co[1](e.data.err)):(pi=!0,Co[0]());break;case\"init-ep\":case\"copy-from\":case\"create\":case\"release\":case\"run\":case\"end-profiling\":{let t=Io.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}default:}},ci=typeof document<\"u\"?document?.currentScript?.src:void 0,Wd=async()=>{if(!pi){if(sn)throw new Error(\"multiple calls to 'initWasm()' detected.\");if(mi)throw new Error(\"previous call to 'initWasm()' failed.\");if(sn=!0,gr())return ke.wasm.wasmPaths===void 0&&ci&&ci.indexOf(\"blob:\")!==0&&(ke.wasm.wasmPaths=ci.substr(0,+ci.lastIndexOf(\"/\")+1)),new Promise((e,t)=>{St?.terminate();let r=URL.createObjectURL(new Blob([Ud()],{type:\"text/javascript\"}));St=new Worker(r,{name:\"ort-wasm-proxy-worker\"}),St.onerror=i=>t(i),St.onmessage=pf,URL.revokeObjectURL(r),Co=[e,t];let n={type:\"init-wasm\",in:ke};St.postMessage(n)});try{await Fa(ke.wasm),await kd(ke),pi=!0}catch(e){throw mi=!0,e}finally{sn=!1}}},Nd=async e=>{if(gr())return Br(),new Promise((t,r)=>{zr(\"init-ep\",[t,r]);let n={type:\"init-ep\",in:{epName:e,env:ke}};St.postMessage(n)});await Od(ke,e)},Vd=async e=>gr()?(Br(),new Promise((t,r)=>{zr(\"copy-from\",[t,r]);let n={type:\"copy-from\",in:{buffer:e}};St.postMessage(n,[e.buffer])})):So(e),Hd=async(e,t)=>{if(gr()){if(t?.preferredOutputLocation)throw new Error('session option \"preferredOutputLocation\" is not supported for proxy.');return Br(),new Promise((r,n)=>{zr(\"create\",[r,n]);let i={type:\"create\",in:{model:e,options:{...t}}},s=[];e instanceof Uint8Array&&s.push(e.buffer),St.postMessage(i,s)})}else return Pd(e,t)},Gd=async e=>{if(gr())return Br(),new Promise((t,r)=>{zr(\"release\",[t,r]);let n={type:\"release\",in:e};St.postMessage(n)});Rd(e)},Ld=async(e,t,r,n,i,s)=>{if(gr()){if(r.some(a=>a[3]!==\"cpu\"))throw new Error(\"input tensor on GPU is not supported for proxy.\");if(i.some(a=>a))throw new Error(\"pre-allocated output tensor is not supported for proxy.\");return Br(),new Promise((a,d)=>{zr(\"run\",[a,d]);let c=r,m={type:\"run\",in:{sessionId:e,inputIndices:t,inputs:c,outputIndices:n,options:s}};St.postMessage(m,Dd(c))})}else return zd(e,t,r,n,i,s)},Fd=async e=>{if(gr())return Br(),new Promise((t,r)=>{zr(\"end-profiling\",[t,r]);let n={type:\"end-profiling\",in:e};St.postMessage(n)});Bd(e)}});var qd,mf,fi,jd=j(()=>{\"use strict\";_t();To();ye();qi();qd=(e,t)=>{switch(e.location){case\"cpu\":return[e.type,e.dims,e.data,\"cpu\"];case\"gpu-buffer\":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},\"gpu-buffer\"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},mf=e=>{switch(e[3]){case\"cpu\":return new tt(e[0],e[2],e[1]);case\"gpu-buffer\":{let t=e[0];if(!Vn(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:r,download:n,dispose:i}=e[2];return tt.fromGpuBuffer(r,{dataType:t,dims:e[1],download:n,dispose:i})}default:throw new Error(`invalid data location: ${e[3]}`)}},fi=class{async fetchModelAndCopyToWasmMemory(t){return Vd(await tn(t))}async loadModel(t,r){yt();let n;typeof t==\"string\"?typeof process<\"u\"&&process.versions&&process.versions.node?n=await tn(t):n=await this.fetchModelAndCopyToWasmMemory(t):n=t,[this.sessionId,this.inputNames,this.outputNames]=await Hd(n,r),ut()}async dispose(){return Gd(this.sessionId)}async run(t,r,n){yt();let i=[],s=[];Object.entries(t).forEach(b=>{let $=b[0],w=b[1],x=this.inputNames.indexOf($);if(x===-1)throw new Error(`invalid input '${$}'`);i.push(w),s.push(x)});let a=[],d=[];Object.entries(r).forEach(b=>{let $=b[0],w=b[1],x=this.outputNames.indexOf($);if(x===-1)throw new Error(`invalid output '${$}'`);a.push(w),d.push(x)});let c=i.map((b,$)=>qd(b,()=>`input \"${this.inputNames[s[$]]}\"`)),m=a.map((b,$)=>b?qd(b,()=>`output \"${this.outputNames[d[$]]}\"`):null),u=await Ld(this.sessionId,s,c,d,m,n),g={};for(let b=0;b<u.length;b++)g[this.outputNames[d[b]]]=a[b]??mf(u[b]);return ut(),g}startProfiling(){}endProfiling(){Fd(this.sessionId)}}});var ff,hi,Kd=j(()=>{\"use strict\";_t();To();jd();ff=()=>{if((typeof ke.wasm.initTimeout!=\"number\"||ke.wasm.initTimeout<0)&&(ke.wasm.initTimeout=0),typeof ke.wasm.simd!=\"boolean\"&&(ke.wasm.simd=!0),typeof ke.wasm.proxy!=\"boolean\"&&(ke.wasm.proxy=!1),typeof ke.wasm.trace!=\"boolean\"&&(ke.wasm.trace=!1),typeof ke.wasm.numThreads!=\"number\"||!Number.isInteger(ke.wasm.numThreads)||ke.wasm.numThreads<=0){(typeof self<\"u\"&&!self.crossOriginIsolated||typeof process<\"u\"&&process.versions&&process.versions.node)&&(ke.wasm.numThreads=1);let e=typeof navigator>\"u\"?(void 0)().length:navigator.hardwareConcurrency;ke.wasm.numThreads=Math.min(4,Math.ceil((e||1)/2))}},hi=class{async init(t){ff(),await Wd(),await Nd(t)}async createInferenceSessionHandler(t,r){let n=new fi;return await n.loadModel(t,r),Promise.resolve(n)}}});var Yd={};kr(Yd,{wasmBackend:()=>hf});var hf,Xd=j(()=>{\"use strict\";Kd();hf=new hi});_t();_t();_t();var ka=\"1.18.0\";var h$=Bi;{let e=(Xd(),sr(Yd)).wasmBackend;lr(\"webgpu\",e,5),lr(\"webnn\",e,5),lr(\"cpu\",e,10),lr(\"wasm\",e,10)}Object.defineProperty(ke.versions,\"web\",{value:ka,enumerable:!0});\n/**\n * @license\n * Copyright 2021 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n/**\n * @license\n * Copyright 2019 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n//# sourceMappingURL=ort.webgpu.min.js.map\n\n\n//# sourceURL=webpack://webgpu-prog-iso/./node_modules/onnxruntime-web/dist/esm/ort.webgpu.min.js?");

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	(() => {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = (module) => {
/******/ 			var getter = module && module.__esModule ?
/******/ 				() => (module['default']) :
/******/ 				() => (module);
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (exports, definition) => {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/global */
/******/ 	(() => {
/******/ 		__webpack_require__.g = (function() {
/******/ 			if (typeof globalThis === 'object') return globalThis;
/******/ 			try {
/******/ 				return this || new Function('return this')();
/******/ 			} catch (e) {
/******/ 				if (typeof window === 'object') return window;
/******/ 			}
/******/ 		})();
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	(() => {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = (exports) => {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	})();
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	// This entry module can't be inlined because the eval devtool is used.
/******/ 	var __webpack_exports__ = __webpack_require__("./src/app.js");
/******/ 	
/******/ })()
;

back to top

Software Heritage — Copyright (C) 2015–2025, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API