@vkontakte/calls-audio-effects 1.4.2-dev.cbbd651d.0 → 1.5.1-dev.6a83256f.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /**
2
- * @vkontakte/calls-audio-effects v1.4.2-dev.cbbd651d.0-dev
3
- * Thu, 15 Oct 2026 19:09:41 GMT
2
+ * @vkontakte/calls-audio-effects v1.5.1-dev.6a83256f.0-dev
3
+ * Mon, 09 Nov 2026 18:26:25 GMT
4
4
  */
5
5
 
6
6
  var __create = Object.create;
@@ -4447,7 +4447,7 @@ var require_wasm_bindings = __commonJS({
4447
4447
  } else if (typeof define === "function" && define["amd"])
4448
4448
  define([], () => wav2lip4);
4449
4449
  wav2lip4.getUrl = function(path) {
4450
- return "https://calls-sdk.cdn-vk.ru/static/audio-processing/0-0-10-dev.e09c1c0b/" + path;
4450
+ return "https://calls-sdk.cdn-vk.ru/static/audio-processing/0-0-10/" + path;
4451
4451
  };
4452
4452
  }
4453
4453
  });
@@ -4482,6 +4482,9 @@ function createBlobObject(functionData, args = []) {
4482
4482
  const blobURL = window.URL.createObjectURL(blob);
4483
4483
  return blobURL;
4484
4484
  }
4485
+ function getFileName(url) {
4486
+ return url.split(/[?#]/)[0].split("/").pop() || url;
4487
+ }
4485
4488
 
4486
4489
  // src/processor/AudioProcessor.ts
4487
4490
  var AudioProcessor = class {
@@ -4771,6 +4774,21 @@ var import_audio_processing = __toESM(require_wasm_bindings());
4771
4774
 
4772
4775
  // src/processor/WorkerAudioProcessor.ts
4773
4776
  var WorkerAudioProcessor = class extends AudioProcessor {
4777
+ /**
4778
+ * Коллбек, вызывающийся, когда ML-модель эффекта скачана и готова к работе.
4779
+ * @param {string} model - Файл модели.
4780
+ * @param {number} duration - Время скачивания файлов модели, мс.
4781
+ */
4782
+ onModelReady = () => {
4783
+ };
4784
+ /**
4785
+ * Коллбек, вызывающийся при ошибке ML-модели эффекта:
4786
+ * модель не скачалась, не создалась или упала в работе.
4787
+ * @param {string} model - Файл модели.
4788
+ * @param {string} error - Текст ошибки.
4789
+ */
4790
+ onModelError = () => {
4791
+ };
4774
4792
  worker = null;
4775
4793
  performanceMonitor = null;
4776
4794
  /**
@@ -4784,11 +4802,13 @@ var WorkerAudioProcessor = class extends AudioProcessor {
4784
4802
  * @param {string} params.workletName - Зарегистрированное имя ворклета.
4785
4803
  * @param {Function} params.workerFunction - Функция воркера.
4786
4804
  * @param {*[]} params.workerArgs - Параметры для передачи в функцию воркера при его инциализации.
4805
+ * @param {string} [params.workerName] - Имя воркера, под которым он виден в DevTools.
4806
+ * @param {string} [params.workerModel] - Файл модели, на которой работает весь воркер.
4787
4807
  */
4788
4808
  async init(params) {
4789
4809
  await super.init(params);
4790
4810
  this.isInitialized = false;
4791
- await this.createWorker(params.workerFunctionString, params.workerArgs);
4811
+ await this.createWorker(params);
4792
4812
  this.isInitialized = true;
4793
4813
  }
4794
4814
  resume() {
@@ -4821,11 +4841,17 @@ var WorkerAudioProcessor = class extends AudioProcessor {
4821
4841
  return false;
4822
4842
  }
4823
4843
  }
4824
- createWorker(workerFunctionString, workerArgs = []) {
4844
+ createWorker({
4845
+ workerFunctionString,
4846
+ workerArgs = [],
4847
+ workerName,
4848
+ workerModel
4849
+ }) {
4825
4850
  return new Promise((resolve, reject) => {
4826
4851
  this.logger.debug("worker init started");
4827
4852
  this.worker = new Worker(
4828
- createBlobObject(workerFunctionString, workerArgs)
4853
+ createBlobObject(workerFunctionString, workerArgs),
4854
+ { name: workerName }
4829
4855
  );
4830
4856
  this.worker.onmessage = ({ data: response }) => {
4831
4857
  switch (response.type) {
@@ -4836,6 +4862,9 @@ var WorkerAudioProcessor = class extends AudioProcessor {
4836
4862
  }
4837
4863
  case "error" /* ERROR */: {
4838
4864
  this.logger.error(response.error);
4865
+ if (response.model) {
4866
+ this.onModelError(response.model, errorText(response.error));
4867
+ }
4839
4868
  reject(response.error);
4840
4869
  break;
4841
4870
  }
@@ -4847,11 +4876,27 @@ var WorkerAudioProcessor = class extends AudioProcessor {
4847
4876
  this.logger.debug(response.message);
4848
4877
  break;
4849
4878
  }
4879
+ case "model_ready" /* MODEL_READY */: {
4880
+ this.logger.debug("model ready", response.model, response.duration);
4881
+ this.onModelReady(response.model, response.duration);
4882
+ break;
4883
+ }
4884
+ }
4885
+ };
4886
+ this.worker.onerror = (event) => {
4887
+ const message = event.message || "worker error";
4888
+ this.logger.error(message);
4889
+ if (workerModel) {
4890
+ this.onModelError(workerModel, message);
4850
4891
  }
4892
+ reject(new Error(message));
4851
4893
  };
4852
4894
  });
4853
4895
  }
4854
4896
  };
4897
+ function errorText(error) {
4898
+ return error instanceof Error ? error.message : String(error);
4899
+ }
4855
4900
 
4856
4901
  // src/worklets/PureWorklet.ts
4857
4902
  function pureWorkletFunction() {
@@ -4887,8 +4932,9 @@ var EffectVmojiLmarksAi = class extends WorkerAudioProcessor {
4887
4932
  sampleRate: VMOJI_LMARKS_AI_SAMPLE_RATE,
4888
4933
  workletFunction: pureWorkletFunction,
4889
4934
  workletName: "pureWorklet",
4890
- workerFunctionString: '"use strict";\nvar exports = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // src/workers/VmojiLmarksAiWorker.ts\n var VmojiLmarksAiWorker_exports = {};\n __export(VmojiLmarksAiWorker_exports, {\n default: () => VmojiLmarksAiWorker_default\n });\n\n // src/utils/ModelLoader.ts\n var MODELS_FOLDER = "/";\n var MODELS_URL_PATH = "models/";\n async function loadModelFile(module, urlResolver, fileName) {\n const response = await fetch(urlResolver(MODELS_URL_PATH + fileName));\n if (!response.ok) {\n throw new Error(`model ${fileName} loading failed with status ${response.status}`);\n }\n const data = new Uint8Array(await response.arrayBuffer());\n module.FS_createDataFile(MODELS_FOLDER, fileName, data, true, false, true);\n }\n function unloadModelFile(module, fileName) {\n module.FS_unlink(MODELS_FOLDER + fileName);\n }\n\n // src/workers/VmojiLmarksAiWorker.ts\n var MODEL_FILE = "wav2lip_lite_rec-v4-v2.tflite";\n var VmojiLmarksAiWorker_default = (createWav2lipModule, urlResolver) => {\n let Wav2lip = null;\n let Animoji = null;\n function init() {\n return createWav2lipModule({ locateFile: urlResolver }).then(async (module) => {\n Wav2lip = module;\n await loadModelFile(module, urlResolver, MODEL_FILE);\n try {\n const configInput = new Wav2lip.ConfigInput("animoji_v4.cfg", true, "/");\n const config = new Wav2lip.Config(configInput);\n Animoji = Wav2lip.AnimojiFactory.createAlgorithm(config);\n } finally {\n unloadModelFile(module, MODEL_FILE);\n }\n });\n }\n function postError(error) {\n self.postMessage({\n type: "error" /* ERROR */,\n error: typeof error === "number" && Wav2lip ? Wav2lip.getExMessage(error) : error\n });\n }\n function requestLmarks(data) {\n if (!Wav2lip || !Animoji) {\n return;\n }\n let inputVec;\n let lmarksVec;\n try {\n inputVec = new Wav2lip.vector$float$();\n const dataArr = new Float32Array(data);\n for (const sample of dataArr) {\n inputVec.push_back(sample);\n }\n lmarksVec = Wav2lip.animate(Animoji, inputVec);\n const lmarksCount = lmarksVec?.size?.();\n if (!lmarksCount) {\n return;\n }\n const lmarks = new Float32Array(lmarksCount);\n for (let i = 0; i < lmarksCount; i++) {\n lmarks[i] = lmarksVec.get(i);\n }\n self.postMessage({\n type: "data" /* DATA */,\n data: lmarks.buffer\n }, [lmarks.buffer]);\n } catch (error) {\n postError(error);\n } finally {\n inputVec?.delete();\n lmarksVec?.delete();\n }\n }\n init().then(() => {\n self.onmessage = (event) => {\n requestLmarks(event.data.data);\n };\n self.postMessage({ type: "init" /* INIT */ });\n }).catch(postError);\n };\n return __toCommonJS(VmojiLmarksAiWorker_exports);\n})();\n',
4891
- workerArgs: [import_audio_processing.default, import_audio_processing.default.getUrl]
4935
+ workerFunctionString: '"use strict";\nvar exports = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // src/workers/VmojiLmarksAiWorker.ts\n var VmojiLmarksAiWorker_exports = {};\n __export(VmojiLmarksAiWorker_exports, {\n default: () => VmojiLmarksAiWorker_default\n });\n\n // src/utils/Utils.ts\n function getFileName(url) {\n return url.split(/[?#]/)[0].split("/").pop() || url;\n }\n\n // src/utils/ModelLoader.ts\n var MODELS_FOLDER = "/";\n var MODELS_URL_PATH = "models/";\n async function downloadModelFile(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`model ${getFileName(url)} loading failed with status ${response.status}`);\n }\n return new Uint8Array(await response.arrayBuffer());\n }\n async function loadModelFile(module, urlResolver, fileName) {\n const startedAt = performance.now();\n const data = await downloadModelFile(urlResolver(MODELS_URL_PATH + fileName));\n const duration = performance.now() - startedAt;\n module.FS_createDataFile(MODELS_FOLDER, fileName, data, true, false, true);\n return duration;\n }\n function unloadModelFile(module, fileName) {\n module.FS_unlink(MODELS_FOLDER + fileName);\n }\n\n // src/utils/WasmMemoryReport.ts\n var REPORT_INTERVAL_MS = 6e4;\n function startWasmMemoryReport(module) {\n const report = () => {\n const bytes = module.HEAPU8?.buffer.byteLength ?? 0;\n self.postMessage({\n type: "debug" /* DEBUG */,\n message: `${self.name || "worker"} wasm memory: ${(bytes / 1048576).toFixed(1)} MiB`\n });\n };\n report();\n setInterval(report, REPORT_INTERVAL_MS);\n }\n\n // src/workers/VmojiLmarksAiWorker.ts\n var MODEL_FILE = "wav2lip_lite_rec-v4-v2.tflite";\n var VmojiLmarksAiWorker_default = (createWav2lipModule, urlResolver) => {\n let Wav2lip = null;\n let Animoji = null;\n function init() {\n return createWav2lipModule({ locateFile: urlResolver }).then(async (module) => {\n Wav2lip = module;\n startWasmMemoryReport(module);\n await loadModelFile(module, urlResolver, MODEL_FILE);\n try {\n const configInput = new Wav2lip.ConfigInput("animoji_v4.cfg", true, "/");\n const config = new Wav2lip.Config(configInput);\n Animoji = Wav2lip.AnimojiFactory.createAlgorithm(config);\n } finally {\n unloadModelFile(module, MODEL_FILE);\n }\n });\n }\n function postError(error) {\n self.postMessage({\n type: "error" /* ERROR */,\n error: typeof error === "number" && Wav2lip ? Wav2lip.getExMessage(error) : error\n });\n }\n function requestLmarks(data) {\n if (!Wav2lip || !Animoji) {\n return;\n }\n let inputVec;\n let lmarksVec;\n try {\n inputVec = new Wav2lip.vector$float$();\n const dataArr = new Float32Array(data);\n for (const sample of dataArr) {\n inputVec.push_back(sample);\n }\n lmarksVec = Wav2lip.animate(Animoji, inputVec);\n const lmarksCount = lmarksVec?.size?.();\n if (!lmarksCount) {\n return;\n }\n const lmarks = new Float32Array(lmarksCount);\n for (let i = 0; i < lmarksCount; i++) {\n lmarks[i] = lmarksVec.get(i);\n }\n self.postMessage({\n type: "data" /* DATA */,\n data: lmarks.buffer\n }, [lmarks.buffer]);\n } catch (error) {\n postError(error);\n } finally {\n inputVec?.delete();\n lmarksVec?.delete();\n }\n }\n init().then(() => {\n self.onmessage = (event) => {\n requestLmarks(event.data.data);\n };\n self.postMessage({ type: "init" /* INIT */ });\n }).catch(postError);\n };\n return __toCommonJS(VmojiLmarksAiWorker_exports);\n})();\n',
4936
+ workerArgs: [import_audio_processing.default, import_audio_processing.default.getUrl],
4937
+ workerName: "VmojiLmarksAiWorker"
4892
4938
  });
4893
4939
  }
4894
4940
  onWorkletData(data) {
@@ -4911,6 +4957,8 @@ var EffectVmojiLmarksAi = class extends WorkerAudioProcessor {
4911
4957
  // src/effects/EffectVadAi.ts
4912
4958
  var import_audio_processing2 = __toESM(require_wasm_bindings());
4913
4959
  var VAD_SAMPLE_RATE = 16e3;
4960
+ var TFLITE_MODEL_FILE = "bcresnet_internal_state_20ms.tflite";
4961
+ var MODEL_LOAD_TIMEOUT_MS = 6e4;
4914
4962
  var DEFAULT_VAD_AI_URLS = {
4915
4963
  modelUrl: "https://calls-sdk.cdn-vk.ru/models/bcresnet_no_center_mult2_20ms.onnx",
4916
4964
  modelDataUrl: "https://calls-sdk.cdn-vk.ru/models/bcresnet_no_center_mult2_20ms.onnx.data",
@@ -4925,6 +4973,7 @@ var EffectVadAi = class extends WorkerAudioProcessor {
4925
4973
  _modelDataUrl;
4926
4974
  _ortWasmUrl;
4927
4975
  _ortMjsUrl;
4976
+ _modelLoadTimeout = null;
4928
4977
  constructor(options) {
4929
4978
  super();
4930
4979
  this._modelType = options?.modelType ?? "onnx";
@@ -4933,20 +4982,40 @@ var EffectVadAi = class extends WorkerAudioProcessor {
4933
4982
  this._ortWasmUrl = options?.ortWasmUrl ?? DEFAULT_VAD_AI_URLS.ortWasmUrl;
4934
4983
  this._ortMjsUrl = options?.ortMjsUrl ?? DEFAULT_VAD_AI_URLS.ortMjsUrl;
4935
4984
  }
4985
+ /** Файл модели, на которой работает эффект */
4986
+ get model() {
4987
+ return this._modelType === "tflite" ? TFLITE_MODEL_FILE : getFileName(this._modelUrl);
4988
+ }
4936
4989
  async init() {
4937
4990
  const isTflite = this._modelType === "tflite";
4938
- await super.init({
4939
- sampleRate: VAD_SAMPLE_RATE,
4940
- workletFunction: pureWorkletFunction,
4941
- workletName: "pureWorklet",
4942
- workerFunctionString: isTflite ? '"use strict";\nvar exports = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // src/workers/VadTfliteWorker.ts\n var VadTfliteWorker_exports = {};\n __export(VadTfliteWorker_exports, {\n default: () => VadTfliteWorker_default\n });\n\n // src/utils/ModelLoader.ts\n var MODELS_FOLDER = "/";\n var MODELS_URL_PATH = "models/";\n async function loadModelFile(module, urlResolver, fileName) {\n const response = await fetch(urlResolver(MODELS_URL_PATH + fileName));\n if (!response.ok) {\n throw new Error(`model ${fileName} loading failed with status ${response.status}`);\n }\n const data = new Uint8Array(await response.arrayBuffer());\n module.FS_createDataFile(MODELS_FOLDER, fileName, data, true, false, true);\n }\n function unloadModelFile(module, fileName) {\n module.FS_unlink(MODELS_FOLDER + fileName);\n }\n\n // src/workers/VadTfliteWorker.ts\n var INPUT_SAMPLES = 320;\n var MODEL_FILE = "bcresnet_internal_state_20ms.tflite";\n var VadTfliteWorker_default = (createWav2lipModule, urlResolver) => {\n let Wav2lip = null;\n let classifier = null;\n let buffer = new Float32Array(0);\n function init() {\n return createWav2lipModule({ locateFile: urlResolver }).then(async (module) => {\n Wav2lip = module;\n await loadModelFile(module, urlResolver, MODEL_FILE);\n try {\n const configInput = new Wav2lip.ConfigInput("vad.cfg", true, "/");\n const config = new Wav2lip.Config(configInput);\n classifier = Wav2lip.AudioClassifierFactory.createAlgorithm(config);\n } finally {\n unloadModelFile(module, MODEL_FILE);\n }\n });\n }\n function postError(error) {\n self.postMessage({\n type: "error" /* ERROR */,\n error: typeof error === "number" && Wav2lip ? Wav2lip.getExMessage(error) : error\n });\n }\n function appendBuffer(chunk) {\n const next = new Float32Array(buffer.length + chunk.length);\n next.set(buffer, 0);\n next.set(chunk, buffer.length);\n buffer = next;\n }\n function processAudio(data) {\n if (!classifier || !Wav2lip) {\n return;\n }\n try {\n appendBuffer(new Float32Array(data));\n while (buffer.length >= INPUT_SAMPLES) {\n const chunk = buffer.subarray(0, INPUT_SAMPLES);\n buffer = buffer.subarray(INPUT_SAMPLES);\n const inputVec = new Wav2lip.vector$float$();\n let probs;\n try {\n for (let i = 0; i < INPUT_SAMPLES; i++) {\n inputVec.push_back(chunk[i]);\n }\n probs = Wav2lip.vadAccept(classifier, inputVec);\n const probsSize = probs.size();\n if (probsSize >= 4) {\n const speech0 = probs.get(1);\n const speech1 = probs.get(3);\n const speechProb = Math.max(speech0, speech1);\n self.postMessage({\n type: "data" /* DATA */,\n data: {\n speechProb,\n silenceProb: 1 - speechProb\n }\n });\n }\n } finally {\n inputVec.delete();\n probs?.delete();\n }\n }\n } catch (error) {\n postError(error);\n }\n }\n init().then(() => {\n self.onmessage = (event) => {\n processAudio(event.data.data);\n };\n self.postMessage({ type: "init" /* INIT */ });\n }).catch(postError);\n };\n return __toCommonJS(VadTfliteWorker_exports);\n})();\n' : '"use strict";\nvar exports = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {\n get: (a, b) => (typeof require !== "undefined" ? require : a)[b]\n }) : x)(function(x) {\n if (typeof require !== "undefined")\n return require.apply(this, arguments);\n throw new Error(\'Dynamic require of "\' + x + \'" is not supported\');\n });\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to2, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to2, key) && key !== except)\n __defProp(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to2;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // src/workers/VadOnnxWorker.ts\n var VadOnnxWorker_exports = {};\n __export(VadOnnxWorker_exports, {\n default: () => VadOnnxWorker_default\n });\n\n // node_modules/onnxruntime-web/dist/ort.wasm.bundle.min.mjs\n var import_meta = {};\n var Jt = Object.defineProperty;\n var Xa = Object.getOwnPropertyDescriptor;\n var Qa = Object.getOwnPropertyNames;\n var Za = Object.prototype.hasOwnProperty;\n var qt = ((n) => typeof __require < "u" ? __require : typeof Proxy < "u" ? new Proxy(n, { get: (t, a) => (typeof __require < "u" ? __require : t)[a] }) : n)(function(n) {\n if (typeof __require < "u")\n return __require.apply(this, arguments);\n throw Error(\'Dynamic require of "\' + n + \'" is not supported\');\n });\n var N = (n, t) => () => (n && (t = n(n = 0)), t);\n var ut = (n, t) => {\n for (var a in t)\n Jt(n, a, { get: t[a], enumerable: true });\n };\n var Ka = (n, t, a, u) => {\n if (t && typeof t == "object" || typeof t == "function")\n for (let o of Qa(t))\n !Za.call(n, o) && o !== a && Jt(n, o, { get: () => t[o], enumerable: !(u = Xa(t, o)) || u.enumerable });\n return n;\n };\n var Xt = (n) => Ka(Jt({}, "__esModule", { value: true }), n);\n var ft;\n var Be;\n var qe;\n var es;\n var dr;\n var Qt = N(() => {\n "use strict";\n ft = /* @__PURE__ */ new Map(), Be = [], qe = (n, t, a) => {\n if (t && typeof t.init == "function" && typeof t.createInferenceSessionHandler == "function") {\n let u = ft.get(n);\n if (u === void 0)\n ft.set(n, { backend: t, priority: a });\n else {\n if (u.priority > a)\n return;\n if (u.priority === a && u.backend !== t)\n throw new Error(`cannot register backend "${n}" using priority ${a}`);\n }\n if (a >= 0) {\n let o = Be.indexOf(n);\n o !== -1 && Be.splice(o, 1);\n for (let d = 0; d < Be.length; d++)\n if (ft.get(Be[d]).priority <= a) {\n Be.splice(d, 0, n);\n return;\n }\n Be.push(n);\n }\n return;\n }\n throw new TypeError("not a valid backend");\n }, es = async (n) => {\n let t = ft.get(n);\n if (!t)\n return "backend not found.";\n if (t.initialized)\n return t.backend;\n if (t.aborted)\n return t.error;\n {\n let a = !!t.initPromise;\n try {\n return a || (t.initPromise = t.backend.init(n)), await t.initPromise, t.initialized = true, t.backend;\n } catch (u) {\n return a || (t.error = `${u}`, t.aborted = true), t.error;\n } finally {\n delete t.initPromise;\n }\n }\n }, dr = async (n) => {\n let t = n.executionProviders || [], a = t.map((m) => typeof m == "string" ? m : m.name), u = a.length === 0 ? Be : a, o, d = [], c = /* @__PURE__ */ new Set();\n for (let m of u) {\n let h = await es(m);\n typeof h == "string" ? d.push({ name: m, err: h }) : (o || (o = h), o === h && c.add(m));\n }\n if (!o)\n throw new Error(`no available backend found. ERR: ${d.map((m) => `[${m.name}] ${m.err}`).join(", ")}`);\n for (let { name: m, err: h } of d)\n a.includes(m) && console.warn(`removing requested execution provider "${m}" from session options because it is not available: ${h}`);\n let l = t.filter((m) => c.has(typeof m == "string" ? m : m.name));\n return [o, new Proxy(n, { get: (m, h) => h === "executionProviders" ? l : Reflect.get(m, h) })];\n };\n });\n var pr = N(() => {\n "use strict";\n Qt();\n });\n var mr;\n var hr = N(() => {\n "use strict";\n mr = "1.26.0";\n });\n var wr;\n var J;\n var Zt = N(() => {\n "use strict";\n hr();\n wr = "warning", J = { wasm: {}, webgl: {}, webgpu: {}, versions: { common: mr }, set logLevel(n) {\n if (n !== void 0) {\n if (typeof n != "string" || ["verbose", "info", "warning", "error", "fatal"].indexOf(n) === -1)\n throw new Error(`Unsupported logging level: ${n}`);\n wr = n;\n }\n }, get logLevel() {\n return wr;\n } };\n Object.defineProperty(J, "logLevel", { enumerable: true });\n });\n var Y;\n var br = N(() => {\n "use strict";\n Zt();\n Y = J;\n });\n var yr;\n var gr;\n var Er = N(() => {\n "use strict";\n yr = (n, t) => {\n let a = typeof document < "u" ? document.createElement("canvas") : new OffscreenCanvas(1, 1);\n a.width = n.dims[3], a.height = n.dims[2];\n let u = a.getContext("2d");\n if (u != null) {\n let o, d;\n t?.tensorLayout !== void 0 && t.tensorLayout === "NHWC" ? (o = n.dims[2], d = n.dims[3]) : (o = n.dims[3], d = n.dims[2]);\n let c = t?.format !== void 0 ? t.format : "RGB", l = t?.norm, m, h;\n l === void 0 || l.mean === void 0 ? m = [255, 255, 255, 255] : typeof l.mean == "number" ? m = [l.mean, l.mean, l.mean, l.mean] : (m = [l.mean[0], l.mean[1], l.mean[2], 0], l.mean[3] !== void 0 && (m[3] = l.mean[3])), l === void 0 || l.bias === void 0 ? h = [0, 0, 0, 0] : typeof l.bias == "number" ? h = [l.bias, l.bias, l.bias, l.bias] : (h = [l.bias[0], l.bias[1], l.bias[2], 0], l.bias[3] !== void 0 && (h[3] = l.bias[3]));\n let g = d * o, b = 0, y = g, T = g * 2, I = -1;\n c === "RGBA" ? (b = 0, y = g, T = g * 2, I = g * 3) : c === "RGB" ? (b = 0, y = g, T = g * 2) : c === "RBG" && (b = 0, T = g, y = g * 2);\n for (let D = 0; D < d; D++)\n for (let z = 0; z < o; z++) {\n let v = (n.data[b++] - h[0]) * m[0], O = (n.data[y++] - h[1]) * m[1], F = (n.data[T++] - h[2]) * m[2], _ = I === -1 ? 255 : (n.data[I++] - h[3]) * m[3];\n u.fillStyle = "rgba(" + v + "," + O + "," + F + "," + _ + ")", u.fillRect(z, D, 1, 1);\n }\n if ("toDataURL" in a)\n return a.toDataURL();\n throw new Error("toDataURL is not supported");\n } else\n throw new Error("Can not access image data");\n }, gr = (n, t) => {\n let a = typeof document < "u" ? document.createElement("canvas").getContext("2d") : new OffscreenCanvas(1, 1).getContext("2d"), u;\n if (a != null) {\n let o, d, c;\n t?.tensorLayout !== void 0 && t.tensorLayout === "NHWC" ? (o = n.dims[2], d = n.dims[1], c = n.dims[3]) : (o = n.dims[3], d = n.dims[2], c = n.dims[1]);\n let l = t !== void 0 && t.format !== void 0 ? t.format : "RGB", m = t?.norm, h, g;\n m === void 0 || m.mean === void 0 ? h = [255, 255, 255, 255] : typeof m.mean == "number" ? h = [m.mean, m.mean, m.mean, m.mean] : (h = [m.mean[0], m.mean[1], m.mean[2], 255], m.mean[3] !== void 0 && (h[3] = m.mean[3])), m === void 0 || m.bias === void 0 ? g = [0, 0, 0, 0] : typeof m.bias == "number" ? g = [m.bias, m.bias, m.bias, m.bias] : (g = [m.bias[0], m.bias[1], m.bias[2], 0], m.bias[3] !== void 0 && (g[3] = m.bias[3]));\n let b = d * o;\n if (t !== void 0 && (t.format !== void 0 && c === 4 && t.format !== "RGBA" || c === 3 && t.format !== "RGB" && t.format !== "BGR"))\n throw new Error("Tensor format doesn\'t match input tensor dims");\n let y = 4, T = 0, I = 1, D = 2, z = 3, v = 0, O = b, F = b * 2, _ = -1;\n l === "RGBA" ? (v = 0, O = b, F = b * 2, _ = b * 3) : l === "RGB" ? (v = 0, O = b, F = b * 2) : l === "RBG" && (v = 0, F = b, O = b * 2), u = a.createImageData(o, d);\n for (let k = 0; k < d * o; T += y, I += y, D += y, z += y, k++)\n u.data[T] = (n.data[v++] - g[0]) * h[0], u.data[I] = (n.data[O++] - g[1]) * h[1], u.data[D] = (n.data[F++] - g[2]) * h[2], u.data[z] = _ === -1 ? 255 : (n.data[_++] - g[3]) * h[3];\n } else\n throw new Error("Can not access image data");\n return u;\n };\n });\n var Kt;\n var Tr;\n var Sr;\n var vr;\n var Or;\n var Ar;\n var Ir = N(() => {\n "use strict";\n ct();\n Kt = (n, t) => {\n if (n === void 0)\n throw new Error("Image buffer must be defined");\n if (t.height === void 0 || t.width === void 0)\n throw new Error("Image height and width must be defined");\n if (t.tensorLayout === "NHWC")\n throw new Error("NHWC Tensor layout is not supported yet");\n let { height: a, width: u } = t, o = t.norm ?? { mean: 255, bias: 0 }, d, c;\n typeof o.mean == "number" ? d = [o.mean, o.mean, o.mean, o.mean] : d = [o.mean[0], o.mean[1], o.mean[2], o.mean[3] ?? 255], typeof o.bias == "number" ? c = [o.bias, o.bias, o.bias, o.bias] : c = [o.bias[0], o.bias[1], o.bias[2], o.bias[3] ?? 0];\n let l = t.format !== void 0 ? t.format : "RGBA", m = t.tensorFormat !== void 0 && t.tensorFormat !== void 0 ? t.tensorFormat : "RGB", h = a * u, g = m === "RGBA" ? new Float32Array(h * 4) : new Float32Array(h * 3), b = 4, y = 0, T = 1, I = 2, D = 3, z = 0, v = h, O = h * 2, F = -1;\n l === "RGB" && (b = 3, y = 0, T = 1, I = 2, D = -1), m === "RGBA" ? F = h * 3 : m === "RBG" ? (z = 0, O = h, v = h * 2) : m === "BGR" && (O = 0, v = h, z = h * 2);\n for (let k = 0; k < h; k++, y += b, I += b, T += b, D += b)\n g[z++] = (n[y] + c[0]) / d[0], g[v++] = (n[T] + c[1]) / d[1], g[O++] = (n[I] + c[2]) / d[2], F !== -1 && D !== -1 && (g[F++] = (n[D] + c[3]) / d[3]);\n return m === "RGBA" ? new Q("float32", g, [1, 4, a, u]) : new Q("float32", g, [1, 3, a, u]);\n }, Tr = async (n, t) => {\n let a = typeof HTMLImageElement < "u" && n instanceof HTMLImageElement, u = typeof ImageData < "u" && n instanceof ImageData, o = typeof ImageBitmap < "u" && n instanceof ImageBitmap, d = typeof n == "string", c, l = t ?? {}, m = () => {\n if (typeof document < "u")\n return document.createElement("canvas");\n if (typeof OffscreenCanvas < "u")\n return new OffscreenCanvas(1, 1);\n throw new Error("Canvas is not supported");\n }, h = (g) => typeof HTMLCanvasElement < "u" && g instanceof HTMLCanvasElement || g instanceof OffscreenCanvas ? g.getContext("2d") : null;\n if (a) {\n let g = m();\n g.width = n.width, g.height = n.height;\n let b = h(g);\n if (b != null) {\n let y = n.height, T = n.width;\n if (t !== void 0 && t.resizedHeight !== void 0 && t.resizedWidth !== void 0 && (y = t.resizedHeight, T = t.resizedWidth), t !== void 0) {\n if (l = t, t.tensorFormat !== void 0)\n throw new Error("Image input config format must be RGBA for HTMLImageElement");\n l.tensorFormat = "RGBA", l.height = y, l.width = T;\n } else\n l.tensorFormat = "RGBA", l.height = y, l.width = T;\n b.drawImage(n, 0, 0), c = b.getImageData(0, 0, T, y).data;\n } else\n throw new Error("Can not access image data");\n } else if (u) {\n let g, b;\n if (t !== void 0 && t.resizedWidth !== void 0 && t.resizedHeight !== void 0 ? (g = t.resizedHeight, b = t.resizedWidth) : (g = n.height, b = n.width), t !== void 0 && (l = t), l.format = "RGBA", l.height = g, l.width = b, t !== void 0) {\n let y = m();\n y.width = b, y.height = g;\n let T = h(y);\n if (T != null)\n T.putImageData(n, 0, 0), c = T.getImageData(0, 0, b, g).data;\n else\n throw new Error("Can not access image data");\n } else\n c = n.data;\n } else if (o) {\n if (t === void 0)\n throw new Error("Please provide image config with format for Imagebitmap");\n let g = m();\n g.width = n.width, g.height = n.height;\n let b = h(g);\n if (b != null) {\n let y = n.height, T = n.width;\n return b.drawImage(n, 0, 0, T, y), c = b.getImageData(0, 0, T, y).data, l.height = y, l.width = T, Kt(c, l);\n } else\n throw new Error("Can not access image data");\n } else {\n if (d)\n return new Promise((g, b) => {\n let y = m(), T = h(y);\n if (!n || !T)\n return b();\n let I = new Image();\n I.crossOrigin = "Anonymous", I.src = n, I.onload = () => {\n y.width = I.width, y.height = I.height, T.drawImage(I, 0, 0, y.width, y.height);\n let D = T.getImageData(0, 0, y.width, y.height);\n l.height = y.height, l.width = y.width, g(Kt(D.data, l));\n };\n });\n throw new Error("Input data provided is not supported - aborted tensor creation");\n }\n if (c !== void 0)\n return Kt(c, l);\n throw new Error("Input data provided is not supported - aborted tensor creation");\n }, Sr = (n, t) => {\n let { width: a, height: u, download: o, dispose: d } = t, c = [1, u, a, 4];\n return new Q({ location: "texture", type: "float32", texture: n, dims: c, download: o, dispose: d });\n }, vr = (n, t) => {\n let { dataType: a, dims: u, download: o, dispose: d } = t;\n return new Q({ location: "gpu-buffer", type: a ?? "float32", gpuBuffer: n, dims: u, download: o, dispose: d });\n }, Or = (n, t) => {\n let { dataType: a, dims: u, download: o, dispose: d } = t;\n return new Q({ location: "ml-tensor", type: a ?? "float32", mlTensor: n, dims: u, download: o, dispose: d });\n }, Ar = (n, t, a) => new Q({ location: "cpu-pinned", type: n, data: t, dims: a ?? [t.length] });\n });\n var Le;\n var Xe;\n var Br;\n var Lr;\n var _r = N(() => {\n "use strict";\n Le = /* @__PURE__ */ new Map([["float32", Float32Array], ["uint8", Uint8Array], ["int8", Int8Array], ["uint16", Uint16Array], ["int16", Int16Array], ["int32", Int32Array], ["bool", Uint8Array], ["float64", Float64Array], ["uint32", Uint32Array], ["int4", Uint8Array], ["uint4", Uint8Array]]), Xe = /* @__PURE__ */ new Map([[Float32Array, "float32"], [Uint8Array, "uint8"], [Int8Array, "int8"], [Uint16Array, "uint16"], [Int16Array, "int16"], [Int32Array, "int32"], [Float64Array, "float64"], [Uint32Array, "uint32"]]), Br = false, Lr = () => {\n if (!Br) {\n Br = true;\n let n = typeof BigInt64Array < "u" && BigInt64Array.from, t = typeof BigUint64Array < "u" && BigUint64Array.from, a = globalThis.Float16Array, u = typeof a < "u" && a.from;\n n && (Le.set("int64", BigInt64Array), Xe.set(BigInt64Array, "int64")), t && (Le.set("uint64", BigUint64Array), Xe.set(BigUint64Array, "uint64")), u ? (Le.set("float16", a), Xe.set(a, "float16")) : Le.set("float16", Uint16Array);\n }\n };\n });\n var Pr;\n var Dr;\n var Ur = N(() => {\n "use strict";\n ct();\n Pr = (n) => {\n let t = 1;\n for (let a = 0; a < n.length; a++) {\n let u = n[a];\n if (typeof u != "number" || !Number.isSafeInteger(u))\n throw new TypeError(`dims[${a}] must be an integer, got: ${u}`);\n if (u < 0)\n throw new RangeError(`dims[${a}] must be a non-negative integer, got: ${u}`);\n t *= u;\n }\n return t;\n }, Dr = (n, t) => {\n switch (n.location) {\n case "cpu":\n return new Q(n.type, n.data, t);\n case "cpu-pinned":\n return new Q({ location: "cpu-pinned", data: n.data, type: n.type, dims: t });\n case "texture":\n return new Q({ location: "texture", texture: n.texture, type: n.type, dims: t });\n case "gpu-buffer":\n return new Q({ location: "gpu-buffer", gpuBuffer: n.gpuBuffer, type: n.type, dims: t });\n case "ml-tensor":\n return new Q({ location: "ml-tensor", mlTensor: n.mlTensor, type: n.type, dims: t });\n default:\n throw new Error(`tensorReshape: tensor location ${n.location} is not supported`);\n }\n };\n });\n var Q;\n var ct = N(() => {\n "use strict";\n Er();\n Ir();\n _r();\n Ur();\n Q = class {\n constructor(t, a, u) {\n Lr();\n let o, d;\n if (typeof t == "object" && "location" in t)\n switch (this.dataLocation = t.location, o = t.type, d = t.dims, t.location) {\n case "cpu-pinned": {\n let l = Le.get(o);\n if (!l)\n throw new TypeError(`unsupported type "${o}" to create tensor from pinned buffer`);\n if (!(t.data instanceof l))\n throw new TypeError(`buffer should be of type ${l.name}`);\n this.cpuData = t.data;\n break;\n }\n case "texture": {\n if (o !== "float32")\n throw new TypeError(`unsupported type "${o}" to create tensor from texture`);\n this.gpuTextureData = t.texture, this.downloader = t.download, this.disposer = t.dispose;\n break;\n }\n case "gpu-buffer": {\n if (o !== "float32" && o !== "float16" && o !== "int32" && o !== "int64" && o !== "uint32" && o !== "uint8" && o !== "bool" && o !== "uint4" && o !== "int4")\n throw new TypeError(`unsupported type "${o}" to create tensor from gpu buffer`);\n this.gpuBufferData = t.gpuBuffer, this.downloader = t.download, this.disposer = t.dispose;\n break;\n }\n case "ml-tensor": {\n if (o !== "float32" && o !== "float16" && o !== "int32" && o !== "int64" && o !== "uint32" && o !== "uint64" && o !== "int8" && o !== "uint8" && o !== "bool" && o !== "uint4" && o !== "int4")\n throw new TypeError(`unsupported type "${o}" to create tensor from MLTensor`);\n this.mlTensorData = t.mlTensor, this.downloader = t.download, this.disposer = t.dispose;\n break;\n }\n default:\n throw new Error(`Tensor constructor: unsupported location \'${this.dataLocation}\'`);\n }\n else {\n let l, m;\n if (typeof t == "string")\n if (o = t, m = u, t === "string") {\n if (!Array.isArray(a))\n throw new TypeError("A string tensor\'s data must be a string array.");\n l = a;\n } else {\n let h = Le.get(t);\n if (h === void 0)\n throw new TypeError(`Unsupported tensor type: ${t}.`);\n if (Array.isArray(a)) {\n if (t === "float16" && h === Uint16Array || t === "uint4" || t === "int4")\n throw new TypeError(`Creating a ${t} tensor from number array is not supported. Please use ${h.name} as data.`);\n t === "uint64" || t === "int64" ? l = h.from(a, BigInt) : l = h.from(a);\n } else if (a instanceof h)\n l = a;\n else if (a instanceof Uint8ClampedArray)\n if (t === "uint8")\n l = Uint8Array.from(a);\n else\n throw new TypeError("A Uint8ClampedArray tensor\'s data must be type of uint8");\n else if (t === "float16" && a instanceof Uint16Array && h !== Uint16Array)\n l = new globalThis.Float16Array(a.buffer, a.byteOffset, a.length);\n else\n throw new TypeError(`A ${o} tensor\'s data must be type of ${h}`);\n }\n else if (m = a, Array.isArray(t)) {\n if (t.length === 0)\n throw new TypeError("Tensor type cannot be inferred from an empty array.");\n let h = typeof t[0];\n if (h === "string")\n o = "string", l = t;\n else if (h === "boolean")\n o = "bool", l = Uint8Array.from(t);\n else\n throw new TypeError(`Invalid element type of data array: ${h}.`);\n } else if (t instanceof Uint8ClampedArray)\n o = "uint8", l = Uint8Array.from(t);\n else {\n let h = Xe.get(t.constructor);\n if (h === void 0)\n throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);\n o = h, l = t;\n }\n if (m === void 0)\n m = [l.length];\n else if (!Array.isArray(m))\n throw new TypeError("A tensor\'s dims must be a number array");\n d = m, this.cpuData = l, this.dataLocation = "cpu";\n }\n let c = Pr(d);\n if (this.cpuData && c !== this.cpuData.length && !((o === "uint4" || o === "int4") && Math.ceil(c / 2) === this.cpuData.length))\n throw new Error(`Tensor\'s size(${c}) does not match data length(${this.cpuData.length}).`);\n this.type = o, this.dims = d, this.size = c;\n }\n static async fromImage(t, a) {\n return Tr(t, a);\n }\n static fromTexture(t, a) {\n return Sr(t, a);\n }\n static fromGpuBuffer(t, a) {\n return vr(t, a);\n }\n static fromMLTensor(t, a) {\n return Or(t, a);\n }\n static fromPinnedBuffer(t, a, u) {\n return Ar(t, a, u);\n }\n toDataURL(t) {\n return yr(this, t);\n }\n toImageData(t) {\n return gr(this, t);\n }\n get data() {\n if (this.ensureValid(), !this.cpuData)\n 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.");\n return this.cpuData;\n }\n get location() {\n return this.dataLocation;\n }\n get texture() {\n if (this.ensureValid(), !this.gpuTextureData)\n throw new Error("The data is not stored as a WebGL texture.");\n return this.gpuTextureData;\n }\n get gpuBuffer() {\n if (this.ensureValid(), !this.gpuBufferData)\n throw new Error("The data is not stored as a WebGPU buffer.");\n return this.gpuBufferData;\n }\n get mlTensor() {\n if (this.ensureValid(), !this.mlTensorData)\n throw new Error("The data is not stored as a WebNN MLTensor.");\n return this.mlTensorData;\n }\n async getData(t) {\n switch (this.ensureValid(), this.dataLocation) {\n case "cpu":\n case "cpu-pinned":\n return this.data;\n case "texture":\n case "gpu-buffer":\n case "ml-tensor": {\n if (!this.downloader)\n throw new Error("The current tensor is not created with a specified data downloader.");\n if (this.isDownloading)\n throw new Error("The current tensor is being downloaded.");\n try {\n this.isDownloading = true;\n let a = await this.downloader();\n return this.downloader = void 0, this.dataLocation = "cpu", this.cpuData = a, t && this.disposer && (this.disposer(), this.disposer = void 0), a;\n } finally {\n this.isDownloading = false;\n }\n }\n default:\n throw new Error(`cannot get data from location: ${this.dataLocation}`);\n }\n }\n dispose() {\n if (this.isDownloading)\n throw new Error("The current tensor is being downloaded.");\n this.disposer && (this.disposer(), this.disposer = void 0), this.cpuData = void 0, this.gpuTextureData = void 0, this.gpuBufferData = void 0, this.mlTensorData = void 0, this.downloader = void 0, this.isDownloading = void 0, this.dataLocation = "none";\n }\n ensureValid() {\n if (this.dataLocation === "none")\n throw new Error("The tensor is disposed.");\n }\n reshape(t) {\n if (this.ensureValid(), this.downloader || this.disposer)\n throw new Error("Cannot reshape a tensor that owns GPU resource.");\n return Dr(this, t);\n }\n };\n });\n var de;\n var en = N(() => {\n "use strict";\n ct();\n de = Q;\n });\n var xr;\n var Mr;\n var _e;\n var Pe;\n var De;\n var Ue;\n var tn = N(() => {\n "use strict";\n Zt();\n xr = (n, t) => {\n (typeof J.trace > "u" ? !J.wasm.trace : !J.trace) || console.timeStamp(`${n}::ORT::${t}`);\n }, Mr = (n, t) => {\n let a = new Error().stack?.split(/\\r\\n|\\r|\\n/g) || [], u = false;\n for (let o = 0; o < a.length; o++) {\n if (u && !a[o].includes("TRACE_FUNC")) {\n let d = `FUNC_${n}::${a[o].trim().split(" ")[1]}`;\n t && (d += `::${t}`), xr("CPU", d);\n return;\n }\n a[o].includes("TRACE_FUNC") && (u = true);\n }\n }, _e = (n) => {\n (typeof J.trace > "u" ? !J.wasm.trace : !J.trace) || Mr("BEGIN", n);\n }, Pe = (n) => {\n (typeof J.trace > "u" ? !J.wasm.trace : !J.trace) || Mr("END", n);\n }, De = (n) => {\n (typeof J.trace > "u" ? !J.wasm.trace : !J.trace) || console.time(`ORT::${n}`);\n }, Ue = (n) => {\n (typeof J.trace > "u" ? !J.wasm.trace : !J.trace) || console.timeEnd(`ORT::${n}`);\n };\n });\n var lt;\n var Cr = N(() => {\n "use strict";\n Qt();\n en();\n tn();\n lt = class n {\n constructor(t) {\n this.handler = t;\n }\n async run(t, a, u) {\n _e(), De("InferenceSession.run");\n let o = {}, d = {};\n if (typeof t != "object" || t === null || t instanceof de || Array.isArray(t))\n throw new TypeError("\'feeds\' must be an object that use input names as keys and OnnxValue as corresponding values.");\n let c = true;\n if (typeof a == "object") {\n if (a === null)\n throw new TypeError("Unexpected argument[1]: cannot be null.");\n if (a instanceof de)\n throw new TypeError("\'fetches\' cannot be a Tensor");\n if (Array.isArray(a)) {\n if (a.length === 0)\n throw new TypeError("\'fetches\' cannot be an empty array.");\n c = false;\n for (let h of a) {\n if (typeof h != "string")\n throw new TypeError("\'fetches\' must be a string array or an object.");\n if (this.outputNames.indexOf(h) === -1)\n throw new RangeError(`\'fetches\' contains invalid output name: ${h}.`);\n o[h] = null;\n }\n if (typeof u == "object" && u !== null)\n d = u;\n else if (typeof u < "u")\n throw new TypeError("\'options\' must be an object.");\n } else {\n let h = false, g = Object.getOwnPropertyNames(a);\n for (let b of this.outputNames)\n if (g.indexOf(b) !== -1) {\n let y = a[b];\n (y === null || y instanceof de) && (h = true, c = false, o[b] = y);\n }\n if (h) {\n if (typeof u == "object" && u !== null)\n d = u;\n else if (typeof u < "u")\n throw new TypeError("\'options\' must be an object.");\n } else\n d = a;\n }\n } else if (typeof a < "u")\n throw new TypeError("Unexpected argument[1]: must be \'fetches\' or \'options\'.");\n for (let h of this.inputNames)\n if (typeof t[h] > "u")\n throw new Error(`input \'${h}\' is missing in \'feeds\'.`);\n if (c)\n for (let h of this.outputNames)\n o[h] = null;\n let l = await this.handler.run(t, o, d), m = {};\n for (let h in l)\n if (Object.hasOwnProperty.call(l, h)) {\n let g = l[h];\n g instanceof de ? m[h] = g : m[h] = new de(g.type, g.data, g.dims);\n }\n return Ue("InferenceSession.run"), Pe(), m;\n }\n async release() {\n return this.handler.dispose();\n }\n static async create(t, a, u, o) {\n _e(), De("InferenceSession.create");\n let d, c = {};\n if (typeof t == "string") {\n if (d = t, typeof a == "object" && a !== null)\n c = a;\n else if (typeof a < "u")\n throw new TypeError("\'options\' must be an object.");\n } else if (t instanceof Uint8Array) {\n if (d = t, typeof a == "object" && a !== null)\n c = a;\n else if (typeof a < "u")\n throw new TypeError("\'options\' must be an object.");\n } else if (t instanceof ArrayBuffer || typeof SharedArrayBuffer < "u" && t instanceof SharedArrayBuffer) {\n let g = t, b = 0, y = t.byteLength;\n if (typeof a == "object" && a !== null)\n c = a;\n else if (typeof a == "number") {\n if (b = a, !Number.isSafeInteger(b))\n throw new RangeError("\'byteOffset\' must be an integer.");\n if (b < 0 || b >= g.byteLength)\n throw new RangeError(`\'byteOffset\' is out of range [0, ${g.byteLength}).`);\n if (y = t.byteLength - b, typeof u == "number") {\n if (y = u, !Number.isSafeInteger(y))\n throw new RangeError("\'byteLength\' must be an integer.");\n if (y <= 0 || b + y > g.byteLength)\n throw new RangeError(`\'byteLength\' is out of range (0, ${g.byteLength - b}].`);\n if (typeof o == "object" && o !== null)\n c = o;\n else if (typeof o < "u")\n throw new TypeError("\'options\' must be an object.");\n } else if (typeof u < "u")\n throw new TypeError("\'byteLength\' must be a number.");\n } else if (typeof a < "u")\n throw new TypeError("\'options\' must be an object.");\n d = new Uint8Array(g, b, y);\n } else\n throw new TypeError("Unexpected argument[0]: must be \'path\' or \'buffer\'.");\n let [l, m] = await dr(c), h = await l.createInferenceSessionHandler(d, m);\n return Ue("InferenceSession.create"), Pe(), new n(h);\n }\n startProfiling() {\n this.handler.startProfiling();\n }\n endProfiling() {\n this.handler.endProfiling();\n }\n get inputNames() {\n return this.handler.inputNames;\n }\n get outputNames() {\n return this.handler.outputNames;\n }\n get inputMetadata() {\n return this.handler.inputMetadata;\n }\n get outputMetadata() {\n return this.handler.outputMetadata;\n }\n };\n });\n var ts;\n var Rr = N(() => {\n "use strict";\n Cr();\n ts = lt;\n });\n var Fr = N(() => {\n "use strict";\n });\n var Nr = N(() => {\n "use strict";\n });\n var kr = N(() => {\n "use strict";\n });\n var Wr = N(() => {\n "use strict";\n });\n var nn = {};\n ut(nn, { InferenceSession: () => ts, TRACE: () => xr, TRACE_EVENT_BEGIN: () => De, TRACE_EVENT_END: () => Ue, TRACE_FUNC_BEGIN: () => _e, TRACE_FUNC_END: () => Pe, Tensor: () => de, env: () => Y, registerBackend: () => qe });\n var Te = N(() => {\n "use strict";\n pr();\n br();\n Rr();\n en();\n Fr();\n Nr();\n tn();\n kr();\n Wr();\n });\n var dt = N(() => {\n "use strict";\n });\n var Hr = {};\n ut(Hr, { default: () => ns });\n var $r;\n var zr;\n var ns;\n var jr = N(() => {\n "use strict";\n rn();\n xe();\n pt();\n $r = "ort-wasm-proxy-worker", zr = globalThis.self?.name === $r;\n zr && (self.onmessage = (n) => {\n let { type: t, in: a } = n.data;\n try {\n switch (t) {\n case "init-wasm":\n mt(a.wasm).then(() => {\n ht(a).then(() => {\n postMessage({ type: t });\n }, (u) => {\n postMessage({ type: t, err: u });\n });\n }, (u) => {\n postMessage({ type: t, err: u });\n });\n break;\n case "init-ep": {\n let { epName: u, env: o } = a;\n wt(o, u).then(() => {\n postMessage({ type: t });\n }, (d) => {\n postMessage({ type: t, err: d });\n });\n break;\n }\n case "copy-from": {\n let { buffer: u } = a, o = Qe(u);\n postMessage({ type: t, out: o });\n break;\n }\n case "create": {\n let { model: u, options: o } = a;\n bt(u, o).then((d) => {\n postMessage({ type: t, out: d });\n }, (d) => {\n postMessage({ type: t, err: d });\n });\n break;\n }\n case "release":\n yt(a), postMessage({ type: t });\n break;\n case "run": {\n let { sessionId: u, inputIndices: o, inputs: d, outputIndices: c, options: l } = a;\n gt(u, o, d, c, new Array(c.length).fill(null), l).then((m) => {\n m.some((h) => h[3] !== "cpu") ? postMessage({ type: t, err: "Proxy does not support non-cpu tensor location." }) : postMessage({ type: t, out: m }, Tt([...d, ...m]));\n }, (m) => {\n postMessage({ type: t, err: m });\n });\n break;\n }\n case "end-profiling":\n Et(a), postMessage({ type: t });\n break;\n default:\n }\n } catch (u) {\n postMessage({ type: t, err: u });\n }\n });\n ns = zr ? null : (n) => new Worker(n ?? oe, { type: "module", name: $r });\n });\n var Yr = {};\n ut(Yr, { default: () => rs });\n async function Vr(n = {}) {\n var t = n, a = !!globalThis.window, u = !!globalThis.WorkerGlobalScope, o = u && self.name?.startsWith("em-pthread");\n t.mountExternalData = (e, r) => {\n e.startsWith("./") && (e = e.substring(2)), (t.Rb || (t.Rb = /* @__PURE__ */ new Map())).set(e, r);\n }, t.unmountExternalData = () => {\n delete t.Rb;\n }, globalThis.SharedArrayBuffer ?? new WebAssembly.Memory({ initial: 0, maximum: 0, shared: true }).buffer.constructor;\n var d, c, l = (e, r) => {\n throw r;\n }, m = import_meta.url, h = "";\n if (a || u) {\n try {\n h = new URL(".", m).href;\n } catch {\n }\n u && (c = (e) => {\n var r = new XMLHttpRequest();\n return r.open("GET", e, false), r.responseType = "arraybuffer", r.send(null), new Uint8Array(r.response);\n }), d = async (e) => {\n if (k(e))\n return new Promise((i, s) => {\n var f = new XMLHttpRequest();\n f.open("GET", e, true), f.responseType = "arraybuffer", f.onload = () => {\n f.status == 200 || f.status == 0 && f.response ? i(f.response) : s(f.status);\n }, f.onerror = s, f.send(null);\n });\n var r = await fetch(e, { credentials: "same-origin" });\n if (r.ok)\n return r.arrayBuffer();\n throw Error(r.status + " : " + r.url);\n };\n }\n var g, b, y, T, I, D, z = console.log.bind(console), v = console.error.bind(console), O = z, F = v, _ = false, k = (e) => e.startsWith("file://");\n function w() {\n ge.buffer != j.buffer && ee();\n }\n if (o) {\n let e = function(r) {\n try {\n var i = r.data, s = i.Pb;\n if (s === "load") {\n let f = [];\n self.onmessage = (p) => f.push(p), D = () => {\n postMessage({ Pb: "loaded" });\n for (let p of f)\n e(p);\n self.onmessage = e;\n };\n for (let p of i.Zb)\n t[p] && !t[p].proxy || (t[p] = (...E) => {\n postMessage({ Pb: "callHandler", Yb: p, args: E });\n }, p == "print" && (O = t[p]), p == "printErr" && (F = t[p]));\n ge = i.dc, ee(), b = i.ec, Ut(), it();\n } else if (s === "run") {\n (function(f) {\n var p = (w(), W)[f + 52 >>> 2 >>> 0];\n f = (w(), W)[f + 56 >>> 2 >>> 0], sr(p, p - f), P(p);\n })(i.Ob), zt(i.Ob, 0, 0, 1, 0, 0), wn(), Ft(i.Ob), Z ||= true;\n try {\n Ao(i.bc, i.Tb);\n } catch (f) {\n if (f != "unwind")\n throw f;\n }\n } else\n i.target !== "setimmediate" && (s === "checkMailbox" ? Z && rt() : s && (F(`worker: received unknown command ${s}`), F(i)));\n } catch (f) {\n throw tr(), f;\n }\n };\n var Ss = e, Z = false;\n self.onunhandledrejection = (r) => {\n throw r.reason || r;\n }, self.onmessage = e;\n }\n var j, ne, pe, B, W, re, me, A, K, je = false;\n function ee() {\n var e = ge.buffer;\n t.HEAP8 = j = new Int8Array(e), pe = new Int16Array(e), t.HEAPU8 = ne = new Uint8Array(e), new Uint16Array(e), t.HEAP32 = B = new Int32Array(e), t.HEAPU32 = W = new Uint32Array(e), re = new Float32Array(e), me = new Float64Array(e), A = new BigInt64Array(e), new BigUint64Array(e);\n }\n function he() {\n je = true, o ? D() : Ee.Ta();\n }\n function H(e) {\n throw F(e = "Aborted(" + e + ")"), _ = true, e = new WebAssembly.RuntimeError(e + ". Build with -sASSERTIONS for more info."), I?.(e), e;\n }\n function q() {\n return { a: { R: fa, f: Io, w: Bo, e: Lo, k: _o, g: Po, S: Do, b: Uo, G: xo, ta: vn, j: Mo, L: In, Ja: Bn, pa: Ln, ra: _n, Ka: Pn, Ha: Dn, Aa: Un, Ga: xn, Y: Mn, qa: Cn, na: Rn, Ia: Fn, oa: Nn, Pa: Co, Da: Ro, la: No, ua: ko, ia: Wo, T: Go, Ca: Ft, Ma: $o, xa: zo, ya: Ho, za: jo, va: $n, wa: zn, ja: Hn, Ra: Yo, Oa: Xo, V: Qo, U: Zo, Na: Jo, F: Ko, La: ea, ma: ta, u: Vo, H: na, Q: at, ka: oa, aa: ra, Sa: aa, Ea: Yn, Fa: Jn, sa: ye, I: qn, X: Xn, Ba: Qn, W: Zn, _: ja, M: Wa, $: Ha, N: ka, v: Pa, c: pa, m: la, n: ca, q: va, ba: Ra, x: Ba, o: wa, O: Fa, D: Ga, J: Ca, ca: Ma, da: xa, A: Oa, P: Ua, ea: Da, z: La, E: Na, d: da, r: ha, i: ma, Z: Va, l: ya, p: ga, s: ba, t: Ea, y: Aa, fa: _a, B: $a, K: Ia, C: za, ga: Sa, ha: Ta, h: ia, a: ge, Qa: V } };\n }\n async function Ut() {\n function e(s, f) {\n return Ee = s.exports, Ee = function() {\n var p = Ee, E = (x) => () => x() >>> 0, S = (x) => (R) => x(R) >>> 0;\n return (p = Object.assign({}, p)).sb = E(p.sb), p.ub = S(p.ub), p.Ib = S(p.Ib), p.Jb = E(p.Jb), p.Nb = S(p.Nb), p;\n }(), mn.push(Ee.vb), s = Ee, t._OrtInit = s.Ua, t._OrtGetLastError = s.Va, t._OrtCreateSessionOptions = s.Wa, t._OrtAppendExecutionProvider = s.Xa, t._OrtAddFreeDimensionOverride = s.Ya, t._OrtAddSessionConfigEntry = s.Za, t._OrtReleaseSessionOptions = s._a, t._OrtCreateSession = s.$a, t._OrtReleaseSession = s.ab, t._OrtGetInputOutputCount = s.bb, t._OrtGetInputOutputMetadata = s.cb, t._OrtFree = s.db, t._OrtCreateTensor = s.eb, t._OrtGetTensorData = s.fb, t._OrtReleaseTensor = s.gb, t._OrtCreateRunOptions = s.hb, t._OrtAddRunConfigEntry = s.ib, t._OrtReleaseRunOptions = s.jb, t._OrtCreateBinding = s.kb, t._OrtBindInput = s.lb, t._OrtBindOutput = s.mb, t._OrtClearBoundOutputs = s.nb, t._OrtReleaseBinding = s.ob, t._OrtRunWithBinding = s.pb, t._OrtRun = s.qb, t._OrtEndProfiling = s.rb, st = s.sb, Kn = t._free = s.tb, er = t._malloc = s.ub, zt = s.xb, tr = s.yb, nr = s.zb, rr = s.Ab, Ht = s.Bb, or = s.Cb, ar = s.Db, M = s.Eb, Je = s.Fb, sr = s.Gb, P = s.Hb, jt = s.Ib, U = s.Jb, ir = s.Kb, Vt = s.Lb, ur = s.Mb, fr = s.Nb, cr = s.wb, b = f, Ee;\n }\n var r, i = q();\n return t.instantiateWasm ? new Promise((s) => {\n t.instantiateWasm(i, (f, p) => {\n s(e(f, p));\n });\n }) : o ? e(new WebAssembly.Instance(b, q()), b) : (K ??= t.locateFile ? t.locateFile ? t.locateFile("ort-wasm-simd-threaded.wasm", h) : h + "ort-wasm-simd-threaded.wasm" : new URL("ort-wasm-simd-threaded.wasm", import_meta.url).href, r = await async function(s) {\n var f = K;\n if (!g && !k(f))\n try {\n var p = fetch(f, { credentials: "same-origin" });\n return await WebAssembly.instantiateStreaming(p, s);\n } catch (E) {\n F(`wasm streaming compile failed: ${E}`), F("falling back to ArrayBuffer instantiation");\n }\n return async function(E, S) {\n try {\n var x = await async function(R) {\n if (!g)\n try {\n var X = await d(R);\n return new Uint8Array(X);\n } catch {\n }\n if (R == K && g)\n R = new Uint8Array(g);\n else {\n if (!c)\n throw "both async and sync fetching of the wasm failed";\n R = c(R);\n }\n return R;\n }(E);\n return await WebAssembly.instantiate(x, S);\n } catch (R) {\n F(`failed to asynchronously prepare wasm: ${R}`), H(R);\n }\n }(f, s);\n }(i), e(r.instance, r.module));\n }\n class Se {\n name = "ExitStatus";\n constructor(r) {\n this.message = `Program terminated with exit(${r})`, this.status = r;\n }\n }\n var ve = (e) => {\n e.terminate(), e.onmessage = () => {\n };\n }, Ve = [], Re = 0, te = null, ue = (e) => {\n ce.length == 0 && (yn(), bn(ce[0]));\n var r = ce.pop();\n if (!r)\n return 6;\n Fe.push(r), Oe[e.Ob] = r, r.Ob = e.Ob;\n var i = { Pb: "run", bc: e.ac, Tb: e.Tb, Ob: e.Ob };\n return r.postMessage(i, e.Xb), 0;\n }, se = 0, L = (e, r, ...i) => {\n var s, f = 16 * i.length, p = U(), E = jt(f), S = E >>> 3;\n for (s of i)\n typeof s == "bigint" ? ((w(), A)[S++ >>> 0] = 1n, (w(), A)[S++ >>> 0] = s) : ((w(), A)[S++ >>> 0] = 0n, (w(), me)[S++ >>> 0] = s);\n return e = nr(e, 0, f, E, r), P(p), e;\n };\n function V(e) {\n if (o)\n return L(0, 1, e);\n if (y = e, !(0 < se)) {\n for (var r of Fe)\n ve(r);\n for (r of ce)\n ve(r);\n ce = [], Fe = [], Oe = {}, _ = true;\n }\n l(0, new Se(e));\n }\n function fe(e) {\n if (o)\n return L(1, 0, e);\n ye(e);\n }\n var ye = (e) => {\n if (y = e, o)\n throw fe(e), "unwind";\n V(e);\n }, ce = [], Fe = [], mn = [], Oe = {}, hn = (e) => {\n var r = e.Ob;\n delete Oe[r], ce.push(e), Fe.splice(Fe.indexOf(e), 1), e.Ob = 0, rr(r);\n };\n function wn() {\n mn.forEach((e) => e());\n }\n var bn = (e) => new Promise((r) => {\n e.onmessage = (f) => {\n var p = f.data;\n if (f = p.Pb, p.Sb && p.Sb != st()) {\n var E = Oe[p.Sb];\n E ? E.postMessage(p, p.Xb) : F(`Internal error! Worker sent a message "${f}" to target pthread ${p.Sb}, but that thread no longer exists!`);\n } else\n f === "checkMailbox" ? rt() : f === "spawnThread" ? ue(p) : f === "cleanupThread" ? Rt(() => {\n hn(Oe[p.cc]);\n }) : f === "loaded" ? (e.loaded = true, r(e)) : p.target === "setimmediate" ? e.postMessage(p) : f === "uncaughtException" ? e.onerror(p.error) : f === "callHandler" ? t[p.Yb](...p.args) : f && F(`worker sent an unknown command ${f}`);\n }, e.onerror = (f) => {\n throw F(`worker sent an error! ${f.filename}:${f.lineno}: ${f.message}`), f;\n };\n var i, s = [];\n for (i of [])\n t.propertyIsEnumerable(i) && s.push(i);\n e.postMessage({ Pb: "load", Zb: s, dc: ge, ec: b });\n });\n function yn() {\n var e = new Worker((() => {\n let r = URL;\n return import_meta.url > "file:" && import_meta.url < "file;" ? new r("ort.wasm.bundle.min.mjs", import_meta.url) : new URL(import_meta.url);\n })(), { type: "module", workerData: "em-pthread", name: "em-pthread" });\n ce.push(e);\n }\n var ge, gn = [], C = (e) => {\n var r = gn[e];\n return r || (gn[e] = r = cr.get(e)), r;\n }, Ao = (e, r) => {\n se = 0, e = C(e)(r), 0 < se ? y = e : Ht(e);\n }, tt = [], nt = 0;\n function Io(e) {\n var r = new xt(e >>>= 0);\n return (w(), j)[r.Qb + 12 >>> 0] == 0 && (En(r, true), nt--), Tn(r, false), tt.push(r), fr(e);\n }\n var Ne = 0, Bo = () => {\n M(0, 0);\n var e = tt.pop();\n ir(e.Ub), Ne = 0;\n };\n function En(e, r) {\n r = r ? 1 : 0, (w(), j)[e.Qb + 12 >>> 0] = r;\n }\n function Tn(e, r) {\n r = r ? 1 : 0, (w(), j)[e.Qb + 13 >>> 0] = r;\n }\n class xt {\n constructor(r) {\n this.Ub = r, this.Qb = r - 24;\n }\n }\n var Mt = (e) => {\n var r = Ne;\n if (!r)\n return Je(0), 0;\n var i = new xt(r);\n (w(), W)[i.Qb + 16 >>> 2 >>> 0] = r;\n var s = (w(), W)[i.Qb + 4 >>> 2 >>> 0];\n if (!s)\n return Je(0), r;\n for (var f of e) {\n if (f === 0 || f === s)\n break;\n if (ur(f, s, i.Qb + 16))\n return Je(f), r;\n }\n return Je(s), r;\n };\n function Lo() {\n return Mt([]);\n }\n function _o(e) {\n return Mt([e >>> 0]);\n }\n function Po(e, r, i, s) {\n return Mt([e >>> 0, r >>> 0, i >>> 0, s >>> 0]);\n }\n var Do = () => {\n var e = tt.pop();\n e || H("no exception to throw");\n var r = e.Ub;\n throw (w(), j)[e.Qb + 13 >>> 0] == 0 && (tt.push(e), Tn(e, true), En(e, false), nt++), Vt(r), Ne = r;\n };\n function Uo(e, r, i) {\n var s = new xt(e >>>= 0);\n throw r >>>= 0, i >>>= 0, (w(), W)[s.Qb + 16 >>> 2 >>> 0] = 0, (w(), W)[s.Qb + 4 >>> 2 >>> 0] = r, (w(), W)[s.Qb + 8 >>> 2 >>> 0] = i, Vt(e), nt++, Ne = e;\n }\n var xo = () => nt;\n function Sn(e, r, i, s) {\n return o ? L(2, 1, e, r, i, s) : vn(e, r, i, s);\n }\n function vn(e, r, i, s) {\n if (e >>>= 0, r >>>= 0, i >>>= 0, s >>>= 0, !globalThis.SharedArrayBuffer)\n return 6;\n var f = [];\n return o && f.length === 0 ? Sn(e, r, i, s) : (e = { ac: i, Ob: e, Tb: s, Xb: f }, o ? (e.Pb = "spawnThread", postMessage(e, f), 0) : ue(e));\n }\n function Mo(e) {\n throw Ne ||= e >>> 0, Ne;\n }\n var On = globalThis.TextDecoder && new TextDecoder(), An = (e, r = 0, i, s) => {\n var f = r >>>= 0;\n if (i = f + i, s)\n s = i;\n else {\n for (; e[f] && !(f >= i); )\n ++f;\n s = f;\n }\n if (16 < s - r && e.buffer && On)\n return On.decode(e.buffer instanceof ArrayBuffer ? e.subarray(r, s) : e.slice(r, s));\n for (f = ""; r < s; )\n if (128 & (i = e[r++])) {\n var p = 63 & e[r++];\n if ((224 & i) == 192)\n f += String.fromCharCode((31 & i) << 6 | p);\n else {\n var E = 63 & e[r++];\n 65536 > (i = (240 & i) == 224 ? (15 & i) << 12 | p << 6 | E : (7 & i) << 18 | p << 12 | E << 6 | 63 & e[r++]) ? f += String.fromCharCode(i) : (i -= 65536, f += String.fromCharCode(55296 | i >> 10, 56320 | 1023 & i));\n }\n } else\n f += String.fromCharCode(i);\n return f;\n }, Ct = (e, r, i) => (e >>>= 0) ? An((w(), ne), e, r, i) : "";\n function In(e, r, i) {\n return o ? L(3, 1, e, r, i) : 0;\n }\n function Bn(e, r) {\n if (o)\n return L(4, 1, e, r);\n }\n function Ln(e, r) {\n if (o)\n return L(5, 1, e, r);\n }\n function _n(e, r, i) {\n if (o)\n return L(6, 1, e, r, i);\n }\n function Pn(e, r, i) {\n return o ? L(7, 1, e, r, i) : 0;\n }\n function Dn(e, r) {\n if (o)\n return L(8, 1, e, r);\n }\n function Un(e, r, i) {\n if (o)\n return L(9, 1, e, r, i);\n }\n function xn(e, r, i, s) {\n if (o)\n return L(10, 1, e, r, i, s);\n }\n function Mn(e, r, i, s) {\n if (o)\n return L(11, 1, e, r, i, s);\n }\n function Cn(e, r, i, s) {\n if (o)\n return L(12, 1, e, r, i, s);\n }\n function Rn(e) {\n if (o)\n return L(13, 1, e);\n }\n function Fn(e, r) {\n if (o)\n return L(14, 1, e, r);\n }\n function Nn(e, r, i) {\n if (o)\n return L(15, 1, e, r, i);\n }\n var Co = () => H("");\n function Ro(e) {\n zt(e >>> 0, !u, 1, !a, 131072, false), wn();\n }\n var Rt = (e) => {\n if (!_)\n try {\n if (e(), !(0 < se))\n try {\n o ? st() && Ht(y) : ye(y);\n } catch (r) {\n r instanceof Se || r == "unwind" || l(0, r);\n }\n } catch (r) {\n r instanceof Se || r == "unwind" || l(0, r);\n }\n }, Fo = !Atomics.waitAsync || globalThis.navigator?.userAgent && 91 > Number((navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./) || [])[2]);\n function Ft(e) {\n e >>>= 0, Fo || (Atomics.waitAsync((w(), B), e >>> 2, e).value.then(rt), e += 128, Atomics.store((w(), B), e >>> 2, 1));\n }\n var rt = () => Rt(() => {\n var e = st();\n e && (Ft(e), ar());\n });\n function No(e, r) {\n (e >>>= 0) == r >>> 0 ? setTimeout(rt) : o ? postMessage({ Sb: e, Pb: "checkMailbox" }) : (e = Oe[e]) && e.postMessage({ Pb: "checkMailbox" });\n }\n var Nt = [];\n function ko(e, r, i, s, f) {\n for (r >>>= 0, f >>>= 0, Nt.length = 0, i = f >>> 3, s = f + s >>> 3; i < s; ) {\n var p;\n p = (w(), A)[i++ >>> 0] ? (w(), A)[i++ >>> 0] : (w(), me)[i++ >>> 0], Nt.push(p);\n }\n return (r ? lr[r] : ua[e])(...Nt);\n }\n var Wo = () => {\n se = 0;\n };\n function Go(e) {\n e >>>= 0, o ? postMessage({ Pb: "cleanupThread", cc: e }) : hn(Oe[e]);\n }\n function $o(e) {\n }\n function zo(e, r) {\n e = -9007199254740992 > e || 9007199254740992 < e ? NaN : Number(e), r >>>= 0, e = new Date(1e3 * e), (w(), B)[r >>> 2 >>> 0] = e.getUTCSeconds(), (w(), B)[r + 4 >>> 2 >>> 0] = e.getUTCMinutes(), (w(), B)[r + 8 >>> 2 >>> 0] = e.getUTCHours(), (w(), B)[r + 12 >>> 2 >>> 0] = e.getUTCDate(), (w(), B)[r + 16 >>> 2 >>> 0] = e.getUTCMonth(), (w(), B)[r + 20 >>> 2 >>> 0] = e.getUTCFullYear() - 1900, (w(), B)[r + 24 >>> 2 >>> 0] = e.getUTCDay(), e = (e.getTime() - Date.UTC(e.getUTCFullYear(), 0, 1, 0, 0, 0, 0)) / 864e5 | 0, (w(), B)[r + 28 >>> 2 >>> 0] = e;\n }\n var kn = (e) => e % 4 == 0 && (e % 100 != 0 || e % 400 == 0), Wn = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], Gn = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n function Ho(e, r) {\n e = -9007199254740992 > e || 9007199254740992 < e ? NaN : Number(e), r >>>= 0, e = new Date(1e3 * e), (w(), B)[r >>> 2 >>> 0] = e.getSeconds(), (w(), B)[r + 4 >>> 2 >>> 0] = e.getMinutes(), (w(), B)[r + 8 >>> 2 >>> 0] = e.getHours(), (w(), B)[r + 12 >>> 2 >>> 0] = e.getDate(), (w(), B)[r + 16 >>> 2 >>> 0] = e.getMonth(), (w(), B)[r + 20 >>> 2 >>> 0] = e.getFullYear() - 1900, (w(), B)[r + 24 >>> 2 >>> 0] = e.getDay();\n var i = (kn(e.getFullYear()) ? Wn : Gn)[e.getMonth()] + e.getDate() - 1 | 0;\n (w(), B)[r + 28 >>> 2 >>> 0] = i, (w(), B)[r + 36 >>> 2 >>> 0] = -60 * e.getTimezoneOffset(), i = new Date(e.getFullYear(), 6, 1).getTimezoneOffset();\n var s = new Date(e.getFullYear(), 0, 1).getTimezoneOffset();\n e = 0 | (i != s && e.getTimezoneOffset() == Math.min(s, i)), (w(), B)[r + 32 >>> 2 >>> 0] = e;\n }\n function jo(e) {\n e >>>= 0;\n var r = new Date((w(), B)[e + 20 >>> 2 >>> 0] + 1900, (w(), B)[e + 16 >>> 2 >>> 0], (w(), B)[e + 12 >>> 2 >>> 0], (w(), B)[e + 8 >>> 2 >>> 0], (w(), B)[e + 4 >>> 2 >>> 0], (w(), B)[e >>> 2 >>> 0], 0), i = (w(), B)[e + 32 >>> 2 >>> 0], s = r.getTimezoneOffset(), f = new Date(r.getFullYear(), 6, 1).getTimezoneOffset(), p = new Date(r.getFullYear(), 0, 1).getTimezoneOffset(), E = Math.min(p, f);\n return 0 > i ? (w(), B)[e + 32 >>> 2 >>> 0] = +(f != p && E == s) : 0 < i != (E == s) && (f = Math.max(p, f), r.setTime(r.getTime() + 6e4 * ((0 < i ? E : f) - s))), (w(), B)[e + 24 >>> 2 >>> 0] = r.getDay(), i = (kn(r.getFullYear()) ? Wn : Gn)[r.getMonth()] + r.getDate() - 1 | 0, (w(), B)[e + 28 >>> 2 >>> 0] = i, (w(), B)[e >>> 2 >>> 0] = r.getSeconds(), (w(), B)[e + 4 >>> 2 >>> 0] = r.getMinutes(), (w(), B)[e + 8 >>> 2 >>> 0] = r.getHours(), (w(), B)[e + 12 >>> 2 >>> 0] = r.getDate(), (w(), B)[e + 16 >>> 2 >>> 0] = r.getMonth(), (w(), B)[e + 20 >>> 2 >>> 0] = r.getYear(), e = r.getTime(), BigInt(isNaN(e) ? -1 : e / 1e3);\n }\n function $n(e, r, i, s, f, p, E) {\n return o ? L(16, 1, e, r, i, s, f, p, E) : -52;\n }\n function zn(e, r, i, s, f, p) {\n if (o)\n return L(17, 1, e, r, i, s, f, p);\n }\n var Ye = {}, Vo = () => performance.timeOrigin + performance.now();\n function Hn(e, r) {\n if (o)\n return L(18, 1, e, r);\n if (Ye[e] && (clearTimeout(Ye[e].id), delete Ye[e]), !r)\n return 0;\n var i = setTimeout(() => {\n delete Ye[e], Rt(() => or(e, performance.timeOrigin + performance.now()));\n }, r);\n return Ye[e] = { id: i, jc: r }, 0;\n }\n var Ae = (e, r, i) => {\n var s = (w(), ne);\n if (r >>>= 0, 0 < i) {\n var f = r;\n i = r + i - 1;\n for (var p = 0; p < e.length; ++p) {\n var E = e.codePointAt(p);\n if (127 >= E) {\n if (r >= i)\n break;\n s[r++ >>> 0] = E;\n } else if (2047 >= E) {\n if (r + 1 >= i)\n break;\n s[r++ >>> 0] = 192 | E >> 6, s[r++ >>> 0] = 128 | 63 & E;\n } else if (65535 >= E) {\n if (r + 2 >= i)\n break;\n s[r++ >>> 0] = 224 | E >> 12, s[r++ >>> 0] = 128 | E >> 6 & 63, s[r++ >>> 0] = 128 | 63 & E;\n } else {\n if (r + 3 >= i)\n break;\n s[r++ >>> 0] = 240 | E >> 18, s[r++ >>> 0] = 128 | E >> 12 & 63, s[r++ >>> 0] = 128 | E >> 6 & 63, s[r++ >>> 0] = 128 | 63 & E, p++;\n }\n }\n s[r >>> 0] = 0, e = r - f;\n } else\n e = 0;\n return e;\n };\n function Yo(e, r, i, s) {\n e >>>= 0, r >>>= 0, i >>>= 0, s >>>= 0;\n var f = (/* @__PURE__ */ new Date()).getFullYear(), p = new Date(f, 0, 1).getTimezoneOffset();\n f = new Date(f, 6, 1).getTimezoneOffset();\n var E = Math.max(p, f);\n (w(), W)[e >>> 2 >>> 0] = 60 * E, (w(), B)[r >>> 2 >>> 0] = +(p != f), e = (r = (S) => {\n var x = Math.abs(S);\n return `UTC${0 <= S ? "-" : "+"}${String(Math.floor(x / 60)).padStart(2, "0")}${String(x % 60).padStart(2, "0")}`;\n })(p), r = r(f), f < p ? (Ae(e, i, 17), Ae(r, s, 17)) : (Ae(e, s, 17), Ae(r, i, 17));\n }\n var Jo = () => Date.now(), qo = 1;\n function Xo(e, r, i) {\n if (i >>>= 0, !(0 <= e && 3 >= e))\n return 28;\n if (e === 0)\n e = Date.now();\n else {\n if (!qo)\n return 52;\n e = performance.timeOrigin + performance.now();\n }\n return e = Math.round(1e6 * e), (w(), A)[i >>> 3 >>> 0] = BigInt(e), 0;\n }\n var kt = [];\n function Qo(e, r, i) {\n e >>>= 0, r >>>= 0, i >>>= 0, kt.length = 0;\n for (var s; s = (w(), ne)[r++ >>> 0]; ) {\n var f = s != 105;\n i += (f &= s != 112) && i % 8 ? 4 : 0, kt.push(s == 112 ? (w(), W)[i >>> 2 >>> 0] : s == 106 ? (w(), A)[i >>> 3 >>> 0] : s == 105 ? (w(), B)[i >>> 2 >>> 0] : (w(), me)[i >>> 3 >>> 0]), i += f ? 8 : 4;\n }\n return lr[e](...kt);\n }\n var Zo = () => {\n };\n function Ko(e, r) {\n return F(Ct(e >>> 0, r >>> 0));\n }\n var ea = () => {\n throw se += 1, "unwind";\n };\n function ta() {\n return 4294901760;\n }\n var na = () => navigator.hardwareConcurrency, Ie = {}, Wt = (e) => {\n for (var r = 0, i = 0; i < e.length; ++i) {\n var s = e.charCodeAt(i);\n 127 >= s ? r++ : 2047 >= s ? r += 2 : 55296 <= s && 57343 >= s ? (r += 4, ++i) : r += 3;\n }\n return r;\n }, ot = (e) => {\n var r;\n return (r = /\\bwasm-function\\[\\d+\\]:(0x[0-9a-f]+)/.exec(e)) ? +r[1] : (r = /:(\\d+):\\d+(?:\\)|$)/.exec(e)) ? 2147483648 | +r[1] : 0;\n }, jn = (e) => {\n for (var r of e)\n (e = ot(r)) && (Ie[e] = r);\n };\n function ra() {\n var e = Error().stack.toString().split(`\n`);\n return e[0] == "Error" && e.shift(), jn(e), Ie.Vb = ot(e[3]), Ie.$b = e, Ie.Vb;\n }\n function at(e) {\n if (!(e = Ie[e >>> 0]))\n return 0;\n var r;\n if (r = /^\\s+at .*\\.wasm\\.(.*) \\(.*\\)$/.exec(e))\n e = r[1];\n else if (r = /^\\s+at (.*) \\(.*\\)$/.exec(e))\n e = r[1];\n else {\n if (!(r = /^(.+?)@/.exec(e)))\n return 0;\n e = r[1];\n }\n Kn(at.Wb ?? 0), r = Wt(e) + 1;\n var i = er(r);\n return i && Ae(e, i, r), at.Wb = i, at.Wb;\n }\n function oa(e) {\n e >>>= 0;\n var r = (w(), ne).length;\n if (e <= r || 4294901760 < e)\n return false;\n for (var i = 1; 4 >= i; i *= 2) {\n var s = r * (1 + 0.2 / i);\n s = Math.min(s, e + 100663296);\n e: {\n s = (Math.min(4294901760, 65536 * Math.ceil(Math.max(e, s) / 65536)) - ge.buffer.byteLength + 65535) / 65536 | 0;\n try {\n ge.grow(s), ee();\n var f = 1;\n break e;\n } catch {\n }\n f = void 0;\n }\n if (f)\n return true;\n }\n return false;\n }\n function aa(e, r, i) {\n if (e >>>= 0, r >>>= 0, Ie.Vb == e)\n var s = Ie.$b;\n else\n (s = Error().stack.toString().split(`\n`))[0] == "Error" && s.shift(), jn(s);\n for (var f = 3; s[f] && ot(s[f]) != e; )\n ++f;\n for (e = 0; e < i && s[e + f]; ++e)\n (w(), B)[r + 4 * e >>> 2 >>> 0] = ot(s[e + f]);\n return e;\n }\n var Gt, $t = {}, Vn = () => {\n if (!Gt) {\n var e, r = { USER: "web_user", LOGNAME: "web_user", PATH: "/", PWD: "/", HOME: "/home/web_user", LANG: (globalThis.navigator?.language ?? "C").replace("-", "_") + ".UTF-8", _: "./this.program" };\n for (e in $t)\n $t[e] === void 0 ? delete r[e] : r[e] = $t[e];\n var i = [];\n for (e in r)\n i.push(`${e}=${r[e]}`);\n Gt = i;\n }\n return Gt;\n };\n function Yn(e, r) {\n if (o)\n return L(19, 1, e, r);\n e >>>= 0, r >>>= 0;\n var i, s = 0, f = 0;\n for (i of Vn()) {\n var p = r + s;\n (w(), W)[e + f >>> 2 >>> 0] = p, s += Ae(i, p, 1 / 0) + 1, f += 4;\n }\n return 0;\n }\n function Jn(e, r) {\n if (o)\n return L(20, 1, e, r);\n e >>>= 0, r >>>= 0;\n var i = Vn();\n for (var s of ((w(), W)[e >>> 2 >>> 0] = i.length, e = 0, i))\n e += Wt(s) + 1;\n return (w(), W)[r >>> 2 >>> 0] = e, 0;\n }\n function qn(e) {\n return o ? L(21, 1, e) : 52;\n }\n function Xn(e, r, i, s) {\n return o ? L(22, 1, e, r, i, s) : 52;\n }\n function Qn(e, r, i, s) {\n return o ? L(23, 1, e, r, i, s) : 70;\n }\n var sa = [null, [], []];\n function Zn(e, r, i, s) {\n if (o)\n return L(24, 1, e, r, i, s);\n r >>>= 0, i >>>= 0, s >>>= 0;\n for (var f = 0, p = 0; p < i; p++) {\n var E = (w(), W)[r >>> 2 >>> 0], S = (w(), W)[r + 4 >>> 2 >>> 0];\n r += 8;\n for (var x = 0; x < S; x++) {\n var R = e, X = (w(), ne)[E + x >>> 0], le = sa[R];\n X === 0 || X === 10 ? ((R === 1 ? O : F)(An(le)), le.length = 0) : le.push(X);\n }\n f += S;\n }\n return (w(), W)[s >>> 2 >>> 0] = f, 0;\n }\n function ia(e) {\n return e >>> 0;\n }\n o || function() {\n for (var e = t.numThreads - 1; e--; )\n yn();\n Ve.push(async () => {\n var r = async function() {\n if (!o)\n return Promise.all(ce.map(bn));\n }();\n Re++, await r, --Re == 0 && te && (r = te, te = null, r());\n });\n }(), o || (ge = new WebAssembly.Memory({ initial: 256, maximum: 65536, shared: true }), ee()), t.wasmBinary && (g = t.wasmBinary), t.stackSave = () => U(), t.stackRestore = (e) => P(e), t.stackAlloc = (e) => jt(e), t.setValue = function(e, r, i = "i8") {\n switch (i.endsWith("*") && (i = "*"), i) {\n case "i1":\n case "i8":\n (w(), j)[e >>> 0] = r;\n break;\n case "i16":\n (w(), pe)[e >>> 1 >>> 0] = r;\n break;\n case "i32":\n (w(), B)[e >>> 2 >>> 0] = r;\n break;\n case "i64":\n (w(), A)[e >>> 3 >>> 0] = BigInt(r);\n break;\n case "float":\n (w(), re)[e >>> 2 >>> 0] = r;\n break;\n case "double":\n (w(), me)[e >>> 3 >>> 0] = r;\n break;\n case "*":\n (w(), W)[e >>> 2 >>> 0] = r;\n break;\n default:\n H(`invalid type for setValue: ${i}`);\n }\n }, t.getValue = function(e, r = "i8") {\n switch (r.endsWith("*") && (r = "*"), r) {\n case "i1":\n case "i8":\n return (w(), j)[e >>> 0];\n case "i16":\n return (w(), pe)[e >>> 1 >>> 0];\n case "i32":\n return (w(), B)[e >>> 2 >>> 0];\n case "i64":\n return (w(), A)[e >>> 3 >>> 0];\n case "float":\n return (w(), re)[e >>> 2 >>> 0];\n case "double":\n return (w(), me)[e >>> 3 >>> 0];\n case "*":\n return (w(), W)[e >>> 2 >>> 0];\n default:\n H(`invalid type for getValue: ${r}`);\n }\n }, t.UTF8ToString = Ct, t.stringToUTF8 = Ae, t.lengthBytesUTF8 = Wt;\n var st, Kn, er, zt, tr, nr, rr, Ht, or, ar, M, Je, sr, P, jt, U, ir, Vt, ur, fr, cr, Ee, ua = [V, fe, Sn, In, Bn, Ln, _n, Pn, Dn, Un, xn, Mn, Cn, Rn, Fn, Nn, $n, zn, Hn, Yn, Jn, qn, Xn, Qn, Zn], lr = { 930988: (e, r, i, s, f) => {\n if (t === void 0 || !t.Rb)\n return 1;\n if ((e = Ct(Number(e >>> 0))).startsWith("./") && (e = e.substring(2)), !(e = t.Rb.get(e)))\n return 2;\n if (r = Number(r >>> 0), i = Number(i >>> 0), s = Number(s >>> 0), r + i > e.byteLength)\n return 3;\n try {\n let p = e.subarray(r, r + i);\n switch (f) {\n case 0:\n (w(), ne).set(p, s >>> 0);\n break;\n case 1:\n t.fc ? t.fc(s, p) : t.ic(s, p);\n break;\n default:\n return 4;\n }\n return 0;\n } catch {\n return 4;\n }\n }, 931812: () => typeof wasmOffsetConverter < "u" };\n function fa() {\n return typeof wasmOffsetConverter < "u";\n }\n function ca(e, r, i, s) {\n var f = U();\n try {\n return C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function la(e, r, i) {\n var s = U();\n try {\n return C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n M(1, 0);\n }\n }\n function da(e) {\n var r = U();\n try {\n C(e)();\n } catch (i) {\n if (P(r), i !== i + 0)\n throw i;\n M(1, 0);\n }\n }\n function pa(e, r) {\n var i = U();\n try {\n return C(e)(r);\n } catch (s) {\n if (P(i), s !== s + 0)\n throw s;\n M(1, 0);\n }\n }\n function ma(e, r, i) {\n var s = U();\n try {\n C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n M(1, 0);\n }\n }\n function ha(e, r) {\n var i = U();\n try {\n C(e)(r);\n } catch (s) {\n if (P(i), s !== s + 0)\n throw s;\n M(1, 0);\n }\n }\n function wa(e, r, i, s, f, p, E) {\n var S = U();\n try {\n return C(e)(r, i, s, f, p, E);\n } catch (x) {\n if (P(S), x !== x + 0)\n throw x;\n M(1, 0);\n }\n }\n function ba(e, r, i, s, f, p) {\n var E = U();\n try {\n C(e)(r, i, s, f, p);\n } catch (S) {\n if (P(E), S !== S + 0)\n throw S;\n M(1, 0);\n }\n }\n function ya(e, r, i, s) {\n var f = U();\n try {\n C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function ga(e, r, i, s, f) {\n var p = U();\n try {\n C(e)(r, i, s, f);\n } catch (E) {\n if (P(p), E !== E + 0)\n throw E;\n M(1, 0);\n }\n }\n function Ea(e, r, i, s, f, p, E) {\n var S = U();\n try {\n C(e)(r, i, s, f, p, E);\n } catch (x) {\n if (P(S), x !== x + 0)\n throw x;\n M(1, 0);\n }\n }\n function Ta(e, r, i, s, f, p, E) {\n var S = U();\n try {\n C(e)(r, i, s, f, p, E);\n } catch (x) {\n if (P(S), x !== x + 0)\n throw x;\n M(1, 0);\n }\n }\n function Sa(e, r, i, s, f, p, E, S) {\n var x = U();\n try {\n C(e)(r, i, s, f, p, E, S);\n } catch (R) {\n if (P(x), R !== R + 0)\n throw R;\n M(1, 0);\n }\n }\n function va(e, r, i, s, f) {\n var p = U();\n try {\n return C(e)(r, i, s, f);\n } catch (E) {\n if (P(p), E !== E + 0)\n throw E;\n M(1, 0);\n }\n }\n function Oa(e, r, i) {\n var s = U();\n try {\n return C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n M(1, 0);\n }\n }\n function Aa(e, r, i, s, f, p, E, S) {\n var x = U();\n try {\n C(e)(r, i, s, f, p, E, S);\n } catch (R) {\n if (P(x), R !== R + 0)\n throw R;\n M(1, 0);\n }\n }\n function Ia(e, r, i, s, f, p, E, S, x, R, X, le) {\n var we = U();\n try {\n C(e)(r, i, s, f, p, E, S, x, R, X, le);\n } catch (be) {\n if (P(we), be !== be + 0)\n throw be;\n M(1, 0);\n }\n }\n function Ba(e, r, i, s, f, p) {\n var E = U();\n try {\n return C(e)(r, i, s, f, p);\n } catch (S) {\n if (P(E), S !== S + 0)\n throw S;\n M(1, 0);\n }\n }\n function La(e, r, i) {\n var s = U();\n try {\n return C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n return M(1, 0), 0n;\n }\n }\n function _a(e, r, i, s, f, p, E, S, x) {\n var R = U();\n try {\n C(e)(r, i, s, f, p, E, S, x);\n } catch (X) {\n if (P(R), X !== X + 0)\n throw X;\n M(1, 0);\n }\n }\n function Pa(e) {\n var r = U();\n try {\n return C(e)();\n } catch (i) {\n if (P(r), i !== i + 0)\n throw i;\n M(1, 0);\n }\n }\n function Da(e, r) {\n var i = U();\n try {\n return C(e)(r);\n } catch (s) {\n if (P(i), s !== s + 0)\n throw s;\n return M(1, 0), 0n;\n }\n }\n function Ua(e) {\n var r = U();\n try {\n return C(e)();\n } catch (i) {\n if (P(r), i !== i + 0)\n throw i;\n return M(1, 0), 0n;\n }\n }\n function xa(e, r, i, s) {\n var f = U();\n try {\n return C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function Ma(e, r, i, s, f) {\n var p = U();\n try {\n return C(e)(r, i, s, f);\n } catch (E) {\n if (P(p), E !== E + 0)\n throw E;\n M(1, 0);\n }\n }\n function Ca(e, r, i, s, f, p) {\n var E = U();\n try {\n return C(e)(r, i, s, f, p);\n } catch (S) {\n if (P(E), S !== S + 0)\n throw S;\n M(1, 0);\n }\n }\n function Ra(e, r, i, s, f, p) {\n var E = U();\n try {\n return C(e)(r, i, s, f, p);\n } catch (S) {\n if (P(E), S !== S + 0)\n throw S;\n M(1, 0);\n }\n }\n function Fa(e, r, i, s, f, p, E, S) {\n var x = U();\n try {\n return C(e)(r, i, s, f, p, E, S);\n } catch (R) {\n if (P(x), R !== R + 0)\n throw R;\n M(1, 0);\n }\n }\n function Na(e, r, i, s, f) {\n var p = U();\n try {\n return C(e)(r, i, s, f);\n } catch (E) {\n if (P(p), E !== E + 0)\n throw E;\n return M(1, 0), 0n;\n }\n }\n function ka(e, r, i, s) {\n var f = U();\n try {\n return C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function Wa(e, r, i, s) {\n var f = U();\n try {\n return C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function Ga(e, r, i, s, f, p, E, S, x, R, X, le) {\n var we = U();\n try {\n return C(e)(r, i, s, f, p, E, S, x, R, X, le);\n } catch (be) {\n if (P(we), be !== be + 0)\n throw be;\n M(1, 0);\n }\n }\n function $a(e, r, i, s, f, p, E, S, x, R, X) {\n var le = U();\n try {\n C(e)(r, i, s, f, p, E, S, x, R, X);\n } catch (we) {\n if (P(le), we !== we + 0)\n throw we;\n M(1, 0);\n }\n }\n function za(e, r, i, s, f, p, E, S, x, R, X, le, we, be, Ya, Ja) {\n var qa = U();\n try {\n C(e)(r, i, s, f, p, E, S, x, R, X, le, we, be, Ya, Ja);\n } catch (Yt) {\n if (P(qa), Yt !== Yt + 0)\n throw Yt;\n M(1, 0);\n }\n }\n function Ha(e, r, i) {\n var s = U();\n try {\n return C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n M(1, 0);\n }\n }\n function ja(e, r, i) {\n var s = U();\n try {\n return C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n M(1, 0);\n }\n }\n function Va(e, r, i, s) {\n var f = U();\n try {\n C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function it() {\n if (0 < Re)\n te = it;\n else if (o)\n T?.(t), he();\n else {\n for (var e = Ve; 0 < e.length; )\n e.shift()(t);\n 0 < Re ? te = it : (t.calledRun = true, _ || (he(), T?.(t)));\n }\n }\n return o || (Ee = await Ut(), it()), t.PTR_SIZE = 4, je ? t : new Promise((e, r) => {\n T = e, I = r;\n });\n }\n var rs;\n var os;\n var Jr = N(() => {\n "use strict";\n rs = Vr, os = globalThis.self?.name?.startsWith("em-pthread");\n os && Vr();\n });\n var Qr;\n var an;\n var as;\n var oe;\n var Zr;\n var on;\n var ss;\n var is;\n var Kr;\n var us;\n var qr;\n var eo;\n var Xr;\n var to;\n var pt = N(() => {\n "use strict";\n dt();\n Qr = typeof location > "u" ? void 0 : location.origin, an = import_meta.url > "file:" && import_meta.url < "file;", as = () => {\n if (true) {\n if (an) {\n let n = URL;\n return new URL(new n("ort.wasm.bundle.min.mjs", import_meta.url).href, Qr).href;\n }\n return import_meta.url;\n }\n }, oe = as(), Zr = () => {\n if (oe && !oe.startsWith("blob:"))\n return oe.substring(0, oe.lastIndexOf("/") + 1);\n }, on = (n, t) => {\n try {\n let a = t ?? oe;\n return (a ? new URL(n, a) : new URL(n)).origin === Qr;\n } catch {\n return false;\n }\n }, ss = (n, t) => {\n let a = t ?? oe;\n try {\n return (a ? new URL(n, a) : new URL(n)).href;\n } catch {\n return;\n }\n }, is = (n, t) => `${t ?? "./"}${n}`, Kr = async (n) => {\n let a = await (await fetch(n, { credentials: "same-origin" })).blob();\n return URL.createObjectURL(a);\n }, us = async (n) => (await import(\n /*webpackIgnore:true*/\n /*@vite-ignore*/\n n\n )).default, qr = (jr(), Xt(Hr)).default, eo = async () => {\n if (!oe)\n throw new Error("Failed to load proxy worker: cannot determine the script source URL.");\n if (on(oe))\n return [void 0, qr()];\n let n = await Kr(oe);\n return [n, qr(n)];\n }, Xr = (Jr(), Xt(Yr)).default, to = async (n, t, a, u) => {\n let o = Xr && !(n || t);\n if (o)\n if (oe)\n o = on(oe) || u && !a;\n else if (u && !a)\n o = true;\n else\n throw new Error("cannot determine the script source URL.");\n if (o)\n return [void 0, Xr];\n {\n let d = "ort-wasm-simd-threaded.mjs", c = n ?? ss(d, t), l = a && c && !on(c, t), m = l ? await Kr(c) : c ?? is(d, t);\n return [l ? m : void 0, await us(m)];\n }\n };\n });\n var sn;\n var un;\n var St;\n var no;\n var fs;\n var cs;\n var ls;\n var mt;\n var $;\n var xe = N(() => {\n "use strict";\n pt();\n un = false, St = false, no = false, fs = () => {\n if (typeof SharedArrayBuffer > "u")\n return false;\n try {\n 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]));\n } catch {\n return false;\n }\n }, cs = () => {\n try {\n 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]));\n } catch {\n return false;\n }\n }, ls = () => {\n try {\n return WebAssembly.validate(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 19, 1, 17, 0, 65, 1, 253, 15, 65, 2, 253, 15, 65, 3, 253, 15, 253, 147, 2, 11]));\n } catch {\n return false;\n }\n }, mt = async (n) => {\n if (un)\n return Promise.resolve();\n if (St)\n throw new Error("multiple calls to \'initializeWebAssembly()\' detected.");\n if (no)\n throw new Error("previous call to \'initializeWebAssembly()\' failed.");\n St = true;\n let t = n.initTimeout, a = n.numThreads;\n if (n.simd !== false) {\n if (n.simd === "relaxed") {\n if (!ls())\n throw new Error("Relaxed WebAssembly SIMD is not supported in the current environment.");\n } else if (!cs())\n throw new Error("WebAssembly SIMD is not supported in the current environment.");\n }\n let u = fs();\n a > 1 && !u && (typeof self < "u" && !self.crossOriginIsolated && console.warn("env.wasm.numThreads is set to " + a + ", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."), console.warn("WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading."), n.numThreads = a = 1);\n let o = n.wasmPaths, d = typeof o == "string" ? o : void 0, c = o?.mjs, l = c?.href ?? c, m = o?.wasm, h = m?.href ?? m, g = n.wasmBinary, [b, y] = await to(l, d, a > 1, !!g || !!h), T = false, I = [];\n if (t > 0 && I.push(new Promise((D) => {\n setTimeout(() => {\n T = true, D();\n }, t);\n })), I.push(new Promise((D, z) => {\n let v = { numThreads: a };\n if (g)\n v.wasmBinary = g, v.locateFile = (O) => O;\n else if (h || d)\n v.locateFile = (O) => h ?? d + O;\n else if (l && l.indexOf("blob:") !== 0)\n v.locateFile = (O) => new URL(O, l).href;\n else if (b) {\n let O = Zr();\n O && (v.locateFile = (F) => O + F);\n }\n y(v).then((O) => {\n St = false, un = true, sn = O, D(), b && URL.revokeObjectURL(b);\n }, (O) => {\n St = false, no = true, z(O);\n });\n })), await Promise.race(I), T)\n throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`);\n }, $ = () => {\n if (un && sn)\n return sn;\n throw new Error("WebAssembly is not initialized yet.");\n };\n });\n var ae;\n var Ze;\n var G;\n var vt = N(() => {\n "use strict";\n xe();\n ae = (n, t) => {\n let a = $(), u = a.lengthBytesUTF8(n) + 1, o = a._malloc(u);\n return a.stringToUTF8(n, o, u), t.push(o), o;\n }, Ze = (n, t, a, u) => {\n if (typeof n == "object" && n !== null) {\n if (a.has(n))\n throw new Error("Circular reference in options");\n a.add(n);\n }\n Object.entries(n).forEach(([o, d]) => {\n let c = t ? t + o : o;\n if (typeof d == "object")\n Ze(d, c + ".", a, u);\n else if (typeof d == "string" || typeof d == "number")\n u(c, d.toString());\n else if (typeof d == "boolean")\n u(c, d ? "1" : "0");\n else\n throw new Error(`Can\'t handle extra config type: ${typeof d}`);\n });\n }, G = (n) => {\n let t = $(), a = t.stackSave();\n try {\n let u = t.PTR_SIZE, o = t.stackAlloc(2 * u);\n t._OrtGetLastError(o, o + u);\n let d = Number(t.getValue(o, u === 4 ? "i32" : "i64")), c = t.getValue(o + u, "*"), l = c ? t.UTF8ToString(c) : "";\n throw new Error(`${n} ERROR_CODE: ${d}, ERROR_MESSAGE: ${l}`);\n } finally {\n t.stackRestore(a);\n }\n };\n });\n var ro;\n var oo = N(() => {\n "use strict";\n xe();\n vt();\n ro = (n) => {\n let t = $(), a = 0, u = [], o = n || {};\n try {\n if (n?.logSeverityLevel === void 0)\n o.logSeverityLevel = 2;\n else if (typeof n.logSeverityLevel != "number" || !Number.isInteger(n.logSeverityLevel) || n.logSeverityLevel < 0 || n.logSeverityLevel > 4)\n throw new Error(`log severity level is not valid: ${n.logSeverityLevel}`);\n if (n?.logVerbosityLevel === void 0)\n o.logVerbosityLevel = 0;\n else if (typeof n.logVerbosityLevel != "number" || !Number.isInteger(n.logVerbosityLevel))\n throw new Error(`log verbosity level is not valid: ${n.logVerbosityLevel}`);\n n?.terminate === void 0 && (o.terminate = false);\n let d = 0;\n return n?.tag !== void 0 && (d = ae(n.tag, u)), a = t._OrtCreateRunOptions(o.logSeverityLevel, o.logVerbosityLevel, !!o.terminate, d), a === 0 && G("Can\'t create run options."), n?.extra !== void 0 && Ze(n.extra, "", /* @__PURE__ */ new WeakSet(), (c, l) => {\n let m = ae(c, u), h = ae(l, u);\n t._OrtAddRunConfigEntry(a, m, h) !== 0 && G(`Can\'t set a run config entry: ${c} - ${l}.`);\n }), [a, u];\n } catch (d) {\n throw a !== 0 && t._OrtReleaseRunOptions(a), u.forEach((c) => t._free(c)), d;\n }\n };\n });\n var ds;\n var ps;\n var ms;\n var ke;\n var hs;\n var ao;\n var so = N(() => {\n "use strict";\n xe();\n vt();\n ds = (n) => {\n switch (n) {\n case "disabled":\n return 0;\n case "basic":\n return 1;\n case "extended":\n return 2;\n case "layout":\n return 3;\n case "all":\n return 99;\n default:\n throw new Error(`unsupported graph optimization level: ${n}`);\n }\n }, ps = (n) => {\n switch (n) {\n case "sequential":\n return 0;\n case "parallel":\n return 1;\n default:\n throw new Error(`unsupported execution mode: ${n}`);\n }\n }, ms = (n) => {\n n.extra || (n.extra = {}), n.extra.session || (n.extra.session = {});\n let t = n.extra.session;\n t.use_ort_model_bytes_directly || (t.use_ort_model_bytes_directly = "1"), n.executionProviders && n.executionProviders.some((a) => (typeof a == "string" ? a : a.name) === "webgpu") && (n.enableMemPattern = false);\n }, ke = (n, t, a, u) => {\n let o = ae(t, u), d = ae(a, u);\n $()._OrtAddSessionConfigEntry(n, o, d) !== 0 && G(`Can\'t set a session config entry: ${t} - ${a}.`);\n }, hs = async (n, t, a) => {\n let u = t.executionProviders;\n for (let o of u) {\n let d = typeof o == "string" ? o : o.name, c = [];\n switch (d) {\n case "webnn":\n if (d = "WEBNN", ke(n, "session.disable_quant_qdq", "1", a), ke(n, "session.disable_qdq_constant_folding", "1", a), typeof o != "string") {\n let y = o?.deviceType;\n y && ke(n, "deviceType", y, a);\n }\n break;\n case "webgpu":\n if (d = "JS", typeof o != "string") {\n let b = o;\n if (b?.preferredLayout) {\n if (b.preferredLayout !== "NCHW" && b.preferredLayout !== "NHWC")\n throw new Error(`preferredLayout must be either \'NCHW\' or \'NHWC\': ${b.preferredLayout}`);\n ke(n, "preferredLayout", b.preferredLayout, a);\n }\n }\n break;\n case "wasm":\n case "cpu":\n continue;\n default:\n throw new Error(`not supported execution provider: ${d}`);\n }\n let l = ae(d, a), m = c.length, h = 0, g = 0;\n if (m > 0) {\n h = $()._malloc(m * $().PTR_SIZE), a.push(h), g = $()._malloc(m * $().PTR_SIZE), a.push(g);\n for (let b = 0; b < m; b++)\n $().setValue(h + b * $().PTR_SIZE, c[b][0], "*"), $().setValue(g + b * $().PTR_SIZE, c[b][1], "*");\n }\n await $()._OrtAppendExecutionProvider(n, l, h, g, m) !== 0 && G(`Can\'t append execution provider: ${d}.`);\n }\n }, ao = async (n) => {\n let t = $(), a = 0, u = [], o = n || {};\n ms(o);\n try {\n let d = ds(o.graphOptimizationLevel ?? "all"), c = ps(o.executionMode ?? "sequential"), l = typeof o.logId == "string" ? ae(o.logId, u) : 0, m = o.logSeverityLevel ?? 2;\n if (!Number.isInteger(m) || m < 0 || m > 4)\n throw new Error(`log severity level is not valid: ${m}`);\n let h = o.logVerbosityLevel ?? 0;\n if (!Number.isInteger(h) || h < 0 || h > 4)\n throw new Error(`log verbosity level is not valid: ${h}`);\n let g = typeof o.optimizedModelFilePath == "string" ? ae(o.optimizedModelFilePath, u) : 0;\n if (a = t._OrtCreateSessionOptions(d, !!o.enableCpuMemArena, !!o.enableMemPattern, c, !!o.enableProfiling, 0, l, m, h, g), a === 0 && G("Can\'t create session options."), o.executionProviders && await hs(a, o, u), o.enableGraphCapture !== void 0) {\n if (typeof o.enableGraphCapture != "boolean")\n throw new Error(`enableGraphCapture must be a boolean value: ${o.enableGraphCapture}`);\n ke(a, "enableGraphCapture", o.enableGraphCapture.toString(), u);\n }\n if (o.freeDimensionOverrides)\n for (let [b, y] of Object.entries(o.freeDimensionOverrides)) {\n if (typeof b != "string")\n throw new Error(`free dimension override name must be a string: ${b}`);\n if (typeof y != "number" || !Number.isInteger(y) || y < 0)\n throw new Error(`free dimension override value must be a non-negative integer: ${y}`);\n let T = ae(b, u);\n t._OrtAddFreeDimensionOverride(a, T, y) !== 0 && G(`Can\'t set a free dimension override: ${b} - ${y}.`);\n }\n return o.extra !== void 0 && Ze(o.extra, "", /* @__PURE__ */ new WeakSet(), (b, y) => {\n ke(a, b, y, u);\n }), [a, u];\n } catch (d) {\n throw a !== 0 && t._OrtReleaseSessionOptions(a) !== 0 && G("Can\'t release session options."), u.forEach((c) => t._free(c)), d;\n }\n };\n });\n var We;\n var Ot;\n var Ge;\n var io;\n var uo;\n var At;\n var It;\n var fo;\n var fn = N(() => {\n "use strict";\n We = (n) => {\n switch (n) {\n case "int8":\n return 3;\n case "uint8":\n return 2;\n case "bool":\n return 9;\n case "int16":\n return 5;\n case "uint16":\n return 4;\n case "int32":\n return 6;\n case "uint32":\n return 12;\n case "float16":\n return 10;\n case "float32":\n return 1;\n case "float64":\n return 11;\n case "string":\n return 8;\n case "int64":\n return 7;\n case "uint64":\n return 13;\n case "int4":\n return 22;\n case "uint4":\n return 21;\n default:\n throw new Error(`unsupported data type: ${n}`);\n }\n }, Ot = (n) => {\n switch (n) {\n case 3:\n return "int8";\n case 2:\n return "uint8";\n case 9:\n return "bool";\n case 5:\n return "int16";\n case 4:\n return "uint16";\n case 6:\n return "int32";\n case 12:\n return "uint32";\n case 10:\n return "float16";\n case 1:\n return "float32";\n case 11:\n return "float64";\n case 8:\n return "string";\n case 7:\n return "int64";\n case 13:\n return "uint64";\n case 22:\n return "int4";\n case 21:\n return "uint4";\n default:\n throw new Error(`unsupported data type: ${n}`);\n }\n }, Ge = (n, t) => {\n let a = [-1, 4, 1, 1, 2, 2, 4, 8, -1, 1, 2, 8, 4, 8, -1, -1, -1, -1, -1, -1, -1, 0.5, 0.5][n], u = typeof t == "number" ? t : t.reduce((o, d) => o * d, 1);\n return a > 0 ? Math.ceil(u * a) : void 0;\n }, io = (n) => {\n switch (n) {\n case "float16":\n return typeof Float16Array < "u" && Float16Array.from ? Float16Array : Uint16Array;\n case "float32":\n return Float32Array;\n case "uint8":\n return Uint8Array;\n case "int8":\n return Int8Array;\n case "uint16":\n return Uint16Array;\n case "int16":\n return Int16Array;\n case "int32":\n return Int32Array;\n case "bool":\n return Uint8Array;\n case "float64":\n return Float64Array;\n case "uint32":\n return Uint32Array;\n case "int64":\n return BigInt64Array;\n case "uint64":\n return BigUint64Array;\n default:\n throw new Error(`unsupported type: ${n}`);\n }\n }, uo = (n) => {\n switch (n) {\n case "verbose":\n return 0;\n case "info":\n return 1;\n case "warning":\n return 2;\n case "error":\n return 3;\n case "fatal":\n return 4;\n default:\n throw new Error(`unsupported logging level: ${n}`);\n }\n }, At = (n) => n === "float32" || n === "float16" || n === "int32" || n === "int64" || n === "uint32" || n === "uint8" || n === "bool" || n === "uint4" || n === "int4", It = (n) => n === "float32" || n === "float16" || n === "int32" || n === "int64" || n === "uint32" || n === "uint64" || n === "int8" || n === "uint8" || n === "bool" || n === "uint4" || n === "int4", fo = (n) => {\n switch (n) {\n case "none":\n return 0;\n case "cpu":\n return 1;\n case "cpu-pinned":\n return 2;\n case "texture":\n return 3;\n case "gpu-buffer":\n return 4;\n case "ml-tensor":\n return 5;\n default:\n throw new Error(`unsupported data location: ${n}`);\n }\n };\n });\n var Ke;\n var cn = N(() => {\n "use strict";\n dt();\n Ke = async (n) => {\n if (typeof n == "string")\n if (false)\n try {\n let { readFile: t } = qt("node:fs/promises");\n return new Uint8Array(await t(n));\n } catch (t) {\n if (t.code === "ERR_FS_FILE_TOO_LARGE") {\n let { createReadStream: a } = qt("node:fs"), u = a(n), o = [];\n for await (let d of u)\n o.push(d);\n return new Uint8Array(Buffer.concat(o));\n }\n throw t;\n }\n else {\n let t = await fetch(n);\n if (!t.ok)\n throw new Error(`failed to load external data file: ${n}`);\n let a = t.headers.get("Content-Length"), u = a ? parseInt(a, 10) : 0;\n if (u < 1073741824)\n return new Uint8Array(await t.arrayBuffer());\n {\n if (!t.body)\n throw new Error(`failed to load external data file: ${n}, no response body.`);\n let o = t.body.getReader(), d;\n try {\n d = new ArrayBuffer(u);\n } catch (l) {\n if (l instanceof RangeError) {\n let m = Math.ceil(u / 65536);\n d = new WebAssembly.Memory({ initial: m, maximum: m }).buffer;\n } else\n throw l;\n }\n let c = 0;\n for (; ; ) {\n let { done: l, value: m } = await o.read();\n if (l)\n break;\n let h = m.byteLength;\n new Uint8Array(d, c, h).set(m), c += h;\n }\n return new Uint8Array(d, 0, u);\n }\n }\n else\n return n instanceof Blob ? new Uint8Array(await n.arrayBuffer()) : n instanceof Uint8Array ? n : new Uint8Array(n);\n };\n });\n var ws;\n var ht;\n var wt;\n var $e;\n var bs;\n var co;\n var Qe;\n var bt;\n var yt;\n var lo;\n var gt;\n var Et;\n var Tt;\n var rn = N(() => {\n "use strict";\n Te();\n oo();\n so();\n fn();\n xe();\n vt();\n cn();\n ws = (n, t) => {\n $()._OrtInit(n, t) !== 0 && G("Can\'t initialize onnxruntime.");\n }, ht = async (n) => {\n ws(n.wasm.numThreads, uo(n.logLevel));\n }, wt = async (n, t) => {\n $().asyncInit?.();\n let a = n.webgpu.adapter;\n if (t === "webgpu") {\n if (typeof navigator > "u" || !navigator.gpu)\n throw new Error("WebGPU is not supported in current environment");\n if (a) {\n if (typeof a.limits != "object" || typeof a.features != "object" || typeof a.requestDevice != "function")\n throw new Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.");\n } else {\n let u = n.webgpu.powerPreference;\n if (u !== void 0 && u !== "low-power" && u !== "high-performance")\n throw new Error(`Invalid powerPreference setting: "${u}"`);\n let o = n.webgpu.forceFallbackAdapter;\n if (o !== void 0 && typeof o != "boolean")\n throw new Error(`Invalid forceFallbackAdapter setting: "${o}"`);\n if (a = await navigator.gpu.requestAdapter({ powerPreference: u, forceFallbackAdapter: o }), !a)\n throw new Error(\'Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.\');\n }\n }\n if (t === "webnn" && (typeof navigator > "u" || !navigator.ml))\n throw new Error("WebNN is not supported in current environment");\n }, $e = /* @__PURE__ */ new Map(), bs = (n) => {\n let t = $(), a = t.stackSave();\n try {\n let u = t.PTR_SIZE, o = t.stackAlloc(2 * u);\n t._OrtGetInputOutputCount(n, o, o + u) !== 0 && G("Can\'t get session input/output count.");\n let c = u === 4 ? "i32" : "i64";\n return [Number(t.getValue(o, c)), Number(t.getValue(o + u, c))];\n } finally {\n t.stackRestore(a);\n }\n }, co = (n, t) => {\n let a = $(), u = a.stackSave(), o = 0;\n try {\n let d = a.PTR_SIZE, c = a.stackAlloc(2 * d);\n a._OrtGetInputOutputMetadata(n, t, c, c + d) !== 0 && G("Can\'t get session input/output metadata.");\n let m = Number(a.getValue(c, "*"));\n o = Number(a.getValue(c + d, "*"));\n let h = a.HEAP32[o / 4];\n if (h === 0)\n return [m, 0];\n let g = a.HEAPU32[o / 4 + 1], b = [];\n for (let y = 0; y < g; y++) {\n let T = Number(a.getValue(o + 8 + y * d, "*"));\n b.push(T !== 0 ? a.UTF8ToString(T) : Number(a.getValue(o + 8 + (y + g) * d, "*")));\n }\n return [m, h, b];\n } finally {\n a.stackRestore(u), o !== 0 && a._OrtFree(o);\n }\n }, Qe = (n) => {\n let t = $(), a = t._malloc(n.byteLength);\n if (a === 0)\n throw new Error(`Can\'t create a session. failed to allocate a buffer of size ${n.byteLength}.`);\n return t.HEAPU8.set(n, a), [a, n.byteLength];\n }, bt = async (n, t) => {\n let a, u, o = $();\n Array.isArray(n) ? [a, u] = n : n.buffer === o.HEAPU8.buffer ? [a, u] = [n.byteOffset, n.byteLength] : [a, u] = Qe(n);\n let d = 0, c = 0, l = 0, m = [], h = [], g = [];\n try {\n if ([c, m] = await ao(t), t?.externalData && o.mountExternalData) {\n let _ = [];\n for (let k of t.externalData) {\n let w = typeof k == "string" ? k : k.path;\n _.push(Ke(typeof k == "string" ? k : k.data).then((Z) => {\n o.mountExternalData(w, Z);\n }));\n }\n await Promise.all(_);\n }\n for (let _ of t?.executionProviders ?? [])\n if ((typeof _ == "string" ? _ : _.name) === "webnn") {\n if (o.shouldTransferToMLTensor = false, typeof _ != "string") {\n let w = _, Z = w?.context, j = w?.gpuDevice, ne = w?.deviceType, pe = w?.powerPreference;\n Z ? o.currentContext = Z : j ? o.currentContext = await o.webnnCreateMLContext(j) : o.currentContext = await o.webnnCreateMLContext({ deviceType: ne, powerPreference: pe });\n } else\n o.currentContext = await o.webnnCreateMLContext();\n break;\n }\n d = await o._OrtCreateSession(a, u, c), o.webgpuOnCreateSession?.(d), d === 0 && G("Can\'t create a session."), o.jsepOnCreateSession?.(), o.currentContext && (o.webnnRegisterMLContext(d, o.currentContext), o.currentContext = void 0, o.shouldTransferToMLTensor = true);\n let [b, y] = bs(d), T = !!t?.enableGraphCapture, I = [], D = [], z = [], v = [], O = [];\n for (let _ = 0; _ < b; _++) {\n let [k, w, Z] = co(d, _);\n k === 0 && G("Can\'t get an input name."), h.push(k);\n let j = o.UTF8ToString(k);\n I.push(j), z.push(w === 0 ? { name: j, isTensor: false } : { name: j, isTensor: true, type: Ot(w), shape: Z });\n }\n for (let _ = 0; _ < y; _++) {\n let [k, w, Z] = co(d, _ + b);\n k === 0 && G("Can\'t get an output name."), g.push(k);\n let j = o.UTF8ToString(k);\n D.push(j), v.push(w === 0 ? { name: j, isTensor: false } : { name: j, isTensor: true, type: Ot(w), shape: Z });\n }\n return $e.set(d, [d, h, g, null, T, false]), [d, I, D, z, v];\n } catch (b) {\n throw h.forEach((y) => o._OrtFree(y)), g.forEach((y) => o._OrtFree(y)), l !== 0 && o._OrtReleaseBinding(l) !== 0 && G("Can\'t release IO binding."), d !== 0 && o._OrtReleaseSession(d) !== 0 && G("Can\'t release session."), b;\n } finally {\n o._free(a), c !== 0 && o._OrtReleaseSessionOptions(c) !== 0 && G("Can\'t release session options."), m.forEach((b) => o._free(b)), o.unmountExternalData?.();\n }\n }, yt = (n) => {\n let t = $(), a = $e.get(n);\n if (!a)\n throw new Error(`cannot release session. invalid session id: ${n}`);\n let [u, o, d, c, l] = a;\n c && (l && t._OrtClearBoundOutputs(c.handle) !== 0 && G("Can\'t clear bound outputs."), t._OrtReleaseBinding(c.handle) !== 0 && G("Can\'t release IO binding.")), t.jsepOnReleaseSession?.(n), t.webnnOnReleaseSession?.(n), t.webgpuOnReleaseSession?.(n), o.forEach((m) => t._OrtFree(m)), d.forEach((m) => t._OrtFree(m)), t._OrtReleaseSession(u) !== 0 && G("Can\'t release session."), $e.delete(n);\n }, lo = async (n, t, a, u, o, d, c = false) => {\n if (!n) {\n t.push(0);\n return;\n }\n let l = $(), m = l.PTR_SIZE, h = n[0], g = n[1], b = n[3], y = b, T, I;\n if (h === "string" && (b === "gpu-buffer" || b === "ml-tensor"))\n throw new Error("String tensor is not supported on GPU.");\n if (c && b !== "gpu-buffer")\n throw new Error(`External buffer must be provided for input/output index ${d} when enableGraphCapture is true.`);\n if (b === "gpu-buffer") {\n let v = n[2].gpuBuffer;\n I = Ge(We(h), g);\n {\n let O = l.jsepRegisterBuffer;\n if (!O)\n throw new Error(\'Tensor location "gpu-buffer" is not supported without using WebGPU.\');\n T = O(u, d, v, I);\n }\n } else if (b === "ml-tensor") {\n let v = n[2].mlTensor;\n I = Ge(We(h), g);\n let O = l.webnnRegisterMLTensor;\n if (!O)\n throw new Error(\'Tensor location "ml-tensor" is not supported without using WebNN.\');\n T = O(u, v, We(h), g);\n } else {\n let v = n[2];\n if (Array.isArray(v)) {\n I = m * v.length, T = l._malloc(I), a.push(T);\n for (let O = 0; O < v.length; O++) {\n if (typeof v[O] != "string")\n throw new TypeError(`tensor data at index ${O} is not a string`);\n l.setValue(T + O * m, ae(v[O], a), "*");\n }\n } else {\n let O = l.webnnIsGraphInput, F = l.webnnIsGraphOutput;\n if (h !== "string" && O && F) {\n let _ = l.UTF8ToString(o);\n if (O(u, _) || F(u, _)) {\n let k = We(h);\n I = Ge(k, g), y = "ml-tensor";\n let w = l.webnnCreateTemporaryTensor, Z = l.webnnUploadTensor;\n if (!w || !Z)\n throw new Error(\'Tensor location "ml-tensor" is not supported without using WebNN.\');\n let j = await w(u, k, g);\n Z(j, new Uint8Array(v.buffer, v.byteOffset, v.byteLength)), T = j;\n } else\n I = v.byteLength, T = l._malloc(I), a.push(T), l.HEAPU8.set(new Uint8Array(v.buffer, v.byteOffset, I), T);\n } else\n I = v.byteLength, T = l._malloc(I), a.push(T), l.HEAPU8.set(new Uint8Array(v.buffer, v.byteOffset, I), T);\n }\n }\n let D = l.stackSave(), z = l.stackAlloc(4 * g.length);\n try {\n g.forEach((O, F) => l.setValue(z + F * m, O, m === 4 ? "i32" : "i64"));\n let v = l._OrtCreateTensor(We(h), T, I, z, g.length, fo(y));\n v === 0 && G(`Can\'t create tensor for input/output. session=${u}, index=${d}.`), t.push(v);\n } finally {\n l.stackRestore(D);\n }\n }, gt = async (n, t, a, u, o, d) => {\n let c = $(), l = c.PTR_SIZE, m = $e.get(n);\n if (!m)\n throw new Error(`cannot run inference. invalid session id: ${n}`);\n let h = m[0], g = m[1], b = m[2], y = m[3], T = m[4], I = m[5], D = t.length, z = u.length, v = 0, O = [], F = [], _ = [], k = [], w = [], Z = c.stackSave(), j = c.stackAlloc(D * l), ne = c.stackAlloc(D * l), pe = c.stackAlloc(z * l), B = c.stackAlloc(z * l);\n try {\n [v, O] = ro(d), De("wasm prepareInputOutputTensor");\n for (let A = 0; A < D; A++)\n await lo(a[A], F, k, n, g[t[A]], t[A], T);\n for (let A = 0; A < z; A++)\n await lo(o[A], _, k, n, b[u[A]], D + u[A], T);\n Ue("wasm prepareInputOutputTensor");\n for (let A = 0; A < D; A++)\n c.setValue(j + A * l, F[A], "*"), c.setValue(ne + A * l, g[t[A]], "*");\n for (let A = 0; A < z; A++)\n c.setValue(pe + A * l, _[A], "*"), c.setValue(B + A * l, b[u[A]], "*");\n c.jsepOnRunStart?.(h), c.webnnOnRunStart?.(h);\n let W;\n W = await c._OrtRun(h, ne, j, D, B, z, pe, v), W !== 0 && G("failed to call OrtRun().");\n let re = [], me = [];\n De("wasm ProcessOutputTensor");\n for (let A = 0; A < z; A++) {\n let K = Number(c.getValue(pe + A * l, "*"));\n if (K === _[A] || w.includes(_[A])) {\n re.push(o[A]), K !== _[A] && c._OrtReleaseTensor(K) !== 0 && G("Can\'t release tensor.");\n continue;\n }\n let je = c.stackSave(), ee = c.stackAlloc(4 * l), he = false, H, q = 0;\n try {\n c._OrtGetTensorData(K, ee, ee + l, ee + 2 * l, ee + 3 * l) !== 0 && G(`Can\'t access output tensor data on index ${A}.`);\n let Se = l === 4 ? "i32" : "i64", ve = Number(c.getValue(ee, Se));\n q = c.getValue(ee + l, "*");\n let Ve = c.getValue(ee + l * 2, "*"), Re = Number(c.getValue(ee + l * 3, Se)), te = [];\n for (let L = 0; L < Re; L++)\n te.push(Number(c.getValue(Ve + L * l, Se)));\n c._OrtFree(Ve) !== 0 && G("Can\'t free memory for tensor dims.");\n let ue = te.reduce((L, V) => L * V, 1);\n H = Ot(ve);\n let se = y?.outputPreferredLocations[u[A]];\n if (H === "string") {\n if (se === "gpu-buffer" || se === "ml-tensor")\n throw new Error("String tensor is not supported on GPU.");\n let L = [];\n for (let V = 0; V < ue; V++) {\n let fe = c.getValue(q + V * l, "*"), ye = c.getValue(q + (V + 1) * l, "*"), ce = V === ue - 1 ? void 0 : ye - fe;\n L.push(c.UTF8ToString(fe, ce));\n }\n re.push([H, te, L, "cpu"]);\n } else if (se === "gpu-buffer" && ue > 0) {\n let L = c.jsepGetBuffer;\n if (!L)\n throw new Error(\'preferredLocation "gpu-buffer" is not supported without using WebGPU.\');\n let V = L(q), fe = Ge(ve, ue);\n if (fe === void 0 || !At(H))\n throw new Error(`Unsupported data type: ${H}`);\n he = true, re.push([H, te, { gpuBuffer: V, download: c.jsepCreateDownloader(V, fe, H), dispose: () => {\n c._OrtReleaseTensor(K) !== 0 && G("Can\'t release tensor.");\n } }, "gpu-buffer"]);\n } else if (se === "ml-tensor" && ue > 0) {\n let L = c.webnnEnsureTensor, V = c.webnnIsGraphInputOutputTypeSupported;\n if (!L || !V)\n throw new Error(\'preferredLocation "ml-tensor" is not supported without using WebNN.\');\n if (Ge(ve, ue) === void 0 || !It(H))\n throw new Error(`Unsupported data type: ${H}`);\n if (!V(n, H, false))\n throw new Error(`preferredLocation "ml-tensor" for ${H} output is not supported by current WebNN Context.`);\n let ye = await L(n, q, ve, te, false);\n he = true, re.push([H, te, { mlTensor: ye, download: c.webnnCreateMLTensorDownloader(q, H), dispose: () => {\n c.webnnReleaseTensorId(q), c._OrtReleaseTensor(K);\n } }, "ml-tensor"]);\n } else if (se === "ml-tensor-cpu-output" && ue > 0) {\n let L = c.webnnCreateMLTensorDownloader(q, H)(), V = re.length;\n he = true, me.push((async () => {\n let fe = [V, await L];\n return c.webnnReleaseTensorId(q), c._OrtReleaseTensor(K), fe;\n })()), re.push([H, te, [], "cpu"]);\n } else {\n let L = io(H), V = new L(ue);\n new Uint8Array(V.buffer, V.byteOffset, V.byteLength).set(c.HEAPU8.subarray(q, q + V.byteLength)), re.push([H, te, V, "cpu"]);\n }\n } finally {\n c.stackRestore(je), H === "string" && q && c._free(q), he || c._OrtReleaseTensor(K);\n }\n }\n y && !T && (c._OrtClearBoundOutputs(y.handle) !== 0 && G("Can\'t clear bound outputs."), $e.set(n, [h, g, b, y, T, false]));\n for (let [A, K] of await Promise.all(me))\n re[A][2] = K;\n return Ue("wasm ProcessOutputTensor"), re;\n } finally {\n c.webnnOnRunEnd?.(h), c.stackRestore(Z), F.forEach((W) => c._OrtReleaseTensor(W)), _.forEach((W) => c._OrtReleaseTensor(W)), k.forEach((W) => c._free(W)), v !== 0 && c._OrtReleaseRunOptions(v), O.forEach((W) => c._free(W));\n }\n }, Et = (n) => {\n let t = $(), a = $e.get(n);\n if (!a)\n throw new Error("invalid session id");\n let u = a[0], o = t._OrtEndProfiling(u);\n o === 0 && G("Can\'t get an profile file name."), t._OrtFree(o);\n }, Tt = (n) => {\n let t = [];\n for (let a of n) {\n let u = a[2];\n !Array.isArray(u) && "buffer" in u && t.push(u.buffer);\n }\n return t;\n };\n });\n var Ce;\n var ie;\n var et;\n var Lt;\n var _t;\n var Bt;\n var ln;\n var dn;\n var ze;\n var He;\n var gs;\n var po;\n var mo;\n var ho;\n var wo;\n var bo;\n var yo;\n var go;\n var pn = N(() => {\n "use strict";\n Te();\n rn();\n xe();\n pt();\n Ce = () => !!Y.wasm.proxy && typeof document < "u", et = false, Lt = false, _t = false, dn = /* @__PURE__ */ new Map(), ze = (n, t) => {\n let a = dn.get(n);\n a ? a.push(t) : dn.set(n, [t]);\n }, He = () => {\n if (et || !Lt || _t || !ie)\n throw new Error("worker not ready");\n }, gs = (n) => {\n switch (n.data.type) {\n case "init-wasm":\n et = false, n.data.err ? (_t = true, ln[1](n.data.err)) : (Lt = true, ln[0]()), Bt && (URL.revokeObjectURL(Bt), Bt = void 0);\n break;\n case "init-ep":\n case "copy-from":\n case "create":\n case "release":\n case "run":\n case "end-profiling": {\n let t = dn.get(n.data.type);\n n.data.err ? t.shift()[1](n.data.err) : t.shift()[0](n.data.out);\n break;\n }\n default:\n }\n }, po = async () => {\n if (!Lt) {\n if (et)\n throw new Error("multiple calls to \'initWasm()\' detected.");\n if (_t)\n throw new Error("previous call to \'initWasm()\' failed.");\n if (et = true, Ce())\n return new Promise((n, t) => {\n ie?.terminate(), eo().then(([a, u]) => {\n try {\n ie = u, ie.onerror = (d) => t(d), ie.onmessage = gs, ln = [n, t];\n let o = { type: "init-wasm", in: Y };\n !o.in.wasm.wasmPaths && (a || an) && (o.in.wasm.wasmPaths = { wasm: new URL("ort-wasm-simd-threaded.wasm", import_meta.url).href }), ie.postMessage(o), Bt = a;\n } catch (o) {\n t(o);\n }\n }, t);\n });\n try {\n await mt(Y.wasm), await ht(Y), Lt = true;\n } catch (n) {\n throw _t = true, n;\n } finally {\n et = false;\n }\n }\n }, mo = async (n) => {\n if (Ce())\n return He(), new Promise((t, a) => {\n ze("init-ep", [t, a]);\n let u = { type: "init-ep", in: { epName: n, env: Y } };\n ie.postMessage(u);\n });\n await wt(Y, n);\n }, ho = async (n) => Ce() ? (He(), new Promise((t, a) => {\n ze("copy-from", [t, a]);\n let u = { type: "copy-from", in: { buffer: n } };\n ie.postMessage(u, [n.buffer]);\n })) : Qe(n), wo = async (n, t) => {\n if (Ce()) {\n if (t?.preferredOutputLocation)\n throw new Error(\'session option "preferredOutputLocation" is not supported for proxy.\');\n return He(), new Promise((a, u) => {\n ze("create", [a, u]);\n let o = { type: "create", in: { model: n, options: { ...t } } }, d = [];\n n instanceof Uint8Array && d.push(n.buffer), ie.postMessage(o, d);\n });\n } else\n return bt(n, t);\n }, bo = async (n) => {\n if (Ce())\n return He(), new Promise((t, a) => {\n ze("release", [t, a]);\n let u = { type: "release", in: n };\n ie.postMessage(u);\n });\n yt(n);\n }, yo = async (n, t, a, u, o, d) => {\n if (Ce()) {\n if (a.some((c) => c[3] !== "cpu"))\n throw new Error("input tensor on GPU is not supported for proxy.");\n if (o.some((c) => c))\n throw new Error("pre-allocated output tensor is not supported for proxy.");\n return He(), new Promise((c, l) => {\n ze("run", [c, l]);\n let m = a, h = { type: "run", in: { sessionId: n, inputIndices: t, inputs: m, outputIndices: u, options: d } };\n ie.postMessage(h, Tt(m));\n });\n } else\n return gt(n, t, a, u, o, d);\n }, go = async (n) => {\n if (Ce())\n return He(), new Promise((t, a) => {\n ze("end-profiling", [t, a]);\n let u = { type: "end-profiling", in: n };\n ie.postMessage(u);\n });\n Et(n);\n };\n });\n var Eo;\n var Es;\n var Pt;\n var To = N(() => {\n "use strict";\n Te();\n pn();\n fn();\n dt();\n cn();\n Eo = (n, t) => {\n switch (n.location) {\n case "cpu":\n return [n.type, n.dims, n.data, "cpu"];\n case "gpu-buffer":\n return [n.type, n.dims, { gpuBuffer: n.gpuBuffer }, "gpu-buffer"];\n case "ml-tensor":\n return [n.type, n.dims, { mlTensor: n.mlTensor }, "ml-tensor"];\n default:\n throw new Error(`invalid data location: ${n.location} for ${t()}`);\n }\n }, Es = (n) => {\n switch (n[3]) {\n case "cpu":\n return new de(n[0], n[2], n[1]);\n case "gpu-buffer": {\n let t = n[0];\n if (!At(t))\n throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);\n let { gpuBuffer: a, download: u, dispose: o } = n[2];\n return de.fromGpuBuffer(a, { dataType: t, dims: n[1], download: u, dispose: o });\n }\n case "ml-tensor": {\n let t = n[0];\n if (!It(t))\n throw new Error(`not supported data type: ${t} for deserializing MLTensor tensor`);\n let { mlTensor: a, download: u, dispose: o } = n[2];\n return de.fromMLTensor(a, { dataType: t, dims: n[1], download: u, dispose: o });\n }\n default:\n throw new Error(`invalid data location: ${n[3]}`);\n }\n }, Pt = class {\n async fetchModelAndCopyToWasmMemory(t) {\n return ho(await Ke(t));\n }\n async loadModel(t, a) {\n _e();\n let u;\n typeof t == "string" ? u = await this.fetchModelAndCopyToWasmMemory(t) : u = t, [this.sessionId, this.inputNames, this.outputNames, this.inputMetadata, this.outputMetadata] = await wo(u, a), Pe();\n }\n async dispose() {\n return bo(this.sessionId);\n }\n async run(t, a, u) {\n _e();\n let o = [], d = [];\n Object.entries(t).forEach((y) => {\n let T = y[0], I = y[1], D = this.inputNames.indexOf(T);\n if (D === -1)\n throw new Error(`invalid input \'${T}\'`);\n o.push(I), d.push(D);\n });\n let c = [], l = [];\n Object.entries(a).forEach((y) => {\n let T = y[0], I = y[1], D = this.outputNames.indexOf(T);\n if (D === -1)\n throw new Error(`invalid output \'${T}\'`);\n c.push(I), l.push(D);\n });\n let m = o.map((y, T) => Eo(y, () => `input "${this.inputNames[d[T]]}"`)), h = c.map((y, T) => y ? Eo(y, () => `output "${this.outputNames[l[T]]}"`) : null), g = await yo(this.sessionId, d, m, l, h, u), b = {};\n for (let y = 0; y < g.length; y++)\n b[this.outputNames[l[y]]] = c[y] ?? Es(g[y]);\n return Pe(), b;\n }\n startProfiling() {\n }\n endProfiling() {\n go(this.sessionId);\n }\n };\n });\n var vo = {};\n ut(vo, { OnnxruntimeWebAssemblyBackend: () => Dt, initializeFlags: () => So, wasmBackend: () => Ts });\n var So;\n var Dt;\n var Ts;\n var Oo = N(() => {\n "use strict";\n Te();\n pn();\n To();\n So = () => {\n (typeof Y.wasm.initTimeout != "number" || Y.wasm.initTimeout < 0) && (Y.wasm.initTimeout = 0);\n let n = Y.wasm.simd;\n if (typeof n != "boolean" && n !== void 0 && n !== "fixed" && n !== "relaxed" && (console.warn(`Property "env.wasm.simd" is set to unknown value "${n}". Reset it to \\`false\\` and ignore SIMD feature checking.`), Y.wasm.simd = false), typeof Y.wasm.proxy != "boolean" && (Y.wasm.proxy = false), typeof Y.wasm.trace != "boolean" && (Y.wasm.trace = false), typeof Y.wasm.numThreads != "number" || !Number.isInteger(Y.wasm.numThreads) || Y.wasm.numThreads <= 0)\n if (typeof self < "u" && !self.crossOriginIsolated)\n Y.wasm.numThreads = 1;\n else {\n let t = typeof navigator > "u" ? qt("node:os").cpus().length : navigator.hardwareConcurrency;\n Y.wasm.numThreads = Math.min(4, Math.ceil((t || 1) / 2));\n }\n }, Dt = class {\n async init(t) {\n So(), await po(), await mo(t);\n }\n async createInferenceSessionHandler(t, a) {\n let u = new Pt();\n return await u.loadModel(t, a), u;\n }\n }, Ts = new Dt();\n });\n Te();\n Te();\n Te();\n var Gr = "1.26.0";\n {\n let n = (Oo(), Xt(vo)).wasmBackend;\n qe("cpu", n, 10), qe("wasm", n, 10);\n }\n Object.defineProperty(Y.versions, "web", { value: Gr, enumerable: true });\n\n // src/workers/VadOnnxWorker.ts\n var CHUNK_SIZE = 320;\n var MODEL_EXTERNAL_DATA_PATH = "bcresnet_no_center_mult2_20ms.onnx.data";\n var STATE_INPUT_DIMS_PBTXT = {\n audio_input_state: [800],\n input_states_0: [1, 4, 43],\n input_states_1: [16, 2, 1],\n input_states_2: [16, 2, 1],\n input_states_3: [24, 4, 1],\n input_states_4: [24, 4, 1],\n input_states_5: [32, 8, 1],\n input_states_6: [32, 8, 1],\n input_states_7: [32, 8, 1],\n input_states_8: [32, 8, 1],\n input_states_9: [40, 16, 1],\n input_states_10: [40, 16, 1],\n input_states_11: [40, 16, 1],\n input_states_12: [40, 16, 1],\n input_states_13: [40, 4, 5],\n input_states_14: [64, 30, 1]\n };\n var BATCH_SIZE = 1;\n var STATE_INPUT_DIMS = Object.fromEntries(\n Object.entries(STATE_INPUT_DIMS_PBTXT).map(([name, dims]) => [\n name,\n [BATCH_SIZE, ...dims]\n ])\n );\n var STATE_OUTPUT_TO_INPUT = {\n audio_output_state: "audio_input_state",\n output_states_0: "input_states_0",\n output_states_1: "input_states_1",\n output_states_2: "input_states_2",\n output_states_3: "input_states_3",\n output_states_4: "input_states_4",\n output_states_5: "input_states_5",\n output_states_6: "input_states_6",\n output_states_7: "input_states_7",\n output_states_8: "input_states_8",\n output_states_9: "input_states_9",\n output_states_10: "input_states_10",\n output_states_11: "input_states_11",\n output_states_12: "input_states_12",\n output_states_13: "input_states_13",\n output_states_14: "input_states_14"\n };\n var VadOnnxWorker_default = (modelUrl, modelDataUrl, ortWasmUrl, ortMjsUrl) => {\n let session = null;\n let state = null;\n let buffer = new Float32Array(0);\n let draining = false;\n let feeds = {};\n let stateKeys = [];\n function postError(error) {\n self.postMessage({\n type: "error" /* ERROR */,\n error: error instanceof Error ? error.message : String(error)\n });\n }\n async function init() {\n Y.wasm.wasmPaths = { wasm: ortWasmUrl, mjs: ortMjsUrl };\n Y.wasm.numThreads = 1;\n const [modelRes, dataRes] = await Promise.all([\n fetch(modelUrl),\n fetch(modelDataUrl)\n ]);\n if (!modelRes.ok) {\n throw new Error(`Model fetch failed: ${modelRes.status} ${modelRes.statusText}`);\n }\n if (!dataRes.ok) {\n throw new Error(`Model data fetch failed: ${dataRes.status} ${dataRes.statusText}`);\n }\n const [modelBytes, dataBytes] = await Promise.all([\n modelRes.arrayBuffer(),\n dataRes.arrayBuffer()\n ]);\n session = await ts.create(new Uint8Array(modelBytes), {\n executionProviders: ["wasm"],\n externalData: [\n {\n path: MODEL_EXTERNAL_DATA_PATH,\n data: new Uint8Array(dataBytes)\n }\n ]\n });\n state = createZeroStateTensors(session, de);\n stateKeys = Object.keys(state);\n feeds = { audio: void 0 };\n for (const name of stateKeys) {\n feeds[name] = state[name];\n }\n }\n function appendBuffer(chunk) {\n const next = new Float32Array(buffer.length + chunk.length);\n next.set(buffer, 0);\n next.set(chunk, buffer.length);\n buffer = next;\n }\n async function drainBuffer() {\n if (draining) {\n return;\n }\n draining = true;\n try {\n while (buffer.length >= CHUNK_SIZE) {\n if (!session || !state) {\n break;\n }\n const chunk = buffer.subarray(0, CHUNK_SIZE);\n buffer = buffer.subarray(CHUNK_SIZE);\n feeds.audio = new de("float32", chunk, [1, CHUNK_SIZE]);\n for (const name of stateKeys) {\n feeds[name] = state[name];\n }\n const results = await session.run(feeds);\n updateStateFromOutputs(state, results);\n const probs = results.voice_probs?.data;\n if (!probs || probs.length < 2) {\n continue;\n }\n const speechProb = Math.max(probs[0], probs[1]);\n const silenceProb = 1 - speechProb;\n self.postMessage({\n type: "data" /* DATA */,\n data: { speechProb, silenceProb }\n });\n }\n } catch (err) {\n postError(err);\n } finally {\n draining = false;\n }\n }\n function onAudio(data) {\n appendBuffer(new Float32Array(data));\n void drainBuffer();\n }\n init().then(() => {\n self.onmessage = (event) => {\n onAudio(event.data.data);\n };\n self.postMessage({ type: "init" /* INIT */ });\n }).catch(postError);\n };\n function updateStateFromOutputs(state, outputs) {\n for (const [outName, inName] of Object.entries(STATE_OUTPUT_TO_INPUT)) {\n const next = outputs[outName];\n if (next) {\n state[inName] = next;\n }\n }\n }\n function createZeroStateTensors(session, TensorCtor) {\n const state = {};\n for (const name of session.inputNames) {\n if (name === "audio") {\n continue;\n }\n const dims = STATE_INPUT_DIMS[name];\n if (!dims) {\n continue;\n }\n const size = dims.reduce((a, b) => a * b, 1);\n state[name] = new TensorCtor("float32", new Float32Array(size), dims);\n }\n return state;\n }\n return __toCommonJS(VadOnnxWorker_exports);\n})();\n/*! Bundled license information:\n\nonnxruntime-web/dist/ort.wasm.bundle.min.mjs:\n (*!\n * ONNX Runtime Web v1.26.0\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n *)\n*/\n',
4943
- workerArgs: isTflite ? [import_audio_processing2.default, import_audio_processing2.default.getUrl] : [
4944
- JSON.stringify(this._modelUrl),
4945
- JSON.stringify(this._modelDataUrl),
4946
- JSON.stringify(this._ortWasmUrl),
4947
- JSON.stringify(this._ortMjsUrl)
4948
- ]
4949
- });
4991
+ const model = this.model;
4992
+ this._stopModelLoadTimeout();
4993
+ this._modelLoadTimeout = window.setTimeout(() => {
4994
+ this._modelLoadTimeout = null;
4995
+ this.onModelError(model, "timeout");
4996
+ }, MODEL_LOAD_TIMEOUT_MS);
4997
+ try {
4998
+ await super.init({
4999
+ sampleRate: VAD_SAMPLE_RATE,
5000
+ workletFunction: pureWorkletFunction,
5001
+ workletName: "pureWorklet",
5002
+ workerFunctionString: isTflite ? '"use strict";\nvar exports = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // src/workers/VadTfliteWorker.ts\n var VadTfliteWorker_exports = {};\n __export(VadTfliteWorker_exports, {\n default: () => VadTfliteWorker_default\n });\n\n // src/utils/Utils.ts\n function getFileName(url) {\n return url.split(/[?#]/)[0].split("/").pop() || url;\n }\n\n // src/utils/ModelLoader.ts\n var MODELS_FOLDER = "/";\n var MODELS_URL_PATH = "models/";\n async function downloadModelFile(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`model ${getFileName(url)} loading failed with status ${response.status}`);\n }\n return new Uint8Array(await response.arrayBuffer());\n }\n async function loadModelFile(module, urlResolver, fileName) {\n const startedAt = performance.now();\n const data = await downloadModelFile(urlResolver(MODELS_URL_PATH + fileName));\n const duration = performance.now() - startedAt;\n module.FS_createDataFile(MODELS_FOLDER, fileName, data, true, false, true);\n return duration;\n }\n function unloadModelFile(module, fileName) {\n module.FS_unlink(MODELS_FOLDER + fileName);\n }\n function postModelReady(model, duration) {\n self.postMessage({\n type: "model_ready" /* MODEL_READY */,\n model,\n duration\n });\n }\n\n // src/utils/WasmMemoryReport.ts\n var REPORT_INTERVAL_MS = 6e4;\n function startWasmMemoryReport(module) {\n const report = () => {\n const bytes = module.HEAPU8?.buffer.byteLength ?? 0;\n self.postMessage({\n type: "debug" /* DEBUG */,\n message: `${self.name || "worker"} wasm memory: ${(bytes / 1048576).toFixed(1)} MiB`\n });\n };\n report();\n setInterval(report, REPORT_INTERVAL_MS);\n }\n\n // src/workers/VadTfliteWorker.ts\n var INPUT_SAMPLES = 320;\n var VadTfliteWorker_default = (createWav2lipModule, urlResolver, modelFile) => {\n let Wav2lip = null;\n let classifier = null;\n let buffer = new Float32Array(0);\n function init() {\n return createWav2lipModule({ locateFile: urlResolver }).then(async (module) => {\n Wav2lip = module;\n startWasmMemoryReport(module);\n const duration = await loadModelFile(module, urlResolver, modelFile);\n try {\n const configInput = new Wav2lip.ConfigInput("vad.cfg", true, "/");\n const config = new Wav2lip.Config(configInput);\n classifier = Wav2lip.AudioClassifierFactory.createAlgorithm(config);\n } finally {\n unloadModelFile(module, modelFile);\n }\n postModelReady(modelFile, duration);\n });\n }\n function postError(error) {\n self.postMessage({\n type: "error" /* ERROR */,\n error: typeof error === "number" && Wav2lip ? Wav2lip.getExMessage(error) : error,\n model: modelFile\n });\n }\n function appendBuffer(chunk) {\n const next = new Float32Array(buffer.length + chunk.length);\n next.set(buffer, 0);\n next.set(chunk, buffer.length);\n buffer = next;\n }\n function processAudio(data) {\n if (!classifier || !Wav2lip) {\n return;\n }\n try {\n appendBuffer(new Float32Array(data));\n while (buffer.length >= INPUT_SAMPLES) {\n const chunk = buffer.subarray(0, INPUT_SAMPLES);\n buffer = buffer.subarray(INPUT_SAMPLES);\n const inputVec = new Wav2lip.vector$float$();\n let probs;\n try {\n for (let i = 0; i < INPUT_SAMPLES; i++) {\n inputVec.push_back(chunk[i]);\n }\n const startedAt = performance.now();\n probs = Wav2lip.vadAccept(classifier, inputVec);\n const inferenceDuration = performance.now() - startedAt;\n const probsSize = probs.size();\n if (probsSize >= 4) {\n const speech0 = probs.get(1);\n const speech1 = probs.get(3);\n const speechProb = Math.max(speech0, speech1);\n self.postMessage({\n type: "data" /* DATA */,\n data: {\n speechProb,\n silenceProb: 1 - speechProb,\n inferenceDuration\n }\n });\n }\n } finally {\n inputVec.delete();\n probs?.delete();\n }\n }\n } catch (error) {\n postError(error);\n }\n }\n init().then(() => {\n self.onmessage = (event) => {\n processAudio(event.data.data);\n };\n self.postMessage({ type: "init" /* INIT */ });\n }).catch(postError);\n };\n return __toCommonJS(VadTfliteWorker_exports);\n})();\n' : '"use strict";\nvar exports = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {\n get: (a, b) => (typeof require !== "undefined" ? require : a)[b]\n }) : x)(function(x) {\n if (typeof require !== "undefined")\n return require.apply(this, arguments);\n throw new Error(\'Dynamic require of "\' + x + \'" is not supported\');\n });\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to2, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to2, key) && key !== except)\n __defProp(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to2;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // src/workers/VadOnnxWorker.ts\n var VadOnnxWorker_exports = {};\n __export(VadOnnxWorker_exports, {\n default: () => VadOnnxWorker_default\n });\n\n // node_modules/onnxruntime-web/dist/ort.wasm.bundle.min.mjs\n var import_meta = {};\n var Jt = Object.defineProperty;\n var Xa = Object.getOwnPropertyDescriptor;\n var Qa = Object.getOwnPropertyNames;\n var Za = Object.prototype.hasOwnProperty;\n var qt = ((n) => typeof __require < "u" ? __require : typeof Proxy < "u" ? new Proxy(n, { get: (t, a) => (typeof __require < "u" ? __require : t)[a] }) : n)(function(n) {\n if (typeof __require < "u")\n return __require.apply(this, arguments);\n throw Error(\'Dynamic require of "\' + n + \'" is not supported\');\n });\n var N = (n, t) => () => (n && (t = n(n = 0)), t);\n var ut = (n, t) => {\n for (var a in t)\n Jt(n, a, { get: t[a], enumerable: true });\n };\n var Ka = (n, t, a, u) => {\n if (t && typeof t == "object" || typeof t == "function")\n for (let o of Qa(t))\n !Za.call(n, o) && o !== a && Jt(n, o, { get: () => t[o], enumerable: !(u = Xa(t, o)) || u.enumerable });\n return n;\n };\n var Xt = (n) => Ka(Jt({}, "__esModule", { value: true }), n);\n var ft;\n var Be;\n var qe;\n var es;\n var dr;\n var Qt = N(() => {\n "use strict";\n ft = /* @__PURE__ */ new Map(), Be = [], qe = (n, t, a) => {\n if (t && typeof t.init == "function" && typeof t.createInferenceSessionHandler == "function") {\n let u = ft.get(n);\n if (u === void 0)\n ft.set(n, { backend: t, priority: a });\n else {\n if (u.priority > a)\n return;\n if (u.priority === a && u.backend !== t)\n throw new Error(`cannot register backend "${n}" using priority ${a}`);\n }\n if (a >= 0) {\n let o = Be.indexOf(n);\n o !== -1 && Be.splice(o, 1);\n for (let d = 0; d < Be.length; d++)\n if (ft.get(Be[d]).priority <= a) {\n Be.splice(d, 0, n);\n return;\n }\n Be.push(n);\n }\n return;\n }\n throw new TypeError("not a valid backend");\n }, es = async (n) => {\n let t = ft.get(n);\n if (!t)\n return "backend not found.";\n if (t.initialized)\n return t.backend;\n if (t.aborted)\n return t.error;\n {\n let a = !!t.initPromise;\n try {\n return a || (t.initPromise = t.backend.init(n)), await t.initPromise, t.initialized = true, t.backend;\n } catch (u) {\n return a || (t.error = `${u}`, t.aborted = true), t.error;\n } finally {\n delete t.initPromise;\n }\n }\n }, dr = async (n) => {\n let t = n.executionProviders || [], a = t.map((m) => typeof m == "string" ? m : m.name), u = a.length === 0 ? Be : a, o, d = [], c = /* @__PURE__ */ new Set();\n for (let m of u) {\n let h = await es(m);\n typeof h == "string" ? d.push({ name: m, err: h }) : (o || (o = h), o === h && c.add(m));\n }\n if (!o)\n throw new Error(`no available backend found. ERR: ${d.map((m) => `[${m.name}] ${m.err}`).join(", ")}`);\n for (let { name: m, err: h } of d)\n a.includes(m) && console.warn(`removing requested execution provider "${m}" from session options because it is not available: ${h}`);\n let l = t.filter((m) => c.has(typeof m == "string" ? m : m.name));\n return [o, new Proxy(n, { get: (m, h) => h === "executionProviders" ? l : Reflect.get(m, h) })];\n };\n });\n var pr = N(() => {\n "use strict";\n Qt();\n });\n var mr;\n var hr = N(() => {\n "use strict";\n mr = "1.26.0";\n });\n var wr;\n var J;\n var Zt = N(() => {\n "use strict";\n hr();\n wr = "warning", J = { wasm: {}, webgl: {}, webgpu: {}, versions: { common: mr }, set logLevel(n) {\n if (n !== void 0) {\n if (typeof n != "string" || ["verbose", "info", "warning", "error", "fatal"].indexOf(n) === -1)\n throw new Error(`Unsupported logging level: ${n}`);\n wr = n;\n }\n }, get logLevel() {\n return wr;\n } };\n Object.defineProperty(J, "logLevel", { enumerable: true });\n });\n var Y;\n var br = N(() => {\n "use strict";\n Zt();\n Y = J;\n });\n var yr;\n var gr;\n var Er = N(() => {\n "use strict";\n yr = (n, t) => {\n let a = typeof document < "u" ? document.createElement("canvas") : new OffscreenCanvas(1, 1);\n a.width = n.dims[3], a.height = n.dims[2];\n let u = a.getContext("2d");\n if (u != null) {\n let o, d;\n t?.tensorLayout !== void 0 && t.tensorLayout === "NHWC" ? (o = n.dims[2], d = n.dims[3]) : (o = n.dims[3], d = n.dims[2]);\n let c = t?.format !== void 0 ? t.format : "RGB", l = t?.norm, m, h;\n l === void 0 || l.mean === void 0 ? m = [255, 255, 255, 255] : typeof l.mean == "number" ? m = [l.mean, l.mean, l.mean, l.mean] : (m = [l.mean[0], l.mean[1], l.mean[2], 0], l.mean[3] !== void 0 && (m[3] = l.mean[3])), l === void 0 || l.bias === void 0 ? h = [0, 0, 0, 0] : typeof l.bias == "number" ? h = [l.bias, l.bias, l.bias, l.bias] : (h = [l.bias[0], l.bias[1], l.bias[2], 0], l.bias[3] !== void 0 && (h[3] = l.bias[3]));\n let g = d * o, b = 0, y = g, T = g * 2, I = -1;\n c === "RGBA" ? (b = 0, y = g, T = g * 2, I = g * 3) : c === "RGB" ? (b = 0, y = g, T = g * 2) : c === "RBG" && (b = 0, T = g, y = g * 2);\n for (let D = 0; D < d; D++)\n for (let z = 0; z < o; z++) {\n let v = (n.data[b++] - h[0]) * m[0], O = (n.data[y++] - h[1]) * m[1], F = (n.data[T++] - h[2]) * m[2], _ = I === -1 ? 255 : (n.data[I++] - h[3]) * m[3];\n u.fillStyle = "rgba(" + v + "," + O + "," + F + "," + _ + ")", u.fillRect(z, D, 1, 1);\n }\n if ("toDataURL" in a)\n return a.toDataURL();\n throw new Error("toDataURL is not supported");\n } else\n throw new Error("Can not access image data");\n }, gr = (n, t) => {\n let a = typeof document < "u" ? document.createElement("canvas").getContext("2d") : new OffscreenCanvas(1, 1).getContext("2d"), u;\n if (a != null) {\n let o, d, c;\n t?.tensorLayout !== void 0 && t.tensorLayout === "NHWC" ? (o = n.dims[2], d = n.dims[1], c = n.dims[3]) : (o = n.dims[3], d = n.dims[2], c = n.dims[1]);\n let l = t !== void 0 && t.format !== void 0 ? t.format : "RGB", m = t?.norm, h, g;\n m === void 0 || m.mean === void 0 ? h = [255, 255, 255, 255] : typeof m.mean == "number" ? h = [m.mean, m.mean, m.mean, m.mean] : (h = [m.mean[0], m.mean[1], m.mean[2], 255], m.mean[3] !== void 0 && (h[3] = m.mean[3])), m === void 0 || m.bias === void 0 ? g = [0, 0, 0, 0] : typeof m.bias == "number" ? g = [m.bias, m.bias, m.bias, m.bias] : (g = [m.bias[0], m.bias[1], m.bias[2], 0], m.bias[3] !== void 0 && (g[3] = m.bias[3]));\n let b = d * o;\n if (t !== void 0 && (t.format !== void 0 && c === 4 && t.format !== "RGBA" || c === 3 && t.format !== "RGB" && t.format !== "BGR"))\n throw new Error("Tensor format doesn\'t match input tensor dims");\n let y = 4, T = 0, I = 1, D = 2, z = 3, v = 0, O = b, F = b * 2, _ = -1;\n l === "RGBA" ? (v = 0, O = b, F = b * 2, _ = b * 3) : l === "RGB" ? (v = 0, O = b, F = b * 2) : l === "RBG" && (v = 0, F = b, O = b * 2), u = a.createImageData(o, d);\n for (let k = 0; k < d * o; T += y, I += y, D += y, z += y, k++)\n u.data[T] = (n.data[v++] - g[0]) * h[0], u.data[I] = (n.data[O++] - g[1]) * h[1], u.data[D] = (n.data[F++] - g[2]) * h[2], u.data[z] = _ === -1 ? 255 : (n.data[_++] - g[3]) * h[3];\n } else\n throw new Error("Can not access image data");\n return u;\n };\n });\n var Kt;\n var Tr;\n var Sr;\n var vr;\n var Or;\n var Ar;\n var Ir = N(() => {\n "use strict";\n ct();\n Kt = (n, t) => {\n if (n === void 0)\n throw new Error("Image buffer must be defined");\n if (t.height === void 0 || t.width === void 0)\n throw new Error("Image height and width must be defined");\n if (t.tensorLayout === "NHWC")\n throw new Error("NHWC Tensor layout is not supported yet");\n let { height: a, width: u } = t, o = t.norm ?? { mean: 255, bias: 0 }, d, c;\n typeof o.mean == "number" ? d = [o.mean, o.mean, o.mean, o.mean] : d = [o.mean[0], o.mean[1], o.mean[2], o.mean[3] ?? 255], typeof o.bias == "number" ? c = [o.bias, o.bias, o.bias, o.bias] : c = [o.bias[0], o.bias[1], o.bias[2], o.bias[3] ?? 0];\n let l = t.format !== void 0 ? t.format : "RGBA", m = t.tensorFormat !== void 0 && t.tensorFormat !== void 0 ? t.tensorFormat : "RGB", h = a * u, g = m === "RGBA" ? new Float32Array(h * 4) : new Float32Array(h * 3), b = 4, y = 0, T = 1, I = 2, D = 3, z = 0, v = h, O = h * 2, F = -1;\n l === "RGB" && (b = 3, y = 0, T = 1, I = 2, D = -1), m === "RGBA" ? F = h * 3 : m === "RBG" ? (z = 0, O = h, v = h * 2) : m === "BGR" && (O = 0, v = h, z = h * 2);\n for (let k = 0; k < h; k++, y += b, I += b, T += b, D += b)\n g[z++] = (n[y] + c[0]) / d[0], g[v++] = (n[T] + c[1]) / d[1], g[O++] = (n[I] + c[2]) / d[2], F !== -1 && D !== -1 && (g[F++] = (n[D] + c[3]) / d[3]);\n return m === "RGBA" ? new Q("float32", g, [1, 4, a, u]) : new Q("float32", g, [1, 3, a, u]);\n }, Tr = async (n, t) => {\n let a = typeof HTMLImageElement < "u" && n instanceof HTMLImageElement, u = typeof ImageData < "u" && n instanceof ImageData, o = typeof ImageBitmap < "u" && n instanceof ImageBitmap, d = typeof n == "string", c, l = t ?? {}, m = () => {\n if (typeof document < "u")\n return document.createElement("canvas");\n if (typeof OffscreenCanvas < "u")\n return new OffscreenCanvas(1, 1);\n throw new Error("Canvas is not supported");\n }, h = (g) => typeof HTMLCanvasElement < "u" && g instanceof HTMLCanvasElement || g instanceof OffscreenCanvas ? g.getContext("2d") : null;\n if (a) {\n let g = m();\n g.width = n.width, g.height = n.height;\n let b = h(g);\n if (b != null) {\n let y = n.height, T = n.width;\n if (t !== void 0 && t.resizedHeight !== void 0 && t.resizedWidth !== void 0 && (y = t.resizedHeight, T = t.resizedWidth), t !== void 0) {\n if (l = t, t.tensorFormat !== void 0)\n throw new Error("Image input config format must be RGBA for HTMLImageElement");\n l.tensorFormat = "RGBA", l.height = y, l.width = T;\n } else\n l.tensorFormat = "RGBA", l.height = y, l.width = T;\n b.drawImage(n, 0, 0), c = b.getImageData(0, 0, T, y).data;\n } else\n throw new Error("Can not access image data");\n } else if (u) {\n let g, b;\n if (t !== void 0 && t.resizedWidth !== void 0 && t.resizedHeight !== void 0 ? (g = t.resizedHeight, b = t.resizedWidth) : (g = n.height, b = n.width), t !== void 0 && (l = t), l.format = "RGBA", l.height = g, l.width = b, t !== void 0) {\n let y = m();\n y.width = b, y.height = g;\n let T = h(y);\n if (T != null)\n T.putImageData(n, 0, 0), c = T.getImageData(0, 0, b, g).data;\n else\n throw new Error("Can not access image data");\n } else\n c = n.data;\n } else if (o) {\n if (t === void 0)\n throw new Error("Please provide image config with format for Imagebitmap");\n let g = m();\n g.width = n.width, g.height = n.height;\n let b = h(g);\n if (b != null) {\n let y = n.height, T = n.width;\n return b.drawImage(n, 0, 0, T, y), c = b.getImageData(0, 0, T, y).data, l.height = y, l.width = T, Kt(c, l);\n } else\n throw new Error("Can not access image data");\n } else {\n if (d)\n return new Promise((g, b) => {\n let y = m(), T = h(y);\n if (!n || !T)\n return b();\n let I = new Image();\n I.crossOrigin = "Anonymous", I.src = n, I.onload = () => {\n y.width = I.width, y.height = I.height, T.drawImage(I, 0, 0, y.width, y.height);\n let D = T.getImageData(0, 0, y.width, y.height);\n l.height = y.height, l.width = y.width, g(Kt(D.data, l));\n };\n });\n throw new Error("Input data provided is not supported - aborted tensor creation");\n }\n if (c !== void 0)\n return Kt(c, l);\n throw new Error("Input data provided is not supported - aborted tensor creation");\n }, Sr = (n, t) => {\n let { width: a, height: u, download: o, dispose: d } = t, c = [1, u, a, 4];\n return new Q({ location: "texture", type: "float32", texture: n, dims: c, download: o, dispose: d });\n }, vr = (n, t) => {\n let { dataType: a, dims: u, download: o, dispose: d } = t;\n return new Q({ location: "gpu-buffer", type: a ?? "float32", gpuBuffer: n, dims: u, download: o, dispose: d });\n }, Or = (n, t) => {\n let { dataType: a, dims: u, download: o, dispose: d } = t;\n return new Q({ location: "ml-tensor", type: a ?? "float32", mlTensor: n, dims: u, download: o, dispose: d });\n }, Ar = (n, t, a) => new Q({ location: "cpu-pinned", type: n, data: t, dims: a ?? [t.length] });\n });\n var Le;\n var Xe;\n var Br;\n var Lr;\n var _r = N(() => {\n "use strict";\n Le = /* @__PURE__ */ new Map([["float32", Float32Array], ["uint8", Uint8Array], ["int8", Int8Array], ["uint16", Uint16Array], ["int16", Int16Array], ["int32", Int32Array], ["bool", Uint8Array], ["float64", Float64Array], ["uint32", Uint32Array], ["int4", Uint8Array], ["uint4", Uint8Array]]), Xe = /* @__PURE__ */ new Map([[Float32Array, "float32"], [Uint8Array, "uint8"], [Int8Array, "int8"], [Uint16Array, "uint16"], [Int16Array, "int16"], [Int32Array, "int32"], [Float64Array, "float64"], [Uint32Array, "uint32"]]), Br = false, Lr = () => {\n if (!Br) {\n Br = true;\n let n = typeof BigInt64Array < "u" && BigInt64Array.from, t = typeof BigUint64Array < "u" && BigUint64Array.from, a = globalThis.Float16Array, u = typeof a < "u" && a.from;\n n && (Le.set("int64", BigInt64Array), Xe.set(BigInt64Array, "int64")), t && (Le.set("uint64", BigUint64Array), Xe.set(BigUint64Array, "uint64")), u ? (Le.set("float16", a), Xe.set(a, "float16")) : Le.set("float16", Uint16Array);\n }\n };\n });\n var Pr;\n var Dr;\n var Ur = N(() => {\n "use strict";\n ct();\n Pr = (n) => {\n let t = 1;\n for (let a = 0; a < n.length; a++) {\n let u = n[a];\n if (typeof u != "number" || !Number.isSafeInteger(u))\n throw new TypeError(`dims[${a}] must be an integer, got: ${u}`);\n if (u < 0)\n throw new RangeError(`dims[${a}] must be a non-negative integer, got: ${u}`);\n t *= u;\n }\n return t;\n }, Dr = (n, t) => {\n switch (n.location) {\n case "cpu":\n return new Q(n.type, n.data, t);\n case "cpu-pinned":\n return new Q({ location: "cpu-pinned", data: n.data, type: n.type, dims: t });\n case "texture":\n return new Q({ location: "texture", texture: n.texture, type: n.type, dims: t });\n case "gpu-buffer":\n return new Q({ location: "gpu-buffer", gpuBuffer: n.gpuBuffer, type: n.type, dims: t });\n case "ml-tensor":\n return new Q({ location: "ml-tensor", mlTensor: n.mlTensor, type: n.type, dims: t });\n default:\n throw new Error(`tensorReshape: tensor location ${n.location} is not supported`);\n }\n };\n });\n var Q;\n var ct = N(() => {\n "use strict";\n Er();\n Ir();\n _r();\n Ur();\n Q = class {\n constructor(t, a, u) {\n Lr();\n let o, d;\n if (typeof t == "object" && "location" in t)\n switch (this.dataLocation = t.location, o = t.type, d = t.dims, t.location) {\n case "cpu-pinned": {\n let l = Le.get(o);\n if (!l)\n throw new TypeError(`unsupported type "${o}" to create tensor from pinned buffer`);\n if (!(t.data instanceof l))\n throw new TypeError(`buffer should be of type ${l.name}`);\n this.cpuData = t.data;\n break;\n }\n case "texture": {\n if (o !== "float32")\n throw new TypeError(`unsupported type "${o}" to create tensor from texture`);\n this.gpuTextureData = t.texture, this.downloader = t.download, this.disposer = t.dispose;\n break;\n }\n case "gpu-buffer": {\n if (o !== "float32" && o !== "float16" && o !== "int32" && o !== "int64" && o !== "uint32" && o !== "uint8" && o !== "bool" && o !== "uint4" && o !== "int4")\n throw new TypeError(`unsupported type "${o}" to create tensor from gpu buffer`);\n this.gpuBufferData = t.gpuBuffer, this.downloader = t.download, this.disposer = t.dispose;\n break;\n }\n case "ml-tensor": {\n if (o !== "float32" && o !== "float16" && o !== "int32" && o !== "int64" && o !== "uint32" && o !== "uint64" && o !== "int8" && o !== "uint8" && o !== "bool" && o !== "uint4" && o !== "int4")\n throw new TypeError(`unsupported type "${o}" to create tensor from MLTensor`);\n this.mlTensorData = t.mlTensor, this.downloader = t.download, this.disposer = t.dispose;\n break;\n }\n default:\n throw new Error(`Tensor constructor: unsupported location \'${this.dataLocation}\'`);\n }\n else {\n let l, m;\n if (typeof t == "string")\n if (o = t, m = u, t === "string") {\n if (!Array.isArray(a))\n throw new TypeError("A string tensor\'s data must be a string array.");\n l = a;\n } else {\n let h = Le.get(t);\n if (h === void 0)\n throw new TypeError(`Unsupported tensor type: ${t}.`);\n if (Array.isArray(a)) {\n if (t === "float16" && h === Uint16Array || t === "uint4" || t === "int4")\n throw new TypeError(`Creating a ${t} tensor from number array is not supported. Please use ${h.name} as data.`);\n t === "uint64" || t === "int64" ? l = h.from(a, BigInt) : l = h.from(a);\n } else if (a instanceof h)\n l = a;\n else if (a instanceof Uint8ClampedArray)\n if (t === "uint8")\n l = Uint8Array.from(a);\n else\n throw new TypeError("A Uint8ClampedArray tensor\'s data must be type of uint8");\n else if (t === "float16" && a instanceof Uint16Array && h !== Uint16Array)\n l = new globalThis.Float16Array(a.buffer, a.byteOffset, a.length);\n else\n throw new TypeError(`A ${o} tensor\'s data must be type of ${h}`);\n }\n else if (m = a, Array.isArray(t)) {\n if (t.length === 0)\n throw new TypeError("Tensor type cannot be inferred from an empty array.");\n let h = typeof t[0];\n if (h === "string")\n o = "string", l = t;\n else if (h === "boolean")\n o = "bool", l = Uint8Array.from(t);\n else\n throw new TypeError(`Invalid element type of data array: ${h}.`);\n } else if (t instanceof Uint8ClampedArray)\n o = "uint8", l = Uint8Array.from(t);\n else {\n let h = Xe.get(t.constructor);\n if (h === void 0)\n throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);\n o = h, l = t;\n }\n if (m === void 0)\n m = [l.length];\n else if (!Array.isArray(m))\n throw new TypeError("A tensor\'s dims must be a number array");\n d = m, this.cpuData = l, this.dataLocation = "cpu";\n }\n let c = Pr(d);\n if (this.cpuData && c !== this.cpuData.length && !((o === "uint4" || o === "int4") && Math.ceil(c / 2) === this.cpuData.length))\n throw new Error(`Tensor\'s size(${c}) does not match data length(${this.cpuData.length}).`);\n this.type = o, this.dims = d, this.size = c;\n }\n static async fromImage(t, a) {\n return Tr(t, a);\n }\n static fromTexture(t, a) {\n return Sr(t, a);\n }\n static fromGpuBuffer(t, a) {\n return vr(t, a);\n }\n static fromMLTensor(t, a) {\n return Or(t, a);\n }\n static fromPinnedBuffer(t, a, u) {\n return Ar(t, a, u);\n }\n toDataURL(t) {\n return yr(this, t);\n }\n toImageData(t) {\n return gr(this, t);\n }\n get data() {\n if (this.ensureValid(), !this.cpuData)\n 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.");\n return this.cpuData;\n }\n get location() {\n return this.dataLocation;\n }\n get texture() {\n if (this.ensureValid(), !this.gpuTextureData)\n throw new Error("The data is not stored as a WebGL texture.");\n return this.gpuTextureData;\n }\n get gpuBuffer() {\n if (this.ensureValid(), !this.gpuBufferData)\n throw new Error("The data is not stored as a WebGPU buffer.");\n return this.gpuBufferData;\n }\n get mlTensor() {\n if (this.ensureValid(), !this.mlTensorData)\n throw new Error("The data is not stored as a WebNN MLTensor.");\n return this.mlTensorData;\n }\n async getData(t) {\n switch (this.ensureValid(), this.dataLocation) {\n case "cpu":\n case "cpu-pinned":\n return this.data;\n case "texture":\n case "gpu-buffer":\n case "ml-tensor": {\n if (!this.downloader)\n throw new Error("The current tensor is not created with a specified data downloader.");\n if (this.isDownloading)\n throw new Error("The current tensor is being downloaded.");\n try {\n this.isDownloading = true;\n let a = await this.downloader();\n return this.downloader = void 0, this.dataLocation = "cpu", this.cpuData = a, t && this.disposer && (this.disposer(), this.disposer = void 0), a;\n } finally {\n this.isDownloading = false;\n }\n }\n default:\n throw new Error(`cannot get data from location: ${this.dataLocation}`);\n }\n }\n dispose() {\n if (this.isDownloading)\n throw new Error("The current tensor is being downloaded.");\n this.disposer && (this.disposer(), this.disposer = void 0), this.cpuData = void 0, this.gpuTextureData = void 0, this.gpuBufferData = void 0, this.mlTensorData = void 0, this.downloader = void 0, this.isDownloading = void 0, this.dataLocation = "none";\n }\n ensureValid() {\n if (this.dataLocation === "none")\n throw new Error("The tensor is disposed.");\n }\n reshape(t) {\n if (this.ensureValid(), this.downloader || this.disposer)\n throw new Error("Cannot reshape a tensor that owns GPU resource.");\n return Dr(this, t);\n }\n };\n });\n var de;\n var en = N(() => {\n "use strict";\n ct();\n de = Q;\n });\n var xr;\n var Mr;\n var _e;\n var Pe;\n var De;\n var Ue;\n var tn = N(() => {\n "use strict";\n Zt();\n xr = (n, t) => {\n (typeof J.trace > "u" ? !J.wasm.trace : !J.trace) || console.timeStamp(`${n}::ORT::${t}`);\n }, Mr = (n, t) => {\n let a = new Error().stack?.split(/\\r\\n|\\r|\\n/g) || [], u = false;\n for (let o = 0; o < a.length; o++) {\n if (u && !a[o].includes("TRACE_FUNC")) {\n let d = `FUNC_${n}::${a[o].trim().split(" ")[1]}`;\n t && (d += `::${t}`), xr("CPU", d);\n return;\n }\n a[o].includes("TRACE_FUNC") && (u = true);\n }\n }, _e = (n) => {\n (typeof J.trace > "u" ? !J.wasm.trace : !J.trace) || Mr("BEGIN", n);\n }, Pe = (n) => {\n (typeof J.trace > "u" ? !J.wasm.trace : !J.trace) || Mr("END", n);\n }, De = (n) => {\n (typeof J.trace > "u" ? !J.wasm.trace : !J.trace) || console.time(`ORT::${n}`);\n }, Ue = (n) => {\n (typeof J.trace > "u" ? !J.wasm.trace : !J.trace) || console.timeEnd(`ORT::${n}`);\n };\n });\n var lt;\n var Cr = N(() => {\n "use strict";\n Qt();\n en();\n tn();\n lt = class n {\n constructor(t) {\n this.handler = t;\n }\n async run(t, a, u) {\n _e(), De("InferenceSession.run");\n let o = {}, d = {};\n if (typeof t != "object" || t === null || t instanceof de || Array.isArray(t))\n throw new TypeError("\'feeds\' must be an object that use input names as keys and OnnxValue as corresponding values.");\n let c = true;\n if (typeof a == "object") {\n if (a === null)\n throw new TypeError("Unexpected argument[1]: cannot be null.");\n if (a instanceof de)\n throw new TypeError("\'fetches\' cannot be a Tensor");\n if (Array.isArray(a)) {\n if (a.length === 0)\n throw new TypeError("\'fetches\' cannot be an empty array.");\n c = false;\n for (let h of a) {\n if (typeof h != "string")\n throw new TypeError("\'fetches\' must be a string array or an object.");\n if (this.outputNames.indexOf(h) === -1)\n throw new RangeError(`\'fetches\' contains invalid output name: ${h}.`);\n o[h] = null;\n }\n if (typeof u == "object" && u !== null)\n d = u;\n else if (typeof u < "u")\n throw new TypeError("\'options\' must be an object.");\n } else {\n let h = false, g = Object.getOwnPropertyNames(a);\n for (let b of this.outputNames)\n if (g.indexOf(b) !== -1) {\n let y = a[b];\n (y === null || y instanceof de) && (h = true, c = false, o[b] = y);\n }\n if (h) {\n if (typeof u == "object" && u !== null)\n d = u;\n else if (typeof u < "u")\n throw new TypeError("\'options\' must be an object.");\n } else\n d = a;\n }\n } else if (typeof a < "u")\n throw new TypeError("Unexpected argument[1]: must be \'fetches\' or \'options\'.");\n for (let h of this.inputNames)\n if (typeof t[h] > "u")\n throw new Error(`input \'${h}\' is missing in \'feeds\'.`);\n if (c)\n for (let h of this.outputNames)\n o[h] = null;\n let l = await this.handler.run(t, o, d), m = {};\n for (let h in l)\n if (Object.hasOwnProperty.call(l, h)) {\n let g = l[h];\n g instanceof de ? m[h] = g : m[h] = new de(g.type, g.data, g.dims);\n }\n return Ue("InferenceSession.run"), Pe(), m;\n }\n async release() {\n return this.handler.dispose();\n }\n static async create(t, a, u, o) {\n _e(), De("InferenceSession.create");\n let d, c = {};\n if (typeof t == "string") {\n if (d = t, typeof a == "object" && a !== null)\n c = a;\n else if (typeof a < "u")\n throw new TypeError("\'options\' must be an object.");\n } else if (t instanceof Uint8Array) {\n if (d = t, typeof a == "object" && a !== null)\n c = a;\n else if (typeof a < "u")\n throw new TypeError("\'options\' must be an object.");\n } else if (t instanceof ArrayBuffer || typeof SharedArrayBuffer < "u" && t instanceof SharedArrayBuffer) {\n let g = t, b = 0, y = t.byteLength;\n if (typeof a == "object" && a !== null)\n c = a;\n else if (typeof a == "number") {\n if (b = a, !Number.isSafeInteger(b))\n throw new RangeError("\'byteOffset\' must be an integer.");\n if (b < 0 || b >= g.byteLength)\n throw new RangeError(`\'byteOffset\' is out of range [0, ${g.byteLength}).`);\n if (y = t.byteLength - b, typeof u == "number") {\n if (y = u, !Number.isSafeInteger(y))\n throw new RangeError("\'byteLength\' must be an integer.");\n if (y <= 0 || b + y > g.byteLength)\n throw new RangeError(`\'byteLength\' is out of range (0, ${g.byteLength - b}].`);\n if (typeof o == "object" && o !== null)\n c = o;\n else if (typeof o < "u")\n throw new TypeError("\'options\' must be an object.");\n } else if (typeof u < "u")\n throw new TypeError("\'byteLength\' must be a number.");\n } else if (typeof a < "u")\n throw new TypeError("\'options\' must be an object.");\n d = new Uint8Array(g, b, y);\n } else\n throw new TypeError("Unexpected argument[0]: must be \'path\' or \'buffer\'.");\n let [l, m] = await dr(c), h = await l.createInferenceSessionHandler(d, m);\n return Ue("InferenceSession.create"), Pe(), new n(h);\n }\n startProfiling() {\n this.handler.startProfiling();\n }\n endProfiling() {\n this.handler.endProfiling();\n }\n get inputNames() {\n return this.handler.inputNames;\n }\n get outputNames() {\n return this.handler.outputNames;\n }\n get inputMetadata() {\n return this.handler.inputMetadata;\n }\n get outputMetadata() {\n return this.handler.outputMetadata;\n }\n };\n });\n var ts;\n var Rr = N(() => {\n "use strict";\n Cr();\n ts = lt;\n });\n var Fr = N(() => {\n "use strict";\n });\n var Nr = N(() => {\n "use strict";\n });\n var kr = N(() => {\n "use strict";\n });\n var Wr = N(() => {\n "use strict";\n });\n var nn = {};\n ut(nn, { InferenceSession: () => ts, TRACE: () => xr, TRACE_EVENT_BEGIN: () => De, TRACE_EVENT_END: () => Ue, TRACE_FUNC_BEGIN: () => _e, TRACE_FUNC_END: () => Pe, Tensor: () => de, env: () => Y, registerBackend: () => qe });\n var Te = N(() => {\n "use strict";\n pr();\n br();\n Rr();\n en();\n Fr();\n Nr();\n tn();\n kr();\n Wr();\n });\n var dt = N(() => {\n "use strict";\n });\n var Hr = {};\n ut(Hr, { default: () => ns });\n var $r;\n var zr;\n var ns;\n var jr = N(() => {\n "use strict";\n rn();\n xe();\n pt();\n $r = "ort-wasm-proxy-worker", zr = globalThis.self?.name === $r;\n zr && (self.onmessage = (n) => {\n let { type: t, in: a } = n.data;\n try {\n switch (t) {\n case "init-wasm":\n mt(a.wasm).then(() => {\n ht(a).then(() => {\n postMessage({ type: t });\n }, (u) => {\n postMessage({ type: t, err: u });\n });\n }, (u) => {\n postMessage({ type: t, err: u });\n });\n break;\n case "init-ep": {\n let { epName: u, env: o } = a;\n wt(o, u).then(() => {\n postMessage({ type: t });\n }, (d) => {\n postMessage({ type: t, err: d });\n });\n break;\n }\n case "copy-from": {\n let { buffer: u } = a, o = Qe(u);\n postMessage({ type: t, out: o });\n break;\n }\n case "create": {\n let { model: u, options: o } = a;\n bt(u, o).then((d) => {\n postMessage({ type: t, out: d });\n }, (d) => {\n postMessage({ type: t, err: d });\n });\n break;\n }\n case "release":\n yt(a), postMessage({ type: t });\n break;\n case "run": {\n let { sessionId: u, inputIndices: o, inputs: d, outputIndices: c, options: l } = a;\n gt(u, o, d, c, new Array(c.length).fill(null), l).then((m) => {\n m.some((h) => h[3] !== "cpu") ? postMessage({ type: t, err: "Proxy does not support non-cpu tensor location." }) : postMessage({ type: t, out: m }, Tt([...d, ...m]));\n }, (m) => {\n postMessage({ type: t, err: m });\n });\n break;\n }\n case "end-profiling":\n Et(a), postMessage({ type: t });\n break;\n default:\n }\n } catch (u) {\n postMessage({ type: t, err: u });\n }\n });\n ns = zr ? null : (n) => new Worker(n ?? oe, { type: "module", name: $r });\n });\n var Yr = {};\n ut(Yr, { default: () => rs });\n async function Vr(n = {}) {\n var t = n, a = !!globalThis.window, u = !!globalThis.WorkerGlobalScope, o = u && self.name?.startsWith("em-pthread");\n t.mountExternalData = (e, r) => {\n e.startsWith("./") && (e = e.substring(2)), (t.Rb || (t.Rb = /* @__PURE__ */ new Map())).set(e, r);\n }, t.unmountExternalData = () => {\n delete t.Rb;\n }, globalThis.SharedArrayBuffer ?? new WebAssembly.Memory({ initial: 0, maximum: 0, shared: true }).buffer.constructor;\n var d, c, l = (e, r) => {\n throw r;\n }, m = import_meta.url, h = "";\n if (a || u) {\n try {\n h = new URL(".", m).href;\n } catch {\n }\n u && (c = (e) => {\n var r = new XMLHttpRequest();\n return r.open("GET", e, false), r.responseType = "arraybuffer", r.send(null), new Uint8Array(r.response);\n }), d = async (e) => {\n if (k(e))\n return new Promise((i, s) => {\n var f = new XMLHttpRequest();\n f.open("GET", e, true), f.responseType = "arraybuffer", f.onload = () => {\n f.status == 200 || f.status == 0 && f.response ? i(f.response) : s(f.status);\n }, f.onerror = s, f.send(null);\n });\n var r = await fetch(e, { credentials: "same-origin" });\n if (r.ok)\n return r.arrayBuffer();\n throw Error(r.status + " : " + r.url);\n };\n }\n var g, b, y, T, I, D, z = console.log.bind(console), v = console.error.bind(console), O = z, F = v, _ = false, k = (e) => e.startsWith("file://");\n function w() {\n ge.buffer != j.buffer && ee();\n }\n if (o) {\n let e = function(r) {\n try {\n var i = r.data, s = i.Pb;\n if (s === "load") {\n let f = [];\n self.onmessage = (p) => f.push(p), D = () => {\n postMessage({ Pb: "loaded" });\n for (let p of f)\n e(p);\n self.onmessage = e;\n };\n for (let p of i.Zb)\n t[p] && !t[p].proxy || (t[p] = (...E) => {\n postMessage({ Pb: "callHandler", Yb: p, args: E });\n }, p == "print" && (O = t[p]), p == "printErr" && (F = t[p]));\n ge = i.dc, ee(), b = i.ec, Ut(), it();\n } else if (s === "run") {\n (function(f) {\n var p = (w(), W)[f + 52 >>> 2 >>> 0];\n f = (w(), W)[f + 56 >>> 2 >>> 0], sr(p, p - f), P(p);\n })(i.Ob), zt(i.Ob, 0, 0, 1, 0, 0), wn(), Ft(i.Ob), Z ||= true;\n try {\n Ao(i.bc, i.Tb);\n } catch (f) {\n if (f != "unwind")\n throw f;\n }\n } else\n i.target !== "setimmediate" && (s === "checkMailbox" ? Z && rt() : s && (F(`worker: received unknown command ${s}`), F(i)));\n } catch (f) {\n throw tr(), f;\n }\n };\n var Ss = e, Z = false;\n self.onunhandledrejection = (r) => {\n throw r.reason || r;\n }, self.onmessage = e;\n }\n var j, ne, pe, B, W, re, me, A, K, je = false;\n function ee() {\n var e = ge.buffer;\n t.HEAP8 = j = new Int8Array(e), pe = new Int16Array(e), t.HEAPU8 = ne = new Uint8Array(e), new Uint16Array(e), t.HEAP32 = B = new Int32Array(e), t.HEAPU32 = W = new Uint32Array(e), re = new Float32Array(e), me = new Float64Array(e), A = new BigInt64Array(e), new BigUint64Array(e);\n }\n function he() {\n je = true, o ? D() : Ee.Ta();\n }\n function H(e) {\n throw F(e = "Aborted(" + e + ")"), _ = true, e = new WebAssembly.RuntimeError(e + ". Build with -sASSERTIONS for more info."), I?.(e), e;\n }\n function q() {\n return { a: { R: fa, f: Io, w: Bo, e: Lo, k: _o, g: Po, S: Do, b: Uo, G: xo, ta: vn, j: Mo, L: In, Ja: Bn, pa: Ln, ra: _n, Ka: Pn, Ha: Dn, Aa: Un, Ga: xn, Y: Mn, qa: Cn, na: Rn, Ia: Fn, oa: Nn, Pa: Co, Da: Ro, la: No, ua: ko, ia: Wo, T: Go, Ca: Ft, Ma: $o, xa: zo, ya: Ho, za: jo, va: $n, wa: zn, ja: Hn, Ra: Yo, Oa: Xo, V: Qo, U: Zo, Na: Jo, F: Ko, La: ea, ma: ta, u: Vo, H: na, Q: at, ka: oa, aa: ra, Sa: aa, Ea: Yn, Fa: Jn, sa: ye, I: qn, X: Xn, Ba: Qn, W: Zn, _: ja, M: Wa, $: Ha, N: ka, v: Pa, c: pa, m: la, n: ca, q: va, ba: Ra, x: Ba, o: wa, O: Fa, D: Ga, J: Ca, ca: Ma, da: xa, A: Oa, P: Ua, ea: Da, z: La, E: Na, d: da, r: ha, i: ma, Z: Va, l: ya, p: ga, s: ba, t: Ea, y: Aa, fa: _a, B: $a, K: Ia, C: za, ga: Sa, ha: Ta, h: ia, a: ge, Qa: V } };\n }\n async function Ut() {\n function e(s, f) {\n return Ee = s.exports, Ee = function() {\n var p = Ee, E = (x) => () => x() >>> 0, S = (x) => (R) => x(R) >>> 0;\n return (p = Object.assign({}, p)).sb = E(p.sb), p.ub = S(p.ub), p.Ib = S(p.Ib), p.Jb = E(p.Jb), p.Nb = S(p.Nb), p;\n }(), mn.push(Ee.vb), s = Ee, t._OrtInit = s.Ua, t._OrtGetLastError = s.Va, t._OrtCreateSessionOptions = s.Wa, t._OrtAppendExecutionProvider = s.Xa, t._OrtAddFreeDimensionOverride = s.Ya, t._OrtAddSessionConfigEntry = s.Za, t._OrtReleaseSessionOptions = s._a, t._OrtCreateSession = s.$a, t._OrtReleaseSession = s.ab, t._OrtGetInputOutputCount = s.bb, t._OrtGetInputOutputMetadata = s.cb, t._OrtFree = s.db, t._OrtCreateTensor = s.eb, t._OrtGetTensorData = s.fb, t._OrtReleaseTensor = s.gb, t._OrtCreateRunOptions = s.hb, t._OrtAddRunConfigEntry = s.ib, t._OrtReleaseRunOptions = s.jb, t._OrtCreateBinding = s.kb, t._OrtBindInput = s.lb, t._OrtBindOutput = s.mb, t._OrtClearBoundOutputs = s.nb, t._OrtReleaseBinding = s.ob, t._OrtRunWithBinding = s.pb, t._OrtRun = s.qb, t._OrtEndProfiling = s.rb, st = s.sb, Kn = t._free = s.tb, er = t._malloc = s.ub, zt = s.xb, tr = s.yb, nr = s.zb, rr = s.Ab, Ht = s.Bb, or = s.Cb, ar = s.Db, M = s.Eb, Je = s.Fb, sr = s.Gb, P = s.Hb, jt = s.Ib, U = s.Jb, ir = s.Kb, Vt = s.Lb, ur = s.Mb, fr = s.Nb, cr = s.wb, b = f, Ee;\n }\n var r, i = q();\n return t.instantiateWasm ? new Promise((s) => {\n t.instantiateWasm(i, (f, p) => {\n s(e(f, p));\n });\n }) : o ? e(new WebAssembly.Instance(b, q()), b) : (K ??= t.locateFile ? t.locateFile ? t.locateFile("ort-wasm-simd-threaded.wasm", h) : h + "ort-wasm-simd-threaded.wasm" : new URL("ort-wasm-simd-threaded.wasm", import_meta.url).href, r = await async function(s) {\n var f = K;\n if (!g && !k(f))\n try {\n var p = fetch(f, { credentials: "same-origin" });\n return await WebAssembly.instantiateStreaming(p, s);\n } catch (E) {\n F(`wasm streaming compile failed: ${E}`), F("falling back to ArrayBuffer instantiation");\n }\n return async function(E, S) {\n try {\n var x = await async function(R) {\n if (!g)\n try {\n var X = await d(R);\n return new Uint8Array(X);\n } catch {\n }\n if (R == K && g)\n R = new Uint8Array(g);\n else {\n if (!c)\n throw "both async and sync fetching of the wasm failed";\n R = c(R);\n }\n return R;\n }(E);\n return await WebAssembly.instantiate(x, S);\n } catch (R) {\n F(`failed to asynchronously prepare wasm: ${R}`), H(R);\n }\n }(f, s);\n }(i), e(r.instance, r.module));\n }\n class Se {\n name = "ExitStatus";\n constructor(r) {\n this.message = `Program terminated with exit(${r})`, this.status = r;\n }\n }\n var ve = (e) => {\n e.terminate(), e.onmessage = () => {\n };\n }, Ve = [], Re = 0, te = null, ue = (e) => {\n ce.length == 0 && (yn(), bn(ce[0]));\n var r = ce.pop();\n if (!r)\n return 6;\n Fe.push(r), Oe[e.Ob] = r, r.Ob = e.Ob;\n var i = { Pb: "run", bc: e.ac, Tb: e.Tb, Ob: e.Ob };\n return r.postMessage(i, e.Xb), 0;\n }, se = 0, L = (e, r, ...i) => {\n var s, f = 16 * i.length, p = U(), E = jt(f), S = E >>> 3;\n for (s of i)\n typeof s == "bigint" ? ((w(), A)[S++ >>> 0] = 1n, (w(), A)[S++ >>> 0] = s) : ((w(), A)[S++ >>> 0] = 0n, (w(), me)[S++ >>> 0] = s);\n return e = nr(e, 0, f, E, r), P(p), e;\n };\n function V(e) {\n if (o)\n return L(0, 1, e);\n if (y = e, !(0 < se)) {\n for (var r of Fe)\n ve(r);\n for (r of ce)\n ve(r);\n ce = [], Fe = [], Oe = {}, _ = true;\n }\n l(0, new Se(e));\n }\n function fe(e) {\n if (o)\n return L(1, 0, e);\n ye(e);\n }\n var ye = (e) => {\n if (y = e, o)\n throw fe(e), "unwind";\n V(e);\n }, ce = [], Fe = [], mn = [], Oe = {}, hn = (e) => {\n var r = e.Ob;\n delete Oe[r], ce.push(e), Fe.splice(Fe.indexOf(e), 1), e.Ob = 0, rr(r);\n };\n function wn() {\n mn.forEach((e) => e());\n }\n var bn = (e) => new Promise((r) => {\n e.onmessage = (f) => {\n var p = f.data;\n if (f = p.Pb, p.Sb && p.Sb != st()) {\n var E = Oe[p.Sb];\n E ? E.postMessage(p, p.Xb) : F(`Internal error! Worker sent a message "${f}" to target pthread ${p.Sb}, but that thread no longer exists!`);\n } else\n f === "checkMailbox" ? rt() : f === "spawnThread" ? ue(p) : f === "cleanupThread" ? Rt(() => {\n hn(Oe[p.cc]);\n }) : f === "loaded" ? (e.loaded = true, r(e)) : p.target === "setimmediate" ? e.postMessage(p) : f === "uncaughtException" ? e.onerror(p.error) : f === "callHandler" ? t[p.Yb](...p.args) : f && F(`worker sent an unknown command ${f}`);\n }, e.onerror = (f) => {\n throw F(`worker sent an error! ${f.filename}:${f.lineno}: ${f.message}`), f;\n };\n var i, s = [];\n for (i of [])\n t.propertyIsEnumerable(i) && s.push(i);\n e.postMessage({ Pb: "load", Zb: s, dc: ge, ec: b });\n });\n function yn() {\n var e = new Worker((() => {\n let r = URL;\n return import_meta.url > "file:" && import_meta.url < "file;" ? new r("ort.wasm.bundle.min.mjs", import_meta.url) : new URL(import_meta.url);\n })(), { type: "module", workerData: "em-pthread", name: "em-pthread" });\n ce.push(e);\n }\n var ge, gn = [], C = (e) => {\n var r = gn[e];\n return r || (gn[e] = r = cr.get(e)), r;\n }, Ao = (e, r) => {\n se = 0, e = C(e)(r), 0 < se ? y = e : Ht(e);\n }, tt = [], nt = 0;\n function Io(e) {\n var r = new xt(e >>>= 0);\n return (w(), j)[r.Qb + 12 >>> 0] == 0 && (En(r, true), nt--), Tn(r, false), tt.push(r), fr(e);\n }\n var Ne = 0, Bo = () => {\n M(0, 0);\n var e = tt.pop();\n ir(e.Ub), Ne = 0;\n };\n function En(e, r) {\n r = r ? 1 : 0, (w(), j)[e.Qb + 12 >>> 0] = r;\n }\n function Tn(e, r) {\n r = r ? 1 : 0, (w(), j)[e.Qb + 13 >>> 0] = r;\n }\n class xt {\n constructor(r) {\n this.Ub = r, this.Qb = r - 24;\n }\n }\n var Mt = (e) => {\n var r = Ne;\n if (!r)\n return Je(0), 0;\n var i = new xt(r);\n (w(), W)[i.Qb + 16 >>> 2 >>> 0] = r;\n var s = (w(), W)[i.Qb + 4 >>> 2 >>> 0];\n if (!s)\n return Je(0), r;\n for (var f of e) {\n if (f === 0 || f === s)\n break;\n if (ur(f, s, i.Qb + 16))\n return Je(f), r;\n }\n return Je(s), r;\n };\n function Lo() {\n return Mt([]);\n }\n function _o(e) {\n return Mt([e >>> 0]);\n }\n function Po(e, r, i, s) {\n return Mt([e >>> 0, r >>> 0, i >>> 0, s >>> 0]);\n }\n var Do = () => {\n var e = tt.pop();\n e || H("no exception to throw");\n var r = e.Ub;\n throw (w(), j)[e.Qb + 13 >>> 0] == 0 && (tt.push(e), Tn(e, true), En(e, false), nt++), Vt(r), Ne = r;\n };\n function Uo(e, r, i) {\n var s = new xt(e >>>= 0);\n throw r >>>= 0, i >>>= 0, (w(), W)[s.Qb + 16 >>> 2 >>> 0] = 0, (w(), W)[s.Qb + 4 >>> 2 >>> 0] = r, (w(), W)[s.Qb + 8 >>> 2 >>> 0] = i, Vt(e), nt++, Ne = e;\n }\n var xo = () => nt;\n function Sn(e, r, i, s) {\n return o ? L(2, 1, e, r, i, s) : vn(e, r, i, s);\n }\n function vn(e, r, i, s) {\n if (e >>>= 0, r >>>= 0, i >>>= 0, s >>>= 0, !globalThis.SharedArrayBuffer)\n return 6;\n var f = [];\n return o && f.length === 0 ? Sn(e, r, i, s) : (e = { ac: i, Ob: e, Tb: s, Xb: f }, o ? (e.Pb = "spawnThread", postMessage(e, f), 0) : ue(e));\n }\n function Mo(e) {\n throw Ne ||= e >>> 0, Ne;\n }\n var On = globalThis.TextDecoder && new TextDecoder(), An = (e, r = 0, i, s) => {\n var f = r >>>= 0;\n if (i = f + i, s)\n s = i;\n else {\n for (; e[f] && !(f >= i); )\n ++f;\n s = f;\n }\n if (16 < s - r && e.buffer && On)\n return On.decode(e.buffer instanceof ArrayBuffer ? e.subarray(r, s) : e.slice(r, s));\n for (f = ""; r < s; )\n if (128 & (i = e[r++])) {\n var p = 63 & e[r++];\n if ((224 & i) == 192)\n f += String.fromCharCode((31 & i) << 6 | p);\n else {\n var E = 63 & e[r++];\n 65536 > (i = (240 & i) == 224 ? (15 & i) << 12 | p << 6 | E : (7 & i) << 18 | p << 12 | E << 6 | 63 & e[r++]) ? f += String.fromCharCode(i) : (i -= 65536, f += String.fromCharCode(55296 | i >> 10, 56320 | 1023 & i));\n }\n } else\n f += String.fromCharCode(i);\n return f;\n }, Ct = (e, r, i) => (e >>>= 0) ? An((w(), ne), e, r, i) : "";\n function In(e, r, i) {\n return o ? L(3, 1, e, r, i) : 0;\n }\n function Bn(e, r) {\n if (o)\n return L(4, 1, e, r);\n }\n function Ln(e, r) {\n if (o)\n return L(5, 1, e, r);\n }\n function _n(e, r, i) {\n if (o)\n return L(6, 1, e, r, i);\n }\n function Pn(e, r, i) {\n return o ? L(7, 1, e, r, i) : 0;\n }\n function Dn(e, r) {\n if (o)\n return L(8, 1, e, r);\n }\n function Un(e, r, i) {\n if (o)\n return L(9, 1, e, r, i);\n }\n function xn(e, r, i, s) {\n if (o)\n return L(10, 1, e, r, i, s);\n }\n function Mn(e, r, i, s) {\n if (o)\n return L(11, 1, e, r, i, s);\n }\n function Cn(e, r, i, s) {\n if (o)\n return L(12, 1, e, r, i, s);\n }\n function Rn(e) {\n if (o)\n return L(13, 1, e);\n }\n function Fn(e, r) {\n if (o)\n return L(14, 1, e, r);\n }\n function Nn(e, r, i) {\n if (o)\n return L(15, 1, e, r, i);\n }\n var Co = () => H("");\n function Ro(e) {\n zt(e >>> 0, !u, 1, !a, 131072, false), wn();\n }\n var Rt = (e) => {\n if (!_)\n try {\n if (e(), !(0 < se))\n try {\n o ? st() && Ht(y) : ye(y);\n } catch (r) {\n r instanceof Se || r == "unwind" || l(0, r);\n }\n } catch (r) {\n r instanceof Se || r == "unwind" || l(0, r);\n }\n }, Fo = !Atomics.waitAsync || globalThis.navigator?.userAgent && 91 > Number((navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./) || [])[2]);\n function Ft(e) {\n e >>>= 0, Fo || (Atomics.waitAsync((w(), B), e >>> 2, e).value.then(rt), e += 128, Atomics.store((w(), B), e >>> 2, 1));\n }\n var rt = () => Rt(() => {\n var e = st();\n e && (Ft(e), ar());\n });\n function No(e, r) {\n (e >>>= 0) == r >>> 0 ? setTimeout(rt) : o ? postMessage({ Sb: e, Pb: "checkMailbox" }) : (e = Oe[e]) && e.postMessage({ Pb: "checkMailbox" });\n }\n var Nt = [];\n function ko(e, r, i, s, f) {\n for (r >>>= 0, f >>>= 0, Nt.length = 0, i = f >>> 3, s = f + s >>> 3; i < s; ) {\n var p;\n p = (w(), A)[i++ >>> 0] ? (w(), A)[i++ >>> 0] : (w(), me)[i++ >>> 0], Nt.push(p);\n }\n return (r ? lr[r] : ua[e])(...Nt);\n }\n var Wo = () => {\n se = 0;\n };\n function Go(e) {\n e >>>= 0, o ? postMessage({ Pb: "cleanupThread", cc: e }) : hn(Oe[e]);\n }\n function $o(e) {\n }\n function zo(e, r) {\n e = -9007199254740992 > e || 9007199254740992 < e ? NaN : Number(e), r >>>= 0, e = new Date(1e3 * e), (w(), B)[r >>> 2 >>> 0] = e.getUTCSeconds(), (w(), B)[r + 4 >>> 2 >>> 0] = e.getUTCMinutes(), (w(), B)[r + 8 >>> 2 >>> 0] = e.getUTCHours(), (w(), B)[r + 12 >>> 2 >>> 0] = e.getUTCDate(), (w(), B)[r + 16 >>> 2 >>> 0] = e.getUTCMonth(), (w(), B)[r + 20 >>> 2 >>> 0] = e.getUTCFullYear() - 1900, (w(), B)[r + 24 >>> 2 >>> 0] = e.getUTCDay(), e = (e.getTime() - Date.UTC(e.getUTCFullYear(), 0, 1, 0, 0, 0, 0)) / 864e5 | 0, (w(), B)[r + 28 >>> 2 >>> 0] = e;\n }\n var kn = (e) => e % 4 == 0 && (e % 100 != 0 || e % 400 == 0), Wn = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], Gn = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n function Ho(e, r) {\n e = -9007199254740992 > e || 9007199254740992 < e ? NaN : Number(e), r >>>= 0, e = new Date(1e3 * e), (w(), B)[r >>> 2 >>> 0] = e.getSeconds(), (w(), B)[r + 4 >>> 2 >>> 0] = e.getMinutes(), (w(), B)[r + 8 >>> 2 >>> 0] = e.getHours(), (w(), B)[r + 12 >>> 2 >>> 0] = e.getDate(), (w(), B)[r + 16 >>> 2 >>> 0] = e.getMonth(), (w(), B)[r + 20 >>> 2 >>> 0] = e.getFullYear() - 1900, (w(), B)[r + 24 >>> 2 >>> 0] = e.getDay();\n var i = (kn(e.getFullYear()) ? Wn : Gn)[e.getMonth()] + e.getDate() - 1 | 0;\n (w(), B)[r + 28 >>> 2 >>> 0] = i, (w(), B)[r + 36 >>> 2 >>> 0] = -60 * e.getTimezoneOffset(), i = new Date(e.getFullYear(), 6, 1).getTimezoneOffset();\n var s = new Date(e.getFullYear(), 0, 1).getTimezoneOffset();\n e = 0 | (i != s && e.getTimezoneOffset() == Math.min(s, i)), (w(), B)[r + 32 >>> 2 >>> 0] = e;\n }\n function jo(e) {\n e >>>= 0;\n var r = new Date((w(), B)[e + 20 >>> 2 >>> 0] + 1900, (w(), B)[e + 16 >>> 2 >>> 0], (w(), B)[e + 12 >>> 2 >>> 0], (w(), B)[e + 8 >>> 2 >>> 0], (w(), B)[e + 4 >>> 2 >>> 0], (w(), B)[e >>> 2 >>> 0], 0), i = (w(), B)[e + 32 >>> 2 >>> 0], s = r.getTimezoneOffset(), f = new Date(r.getFullYear(), 6, 1).getTimezoneOffset(), p = new Date(r.getFullYear(), 0, 1).getTimezoneOffset(), E = Math.min(p, f);\n return 0 > i ? (w(), B)[e + 32 >>> 2 >>> 0] = +(f != p && E == s) : 0 < i != (E == s) && (f = Math.max(p, f), r.setTime(r.getTime() + 6e4 * ((0 < i ? E : f) - s))), (w(), B)[e + 24 >>> 2 >>> 0] = r.getDay(), i = (kn(r.getFullYear()) ? Wn : Gn)[r.getMonth()] + r.getDate() - 1 | 0, (w(), B)[e + 28 >>> 2 >>> 0] = i, (w(), B)[e >>> 2 >>> 0] = r.getSeconds(), (w(), B)[e + 4 >>> 2 >>> 0] = r.getMinutes(), (w(), B)[e + 8 >>> 2 >>> 0] = r.getHours(), (w(), B)[e + 12 >>> 2 >>> 0] = r.getDate(), (w(), B)[e + 16 >>> 2 >>> 0] = r.getMonth(), (w(), B)[e + 20 >>> 2 >>> 0] = r.getYear(), e = r.getTime(), BigInt(isNaN(e) ? -1 : e / 1e3);\n }\n function $n(e, r, i, s, f, p, E) {\n return o ? L(16, 1, e, r, i, s, f, p, E) : -52;\n }\n function zn(e, r, i, s, f, p) {\n if (o)\n return L(17, 1, e, r, i, s, f, p);\n }\n var Ye = {}, Vo = () => performance.timeOrigin + performance.now();\n function Hn(e, r) {\n if (o)\n return L(18, 1, e, r);\n if (Ye[e] && (clearTimeout(Ye[e].id), delete Ye[e]), !r)\n return 0;\n var i = setTimeout(() => {\n delete Ye[e], Rt(() => or(e, performance.timeOrigin + performance.now()));\n }, r);\n return Ye[e] = { id: i, jc: r }, 0;\n }\n var Ae = (e, r, i) => {\n var s = (w(), ne);\n if (r >>>= 0, 0 < i) {\n var f = r;\n i = r + i - 1;\n for (var p = 0; p < e.length; ++p) {\n var E = e.codePointAt(p);\n if (127 >= E) {\n if (r >= i)\n break;\n s[r++ >>> 0] = E;\n } else if (2047 >= E) {\n if (r + 1 >= i)\n break;\n s[r++ >>> 0] = 192 | E >> 6, s[r++ >>> 0] = 128 | 63 & E;\n } else if (65535 >= E) {\n if (r + 2 >= i)\n break;\n s[r++ >>> 0] = 224 | E >> 12, s[r++ >>> 0] = 128 | E >> 6 & 63, s[r++ >>> 0] = 128 | 63 & E;\n } else {\n if (r + 3 >= i)\n break;\n s[r++ >>> 0] = 240 | E >> 18, s[r++ >>> 0] = 128 | E >> 12 & 63, s[r++ >>> 0] = 128 | E >> 6 & 63, s[r++ >>> 0] = 128 | 63 & E, p++;\n }\n }\n s[r >>> 0] = 0, e = r - f;\n } else\n e = 0;\n return e;\n };\n function Yo(e, r, i, s) {\n e >>>= 0, r >>>= 0, i >>>= 0, s >>>= 0;\n var f = (/* @__PURE__ */ new Date()).getFullYear(), p = new Date(f, 0, 1).getTimezoneOffset();\n f = new Date(f, 6, 1).getTimezoneOffset();\n var E = Math.max(p, f);\n (w(), W)[e >>> 2 >>> 0] = 60 * E, (w(), B)[r >>> 2 >>> 0] = +(p != f), e = (r = (S) => {\n var x = Math.abs(S);\n return `UTC${0 <= S ? "-" : "+"}${String(Math.floor(x / 60)).padStart(2, "0")}${String(x % 60).padStart(2, "0")}`;\n })(p), r = r(f), f < p ? (Ae(e, i, 17), Ae(r, s, 17)) : (Ae(e, s, 17), Ae(r, i, 17));\n }\n var Jo = () => Date.now(), qo = 1;\n function Xo(e, r, i) {\n if (i >>>= 0, !(0 <= e && 3 >= e))\n return 28;\n if (e === 0)\n e = Date.now();\n else {\n if (!qo)\n return 52;\n e = performance.timeOrigin + performance.now();\n }\n return e = Math.round(1e6 * e), (w(), A)[i >>> 3 >>> 0] = BigInt(e), 0;\n }\n var kt = [];\n function Qo(e, r, i) {\n e >>>= 0, r >>>= 0, i >>>= 0, kt.length = 0;\n for (var s; s = (w(), ne)[r++ >>> 0]; ) {\n var f = s != 105;\n i += (f &= s != 112) && i % 8 ? 4 : 0, kt.push(s == 112 ? (w(), W)[i >>> 2 >>> 0] : s == 106 ? (w(), A)[i >>> 3 >>> 0] : s == 105 ? (w(), B)[i >>> 2 >>> 0] : (w(), me)[i >>> 3 >>> 0]), i += f ? 8 : 4;\n }\n return lr[e](...kt);\n }\n var Zo = () => {\n };\n function Ko(e, r) {\n return F(Ct(e >>> 0, r >>> 0));\n }\n var ea = () => {\n throw se += 1, "unwind";\n };\n function ta() {\n return 4294901760;\n }\n var na = () => navigator.hardwareConcurrency, Ie = {}, Wt = (e) => {\n for (var r = 0, i = 0; i < e.length; ++i) {\n var s = e.charCodeAt(i);\n 127 >= s ? r++ : 2047 >= s ? r += 2 : 55296 <= s && 57343 >= s ? (r += 4, ++i) : r += 3;\n }\n return r;\n }, ot = (e) => {\n var r;\n return (r = /\\bwasm-function\\[\\d+\\]:(0x[0-9a-f]+)/.exec(e)) ? +r[1] : (r = /:(\\d+):\\d+(?:\\)|$)/.exec(e)) ? 2147483648 | +r[1] : 0;\n }, jn = (e) => {\n for (var r of e)\n (e = ot(r)) && (Ie[e] = r);\n };\n function ra() {\n var e = Error().stack.toString().split(`\n`);\n return e[0] == "Error" && e.shift(), jn(e), Ie.Vb = ot(e[3]), Ie.$b = e, Ie.Vb;\n }\n function at(e) {\n if (!(e = Ie[e >>> 0]))\n return 0;\n var r;\n if (r = /^\\s+at .*\\.wasm\\.(.*) \\(.*\\)$/.exec(e))\n e = r[1];\n else if (r = /^\\s+at (.*) \\(.*\\)$/.exec(e))\n e = r[1];\n else {\n if (!(r = /^(.+?)@/.exec(e)))\n return 0;\n e = r[1];\n }\n Kn(at.Wb ?? 0), r = Wt(e) + 1;\n var i = er(r);\n return i && Ae(e, i, r), at.Wb = i, at.Wb;\n }\n function oa(e) {\n e >>>= 0;\n var r = (w(), ne).length;\n if (e <= r || 4294901760 < e)\n return false;\n for (var i = 1; 4 >= i; i *= 2) {\n var s = r * (1 + 0.2 / i);\n s = Math.min(s, e + 100663296);\n e: {\n s = (Math.min(4294901760, 65536 * Math.ceil(Math.max(e, s) / 65536)) - ge.buffer.byteLength + 65535) / 65536 | 0;\n try {\n ge.grow(s), ee();\n var f = 1;\n break e;\n } catch {\n }\n f = void 0;\n }\n if (f)\n return true;\n }\n return false;\n }\n function aa(e, r, i) {\n if (e >>>= 0, r >>>= 0, Ie.Vb == e)\n var s = Ie.$b;\n else\n (s = Error().stack.toString().split(`\n`))[0] == "Error" && s.shift(), jn(s);\n for (var f = 3; s[f] && ot(s[f]) != e; )\n ++f;\n for (e = 0; e < i && s[e + f]; ++e)\n (w(), B)[r + 4 * e >>> 2 >>> 0] = ot(s[e + f]);\n return e;\n }\n var Gt, $t = {}, Vn = () => {\n if (!Gt) {\n var e, r = { USER: "web_user", LOGNAME: "web_user", PATH: "/", PWD: "/", HOME: "/home/web_user", LANG: (globalThis.navigator?.language ?? "C").replace("-", "_") + ".UTF-8", _: "./this.program" };\n for (e in $t)\n $t[e] === void 0 ? delete r[e] : r[e] = $t[e];\n var i = [];\n for (e in r)\n i.push(`${e}=${r[e]}`);\n Gt = i;\n }\n return Gt;\n };\n function Yn(e, r) {\n if (o)\n return L(19, 1, e, r);\n e >>>= 0, r >>>= 0;\n var i, s = 0, f = 0;\n for (i of Vn()) {\n var p = r + s;\n (w(), W)[e + f >>> 2 >>> 0] = p, s += Ae(i, p, 1 / 0) + 1, f += 4;\n }\n return 0;\n }\n function Jn(e, r) {\n if (o)\n return L(20, 1, e, r);\n e >>>= 0, r >>>= 0;\n var i = Vn();\n for (var s of ((w(), W)[e >>> 2 >>> 0] = i.length, e = 0, i))\n e += Wt(s) + 1;\n return (w(), W)[r >>> 2 >>> 0] = e, 0;\n }\n function qn(e) {\n return o ? L(21, 1, e) : 52;\n }\n function Xn(e, r, i, s) {\n return o ? L(22, 1, e, r, i, s) : 52;\n }\n function Qn(e, r, i, s) {\n return o ? L(23, 1, e, r, i, s) : 70;\n }\n var sa = [null, [], []];\n function Zn(e, r, i, s) {\n if (o)\n return L(24, 1, e, r, i, s);\n r >>>= 0, i >>>= 0, s >>>= 0;\n for (var f = 0, p = 0; p < i; p++) {\n var E = (w(), W)[r >>> 2 >>> 0], S = (w(), W)[r + 4 >>> 2 >>> 0];\n r += 8;\n for (var x = 0; x < S; x++) {\n var R = e, X = (w(), ne)[E + x >>> 0], le = sa[R];\n X === 0 || X === 10 ? ((R === 1 ? O : F)(An(le)), le.length = 0) : le.push(X);\n }\n f += S;\n }\n return (w(), W)[s >>> 2 >>> 0] = f, 0;\n }\n function ia(e) {\n return e >>> 0;\n }\n o || function() {\n for (var e = t.numThreads - 1; e--; )\n yn();\n Ve.push(async () => {\n var r = async function() {\n if (!o)\n return Promise.all(ce.map(bn));\n }();\n Re++, await r, --Re == 0 && te && (r = te, te = null, r());\n });\n }(), o || (ge = new WebAssembly.Memory({ initial: 256, maximum: 65536, shared: true }), ee()), t.wasmBinary && (g = t.wasmBinary), t.stackSave = () => U(), t.stackRestore = (e) => P(e), t.stackAlloc = (e) => jt(e), t.setValue = function(e, r, i = "i8") {\n switch (i.endsWith("*") && (i = "*"), i) {\n case "i1":\n case "i8":\n (w(), j)[e >>> 0] = r;\n break;\n case "i16":\n (w(), pe)[e >>> 1 >>> 0] = r;\n break;\n case "i32":\n (w(), B)[e >>> 2 >>> 0] = r;\n break;\n case "i64":\n (w(), A)[e >>> 3 >>> 0] = BigInt(r);\n break;\n case "float":\n (w(), re)[e >>> 2 >>> 0] = r;\n break;\n case "double":\n (w(), me)[e >>> 3 >>> 0] = r;\n break;\n case "*":\n (w(), W)[e >>> 2 >>> 0] = r;\n break;\n default:\n H(`invalid type for setValue: ${i}`);\n }\n }, t.getValue = function(e, r = "i8") {\n switch (r.endsWith("*") && (r = "*"), r) {\n case "i1":\n case "i8":\n return (w(), j)[e >>> 0];\n case "i16":\n return (w(), pe)[e >>> 1 >>> 0];\n case "i32":\n return (w(), B)[e >>> 2 >>> 0];\n case "i64":\n return (w(), A)[e >>> 3 >>> 0];\n case "float":\n return (w(), re)[e >>> 2 >>> 0];\n case "double":\n return (w(), me)[e >>> 3 >>> 0];\n case "*":\n return (w(), W)[e >>> 2 >>> 0];\n default:\n H(`invalid type for getValue: ${r}`);\n }\n }, t.UTF8ToString = Ct, t.stringToUTF8 = Ae, t.lengthBytesUTF8 = Wt;\n var st, Kn, er, zt, tr, nr, rr, Ht, or, ar, M, Je, sr, P, jt, U, ir, Vt, ur, fr, cr, Ee, ua = [V, fe, Sn, In, Bn, Ln, _n, Pn, Dn, Un, xn, Mn, Cn, Rn, Fn, Nn, $n, zn, Hn, Yn, Jn, qn, Xn, Qn, Zn], lr = { 930988: (e, r, i, s, f) => {\n if (t === void 0 || !t.Rb)\n return 1;\n if ((e = Ct(Number(e >>> 0))).startsWith("./") && (e = e.substring(2)), !(e = t.Rb.get(e)))\n return 2;\n if (r = Number(r >>> 0), i = Number(i >>> 0), s = Number(s >>> 0), r + i > e.byteLength)\n return 3;\n try {\n let p = e.subarray(r, r + i);\n switch (f) {\n case 0:\n (w(), ne).set(p, s >>> 0);\n break;\n case 1:\n t.fc ? t.fc(s, p) : t.ic(s, p);\n break;\n default:\n return 4;\n }\n return 0;\n } catch {\n return 4;\n }\n }, 931812: () => typeof wasmOffsetConverter < "u" };\n function fa() {\n return typeof wasmOffsetConverter < "u";\n }\n function ca(e, r, i, s) {\n var f = U();\n try {\n return C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function la(e, r, i) {\n var s = U();\n try {\n return C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n M(1, 0);\n }\n }\n function da(e) {\n var r = U();\n try {\n C(e)();\n } catch (i) {\n if (P(r), i !== i + 0)\n throw i;\n M(1, 0);\n }\n }\n function pa(e, r) {\n var i = U();\n try {\n return C(e)(r);\n } catch (s) {\n if (P(i), s !== s + 0)\n throw s;\n M(1, 0);\n }\n }\n function ma(e, r, i) {\n var s = U();\n try {\n C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n M(1, 0);\n }\n }\n function ha(e, r) {\n var i = U();\n try {\n C(e)(r);\n } catch (s) {\n if (P(i), s !== s + 0)\n throw s;\n M(1, 0);\n }\n }\n function wa(e, r, i, s, f, p, E) {\n var S = U();\n try {\n return C(e)(r, i, s, f, p, E);\n } catch (x) {\n if (P(S), x !== x + 0)\n throw x;\n M(1, 0);\n }\n }\n function ba(e, r, i, s, f, p) {\n var E = U();\n try {\n C(e)(r, i, s, f, p);\n } catch (S) {\n if (P(E), S !== S + 0)\n throw S;\n M(1, 0);\n }\n }\n function ya(e, r, i, s) {\n var f = U();\n try {\n C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function ga(e, r, i, s, f) {\n var p = U();\n try {\n C(e)(r, i, s, f);\n } catch (E) {\n if (P(p), E !== E + 0)\n throw E;\n M(1, 0);\n }\n }\n function Ea(e, r, i, s, f, p, E) {\n var S = U();\n try {\n C(e)(r, i, s, f, p, E);\n } catch (x) {\n if (P(S), x !== x + 0)\n throw x;\n M(1, 0);\n }\n }\n function Ta(e, r, i, s, f, p, E) {\n var S = U();\n try {\n C(e)(r, i, s, f, p, E);\n } catch (x) {\n if (P(S), x !== x + 0)\n throw x;\n M(1, 0);\n }\n }\n function Sa(e, r, i, s, f, p, E, S) {\n var x = U();\n try {\n C(e)(r, i, s, f, p, E, S);\n } catch (R) {\n if (P(x), R !== R + 0)\n throw R;\n M(1, 0);\n }\n }\n function va(e, r, i, s, f) {\n var p = U();\n try {\n return C(e)(r, i, s, f);\n } catch (E) {\n if (P(p), E !== E + 0)\n throw E;\n M(1, 0);\n }\n }\n function Oa(e, r, i) {\n var s = U();\n try {\n return C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n M(1, 0);\n }\n }\n function Aa(e, r, i, s, f, p, E, S) {\n var x = U();\n try {\n C(e)(r, i, s, f, p, E, S);\n } catch (R) {\n if (P(x), R !== R + 0)\n throw R;\n M(1, 0);\n }\n }\n function Ia(e, r, i, s, f, p, E, S, x, R, X, le) {\n var we = U();\n try {\n C(e)(r, i, s, f, p, E, S, x, R, X, le);\n } catch (be) {\n if (P(we), be !== be + 0)\n throw be;\n M(1, 0);\n }\n }\n function Ba(e, r, i, s, f, p) {\n var E = U();\n try {\n return C(e)(r, i, s, f, p);\n } catch (S) {\n if (P(E), S !== S + 0)\n throw S;\n M(1, 0);\n }\n }\n function La(e, r, i) {\n var s = U();\n try {\n return C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n return M(1, 0), 0n;\n }\n }\n function _a(e, r, i, s, f, p, E, S, x) {\n var R = U();\n try {\n C(e)(r, i, s, f, p, E, S, x);\n } catch (X) {\n if (P(R), X !== X + 0)\n throw X;\n M(1, 0);\n }\n }\n function Pa(e) {\n var r = U();\n try {\n return C(e)();\n } catch (i) {\n if (P(r), i !== i + 0)\n throw i;\n M(1, 0);\n }\n }\n function Da(e, r) {\n var i = U();\n try {\n return C(e)(r);\n } catch (s) {\n if (P(i), s !== s + 0)\n throw s;\n return M(1, 0), 0n;\n }\n }\n function Ua(e) {\n var r = U();\n try {\n return C(e)();\n } catch (i) {\n if (P(r), i !== i + 0)\n throw i;\n return M(1, 0), 0n;\n }\n }\n function xa(e, r, i, s) {\n var f = U();\n try {\n return C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function Ma(e, r, i, s, f) {\n var p = U();\n try {\n return C(e)(r, i, s, f);\n } catch (E) {\n if (P(p), E !== E + 0)\n throw E;\n M(1, 0);\n }\n }\n function Ca(e, r, i, s, f, p) {\n var E = U();\n try {\n return C(e)(r, i, s, f, p);\n } catch (S) {\n if (P(E), S !== S + 0)\n throw S;\n M(1, 0);\n }\n }\n function Ra(e, r, i, s, f, p) {\n var E = U();\n try {\n return C(e)(r, i, s, f, p);\n } catch (S) {\n if (P(E), S !== S + 0)\n throw S;\n M(1, 0);\n }\n }\n function Fa(e, r, i, s, f, p, E, S) {\n var x = U();\n try {\n return C(e)(r, i, s, f, p, E, S);\n } catch (R) {\n if (P(x), R !== R + 0)\n throw R;\n M(1, 0);\n }\n }\n function Na(e, r, i, s, f) {\n var p = U();\n try {\n return C(e)(r, i, s, f);\n } catch (E) {\n if (P(p), E !== E + 0)\n throw E;\n return M(1, 0), 0n;\n }\n }\n function ka(e, r, i, s) {\n var f = U();\n try {\n return C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function Wa(e, r, i, s) {\n var f = U();\n try {\n return C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function Ga(e, r, i, s, f, p, E, S, x, R, X, le) {\n var we = U();\n try {\n return C(e)(r, i, s, f, p, E, S, x, R, X, le);\n } catch (be) {\n if (P(we), be !== be + 0)\n throw be;\n M(1, 0);\n }\n }\n function $a(e, r, i, s, f, p, E, S, x, R, X) {\n var le = U();\n try {\n C(e)(r, i, s, f, p, E, S, x, R, X);\n } catch (we) {\n if (P(le), we !== we + 0)\n throw we;\n M(1, 0);\n }\n }\n function za(e, r, i, s, f, p, E, S, x, R, X, le, we, be, Ya, Ja) {\n var qa = U();\n try {\n C(e)(r, i, s, f, p, E, S, x, R, X, le, we, be, Ya, Ja);\n } catch (Yt) {\n if (P(qa), Yt !== Yt + 0)\n throw Yt;\n M(1, 0);\n }\n }\n function Ha(e, r, i) {\n var s = U();\n try {\n return C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n M(1, 0);\n }\n }\n function ja(e, r, i) {\n var s = U();\n try {\n return C(e)(r, i);\n } catch (f) {\n if (P(s), f !== f + 0)\n throw f;\n M(1, 0);\n }\n }\n function Va(e, r, i, s) {\n var f = U();\n try {\n C(e)(r, i, s);\n } catch (p) {\n if (P(f), p !== p + 0)\n throw p;\n M(1, 0);\n }\n }\n function it() {\n if (0 < Re)\n te = it;\n else if (o)\n T?.(t), he();\n else {\n for (var e = Ve; 0 < e.length; )\n e.shift()(t);\n 0 < Re ? te = it : (t.calledRun = true, _ || (he(), T?.(t)));\n }\n }\n return o || (Ee = await Ut(), it()), t.PTR_SIZE = 4, je ? t : new Promise((e, r) => {\n T = e, I = r;\n });\n }\n var rs;\n var os;\n var Jr = N(() => {\n "use strict";\n rs = Vr, os = globalThis.self?.name?.startsWith("em-pthread");\n os && Vr();\n });\n var Qr;\n var an;\n var as;\n var oe;\n var Zr;\n var on;\n var ss;\n var is;\n var Kr;\n var us;\n var qr;\n var eo;\n var Xr;\n var to;\n var pt = N(() => {\n "use strict";\n dt();\n Qr = typeof location > "u" ? void 0 : location.origin, an = import_meta.url > "file:" && import_meta.url < "file;", as = () => {\n if (true) {\n if (an) {\n let n = URL;\n return new URL(new n("ort.wasm.bundle.min.mjs", import_meta.url).href, Qr).href;\n }\n return import_meta.url;\n }\n }, oe = as(), Zr = () => {\n if (oe && !oe.startsWith("blob:"))\n return oe.substring(0, oe.lastIndexOf("/") + 1);\n }, on = (n, t) => {\n try {\n let a = t ?? oe;\n return (a ? new URL(n, a) : new URL(n)).origin === Qr;\n } catch {\n return false;\n }\n }, ss = (n, t) => {\n let a = t ?? oe;\n try {\n return (a ? new URL(n, a) : new URL(n)).href;\n } catch {\n return;\n }\n }, is = (n, t) => `${t ?? "./"}${n}`, Kr = async (n) => {\n let a = await (await fetch(n, { credentials: "same-origin" })).blob();\n return URL.createObjectURL(a);\n }, us = async (n) => (await import(\n /*webpackIgnore:true*/\n /*@vite-ignore*/\n n\n )).default, qr = (jr(), Xt(Hr)).default, eo = async () => {\n if (!oe)\n throw new Error("Failed to load proxy worker: cannot determine the script source URL.");\n if (on(oe))\n return [void 0, qr()];\n let n = await Kr(oe);\n return [n, qr(n)];\n }, Xr = (Jr(), Xt(Yr)).default, to = async (n, t, a, u) => {\n let o = Xr && !(n || t);\n if (o)\n if (oe)\n o = on(oe) || u && !a;\n else if (u && !a)\n o = true;\n else\n throw new Error("cannot determine the script source URL.");\n if (o)\n return [void 0, Xr];\n {\n let d = "ort-wasm-simd-threaded.mjs", c = n ?? ss(d, t), l = a && c && !on(c, t), m = l ? await Kr(c) : c ?? is(d, t);\n return [l ? m : void 0, await us(m)];\n }\n };\n });\n var sn;\n var un;\n var St;\n var no;\n var fs;\n var cs;\n var ls;\n var mt;\n var $;\n var xe = N(() => {\n "use strict";\n pt();\n un = false, St = false, no = false, fs = () => {\n if (typeof SharedArrayBuffer > "u")\n return false;\n try {\n 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]));\n } catch {\n return false;\n }\n }, cs = () => {\n try {\n 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]));\n } catch {\n return false;\n }\n }, ls = () => {\n try {\n return WebAssembly.validate(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 19, 1, 17, 0, 65, 1, 253, 15, 65, 2, 253, 15, 65, 3, 253, 15, 253, 147, 2, 11]));\n } catch {\n return false;\n }\n }, mt = async (n) => {\n if (un)\n return Promise.resolve();\n if (St)\n throw new Error("multiple calls to \'initializeWebAssembly()\' detected.");\n if (no)\n throw new Error("previous call to \'initializeWebAssembly()\' failed.");\n St = true;\n let t = n.initTimeout, a = n.numThreads;\n if (n.simd !== false) {\n if (n.simd === "relaxed") {\n if (!ls())\n throw new Error("Relaxed WebAssembly SIMD is not supported in the current environment.");\n } else if (!cs())\n throw new Error("WebAssembly SIMD is not supported in the current environment.");\n }\n let u = fs();\n a > 1 && !u && (typeof self < "u" && !self.crossOriginIsolated && console.warn("env.wasm.numThreads is set to " + a + ", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."), console.warn("WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading."), n.numThreads = a = 1);\n let o = n.wasmPaths, d = typeof o == "string" ? o : void 0, c = o?.mjs, l = c?.href ?? c, m = o?.wasm, h = m?.href ?? m, g = n.wasmBinary, [b, y] = await to(l, d, a > 1, !!g || !!h), T = false, I = [];\n if (t > 0 && I.push(new Promise((D) => {\n setTimeout(() => {\n T = true, D();\n }, t);\n })), I.push(new Promise((D, z) => {\n let v = { numThreads: a };\n if (g)\n v.wasmBinary = g, v.locateFile = (O) => O;\n else if (h || d)\n v.locateFile = (O) => h ?? d + O;\n else if (l && l.indexOf("blob:") !== 0)\n v.locateFile = (O) => new URL(O, l).href;\n else if (b) {\n let O = Zr();\n O && (v.locateFile = (F) => O + F);\n }\n y(v).then((O) => {\n St = false, un = true, sn = O, D(), b && URL.revokeObjectURL(b);\n }, (O) => {\n St = false, no = true, z(O);\n });\n })), await Promise.race(I), T)\n throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`);\n }, $ = () => {\n if (un && sn)\n return sn;\n throw new Error("WebAssembly is not initialized yet.");\n };\n });\n var ae;\n var Ze;\n var G;\n var vt = N(() => {\n "use strict";\n xe();\n ae = (n, t) => {\n let a = $(), u = a.lengthBytesUTF8(n) + 1, o = a._malloc(u);\n return a.stringToUTF8(n, o, u), t.push(o), o;\n }, Ze = (n, t, a, u) => {\n if (typeof n == "object" && n !== null) {\n if (a.has(n))\n throw new Error("Circular reference in options");\n a.add(n);\n }\n Object.entries(n).forEach(([o, d]) => {\n let c = t ? t + o : o;\n if (typeof d == "object")\n Ze(d, c + ".", a, u);\n else if (typeof d == "string" || typeof d == "number")\n u(c, d.toString());\n else if (typeof d == "boolean")\n u(c, d ? "1" : "0");\n else\n throw new Error(`Can\'t handle extra config type: ${typeof d}`);\n });\n }, G = (n) => {\n let t = $(), a = t.stackSave();\n try {\n let u = t.PTR_SIZE, o = t.stackAlloc(2 * u);\n t._OrtGetLastError(o, o + u);\n let d = Number(t.getValue(o, u === 4 ? "i32" : "i64")), c = t.getValue(o + u, "*"), l = c ? t.UTF8ToString(c) : "";\n throw new Error(`${n} ERROR_CODE: ${d}, ERROR_MESSAGE: ${l}`);\n } finally {\n t.stackRestore(a);\n }\n };\n });\n var ro;\n var oo = N(() => {\n "use strict";\n xe();\n vt();\n ro = (n) => {\n let t = $(), a = 0, u = [], o = n || {};\n try {\n if (n?.logSeverityLevel === void 0)\n o.logSeverityLevel = 2;\n else if (typeof n.logSeverityLevel != "number" || !Number.isInteger(n.logSeverityLevel) || n.logSeverityLevel < 0 || n.logSeverityLevel > 4)\n throw new Error(`log severity level is not valid: ${n.logSeverityLevel}`);\n if (n?.logVerbosityLevel === void 0)\n o.logVerbosityLevel = 0;\n else if (typeof n.logVerbosityLevel != "number" || !Number.isInteger(n.logVerbosityLevel))\n throw new Error(`log verbosity level is not valid: ${n.logVerbosityLevel}`);\n n?.terminate === void 0 && (o.terminate = false);\n let d = 0;\n return n?.tag !== void 0 && (d = ae(n.tag, u)), a = t._OrtCreateRunOptions(o.logSeverityLevel, o.logVerbosityLevel, !!o.terminate, d), a === 0 && G("Can\'t create run options."), n?.extra !== void 0 && Ze(n.extra, "", /* @__PURE__ */ new WeakSet(), (c, l) => {\n let m = ae(c, u), h = ae(l, u);\n t._OrtAddRunConfigEntry(a, m, h) !== 0 && G(`Can\'t set a run config entry: ${c} - ${l}.`);\n }), [a, u];\n } catch (d) {\n throw a !== 0 && t._OrtReleaseRunOptions(a), u.forEach((c) => t._free(c)), d;\n }\n };\n });\n var ds;\n var ps;\n var ms;\n var ke;\n var hs;\n var ao;\n var so = N(() => {\n "use strict";\n xe();\n vt();\n ds = (n) => {\n switch (n) {\n case "disabled":\n return 0;\n case "basic":\n return 1;\n case "extended":\n return 2;\n case "layout":\n return 3;\n case "all":\n return 99;\n default:\n throw new Error(`unsupported graph optimization level: ${n}`);\n }\n }, ps = (n) => {\n switch (n) {\n case "sequential":\n return 0;\n case "parallel":\n return 1;\n default:\n throw new Error(`unsupported execution mode: ${n}`);\n }\n }, ms = (n) => {\n n.extra || (n.extra = {}), n.extra.session || (n.extra.session = {});\n let t = n.extra.session;\n t.use_ort_model_bytes_directly || (t.use_ort_model_bytes_directly = "1"), n.executionProviders && n.executionProviders.some((a) => (typeof a == "string" ? a : a.name) === "webgpu") && (n.enableMemPattern = false);\n }, ke = (n, t, a, u) => {\n let o = ae(t, u), d = ae(a, u);\n $()._OrtAddSessionConfigEntry(n, o, d) !== 0 && G(`Can\'t set a session config entry: ${t} - ${a}.`);\n }, hs = async (n, t, a) => {\n let u = t.executionProviders;\n for (let o of u) {\n let d = typeof o == "string" ? o : o.name, c = [];\n switch (d) {\n case "webnn":\n if (d = "WEBNN", ke(n, "session.disable_quant_qdq", "1", a), ke(n, "session.disable_qdq_constant_folding", "1", a), typeof o != "string") {\n let y = o?.deviceType;\n y && ke(n, "deviceType", y, a);\n }\n break;\n case "webgpu":\n if (d = "JS", typeof o != "string") {\n let b = o;\n if (b?.preferredLayout) {\n if (b.preferredLayout !== "NCHW" && b.preferredLayout !== "NHWC")\n throw new Error(`preferredLayout must be either \'NCHW\' or \'NHWC\': ${b.preferredLayout}`);\n ke(n, "preferredLayout", b.preferredLayout, a);\n }\n }\n break;\n case "wasm":\n case "cpu":\n continue;\n default:\n throw new Error(`not supported execution provider: ${d}`);\n }\n let l = ae(d, a), m = c.length, h = 0, g = 0;\n if (m > 0) {\n h = $()._malloc(m * $().PTR_SIZE), a.push(h), g = $()._malloc(m * $().PTR_SIZE), a.push(g);\n for (let b = 0; b < m; b++)\n $().setValue(h + b * $().PTR_SIZE, c[b][0], "*"), $().setValue(g + b * $().PTR_SIZE, c[b][1], "*");\n }\n await $()._OrtAppendExecutionProvider(n, l, h, g, m) !== 0 && G(`Can\'t append execution provider: ${d}.`);\n }\n }, ao = async (n) => {\n let t = $(), a = 0, u = [], o = n || {};\n ms(o);\n try {\n let d = ds(o.graphOptimizationLevel ?? "all"), c = ps(o.executionMode ?? "sequential"), l = typeof o.logId == "string" ? ae(o.logId, u) : 0, m = o.logSeverityLevel ?? 2;\n if (!Number.isInteger(m) || m < 0 || m > 4)\n throw new Error(`log severity level is not valid: ${m}`);\n let h = o.logVerbosityLevel ?? 0;\n if (!Number.isInteger(h) || h < 0 || h > 4)\n throw new Error(`log verbosity level is not valid: ${h}`);\n let g = typeof o.optimizedModelFilePath == "string" ? ae(o.optimizedModelFilePath, u) : 0;\n if (a = t._OrtCreateSessionOptions(d, !!o.enableCpuMemArena, !!o.enableMemPattern, c, !!o.enableProfiling, 0, l, m, h, g), a === 0 && G("Can\'t create session options."), o.executionProviders && await hs(a, o, u), o.enableGraphCapture !== void 0) {\n if (typeof o.enableGraphCapture != "boolean")\n throw new Error(`enableGraphCapture must be a boolean value: ${o.enableGraphCapture}`);\n ke(a, "enableGraphCapture", o.enableGraphCapture.toString(), u);\n }\n if (o.freeDimensionOverrides)\n for (let [b, y] of Object.entries(o.freeDimensionOverrides)) {\n if (typeof b != "string")\n throw new Error(`free dimension override name must be a string: ${b}`);\n if (typeof y != "number" || !Number.isInteger(y) || y < 0)\n throw new Error(`free dimension override value must be a non-negative integer: ${y}`);\n let T = ae(b, u);\n t._OrtAddFreeDimensionOverride(a, T, y) !== 0 && G(`Can\'t set a free dimension override: ${b} - ${y}.`);\n }\n return o.extra !== void 0 && Ze(o.extra, "", /* @__PURE__ */ new WeakSet(), (b, y) => {\n ke(a, b, y, u);\n }), [a, u];\n } catch (d) {\n throw a !== 0 && t._OrtReleaseSessionOptions(a) !== 0 && G("Can\'t release session options."), u.forEach((c) => t._free(c)), d;\n }\n };\n });\n var We;\n var Ot;\n var Ge;\n var io;\n var uo;\n var At;\n var It;\n var fo;\n var fn = N(() => {\n "use strict";\n We = (n) => {\n switch (n) {\n case "int8":\n return 3;\n case "uint8":\n return 2;\n case "bool":\n return 9;\n case "int16":\n return 5;\n case "uint16":\n return 4;\n case "int32":\n return 6;\n case "uint32":\n return 12;\n case "float16":\n return 10;\n case "float32":\n return 1;\n case "float64":\n return 11;\n case "string":\n return 8;\n case "int64":\n return 7;\n case "uint64":\n return 13;\n case "int4":\n return 22;\n case "uint4":\n return 21;\n default:\n throw new Error(`unsupported data type: ${n}`);\n }\n }, Ot = (n) => {\n switch (n) {\n case 3:\n return "int8";\n case 2:\n return "uint8";\n case 9:\n return "bool";\n case 5:\n return "int16";\n case 4:\n return "uint16";\n case 6:\n return "int32";\n case 12:\n return "uint32";\n case 10:\n return "float16";\n case 1:\n return "float32";\n case 11:\n return "float64";\n case 8:\n return "string";\n case 7:\n return "int64";\n case 13:\n return "uint64";\n case 22:\n return "int4";\n case 21:\n return "uint4";\n default:\n throw new Error(`unsupported data type: ${n}`);\n }\n }, Ge = (n, t) => {\n let a = [-1, 4, 1, 1, 2, 2, 4, 8, -1, 1, 2, 8, 4, 8, -1, -1, -1, -1, -1, -1, -1, 0.5, 0.5][n], u = typeof t == "number" ? t : t.reduce((o, d) => o * d, 1);\n return a > 0 ? Math.ceil(u * a) : void 0;\n }, io = (n) => {\n switch (n) {\n case "float16":\n return typeof Float16Array < "u" && Float16Array.from ? Float16Array : Uint16Array;\n case "float32":\n return Float32Array;\n case "uint8":\n return Uint8Array;\n case "int8":\n return Int8Array;\n case "uint16":\n return Uint16Array;\n case "int16":\n return Int16Array;\n case "int32":\n return Int32Array;\n case "bool":\n return Uint8Array;\n case "float64":\n return Float64Array;\n case "uint32":\n return Uint32Array;\n case "int64":\n return BigInt64Array;\n case "uint64":\n return BigUint64Array;\n default:\n throw new Error(`unsupported type: ${n}`);\n }\n }, uo = (n) => {\n switch (n) {\n case "verbose":\n return 0;\n case "info":\n return 1;\n case "warning":\n return 2;\n case "error":\n return 3;\n case "fatal":\n return 4;\n default:\n throw new Error(`unsupported logging level: ${n}`);\n }\n }, At = (n) => n === "float32" || n === "float16" || n === "int32" || n === "int64" || n === "uint32" || n === "uint8" || n === "bool" || n === "uint4" || n === "int4", It = (n) => n === "float32" || n === "float16" || n === "int32" || n === "int64" || n === "uint32" || n === "uint64" || n === "int8" || n === "uint8" || n === "bool" || n === "uint4" || n === "int4", fo = (n) => {\n switch (n) {\n case "none":\n return 0;\n case "cpu":\n return 1;\n case "cpu-pinned":\n return 2;\n case "texture":\n return 3;\n case "gpu-buffer":\n return 4;\n case "ml-tensor":\n return 5;\n default:\n throw new Error(`unsupported data location: ${n}`);\n }\n };\n });\n var Ke;\n var cn = N(() => {\n "use strict";\n dt();\n Ke = async (n) => {\n if (typeof n == "string")\n if (false)\n try {\n let { readFile: t } = qt("node:fs/promises");\n return new Uint8Array(await t(n));\n } catch (t) {\n if (t.code === "ERR_FS_FILE_TOO_LARGE") {\n let { createReadStream: a } = qt("node:fs"), u = a(n), o = [];\n for await (let d of u)\n o.push(d);\n return new Uint8Array(Buffer.concat(o));\n }\n throw t;\n }\n else {\n let t = await fetch(n);\n if (!t.ok)\n throw new Error(`failed to load external data file: ${n}`);\n let a = t.headers.get("Content-Length"), u = a ? parseInt(a, 10) : 0;\n if (u < 1073741824)\n return new Uint8Array(await t.arrayBuffer());\n {\n if (!t.body)\n throw new Error(`failed to load external data file: ${n}, no response body.`);\n let o = t.body.getReader(), d;\n try {\n d = new ArrayBuffer(u);\n } catch (l) {\n if (l instanceof RangeError) {\n let m = Math.ceil(u / 65536);\n d = new WebAssembly.Memory({ initial: m, maximum: m }).buffer;\n } else\n throw l;\n }\n let c = 0;\n for (; ; ) {\n let { done: l, value: m } = await o.read();\n if (l)\n break;\n let h = m.byteLength;\n new Uint8Array(d, c, h).set(m), c += h;\n }\n return new Uint8Array(d, 0, u);\n }\n }\n else\n return n instanceof Blob ? new Uint8Array(await n.arrayBuffer()) : n instanceof Uint8Array ? n : new Uint8Array(n);\n };\n });\n var ws;\n var ht;\n var wt;\n var $e;\n var bs;\n var co;\n var Qe;\n var bt;\n var yt;\n var lo;\n var gt;\n var Et;\n var Tt;\n var rn = N(() => {\n "use strict";\n Te();\n oo();\n so();\n fn();\n xe();\n vt();\n cn();\n ws = (n, t) => {\n $()._OrtInit(n, t) !== 0 && G("Can\'t initialize onnxruntime.");\n }, ht = async (n) => {\n ws(n.wasm.numThreads, uo(n.logLevel));\n }, wt = async (n, t) => {\n $().asyncInit?.();\n let a = n.webgpu.adapter;\n if (t === "webgpu") {\n if (typeof navigator > "u" || !navigator.gpu)\n throw new Error("WebGPU is not supported in current environment");\n if (a) {\n if (typeof a.limits != "object" || typeof a.features != "object" || typeof a.requestDevice != "function")\n throw new Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.");\n } else {\n let u = n.webgpu.powerPreference;\n if (u !== void 0 && u !== "low-power" && u !== "high-performance")\n throw new Error(`Invalid powerPreference setting: "${u}"`);\n let o = n.webgpu.forceFallbackAdapter;\n if (o !== void 0 && typeof o != "boolean")\n throw new Error(`Invalid forceFallbackAdapter setting: "${o}"`);\n if (a = await navigator.gpu.requestAdapter({ powerPreference: u, forceFallbackAdapter: o }), !a)\n throw new Error(\'Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.\');\n }\n }\n if (t === "webnn" && (typeof navigator > "u" || !navigator.ml))\n throw new Error("WebNN is not supported in current environment");\n }, $e = /* @__PURE__ */ new Map(), bs = (n) => {\n let t = $(), a = t.stackSave();\n try {\n let u = t.PTR_SIZE, o = t.stackAlloc(2 * u);\n t._OrtGetInputOutputCount(n, o, o + u) !== 0 && G("Can\'t get session input/output count.");\n let c = u === 4 ? "i32" : "i64";\n return [Number(t.getValue(o, c)), Number(t.getValue(o + u, c))];\n } finally {\n t.stackRestore(a);\n }\n }, co = (n, t) => {\n let a = $(), u = a.stackSave(), o = 0;\n try {\n let d = a.PTR_SIZE, c = a.stackAlloc(2 * d);\n a._OrtGetInputOutputMetadata(n, t, c, c + d) !== 0 && G("Can\'t get session input/output metadata.");\n let m = Number(a.getValue(c, "*"));\n o = Number(a.getValue(c + d, "*"));\n let h = a.HEAP32[o / 4];\n if (h === 0)\n return [m, 0];\n let g = a.HEAPU32[o / 4 + 1], b = [];\n for (let y = 0; y < g; y++) {\n let T = Number(a.getValue(o + 8 + y * d, "*"));\n b.push(T !== 0 ? a.UTF8ToString(T) : Number(a.getValue(o + 8 + (y + g) * d, "*")));\n }\n return [m, h, b];\n } finally {\n a.stackRestore(u), o !== 0 && a._OrtFree(o);\n }\n }, Qe = (n) => {\n let t = $(), a = t._malloc(n.byteLength);\n if (a === 0)\n throw new Error(`Can\'t create a session. failed to allocate a buffer of size ${n.byteLength}.`);\n return t.HEAPU8.set(n, a), [a, n.byteLength];\n }, bt = async (n, t) => {\n let a, u, o = $();\n Array.isArray(n) ? [a, u] = n : n.buffer === o.HEAPU8.buffer ? [a, u] = [n.byteOffset, n.byteLength] : [a, u] = Qe(n);\n let d = 0, c = 0, l = 0, m = [], h = [], g = [];\n try {\n if ([c, m] = await ao(t), t?.externalData && o.mountExternalData) {\n let _ = [];\n for (let k of t.externalData) {\n let w = typeof k == "string" ? k : k.path;\n _.push(Ke(typeof k == "string" ? k : k.data).then((Z) => {\n o.mountExternalData(w, Z);\n }));\n }\n await Promise.all(_);\n }\n for (let _ of t?.executionProviders ?? [])\n if ((typeof _ == "string" ? _ : _.name) === "webnn") {\n if (o.shouldTransferToMLTensor = false, typeof _ != "string") {\n let w = _, Z = w?.context, j = w?.gpuDevice, ne = w?.deviceType, pe = w?.powerPreference;\n Z ? o.currentContext = Z : j ? o.currentContext = await o.webnnCreateMLContext(j) : o.currentContext = await o.webnnCreateMLContext({ deviceType: ne, powerPreference: pe });\n } else\n o.currentContext = await o.webnnCreateMLContext();\n break;\n }\n d = await o._OrtCreateSession(a, u, c), o.webgpuOnCreateSession?.(d), d === 0 && G("Can\'t create a session."), o.jsepOnCreateSession?.(), o.currentContext && (o.webnnRegisterMLContext(d, o.currentContext), o.currentContext = void 0, o.shouldTransferToMLTensor = true);\n let [b, y] = bs(d), T = !!t?.enableGraphCapture, I = [], D = [], z = [], v = [], O = [];\n for (let _ = 0; _ < b; _++) {\n let [k, w, Z] = co(d, _);\n k === 0 && G("Can\'t get an input name."), h.push(k);\n let j = o.UTF8ToString(k);\n I.push(j), z.push(w === 0 ? { name: j, isTensor: false } : { name: j, isTensor: true, type: Ot(w), shape: Z });\n }\n for (let _ = 0; _ < y; _++) {\n let [k, w, Z] = co(d, _ + b);\n k === 0 && G("Can\'t get an output name."), g.push(k);\n let j = o.UTF8ToString(k);\n D.push(j), v.push(w === 0 ? { name: j, isTensor: false } : { name: j, isTensor: true, type: Ot(w), shape: Z });\n }\n return $e.set(d, [d, h, g, null, T, false]), [d, I, D, z, v];\n } catch (b) {\n throw h.forEach((y) => o._OrtFree(y)), g.forEach((y) => o._OrtFree(y)), l !== 0 && o._OrtReleaseBinding(l) !== 0 && G("Can\'t release IO binding."), d !== 0 && o._OrtReleaseSession(d) !== 0 && G("Can\'t release session."), b;\n } finally {\n o._free(a), c !== 0 && o._OrtReleaseSessionOptions(c) !== 0 && G("Can\'t release session options."), m.forEach((b) => o._free(b)), o.unmountExternalData?.();\n }\n }, yt = (n) => {\n let t = $(), a = $e.get(n);\n if (!a)\n throw new Error(`cannot release session. invalid session id: ${n}`);\n let [u, o, d, c, l] = a;\n c && (l && t._OrtClearBoundOutputs(c.handle) !== 0 && G("Can\'t clear bound outputs."), t._OrtReleaseBinding(c.handle) !== 0 && G("Can\'t release IO binding.")), t.jsepOnReleaseSession?.(n), t.webnnOnReleaseSession?.(n), t.webgpuOnReleaseSession?.(n), o.forEach((m) => t._OrtFree(m)), d.forEach((m) => t._OrtFree(m)), t._OrtReleaseSession(u) !== 0 && G("Can\'t release session."), $e.delete(n);\n }, lo = async (n, t, a, u, o, d, c = false) => {\n if (!n) {\n t.push(0);\n return;\n }\n let l = $(), m = l.PTR_SIZE, h = n[0], g = n[1], b = n[3], y = b, T, I;\n if (h === "string" && (b === "gpu-buffer" || b === "ml-tensor"))\n throw new Error("String tensor is not supported on GPU.");\n if (c && b !== "gpu-buffer")\n throw new Error(`External buffer must be provided for input/output index ${d} when enableGraphCapture is true.`);\n if (b === "gpu-buffer") {\n let v = n[2].gpuBuffer;\n I = Ge(We(h), g);\n {\n let O = l.jsepRegisterBuffer;\n if (!O)\n throw new Error(\'Tensor location "gpu-buffer" is not supported without using WebGPU.\');\n T = O(u, d, v, I);\n }\n } else if (b === "ml-tensor") {\n let v = n[2].mlTensor;\n I = Ge(We(h), g);\n let O = l.webnnRegisterMLTensor;\n if (!O)\n throw new Error(\'Tensor location "ml-tensor" is not supported without using WebNN.\');\n T = O(u, v, We(h), g);\n } else {\n let v = n[2];\n if (Array.isArray(v)) {\n I = m * v.length, T = l._malloc(I), a.push(T);\n for (let O = 0; O < v.length; O++) {\n if (typeof v[O] != "string")\n throw new TypeError(`tensor data at index ${O} is not a string`);\n l.setValue(T + O * m, ae(v[O], a), "*");\n }\n } else {\n let O = l.webnnIsGraphInput, F = l.webnnIsGraphOutput;\n if (h !== "string" && O && F) {\n let _ = l.UTF8ToString(o);\n if (O(u, _) || F(u, _)) {\n let k = We(h);\n I = Ge(k, g), y = "ml-tensor";\n let w = l.webnnCreateTemporaryTensor, Z = l.webnnUploadTensor;\n if (!w || !Z)\n throw new Error(\'Tensor location "ml-tensor" is not supported without using WebNN.\');\n let j = await w(u, k, g);\n Z(j, new Uint8Array(v.buffer, v.byteOffset, v.byteLength)), T = j;\n } else\n I = v.byteLength, T = l._malloc(I), a.push(T), l.HEAPU8.set(new Uint8Array(v.buffer, v.byteOffset, I), T);\n } else\n I = v.byteLength, T = l._malloc(I), a.push(T), l.HEAPU8.set(new Uint8Array(v.buffer, v.byteOffset, I), T);\n }\n }\n let D = l.stackSave(), z = l.stackAlloc(4 * g.length);\n try {\n g.forEach((O, F) => l.setValue(z + F * m, O, m === 4 ? "i32" : "i64"));\n let v = l._OrtCreateTensor(We(h), T, I, z, g.length, fo(y));\n v === 0 && G(`Can\'t create tensor for input/output. session=${u}, index=${d}.`), t.push(v);\n } finally {\n l.stackRestore(D);\n }\n }, gt = async (n, t, a, u, o, d) => {\n let c = $(), l = c.PTR_SIZE, m = $e.get(n);\n if (!m)\n throw new Error(`cannot run inference. invalid session id: ${n}`);\n let h = m[0], g = m[1], b = m[2], y = m[3], T = m[4], I = m[5], D = t.length, z = u.length, v = 0, O = [], F = [], _ = [], k = [], w = [], Z = c.stackSave(), j = c.stackAlloc(D * l), ne = c.stackAlloc(D * l), pe = c.stackAlloc(z * l), B = c.stackAlloc(z * l);\n try {\n [v, O] = ro(d), De("wasm prepareInputOutputTensor");\n for (let A = 0; A < D; A++)\n await lo(a[A], F, k, n, g[t[A]], t[A], T);\n for (let A = 0; A < z; A++)\n await lo(o[A], _, k, n, b[u[A]], D + u[A], T);\n Ue("wasm prepareInputOutputTensor");\n for (let A = 0; A < D; A++)\n c.setValue(j + A * l, F[A], "*"), c.setValue(ne + A * l, g[t[A]], "*");\n for (let A = 0; A < z; A++)\n c.setValue(pe + A * l, _[A], "*"), c.setValue(B + A * l, b[u[A]], "*");\n c.jsepOnRunStart?.(h), c.webnnOnRunStart?.(h);\n let W;\n W = await c._OrtRun(h, ne, j, D, B, z, pe, v), W !== 0 && G("failed to call OrtRun().");\n let re = [], me = [];\n De("wasm ProcessOutputTensor");\n for (let A = 0; A < z; A++) {\n let K = Number(c.getValue(pe + A * l, "*"));\n if (K === _[A] || w.includes(_[A])) {\n re.push(o[A]), K !== _[A] && c._OrtReleaseTensor(K) !== 0 && G("Can\'t release tensor.");\n continue;\n }\n let je = c.stackSave(), ee = c.stackAlloc(4 * l), he = false, H, q = 0;\n try {\n c._OrtGetTensorData(K, ee, ee + l, ee + 2 * l, ee + 3 * l) !== 0 && G(`Can\'t access output tensor data on index ${A}.`);\n let Se = l === 4 ? "i32" : "i64", ve = Number(c.getValue(ee, Se));\n q = c.getValue(ee + l, "*");\n let Ve = c.getValue(ee + l * 2, "*"), Re = Number(c.getValue(ee + l * 3, Se)), te = [];\n for (let L = 0; L < Re; L++)\n te.push(Number(c.getValue(Ve + L * l, Se)));\n c._OrtFree(Ve) !== 0 && G("Can\'t free memory for tensor dims.");\n let ue = te.reduce((L, V) => L * V, 1);\n H = Ot(ve);\n let se = y?.outputPreferredLocations[u[A]];\n if (H === "string") {\n if (se === "gpu-buffer" || se === "ml-tensor")\n throw new Error("String tensor is not supported on GPU.");\n let L = [];\n for (let V = 0; V < ue; V++) {\n let fe = c.getValue(q + V * l, "*"), ye = c.getValue(q + (V + 1) * l, "*"), ce = V === ue - 1 ? void 0 : ye - fe;\n L.push(c.UTF8ToString(fe, ce));\n }\n re.push([H, te, L, "cpu"]);\n } else if (se === "gpu-buffer" && ue > 0) {\n let L = c.jsepGetBuffer;\n if (!L)\n throw new Error(\'preferredLocation "gpu-buffer" is not supported without using WebGPU.\');\n let V = L(q), fe = Ge(ve, ue);\n if (fe === void 0 || !At(H))\n throw new Error(`Unsupported data type: ${H}`);\n he = true, re.push([H, te, { gpuBuffer: V, download: c.jsepCreateDownloader(V, fe, H), dispose: () => {\n c._OrtReleaseTensor(K) !== 0 && G("Can\'t release tensor.");\n } }, "gpu-buffer"]);\n } else if (se === "ml-tensor" && ue > 0) {\n let L = c.webnnEnsureTensor, V = c.webnnIsGraphInputOutputTypeSupported;\n if (!L || !V)\n throw new Error(\'preferredLocation "ml-tensor" is not supported without using WebNN.\');\n if (Ge(ve, ue) === void 0 || !It(H))\n throw new Error(`Unsupported data type: ${H}`);\n if (!V(n, H, false))\n throw new Error(`preferredLocation "ml-tensor" for ${H} output is not supported by current WebNN Context.`);\n let ye = await L(n, q, ve, te, false);\n he = true, re.push([H, te, { mlTensor: ye, download: c.webnnCreateMLTensorDownloader(q, H), dispose: () => {\n c.webnnReleaseTensorId(q), c._OrtReleaseTensor(K);\n } }, "ml-tensor"]);\n } else if (se === "ml-tensor-cpu-output" && ue > 0) {\n let L = c.webnnCreateMLTensorDownloader(q, H)(), V = re.length;\n he = true, me.push((async () => {\n let fe = [V, await L];\n return c.webnnReleaseTensorId(q), c._OrtReleaseTensor(K), fe;\n })()), re.push([H, te, [], "cpu"]);\n } else {\n let L = io(H), V = new L(ue);\n new Uint8Array(V.buffer, V.byteOffset, V.byteLength).set(c.HEAPU8.subarray(q, q + V.byteLength)), re.push([H, te, V, "cpu"]);\n }\n } finally {\n c.stackRestore(je), H === "string" && q && c._free(q), he || c._OrtReleaseTensor(K);\n }\n }\n y && !T && (c._OrtClearBoundOutputs(y.handle) !== 0 && G("Can\'t clear bound outputs."), $e.set(n, [h, g, b, y, T, false]));\n for (let [A, K] of await Promise.all(me))\n re[A][2] = K;\n return Ue("wasm ProcessOutputTensor"), re;\n } finally {\n c.webnnOnRunEnd?.(h), c.stackRestore(Z), F.forEach((W) => c._OrtReleaseTensor(W)), _.forEach((W) => c._OrtReleaseTensor(W)), k.forEach((W) => c._free(W)), v !== 0 && c._OrtReleaseRunOptions(v), O.forEach((W) => c._free(W));\n }\n }, Et = (n) => {\n let t = $(), a = $e.get(n);\n if (!a)\n throw new Error("invalid session id");\n let u = a[0], o = t._OrtEndProfiling(u);\n o === 0 && G("Can\'t get an profile file name."), t._OrtFree(o);\n }, Tt = (n) => {\n let t = [];\n for (let a of n) {\n let u = a[2];\n !Array.isArray(u) && "buffer" in u && t.push(u.buffer);\n }\n return t;\n };\n });\n var Ce;\n var ie;\n var et;\n var Lt;\n var _t;\n var Bt;\n var ln;\n var dn;\n var ze;\n var He;\n var gs;\n var po;\n var mo;\n var ho;\n var wo;\n var bo;\n var yo;\n var go;\n var pn = N(() => {\n "use strict";\n Te();\n rn();\n xe();\n pt();\n Ce = () => !!Y.wasm.proxy && typeof document < "u", et = false, Lt = false, _t = false, dn = /* @__PURE__ */ new Map(), ze = (n, t) => {\n let a = dn.get(n);\n a ? a.push(t) : dn.set(n, [t]);\n }, He = () => {\n if (et || !Lt || _t || !ie)\n throw new Error("worker not ready");\n }, gs = (n) => {\n switch (n.data.type) {\n case "init-wasm":\n et = false, n.data.err ? (_t = true, ln[1](n.data.err)) : (Lt = true, ln[0]()), Bt && (URL.revokeObjectURL(Bt), Bt = void 0);\n break;\n case "init-ep":\n case "copy-from":\n case "create":\n case "release":\n case "run":\n case "end-profiling": {\n let t = dn.get(n.data.type);\n n.data.err ? t.shift()[1](n.data.err) : t.shift()[0](n.data.out);\n break;\n }\n default:\n }\n }, po = async () => {\n if (!Lt) {\n if (et)\n throw new Error("multiple calls to \'initWasm()\' detected.");\n if (_t)\n throw new Error("previous call to \'initWasm()\' failed.");\n if (et = true, Ce())\n return new Promise((n, t) => {\n ie?.terminate(), eo().then(([a, u]) => {\n try {\n ie = u, ie.onerror = (d) => t(d), ie.onmessage = gs, ln = [n, t];\n let o = { type: "init-wasm", in: Y };\n !o.in.wasm.wasmPaths && (a || an) && (o.in.wasm.wasmPaths = { wasm: new URL("ort-wasm-simd-threaded.wasm", import_meta.url).href }), ie.postMessage(o), Bt = a;\n } catch (o) {\n t(o);\n }\n }, t);\n });\n try {\n await mt(Y.wasm), await ht(Y), Lt = true;\n } catch (n) {\n throw _t = true, n;\n } finally {\n et = false;\n }\n }\n }, mo = async (n) => {\n if (Ce())\n return He(), new Promise((t, a) => {\n ze("init-ep", [t, a]);\n let u = { type: "init-ep", in: { epName: n, env: Y } };\n ie.postMessage(u);\n });\n await wt(Y, n);\n }, ho = async (n) => Ce() ? (He(), new Promise((t, a) => {\n ze("copy-from", [t, a]);\n let u = { type: "copy-from", in: { buffer: n } };\n ie.postMessage(u, [n.buffer]);\n })) : Qe(n), wo = async (n, t) => {\n if (Ce()) {\n if (t?.preferredOutputLocation)\n throw new Error(\'session option "preferredOutputLocation" is not supported for proxy.\');\n return He(), new Promise((a, u) => {\n ze("create", [a, u]);\n let o = { type: "create", in: { model: n, options: { ...t } } }, d = [];\n n instanceof Uint8Array && d.push(n.buffer), ie.postMessage(o, d);\n });\n } else\n return bt(n, t);\n }, bo = async (n) => {\n if (Ce())\n return He(), new Promise((t, a) => {\n ze("release", [t, a]);\n let u = { type: "release", in: n };\n ie.postMessage(u);\n });\n yt(n);\n }, yo = async (n, t, a, u, o, d) => {\n if (Ce()) {\n if (a.some((c) => c[3] !== "cpu"))\n throw new Error("input tensor on GPU is not supported for proxy.");\n if (o.some((c) => c))\n throw new Error("pre-allocated output tensor is not supported for proxy.");\n return He(), new Promise((c, l) => {\n ze("run", [c, l]);\n let m = a, h = { type: "run", in: { sessionId: n, inputIndices: t, inputs: m, outputIndices: u, options: d } };\n ie.postMessage(h, Tt(m));\n });\n } else\n return gt(n, t, a, u, o, d);\n }, go = async (n) => {\n if (Ce())\n return He(), new Promise((t, a) => {\n ze("end-profiling", [t, a]);\n let u = { type: "end-profiling", in: n };\n ie.postMessage(u);\n });\n Et(n);\n };\n });\n var Eo;\n var Es;\n var Pt;\n var To = N(() => {\n "use strict";\n Te();\n pn();\n fn();\n dt();\n cn();\n Eo = (n, t) => {\n switch (n.location) {\n case "cpu":\n return [n.type, n.dims, n.data, "cpu"];\n case "gpu-buffer":\n return [n.type, n.dims, { gpuBuffer: n.gpuBuffer }, "gpu-buffer"];\n case "ml-tensor":\n return [n.type, n.dims, { mlTensor: n.mlTensor }, "ml-tensor"];\n default:\n throw new Error(`invalid data location: ${n.location} for ${t()}`);\n }\n }, Es = (n) => {\n switch (n[3]) {\n case "cpu":\n return new de(n[0], n[2], n[1]);\n case "gpu-buffer": {\n let t = n[0];\n if (!At(t))\n throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);\n let { gpuBuffer: a, download: u, dispose: o } = n[2];\n return de.fromGpuBuffer(a, { dataType: t, dims: n[1], download: u, dispose: o });\n }\n case "ml-tensor": {\n let t = n[0];\n if (!It(t))\n throw new Error(`not supported data type: ${t} for deserializing MLTensor tensor`);\n let { mlTensor: a, download: u, dispose: o } = n[2];\n return de.fromMLTensor(a, { dataType: t, dims: n[1], download: u, dispose: o });\n }\n default:\n throw new Error(`invalid data location: ${n[3]}`);\n }\n }, Pt = class {\n async fetchModelAndCopyToWasmMemory(t) {\n return ho(await Ke(t));\n }\n async loadModel(t, a) {\n _e();\n let u;\n typeof t == "string" ? u = await this.fetchModelAndCopyToWasmMemory(t) : u = t, [this.sessionId, this.inputNames, this.outputNames, this.inputMetadata, this.outputMetadata] = await wo(u, a), Pe();\n }\n async dispose() {\n return bo(this.sessionId);\n }\n async run(t, a, u) {\n _e();\n let o = [], d = [];\n Object.entries(t).forEach((y) => {\n let T = y[0], I = y[1], D = this.inputNames.indexOf(T);\n if (D === -1)\n throw new Error(`invalid input \'${T}\'`);\n o.push(I), d.push(D);\n });\n let c = [], l = [];\n Object.entries(a).forEach((y) => {\n let T = y[0], I = y[1], D = this.outputNames.indexOf(T);\n if (D === -1)\n throw new Error(`invalid output \'${T}\'`);\n c.push(I), l.push(D);\n });\n let m = o.map((y, T) => Eo(y, () => `input "${this.inputNames[d[T]]}"`)), h = c.map((y, T) => y ? Eo(y, () => `output "${this.outputNames[l[T]]}"`) : null), g = await yo(this.sessionId, d, m, l, h, u), b = {};\n for (let y = 0; y < g.length; y++)\n b[this.outputNames[l[y]]] = c[y] ?? Es(g[y]);\n return Pe(), b;\n }\n startProfiling() {\n }\n endProfiling() {\n go(this.sessionId);\n }\n };\n });\n var vo = {};\n ut(vo, { OnnxruntimeWebAssemblyBackend: () => Dt, initializeFlags: () => So, wasmBackend: () => Ts });\n var So;\n var Dt;\n var Ts;\n var Oo = N(() => {\n "use strict";\n Te();\n pn();\n To();\n So = () => {\n (typeof Y.wasm.initTimeout != "number" || Y.wasm.initTimeout < 0) && (Y.wasm.initTimeout = 0);\n let n = Y.wasm.simd;\n if (typeof n != "boolean" && n !== void 0 && n !== "fixed" && n !== "relaxed" && (console.warn(`Property "env.wasm.simd" is set to unknown value "${n}". Reset it to \\`false\\` and ignore SIMD feature checking.`), Y.wasm.simd = false), typeof Y.wasm.proxy != "boolean" && (Y.wasm.proxy = false), typeof Y.wasm.trace != "boolean" && (Y.wasm.trace = false), typeof Y.wasm.numThreads != "number" || !Number.isInteger(Y.wasm.numThreads) || Y.wasm.numThreads <= 0)\n if (typeof self < "u" && !self.crossOriginIsolated)\n Y.wasm.numThreads = 1;\n else {\n let t = typeof navigator > "u" ? qt("node:os").cpus().length : navigator.hardwareConcurrency;\n Y.wasm.numThreads = Math.min(4, Math.ceil((t || 1) / 2));\n }\n }, Dt = class {\n async init(t) {\n So(), await po(), await mo(t);\n }\n async createInferenceSessionHandler(t, a) {\n let u = new Pt();\n return await u.loadModel(t, a), u;\n }\n }, Ts = new Dt();\n });\n Te();\n Te();\n Te();\n var Gr = "1.26.0";\n {\n let n = (Oo(), Xt(vo)).wasmBackend;\n qe("cpu", n, 10), qe("wasm", n, 10);\n }\n Object.defineProperty(Y.versions, "web", { value: Gr, enumerable: true });\n\n // src/utils/Utils.ts\n function getFileName(url) {\n return url.split(/[?#]/)[0].split("/").pop() || url;\n }\n\n // src/utils/ModelLoader.ts\n async function downloadModelFile(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`model ${getFileName(url)} loading failed with status ${response.status}`);\n }\n return new Uint8Array(await response.arrayBuffer());\n }\n function postModelReady(model, duration) {\n self.postMessage({\n type: "model_ready" /* MODEL_READY */,\n model,\n duration\n });\n }\n\n // src/workers/VadOnnxWorker.ts\n var CHUNK_SIZE = 320;\n var MODEL_EXTERNAL_DATA_PATH = "bcresnet_no_center_mult2_20ms.onnx.data";\n var STATE_INPUT_DIMS_PBTXT = {\n audio_input_state: [800],\n input_states_0: [1, 4, 43],\n input_states_1: [16, 2, 1],\n input_states_2: [16, 2, 1],\n input_states_3: [24, 4, 1],\n input_states_4: [24, 4, 1],\n input_states_5: [32, 8, 1],\n input_states_6: [32, 8, 1],\n input_states_7: [32, 8, 1],\n input_states_8: [32, 8, 1],\n input_states_9: [40, 16, 1],\n input_states_10: [40, 16, 1],\n input_states_11: [40, 16, 1],\n input_states_12: [40, 16, 1],\n input_states_13: [40, 4, 5],\n input_states_14: [64, 30, 1]\n };\n var BATCH_SIZE = 1;\n var STATE_INPUT_DIMS = Object.fromEntries(\n Object.entries(STATE_INPUT_DIMS_PBTXT).map(([name, dims]) => [\n name,\n [BATCH_SIZE, ...dims]\n ])\n );\n var STATE_OUTPUT_TO_INPUT = {\n audio_output_state: "audio_input_state",\n output_states_0: "input_states_0",\n output_states_1: "input_states_1",\n output_states_2: "input_states_2",\n output_states_3: "input_states_3",\n output_states_4: "input_states_4",\n output_states_5: "input_states_5",\n output_states_6: "input_states_6",\n output_states_7: "input_states_7",\n output_states_8: "input_states_8",\n output_states_9: "input_states_9",\n output_states_10: "input_states_10",\n output_states_11: "input_states_11",\n output_states_12: "input_states_12",\n output_states_13: "input_states_13",\n output_states_14: "input_states_14"\n };\n var VadOnnxWorker_default = (modelUrl, modelDataUrl, ortWasmUrl, ortMjsUrl) => {\n let session = null;\n let state = null;\n let buffer = new Float32Array(0);\n let draining = false;\n let feeds = {};\n let stateKeys = [];\n const model = getFileName(modelUrl);\n function postError(error) {\n self.postMessage({\n type: "error" /* ERROR */,\n error: error instanceof Error ? error.message : String(error),\n model\n });\n }\n async function init() {\n Y.wasm.wasmPaths = { wasm: ortWasmUrl, mjs: ortMjsUrl };\n Y.wasm.numThreads = 1;\n const startedAt = performance.now();\n const [modelBytes, dataBytes] = await Promise.all([\n downloadModelFile(modelUrl),\n downloadModelFile(modelDataUrl)\n ]);\n const duration = performance.now() - startedAt;\n session = await ts.create(modelBytes, {\n executionProviders: ["wasm"],\n externalData: [\n {\n path: MODEL_EXTERNAL_DATA_PATH,\n data: dataBytes\n }\n ]\n });\n state = createZeroStateTensors(session, de);\n stateKeys = Object.keys(state);\n feeds = { audio: void 0 };\n for (const name of stateKeys) {\n feeds[name] = state[name];\n }\n postModelReady(model, duration);\n }\n function appendBuffer(chunk) {\n const next = new Float32Array(buffer.length + chunk.length);\n next.set(buffer, 0);\n next.set(chunk, buffer.length);\n buffer = next;\n }\n async function drainBuffer() {\n if (draining) {\n return;\n }\n draining = true;\n try {\n while (buffer.length >= CHUNK_SIZE) {\n if (!session || !state) {\n break;\n }\n const chunk = buffer.subarray(0, CHUNK_SIZE);\n buffer = buffer.subarray(CHUNK_SIZE);\n feeds.audio = new de("float32", chunk, [1, CHUNK_SIZE]);\n for (const name of stateKeys) {\n feeds[name] = state[name];\n }\n const startedAt = performance.now();\n const results = await session.run(feeds);\n const inferenceDuration = performance.now() - startedAt;\n updateStateFromOutputs(state, results);\n const probs = results.voice_probs?.data;\n if (!probs || probs.length < 2) {\n continue;\n }\n const speechProb = Math.max(probs[0], probs[1]);\n const silenceProb = 1 - speechProb;\n self.postMessage({\n type: "data" /* DATA */,\n data: { speechProb, silenceProb, inferenceDuration }\n });\n }\n } catch (err) {\n postError(err);\n } finally {\n draining = false;\n }\n }\n function onAudio(data) {\n appendBuffer(new Float32Array(data));\n void drainBuffer();\n }\n init().then(() => {\n self.onmessage = (event) => {\n onAudio(event.data.data);\n };\n self.postMessage({ type: "init" /* INIT */ });\n }).catch(postError);\n };\n function updateStateFromOutputs(state, outputs) {\n for (const [outName, inName] of Object.entries(STATE_OUTPUT_TO_INPUT)) {\n const next = outputs[outName];\n if (next) {\n state[inName] = next;\n }\n }\n }\n function createZeroStateTensors(session, TensorCtor) {\n const state = {};\n for (const name of session.inputNames) {\n if (name === "audio") {\n continue;\n }\n const dims = STATE_INPUT_DIMS[name];\n if (!dims) {\n continue;\n }\n const size = dims.reduce((a, b) => a * b, 1);\n state[name] = new TensorCtor("float32", new Float32Array(size), dims);\n }\n return state;\n }\n return __toCommonJS(VadOnnxWorker_exports);\n})();\n/*! Bundled license information:\n\nonnxruntime-web/dist/ort.wasm.bundle.min.mjs:\n (*!\n * ONNX Runtime Web v1.26.0\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n *)\n*/\n',
5003
+ workerArgs: isTflite ? [import_audio_processing2.default, import_audio_processing2.default.getUrl, JSON.stringify(model)] : [
5004
+ JSON.stringify(this._modelUrl),
5005
+ JSON.stringify(this._modelDataUrl),
5006
+ JSON.stringify(this._ortWasmUrl),
5007
+ JSON.stringify(this._ortMjsUrl)
5008
+ ],
5009
+ workerName: isTflite ? "VadTfliteWorker" : "VadOnnxWorker",
5010
+ workerModel: model
5011
+ });
5012
+ } finally {
5013
+ this._stopModelLoadTimeout();
5014
+ }
5015
+ }
5016
+ destroy() {
5017
+ this._stopModelLoadTimeout();
5018
+ super.destroy();
4950
5019
  }
4951
5020
  onWorkletData(data) {
4952
5021
  this.sendDataToWorker({ data }, [data]);
@@ -4963,6 +5032,12 @@ var EffectVadAi = class extends WorkerAudioProcessor {
4963
5032
  return false;
4964
5033
  }
4965
5034
  }
5035
+ _stopModelLoadTimeout() {
5036
+ if (this._modelLoadTimeout !== null) {
5037
+ window.clearTimeout(this._modelLoadTimeout);
5038
+ this._modelLoadTimeout = null;
5039
+ }
5040
+ }
4966
5041
  };
4967
5042
 
4968
5043
  // src/controllers/VadController.ts
@@ -4970,6 +5045,29 @@ var DEFAULT_THRESHOLD = 0.66;
4970
5045
  var DEFAULT_HANGOVER_MS = 300;
4971
5046
  var WATCHDOG_MS = 2e3;
4972
5047
  var VadController = class {
5048
+ /**
5049
+ * Коллбек, вызывающийся, когда ML-модель VAD скачана и готова к работе.
5050
+ * Вызывается при каждом init().
5051
+ * @param {string} model - Файл модели.
5052
+ * @param {number} duration - Время скачивания файлов модели, мс.
5053
+ */
5054
+ onModelReady = () => {
5055
+ };
5056
+ /**
5057
+ * Коллбек, вызывающийся при ошибке ML-модели VAD:
5058
+ * модель не скачалась, не создалась, упала в работе или не загрузилась за минуту (timeout).
5059
+ * @param {string} model - Файл модели.
5060
+ * @param {string} error - Текст ошибки.
5061
+ */
5062
+ onModelError = () => {
5063
+ };
5064
+ /**
5065
+ * Коллбек, вызывающийся после каждого запуска модели VAD (раз в 20 мс).
5066
+ * @param {number} duration - Время одного запуска модели, мс.
5067
+ * Без загрузки модели и ожидания следующего блока звука.
5068
+ */
5069
+ onInference = () => {
5070
+ };
4973
5071
  _effect = null;
4974
5072
  _sendTrack = null;
4975
5073
  _vadInputTrack = null;
@@ -5034,6 +5132,8 @@ var VadController = class {
5034
5132
  const effect = new EffectVadAi(this._effectOptions);
5035
5133
  effect.setLogger(this._loggerFn, "VAD");
5036
5134
  effect.onData = (probs) => this._onProbs(probs);
5135
+ effect.onModelReady = (model, duration) => this.onModelReady(model, duration);
5136
+ effect.onModelError = (model, error) => this.onModelError(model, error);
5037
5137
  this._effect = effect;
5038
5138
  try {
5039
5139
  await effect.init();
@@ -5092,13 +5192,18 @@ var VadController = class {
5092
5192
  this._sendTrack.enabled = true;
5093
5193
  }
5094
5194
  this._sendTrack = track;
5095
- this._replaceVadInputTrack(track ? track.clone() : null);
5195
+ const inputTrack = track ? track.clone() : null;
5196
+ if (inputTrack) {
5197
+ inputTrack.enabled = true;
5198
+ }
5199
+ this._replaceVadInputTrack(inputTrack);
5096
5200
  this._effect?.setSource(this._vadInputTrack);
5097
5201
  if (this._sendTrack) {
5098
5202
  this._sendTrack.enabled = this._isSpeaking;
5099
5203
  }
5100
5204
  }
5101
5205
  _onProbs(probs) {
5206
+ this.onInference(probs.inferenceDuration);
5102
5207
  this._scheduleWatchdog();
5103
5208
  const now = performance.now();
5104
5209
  if (probs.speechProb >= this._threshold) {
@@ -5260,6 +5365,9 @@ var PerformanceMonitor = class {
5260
5365
  }
5261
5366
  check() {
5262
5367
  let measure;
5368
+ if (!this.performanceMeasures.length && this.beginMarkTs) {
5369
+ this.performanceMeasures.push(Date.now() - this.beginMarkTs);
5370
+ }
5263
5371
  if (this.mode === "peak" /* PEAK */) {
5264
5372
  const peakMeasure = Math.max(...this.performanceMeasures);
5265
5373
  if (this.logPerformanceChecks) {
@@ -5360,8 +5468,9 @@ var EffectVoiceChange = class extends WorkerAudioProcessor {
5360
5468
  isOutputStream: this.mode === "output_stream" /* OUTPUT_STREAM */,
5361
5469
  workletFunction: voiceChangeWorkletFunction,
5362
5470
  workletName: "voiceChangeWorklet",
5363
- workerFunctionString: '"use strict";\nvar exports = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // src/workers/VoiceChangeWorker.ts\n var VoiceChangeWorker_exports = {};\n __export(VoiceChangeWorker_exports, {\n VoiceChangeWorkerRequestType: () => VoiceChangeWorkerRequestType,\n default: () => VoiceChangeWorker_default\n });\n\n // src/utils/ModelLoader.ts\n var MODELS_FOLDER = "/";\n var MODELS_URL_PATH = "models/";\n async function loadModelFile(module, urlResolver, fileName) {\n const response = await fetch(urlResolver(MODELS_URL_PATH + fileName));\n if (!response.ok) {\n throw new Error(`model ${fileName} loading failed with status ${response.status}`);\n }\n const data = new Uint8Array(await response.arrayBuffer());\n module.FS_createDataFile(MODELS_FOLDER, fileName, data, true, false, true);\n }\n\n // src/workers/VoiceChangeWorker.ts\n var VoiceChangeWorkerRequestType = /* @__PURE__ */ ((VoiceChangeWorkerRequestType2) => {\n VoiceChangeWorkerRequestType2["SET_EFFECTS"] = "set_effects";\n VoiceChangeWorkerRequestType2["DATA"] = "data";\n return VoiceChangeWorkerRequestType2;\n })(VoiceChangeWorkerRequestType || {});\n var DENOISE_PRESET = "denoise";\n var DENOISE_MODEL_FILE = "df2_lstm_full_silent.tflite";\n var VoiceChangeWorker_default = (createWav2lipModule, urlResolver) => {\n let Wav2lip = null;\n let effectsData = [];\n let isDenoiseModelLoaded = false;\n let denoiseModelLoading = null;\n let isPassThrough = false;\n let effectsRequestId = 0;\n function init() {\n return createWav2lipModule({ locateFile: urlResolver }).then((module) => {\n Wav2lip = module;\n });\n }\n function isDenoiseModelRequired(effectInputs, isPreset) {\n return effectInputs.some((effectInput) => isPreset ? effectInput === DENOISE_PRESET : effectInput.includes(DENOISE_MODEL_FILE));\n }\n async function loadDenoiseModel(module) {\n try {\n await loadModelFile(module, urlResolver, DENOISE_MODEL_FILE);\n isDenoiseModelLoaded = true;\n } finally {\n denoiseModelLoading = null;\n }\n }\n async function loadModels(effectInputs, isPreset) {\n if (!Wav2lip || isDenoiseModelLoaded || !isDenoiseModelRequired(effectInputs, isPreset)) {\n return;\n }\n isPassThrough = true;\n denoiseModelLoading ??= loadDenoiseModel(Wav2lip);\n await denoiseModelLoading;\n }\n function setEffects(effectInputs, isPreset = false) {\n if (!Wav2lip) {\n return;\n }\n try {\n for (const effectInput of effectInputs) {\n const configValue = `${effectInput}${isPreset ? ".cfg" : ""}`;\n const configInput = new Wav2lip.ConfigInput(configValue, isPreset, "/");\n let config;\n try {\n config = new Wav2lip.Config(configInput);\n const effect = Wav2lip.EffectFactory.createAlgorithm(config);\n effectsData.push({\n configInput,\n config,\n effect\n });\n } catch (error) {\n config?.delete();\n configInput.delete();\n throw error;\n }\n }\n } catch (error) {\n self.postMessage({\n type: "debug" /* DEBUG */,\n message: "before error " + JSON.stringify(effectsData)\n });\n postError("setEffects error:", error);\n }\n }\n function clearEffects() {\n for (const { configInput, config, effect } of effectsData) {\n for (const wasmObject of [configInput, config, effect]) {\n try {\n wasmObject.delete();\n } catch (error) {\n postError("clearEffects error:", error);\n }\n }\n }\n effectsData = [];\n }\n function postError(source, error) {\n self.postMessage({\n type: "error" /* ERROR */,\n error: typeof error === "number" && Wav2lip ? Wav2lip.getExMessage(error) : source + error\n });\n }\n function requestSamples(data) {\n if (!Wav2lip || !effectsData.length) {\n return;\n }\n let inputVec;\n try {\n inputVec = new Wav2lip.vector$float$();\n const dataArr = new Float32Array(data);\n for (const sample of dataArr) {\n inputVec.push_back(sample);\n }\n for (const { effect } of effectsData) {\n const outputVec = Wav2lip.applyEffect(effect, inputVec);\n inputVec.delete();\n inputVec = outputVec;\n }\n const samplesCount = inputVec?.size?.();\n if (!samplesCount) {\n return;\n }\n const resultSamples = new Float32Array(samplesCount);\n for (let i = 0; i < samplesCount; i++) {\n resultSamples[i] = inputVec.get(i);\n }\n self.postMessage({\n type: "data" /* DATA */,\n data: resultSamples.buffer\n }, [resultSamples.buffer]);\n } catch (error) {\n postError("requestSamples error:", error);\n } finally {\n inputVec?.delete();\n }\n }\n init().then(() => {\n self.onmessage = ({ data: request }) => {\n switch (request.type) {\n case "set_effects" /* SET_EFFECTS */: {\n const { effects, isPreset = false } = request;\n const requestId = ++effectsRequestId;\n loadModels(effects, isPreset).then(() => {\n if (requestId === effectsRequestId) {\n clearEffects();\n setEffects(effects, isPreset);\n isPassThrough = false;\n }\n }).catch((error) => postError("setEffects error:", error));\n break;\n }\n case "data" /* DATA */: {\n if (isPassThrough && !effectsData.length) {\n self.postMessage({\n type: "data" /* DATA */,\n data: request.data\n }, [request.data]);\n break;\n }\n requestSamples(request.data);\n break;\n }\n }\n };\n self.postMessage({ type: "init" /* INIT */ });\n }).catch((error) => postError("init error:", error));\n };\n return __toCommonJS(VoiceChangeWorker_exports);\n})();\n',
5364
- workerArgs: [import_audio_processing3.default, import_audio_processing3.default.getUrl]
5471
+ workerFunctionString: '"use strict";\nvar exports = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // src/workers/VoiceChangeWorker.ts\n var VoiceChangeWorker_exports = {};\n __export(VoiceChangeWorker_exports, {\n VoiceChangeWorkerRequestType: () => VoiceChangeWorkerRequestType,\n default: () => VoiceChangeWorker_default\n });\n\n // src/utils/Utils.ts\n function getFileName(url) {\n return url.split(/[?#]/)[0].split("/").pop() || url;\n }\n\n // src/utils/ModelLoader.ts\n var MODELS_FOLDER = "/";\n var MODELS_URL_PATH = "models/";\n async function downloadModelFile(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`model ${getFileName(url)} loading failed with status ${response.status}`);\n }\n return new Uint8Array(await response.arrayBuffer());\n }\n async function loadModelFile(module, urlResolver, fileName) {\n const startedAt = performance.now();\n const data = await downloadModelFile(urlResolver(MODELS_URL_PATH + fileName));\n const duration = performance.now() - startedAt;\n module.FS_createDataFile(MODELS_FOLDER, fileName, data, true, false, true);\n return duration;\n }\n function postModelReady(model, duration) {\n self.postMessage({\n type: "model_ready" /* MODEL_READY */,\n model,\n duration\n });\n }\n\n // src/utils/WasmMemoryReport.ts\n var REPORT_INTERVAL_MS = 6e4;\n function startWasmMemoryReport(module) {\n const report = () => {\n const bytes = module.HEAPU8?.buffer.byteLength ?? 0;\n self.postMessage({\n type: "debug" /* DEBUG */,\n message: `${self.name || "worker"} wasm memory: ${(bytes / 1048576).toFixed(1)} MiB`\n });\n };\n report();\n setInterval(report, REPORT_INTERVAL_MS);\n }\n\n // src/workers/VoiceChangeWorker.ts\n var VoiceChangeWorkerRequestType = /* @__PURE__ */ ((VoiceChangeWorkerRequestType2) => {\n VoiceChangeWorkerRequestType2["SET_EFFECTS"] = "set_effects";\n VoiceChangeWorkerRequestType2["DATA"] = "data";\n return VoiceChangeWorkerRequestType2;\n })(VoiceChangeWorkerRequestType || {});\n var DENOISE_PRESET = "denoise";\n var DENOISE_MODEL_FILE = "df2_lstm_full_silent.tflite";\n var VoiceChangeWorker_default = (createWav2lipModule, urlResolver) => {\n let Wav2lip = null;\n let effectsData = [];\n let isDenoiseModelLoaded = false;\n let denoiseModelLoading = null;\n let denoiseLoadDuration = null;\n let isPassThrough = false;\n let effectsRequestId = 0;\n function init() {\n return createWav2lipModule({ locateFile: urlResolver }).then((module) => {\n Wav2lip = module;\n startWasmMemoryReport(module);\n });\n }\n function getEffectModel(effectInput, isPreset) {\n const isDenoise = isPreset ? effectInput === DENOISE_PRESET : effectInput.includes(DENOISE_MODEL_FILE);\n return isDenoise ? DENOISE_MODEL_FILE : void 0;\n }\n function isDenoiseModelRequired(effectInputs, isPreset) {\n return effectInputs.some((effectInput) => getEffectModel(effectInput, isPreset));\n }\n async function loadDenoiseModel(module) {\n try {\n denoiseLoadDuration = await loadModelFile(module, urlResolver, DENOISE_MODEL_FILE);\n isDenoiseModelLoaded = true;\n } finally {\n denoiseModelLoading = null;\n }\n }\n async function loadModels(effectInputs, isPreset) {\n if (!Wav2lip || isDenoiseModelLoaded || !isDenoiseModelRequired(effectInputs, isPreset)) {\n return;\n }\n isPassThrough = true;\n denoiseModelLoading ??= loadDenoiseModel(Wav2lip);\n await denoiseModelLoading;\n }\n function setEffects(effectInputs, isPreset = false) {\n if (!Wav2lip) {\n return;\n }\n let model;\n try {\n for (const effectInput of effectInputs) {\n model = getEffectModel(effectInput, isPreset);\n const configValue = `${effectInput}${isPreset ? ".cfg" : ""}`;\n const configInput = new Wav2lip.ConfigInput(configValue, isPreset, "/");\n let config;\n try {\n config = new Wav2lip.Config(configInput);\n const effect = Wav2lip.EffectFactory.createAlgorithm(config);\n effectsData.push({\n configInput,\n config,\n effect,\n model\n });\n } catch (error) {\n config?.delete();\n configInput.delete();\n throw error;\n }\n if (model && denoiseLoadDuration !== null) {\n postModelReady(model, denoiseLoadDuration);\n denoiseLoadDuration = null;\n }\n }\n } catch (error) {\n self.postMessage({\n type: "debug" /* DEBUG */,\n message: "before error " + JSON.stringify(effectsData)\n });\n postError("setEffects error:", error, model);\n }\n }\n function clearEffects() {\n for (const { configInput, config, effect } of effectsData) {\n for (const wasmObject of [configInput, config, effect]) {\n try {\n wasmObject.delete();\n } catch (error) {\n postError("clearEffects error:", error);\n }\n }\n }\n effectsData = [];\n }\n function postError(source, error, model) {\n self.postMessage({\n type: "error" /* ERROR */,\n error: typeof error === "number" && Wav2lip ? Wav2lip.getExMessage(error) : source + error,\n model\n });\n }\n function requestSamples(data) {\n if (!Wav2lip || !effectsData.length) {\n return;\n }\n let inputVec;\n let model;\n try {\n inputVec = new Wav2lip.vector$float$();\n const dataArr = new Float32Array(data);\n for (const sample of dataArr) {\n inputVec.push_back(sample);\n }\n for (const { effect, model: effectModel } of effectsData) {\n model = effectModel;\n const outputVec = Wav2lip.applyEffect(effect, inputVec);\n inputVec.delete();\n inputVec = outputVec;\n }\n model = void 0;\n const samplesCount = inputVec?.size?.();\n if (!samplesCount) {\n return;\n }\n const resultSamples = new Float32Array(samplesCount);\n for (let i = 0; i < samplesCount; i++) {\n resultSamples[i] = inputVec.get(i);\n }\n self.postMessage({\n type: "data" /* DATA */,\n data: resultSamples.buffer\n }, [resultSamples.buffer]);\n } catch (error) {\n postError("requestSamples error:", error, model);\n } finally {\n inputVec?.delete();\n }\n }\n init().then(() => {\n self.onmessage = ({ data: request }) => {\n switch (request.type) {\n case "set_effects" /* SET_EFFECTS */: {\n const { effects, isPreset = false } = request;\n const requestId = ++effectsRequestId;\n loadModels(effects, isPreset).then(() => {\n if (requestId === effectsRequestId) {\n clearEffects();\n setEffects(effects, isPreset);\n isPassThrough = false;\n }\n }).catch((error) => postError("setEffects error:", error, DENOISE_MODEL_FILE));\n break;\n }\n case "data" /* DATA */: {\n if (isPassThrough && !effectsData.length) {\n self.postMessage({\n type: "data" /* DATA */,\n data: request.data\n }, [request.data]);\n break;\n }\n requestSamples(request.data);\n break;\n }\n }\n };\n self.postMessage({ type: "init" /* INIT */ });\n }).catch((error) => postError("init error:", error));\n };\n return __toCommonJS(VoiceChangeWorker_exports);\n})();\n',
5472
+ workerArgs: [import_audio_processing3.default, import_audio_processing3.default.getUrl],
5473
+ workerName: "VoiceChangeWorker"
5365
5474
  });
5366
5475
  }
5367
5476
  setEffects(effects, isPreset) {