diff --git "a/assets/index-17_Va4sS.js" "b/assets/index-17_Va4sS.js" new file mode 100644--- /dev/null +++ "b/assets/index-17_Va4sS.js" @@ -0,0 +1,27471 @@ +(function () { + const e = document.createElement('link').relList; + if (e && e.supports && e.supports('modulepreload')) return; + for (const u of document.querySelectorAll('link[rel="modulepreload"]')) i(u); + new MutationObserver((u) => { + for (const n of u) + if (n.type === 'childList') + for (const s of n.addedNodes) s.tagName === 'LINK' && s.rel === 'modulepreload' && i(s); + }).observe(document, { childList: !0, subtree: !0 }); + function o(u) { + const n = {}; + return ( + u.integrity && (n.integrity = u.integrity), + u.referrerPolicy && (n.referrerPolicy = u.referrerPolicy), + u.crossOrigin === 'use-credentials' + ? (n.credentials = 'include') + : u.crossOrigin === 'anonymous' + ? (n.credentials = 'omit') + : (n.credentials = 'same-origin'), + n + ); + } + function i(u) { + if (u.ep) return; + u.ep = !0; + const n = o(u); + fetch(u.href, n); + } +})(); +function dispatchCallback(t, e) { + t && t(e); +} +function reverseDictionary(t) { + return Object.fromEntries(Object.entries(t).map(([e, o]) => [o, e])); +} +const Callable = class { + constructor() { + let t = function (...e) { + return t._call(...e); + }; + return Object.setPrototypeOf(t, new.target.prototype); + } + _call(...t) { + throw Error('Must implement _call method in subclass'); + } +}; +function isTypedArray(t) { + return t?.prototype?.__proto__?.constructor?.name === 'TypedArray'; +} +function isIntegralNumber(t) { + return Number.isInteger(t) || typeof t == 'bigint'; +} +function exists(t) { + return t != null; +} +function calculateDimensions(t) { + const e = []; + let o = t; + for (; Array.isArray(o); ) e.push(o.length), (o = o[0]); + return e; +} +function mergeArrays(...t) { + return Array.prototype.concat.apply([], t); +} +function calculateReflectOffset(t, e) { + return Math.abs(((t + e) % (2 * e)) - e); +} +const sharp = {}, + ONNX_NODE = Object.freeze( + Object.defineProperty({ __proto__: null, default: sharp }, Symbol.toStringTag, { value: 'Module' }) + ), + VERSION = '3.0.0-alpha.0', + BROWSER_ENV$1 = typeof self < 'u', + WEB_CACHE_AVAILABLE = BROWSER_ENV$1 && 'caches' in self, + FS_AVAILABLE = !isEmpty(sharp), + PATH_AVAILABLE = !isEmpty(sharp), + RUNNING_LOCALLY = FS_AVAILABLE && PATH_AVAILABLE, + __dirname$1 = RUNNING_LOCALLY ? sharp.dirname(sharp.dirname(sharp.fileURLToPath(import.meta.url))) : './', + DEFAULT_CACHE_DIR = RUNNING_LOCALLY ? sharp.join(__dirname$1, '/.cache/') : null, + DEFAULT_LOCAL_MODEL_PATH = '/models/', + localModelPath = RUNNING_LOCALLY ? sharp.join(__dirname$1, DEFAULT_LOCAL_MODEL_PATH) : DEFAULT_LOCAL_MODEL_PATH, + env = { + backends: { onnx: {}, tfjs: {} }, + experimental: { useWebGPU: !1 }, + __dirname: __dirname$1, + version: VERSION, + allowRemoteModels: !0, + remoteHost: 'https://huggingface.co/', + remotePathTemplate: '{model}/resolve/{revision}/', + allowLocalModels: !BROWSER_ENV$1, + localModelPath, + useFS: FS_AVAILABLE, + useBrowserCache: WEB_CACHE_AVAILABLE, + useFSCache: FS_AVAILABLE, + cacheDir: DEFAULT_CACHE_DIR, + useCustomCache: !1, + customCache: null, + }; +function isEmpty(t) { + return Object.keys(t).length === 0; +} +var define_process_env_default = {}; +class FileResponse { + _CONTENT_TYPE_MAP = { + txt: 'text/plain', + html: 'text/html', + css: 'text/css', + js: 'text/javascript', + json: 'application/json', + png: 'image/png', + jpg: 'image/jpeg', + jpeg: 'image/jpeg', + gif: 'image/gif', + }; + constructor(e) { + if (((this.filePath = e), (this.headers = new Headers()), (this.exists = sharp.existsSync(e)), this.exists)) { + (this.status = 200), (this.statusText = 'OK'); + let o = sharp.statSync(e); + this.headers.set('content-length', o.size.toString()), this.updateContentType(); + let i = this; + this.body = new ReadableStream({ + start(u) { + i.arrayBuffer().then((n) => { + u.enqueue(new Uint8Array(n)), u.close(); + }); + }, + }); + } else (this.status = 404), (this.statusText = 'Not Found'), (this.body = null); + } + updateContentType() { + const e = this.filePath.toString().split('.').pop().toLowerCase(); + this.headers.set('content-type', this._CONTENT_TYPE_MAP[e] ?? 'application/octet-stream'); + } + clone() { + let e = new FileResponse(this.filePath); + return ( + (e.exists = this.exists), + (e.status = this.status), + (e.statusText = this.statusText), + (e.headers = new Headers(this.headers)), + e + ); + } + async arrayBuffer() { + return (await sharp.promises.readFile(this.filePath)).buffer; + } + async blob() { + const e = await sharp.promises.readFile(this.filePath); + return new Blob([e], { type: this.headers.get('content-type') }); + } + async text() { + return await sharp.promises.readFile(this.filePath, 'utf8'); + } + async json() { + return JSON.parse(await this.text()); + } +} +function isValidHttpUrl(t, e = null) { + let o; + try { + o = new URL(t); + } catch { + return !1; + } + return e && !e.includes(o.hostname) ? !1 : o.protocol === 'http:' || o.protocol === 'https:'; +} +async function getFile(t) { + if (env.useFS && !isValidHttpUrl(t)) return new FileResponse(t); + if (typeof process < 'u' && process?.release?.name === 'node') { + const e = !!define_process_env_default?.TESTING_REMOTELY, + o = env.version, + i = new Headers(); + if ( + (i.set('User-Agent', `transformers.js/${o}; is_ci/${e};`), isValidHttpUrl(t, ['huggingface.co', 'hf.co'])) + ) { + const n = define_process_env_default?.HF_TOKEN ?? define_process_env_default?.HF_ACCESS_TOKEN; + n && i.set('Authorization', `Bearer ${n}`); + } + return fetch(t, { headers: i }); + } else return fetch(t); +} +const ERROR_MAPPING = { + 400: 'Bad request error occurred while trying to load file', + 401: 'Unauthorized access to file', + 403: 'Forbidden access to file', + 404: 'Could not locate file', + 408: 'Request timeout error occurred while trying to load file', + 500: 'Internal server error error occurred while trying to load file', + 502: 'Bad gateway error occurred while trying to load file', + 503: 'Service unavailable error occurred while trying to load file', + 504: 'Gateway timeout error occurred while trying to load file', +}; +function handleError(t, e, o) { + if (!o) return null; + const i = ERROR_MAPPING[t] ?? `Error (${t}) occurred while trying to load file`; + throw Error(`${i}: "${e}".`); +} +class FileCache { + constructor(e) { + this.path = e; + } + async match(e) { + let o = sharp.join(this.path, e), + i = new FileResponse(o); + if (i.exists) return i; + } + async put(e, o) { + const i = Buffer.from(await o.arrayBuffer()); + let u = sharp.join(this.path, e); + try { + await sharp.promises.mkdir(sharp.dirname(u), { recursive: !0 }), await sharp.promises.writeFile(u, i); + } catch (n) { + console.warn('An error occurred while writing the file to cache:', n); + } + } +} +async function tryCache(t, ...e) { + for (let o of e) + try { + let i = await t.match(o); + if (i) return i; + } catch { + continue; + } +} +async function getModelFile(t, e, o = !0, i = {}) { + if (!env.allowLocalModels && i.local_files_only) + throw Error( + 'Invalid configuration detected: local models are disabled (`env.allowLocalModels=false`) but you have requested to only use local models (`local_files_only=true`).' + ); + dispatchCallback(i.progress_callback, { status: 'initiate', name: t, file: e }); + let u; + if (!u && env.useBrowserCache) { + if (typeof caches > 'u') throw Error('Browser cache is not available in this environment.'); + try { + u = await caches.open('transformers-cache'); + } catch (S) { + console.warn('An error occurred while opening the browser cache:', S); + } + } + if ((!u && env.useFSCache && (u = new FileCache(i.cache_dir ?? env.cacheDir)), !u && env.useCustomCache)) + throw Error('`env.useCustomCache=true`, but `env.customCache` is not defined.'); + const n = i.revision ?? 'main'; + let s = pathJoin(t, e), + d = pathJoin(env.localModelPath, s), + f = pathJoin( + env.remoteHost, + env.remotePathTemplate.replaceAll('{model}', t).replaceAll('{revision}', encodeURIComponent(n)), + e + ), + r = n === 'main' ? s : pathJoin(t, n, e), + a, + l = u instanceof FileCache ? r : f, + p = !1, + m; + u && (m = await tryCache(u, d, l)); + const y = m !== void 0; + if (m === void 0) { + if (env.allowLocalModels) + if (isValidHttpUrl(s)) { + if (i.local_files_only) + throw new Error(`\`local_files_only=true\`, but attempted to load a remote file from: ${s}.`); + } else + try { + (m = await getFile(d)), (a = d); + } catch (E) { + console.warn(`Unable to load from local path "${d}": "${E}"`); + } + if (m === void 0 || m.status === 404) { + if (i.local_files_only || !env.allowRemoteModels) { + if (o) + throw Error( + `\`local_files_only=true\` or \`env.allowRemoteModels=false\` and file was not found locally at "${d}".` + ); + return null; + } + if (((m = await getFile(f)), m.status !== 200)) return handleError(m.status, f, o); + a = l; + } + p = u && typeof Response < 'u' && m instanceof Response && m.status === 200; + } + dispatchCallback(i.progress_callback, { status: 'download', name: t, file: e }); + const T = { status: 'progress', name: t, file: e }; + let v; + return ( + i.progress_callback + ? y && typeof navigator < 'u' && /firefox/i.test(navigator.userAgent) + ? ((v = new Uint8Array(await m.arrayBuffer())), + dispatchCallback(i.progress_callback, { ...T, progress: 100, loaded: v.length, total: v.length })) + : (v = await readResponse(m, (S) => { + dispatchCallback(i.progress_callback, { ...T, ...S }); + })) + : (v = new Uint8Array(await m.arrayBuffer())), + p && + a && + (await u.match(a)) === void 0 && + (await u.put(a, new Response(v, { headers: m.headers })).catch((S) => { + console.warn(`Unable to add response to browser cache: ${S}.`); + })), + dispatchCallback(i.progress_callback, { status: 'done', name: t, file: e }), + v + ); +} +async function getModelJSON(t, e, o = !0, i = {}) { + let u = await getModelFile(t, e, o, i); + if (u === null) return {}; + let s = new TextDecoder('utf-8').decode(u); + return JSON.parse(s); +} +async function readResponse(t, e) { + const o = t.headers.get('Content-Length'); + o === null && + console.warn('Unable to determine content-length from response headers. Will expand buffer when needed.'); + let i = parseInt(o ?? '0'), + u = new Uint8Array(i), + n = 0; + const s = t.body.getReader(); + async function d() { + const { done: f, value: r } = await s.read(); + if (f) return; + let a = n + r.length; + if (a > i) { + i = a; + let p = new Uint8Array(i); + p.set(u), (u = p); + } + u.set(r, n), (n = a); + const l = (n / i) * 100; + return e({ progress: l, loaded: n, total: i }), d(); + } + return await d(), u; +} +function pathJoin(...t) { + return ( + (t = t.map( + (e, o) => ( + o && (e = e.replace(new RegExp('^/'), '')), + o !== t.length - 1 && (e = e.replace(new RegExp('/$'), '')), + e + ) + )), + t.join('/') + ); +} +function interpolate_data(t, [e, o, i], [u, n], s = 'bilinear', d = !1) { + const f = n / i, + r = u / o, + a = new t.constructor(u * n * e), + l = o * i, + p = u * n; + for (let m = 0; m < u; ++m) + for (let y = 0; y < n; ++y) { + const T = m * n + y, + v = (y + 0.5) / f - 0.5, + S = (m + 0.5) / r - 0.5; + let E = Math.floor(v), + A = Math.floor(S); + const F = Math.min(E + 1, i - 1), + B = Math.min(A + 1, o - 1); + (E = Math.max(E, 0)), (A = Math.max(A, 0)); + const J = v - E, + Q = S - A, + re = (1 - J) * (1 - Q), + V = J * (1 - Q), + de = (1 - J) * Q, + ke = J * Q, + Ne = A * i, + Me = B * i, + Y = Ne + E, + _e = Ne + F, + he = Me + E, + ue = Me + F; + for (let pe = 0; pe < e; ++pe) { + const X = pe * l; + a[pe * p + T] = re * t[X + Y] + V * t[X + _e] + de * t[X + he] + ke * t[X + ue]; + } + } + return a; +} +function transpose_data(t, e, o) { + const i = new Array(o.length), + u = new Array(o.length); + for (let d = o.length - 1, f = 1; d >= 0; --d) (u[d] = f), (i[d] = e[o[d]]), (f *= i[d]); + const n = o.map((d, f) => u[o.indexOf(f)]), + s = new t.constructor(t.length); + for (let d = 0; d < t.length; ++d) { + let f = 0; + for (let r = e.length - 1, a = d; r >= 0; --r) (f += (a % e[r]) * n[r]), (a = Math.floor(a / e[r])); + s[f] = t[d]; + } + return [s, i]; +} +function softmax(t) { + const e = max(t)[0], + o = t.map((n) => Math.exp(n - e)), + i = o.reduce((n, s) => n + s, 0); + return o.map((n) => n / i); +} +function log_softmax(t) { + return softmax(t).map((i) => Math.log(i)); +} +function getTopItems(t, e = 0) { + return ( + (t = Array.from(t) + .map((o, i) => [i, o]) + .sort((o, i) => i[1] - o[1])), + e !== null && e > 0 && (t = t.slice(0, e)), + t + ); +} +function min(t) { + if (t.length === 0) throw Error('Array must not be empty'); + let e = t[0], + o = 0; + for (let i = 1; i < t.length; ++i) t[i] < e && ((e = t[i]), (o = i)); + return [e, o]; +} +function max(t) { + if (t.length === 0) throw Error('Array must not be empty'); + let e = t[0], + o = 0; + for (let i = 1; i < t.length; ++i) t[i] > e && ((e = t[i]), (o = i)); + return [Number(e), o]; +} +function isPowerOfTwo(t) { + return t > 0 && (t & (t - 1)) === 0; +} +class P2FFT { + constructor(e) { + if (((this.size = e | 0), this.size <= 1 || !isPowerOfTwo(this.size))) + throw new Error('FFT size must be a power of two larger than 1'); + (this._csize = e << 1), (this.table = new Float64Array(this.size * 2)); + for (let i = 0; i < this.table.length; i += 2) { + const u = (Math.PI * i) / this.size; + (this.table[i] = Math.cos(u)), (this.table[i + 1] = -Math.sin(u)); + } + let o = 0; + for (let i = 1; this.size > i; i <<= 1) ++o; + (this._width = o % 2 === 0 ? o - 1 : o), (this._bitrev = new Int32Array(1 << this._width)); + for (let i = 0; i < this._bitrev.length; ++i) { + this._bitrev[i] = 0; + for (let u = 0; u < this._width; u += 2) { + const n = this._width - u - 2; + this._bitrev[i] |= ((i >>> u) & 3) << n; + } + } + } + createComplexArray() { + return new Float64Array(this._csize); + } + fromComplexArray(e, o) { + const i = o || new Array(e.length >>> 1); + for (let u = 0; u < e.length; u += 2) i[u >>> 1] = e[u]; + return i; + } + toComplexArray(e, o) { + const i = o || this.createComplexArray(); + for (let u = 0; u < i.length; u += 2) (i[u] = e[u >>> 1]), (i[u + 1] = 0); + return i; + } + completeSpectrum(e) { + const o = this._csize, + i = o >>> 1; + for (let u = 2; u < i; u += 2) (e[o - u] = e[u]), (e[o - u + 1] = -e[u + 1]); + } + transform(e, o) { + if (e === o) throw new Error('Input and output buffers must be different'); + this._transform4(e, o, 1); + } + realTransform(e, o) { + if (e === o) throw new Error('Input and output buffers must be different'); + this._realTransform4(e, o, 1); + } + inverseTransform(e, o) { + if (e === o) throw new Error('Input and output buffers must be different'); + this._transform4(e, o, -1); + for (let i = 0; i < e.length; ++i) e[i] /= this.size; + } + _transform4(e, o, i) { + const u = this._csize; + let s = 1 << this._width, + d = (u / s) << 1, + f, + r; + const a = this._bitrev; + if (d === 4) + for (f = 0, r = 0; f < u; f += d, ++r) { + const l = a[r]; + this._singleTransform2(o, e, f, l, s); + } + else + for (f = 0, r = 0; f < u; f += d, ++r) { + const l = a[r]; + this._singleTransform4(o, e, f, l, s, i); + } + for (s >>= 2; s >= 2; s >>= 2) { + d = (u / s) << 1; + const l = d >>> 2; + for (f = 0; f < u; f += d) { + const p = f + l - 1; + for (let m = f, y = 0; m < p; m += 2, y += s) { + const T = m, + v = T + l, + S = v + l, + E = S + l, + A = e[T], + F = e[T + 1], + B = e[v], + J = e[v + 1], + Q = e[S], + re = e[S + 1], + V = e[E], + de = e[E + 1], + ke = this.table[y], + Ne = i * this.table[y + 1], + Me = B * ke - J * Ne, + Y = B * Ne + J * ke, + _e = this.table[2 * y], + he = i * this.table[2 * y + 1], + ue = Q * _e - re * he, + pe = Q * he + re * _e, + X = this.table[3 * y], + ve = i * this.table[3 * y + 1], + we = V * X - de * ve, + rt = V * ve + de * X, + ot = A + ue, + qe = F + pe, + He = A - ue, + Qe = F - pe, + Be = Me + we, + Ce = Y + rt, + Se = i * (Me - we), + je = i * (Y - rt); + (e[T] = ot + Be), + (e[T + 1] = qe + Ce), + (e[v] = He + je), + (e[v + 1] = Qe - Se), + (e[S] = ot - Be), + (e[S + 1] = qe - Ce), + (e[E] = He - je), + (e[E + 1] = Qe + Se); + } + } + } + } + _singleTransform2(e, o, i, u, n) { + const s = e[u], + d = e[u + 1], + f = e[u + n], + r = e[u + n + 1]; + (o[i] = s + f), (o[i + 1] = d + r), (o[i + 2] = s - f), (o[i + 3] = d - r); + } + _singleTransform4(e, o, i, u, n, s) { + const d = n * 2, + f = n * 3, + r = e[u], + a = e[u + 1], + l = e[u + n], + p = e[u + n + 1], + m = e[u + d], + y = e[u + d + 1], + T = e[u + f], + v = e[u + f + 1], + S = r + m, + E = a + y, + A = r - m, + F = a - y, + B = l + T, + J = p + v, + Q = s * (l - T), + re = s * (p - v); + (o[i] = S + B), + (o[i + 1] = E + J), + (o[i + 2] = A + re), + (o[i + 3] = F - Q), + (o[i + 4] = S - B), + (o[i + 5] = E - J), + (o[i + 6] = A - re), + (o[i + 7] = F + Q); + } + _realTransform4(e, o, i) { + const u = this._csize; + let s = 1 << this._width, + d = (u / s) << 1, + f, + r; + const a = this._bitrev; + if (d === 4) + for (f = 0, r = 0; f < u; f += d, ++r) { + const l = a[r]; + this._singleRealTransform2(o, e, f, l >>> 1, s >>> 1); + } + else + for (f = 0, r = 0; f < u; f += d, ++r) { + const l = a[r]; + this._singleRealTransform4(o, e, f, l >>> 1, s >>> 1, i); + } + for (s >>= 2; s >= 2; s >>= 2) { + d = (u / s) << 1; + const l = d >>> 2; + for (f = 0; f < u; f += d) { + const p = f + l - 1; + for (let m = f, y = 0; m < p; m += 2, y += s) { + const T = m, + v = T + l, + S = v + l, + E = S + l, + A = e[T], + F = e[T + 1], + B = e[v], + J = e[v + 1], + Q = e[S], + re = e[S + 1], + V = e[E], + de = e[E + 1], + ke = this.table[y], + Ne = i * this.table[y + 1], + Me = B * ke - J * Ne, + Y = B * Ne + J * ke, + _e = this.table[2 * y], + he = i * this.table[2 * y + 1], + ue = Q * _e - re * he, + pe = Q * he + re * _e, + X = this.table[3 * y], + ve = i * this.table[3 * y + 1], + we = V * X - de * ve, + rt = V * ve + de * X, + ot = A + ue, + qe = F + pe, + He = A - ue, + Qe = F - pe, + Be = Me + we, + Ce = Y + rt, + Se = i * (Me - we), + je = i * (Y - rt); + (e[T] = ot + Be), + (e[T + 1] = qe + Ce), + (e[v] = He + je), + (e[v + 1] = Qe - Se), + (e[S] = ot - Be), + (e[S + 1] = qe - Ce), + (e[E] = He - je), + (e[E + 1] = Qe + Se); + } + } + } + } + _singleRealTransform2(e, o, i, u, n) { + const s = e[u], + d = e[u + n]; + (o[i] = s + d), (o[i + 1] = 0), (o[i + 2] = s - d), (o[i + 3] = 0); + } + _singleRealTransform4(e, o, i, u, n, s) { + const d = n * 2, + f = n * 3, + r = e[u], + a = e[u + n], + l = e[u + d], + p = e[u + f], + m = r + l, + y = r - l, + T = a + p, + v = s * (a - p); + (o[i] = m + T), + (o[i + 1] = 0), + (o[i + 2] = y), + (o[i + 3] = -v), + (o[i + 4] = m - T), + (o[i + 5] = 0), + (o[i + 6] = y), + (o[i + 7] = v); + } +} +class NP2FFT { + constructor(e) { + const o = 2 * (e - 1), + i = 2 * (2 * e - 1), + u = 2 ** Math.ceil(Math.log2(i)); + (this.bufferSize = u), (this._a = o); + const n = new Float64Array(i), + s = new Float64Array(u); + (this._chirpBuffer = new Float64Array(u)), + (this._buffer1 = new Float64Array(u)), + (this._buffer2 = new Float64Array(u)), + (this._outBuffer1 = new Float64Array(u)), + (this._outBuffer2 = new Float64Array(u)); + const d = (-2 * Math.PI) / e, + f = Math.cos(d), + r = Math.sin(d); + for (let a = 0; a < i >> 1; ++a) { + const l = (a + 1 - e) ** 2 / 2, + p = Math.sqrt(f ** 2 + r ** 2) ** l, + m = l * Math.atan2(r, f), + y = 2 * a; + (n[y] = p * Math.cos(m)), (n[y + 1] = p * Math.sin(m)), (s[y] = n[y]), (s[y + 1] = -n[y + 1]); + } + (this._slicedChirpBuffer = n.subarray(o, i)), + (this._f = new P2FFT(u >> 1)), + this._f.transform(this._chirpBuffer, s); + } + _transform(e, o, i) { + const u = this._buffer1, + n = this._buffer2, + s = this._outBuffer1, + d = this._outBuffer2, + f = this._chirpBuffer, + r = this._slicedChirpBuffer, + a = this._a; + if (i) + for (let l = 0; l < r.length; l += 2) { + const p = l + 1, + m = l >> 1, + y = o[m]; + (u[l] = y * r[l]), (u[p] = y * r[p]); + } + else + for (let l = 0; l < r.length; l += 2) { + const p = l + 1; + (u[l] = o[l] * r[l] - o[p] * r[p]), (u[p] = o[l] * r[p] + o[p] * r[l]); + } + this._f.transform(s, u); + for (let l = 0; l < f.length; l += 2) { + const p = l + 1; + (n[l] = s[l] * f[l] - s[p] * f[p]), (n[p] = s[l] * f[p] + s[p] * f[l]); + } + this._f.inverseTransform(d, n); + for (let l = 0; l < d.length; l += 2) { + const p = d[l + a], + m = d[l + a + 1], + y = r[l], + T = r[l + 1]; + (e[l] = p * y - m * T), (e[l + 1] = p * T + m * y); + } + } + transform(e, o) { + this._transform(e, o, !1); + } + realTransform(e, o) { + this._transform(e, o, !0); + } +} +class FFT { + constructor(e) { + (this.fft_length = e), + (this.isPowerOfTwo = isPowerOfTwo(e)), + this.isPowerOfTwo + ? ((this.fft = new P2FFT(e)), (this.outputBufferSize = 2 * e)) + : ((this.fft = new NP2FFT(e)), (this.outputBufferSize = this.fft.bufferSize)); + } + realTransform(e, o) { + this.fft.realTransform(e, o); + } + transform(e, o) { + this.fft.transform(e, o); + } +} +function medianFilter(t, e) { + if (e % 2 === 0 || e <= 0) throw new Error('Window size must be a positive odd number'); + const o = new t.constructor(t.length), + i = new t.constructor(e), + u = Math.floor(e / 2); + for (let n = 0; n < t.length; ++n) { + let s = 0; + for (let d = -u; d <= u; ++d) { + let f = n + d; + f < 0 ? (f = Math.abs(f)) : f >= t.length && (f = 2 * (t.length - 1) - f), (i[s++] = t[f]); + } + i.sort(), (o[n] = i[u]); + } + return o; +} +const scriptRel = 'modulepreload', + assetsURL = function (t) { + return '/' + t; + }, + seen = {}, + __vitePreload = function (e, o, i) { + let u = Promise.resolve(); + if (o && o.length > 0) { + const n = document.getElementsByTagName('link'); + u = Promise.all( + o.map((s) => { + if (((s = assetsURL(s)), s in seen)) return; + seen[s] = !0; + const d = s.endsWith('.css'), + f = d ? '[rel="stylesheet"]' : ''; + if (!!i) + for (let l = n.length - 1; l >= 0; l--) { + const p = n[l]; + if (p.href === s && (!d || p.rel === 'stylesheet')) return; + } + else if (document.querySelector(`link[href="${s}"]${f}`)) return; + const a = document.createElement('link'); + if ( + ((a.rel = d ? 'stylesheet' : scriptRel), + d || ((a.as = 'script'), (a.crossOrigin = '')), + (a.href = s), + document.head.appendChild(a), + d) + ) + return new Promise((l, p) => { + a.addEventListener('load', l), + a.addEventListener('error', () => p(new Error(`Unable to preload CSS for ${s}`))); + }); + }) + ); + } + return u + .then(() => e()) + .catch((n) => { + const s = new Event('vite:preloadError', { cancelable: !0 }); + if (((s.payload = n), window.dispatchEvent(s), !s.defaultPrevented)) throw n; + }); + }; +/*! + * ONNX Runtime Web v1.17.1 + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. + */ var vd = Object.create, + En = Object.defineProperty, + wd = Object.getOwnPropertyDescriptor, + _d = Object.getOwnPropertyNames, + Od = Object.getPrototypeOf, + Id = Object.prototype.hasOwnProperty, + L = (t, e) => () => (t && (e = t((t = 0))), e), + me = (t, e) => () => (e || t((e = { exports: {} }).exports, e), e.exports), + Pr = (t, e) => { + for (var o in e) En(t, o, { get: e[o], enumerable: !0 }); + }, + Ha = (t, e, o, i) => { + if ((e && typeof e == 'object') || typeof e == 'function') + for (let u of _d(e)) + !Id.call(t, u) && u !== o && En(t, u, { get: () => e[u], enumerable: !(i = wd(e, u)) || i.enumerable }); + return t; + }, + Er = (t, e, o) => ( + (o = t != null ? vd(Od(t)) : {}), + Ha(e || !t || !t.__esModule ? En(o, 'default', { value: t, enumerable: !0 }) : o, t) + ), + rr = (t) => Ha(En({}, '__esModule', { value: !0 }), t), + Dn, + nr, + or, + Ln, + Fn = L(() => { + (Dn = new Map()), + (nr = []), + (or = (t, e, o) => { + if (e && typeof e.init == 'function' && typeof e.createInferenceSessionHandler == 'function') { + let i = Dn.get(t); + if (i === void 0) Dn.set(t, { backend: e, priority: o }); + else { + if (i.priority > o) return; + if (i.priority === o && i.backend !== e) + throw new Error(`cannot register backend "${t}" using priority ${o}`); + } + if (o >= 0) { + let u = nr.indexOf(t); + u !== -1 && nr.splice(u, 1); + for (let n = 0; n < nr.length; n++) + if (Dn.get(nr[n]).priority <= o) { + nr.splice(n, 0, t); + return; + } + nr.push(t); + } + return; + } + throw new TypeError('not a valid backend'); + }), + (Ln = async (t) => { + let e = t.length === 0 ? nr : t, + o = []; + for (let i of e) { + let u = Dn.get(i); + if (u) { + if (u.initialized) return u.backend; + if (u.aborted) continue; + let n = !!u.initPromise; + try { + return ( + n || (u.initPromise = u.backend.init(i)), + await u.initPromise, + (u.initialized = !0), + u.backend + ); + } catch (s) { + n || o.push({ name: i, err: s }), (u.aborted = !0); + } finally { + delete u.initPromise; + } + } + } + throw new Error(`no available backend found. ERR: ${o.map((i) => `[${i.name}] ${i.err}`).join(', ')}`); + }); + }), + qa = L(() => { + Fn(); + }), + ja, + Ya = L(() => { + ja = '1.17.1'; + }), + Xa, + ir, + Ho = L(() => { + Ya(), + (Xa = 'warning'), + (ir = { + wasm: {}, + webgl: {}, + webgpu: {}, + versions: { common: ja }, + set logLevel(t) { + if (t !== void 0) { + if (typeof t != 'string' || ['verbose', 'info', 'warning', 'error', 'fatal'].indexOf(t) === -1) + throw new Error(`Unsupported logging level: ${t}`); + Xa = t; + } + }, + get logLevel() { + return Xa; + }, + }), + Object.defineProperty(ir, 'logLevel', { enumerable: !0 }); + }), + Z, + Ka = L(() => { + Ho(), (Z = ir); + }), + Ja, + Za, + Qa = L(() => { + (Ja = (t, e) => { + let o = typeof document < 'u' ? document.createElement('canvas') : new OffscreenCanvas(1, 1); + (o.width = t.dims[3]), (o.height = t.dims[2]); + let i = o.getContext('2d'); + if (i != null) { + let u, n; + e?.tensorLayout !== void 0 && e.tensorLayout === 'NHWC' + ? ((u = t.dims[2]), (n = t.dims[3])) + : ((u = t.dims[3]), (n = t.dims[2])); + let s = e?.format !== void 0 ? e.format : 'RGB', + d = e?.norm, + f, + r; + d === void 0 || d.mean === void 0 + ? (f = [255, 255, 255, 255]) + : typeof d.mean == 'number' + ? (f = [d.mean, d.mean, d.mean, d.mean]) + : ((f = [d.mean[0], d.mean[1], d.mean[2], 0]), d.mean[3] !== void 0 && (f[3] = d.mean[3])), + d === void 0 || d.bias === void 0 + ? (r = [0, 0, 0, 0]) + : typeof d.bias == 'number' + ? (r = [d.bias, d.bias, d.bias, d.bias]) + : ((r = [d.bias[0], d.bias[1], d.bias[2], 0]), d.bias[3] !== void 0 && (r[3] = d.bias[3])); + let a = n * u, + l = 0, + p = a, + m = a * 2, + y = -1; + s === 'RGBA' + ? ((l = 0), (p = a), (m = a * 2), (y = a * 3)) + : s === 'RGB' + ? ((l = 0), (p = a), (m = a * 2)) + : s === 'RBG' && ((l = 0), (m = a), (p = a * 2)); + for (let T = 0; T < n; T++) + for (let v = 0; v < u; v++) { + let S = (t.data[l++] - r[0]) * f[0], + E = (t.data[p++] - r[1]) * f[1], + A = (t.data[m++] - r[2]) * f[2], + F = y === -1 ? 255 : (t.data[y++] - r[3]) * f[3]; + (i.fillStyle = 'rgba(' + S + ',' + E + ',' + A + ',' + F + ')'), i.fillRect(v, T, 1, 1); + } + if ('toDataURL' in o) return o.toDataURL(); + throw new Error('toDataURL is not supported'); + } else throw new Error('Can not access image data'); + }), + (Za = (t, e) => { + let o = + typeof document < 'u' + ? document.createElement('canvas').getContext('2d') + : new OffscreenCanvas(1, 1).getContext('2d'), + i; + if (o != null) { + let u, n, s; + e?.tensorLayout !== void 0 && e.tensorLayout === 'NHWC' + ? ((u = t.dims[2]), (n = t.dims[1]), (s = t.dims[3])) + : ((u = t.dims[3]), (n = t.dims[2]), (s = t.dims[1])); + let d = e !== void 0 && e.format !== void 0 ? e.format : 'RGB', + f = e?.norm, + r, + a; + f === void 0 || f.mean === void 0 + ? (r = [255, 255, 255, 255]) + : typeof f.mean == 'number' + ? (r = [f.mean, f.mean, f.mean, f.mean]) + : ((r = [f.mean[0], f.mean[1], f.mean[2], 255]), f.mean[3] !== void 0 && (r[3] = f.mean[3])), + f === void 0 || f.bias === void 0 + ? (a = [0, 0, 0, 0]) + : typeof f.bias == 'number' + ? (a = [f.bias, f.bias, f.bias, f.bias]) + : ((a = [f.bias[0], f.bias[1], f.bias[2], 0]), f.bias[3] !== void 0 && (a[3] = f.bias[3])); + let l = n * u; + if ( + e !== void 0 && + ((e.format !== void 0 && s === 4 && e.format !== 'RGBA') || + (s === 3 && e.format !== 'RGB' && e.format !== 'BGR')) + ) + throw new Error("Tensor format doesn't match input tensor dims"); + let p = 4, + m = 0, + y = 1, + T = 2, + v = 3, + S = 0, + E = l, + A = l * 2, + F = -1; + d === 'RGBA' + ? ((S = 0), (E = l), (A = l * 2), (F = l * 3)) + : d === 'RGB' + ? ((S = 0), (E = l), (A = l * 2)) + : d === 'RBG' && ((S = 0), (A = l), (E = l * 2)), + (i = o.createImageData(u, n)); + for (let B = 0; B < n * u; m += p, y += p, T += p, v += p, B++) + (i.data[m] = (t.data[S++] - a[0]) * r[0]), + (i.data[y] = (t.data[E++] - a[1]) * r[1]), + (i.data[T] = (t.data[A++] - a[2]) * r[2]), + (i.data[v] = F === -1 ? 255 : (t.data[F++] - a[3]) * r[3]); + } else throw new Error('Can not access image data'); + return i; + }); + }), + qo, + es, + ts, + rs, + ns, + os = L(() => { + $n(), + (qo = (t, e) => { + if (t === void 0) throw new Error('Image buffer must be defined'); + if (e.height === void 0 || e.width === void 0) + throw new Error('Image height and width must be defined'); + if (e.tensorLayout === 'NHWC') throw new Error('NHWC Tensor layout is not supported yet'); + let { height: o, width: i } = e, + u = e.norm ?? { mean: 255, bias: 0 }, + n, + s; + typeof u.mean == 'number' + ? (n = [u.mean, u.mean, u.mean, u.mean]) + : (n = [u.mean[0], u.mean[1], u.mean[2], u.mean[3] ?? 255]), + typeof u.bias == 'number' + ? (s = [u.bias, u.bias, u.bias, u.bias]) + : (s = [u.bias[0], u.bias[1], u.bias[2], u.bias[3] ?? 0]); + let d = e.format !== void 0 ? e.format : 'RGBA', + f = e.tensorFormat !== void 0 && e.tensorFormat !== void 0 ? e.tensorFormat : 'RGB', + r = o * i, + a = f === 'RGBA' ? new Float32Array(r * 4) : new Float32Array(r * 3), + l = 4, + p = 0, + m = 1, + y = 2, + T = 3, + v = 0, + S = r, + E = r * 2, + A = -1; + d === 'RGB' && ((l = 3), (p = 0), (m = 1), (y = 2), (T = -1)), + f === 'RGBA' + ? (A = r * 3) + : f === 'RBG' + ? ((v = 0), (E = r), (S = r * 2)) + : f === 'BGR' && ((E = 0), (S = r), (v = r * 2)); + for (let F = 0; F < r; F++, p += l, y += l, m += l, T += l) + (a[v++] = (t[p] + s[0]) / n[0]), + (a[S++] = (t[m] + s[1]) / n[1]), + (a[E++] = (t[y] + s[2]) / n[2]), + A !== -1 && T !== -1 && (a[A++] = (t[T] + s[3]) / n[3]); + return f === 'RGBA' ? new Ye('float32', a, [1, 4, o, i]) : new Ye('float32', a, [1, 3, o, i]); + }), + (es = async (t, e) => { + let o = typeof HTMLImageElement < 'u' && t instanceof HTMLImageElement, + i = typeof ImageData < 'u' && t instanceof ImageData, + u = typeof ImageBitmap < 'u' && t instanceof ImageBitmap, + n = typeof t == 'string', + s, + d = e ?? {}, + f = () => { + if (typeof document < 'u') return document.createElement('canvas'); + if (typeof OffscreenCanvas < 'u') return new OffscreenCanvas(1, 1); + throw new Error('Canvas is not supported'); + }, + r = (a) => + a instanceof HTMLCanvasElement || a instanceof OffscreenCanvas ? a.getContext('2d') : null; + if (o) { + let a = f(); + (a.width = t.width), (a.height = t.height); + let l = r(a); + if (l != null) { + let p = t.height, + m = t.width; + if ( + (e !== void 0 && + e.resizedHeight !== void 0 && + e.resizedWidth !== void 0 && + ((p = e.resizedHeight), (m = e.resizedWidth)), + e !== void 0) + ) { + if (((d = e), e.tensorFormat !== void 0)) + throw new Error('Image input config format must be RGBA for HTMLImageElement'); + (d.tensorFormat = 'RGBA'), (d.height = p), (d.width = m); + } else (d.tensorFormat = 'RGBA'), (d.height = p), (d.width = m); + l.drawImage(t, 0, 0), (s = l.getImageData(0, 0, m, p).data); + } else throw new Error('Can not access image data'); + } else if (i) { + let a, l; + if ( + (e !== void 0 && e.resizedWidth !== void 0 && e.resizedHeight !== void 0 + ? ((a = e.resizedHeight), (l = e.resizedWidth)) + : ((a = t.height), (l = t.width)), + e !== void 0 && (d = e), + (d.format = 'RGBA'), + (d.height = a), + (d.width = l), + e !== void 0) + ) { + let p = f(); + (p.width = l), (p.height = a); + let m = r(p); + if (m != null) m.putImageData(t, 0, 0), (s = m.getImageData(0, 0, l, a).data); + else throw new Error('Can not access image data'); + } else s = t.data; + } else if (u) { + if (e === void 0) throw new Error('Please provide image config with format for Imagebitmap'); + let a = f(); + (a.width = t.width), (a.height = t.height); + let l = r(a); + if (l != null) { + let p = t.height, + m = t.width; + return ( + l.drawImage(t, 0, 0, m, p), + (s = l.getImageData(0, 0, m, p).data), + (d.height = p), + (d.width = m), + qo(s, d) + ); + } else throw new Error('Can not access image data'); + } else { + if (n) + return new Promise((a, l) => { + let p = f(), + m = r(p); + if (!t || !m) return l(); + let y = new Image(); + (y.crossOrigin = 'Anonymous'), + (y.src = t), + (y.onload = () => { + (p.width = y.width), (p.height = y.height), m.drawImage(y, 0, 0, p.width, p.height); + let T = m.getImageData(0, 0, p.width, p.height); + (d.height = p.height), (d.width = p.width), a(qo(T.data, d)); + }); + }); + throw new Error('Input data provided is not supported - aborted tensor creation'); + } + if (s !== void 0) return qo(s, d); + throw new Error('Input data provided is not supported - aborted tensor creation'); + }), + (ts = (t, e) => { + let { width: o, height: i, download: u, dispose: n } = e, + s = [1, i, o, 4]; + return new Ye({ location: 'texture', type: 'float32', texture: t, dims: s, download: u, dispose: n }); + }), + (rs = (t, e) => { + let { dataType: o, dims: i, download: u, dispose: n } = e; + return new Ye({ + location: 'gpu-buffer', + type: o ?? 'float32', + gpuBuffer: t, + dims: i, + download: u, + dispose: n, + }); + }), + (ns = (t, e, o) => new Ye({ location: 'cpu-pinned', type: t, data: e, dims: o ?? [e.length] })); + }), + Qr, + Cn, + is, + as, + ss = L(() => { + (Qr = new Map([ + ['float32', Float32Array], + ['uint8', Uint8Array], + ['int8', Int8Array], + ['uint16', Uint16Array], + ['float16', Uint16Array], + ['int16', Int16Array], + ['int32', Int32Array], + ['bool', Uint8Array], + ['float64', Float64Array], + ['uint32', Uint32Array], + ])), + (Cn = new Map([ + [Float32Array, 'float32'], + [Uint8Array, 'uint8'], + [Int8Array, 'int8'], + [Uint16Array, 'uint16'], + [Int16Array, 'int16'], + [Int32Array, 'int32'], + [Float64Array, 'float64'], + [Uint32Array, 'uint32'], + ])), + (is = !1), + (as = () => { + if (!is) { + is = !0; + let t = typeof BigInt64Array < 'u' && typeof BigInt64Array.from == 'function', + e = typeof BigUint64Array < 'u' && typeof BigUint64Array.from == 'function'; + t && (Qr.set('int64', BigInt64Array), Cn.set(BigInt64Array, 'int64')), + e && (Qr.set('uint64', BigUint64Array), Cn.set(BigUint64Array, 'uint64')); + } + }); + }), + us, + ls, + fs = L(() => { + $n(), + (us = (t) => { + let e = 1; + for (let o = 0; o < t.length; o++) { + let i = t[o]; + if (typeof i != 'number' || !Number.isSafeInteger(i)) + throw new TypeError(`dims[${o}] must be an integer, got: ${i}`); + if (i < 0) throw new RangeError(`dims[${o}] must be a non-negative integer, got: ${i}`); + e *= i; + } + return e; + }), + (ls = (t, e) => { + switch (t.location) { + case 'cpu': + return new Ye(t.type, t.data, e); + case 'cpu-pinned': + return new Ye({ location: 'cpu-pinned', data: t.data, type: t.type, dims: e }); + case 'texture': + return new Ye({ location: 'texture', texture: t.texture, type: t.type, dims: e }); + case 'gpu-buffer': + return new Ye({ location: 'gpu-buffer', gpuBuffer: t.gpuBuffer, type: t.type, dims: e }); + default: + throw new Error(`tensorReshape: tensor location ${t.location} is not supported`); + } + }); + }), + Ye, + $n = L(() => { + Qa(), + os(), + ss(), + fs(), + (Ye = class { + constructor(t, e, o) { + as(); + let i, u; + if (typeof t == 'object' && 'location' in t) + switch (((this.dataLocation = t.location), (i = t.type), (u = t.dims), t.location)) { + case 'cpu-pinned': { + let s = Qr.get(i); + if (!s) + throw new TypeError(`unsupported type "${i}" to create tensor from pinned buffer`); + if (!(t.data instanceof s)) throw new TypeError(`buffer should be of type ${s.name}`); + this.cpuData = t.data; + break; + } + case 'texture': { + if (i !== 'float32') + throw new TypeError(`unsupported type "${i}" to create tensor from texture`); + (this.gpuTextureData = t.texture), + (this.downloader = t.download), + (this.disposer = t.dispose); + break; + } + case 'gpu-buffer': { + if ( + i !== 'float32' && + i !== 'float16' && + i !== 'int32' && + i !== 'int64' && + i !== 'uint32' && + i !== 'bool' + ) + throw new TypeError(`unsupported type "${i}" to create tensor from gpu buffer`); + (this.gpuBufferData = t.gpuBuffer), + (this.downloader = t.download), + (this.disposer = t.dispose); + break; + } + default: + throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`); + } + else { + let s, d; + if (typeof t == 'string') + if (((i = t), (d = o), t === 'string')) { + if (!Array.isArray(e)) + throw new TypeError("A string tensor's data must be a string array."); + s = e; + } else { + let f = Qr.get(t); + if (f === void 0) throw new TypeError(`Unsupported tensor type: ${t}.`); + if (Array.isArray(e)) { + if (t === 'float16') + throw new TypeError( + 'Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.' + ); + t === 'uint64' || t === 'int64' ? (s = f.from(e, BigInt)) : (s = f.from(e)); + } else if (e instanceof f) s = e; + else throw new TypeError(`A ${i} tensor's data must be type of ${f}`); + } + else if (((d = e), Array.isArray(t))) { + if (t.length === 0) + throw new TypeError('Tensor type cannot be inferred from an empty array.'); + let f = typeof t[0]; + if (f === 'string') (i = 'string'), (s = t); + else if (f === 'boolean') (i = 'bool'), (s = Uint8Array.from(t)); + else throw new TypeError(`Invalid element type of data array: ${f}.`); + } else { + let f = Cn.get(t.constructor); + if (f === void 0) + throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`); + (i = f), (s = t); + } + if (d === void 0) d = [s.length]; + else if (!Array.isArray(d)) throw new TypeError("A tensor's dims must be a number array"); + (u = d), (this.cpuData = s), (this.dataLocation = 'cpu'); + } + let n = us(u); + if (this.cpuData && n !== this.cpuData.length) + throw new Error(`Tensor's size(${n}) does not match data length(${this.cpuData.length}).`); + (this.type = i), (this.dims = u), (this.size = n); + } + static async fromImage(t, e) { + return es(t, e); + } + static fromTexture(t, e) { + return ts(t, e); + } + static fromGpuBuffer(t, e) { + return rs(t, e); + } + static fromPinnedBuffer(t, e, o) { + return ns(t, e, o); + } + toDataURL(t) { + return Ja(this, t); + } + toImageData(t) { + return Za(this, t); + } + get data() { + if ((this.ensureValid(), !this.cpuData)) + throw new Error( + 'The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.' + ); + return this.cpuData; + } + get location() { + return this.dataLocation; + } + get texture() { + if ((this.ensureValid(), !this.gpuTextureData)) + throw new Error('The data is not stored as a WebGL texture.'); + return this.gpuTextureData; + } + get gpuBuffer() { + if ((this.ensureValid(), !this.gpuBufferData)) + throw new Error('The data is not stored as a WebGPU buffer.'); + return this.gpuBufferData; + } + async getData(t) { + switch ((this.ensureValid(), this.dataLocation)) { + case 'cpu': + case 'cpu-pinned': + return this.data; + case 'texture': + case 'gpu-buffer': { + if (!this.downloader) + throw new Error('The current tensor is not created with a specified data downloader.'); + if (this.isDownloading) throw new Error('The current tensor is being downloaded.'); + try { + this.isDownloading = !0; + let e = await this.downloader(); + return ( + (this.downloader = void 0), + (this.dataLocation = 'cpu'), + (this.cpuData = e), + t && this.disposer && (this.disposer(), (this.disposer = void 0)), + e + ); + } finally { + this.isDownloading = !1; + } + } + default: + throw new Error(`cannot get data from location: ${this.dataLocation}`); + } + } + dispose() { + if (this.isDownloading) throw new Error('The current tensor is being downloaded.'); + this.disposer && (this.disposer(), (this.disposer = void 0)), + (this.cpuData = void 0), + (this.gpuTextureData = void 0), + (this.gpuBufferData = void 0), + (this.downloader = void 0), + (this.isDownloading = void 0), + (this.dataLocation = 'none'); + } + ensureValid() { + if (this.dataLocation === 'none') throw new Error('The tensor is disposed.'); + } + reshape(t) { + if ((this.ensureValid(), this.downloader || this.disposer)) + throw new Error('Cannot reshape a tensor that owns GPU resource.'); + return ls(this, t); + } + }); + }), + Re, + kn = L(() => { + $n(), (Re = Ye); + }), + cs, + ps, + ar, + sr, + jo = L(() => { + Ho(), + (cs = (t, e) => { + ir.wasm.trace && console.timeStamp(`${t}::ORT::${e}`); + }), + (ps = (t, e) => { + let o = new Error().stack?.split(/\r\n|\r|\n/g) || [], + i = !1; + for (let u = 0; u < o.length; u++) { + if (i && !o[u].includes('TRACE_FUNC')) { + let n = `FUNC_${t}::${o[u].trim().split(' ')[1]}`; + e && (n += `::${e}`), cs('CPU', n); + return; + } + o[u].includes('TRACE_FUNC') && (i = !0); + } + }), + (ar = (t) => { + ir.wasm.trace && ps('BEGIN', t); + }), + (sr = (t) => { + ir.wasm.trace && ps('END', t); + }); + }), + Bn, + ds = L(() => { + Fn(), + kn(), + jo(), + (Bn = class Rs { + constructor(e) { + this.handler = e; + } + async run(e, o, i) { + ar(); + let u = {}, + n = {}; + if (typeof e != 'object' || e === null || e instanceof Re || Array.isArray(e)) + throw new TypeError( + "'feeds' must be an object that use input names as keys and OnnxValue as corresponding values." + ); + let s = !0; + if (typeof o == 'object') { + if (o === null) throw new TypeError('Unexpected argument[1]: cannot be null.'); + if (o instanceof Re) throw new TypeError("'fetches' cannot be a Tensor"); + if (Array.isArray(o)) { + if (o.length === 0) throw new TypeError("'fetches' cannot be an empty array."); + s = !1; + for (let r of o) { + if (typeof r != 'string') + throw new TypeError("'fetches' must be a string array or an object."); + if (this.outputNames.indexOf(r) === -1) + throw new RangeError(`'fetches' contains invalid output name: ${r}.`); + u[r] = null; + } + if (typeof i == 'object' && i !== null) n = i; + else if (typeof i < 'u') throw new TypeError("'options' must be an object."); + } else { + let r = !1, + a = Object.getOwnPropertyNames(o); + for (let l of this.outputNames) + if (a.indexOf(l) !== -1) { + let p = o[l]; + (p === null || p instanceof Re) && ((r = !0), (s = !1), (u[l] = p)); + } + if (r) { + if (typeof i == 'object' && i !== null) n = i; + else if (typeof i < 'u') throw new TypeError("'options' must be an object."); + } else n = o; + } + } else if (typeof o < 'u') + throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'."); + for (let r of this.inputNames) + if (typeof e[r] > 'u') throw new Error(`input '${r}' is missing in 'feeds'.`); + if (s) for (let r of this.outputNames) u[r] = null; + let d = await this.handler.run(e, u, n), + f = {}; + for (let r in d) + if (Object.hasOwnProperty.call(d, r)) { + let a = d[r]; + a instanceof Re ? (f[r] = a) : (f[r] = new Re(a.type, a.data, a.dims)); + } + return sr(), f; + } + async release() { + return this.handler.dispose(); + } + static async create(e, o, i, u) { + ar(); + let n, + s = {}; + if (typeof e == 'string') { + if (((n = e), typeof o == 'object' && o !== null)) s = o; + else if (typeof o < 'u') throw new TypeError("'options' must be an object."); + } else if (e instanceof Uint8Array) { + if (((n = e), typeof o == 'object' && o !== null)) s = o; + else if (typeof o < 'u') throw new TypeError("'options' must be an object."); + } else if ( + e instanceof ArrayBuffer || + (typeof SharedArrayBuffer < 'u' && e instanceof SharedArrayBuffer) + ) { + let r = e, + a = 0, + l = e.byteLength; + if (typeof o == 'object' && o !== null) s = o; + else if (typeof o == 'number') { + if (((a = o), !Number.isSafeInteger(a))) + throw new RangeError("'byteOffset' must be an integer."); + if (a < 0 || a >= r.byteLength) + throw new RangeError(`'byteOffset' is out of range [0, ${r.byteLength}).`); + if (((l = e.byteLength - a), typeof i == 'number')) { + if (((l = i), !Number.isSafeInteger(l))) + throw new RangeError("'byteLength' must be an integer."); + if (l <= 0 || a + l > r.byteLength) + throw new RangeError(`'byteLength' is out of range (0, ${r.byteLength - a}].`); + if (typeof u == 'object' && u !== null) s = u; + else if (typeof u < 'u') throw new TypeError("'options' must be an object."); + } else if (typeof i < 'u') throw new TypeError("'byteLength' must be a number."); + } else if (typeof o < 'u') throw new TypeError("'options' must be an object."); + n = new Uint8Array(r, a, l); + } else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'."); + let d = (s.executionProviders || []).map((r) => (typeof r == 'string' ? r : r.name)), + f = await (await Ln(d)).createInferenceSessionHandler(n, s); + return sr(), new Rs(f); + } + startProfiling() { + this.handler.startProfiling(); + } + endProfiling() { + this.handler.endProfiling(); + } + get inputNames() { + return this.handler.inputNames; + } + get outputNames() { + return this.handler.outputNames; + } + }); + }), + Sd, + hs = L(() => { + ds(), (Sd = Bn); + }), + ms = L(() => {}), + Ad, + Nn, + bs = L(() => { + Fn(), + kn(), + (Ad = + "Training backend could not be resolved. Make sure you're using the correct configuration & WebAssembly files."), + (Nn = class Bs { + constructor(e, o, i) { + (this.handler = e), (this.hasOptimizerModel = o), (this.hasEvalModel = i); + } + get trainingInputNames() { + return this.handler.inputNames; + } + get trainingOutputNames() { + return this.handler.outputNames; + } + get evalInputNames() { + if (this.hasEvalModel) return this.handler.evalInputNames; + throw new Error('This training session has no evalModel loaded.'); + } + get evalOutputNames() { + if (this.hasEvalModel) return this.handler.evalOutputNames; + throw new Error('This training session has no evalModel loaded.'); + } + static async create(e, o) { + let i = e.evalModel || '', + u = e.optimizerModel || '', + n = o || {}, + s = (n.executionProviders || []).map((f) => (typeof f == 'string' ? f : f.name)), + d = await Ln(s); + if (d.createTrainingSessionHandler) { + let f = await d.createTrainingSessionHandler(e.checkpointState, e.trainModel, i, u, n); + return new Bs(f, !!e.optimizerModel, !!e.evalModel); + } else throw new Error(Ad); + } + typeNarrowingForRunStep(e, o, i, u, n) { + let s = {}, + d = {}; + if (typeof i != 'object' || i === null || i instanceof Re || Array.isArray(i)) + throw new TypeError( + "'feeds' must be an object that use input names as keys and OnnxValue as corresponding values." + ); + let f = !0; + if (typeof u == 'object') { + if (u === null) throw new TypeError('Unexpected argument[1]: cannot be null.'); + if (u instanceof Re) throw new TypeError("'fetches' cannot be a Tensor"); + if (Array.isArray(u)) { + if (u.length === 0) throw new TypeError("'fetches' cannot be an empty array."); + f = !1; + for (let r of u) { + if (typeof r != 'string') + throw new TypeError("'fetches' must be a string array or an object."); + if (o.indexOf(r) === -1) + throw new RangeError(`'fetches' contains invalid output name: ${r}.`); + s[r] = null; + } + if (typeof n == 'object' && n !== null) d = n; + else if (typeof n < 'u') throw new TypeError("'options' must be an object."); + } else { + let r = !1, + a = Object.getOwnPropertyNames(u); + for (let l of o) + if (a.indexOf(l) !== -1) { + let p = u[l]; + (p === null || p instanceof Re) && ((r = !0), (f = !1), (s[l] = p)); + } + if (r) { + if (typeof n == 'object' && n !== null) d = n; + else if (typeof n < 'u') throw new TypeError("'options' must be an object."); + } else d = u; + } + } else if (typeof u < 'u') + throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'."); + for (let r of e) if (typeof i[r] > 'u') throw new Error(`input '${r}' is missing in 'feeds'.`); + if (f) for (let r of o) s[r] = null; + return [s, d]; + } + convertHandlerReturnTypeToMapOfTensors(e) { + let o = {}; + for (let i in e) + if (Object.hasOwnProperty.call(e, i)) { + let u = e[i]; + u instanceof Re ? (o[i] = u) : (o[i] = new Re(u.type, u.data, u.dims)); + } + return o; + } + async lazyResetGrad() { + await this.handler.lazyResetGrad(); + } + async runTrainStep(e, o, i) { + let [u, n] = this.typeNarrowingForRunStep( + this.trainingInputNames, + this.trainingOutputNames, + e, + o, + i + ), + s = await this.handler.runTrainStep(e, u, n); + return this.convertHandlerReturnTypeToMapOfTensors(s); + } + async runOptimizerStep(e) { + if (this.hasOptimizerModel) await this.handler.runOptimizerStep(e || {}); + else throw new Error('This TrainingSession has no OptimizerModel loaded.'); + } + async runEvalStep(e, o, i) { + if (this.hasEvalModel) { + let [u, n] = this.typeNarrowingForRunStep(this.evalInputNames, this.evalOutputNames, e, o, i), + s = await this.handler.runEvalStep(e, u, n); + return this.convertHandlerReturnTypeToMapOfTensors(s); + } else throw new Error('This TrainingSession has no EvalModel loaded.'); + } + async getParametersSize(e = !0) { + return this.handler.getParametersSize(e); + } + async loadParametersBuffer(e, o = !0) { + let i = await this.getParametersSize(o); + if (e.length !== 4 * i) + throw new Error( + 'Size of the buffer passed into loadParametersBuffer must match the number of parameters in the model. Please use getParametersSize method to check.' + ); + return this.handler.loadParametersBuffer(e, o); + } + async getContiguousParameters(e = !0) { + return this.handler.getContiguousParameters(e); + } + async release() { + return this.handler.dispose(); + } + }); + }), + Pd, + gs = L(() => { + bs(), (Pd = Nn); + }), + Yo = {}; +Pr(Yo, { + InferenceSession: () => Sd, + TRACE: () => cs, + TRACE_FUNC_BEGIN: () => ar, + TRACE_FUNC_END: () => sr, + Tensor: () => Re, + TrainingSession: () => Pd, + env: () => Z, + registerBackend: () => or, +}); +var vt = L(() => { + qa(), Ka(), hs(), kn(), jo(), ms(), gs(); +}); +function jt(t, e, o, i) { + if (e === void 0) return Dd(t); + if (o === void 0) Rn(t, e); + else if (typeof o == 'number' && i === void 0) Rn(t, e); + else if (typeof o == 'string' && i === void 0) Rn(t, o, 1, e); + else if (typeof o == 'string' && typeof i == 'number') Rn(t, o, i, e); + else throw new TypeError('input is valid'); +} +function Dd(t) { + return { + verbose: jt.verbose.bind(null, t), + info: jt.info.bind(null, t), + warning: jt.warning.bind(null, t), + error: jt.error.bind(null, t), + fatal: jt.fatal.bind(null, t), + }; +} +function Rn(t, e, o, i) { + let u = en[i || ''] || en['']; + Ts[t] < Ts[u.minimalSeverity] || + (u.logDateTime && (e = `${new Date().toISOString()}|${e}`), u.logSourceLocation, Ed[u.provider].log(t, e, i)); +} +var Xo, + Ko, + Ts, + Ed, + xs, + en, + ce, + Gn, + Un, + zn, + Mn, + ut = L(() => { + (Xo = class { + log(t, e, o) {} + }), + (Ko = class { + log(t, e, o) { + console.log(`${this.color(t)} ${o ? '\x1B[35m' + o + '\x1B[0m ' : ''}${e}`); + } + color(t) { + switch (t) { + case 'verbose': + return '\x1B[34;40mv\x1B[0m'; + case 'info': + return '\x1B[32mi\x1B[0m'; + case 'warning': + return '\x1B[30;43mw\x1B[0m'; + case 'error': + return '\x1B[31;40me\x1B[0m'; + case 'fatal': + return '\x1B[101mf\x1B[0m'; + default: + throw new Error(`unsupported severity: ${t}`); + } + } + }), + (Ts = { verbose: 1e3, info: 2e3, warning: 4e3, error: 5e3, fatal: 6e3 }), + (Ed = { none: new Xo(), console: new Ko() }), + (xs = { provider: 'console', minimalSeverity: 'warning', logDateTime: !0, logSourceLocation: !1 }), + (en = { '': xs }), + ((t) => { + function e(r, a) { + t('verbose', r, a); + } + t.verbose = e; + function o(r, a) { + t('info', r, a); + } + t.info = o; + function i(r, a) { + t('warning', r, a); + } + t.warning = i; + function u(r, a) { + t('error', r, a); + } + t.error = u; + function n(r, a) { + t('fatal', r, a); + } + t.fatal = n; + function s(r) { + (en = {}), d('', r || {}); + } + t.reset = s; + function d(r, a) { + if (r === '*') s(a); + else { + let l = en[r] || xs; + en[r] = { + provider: a.provider || l.provider, + minimalSeverity: a.minimalSeverity || l.minimalSeverity, + logDateTime: a.logDateTime === void 0 ? l.logDateTime : a.logDateTime, + logSourceLocation: + a.logSourceLocation === void 0 ? l.logSourceLocation : a.logSourceLocation, + }; + } + } + t.set = d; + function f(r) { + let a = {}; + r.logLevel && (a.minimalSeverity = r.logLevel), d('', a); + } + t.setWithEnv = f; + })((jt ||= {})), + (ce = jt), + (Gn = class { + constructor(t, e, o, i, u, n) { + (this.category = t), + (this.name = e), + (this.startTime = o), + (this.endCallback = i), + (this.timer = u), + (this.ctx = n); + } + async end() { + return this.endCallback(this); + } + async checkTimer() { + if (this.ctx === void 0 || this.timer === void 0) throw new Error('No webgl timer found'); + return this.ctx.endTimer(), this.ctx.waitForQueryAndGetTime(this.timer); + } + }), + (Un = class { + constructor(t, e, o, i) { + (this.category = t), (this.name = e), (this.startTime = o), (this.endTime = i); + } + }), + (zn = class { + constructor(t, e, o) { + (this._started = !1), + (this._flushPointer = 0), + (this._started = !1), + (this._maxNumberEvents = t === void 0 ? 1e4 : t), + (this._flushBatchSize = e === void 0 ? 10 : e), + (this._flushIntervalInMilliseconds = o === void 0 ? 5e3 : o); + } + static create(t) { + return t === void 0 + ? new this() + : new this(t.maxNumberEvents, t.flushBatchSize, t.flushIntervalInMilliseconds); + } + start() { + (this._started = !0), (this._timingEvents = []), (this._flushTime = Mn()), (this._flushPointer = 0); + } + stop() { + for (this._started = !1; this._flushPointer < this._timingEvents.length; this._flushPointer++) + this.logOneEvent(this._timingEvents[this._flushPointer]); + } + event(t, e, o, i) { + let u = this._started ? this.begin(t, e, i) : void 0, + n = !1, + s = o(); + if (s && typeof s.then == 'function') + return ( + (n = !0), + new Promise((d, f) => { + s.then( + async (r) => { + u && (await u.end()), d(r); + }, + async (r) => { + u && (await u.end()), f(r); + } + ); + }) + ); + if (!n && u) { + let d = u.end(); + if (d && typeof d.then == 'function') + return new Promise((f, r) => { + d.then( + () => { + f(s); + }, + (a) => { + r(a); + } + ); + }); + } + return s; + } + begin(t, e, o) { + if (!this._started) throw new Error('profiler is not started yet'); + if (o === void 0) { + let i = Mn(); + return this.flush(i), new Gn(t, e, i, (u) => this.endSync(u)); + } else { + let i = o.beginTimer(); + return new Gn(t, e, 0, async (u) => this.end(u), i, o); + } + } + async end(t) { + let e = await t.checkTimer(); + this._timingEvents.length < this._maxNumberEvents && + (this._timingEvents.push(new Un(t.category, t.name, t.startTime, e)), this.flush(e)); + } + endSync(t) { + let e = Mn(); + this._timingEvents.length < this._maxNumberEvents && + (this._timingEvents.push(new Un(t.category, t.name, t.startTime, e)), this.flush(e)); + } + logOneEvent(t) { + ce.verbose( + `Profiler.${t.category}`, + `${(t.endTime - t.startTime).toFixed(2)}ms on event '${t.name}' at ${t.endTime.toFixed(2)}` + ); + } + flush(t) { + if ( + this._timingEvents.length - this._flushPointer >= this._flushBatchSize || + t - this._flushTime >= this._flushIntervalInMilliseconds + ) { + for ( + let e = this._flushPointer; + this._flushPointer < e + this._flushBatchSize && + this._flushPointer < this._timingEvents.length; + this._flushPointer++ + ) + this.logOneEvent(this._timingEvents[this._flushPointer]); + this._flushTime = Mn(); + } + } + get started() { + return this._started; + } + }), + (Mn = typeof performance < 'u' && performance.now ? () => performance.now() : Date.now); + }); +function vs(t, e, o) { + for (let i of o) { + let u = i[0], + n = i[1], + s = i[2], + d = i[3], + f = i[4]; + if (t.opType === u) { + for (let r of e) + if ((r.domain === n || (r.domain === 'ai.onnx' && n === '')) && Ld(r.version, s)) + return { opImpl: d, opInit: f }; + } + } + throw new TypeError( + `cannot resolve operator '${t.opType}' with opsets: ${e + .map((i) => `${i.domain || 'ai.onnx'} v${i.version}`) + .join(', ')}` + ); +} +function Ld(t, e) { + if (e.endsWith('+')) { + let o = Number.parseInt(e.substring(0, e.length - 1), 10); + return !isNaN(o) && o <= t; + } else if (e.split('-').length === 2) { + let o = e.split('-'), + i = Number.parseInt(o[0], 10), + u = Number.parseInt(o[1], 10); + return !isNaN(i) && !isNaN(u) && i <= t && t <= u; + } else return Number.parseInt(e, 10) === t; +} +var ws = L(() => {}), + _s = me((t) => { + t.__esModule = !0; + var e = (function () { + function o(i) { + if (!i) throw new TypeError('Invalid argument; `value` has no value.'); + (this.value = o.EMPTY), i && o.isGuid(i) && (this.value = i); + } + return ( + (o.isGuid = function (i) { + var u = i.toString(); + return i && (i instanceof o || o.validator.test(u)); + }), + (o.create = function () { + return new o([o.gen(2), o.gen(1), o.gen(1), o.gen(1), o.gen(3)].join('-')); + }), + (o.createEmpty = function () { + return new o('emptyguid'); + }), + (o.parse = function (i) { + return new o(i); + }), + (o.raw = function () { + return [o.gen(2), o.gen(1), o.gen(1), o.gen(1), o.gen(3)].join('-'); + }), + (o.gen = function (i) { + for (var u = '', n = 0; n < i; n++) + u += (((1 + Math.random()) * 65536) | 0).toString(16).substring(1); + return u; + }), + (o.prototype.equals = function (i) { + return o.isGuid(i) && this.value === i.toString(); + }), + (o.prototype.isEmpty = function () { + return this.value === o.EMPTY; + }), + (o.prototype.toString = function () { + return this.value; + }), + (o.prototype.toJSON = function () { + return { value: this.value }; + }), + (o.validator = new RegExp('^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$', 'i')), + (o.EMPTY = '00000000-0000-0000-0000-000000000000'), + o + ); + })(); + t.Guid = e; + }); +function be(t, e, o) { + (this.low = t | 0), (this.high = e | 0), (this.unsigned = !!o); +} +function We(t) { + return (t && t.__isLong__) === !0; +} +function Os(t) { + var e = Math.clz32(t & -t); + return t ? 31 - e : e; +} +function ur(t, e) { + var o, i, u; + return e + ? ((t >>>= 0), (u = 0 <= t && t < 256) && ((i = Ss[t]), i) ? i : ((o = le(t, 0, !0)), u && (Ss[t] = o), o)) + : ((t |= 0), + (u = -128 <= t && t < 128) && ((i = Is[t]), i) ? i : ((o = le(t, t < 0 ? -1 : 0, !1)), u && (Is[t] = o), o)); +} +function ft(t, e) { + if (isNaN(t)) return e ? Ut : wt; + if (e) { + if (t < 0) return Ut; + if (t >= Ds) return $s; + } else { + if (t <= -Ps) return tt; + if (t + 1 >= Ps) return Fs; + } + return t < 0 ? ft(-t, e).neg() : le(t % Lr | 0, (t / Lr) | 0, e); +} +function le(t, e, o) { + return new be(t, e, o); +} +function Qo(t, e, o) { + if (t.length === 0) throw Error('empty string'); + if ( + (typeof e == 'number' ? ((o = e), (e = !1)) : (e = !!e), + t === 'NaN' || t === 'Infinity' || t === '+Infinity' || t === '-Infinity') + ) + return e ? Ut : wt; + if (((o = o || 10), o < 2 || 36 < o)) throw RangeError('radix'); + var i; + if ((i = t.indexOf('-')) > 0) throw Error('interior hyphen'); + if (i === 0) return Qo(t.substring(1), e, o).neg(); + for (var u = ft(Vn(o, 8)), n = wt, s = 0; s < t.length; s += 8) { + var d = Math.min(8, t.length - s), + f = parseInt(t.substring(s, s + d), o); + if (d < 8) { + var r = ft(Vn(o, d)); + n = n.mul(r).add(ft(f)); + } else (n = n.mul(u)), (n = n.add(ft(f))); + } + return (n.unsigned = e), n; +} +function _t(t, e) { + return typeof t == 'number' + ? ft(t, e) + : typeof t == 'string' + ? Qo(t, e) + : le(t.low, t.high, typeof e == 'boolean' ? e : t.unsigned); +} +var lt, + Is, + Ss, + Vn, + As, + $d, + Lr, + Ds, + Ps, + Es, + wt, + Ut, + Dr, + Ls, + Zo, + Fs, + $s, + tt, + $, + zt, + ei = L(() => { + lt = null; + try { + lt = new WebAssembly.Instance( + new WebAssembly.Module( + new Uint8Array([ + 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, + 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, + 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, + 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, + 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, + 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, + 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, + 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, + 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, + 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, + 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, + 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, + 167, 11, + ]) + ), + {} + ).exports; + } catch {} + be.prototype.__isLong__, + Object.defineProperty(be.prototype, '__isLong__', { value: !0 }), + (be.isLong = We), + (Is = {}), + (Ss = {}), + (be.fromInt = ur), + (be.fromNumber = ft), + (be.fromBits = le), + (Vn = Math.pow), + (be.fromString = Qo), + (be.fromValue = _t), + (As = 65536), + ($d = 1 << 24), + (Lr = As * As), + (Ds = Lr * Lr), + (Ps = Ds / 2), + (Es = ur($d)), + (wt = ur(0)), + (be.ZERO = wt), + (Ut = ur(0, !0)), + (be.UZERO = Ut), + (Dr = ur(1)), + (be.ONE = Dr), + (Ls = ur(1, !0)), + (be.UONE = Ls), + (Zo = ur(-1)), + (be.NEG_ONE = Zo), + (Fs = le(-1, 2147483647, !1)), + (be.MAX_VALUE = Fs), + ($s = le(-1, -1, !0)), + (be.MAX_UNSIGNED_VALUE = $s), + (tt = le(0, -2147483648, !1)), + (be.MIN_VALUE = tt), + ($ = be.prototype), + ($.toInt = function () { + return this.unsigned ? this.low >>> 0 : this.low; + }), + ($.toNumber = function () { + return this.unsigned ? (this.high >>> 0) * Lr + (this.low >>> 0) : this.high * Lr + (this.low >>> 0); + }), + ($.toString = function (t) { + if (((t = t || 10), t < 2 || 36 < t)) throw RangeError('radix'); + if (this.isZero()) return '0'; + if (this.isNegative()) + if (this.eq(tt)) { + var e = ft(t), + o = this.div(e), + i = o.mul(e).sub(this); + return o.toString(t) + i.toInt().toString(t); + } else return '-' + this.neg().toString(t); + for (var u = ft(Vn(t, 6), this.unsigned), n = this, s = ''; ; ) { + var d = n.div(u), + f = n.sub(d.mul(u)).toInt() >>> 0, + r = f.toString(t); + if (((n = d), n.isZero())) return r + s; + for (; r.length < 6; ) r = '0' + r; + s = '' + r + s; + } + }), + ($.getHighBits = function () { + return this.high; + }), + ($.getHighBitsUnsigned = function () { + return this.high >>> 0; + }), + ($.getLowBits = function () { + return this.low; + }), + ($.getLowBitsUnsigned = function () { + return this.low >>> 0; + }), + ($.getNumBitsAbs = function () { + if (this.isNegative()) return this.eq(tt) ? 64 : this.neg().getNumBitsAbs(); + for (var t = this.high != 0 ? this.high : this.low, e = 31; e > 0 && !(t & (1 << e)); e--); + return this.high != 0 ? e + 33 : e + 1; + }), + ($.isZero = function () { + return this.high === 0 && this.low === 0; + }), + ($.eqz = $.isZero), + ($.isNegative = function () { + return !this.unsigned && this.high < 0; + }), + ($.isPositive = function () { + return this.unsigned || this.high >= 0; + }), + ($.isOdd = function () { + return (this.low & 1) === 1; + }), + ($.isEven = function () { + return (this.low & 1) === 0; + }), + ($.equals = function (t) { + return ( + We(t) || (t = _t(t)), + this.unsigned !== t.unsigned && this.high >>> 31 === 1 && t.high >>> 31 === 1 + ? !1 + : this.high === t.high && this.low === t.low + ); + }), + ($.eq = $.equals), + ($.notEquals = function (t) { + return !this.eq(t); + }), + ($.neq = $.notEquals), + ($.ne = $.notEquals), + ($.lessThan = function (t) { + return this.comp(t) < 0; + }), + ($.lt = $.lessThan), + ($.lessThanOrEqual = function (t) { + return this.comp(t) <= 0; + }), + ($.lte = $.lessThanOrEqual), + ($.le = $.lessThanOrEqual), + ($.greaterThan = function (t) { + return this.comp(t) > 0; + }), + ($.gt = $.greaterThan), + ($.greaterThanOrEqual = function (t) { + return this.comp(t) >= 0; + }), + ($.gte = $.greaterThanOrEqual), + ($.ge = $.greaterThanOrEqual), + ($.compare = function (t) { + if ((We(t) || (t = _t(t)), this.eq(t))) return 0; + var e = this.isNegative(), + o = t.isNegative(); + return e && !o + ? -1 + : !e && o + ? 1 + : this.unsigned + ? t.high >>> 0 > this.high >>> 0 || (t.high === this.high && t.low >>> 0 > this.low >>> 0) + ? -1 + : 1 + : this.sub(t).isNegative() + ? -1 + : 1; + }), + ($.comp = $.compare), + ($.negate = function () { + return !this.unsigned && this.eq(tt) ? tt : this.not().add(Dr); + }), + ($.neg = $.negate), + ($.add = function (t) { + We(t) || (t = _t(t)); + var e = this.high >>> 16, + o = this.high & 65535, + i = this.low >>> 16, + u = this.low & 65535, + n = t.high >>> 16, + s = t.high & 65535, + d = t.low >>> 16, + f = t.low & 65535, + r = 0, + a = 0, + l = 0, + p = 0; + return ( + (p += u + f), + (l += p >>> 16), + (p &= 65535), + (l += i + d), + (a += l >>> 16), + (l &= 65535), + (a += o + s), + (r += a >>> 16), + (a &= 65535), + (r += e + n), + (r &= 65535), + le((l << 16) | p, (r << 16) | a, this.unsigned) + ); + }), + ($.subtract = function (t) { + return We(t) || (t = _t(t)), this.add(t.neg()); + }), + ($.sub = $.subtract), + ($.multiply = function (t) { + if (this.isZero()) return this; + if ((We(t) || (t = _t(t)), lt)) { + var e = lt.mul(this.low, this.high, t.low, t.high); + return le(e, lt.get_high(), this.unsigned); + } + if (t.isZero()) return this.unsigned ? Ut : wt; + if (this.eq(tt)) return t.isOdd() ? tt : wt; + if (t.eq(tt)) return this.isOdd() ? tt : wt; + if (this.isNegative()) return t.isNegative() ? this.neg().mul(t.neg()) : this.neg().mul(t).neg(); + if (t.isNegative()) return this.mul(t.neg()).neg(); + if (this.lt(Es) && t.lt(Es)) return ft(this.toNumber() * t.toNumber(), this.unsigned); + var o = this.high >>> 16, + i = this.high & 65535, + u = this.low >>> 16, + n = this.low & 65535, + s = t.high >>> 16, + d = t.high & 65535, + f = t.low >>> 16, + r = t.low & 65535, + a = 0, + l = 0, + p = 0, + m = 0; + return ( + (m += n * r), + (p += m >>> 16), + (m &= 65535), + (p += u * r), + (l += p >>> 16), + (p &= 65535), + (p += n * f), + (l += p >>> 16), + (p &= 65535), + (l += i * r), + (a += l >>> 16), + (l &= 65535), + (l += u * f), + (a += l >>> 16), + (l &= 65535), + (l += n * d), + (a += l >>> 16), + (l &= 65535), + (a += o * r + i * f + u * d + n * s), + (a &= 65535), + le((p << 16) | m, (a << 16) | l, this.unsigned) + ); + }), + ($.mul = $.multiply), + ($.divide = function (t) { + if ((We(t) || (t = _t(t)), t.isZero())) throw Error('division by zero'); + if (lt) { + if (!this.unsigned && this.high === -2147483648 && t.low === -1 && t.high === -1) return this; + var e = (this.unsigned ? lt.div_u : lt.div_s)(this.low, this.high, t.low, t.high); + return le(e, lt.get_high(), this.unsigned); + } + if (this.isZero()) return this.unsigned ? Ut : wt; + var o, i, u; + if (this.unsigned) { + if ((t.unsigned || (t = t.toUnsigned()), t.gt(this))) return Ut; + if (t.gt(this.shru(1))) return Ls; + u = Ut; + } else { + if (this.eq(tt)) { + if (t.eq(Dr) || t.eq(Zo)) return tt; + if (t.eq(tt)) return Dr; + var n = this.shr(1); + return ( + (o = n.div(t).shl(1)), + o.eq(wt) ? (t.isNegative() ? Dr : Zo) : ((i = this.sub(t.mul(o))), (u = o.add(i.div(t))), u) + ); + } else if (t.eq(tt)) return this.unsigned ? Ut : wt; + if (this.isNegative()) return t.isNegative() ? this.neg().div(t.neg()) : this.neg().div(t).neg(); + if (t.isNegative()) return this.div(t.neg()).neg(); + u = wt; + } + for (i = this; i.gte(t); ) { + o = Math.max(1, Math.floor(i.toNumber() / t.toNumber())); + for ( + var s = Math.ceil(Math.log(o) / Math.LN2), + d = s <= 48 ? 1 : Vn(2, s - 48), + f = ft(o), + r = f.mul(t); + r.isNegative() || r.gt(i); + + ) + (o -= d), (f = ft(o, this.unsigned)), (r = f.mul(t)); + f.isZero() && (f = Dr), (u = u.add(f)), (i = i.sub(r)); + } + return u; + }), + ($.div = $.divide), + ($.modulo = function (t) { + if ((We(t) || (t = _t(t)), lt)) { + var e = (this.unsigned ? lt.rem_u : lt.rem_s)(this.low, this.high, t.low, t.high); + return le(e, lt.get_high(), this.unsigned); + } + return this.sub(this.div(t).mul(t)); + }), + ($.mod = $.modulo), + ($.rem = $.modulo), + ($.not = function () { + return le(~this.low, ~this.high, this.unsigned); + }), + ($.countLeadingZeros = function () { + return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32; + }), + ($.clz = $.countLeadingZeros), + ($.countTrailingZeros = function () { + return this.low ? Os(this.low) : Os(this.high) + 32; + }), + ($.ctz = $.countTrailingZeros), + ($.and = function (t) { + return We(t) || (t = _t(t)), le(this.low & t.low, this.high & t.high, this.unsigned); + }), + ($.or = function (t) { + return We(t) || (t = _t(t)), le(this.low | t.low, this.high | t.high, this.unsigned); + }), + ($.xor = function (t) { + return We(t) || (t = _t(t)), le(this.low ^ t.low, this.high ^ t.high, this.unsigned); + }), + ($.shiftLeft = function (t) { + return ( + We(t) && (t = t.toInt()), + (t &= 63) === 0 + ? this + : t < 32 + ? le(this.low << t, (this.high << t) | (this.low >>> (32 - t)), this.unsigned) + : le(0, this.low << (t - 32), this.unsigned) + ); + }), + ($.shl = $.shiftLeft), + ($.shiftRight = function (t) { + return ( + We(t) && (t = t.toInt()), + (t &= 63) === 0 + ? this + : t < 32 + ? le((this.low >>> t) | (this.high << (32 - t)), this.high >> t, this.unsigned) + : le(this.high >> (t - 32), this.high >= 0 ? 0 : -1, this.unsigned) + ); + }), + ($.shr = $.shiftRight), + ($.shiftRightUnsigned = function (t) { + return ( + We(t) && (t = t.toInt()), + (t &= 63) === 0 + ? this + : t < 32 + ? le((this.low >>> t) | (this.high << (32 - t)), this.high >>> t, this.unsigned) + : t === 32 + ? le(this.high, 0, this.unsigned) + : le(this.high >>> (t - 32), 0, this.unsigned) + ); + }), + ($.shru = $.shiftRightUnsigned), + ($.shr_u = $.shiftRightUnsigned), + ($.rotateLeft = function (t) { + var e; + return ( + We(t) && (t = t.toInt()), + (t &= 63) === 0 + ? this + : t === 32 + ? le(this.high, this.low, this.unsigned) + : t < 32 + ? ((e = 32 - t), + le((this.low << t) | (this.high >>> e), (this.high << t) | (this.low >>> e), this.unsigned)) + : ((t -= 32), + (e = 32 - t), + le((this.high << t) | (this.low >>> e), (this.low << t) | (this.high >>> e), this.unsigned)) + ); + }), + ($.rotl = $.rotateLeft), + ($.rotateRight = function (t) { + var e; + return ( + We(t) && (t = t.toInt()), + (t &= 63) === 0 + ? this + : t === 32 + ? le(this.high, this.low, this.unsigned) + : t < 32 + ? ((e = 32 - t), + le((this.high << e) | (this.low >>> t), (this.low << e) | (this.high >>> t), this.unsigned)) + : ((t -= 32), + (e = 32 - t), + le((this.low << e) | (this.high >>> t), (this.high << e) | (this.low >>> t), this.unsigned)) + ); + }), + ($.rotr = $.rotateRight), + ($.toSigned = function () { + return this.unsigned ? le(this.low, this.high, !1) : this; + }), + ($.toUnsigned = function () { + return this.unsigned ? this : le(this.low, this.high, !0); + }), + ($.toBytes = function (t) { + return t ? this.toBytesLE() : this.toBytesBE(); + }), + ($.toBytesLE = function () { + var t = this.high, + e = this.low; + return [ + e & 255, + (e >>> 8) & 255, + (e >>> 16) & 255, + e >>> 24, + t & 255, + (t >>> 8) & 255, + (t >>> 16) & 255, + t >>> 24, + ]; + }), + ($.toBytesBE = function () { + var t = this.high, + e = this.low; + return [ + t >>> 24, + (t >>> 16) & 255, + (t >>> 8) & 255, + t & 255, + e >>> 24, + (e >>> 16) & 255, + (e >>> 8) & 255, + e & 255, + ]; + }), + (be.fromBytes = function (t, e, o) { + return o ? be.fromBytesLE(t, e) : be.fromBytesBE(t, e); + }), + (be.fromBytesLE = function (t, e) { + return new be( + t[0] | (t[1] << 8) | (t[2] << 16) | (t[3] << 24), + t[4] | (t[5] << 8) | (t[6] << 16) | (t[7] << 24), + e + ); + }), + (be.fromBytesBE = function (t, e) { + return new be( + (t[4] << 24) | (t[5] << 16) | (t[6] << 8) | t[7], + (t[0] << 24) | (t[1] << 16) | (t[2] << 8) | t[3], + e + ); + }), + (zt = be); + }), + _, + Wn = L(() => { + (_ = {}), + _.Offset, + _.Table, + (_.SIZEOF_SHORT = 2), + (_.SIZEOF_INT = 4), + (_.FILE_IDENTIFIER_LENGTH = 4), + (_.SIZE_PREFIX_LENGTH = 4), + (_.Encoding = { UTF8_BYTES: 1, UTF16_STRING: 2 }), + (_.int32 = new Int32Array(2)), + (_.float32 = new Float32Array(_.int32.buffer)), + (_.float64 = new Float64Array(_.int32.buffer)), + (_.isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1), + (_.Long = function (t, e) { + (this.low = t | 0), (this.high = e | 0); + }), + (_.Long.create = function (t, e) { + return t == 0 && e == 0 ? _.Long.ZERO : new _.Long(t, e); + }), + (_.Long.prototype.toFloat64 = function () { + return (this.low >>> 0) + this.high * 4294967296; + }), + (_.Long.prototype.equals = function (t) { + return this.low == t.low && this.high == t.high; + }), + (_.Long.ZERO = new _.Long(0, 0)), + (_.Builder = function (t) { + if (t) var e = t; + else var e = 1024; + (this.bb = _.ByteBuffer.allocate(e)), + (this.space = e), + (this.minalign = 1), + (this.vtable = null), + (this.vtable_in_use = 0), + (this.isNested = !1), + (this.object_start = 0), + (this.vtables = []), + (this.vector_num_elems = 0), + (this.force_defaults = !1); + }), + (_.Builder.prototype.clear = function () { + this.bb.clear(), + (this.space = this.bb.capacity()), + (this.minalign = 1), + (this.vtable = null), + (this.vtable_in_use = 0), + (this.isNested = !1), + (this.object_start = 0), + (this.vtables = []), + (this.vector_num_elems = 0), + (this.force_defaults = !1); + }), + (_.Builder.prototype.forceDefaults = function (t) { + this.force_defaults = t; + }), + (_.Builder.prototype.dataBuffer = function () { + return this.bb; + }), + (_.Builder.prototype.asUint8Array = function () { + return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset()); + }), + (_.Builder.prototype.prep = function (t, e) { + t > this.minalign && (this.minalign = t); + for (var o = (~(this.bb.capacity() - this.space + e) + 1) & (t - 1); this.space < o + t + e; ) { + var i = this.bb.capacity(); + (this.bb = _.Builder.growByteBuffer(this.bb)), (this.space += this.bb.capacity() - i); + } + this.pad(o); + }), + (_.Builder.prototype.pad = function (t) { + for (var e = 0; e < t; e++) this.bb.writeInt8(--this.space, 0); + }), + (_.Builder.prototype.writeInt8 = function (t) { + this.bb.writeInt8((this.space -= 1), t); + }), + (_.Builder.prototype.writeInt16 = function (t) { + this.bb.writeInt16((this.space -= 2), t); + }), + (_.Builder.prototype.writeInt32 = function (t) { + this.bb.writeInt32((this.space -= 4), t); + }), + (_.Builder.prototype.writeInt64 = function (t) { + this.bb.writeInt64((this.space -= 8), t); + }), + (_.Builder.prototype.writeFloat32 = function (t) { + this.bb.writeFloat32((this.space -= 4), t); + }), + (_.Builder.prototype.writeFloat64 = function (t) { + this.bb.writeFloat64((this.space -= 8), t); + }), + (_.Builder.prototype.addInt8 = function (t) { + this.prep(1, 0), this.writeInt8(t); + }), + (_.Builder.prototype.addInt16 = function (t) { + this.prep(2, 0), this.writeInt16(t); + }), + (_.Builder.prototype.addInt32 = function (t) { + this.prep(4, 0), this.writeInt32(t); + }), + (_.Builder.prototype.addInt64 = function (t) { + this.prep(8, 0), this.writeInt64(t); + }), + (_.Builder.prototype.addFloat32 = function (t) { + this.prep(4, 0), this.writeFloat32(t); + }), + (_.Builder.prototype.addFloat64 = function (t) { + this.prep(8, 0), this.writeFloat64(t); + }), + (_.Builder.prototype.addFieldInt8 = function (t, e, o) { + (this.force_defaults || e != o) && (this.addInt8(e), this.slot(t)); + }), + (_.Builder.prototype.addFieldInt16 = function (t, e, o) { + (this.force_defaults || e != o) && (this.addInt16(e), this.slot(t)); + }), + (_.Builder.prototype.addFieldInt32 = function (t, e, o) { + (this.force_defaults || e != o) && (this.addInt32(e), this.slot(t)); + }), + (_.Builder.prototype.addFieldInt64 = function (t, e, o) { + (this.force_defaults || !e.equals(o)) && (this.addInt64(e), this.slot(t)); + }), + (_.Builder.prototype.addFieldFloat32 = function (t, e, o) { + (this.force_defaults || e != o) && (this.addFloat32(e), this.slot(t)); + }), + (_.Builder.prototype.addFieldFloat64 = function (t, e, o) { + (this.force_defaults || e != o) && (this.addFloat64(e), this.slot(t)); + }), + (_.Builder.prototype.addFieldOffset = function (t, e, o) { + (this.force_defaults || e != o) && (this.addOffset(e), this.slot(t)); + }), + (_.Builder.prototype.addFieldStruct = function (t, e, o) { + e != o && (this.nested(e), this.slot(t)); + }), + (_.Builder.prototype.nested = function (t) { + if (t != this.offset()) throw new Error('FlatBuffers: struct must be serialized inline.'); + }), + (_.Builder.prototype.notNested = function () { + if (this.isNested) throw new Error('FlatBuffers: object serialization must not be nested.'); + }), + (_.Builder.prototype.slot = function (t) { + this.vtable[t] = this.offset(); + }), + (_.Builder.prototype.offset = function () { + return this.bb.capacity() - this.space; + }), + (_.Builder.growByteBuffer = function (t) { + var e = t.capacity(); + if (e & 3221225472) throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.'); + var o = e << 1, + i = _.ByteBuffer.allocate(o); + return i.setPosition(o - e), i.bytes().set(t.bytes(), o - e), i; + }), + (_.Builder.prototype.addOffset = function (t) { + this.prep(_.SIZEOF_INT, 0), this.writeInt32(this.offset() - t + _.SIZEOF_INT); + }), + (_.Builder.prototype.startObject = function (t) { + this.notNested(), this.vtable == null && (this.vtable = []), (this.vtable_in_use = t); + for (var e = 0; e < t; e++) this.vtable[e] = 0; + (this.isNested = !0), (this.object_start = this.offset()); + }), + (_.Builder.prototype.endObject = function () { + if (this.vtable == null || !this.isNested) + throw new Error('FlatBuffers: endObject called without startObject'); + this.addInt32(0); + for (var t = this.offset(), e = this.vtable_in_use - 1; e >= 0 && this.vtable[e] == 0; e--); + for (var o = e + 1; e >= 0; e--) this.addInt16(this.vtable[e] != 0 ? t - this.vtable[e] : 0); + var i = 2; + this.addInt16(t - this.object_start); + var u = (o + i) * _.SIZEOF_SHORT; + this.addInt16(u); + var n = 0, + s = this.space; + e: for (e = 0; e < this.vtables.length; e++) { + var d = this.bb.capacity() - this.vtables[e]; + if (u == this.bb.readInt16(d)) { + for (var f = _.SIZEOF_SHORT; f < u; f += _.SIZEOF_SHORT) + if (this.bb.readInt16(s + f) != this.bb.readInt16(d + f)) continue e; + n = this.vtables[e]; + break; + } + } + return ( + n + ? ((this.space = this.bb.capacity() - t), this.bb.writeInt32(this.space, n - t)) + : (this.vtables.push(this.offset()), + this.bb.writeInt32(this.bb.capacity() - t, this.offset() - t)), + (this.isNested = !1), + t + ); + }), + (_.Builder.prototype.finish = function (t, e, o) { + var i = o ? _.SIZE_PREFIX_LENGTH : 0; + if (e) { + var u = e; + if ( + (this.prep(this.minalign, _.SIZEOF_INT + _.FILE_IDENTIFIER_LENGTH + i), + u.length != _.FILE_IDENTIFIER_LENGTH) + ) + throw new Error('FlatBuffers: file identifier must be length ' + _.FILE_IDENTIFIER_LENGTH); + for (var n = _.FILE_IDENTIFIER_LENGTH - 1; n >= 0; n--) this.writeInt8(u.charCodeAt(n)); + } + this.prep(this.minalign, _.SIZEOF_INT + i), + this.addOffset(t), + i && this.addInt32(this.bb.capacity() - this.space), + this.bb.setPosition(this.space); + }), + (_.Builder.prototype.finishSizePrefixed = function (t, e) { + this.finish(t, e, !0); + }), + (_.Builder.prototype.requiredField = function (t, e) { + var o = this.bb.capacity() - t, + i = o - this.bb.readInt32(o), + u = this.bb.readInt16(i + e) != 0; + if (!u) throw new Error('FlatBuffers: field ' + e + ' must be set'); + }), + (_.Builder.prototype.startVector = function (t, e, o) { + this.notNested(), (this.vector_num_elems = e), this.prep(_.SIZEOF_INT, t * e), this.prep(o, t * e); + }), + (_.Builder.prototype.endVector = function () { + return this.writeInt32(this.vector_num_elems), this.offset(); + }), + (_.Builder.prototype.createString = function (t) { + if (t instanceof Uint8Array) var e = t; + else + for (var e = [], o = 0; o < t.length; ) { + var i, + u = t.charCodeAt(o++); + if (u < 55296 || u >= 56320) i = u; + else { + var n = t.charCodeAt(o++); + i = (u << 10) + n + -56613888; + } + i < 128 + ? e.push(i) + : (i < 2048 + ? e.push(((i >> 6) & 31) | 192) + : (i < 65536 + ? e.push(((i >> 12) & 15) | 224) + : e.push(((i >> 18) & 7) | 240, ((i >> 12) & 63) | 128), + e.push(((i >> 6) & 63) | 128)), + e.push((i & 63) | 128)); + } + this.addInt8(0), this.startVector(1, e.length, 1), this.bb.setPosition((this.space -= e.length)); + for (var o = 0, s = this.space, d = this.bb.bytes(); o < e.length; o++) d[s++] = e[o]; + return this.endVector(); + }), + (_.Builder.prototype.createLong = function (t, e) { + return _.Long.create(t, e); + }), + (_.ByteBuffer = function (t) { + (this.bytes_ = t), (this.position_ = 0); + }), + (_.ByteBuffer.allocate = function (t) { + return new _.ByteBuffer(new Uint8Array(t)); + }), + (_.ByteBuffer.prototype.clear = function () { + this.position_ = 0; + }), + (_.ByteBuffer.prototype.bytes = function () { + return this.bytes_; + }), + (_.ByteBuffer.prototype.position = function () { + return this.position_; + }), + (_.ByteBuffer.prototype.setPosition = function (t) { + this.position_ = t; + }), + (_.ByteBuffer.prototype.capacity = function () { + return this.bytes_.length; + }), + (_.ByteBuffer.prototype.readInt8 = function (t) { + return (this.readUint8(t) << 24) >> 24; + }), + (_.ByteBuffer.prototype.readUint8 = function (t) { + return this.bytes_[t]; + }), + (_.ByteBuffer.prototype.readInt16 = function (t) { + return (this.readUint16(t) << 16) >> 16; + }), + (_.ByteBuffer.prototype.readUint16 = function (t) { + return this.bytes_[t] | (this.bytes_[t + 1] << 8); + }), + (_.ByteBuffer.prototype.readInt32 = function (t) { + return ( + this.bytes_[t] | (this.bytes_[t + 1] << 8) | (this.bytes_[t + 2] << 16) | (this.bytes_[t + 3] << 24) + ); + }), + (_.ByteBuffer.prototype.readUint32 = function (t) { + return this.readInt32(t) >>> 0; + }), + (_.ByteBuffer.prototype.readInt64 = function (t) { + return new _.Long(this.readInt32(t), this.readInt32(t + 4)); + }), + (_.ByteBuffer.prototype.readUint64 = function (t) { + return new _.Long(this.readUint32(t), this.readUint32(t + 4)); + }), + (_.ByteBuffer.prototype.readFloat32 = function (t) { + return (_.int32[0] = this.readInt32(t)), _.float32[0]; + }), + (_.ByteBuffer.prototype.readFloat64 = function (t) { + return ( + (_.int32[_.isLittleEndian ? 0 : 1] = this.readInt32(t)), + (_.int32[_.isLittleEndian ? 1 : 0] = this.readInt32(t + 4)), + _.float64[0] + ); + }), + (_.ByteBuffer.prototype.writeInt8 = function (t, e) { + this.bytes_[t] = e; + }), + (_.ByteBuffer.prototype.writeUint8 = function (t, e) { + this.bytes_[t] = e; + }), + (_.ByteBuffer.prototype.writeInt16 = function (t, e) { + (this.bytes_[t] = e), (this.bytes_[t + 1] = e >> 8); + }), + (_.ByteBuffer.prototype.writeUint16 = function (t, e) { + (this.bytes_[t] = e), (this.bytes_[t + 1] = e >> 8); + }), + (_.ByteBuffer.prototype.writeInt32 = function (t, e) { + (this.bytes_[t] = e), + (this.bytes_[t + 1] = e >> 8), + (this.bytes_[t + 2] = e >> 16), + (this.bytes_[t + 3] = e >> 24); + }), + (_.ByteBuffer.prototype.writeUint32 = function (t, e) { + (this.bytes_[t] = e), + (this.bytes_[t + 1] = e >> 8), + (this.bytes_[t + 2] = e >> 16), + (this.bytes_[t + 3] = e >> 24); + }), + (_.ByteBuffer.prototype.writeInt64 = function (t, e) { + this.writeInt32(t, e.low), this.writeInt32(t + 4, e.high); + }), + (_.ByteBuffer.prototype.writeUint64 = function (t, e) { + this.writeUint32(t, e.low), this.writeUint32(t + 4, e.high); + }), + (_.ByteBuffer.prototype.writeFloat32 = function (t, e) { + (_.float32[0] = e), this.writeInt32(t, _.int32[0]); + }), + (_.ByteBuffer.prototype.writeFloat64 = function (t, e) { + (_.float64[0] = e), + this.writeInt32(t, _.int32[_.isLittleEndian ? 0 : 1]), + this.writeInt32(t + 4, _.int32[_.isLittleEndian ? 1 : 0]); + }), + (_.ByteBuffer.prototype.getBufferIdentifier = function () { + if (this.bytes_.length < this.position_ + _.SIZEOF_INT + _.FILE_IDENTIFIER_LENGTH) + throw new Error('FlatBuffers: ByteBuffer is too short to contain an identifier.'); + for (var t = '', e = 0; e < _.FILE_IDENTIFIER_LENGTH; e++) + t += String.fromCharCode(this.readInt8(this.position_ + _.SIZEOF_INT + e)); + return t; + }), + (_.ByteBuffer.prototype.__offset = function (t, e) { + var o = t - this.readInt32(t); + return e < this.readInt16(o) ? this.readInt16(o + e) : 0; + }), + (_.ByteBuffer.prototype.__union = function (t, e) { + return (t.bb_pos = e + this.readInt32(e)), (t.bb = this), t; + }), + (_.ByteBuffer.prototype.__string = function (t, e) { + t += this.readInt32(t); + var o = this.readInt32(t), + i = '', + u = 0; + if (((t += _.SIZEOF_INT), e === _.Encoding.UTF8_BYTES)) return this.bytes_.subarray(t, t + o); + for (; u < o; ) { + var n, + s = this.readUint8(t + u++); + if (s < 192) n = s; + else { + var d = this.readUint8(t + u++); + if (s < 224) n = ((s & 31) << 6) | (d & 63); + else { + var f = this.readUint8(t + u++); + if (s < 240) n = ((s & 15) << 12) | ((d & 63) << 6) | (f & 63); + else { + var r = this.readUint8(t + u++); + n = ((s & 7) << 18) | ((d & 63) << 12) | ((f & 63) << 6) | (r & 63); + } + } + } + n < 65536 + ? (i += String.fromCharCode(n)) + : ((n -= 65536), (i += String.fromCharCode((n >> 10) + 55296, (n & 1023) + 56320))); + } + return i; + }), + (_.ByteBuffer.prototype.__indirect = function (t) { + return t + this.readInt32(t); + }), + (_.ByteBuffer.prototype.__vector = function (t) { + return t + this.readInt32(t) + _.SIZEOF_INT; + }), + (_.ByteBuffer.prototype.__vector_len = function (t) { + return this.readInt32(t + this.readInt32(t)); + }), + (_.ByteBuffer.prototype.__has_identifier = function (t) { + if (t.length != _.FILE_IDENTIFIER_LENGTH) + throw new Error('FlatBuffers: file identifier must be length ' + _.FILE_IDENTIFIER_LENGTH); + for (var e = 0; e < _.FILE_IDENTIFIER_LENGTH; e++) + if (t.charCodeAt(e) != this.readInt8(this.position_ + _.SIZEOF_INT + e)) return !1; + return !0; + }), + (_.ByteBuffer.prototype.createLong = function (t, e) { + return _.Long.create(t, e); + }); + }), + W, + tn = L(() => { + Wn(), + ((t) => { + ((e) => { + ((o) => { + ((i) => ( + (i[(i.UNDEFINED = 0)] = 'UNDEFINED'), + (i[(i.FLOAT = 1)] = 'FLOAT'), + (i[(i.INT = 2)] = 'INT'), + (i[(i.STRING = 3)] = 'STRING'), + (i[(i.TENSOR = 4)] = 'TENSOR'), + (i[(i.GRAPH = 5)] = 'GRAPH'), + (i[(i.FLOATS = 6)] = 'FLOATS'), + (i[(i.INTS = 7)] = 'INTS'), + (i[(i.STRINGS = 8)] = 'STRINGS'), + (i[(i.TENSORS = 9)] = 'TENSORS'), + (i[(i.GRAPHS = 10)] = 'GRAPHS'), + (i[(i.SPARSE_TENSOR = 11)] = 'SPARSE_TENSOR'), + (i[(i.SPARSE_TENSORS = 12)] = 'SPARSE_TENSORS') + ))((o.AttributeType ||= {})); + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + ((i) => ( + (i[(i.UNKNOWN = 0)] = 'UNKNOWN'), (i[(i.VALUE = 1)] = 'VALUE'), (i[(i.PARAM = 2)] = 'PARAM') + ))((o.DimensionValueType ||= {})); + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + ((i) => ( + (i[(i.UNDEFINED = 0)] = 'UNDEFINED'), + (i[(i.FLOAT = 1)] = 'FLOAT'), + (i[(i.UINT8 = 2)] = 'UINT8'), + (i[(i.INT8 = 3)] = 'INT8'), + (i[(i.UINT16 = 4)] = 'UINT16'), + (i[(i.INT16 = 5)] = 'INT16'), + (i[(i.INT32 = 6)] = 'INT32'), + (i[(i.INT64 = 7)] = 'INT64'), + (i[(i.STRING = 8)] = 'STRING'), + (i[(i.BOOL = 9)] = 'BOOL'), + (i[(i.FLOAT16 = 10)] = 'FLOAT16'), + (i[(i.DOUBLE = 11)] = 'DOUBLE'), + (i[(i.UINT32 = 12)] = 'UINT32'), + (i[(i.UINT64 = 13)] = 'UINT64'), + (i[(i.COMPLEX64 = 14)] = 'COMPLEX64'), + (i[(i.COMPLEX128 = 15)] = 'COMPLEX128'), + (i[(i.BFLOAT16 = 16)] = 'BFLOAT16'), + (i[(i.FLOAT8E4M3FN = 17)] = 'FLOAT8E4M3FN'), + (i[(i.FLOAT8E4M3FNUZ = 18)] = 'FLOAT8E4M3FNUZ'), + (i[(i.FLOAT8E5M2 = 19)] = 'FLOAT8E5M2'), + (i[(i.FLOAT8E5M2FNUZ = 20)] = 'FLOAT8E5M2FNUZ') + ))((o.TensorDataType ||= {})); + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + ((i) => ((i[(i.Primitive = 0)] = 'Primitive'), (i[(i.Fused = 1)] = 'Fused')))( + (o.NodeType ||= {}) + ); + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + ((i) => ( + (i[(i.NONE = 0)] = 'NONE'), + (i[(i.tensor_type = 1)] = 'tensor_type'), + (i[(i.sequence_type = 2)] = 'sequence_type'), + (i[(i.map_type = 3)] = 'map_type') + ))((o.TypeInfoValue ||= {})); + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsShape(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsShape(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + dim(n, s) { + let d = this.bb.__offset(this.bb_pos, 4); + return d + ? (s || new t.experimental.fbs.Dimension()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + dimLength() { + let n = this.bb.__offset(this.bb_pos, 4); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + static startShape(n) { + n.startObject(1); + } + static addDim(n, s) { + n.addFieldOffset(0, s, 0); + } + static createDimVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startDimVector(n, s) { + n.startVector(4, s, 4); + } + static endShape(n) { + return n.endObject(); + } + static createShape(n, s) { + return i.startShape(n), i.addDim(n, s), i.endShape(n); + } + } + o.Shape = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsDimension(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsDimension(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + value(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s + ? (n || new t.experimental.fbs.DimensionValue()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + denotation(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + static startDimension(n) { + n.startObject(2); + } + static addValue(n, s) { + n.addFieldOffset(0, s, 0); + } + static addDenotation(n, s) { + n.addFieldOffset(1, s, 0); + } + static endDimension(n) { + return n.endObject(); + } + static createDimension(n, s, d) { + return i.startDimension(n), i.addValue(n, s), i.addDenotation(n, d), i.endDimension(n); + } + } + o.Dimension = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsDimensionValue(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsDimensionValue(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + dimType() { + let n = this.bb.__offset(this.bb_pos, 4); + return n ? this.bb.readInt8(this.bb_pos + n) : 0; + } + dimValue() { + let n = this.bb.__offset(this.bb_pos, 6); + return n ? this.bb.readInt64(this.bb_pos + n) : this.bb.createLong(0, 0); + } + dimParam(n) { + let s = this.bb.__offset(this.bb_pos, 8); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + static startDimensionValue(n) { + n.startObject(3); + } + static addDimType(n, s) { + n.addFieldInt8(0, s, 0); + } + static addDimValue(n, s) { + n.addFieldInt64(1, s, n.createLong(0, 0)); + } + static addDimParam(n, s) { + n.addFieldOffset(2, s, 0); + } + static endDimensionValue(n) { + return n.endObject(); + } + static createDimensionValue(n, s, d, f) { + return ( + i.startDimensionValue(n), + i.addDimType(n, s), + i.addDimValue(n, d), + i.addDimParam(n, f), + i.endDimensionValue(n) + ); + } + } + o.DimensionValue = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsTensorTypeAndShape(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsTensorTypeAndShape(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + elemType() { + let n = this.bb.__offset(this.bb_pos, 4); + return n ? this.bb.readInt32(this.bb_pos + n) : 0; + } + shape(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s + ? (n || new t.experimental.fbs.Shape()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + static startTensorTypeAndShape(n) { + n.startObject(2); + } + static addElemType(n, s) { + n.addFieldInt32(0, s, 0); + } + static addShape(n, s) { + n.addFieldOffset(1, s, 0); + } + static endTensorTypeAndShape(n) { + return n.endObject(); + } + static createTensorTypeAndShape(n, s, d) { + return ( + i.startTensorTypeAndShape(n), + i.addElemType(n, s), + i.addShape(n, d), + i.endTensorTypeAndShape(n) + ); + } + } + o.TensorTypeAndShape = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsMapType(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsMapType(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + keyType() { + let n = this.bb.__offset(this.bb_pos, 4); + return n ? this.bb.readInt32(this.bb_pos + n) : 0; + } + valueType(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s + ? (n || new t.experimental.fbs.TypeInfo()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + static startMapType(n) { + n.startObject(2); + } + static addKeyType(n, s) { + n.addFieldInt32(0, s, 0); + } + static addValueType(n, s) { + n.addFieldOffset(1, s, 0); + } + static endMapType(n) { + return n.endObject(); + } + static createMapType(n, s, d) { + return i.startMapType(n), i.addKeyType(n, s), i.addValueType(n, d), i.endMapType(n); + } + } + o.MapType = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsSequenceType(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsSequenceType(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + elemType(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s + ? (n || new t.experimental.fbs.TypeInfo()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + static startSequenceType(n) { + n.startObject(1); + } + static addElemType(n, s) { + n.addFieldOffset(0, s, 0); + } + static endSequenceType(n) { + return n.endObject(); + } + static createSequenceType(n, s) { + return i.startSequenceType(n), i.addElemType(n, s), i.endSequenceType(n); + } + } + o.SequenceType = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + nodeIndex() { + return this.bb.readUint32(this.bb_pos); + } + srcArgIndex() { + return this.bb.readInt32(this.bb_pos + 4); + } + dstArgIndex() { + return this.bb.readInt32(this.bb_pos + 8); + } + static createEdgeEnd(n, s, d, f) { + return n.prep(4, 12), n.writeInt32(f), n.writeInt32(d), n.writeInt32(s), n.offset(); + } + } + o.EdgeEnd = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsNodeEdge(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsNodeEdge(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + nodeIndex() { + let n = this.bb.__offset(this.bb_pos, 4); + return n ? this.bb.readUint32(this.bb_pos + n) : 0; + } + inputEdges(n, s) { + let d = this.bb.__offset(this.bb_pos, 6); + return d + ? (s || new t.experimental.fbs.EdgeEnd()).__init( + this.bb.__vector(this.bb_pos + d) + n * 12, + this.bb + ) + : null; + } + inputEdgesLength() { + let n = this.bb.__offset(this.bb_pos, 6); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + outputEdges(n, s) { + let d = this.bb.__offset(this.bb_pos, 8); + return d + ? (s || new t.experimental.fbs.EdgeEnd()).__init( + this.bb.__vector(this.bb_pos + d) + n * 12, + this.bb + ) + : null; + } + outputEdgesLength() { + let n = this.bb.__offset(this.bb_pos, 8); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + static startNodeEdge(n) { + n.startObject(3); + } + static addNodeIndex(n, s) { + n.addFieldInt32(0, s, 0); + } + static addInputEdges(n, s) { + n.addFieldOffset(1, s, 0); + } + static startInputEdgesVector(n, s) { + n.startVector(12, s, 4); + } + static addOutputEdges(n, s) { + n.addFieldOffset(2, s, 0); + } + static startOutputEdgesVector(n, s) { + n.startVector(12, s, 4); + } + static endNodeEdge(n) { + return n.endObject(); + } + static createNodeEdge(n, s, d, f) { + return ( + i.startNodeEdge(n), + i.addNodeIndex(n, s), + i.addInputEdges(n, d), + i.addOutputEdges(n, f), + i.endNodeEdge(n) + ); + } + } + o.NodeEdge = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsNode(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsNode(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + name(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + docString(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + domain(n) { + let s = this.bb.__offset(this.bb_pos, 8); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + sinceVersion() { + let n = this.bb.__offset(this.bb_pos, 10); + return n ? this.bb.readInt32(this.bb_pos + n) : 0; + } + index() { + let n = this.bb.__offset(this.bb_pos, 12); + return n ? this.bb.readUint32(this.bb_pos + n) : 0; + } + opType(n) { + let s = this.bb.__offset(this.bb_pos, 14); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + type() { + let n = this.bb.__offset(this.bb_pos, 16); + return n ? this.bb.readInt32(this.bb_pos + n) : 0; + } + executionProviderType(n) { + let s = this.bb.__offset(this.bb_pos, 18); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + inputs(n, s) { + let d = this.bb.__offset(this.bb_pos, 20); + return d ? this.bb.__string(this.bb.__vector(this.bb_pos + d) + n * 4, s) : null; + } + inputsLength() { + let n = this.bb.__offset(this.bb_pos, 20); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + outputs(n, s) { + let d = this.bb.__offset(this.bb_pos, 22); + return d ? this.bb.__string(this.bb.__vector(this.bb_pos + d) + n * 4, s) : null; + } + outputsLength() { + let n = this.bb.__offset(this.bb_pos, 22); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + attributes(n, s) { + let d = this.bb.__offset(this.bb_pos, 24); + return d + ? (s || new t.experimental.fbs.Attribute()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + attributesLength() { + let n = this.bb.__offset(this.bb_pos, 24); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + inputArgCounts(n) { + let s = this.bb.__offset(this.bb_pos, 26); + return s ? this.bb.readInt32(this.bb.__vector(this.bb_pos + s) + n * 4) : 0; + } + inputArgCountsLength() { + let n = this.bb.__offset(this.bb_pos, 26); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + inputArgCountsArray() { + let n = this.bb.__offset(this.bb_pos, 26); + return n + ? new Int32Array( + this.bb.bytes().buffer, + this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + n), + this.bb.__vector_len(this.bb_pos + n) + ) + : null; + } + implicitInputs(n, s) { + let d = this.bb.__offset(this.bb_pos, 28); + return d ? this.bb.__string(this.bb.__vector(this.bb_pos + d) + n * 4, s) : null; + } + implicitInputsLength() { + let n = this.bb.__offset(this.bb_pos, 28); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + static startNode(n) { + n.startObject(13); + } + static addName(n, s) { + n.addFieldOffset(0, s, 0); + } + static addDocString(n, s) { + n.addFieldOffset(1, s, 0); + } + static addDomain(n, s) { + n.addFieldOffset(2, s, 0); + } + static addSinceVersion(n, s) { + n.addFieldInt32(3, s, 0); + } + static addIndex(n, s) { + n.addFieldInt32(4, s, 0); + } + static addOpType(n, s) { + n.addFieldOffset(5, s, 0); + } + static addType(n, s) { + n.addFieldInt32(6, s, 0); + } + static addExecutionProviderType(n, s) { + n.addFieldOffset(7, s, 0); + } + static addInputs(n, s) { + n.addFieldOffset(8, s, 0); + } + static createInputsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startInputsVector(n, s) { + n.startVector(4, s, 4); + } + static addOutputs(n, s) { + n.addFieldOffset(9, s, 0); + } + static createOutputsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startOutputsVector(n, s) { + n.startVector(4, s, 4); + } + static addAttributes(n, s) { + n.addFieldOffset(10, s, 0); + } + static createAttributesVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startAttributesVector(n, s) { + n.startVector(4, s, 4); + } + static addInputArgCounts(n, s) { + n.addFieldOffset(11, s, 0); + } + static createInputArgCountsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addInt32(s[d]); + return n.endVector(); + } + static startInputArgCountsVector(n, s) { + n.startVector(4, s, 4); + } + static addImplicitInputs(n, s) { + n.addFieldOffset(12, s, 0); + } + static createImplicitInputsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startImplicitInputsVector(n, s) { + n.startVector(4, s, 4); + } + static endNode(n) { + return n.endObject(); + } + static createNode(n, s, d, f, r, a, l, p, m, y, T, v, S, E) { + return ( + i.startNode(n), + i.addName(n, s), + i.addDocString(n, d), + i.addDomain(n, f), + i.addSinceVersion(n, r), + i.addIndex(n, a), + i.addOpType(n, l), + i.addType(n, p), + i.addExecutionProviderType(n, m), + i.addInputs(n, y), + i.addOutputs(n, T), + i.addAttributes(n, v), + i.addInputArgCounts(n, S), + i.addImplicitInputs(n, E), + i.endNode(n) + ); + } + } + o.Node = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsValueInfo(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsValueInfo(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + name(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + docString(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + type(n) { + let s = this.bb.__offset(this.bb_pos, 8); + return s + ? (n || new t.experimental.fbs.TypeInfo()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + static startValueInfo(n) { + n.startObject(3); + } + static addName(n, s) { + n.addFieldOffset(0, s, 0); + } + static addDocString(n, s) { + n.addFieldOffset(1, s, 0); + } + static addType(n, s) { + n.addFieldOffset(2, s, 0); + } + static endValueInfo(n) { + return n.endObject(); + } + static createValueInfo(n, s, d, f) { + return ( + i.startValueInfo(n), + i.addName(n, s), + i.addDocString(n, d), + i.addType(n, f), + i.endValueInfo(n) + ); + } + } + o.ValueInfo = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsTypeInfo(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsTypeInfo(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + denotation(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + valueType() { + let n = this.bb.__offset(this.bb_pos, 6); + return n ? this.bb.readUint8(this.bb_pos + n) : 0; + } + value(n) { + let s = this.bb.__offset(this.bb_pos, 8); + return s ? this.bb.__union(n, this.bb_pos + s) : null; + } + static startTypeInfo(n) { + n.startObject(3); + } + static addDenotation(n, s) { + n.addFieldOffset(0, s, 0); + } + static addValueType(n, s) { + n.addFieldInt8(1, s, 0); + } + static addValue(n, s) { + n.addFieldOffset(2, s, 0); + } + static endTypeInfo(n) { + return n.endObject(); + } + static createTypeInfo(n, s, d, f) { + return ( + i.startTypeInfo(n), + i.addDenotation(n, s), + i.addValueType(n, d), + i.addValue(n, f), + i.endTypeInfo(n) + ); + } + } + o.TypeInfo = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsOperatorSetId(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsOperatorSetId(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + domain(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + version() { + let n = this.bb.__offset(this.bb_pos, 6); + return n ? this.bb.readInt64(this.bb_pos + n) : this.bb.createLong(0, 0); + } + static startOperatorSetId(n) { + n.startObject(2); + } + static addDomain(n, s) { + n.addFieldOffset(0, s, 0); + } + static addVersion(n, s) { + n.addFieldInt64(1, s, n.createLong(0, 0)); + } + static endOperatorSetId(n) { + return n.endObject(); + } + static createOperatorSetId(n, s, d) { + return ( + i.startOperatorSetId(n), + i.addDomain(n, s), + i.addVersion(n, d), + i.endOperatorSetId(n) + ); + } + } + o.OperatorSetId = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsTensor(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsTensor(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + name(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + docString(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + dims(n) { + let s = this.bb.__offset(this.bb_pos, 8); + return s + ? this.bb.readInt64(this.bb.__vector(this.bb_pos + s) + n * 8) + : this.bb.createLong(0, 0); + } + dimsLength() { + let n = this.bb.__offset(this.bb_pos, 8); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + dataType() { + let n = this.bb.__offset(this.bb_pos, 10); + return n ? this.bb.readInt32(this.bb_pos + n) : 0; + } + rawData(n) { + let s = this.bb.__offset(this.bb_pos, 12); + return s ? this.bb.readUint8(this.bb.__vector(this.bb_pos + s) + n) : 0; + } + rawDataLength() { + let n = this.bb.__offset(this.bb_pos, 12); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + rawDataArray() { + let n = this.bb.__offset(this.bb_pos, 12); + return n + ? new Uint8Array( + this.bb.bytes().buffer, + this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + n), + this.bb.__vector_len(this.bb_pos + n) + ) + : null; + } + stringData(n, s) { + let d = this.bb.__offset(this.bb_pos, 14); + return d ? this.bb.__string(this.bb.__vector(this.bb_pos + d) + n * 4, s) : null; + } + stringDataLength() { + let n = this.bb.__offset(this.bb_pos, 14); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + static startTensor(n) { + n.startObject(6); + } + static addName(n, s) { + n.addFieldOffset(0, s, 0); + } + static addDocString(n, s) { + n.addFieldOffset(1, s, 0); + } + static addDims(n, s) { + n.addFieldOffset(2, s, 0); + } + static createDimsVector(n, s) { + n.startVector(8, s.length, 8); + for (let d = s.length - 1; d >= 0; d--) n.addInt64(s[d]); + return n.endVector(); + } + static startDimsVector(n, s) { + n.startVector(8, s, 8); + } + static addDataType(n, s) { + n.addFieldInt32(3, s, 0); + } + static addRawData(n, s) { + n.addFieldOffset(4, s, 0); + } + static createRawDataVector(n, s) { + n.startVector(1, s.length, 1); + for (let d = s.length - 1; d >= 0; d--) n.addInt8(s[d]); + return n.endVector(); + } + static startRawDataVector(n, s) { + n.startVector(1, s, 1); + } + static addStringData(n, s) { + n.addFieldOffset(5, s, 0); + } + static createStringDataVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startStringDataVector(n, s) { + n.startVector(4, s, 4); + } + static endTensor(n) { + return n.endObject(); + } + static createTensor(n, s, d, f, r, a, l) { + return ( + i.startTensor(n), + i.addName(n, s), + i.addDocString(n, d), + i.addDims(n, f), + i.addDataType(n, r), + i.addRawData(n, a), + i.addStringData(n, l), + i.endTensor(n) + ); + } + } + o.Tensor = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsSparseTensor(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsSparseTensor(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + values(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s + ? (n || new t.experimental.fbs.Tensor()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + indices(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s + ? (n || new t.experimental.fbs.Tensor()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + dims(n) { + let s = this.bb.__offset(this.bb_pos, 8); + return s + ? this.bb.readInt64(this.bb.__vector(this.bb_pos + s) + n * 8) + : this.bb.createLong(0, 0); + } + dimsLength() { + let n = this.bb.__offset(this.bb_pos, 8); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + static startSparseTensor(n) { + n.startObject(3); + } + static addValues(n, s) { + n.addFieldOffset(0, s, 0); + } + static addIndices(n, s) { + n.addFieldOffset(1, s, 0); + } + static addDims(n, s) { + n.addFieldOffset(2, s, 0); + } + static createDimsVector(n, s) { + n.startVector(8, s.length, 8); + for (let d = s.length - 1; d >= 0; d--) n.addInt64(s[d]); + return n.endVector(); + } + static startDimsVector(n, s) { + n.startVector(8, s, 8); + } + static endSparseTensor(n) { + return n.endObject(); + } + static createSparseTensor(n, s, d, f) { + return ( + i.startSparseTensor(n), + i.addValues(n, s), + i.addIndices(n, d), + i.addDims(n, f), + i.endSparseTensor(n) + ); + } + } + o.SparseTensor = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsAttribute(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsAttribute(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + name(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + docString(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + type() { + let n = this.bb.__offset(this.bb_pos, 8); + return n ? this.bb.readInt32(this.bb_pos + n) : 0; + } + f() { + let n = this.bb.__offset(this.bb_pos, 10); + return n ? this.bb.readFloat32(this.bb_pos + n) : 0; + } + i() { + let n = this.bb.__offset(this.bb_pos, 12); + return n ? this.bb.readInt64(this.bb_pos + n) : this.bb.createLong(0, 0); + } + s(n) { + let s = this.bb.__offset(this.bb_pos, 14); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + t(n) { + let s = this.bb.__offset(this.bb_pos, 16); + return s + ? (n || new t.experimental.fbs.Tensor()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + g(n) { + let s = this.bb.__offset(this.bb_pos, 18); + return s + ? (n || new t.experimental.fbs.Graph()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + floats(n) { + let s = this.bb.__offset(this.bb_pos, 20); + return s ? this.bb.readFloat32(this.bb.__vector(this.bb_pos + s) + n * 4) : 0; + } + floatsLength() { + let n = this.bb.__offset(this.bb_pos, 20); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + floatsArray() { + let n = this.bb.__offset(this.bb_pos, 20); + return n + ? new Float32Array( + this.bb.bytes().buffer, + this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + n), + this.bb.__vector_len(this.bb_pos + n) + ) + : null; + } + ints(n) { + let s = this.bb.__offset(this.bb_pos, 22); + return s + ? this.bb.readInt64(this.bb.__vector(this.bb_pos + s) + n * 8) + : this.bb.createLong(0, 0); + } + intsLength() { + let n = this.bb.__offset(this.bb_pos, 22); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + strings(n, s) { + let d = this.bb.__offset(this.bb_pos, 24); + return d ? this.bb.__string(this.bb.__vector(this.bb_pos + d) + n * 4, s) : null; + } + stringsLength() { + let n = this.bb.__offset(this.bb_pos, 24); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + tensors(n, s) { + let d = this.bb.__offset(this.bb_pos, 26); + return d + ? (s || new t.experimental.fbs.Tensor()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + tensorsLength() { + let n = this.bb.__offset(this.bb_pos, 26); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + graphs(n, s) { + let d = this.bb.__offset(this.bb_pos, 28); + return d + ? (s || new t.experimental.fbs.Graph()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + graphsLength() { + let n = this.bb.__offset(this.bb_pos, 28); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + static startAttribute(n) { + n.startObject(13); + } + static addName(n, s) { + n.addFieldOffset(0, s, 0); + } + static addDocString(n, s) { + n.addFieldOffset(1, s, 0); + } + static addType(n, s) { + n.addFieldInt32(2, s, 0); + } + static addF(n, s) { + n.addFieldFloat32(3, s, 0); + } + static addI(n, s) { + n.addFieldInt64(4, s, n.createLong(0, 0)); + } + static addS(n, s) { + n.addFieldOffset(5, s, 0); + } + static addT(n, s) { + n.addFieldOffset(6, s, 0); + } + static addG(n, s) { + n.addFieldOffset(7, s, 0); + } + static addFloats(n, s) { + n.addFieldOffset(8, s, 0); + } + static createFloatsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addFloat32(s[d]); + return n.endVector(); + } + static startFloatsVector(n, s) { + n.startVector(4, s, 4); + } + static addInts(n, s) { + n.addFieldOffset(9, s, 0); + } + static createIntsVector(n, s) { + n.startVector(8, s.length, 8); + for (let d = s.length - 1; d >= 0; d--) n.addInt64(s[d]); + return n.endVector(); + } + static startIntsVector(n, s) { + n.startVector(8, s, 8); + } + static addStrings(n, s) { + n.addFieldOffset(10, s, 0); + } + static createStringsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startStringsVector(n, s) { + n.startVector(4, s, 4); + } + static addTensors(n, s) { + n.addFieldOffset(11, s, 0); + } + static createTensorsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startTensorsVector(n, s) { + n.startVector(4, s, 4); + } + static addGraphs(n, s) { + n.addFieldOffset(12, s, 0); + } + static createGraphsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startGraphsVector(n, s) { + n.startVector(4, s, 4); + } + static endAttribute(n) { + return n.endObject(); + } + static createAttribute(n, s, d, f, r, a, l, p, m, y, T, v, S, E) { + return ( + i.startAttribute(n), + i.addName(n, s), + i.addDocString(n, d), + i.addType(n, f), + i.addF(n, r), + i.addI(n, a), + i.addS(n, l), + i.addT(n, p), + i.addG(n, m), + i.addFloats(n, y), + i.addInts(n, T), + i.addStrings(n, v), + i.addTensors(n, S), + i.addGraphs(n, E), + i.endAttribute(n) + ); + } + } + o.Attribute = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsGraph(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsGraph(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + initializers(n, s) { + let d = this.bb.__offset(this.bb_pos, 4); + return d + ? (s || new t.experimental.fbs.Tensor()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + initializersLength() { + let n = this.bb.__offset(this.bb_pos, 4); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + nodeArgs(n, s) { + let d = this.bb.__offset(this.bb_pos, 6); + return d + ? (s || new t.experimental.fbs.ValueInfo()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + nodeArgsLength() { + let n = this.bb.__offset(this.bb_pos, 6); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + nodes(n, s) { + let d = this.bb.__offset(this.bb_pos, 8); + return d + ? (s || new t.experimental.fbs.Node()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + nodesLength() { + let n = this.bb.__offset(this.bb_pos, 8); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + maxNodeIndex() { + let n = this.bb.__offset(this.bb_pos, 10); + return n ? this.bb.readUint32(this.bb_pos + n) : 0; + } + nodeEdges(n, s) { + let d = this.bb.__offset(this.bb_pos, 12); + return d + ? (s || new t.experimental.fbs.NodeEdge()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + nodeEdgesLength() { + let n = this.bb.__offset(this.bb_pos, 12); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + inputs(n, s) { + let d = this.bb.__offset(this.bb_pos, 14); + return d ? this.bb.__string(this.bb.__vector(this.bb_pos + d) + n * 4, s) : null; + } + inputsLength() { + let n = this.bb.__offset(this.bb_pos, 14); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + outputs(n, s) { + let d = this.bb.__offset(this.bb_pos, 16); + return d ? this.bb.__string(this.bb.__vector(this.bb_pos + d) + n * 4, s) : null; + } + outputsLength() { + let n = this.bb.__offset(this.bb_pos, 16); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + sparseInitializers(n, s) { + let d = this.bb.__offset(this.bb_pos, 18); + return d + ? (s || new t.experimental.fbs.SparseTensor()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + sparseInitializersLength() { + let n = this.bb.__offset(this.bb_pos, 18); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + static startGraph(n) { + n.startObject(8); + } + static addInitializers(n, s) { + n.addFieldOffset(0, s, 0); + } + static createInitializersVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startInitializersVector(n, s) { + n.startVector(4, s, 4); + } + static addNodeArgs(n, s) { + n.addFieldOffset(1, s, 0); + } + static createNodeArgsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startNodeArgsVector(n, s) { + n.startVector(4, s, 4); + } + static addNodes(n, s) { + n.addFieldOffset(2, s, 0); + } + static createNodesVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startNodesVector(n, s) { + n.startVector(4, s, 4); + } + static addMaxNodeIndex(n, s) { + n.addFieldInt32(3, s, 0); + } + static addNodeEdges(n, s) { + n.addFieldOffset(4, s, 0); + } + static createNodeEdgesVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startNodeEdgesVector(n, s) { + n.startVector(4, s, 4); + } + static addInputs(n, s) { + n.addFieldOffset(5, s, 0); + } + static createInputsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startInputsVector(n, s) { + n.startVector(4, s, 4); + } + static addOutputs(n, s) { + n.addFieldOffset(6, s, 0); + } + static createOutputsVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startOutputsVector(n, s) { + n.startVector(4, s, 4); + } + static addSparseInitializers(n, s) { + n.addFieldOffset(7, s, 0); + } + static createSparseInitializersVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startSparseInitializersVector(n, s) { + n.startVector(4, s, 4); + } + static endGraph(n) { + return n.endObject(); + } + static createGraph(n, s, d, f, r, a, l, p, m) { + return ( + i.startGraph(n), + i.addInitializers(n, s), + i.addNodeArgs(n, d), + i.addNodes(n, f), + i.addMaxNodeIndex(n, r), + i.addNodeEdges(n, a), + i.addInputs(n, l), + i.addOutputs(n, p), + i.addSparseInitializers(n, m), + i.endGraph(n) + ); + } + } + o.Graph = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsModel(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsModel(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + irVersion() { + let n = this.bb.__offset(this.bb_pos, 4); + return n ? this.bb.readInt64(this.bb_pos + n) : this.bb.createLong(0, 0); + } + opsetImport(n, s) { + let d = this.bb.__offset(this.bb_pos, 6); + return d + ? (s || new t.experimental.fbs.OperatorSetId()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + opsetImportLength() { + let n = this.bb.__offset(this.bb_pos, 6); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + producerName(n) { + let s = this.bb.__offset(this.bb_pos, 8); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + producerVersion(n) { + let s = this.bb.__offset(this.bb_pos, 10); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + domain(n) { + let s = this.bb.__offset(this.bb_pos, 12); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + modelVersion() { + let n = this.bb.__offset(this.bb_pos, 14); + return n ? this.bb.readInt64(this.bb_pos + n) : this.bb.createLong(0, 0); + } + docString(n) { + let s = this.bb.__offset(this.bb_pos, 16); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + graph(n) { + let s = this.bb.__offset(this.bb_pos, 18); + return s + ? (n || new t.experimental.fbs.Graph()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + graphDocString(n) { + let s = this.bb.__offset(this.bb_pos, 20); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + static startModel(n) { + n.startObject(9); + } + static addIrVersion(n, s) { + n.addFieldInt64(0, s, n.createLong(0, 0)); + } + static addOpsetImport(n, s) { + n.addFieldOffset(1, s, 0); + } + static createOpsetImportVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startOpsetImportVector(n, s) { + n.startVector(4, s, 4); + } + static addProducerName(n, s) { + n.addFieldOffset(2, s, 0); + } + static addProducerVersion(n, s) { + n.addFieldOffset(3, s, 0); + } + static addDomain(n, s) { + n.addFieldOffset(4, s, 0); + } + static addModelVersion(n, s) { + n.addFieldInt64(5, s, n.createLong(0, 0)); + } + static addDocString(n, s) { + n.addFieldOffset(6, s, 0); + } + static addGraph(n, s) { + n.addFieldOffset(7, s, 0); + } + static addGraphDocString(n, s) { + n.addFieldOffset(8, s, 0); + } + static endModel(n) { + return n.endObject(); + } + static createModel(n, s, d, f, r, a, l, p, m, y) { + return ( + i.startModel(n), + i.addIrVersion(n, s), + i.addOpsetImport(n, d), + i.addProducerName(n, f), + i.addProducerVersion(n, r), + i.addDomain(n, a), + i.addModelVersion(n, l), + i.addDocString(n, p), + i.addGraph(n, m), + i.addGraphDocString(n, y), + i.endModel(n) + ); + } + } + o.Model = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsKernelCreateInfos(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsKernelCreateInfos(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + nodeIndices(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s ? this.bb.readUint32(this.bb.__vector(this.bb_pos + s) + n * 4) : 0; + } + nodeIndicesLength() { + let n = this.bb.__offset(this.bb_pos, 4); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + nodeIndicesArray() { + let n = this.bb.__offset(this.bb_pos, 4); + return n + ? new Uint32Array( + this.bb.bytes().buffer, + this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + n), + this.bb.__vector_len(this.bb_pos + n) + ) + : null; + } + kernelDefHashes(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s + ? this.bb.readUint64(this.bb.__vector(this.bb_pos + s) + n * 8) + : this.bb.createLong(0, 0); + } + kernelDefHashesLength() { + let n = this.bb.__offset(this.bb_pos, 6); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + static startKernelCreateInfos(n) { + n.startObject(2); + } + static addNodeIndices(n, s) { + n.addFieldOffset(0, s, 0); + } + static createNodeIndicesVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addInt32(s[d]); + return n.endVector(); + } + static startNodeIndicesVector(n, s) { + n.startVector(4, s, 4); + } + static addKernelDefHashes(n, s) { + n.addFieldOffset(1, s, 0); + } + static createKernelDefHashesVector(n, s) { + n.startVector(8, s.length, 8); + for (let d = s.length - 1; d >= 0; d--) n.addInt64(s[d]); + return n.endVector(); + } + static startKernelDefHashesVector(n, s) { + n.startVector(8, s, 8); + } + static endKernelCreateInfos(n) { + return n.endObject(); + } + static createKernelCreateInfos(n, s, d) { + return ( + i.startKernelCreateInfos(n), + i.addNodeIndices(n, s), + i.addKernelDefHashes(n, d), + i.endKernelCreateInfos(n) + ); + } + } + o.KernelCreateInfos = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsSubGraphSessionState(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsSubGraphSessionState(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + graphId(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + sessionState(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s + ? (n || new t.experimental.fbs.SessionState()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + static startSubGraphSessionState(n) { + n.startObject(2); + } + static addGraphId(n, s) { + n.addFieldOffset(0, s, 0); + } + static addSessionState(n, s) { + n.addFieldOffset(1, s, 0); + } + static endSubGraphSessionState(n) { + let s = n.endObject(); + return n.requiredField(s, 4), s; + } + static createSubGraphSessionState(n, s, d) { + return ( + i.startSubGraphSessionState(n), + i.addGraphId(n, s), + i.addSessionState(n, d), + i.endSubGraphSessionState(n) + ); + } + } + o.SubGraphSessionState = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsSessionState(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsSessionState(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + kernels(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s + ? (n || new t.experimental.fbs.KernelCreateInfos()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + subGraphSessionStates(n, s) { + let d = this.bb.__offset(this.bb_pos, 6); + return d + ? (s || new t.experimental.fbs.SubGraphSessionState()).__init( + this.bb.__indirect(this.bb.__vector(this.bb_pos + d) + n * 4), + this.bb + ) + : null; + } + subGraphSessionStatesLength() { + let n = this.bb.__offset(this.bb_pos, 6); + return n ? this.bb.__vector_len(this.bb_pos + n) : 0; + } + static startSessionState(n) { + n.startObject(2); + } + static addKernels(n, s) { + n.addFieldOffset(0, s, 0); + } + static addSubGraphSessionStates(n, s) { + n.addFieldOffset(1, s, 0); + } + static createSubGraphSessionStatesVector(n, s) { + n.startVector(4, s.length, 4); + for (let d = s.length - 1; d >= 0; d--) n.addOffset(s[d]); + return n.endVector(); + } + static startSubGraphSessionStatesVector(n, s) { + n.startVector(4, s, 4); + } + static endSessionState(n) { + return n.endObject(); + } + static createSessionState(n, s, d) { + return ( + i.startSessionState(n), + i.addKernels(n, s), + i.addSubGraphSessionStates(n, d), + i.endSessionState(n) + ); + } + } + o.SessionState = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})), + ((t) => { + ((e) => { + ((o) => { + class i { + constructor() { + (this.bb = null), (this.bb_pos = 0); + } + __init(n, s) { + return (this.bb_pos = n), (this.bb = s), this; + } + static getRootAsInferenceSession(n, s) { + return (s || new i()).__init(n.readInt32(n.position()) + n.position(), n); + } + static getSizePrefixedRootAsInferenceSession(n, s) { + return ( + n.setPosition(n.position() + _.SIZE_PREFIX_LENGTH), + (s || new i()).__init(n.readInt32(n.position()) + n.position(), n) + ); + } + static bufferHasIdentifier(n) { + return n.__has_identifier('ORTM'); + } + ortVersion(n) { + let s = this.bb.__offset(this.bb_pos, 4); + return s ? this.bb.__string(this.bb_pos + s, n) : null; + } + model(n) { + let s = this.bb.__offset(this.bb_pos, 6); + return s + ? (n || new t.experimental.fbs.Model()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + sessionState(n) { + let s = this.bb.__offset(this.bb_pos, 8); + return s + ? (n || new t.experimental.fbs.SessionState()).__init( + this.bb.__indirect(this.bb_pos + s), + this.bb + ) + : null; + } + static startInferenceSession(n) { + n.startObject(3); + } + static addOrtVersion(n, s) { + n.addFieldOffset(0, s, 0); + } + static addModel(n, s) { + n.addFieldOffset(1, s, 0); + } + static addSessionState(n, s) { + n.addFieldOffset(2, s, 0); + } + static endInferenceSession(n) { + return n.endObject(); + } + static finishInferenceSessionBuffer(n, s) { + n.finish(s, 'ORTM'); + } + static finishSizePrefixedInferenceSessionBuffer(n, s) { + n.finish(s, 'ORTM', !0); + } + static createInferenceSession(n, s, d, f) { + return ( + i.startInferenceSession(n), + i.addOrtVersion(n, s), + i.addModel(n, d), + i.addSessionState(n, f), + i.endInferenceSession(n) + ); + } + } + o.InferenceSession = i; + })((e.fbs ||= {})); + })((t.experimental ||= {})); + })((W ||= {})); + }), + ks = me((t, e) => { + e.exports = o; + function o(i, u) { + for (var n = new Array(arguments.length - 1), s = 0, d = 2, f = !0; d < arguments.length; ) + n[s++] = arguments[d++]; + return new Promise(function (r, a) { + n[s] = function (l) { + if (f) + if (((f = !1), l)) a(l); + else { + for (var p = new Array(arguments.length - 1), m = 0; m < p.length; ) p[m++] = arguments[m]; + r.apply(null, p); + } + }; + try { + i.apply(u || null, n); + } catch (l) { + f && ((f = !1), a(l)); + } + }); + } + }), + Ms = me((t) => { + var e = t; + e.length = function (s) { + var d = s.length; + if (!d) return 0; + for (var f = 0; --d % 4 > 1 && s.charAt(d) === '='; ) ++f; + return Math.ceil(s.length * 3) / 4 - f; + }; + var o = new Array(64), + i = new Array(123); + for (u = 0; u < 64; ) i[(o[u] = u < 26 ? u + 65 : u < 52 ? u + 71 : u < 62 ? u - 4 : (u - 59) | 43)] = u++; + var u; + e.encode = function (s, d, f) { + for (var r = null, a = [], l = 0, p = 0, m; d < f; ) { + var y = s[d++]; + switch (p) { + case 0: + (a[l++] = o[y >> 2]), (m = (y & 3) << 4), (p = 1); + break; + case 1: + (a[l++] = o[m | (y >> 4)]), (m = (y & 15) << 2), (p = 2); + break; + case 2: + (a[l++] = o[m | (y >> 6)]), (a[l++] = o[y & 63]), (p = 0); + break; + } + l > 8191 && ((r || (r = [])).push(String.fromCharCode.apply(String, a)), (l = 0)); + } + return ( + p && ((a[l++] = o[m]), (a[l++] = 61), p === 1 && (a[l++] = 61)), + r + ? (l && r.push(String.fromCharCode.apply(String, a.slice(0, l))), r.join('')) + : String.fromCharCode.apply(String, a.slice(0, l)) + ); + }; + var n = 'invalid encoding'; + (e.decode = function (s, d, f) { + for (var r = f, a = 0, l, p = 0; p < s.length; ) { + var m = s.charCodeAt(p++); + if (m === 61 && a > 1) break; + if ((m = i[m]) === void 0) throw Error(n); + switch (a) { + case 0: + (l = m), (a = 1); + break; + case 1: + (d[f++] = (l << 2) | ((m & 48) >> 4)), (l = m), (a = 2); + break; + case 2: + (d[f++] = ((l & 15) << 4) | ((m & 60) >> 2)), (l = m), (a = 3); + break; + case 3: + (d[f++] = ((l & 3) << 6) | m), (a = 0); + break; + } + } + if (a === 1) throw Error(n); + return f - r; + }), + (e.test = function (s) { + return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(s); + }); + }), + Us = me((t, e) => { + e.exports = o; + function o() { + this._listeners = {}; + } + (o.prototype.on = function (i, u, n) { + return (this._listeners[i] || (this._listeners[i] = [])).push({ fn: u, ctx: n || this }), this; + }), + (o.prototype.off = function (i, u) { + if (i === void 0) this._listeners = {}; + else if (u === void 0) this._listeners[i] = []; + else for (var n = this._listeners[i], s = 0; s < n.length; ) n[s].fn === u ? n.splice(s, 1) : ++s; + return this; + }), + (o.prototype.emit = function (i) { + var u = this._listeners[i]; + if (u) { + for (var n = [], s = 1; s < arguments.length; ) n.push(arguments[s++]); + for (s = 0; s < u.length; ) u[s].fn.apply(u[s++].ctx, n); + } + return this; + }); + }), + Ys = me((t, e) => { + e.exports = o(o); + function o(d) { + return ( + typeof Float32Array < 'u' + ? (function () { + var f = new Float32Array([-0]), + r = new Uint8Array(f.buffer), + a = r[3] === 128; + function l(T, v, S) { + (f[0] = T), (v[S] = r[0]), (v[S + 1] = r[1]), (v[S + 2] = r[2]), (v[S + 3] = r[3]); + } + function p(T, v, S) { + (f[0] = T), (v[S] = r[3]), (v[S + 1] = r[2]), (v[S + 2] = r[1]), (v[S + 3] = r[0]); + } + (d.writeFloatLE = a ? l : p), (d.writeFloatBE = a ? p : l); + function m(T, v) { + return (r[0] = T[v]), (r[1] = T[v + 1]), (r[2] = T[v + 2]), (r[3] = T[v + 3]), f[0]; + } + function y(T, v) { + return (r[3] = T[v]), (r[2] = T[v + 1]), (r[1] = T[v + 2]), (r[0] = T[v + 3]), f[0]; + } + (d.readFloatLE = a ? m : y), (d.readFloatBE = a ? y : m); + })() + : (function () { + function f(a, l, p, m) { + var y = l < 0 ? 1 : 0; + if ((y && (l = -l), l === 0)) a(1 / l > 0 ? 0 : 2147483648, p, m); + else if (isNaN(l)) a(2143289344, p, m); + else if (l > 34028234663852886e22) a(((y << 31) | 2139095040) >>> 0, p, m); + else if (l < 11754943508222875e-54) + a(((y << 31) | Math.round(l / 1401298464324817e-60)) >>> 0, p, m); + else { + var T = Math.floor(Math.log(l) / Math.LN2), + v = Math.round(l * Math.pow(2, -T) * 8388608) & 8388607; + a(((y << 31) | ((T + 127) << 23) | v) >>> 0, p, m); + } + } + (d.writeFloatLE = f.bind(null, i)), (d.writeFloatBE = f.bind(null, u)); + function r(a, l, p) { + var m = a(l, p), + y = (m >> 31) * 2 + 1, + T = (m >>> 23) & 255, + v = m & 8388607; + return T === 255 + ? v + ? NaN + : y * (1 / 0) + : T === 0 + ? y * 1401298464324817e-60 * v + : y * Math.pow(2, T - 150) * (v + 8388608); + } + (d.readFloatLE = r.bind(null, n)), (d.readFloatBE = r.bind(null, s)); + })(), + typeof Float64Array < 'u' + ? (function () { + var f = new Float64Array([-0]), + r = new Uint8Array(f.buffer), + a = r[7] === 128; + function l(T, v, S) { + (f[0] = T), + (v[S] = r[0]), + (v[S + 1] = r[1]), + (v[S + 2] = r[2]), + (v[S + 3] = r[3]), + (v[S + 4] = r[4]), + (v[S + 5] = r[5]), + (v[S + 6] = r[6]), + (v[S + 7] = r[7]); + } + function p(T, v, S) { + (f[0] = T), + (v[S] = r[7]), + (v[S + 1] = r[6]), + (v[S + 2] = r[5]), + (v[S + 3] = r[4]), + (v[S + 4] = r[3]), + (v[S + 5] = r[2]), + (v[S + 6] = r[1]), + (v[S + 7] = r[0]); + } + (d.writeDoubleLE = a ? l : p), (d.writeDoubleBE = a ? p : l); + function m(T, v) { + return ( + (r[0] = T[v]), + (r[1] = T[v + 1]), + (r[2] = T[v + 2]), + (r[3] = T[v + 3]), + (r[4] = T[v + 4]), + (r[5] = T[v + 5]), + (r[6] = T[v + 6]), + (r[7] = T[v + 7]), + f[0] + ); + } + function y(T, v) { + return ( + (r[7] = T[v]), + (r[6] = T[v + 1]), + (r[5] = T[v + 2]), + (r[4] = T[v + 3]), + (r[3] = T[v + 4]), + (r[2] = T[v + 5]), + (r[1] = T[v + 6]), + (r[0] = T[v + 7]), + f[0] + ); + } + (d.readDoubleLE = a ? m : y), (d.readDoubleBE = a ? y : m); + })() + : (function () { + function f(a, l, p, m, y, T) { + var v = m < 0 ? 1 : 0; + if ((v && (m = -m), m === 0)) a(0, y, T + l), a(1 / m > 0 ? 0 : 2147483648, y, T + p); + else if (isNaN(m)) a(0, y, T + l), a(2146959360, y, T + p); + else if (m > 17976931348623157e292) + a(0, y, T + l), a(((v << 31) | 2146435072) >>> 0, y, T + p); + else { + var S; + if (m < 22250738585072014e-324) + (S = m / 5e-324), + a(S >>> 0, y, T + l), + a(((v << 31) | (S / 4294967296)) >>> 0, y, T + p); + else { + var E = Math.floor(Math.log(m) / Math.LN2); + E === 1024 && (E = 1023), + (S = m * Math.pow(2, -E)), + a((S * 4503599627370496) >>> 0, y, T + l), + a( + ((v << 31) | ((E + 1023) << 20) | ((S * 1048576) & 1048575)) >>> 0, + y, + T + p + ); + } + } + } + (d.writeDoubleLE = f.bind(null, i, 0, 4)), (d.writeDoubleBE = f.bind(null, u, 4, 0)); + function r(a, l, p, m, y) { + var T = a(m, y + l), + v = a(m, y + p), + S = (v >> 31) * 2 + 1, + E = (v >>> 20) & 2047, + A = 4294967296 * (v & 1048575) + T; + return E === 2047 + ? A + ? NaN + : S * (1 / 0) + : E === 0 + ? S * 5e-324 * A + : S * Math.pow(2, E - 1075) * (A + 4503599627370496); + } + (d.readDoubleLE = r.bind(null, n, 0, 4)), (d.readDoubleBE = r.bind(null, s, 4, 0)); + })(), + d + ); + } + function i(d, f, r) { + (f[r] = d & 255), (f[r + 1] = (d >>> 8) & 255), (f[r + 2] = (d >>> 16) & 255), (f[r + 3] = d >>> 24); + } + function u(d, f, r) { + (f[r] = d >>> 24), (f[r + 1] = (d >>> 16) & 255), (f[r + 2] = (d >>> 8) & 255), (f[r + 3] = d & 255); + } + function n(d, f) { + return (d[f] | (d[f + 1] << 8) | (d[f + 2] << 16) | (d[f + 3] << 24)) >>> 0; + } + function s(d, f) { + return ((d[f] << 24) | (d[f + 1] << 16) | (d[f + 2] << 8) | d[f + 3]) >>> 0; + } + }), + Xs = me((exports, module) => { + module.exports = inquire; + function inquire(moduleName) { + try { + var mod = eval('quire'.replace(/^/, 're'))(moduleName); + if (mod && (mod.length || Object.keys(mod).length)) return mod; + } catch (t) {} + return null; + } + }), + Js = me((t) => { + var e = t; + (e.length = function (o) { + for (var i = 0, u = 0, n = 0; n < o.length; ++n) + (u = o.charCodeAt(n)), + u < 128 + ? (i += 1) + : u < 2048 + ? (i += 2) + : (u & 64512) === 55296 && (o.charCodeAt(n + 1) & 64512) === 56320 + ? (++n, (i += 4)) + : (i += 3); + return i; + }), + (e.read = function (o, i, u) { + var n = u - i; + if (n < 1) return ''; + for (var s = null, d = [], f = 0, r; i < u; ) + (r = o[i++]), + r < 128 + ? (d[f++] = r) + : r > 191 && r < 224 + ? (d[f++] = ((r & 31) << 6) | (o[i++] & 63)) + : r > 239 && r < 365 + ? ((r = + (((r & 7) << 18) | ((o[i++] & 63) << 12) | ((o[i++] & 63) << 6) | (o[i++] & 63)) - + 65536), + (d[f++] = 55296 + (r >> 10)), + (d[f++] = 56320 + (r & 1023))) + : (d[f++] = ((r & 15) << 12) | ((o[i++] & 63) << 6) | (o[i++] & 63)), + f > 8191 && ((s || (s = [])).push(String.fromCharCode.apply(String, d)), (f = 0)); + return s + ? (f && s.push(String.fromCharCode.apply(String, d.slice(0, f))), s.join('')) + : String.fromCharCode.apply(String, d.slice(0, f)); + }), + (e.write = function (o, i, u) { + for (var n = u, s, d, f = 0; f < o.length; ++f) + (s = o.charCodeAt(f)), + s < 128 + ? (i[u++] = s) + : s < 2048 + ? ((i[u++] = (s >> 6) | 192), (i[u++] = (s & 63) | 128)) + : (s & 64512) === 55296 && ((d = o.charCodeAt(f + 1)) & 64512) === 56320 + ? ((s = 65536 + ((s & 1023) << 10) + (d & 1023)), + ++f, + (i[u++] = (s >> 18) | 240), + (i[u++] = ((s >> 12) & 63) | 128), + (i[u++] = ((s >> 6) & 63) | 128), + (i[u++] = (s & 63) | 128)) + : ((i[u++] = (s >> 12) | 224), (i[u++] = ((s >> 6) & 63) | 128), (i[u++] = (s & 63) | 128)); + return u - n; + }); + }), + Qs = me((t, e) => { + e.exports = o; + function o(i, u, n) { + var s = n || 8192, + d = s >>> 1, + f = null, + r = s; + return function (a) { + if (a < 1 || a > d) return i(a); + r + a > s && ((f = i(s)), (r = 0)); + var l = u.call(f, r, (r += a)); + return r & 7 && (r = (r | 7) + 1), l; + }; + } + }), + tu = me((t, e) => { + e.exports = i; + var o = Xt(); + function i(d, f) { + (this.lo = d >>> 0), (this.hi = f >>> 0); + } + var u = (i.zero = new i(0, 0)); + (u.toNumber = function () { + return 0; + }), + (u.zzEncode = u.zzDecode = + function () { + return this; + }), + (u.length = function () { + return 1; + }); + var n = (i.zeroHash = '\0\0\0\0\0\0\0\0'); + (i.fromNumber = function (d) { + if (d === 0) return u; + var f = d < 0; + f && (d = -d); + var r = d >>> 0, + a = ((d - r) / 4294967296) >>> 0; + return ( + f && ((a = ~a >>> 0), (r = ~r >>> 0), ++r > 4294967295 && ((r = 0), ++a > 4294967295 && (a = 0))), + new i(r, a) + ); + }), + (i.from = function (d) { + if (typeof d == 'number') return i.fromNumber(d); + if (o.isString(d)) + if (o.Long) d = o.Long.fromString(d); + else return i.fromNumber(parseInt(d, 10)); + return d.low || d.high ? new i(d.low >>> 0, d.high >>> 0) : u; + }), + (i.prototype.toNumber = function (d) { + if (!d && this.hi >>> 31) { + var f = (~this.lo + 1) >>> 0, + r = ~this.hi >>> 0; + return f || (r = (r + 1) >>> 0), -(f + r * 4294967296); + } + return this.lo + this.hi * 4294967296; + }), + (i.prototype.toLong = function (d) { + return o.Long + ? new o.Long(this.lo | 0, this.hi | 0, !!d) + : { low: this.lo | 0, high: this.hi | 0, unsigned: !!d }; + }); + var s = String.prototype.charCodeAt; + (i.fromHash = function (d) { + return d === n + ? u + : new i( + (s.call(d, 0) | (s.call(d, 1) << 8) | (s.call(d, 2) << 16) | (s.call(d, 3) << 24)) >>> 0, + (s.call(d, 4) | (s.call(d, 5) << 8) | (s.call(d, 6) << 16) | (s.call(d, 7) << 24)) >>> 0 + ); + }), + (i.prototype.toHash = function () { + return String.fromCharCode( + this.lo & 255, + (this.lo >>> 8) & 255, + (this.lo >>> 16) & 255, + this.lo >>> 24, + this.hi & 255, + (this.hi >>> 8) & 255, + (this.hi >>> 16) & 255, + this.hi >>> 24 + ); + }), + (i.prototype.zzEncode = function () { + var d = this.hi >> 31; + return ( + (this.hi = (((this.hi << 1) | (this.lo >>> 31)) ^ d) >>> 0), + (this.lo = ((this.lo << 1) ^ d) >>> 0), + this + ); + }), + (i.prototype.zzDecode = function () { + var d = -(this.lo & 1); + return ( + (this.lo = (((this.lo >>> 1) | (this.hi << 31)) ^ d) >>> 0), + (this.hi = ((this.hi >>> 1) ^ d) >>> 0), + this + ); + }), + (i.prototype.length = function () { + var d = this.lo, + f = ((this.lo >>> 28) | (this.hi << 4)) >>> 0, + r = this.hi >>> 24; + return r === 0 + ? f === 0 + ? d < 16384 + ? d < 128 + ? 1 + : 2 + : d < 2097152 + ? 3 + : 4 + : f < 16384 + ? f < 128 + ? 5 + : 6 + : f < 2097152 + ? 7 + : 8 + : r < 128 + ? 9 + : 10; + }); + }), + Xt = me((t) => { + var e = t; + (e.asPromise = ks()), + (e.base64 = Ms()), + (e.EventEmitter = Us()), + (e.float = Ys()), + (e.inquire = Xs()), + (e.utf8 = Js()), + (e.pool = Qs()), + (e.LongBits = tu()), + (e.isNode = !!( + typeof global < 'u' && + global && + global.process && + global.process.versions && + global.process.versions.node + )), + (e.global = (e.isNode && global) || (typeof window < 'u' && window) || (typeof self < 'u' && self) || t), + (e.emptyArray = Object.freeze ? Object.freeze([]) : []), + (e.emptyObject = Object.freeze ? Object.freeze({}) : {}), + (e.isInteger = + Number.isInteger || + function (u) { + return typeof u == 'number' && isFinite(u) && Math.floor(u) === u; + }), + (e.isString = function (u) { + return typeof u == 'string' || u instanceof String; + }), + (e.isObject = function (u) { + return u && typeof u == 'object'; + }), + (e.isset = e.isSet = + function (u, n) { + var s = u[n]; + return s != null && u.hasOwnProperty(n) + ? typeof s != 'object' || (Array.isArray(s) ? s.length : Object.keys(s).length) > 0 + : !1; + }), + (e.Buffer = (function () { + try { + var u = e.inquire('buffer').Buffer; + return u.prototype.utf8Write ? u : null; + } catch { + return null; + } + })()), + (e._Buffer_from = null), + (e._Buffer_allocUnsafe = null), + (e.newBuffer = function (u) { + return typeof u == 'number' + ? e.Buffer + ? e._Buffer_allocUnsafe(u) + : new e.Array(u) + : e.Buffer + ? e._Buffer_from(u) + : typeof Uint8Array > 'u' + ? u + : new Uint8Array(u); + }), + (e.Array = typeof Uint8Array < 'u' ? Uint8Array : Array), + (e.Long = (e.global.dcodeIO && e.global.dcodeIO.Long) || e.global.Long || e.inquire('long')), + (e.key2Re = /^true|false|0|1$/), + (e.key32Re = /^-?(?:0|[1-9][0-9]*)$/), + (e.key64Re = /^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/), + (e.longToHash = function (u) { + return u ? e.LongBits.from(u).toHash() : e.LongBits.zeroHash; + }), + (e.longFromHash = function (u, n) { + var s = e.LongBits.fromHash(u); + return e.Long ? e.Long.fromBits(s.lo, s.hi, n) : s.toNumber(!!n); + }); + function o(u, n, s) { + for (var d = Object.keys(n), f = 0; f < d.length; ++f) (u[d[f]] === void 0 || !s) && (u[d[f]] = n[d[f]]); + return u; + } + (e.merge = o), + (e.lcFirst = function (u) { + return u.charAt(0).toLowerCase() + u.substring(1); + }); + function i(u) { + function n(s, d) { + if (!(this instanceof n)) return new n(s, d); + Object.defineProperty(this, 'message', { + get: function () { + return s; + }, + }), + Error.captureStackTrace + ? Error.captureStackTrace(this, n) + : Object.defineProperty(this, 'stack', { value: new Error().stack || '' }), + d && o(this, d); + } + return ( + (n.prototype = Object.create(Error.prototype, { + constructor: { value: n, writable: !0, enumerable: !1, configurable: !0 }, + name: { + get: function () { + return u; + }, + set: void 0, + enumerable: !1, + configurable: !0, + }, + toString: { + value: function () { + return this.name + ': ' + this.message; + }, + writable: !0, + enumerable: !1, + configurable: !0, + }, + })), + n + ); + } + (e.newError = i), + (e.ProtocolError = i('ProtocolError')), + (e.oneOfGetter = function (u) { + for (var n = {}, s = 0; s < u.length; ++s) n[u[s]] = 1; + return function () { + for (var d = Object.keys(this), f = d.length - 1; f > -1; --f) + if (n[d[f]] === 1 && this[d[f]] !== void 0 && this[d[f]] !== null) return d[f]; + }; + }), + (e.oneOfSetter = function (u) { + return function (n) { + for (var s = 0; s < u.length; ++s) u[s] !== n && delete this[u[s]]; + }; + }), + (e.toJSONOptions = { longs: String, enums: String, bytes: String, json: !0 }), + (e._configure = function () { + var u = e.Buffer; + if (!u) { + e._Buffer_from = e._Buffer_allocUnsafe = null; + return; + } + (e._Buffer_from = + (u.from !== Uint8Array.from && u.from) || + function (n, s) { + return new u(n, s); + }), + (e._Buffer_allocUnsafe = + u.allocUnsafe || + function (n) { + return new u(n); + }); + }); + }), + li = me((t, e) => { + e.exports = a; + var o = Xt(), + i, + u = o.LongBits, + n = o.base64, + s = o.utf8; + function d(E, A, F) { + (this.fn = E), (this.len = A), (this.next = void 0), (this.val = F); + } + function f() {} + function r(E) { + (this.head = E.head), (this.tail = E.tail), (this.len = E.len), (this.next = E.states); + } + function a() { + (this.len = 0), (this.head = new d(f, 0, 0)), (this.tail = this.head), (this.states = null); + } + var l = function () { + return o.Buffer + ? function () { + return (a.create = function () { + return new i(); + })(); + } + : function () { + return new a(); + }; + }; + (a.create = l()), + (a.alloc = function (E) { + return new o.Array(E); + }), + o.Array !== Array && (a.alloc = o.pool(a.alloc, o.Array.prototype.subarray)), + (a.prototype._push = function (E, A, F) { + return (this.tail = this.tail.next = new d(E, A, F)), (this.len += A), this; + }); + function p(E, A, F) { + A[F] = E & 255; + } + function m(E, A, F) { + for (; E > 127; ) (A[F++] = (E & 127) | 128), (E >>>= 7); + A[F] = E; + } + function y(E, A) { + (this.len = E), (this.next = void 0), (this.val = A); + } + (y.prototype = Object.create(d.prototype)), + (y.prototype.fn = m), + (a.prototype.uint32 = function (E) { + return ( + (this.len += (this.tail = this.tail.next = + new y( + (E = E >>> 0) < 128 ? 1 : E < 16384 ? 2 : E < 2097152 ? 3 : E < 268435456 ? 4 : 5, + E + )).len), + this + ); + }), + (a.prototype.int32 = function (E) { + return E < 0 ? this._push(T, 10, u.fromNumber(E)) : this.uint32(E); + }), + (a.prototype.sint32 = function (E) { + return this.uint32(((E << 1) ^ (E >> 31)) >>> 0); + }); + function T(E, A, F) { + for (; E.hi; ) (A[F++] = (E.lo & 127) | 128), (E.lo = ((E.lo >>> 7) | (E.hi << 25)) >>> 0), (E.hi >>>= 7); + for (; E.lo > 127; ) (A[F++] = (E.lo & 127) | 128), (E.lo = E.lo >>> 7); + A[F++] = E.lo; + } + (a.prototype.uint64 = function (E) { + var A = u.from(E); + return this._push(T, A.length(), A); + }), + (a.prototype.int64 = a.prototype.uint64), + (a.prototype.sint64 = function (E) { + var A = u.from(E).zzEncode(); + return this._push(T, A.length(), A); + }), + (a.prototype.bool = function (E) { + return this._push(p, 1, E ? 1 : 0); + }); + function v(E, A, F) { + (A[F] = E & 255), (A[F + 1] = (E >>> 8) & 255), (A[F + 2] = (E >>> 16) & 255), (A[F + 3] = E >>> 24); + } + (a.prototype.fixed32 = function (E) { + return this._push(v, 4, E >>> 0); + }), + (a.prototype.sfixed32 = a.prototype.fixed32), + (a.prototype.fixed64 = function (E) { + var A = u.from(E); + return this._push(v, 4, A.lo)._push(v, 4, A.hi); + }), + (a.prototype.sfixed64 = a.prototype.fixed64), + (a.prototype.float = function (E) { + return this._push(o.float.writeFloatLE, 4, E); + }), + (a.prototype.double = function (E) { + return this._push(o.float.writeDoubleLE, 8, E); + }); + var S = o.Array.prototype.set + ? function (E, A, F) { + A.set(E, F); + } + : function (E, A, F) { + for (var B = 0; B < E.length; ++B) A[F + B] = E[B]; + }; + (a.prototype.bytes = function (E) { + var A = E.length >>> 0; + if (!A) return this._push(p, 1, 0); + if (o.isString(E)) { + var F = a.alloc((A = n.length(E))); + n.decode(E, F, 0), (E = F); + } + return this.uint32(A)._push(S, A, E); + }), + (a.prototype.string = function (E) { + var A = s.length(E); + return A ? this.uint32(A)._push(s.write, A, E) : this._push(p, 1, 0); + }), + (a.prototype.fork = function () { + return (this.states = new r(this)), (this.head = this.tail = new d(f, 0, 0)), (this.len = 0), this; + }), + (a.prototype.reset = function () { + return ( + this.states + ? ((this.head = this.states.head), + (this.tail = this.states.tail), + (this.len = this.states.len), + (this.states = this.states.next)) + : ((this.head = this.tail = new d(f, 0, 0)), (this.len = 0)), + this + ); + }), + (a.prototype.ldelim = function () { + var E = this.head, + A = this.tail, + F = this.len; + return this.reset().uint32(F), F && ((this.tail.next = E.next), (this.tail = A), (this.len += F)), this; + }), + (a.prototype.finish = function () { + for (var E = this.head.next, A = this.constructor.alloc(this.len), F = 0; E; ) + E.fn(E.val, A, F), (F += E.len), (E = E.next); + return A; + }), + (a._configure = function (E) { + (i = E), (a.create = l()), i._configure(); + }); + }), + fu = me((t, e) => { + e.exports = u; + var o = li(); + (u.prototype = Object.create(o.prototype)).constructor = u; + var i = Xt(); + function u() { + o.call(this); + } + (u._configure = function () { + (u.alloc = i._Buffer_allocUnsafe), + (u.writeBytesBuffer = + i.Buffer && i.Buffer.prototype instanceof Uint8Array && i.Buffer.prototype.set.name === 'set' + ? function (s, d, f) { + d.set(s, f); + } + : function (s, d, f) { + if (s.copy) s.copy(d, f, 0, s.length); + else for (var r = 0; r < s.length; ) d[f++] = s[r++]; + }); + }), + (u.prototype.bytes = function (s) { + i.isString(s) && (s = i._Buffer_from(s, 'base64')); + var d = s.length >>> 0; + return this.uint32(d), d && this._push(u.writeBytesBuffer, d, s), this; + }); + function n(s, d, f) { + s.length < 40 ? i.utf8.write(s, d, f) : d.utf8Write ? d.utf8Write(s, f) : d.write(s, f); + } + (u.prototype.string = function (s) { + var d = i.Buffer.byteLength(s); + return this.uint32(d), d && this._push(n, d, s), this; + }), + u._configure(); + }), + pi = me((t, e) => { + e.exports = d; + var o = Xt(), + i, + u = o.LongBits, + n = o.utf8; + function s(m, y) { + return RangeError('index out of range: ' + m.pos + ' + ' + (y || 1) + ' > ' + m.len); + } + function d(m) { + (this.buf = m), (this.pos = 0), (this.len = m.length); + } + var f = + typeof Uint8Array < 'u' + ? function (m) { + if (m instanceof Uint8Array || Array.isArray(m)) return new d(m); + throw Error('illegal buffer'); + } + : function (m) { + if (Array.isArray(m)) return new d(m); + throw Error('illegal buffer'); + }, + r = function () { + return o.Buffer + ? function (m) { + return (d.create = function (y) { + return o.Buffer.isBuffer(y) ? new i(y) : f(y); + })(m); + } + : f; + }; + (d.create = r()), + (d.prototype._slice = o.Array.prototype.subarray || o.Array.prototype.slice), + (d.prototype.uint32 = (function () { + var m = 4294967295; + return function () { + if ( + ((m = (this.buf[this.pos] & 127) >>> 0), + this.buf[this.pos++] < 128 || + ((m = (m | ((this.buf[this.pos] & 127) << 7)) >>> 0), this.buf[this.pos++] < 128) || + ((m = (m | ((this.buf[this.pos] & 127) << 14)) >>> 0), this.buf[this.pos++] < 128) || + ((m = (m | ((this.buf[this.pos] & 127) << 21)) >>> 0), this.buf[this.pos++] < 128) || + ((m = (m | ((this.buf[this.pos] & 15) << 28)) >>> 0), this.buf[this.pos++] < 128)) + ) + return m; + if ((this.pos += 5) > this.len) throw ((this.pos = this.len), s(this, 10)); + return m; + }; + })()), + (d.prototype.int32 = function () { + return this.uint32() | 0; + }), + (d.prototype.sint32 = function () { + var m = this.uint32(); + return ((m >>> 1) ^ -(m & 1)) | 0; + }); + function a() { + var m = new u(0, 0), + y = 0; + if (this.len - this.pos > 4) { + for (; y < 4; ++y) + if (((m.lo = (m.lo | ((this.buf[this.pos] & 127) << (y * 7))) >>> 0), this.buf[this.pos++] < 128)) + return m; + if ( + ((m.lo = (m.lo | ((this.buf[this.pos] & 127) << 28)) >>> 0), + (m.hi = (m.hi | ((this.buf[this.pos] & 127) >> 4)) >>> 0), + this.buf[this.pos++] < 128) + ) + return m; + y = 0; + } else { + for (; y < 3; ++y) { + if (this.pos >= this.len) throw s(this); + if (((m.lo = (m.lo | ((this.buf[this.pos] & 127) << (y * 7))) >>> 0), this.buf[this.pos++] < 128)) + return m; + } + return (m.lo = (m.lo | ((this.buf[this.pos++] & 127) << (y * 7))) >>> 0), m; + } + if (this.len - this.pos > 4) { + for (; y < 5; ++y) + if ( + ((m.hi = (m.hi | ((this.buf[this.pos] & 127) << (y * 7 + 3))) >>> 0), + this.buf[this.pos++] < 128) + ) + return m; + } else + for (; y < 5; ++y) { + if (this.pos >= this.len) throw s(this); + if ( + ((m.hi = (m.hi | ((this.buf[this.pos] & 127) << (y * 7 + 3))) >>> 0), + this.buf[this.pos++] < 128) + ) + return m; + } + throw Error('invalid varint encoding'); + } + d.prototype.bool = function () { + return this.uint32() !== 0; + }; + function l(m, y) { + return (m[y - 4] | (m[y - 3] << 8) | (m[y - 2] << 16) | (m[y - 1] << 24)) >>> 0; + } + (d.prototype.fixed32 = function () { + if (this.pos + 4 > this.len) throw s(this, 4); + return l(this.buf, (this.pos += 4)); + }), + (d.prototype.sfixed32 = function () { + if (this.pos + 4 > this.len) throw s(this, 4); + return l(this.buf, (this.pos += 4)) | 0; + }); + function p() { + if (this.pos + 8 > this.len) throw s(this, 8); + return new u(l(this.buf, (this.pos += 4)), l(this.buf, (this.pos += 4))); + } + (d.prototype.float = function () { + if (this.pos + 4 > this.len) throw s(this, 4); + var m = o.float.readFloatLE(this.buf, this.pos); + return (this.pos += 4), m; + }), + (d.prototype.double = function () { + if (this.pos + 8 > this.len) throw s(this, 4); + var m = o.float.readDoubleLE(this.buf, this.pos); + return (this.pos += 8), m; + }), + (d.prototype.bytes = function () { + var m = this.uint32(), + y = this.pos, + T = this.pos + m; + if (T > this.len) throw s(this, m); + return ( + (this.pos += m), + Array.isArray(this.buf) + ? this.buf.slice(y, T) + : y === T + ? new this.buf.constructor(0) + : this._slice.call(this.buf, y, T) + ); + }), + (d.prototype.string = function () { + var m = this.bytes(); + return n.read(m, 0, m.length); + }), + (d.prototype.skip = function (m) { + if (typeof m == 'number') { + if (this.pos + m > this.len) throw s(this, m); + this.pos += m; + } else + do if (this.pos >= this.len) throw s(this); + while (this.buf[this.pos++] & 128); + return this; + }), + (d.prototype.skipType = function (m) { + switch (m) { + case 0: + this.skip(); + break; + case 1: + this.skip(8); + break; + case 2: + this.skip(this.uint32()); + break; + case 3: + for (; (m = this.uint32() & 7) !== 4; ) this.skipType(m); + break; + case 5: + this.skip(4); + break; + default: + throw Error('invalid wire type ' + m + ' at offset ' + this.pos); + } + return this; + }), + (d._configure = function (m) { + (i = m), (d.create = r()), i._configure(); + var y = o.Long ? 'toLong' : 'toNumber'; + o.merge(d.prototype, { + int64: function () { + return a.call(this)[y](!1); + }, + uint64: function () { + return a.call(this)[y](!0); + }, + sint64: function () { + return a.call(this).zzDecode()[y](!1); + }, + fixed64: function () { + return p.call(this)[y](!0); + }, + sfixed64: function () { + return p.call(this)[y](!1); + }, + }); + }); + }), + Tu = me((t, e) => { + e.exports = u; + var o = pi(); + (u.prototype = Object.create(o.prototype)).constructor = u; + var i = Xt(); + function u(n) { + o.call(this, n); + } + (u._configure = function () { + i.Buffer && (u.prototype._slice = i.Buffer.prototype.slice); + }), + (u.prototype.string = function () { + var n = this.uint32(); + return this.buf.utf8Slice + ? this.buf.utf8Slice(this.pos, (this.pos = Math.min(this.pos + n, this.len))) + : this.buf.toString('utf-8', this.pos, (this.pos = Math.min(this.pos + n, this.len))); + }), + u._configure(); + }), + vu = me((t, e) => { + e.exports = i; + var o = Xt(); + (i.prototype = Object.create(o.EventEmitter.prototype)).constructor = i; + function i(u, n, s) { + if (typeof u != 'function') throw TypeError('rpcImpl must be a function'); + o.EventEmitter.call(this), + (this.rpcImpl = u), + (this.requestDelimited = !!n), + (this.responseDelimited = !!s); + } + (i.prototype.rpcCall = function u(n, s, d, f, r) { + if (!f) throw TypeError('request must be specified'); + var a = this; + if (!r) return o.asPromise(u, a, n, s, d, f); + if (!a.rpcImpl) { + setTimeout(function () { + r(Error('already ended')); + }, 0); + return; + } + try { + return a.rpcImpl(n, s[a.requestDelimited ? 'encodeDelimited' : 'encode'](f).finish(), function (l, p) { + if (l) return a.emit('error', l, n), r(l); + if (p === null) { + a.end(!0); + return; + } + if (!(p instanceof d)) + try { + p = d[a.responseDelimited ? 'decodeDelimited' : 'decode'](p); + } catch (m) { + return a.emit('error', m, n), r(m); + } + return a.emit('data', p, n), r(null, p); + }); + } catch (l) { + a.emit('error', l, n), + setTimeout(function () { + r(l); + }, 0); + return; + } + }), + (i.prototype.end = function (u) { + return ( + this.rpcImpl && + (u || this.rpcImpl(null, null, null), (this.rpcImpl = null), this.emit('end').off()), + this + ); + }); + }), + _u = me((t) => { + var e = t; + e.Service = vu(); + }), + Iu = me((t, e) => { + e.exports = {}; + }), + Pu = me((t) => { + var e = t; + (e.build = 'minimal'), + (e.Writer = li()), + (e.BufferWriter = fu()), + (e.Reader = pi()), + (e.BufferReader = Tu()), + (e.util = Xt()), + (e.rpc = _u()), + (e.roots = Iu()), + (e.configure = o); + function o() { + e.util._configure(), e.Writer._configure(e.BufferWriter), e.Reader._configure(e.BufferReader); + } + o(); + }), + Du = me((t, e) => { + e.exports = Pu(); + }), + $r = me((t, e) => { + var o = Du(), + i = o.Reader, + u = o.Writer, + n = o.util, + s = o.roots.default || (o.roots.default = {}); + (s.onnx = (function () { + var d = {}; + return ( + (d.Version = (function () { + var f = {}, + r = Object.create(f); + return ( + (r[(f[0] = '_START_VERSION')] = 0), + (r[(f[1] = 'IR_VERSION_2017_10_10')] = 1), + (r[(f[2] = 'IR_VERSION_2017_10_30')] = 2), + (r[(f[3] = 'IR_VERSION_2017_11_3')] = 3), + (r[(f[4] = 'IR_VERSION_2019_1_22')] = 4), + (r[(f[5] = 'IR_VERSION_2019_3_18')] = 5), + (r[(f[6] = 'IR_VERSION_2019_9_19')] = 6), + (r[(f[7] = 'IR_VERSION_2020_5_8')] = 7), + (r[(f[8] = 'IR_VERSION_2021_7_30')] = 8), + (r[(f[9] = 'IR_VERSION')] = 9), + r + ); + })()), + (d.AttributeProto = (function () { + function f(r) { + if ( + ((this.floats = []), + (this.ints = []), + (this.strings = []), + (this.tensors = []), + (this.graphs = []), + (this.sparseTensors = []), + (this.typeProtos = []), + r) + ) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.name = ''), + (f.prototype.refAttrName = ''), + (f.prototype.docString = ''), + (f.prototype.type = 0), + (f.prototype.f = 0), + (f.prototype.i = n.Long ? n.Long.fromBits(0, 0, !1) : 0), + (f.prototype.s = n.newBuffer([])), + (f.prototype.t = null), + (f.prototype.g = null), + (f.prototype.sparseTensor = null), + (f.prototype.tp = null), + (f.prototype.floats = n.emptyArray), + (f.prototype.ints = n.emptyArray), + (f.prototype.strings = n.emptyArray), + (f.prototype.tensors = n.emptyArray), + (f.prototype.graphs = n.emptyArray), + (f.prototype.sparseTensors = n.emptyArray), + (f.prototype.typeProtos = n.emptyArray), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + if ( + (a || (a = u.create()), + r.name != null && Object.hasOwnProperty.call(r, 'name') && a.uint32(10).string(r.name), + r.f != null && Object.hasOwnProperty.call(r, 'f') && a.uint32(21).float(r.f), + r.i != null && Object.hasOwnProperty.call(r, 'i') && a.uint32(24).int64(r.i), + r.s != null && Object.hasOwnProperty.call(r, 's') && a.uint32(34).bytes(r.s), + r.t != null && + Object.hasOwnProperty.call(r, 't') && + s.onnx.TensorProto.encode(r.t, a.uint32(42).fork()).ldelim(), + r.g != null && + Object.hasOwnProperty.call(r, 'g') && + s.onnx.GraphProto.encode(r.g, a.uint32(50).fork()).ldelim(), + r.floats != null && r.floats.length) + ) { + a.uint32(58).fork(); + for (var l = 0; l < r.floats.length; ++l) a.float(r.floats[l]); + a.ldelim(); + } + if (r.ints != null && r.ints.length) { + a.uint32(66).fork(); + for (var l = 0; l < r.ints.length; ++l) a.int64(r.ints[l]); + a.ldelim(); + } + if (r.strings != null && r.strings.length) + for (var l = 0; l < r.strings.length; ++l) a.uint32(74).bytes(r.strings[l]); + if (r.tensors != null && r.tensors.length) + for (var l = 0; l < r.tensors.length; ++l) + s.onnx.TensorProto.encode(r.tensors[l], a.uint32(82).fork()).ldelim(); + if (r.graphs != null && r.graphs.length) + for (var l = 0; l < r.graphs.length; ++l) + s.onnx.GraphProto.encode(r.graphs[l], a.uint32(90).fork()).ldelim(); + if ( + (r.docString != null && + Object.hasOwnProperty.call(r, 'docString') && + a.uint32(106).string(r.docString), + r.tp != null && + Object.hasOwnProperty.call(r, 'tp') && + s.onnx.TypeProto.encode(r.tp, a.uint32(114).fork()).ldelim(), + r.typeProtos != null && r.typeProtos.length) + ) + for (var l = 0; l < r.typeProtos.length; ++l) + s.onnx.TypeProto.encode(r.typeProtos[l], a.uint32(122).fork()).ldelim(); + if ( + (r.type != null && Object.hasOwnProperty.call(r, 'type') && a.uint32(160).int32(r.type), + r.refAttrName != null && + Object.hasOwnProperty.call(r, 'refAttrName') && + a.uint32(170).string(r.refAttrName), + r.sparseTensor != null && + Object.hasOwnProperty.call(r, 'sparseTensor') && + s.onnx.SparseTensorProto.encode(r.sparseTensor, a.uint32(178).fork()).ldelim(), + r.sparseTensors != null && r.sparseTensors.length) + ) + for (var l = 0; l < r.sparseTensors.length; ++l) + s.onnx.SparseTensorProto.encode(r.sparseTensors[l], a.uint32(186).fork()).ldelim(); + return a; + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for ( + var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.AttributeProto(); + r.pos < l; + + ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + p.name = r.string(); + break; + } + case 21: { + p.refAttrName = r.string(); + break; + } + case 13: { + p.docString = r.string(); + break; + } + case 20: { + p.type = r.int32(); + break; + } + case 2: { + p.f = r.float(); + break; + } + case 3: { + p.i = r.int64(); + break; + } + case 4: { + p.s = r.bytes(); + break; + } + case 5: { + p.t = s.onnx.TensorProto.decode(r, r.uint32()); + break; + } + case 6: { + p.g = s.onnx.GraphProto.decode(r, r.uint32()); + break; + } + case 22: { + p.sparseTensor = s.onnx.SparseTensorProto.decode(r, r.uint32()); + break; + } + case 14: { + p.tp = s.onnx.TypeProto.decode(r, r.uint32()); + break; + } + case 7: { + if (((p.floats && p.floats.length) || (p.floats = []), (m & 7) === 2)) + for (var y = r.uint32() + r.pos; r.pos < y; ) p.floats.push(r.float()); + else p.floats.push(r.float()); + break; + } + case 8: { + if (((p.ints && p.ints.length) || (p.ints = []), (m & 7) === 2)) + for (var y = r.uint32() + r.pos; r.pos < y; ) p.ints.push(r.int64()); + else p.ints.push(r.int64()); + break; + } + case 9: { + (p.strings && p.strings.length) || (p.strings = []), p.strings.push(r.bytes()); + break; + } + case 10: { + (p.tensors && p.tensors.length) || (p.tensors = []), + p.tensors.push(s.onnx.TensorProto.decode(r, r.uint32())); + break; + } + case 11: { + (p.graphs && p.graphs.length) || (p.graphs = []), + p.graphs.push(s.onnx.GraphProto.decode(r, r.uint32())); + break; + } + case 23: { + (p.sparseTensors && p.sparseTensors.length) || (p.sparseTensors = []), + p.sparseTensors.push(s.onnx.SparseTensorProto.decode(r, r.uint32())); + break; + } + case 15: { + (p.typeProtos && p.typeProtos.length) || (p.typeProtos = []), + p.typeProtos.push(s.onnx.TypeProto.decode(r, r.uint32())); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if (r.name != null && r.hasOwnProperty('name') && !n.isString(r.name)) + return 'name: string expected'; + if (r.refAttrName != null && r.hasOwnProperty('refAttrName') && !n.isString(r.refAttrName)) + return 'refAttrName: string expected'; + if (r.docString != null && r.hasOwnProperty('docString') && !n.isString(r.docString)) + return 'docString: string expected'; + if (r.type != null && r.hasOwnProperty('type')) + switch (r.type) { + default: + return 'type: enum value expected'; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + case 13: + case 6: + case 7: + case 8: + case 9: + case 10: + case 12: + case 14: + break; + } + if (r.f != null && r.hasOwnProperty('f') && typeof r.f != 'number') + return 'f: number expected'; + if ( + r.i != null && + r.hasOwnProperty('i') && + !n.isInteger(r.i) && + !(r.i && n.isInteger(r.i.low) && n.isInteger(r.i.high)) + ) + return 'i: integer|Long expected'; + if ( + r.s != null && + r.hasOwnProperty('s') && + !((r.s && typeof r.s.length == 'number') || n.isString(r.s)) + ) + return 's: buffer expected'; + if (r.t != null && r.hasOwnProperty('t')) { + var a = s.onnx.TensorProto.verify(r.t); + if (a) return 't.' + a; + } + if (r.g != null && r.hasOwnProperty('g')) { + var a = s.onnx.GraphProto.verify(r.g); + if (a) return 'g.' + a; + } + if (r.sparseTensor != null && r.hasOwnProperty('sparseTensor')) { + var a = s.onnx.SparseTensorProto.verify(r.sparseTensor); + if (a) return 'sparseTensor.' + a; + } + if (r.tp != null && r.hasOwnProperty('tp')) { + var a = s.onnx.TypeProto.verify(r.tp); + if (a) return 'tp.' + a; + } + if (r.floats != null && r.hasOwnProperty('floats')) { + if (!Array.isArray(r.floats)) return 'floats: array expected'; + for (var l = 0; l < r.floats.length; ++l) + if (typeof r.floats[l] != 'number') return 'floats: number[] expected'; + } + if (r.ints != null && r.hasOwnProperty('ints')) { + if (!Array.isArray(r.ints)) return 'ints: array expected'; + for (var l = 0; l < r.ints.length; ++l) + if ( + !n.isInteger(r.ints[l]) && + !(r.ints[l] && n.isInteger(r.ints[l].low) && n.isInteger(r.ints[l].high)) + ) + return 'ints: integer|Long[] expected'; + } + if (r.strings != null && r.hasOwnProperty('strings')) { + if (!Array.isArray(r.strings)) return 'strings: array expected'; + for (var l = 0; l < r.strings.length; ++l) + if ( + !( + (r.strings[l] && typeof r.strings[l].length == 'number') || + n.isString(r.strings[l]) + ) + ) + return 'strings: buffer[] expected'; + } + if (r.tensors != null && r.hasOwnProperty('tensors')) { + if (!Array.isArray(r.tensors)) return 'tensors: array expected'; + for (var l = 0; l < r.tensors.length; ++l) { + var a = s.onnx.TensorProto.verify(r.tensors[l]); + if (a) return 'tensors.' + a; + } + } + if (r.graphs != null && r.hasOwnProperty('graphs')) { + if (!Array.isArray(r.graphs)) return 'graphs: array expected'; + for (var l = 0; l < r.graphs.length; ++l) { + var a = s.onnx.GraphProto.verify(r.graphs[l]); + if (a) return 'graphs.' + a; + } + } + if (r.sparseTensors != null && r.hasOwnProperty('sparseTensors')) { + if (!Array.isArray(r.sparseTensors)) return 'sparseTensors: array expected'; + for (var l = 0; l < r.sparseTensors.length; ++l) { + var a = s.onnx.SparseTensorProto.verify(r.sparseTensors[l]); + if (a) return 'sparseTensors.' + a; + } + } + if (r.typeProtos != null && r.hasOwnProperty('typeProtos')) { + if (!Array.isArray(r.typeProtos)) return 'typeProtos: array expected'; + for (var l = 0; l < r.typeProtos.length; ++l) { + var a = s.onnx.TypeProto.verify(r.typeProtos[l]); + if (a) return 'typeProtos.' + a; + } + } + return null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.AttributeProto) return r; + var a = new s.onnx.AttributeProto(); + switch ( + (r.name != null && (a.name = String(r.name)), + r.refAttrName != null && (a.refAttrName = String(r.refAttrName)), + r.docString != null && (a.docString = String(r.docString)), + r.type) + ) { + default: + if (typeof r.type == 'number') { + a.type = r.type; + break; + } + break; + case 'UNDEFINED': + case 0: + a.type = 0; + break; + case 'FLOAT': + case 1: + a.type = 1; + break; + case 'INT': + case 2: + a.type = 2; + break; + case 'STRING': + case 3: + a.type = 3; + break; + case 'TENSOR': + case 4: + a.type = 4; + break; + case 'GRAPH': + case 5: + a.type = 5; + break; + case 'SPARSE_TENSOR': + case 11: + a.type = 11; + break; + case 'TYPE_PROTO': + case 13: + a.type = 13; + break; + case 'FLOATS': + case 6: + a.type = 6; + break; + case 'INTS': + case 7: + a.type = 7; + break; + case 'STRINGS': + case 8: + a.type = 8; + break; + case 'TENSORS': + case 9: + a.type = 9; + break; + case 'GRAPHS': + case 10: + a.type = 10; + break; + case 'SPARSE_TENSORS': + case 12: + a.type = 12; + break; + case 'TYPE_PROTOS': + case 14: + a.type = 14; + break; + } + if ( + (r.f != null && (a.f = Number(r.f)), + r.i != null && + (n.Long + ? ((a.i = n.Long.fromValue(r.i)).unsigned = !1) + : typeof r.i == 'string' + ? (a.i = parseInt(r.i, 10)) + : typeof r.i == 'number' + ? (a.i = r.i) + : typeof r.i == 'object' && + (a.i = new n.LongBits(r.i.low >>> 0, r.i.high >>> 0).toNumber())), + r.s != null && + (typeof r.s == 'string' + ? n.base64.decode(r.s, (a.s = n.newBuffer(n.base64.length(r.s))), 0) + : r.s.length >= 0 && (a.s = r.s)), + r.t != null) + ) { + if (typeof r.t != 'object') throw TypeError('.onnx.AttributeProto.t: object expected'); + a.t = s.onnx.TensorProto.fromObject(r.t); + } + if (r.g != null) { + if (typeof r.g != 'object') throw TypeError('.onnx.AttributeProto.g: object expected'); + a.g = s.onnx.GraphProto.fromObject(r.g); + } + if (r.sparseTensor != null) { + if (typeof r.sparseTensor != 'object') + throw TypeError('.onnx.AttributeProto.sparseTensor: object expected'); + a.sparseTensor = s.onnx.SparseTensorProto.fromObject(r.sparseTensor); + } + if (r.tp != null) { + if (typeof r.tp != 'object') + throw TypeError('.onnx.AttributeProto.tp: object expected'); + a.tp = s.onnx.TypeProto.fromObject(r.tp); + } + if (r.floats) { + if (!Array.isArray(r.floats)) + throw TypeError('.onnx.AttributeProto.floats: array expected'); + a.floats = []; + for (var l = 0; l < r.floats.length; ++l) a.floats[l] = Number(r.floats[l]); + } + if (r.ints) { + if (!Array.isArray(r.ints)) + throw TypeError('.onnx.AttributeProto.ints: array expected'); + a.ints = []; + for (var l = 0; l < r.ints.length; ++l) + n.Long + ? ((a.ints[l] = n.Long.fromValue(r.ints[l])).unsigned = !1) + : typeof r.ints[l] == 'string' + ? (a.ints[l] = parseInt(r.ints[l], 10)) + : typeof r.ints[l] == 'number' + ? (a.ints[l] = r.ints[l]) + : typeof r.ints[l] == 'object' && + (a.ints[l] = new n.LongBits( + r.ints[l].low >>> 0, + r.ints[l].high >>> 0 + ).toNumber()); + } + if (r.strings) { + if (!Array.isArray(r.strings)) + throw TypeError('.onnx.AttributeProto.strings: array expected'); + a.strings = []; + for (var l = 0; l < r.strings.length; ++l) + typeof r.strings[l] == 'string' + ? n.base64.decode( + r.strings[l], + (a.strings[l] = n.newBuffer(n.base64.length(r.strings[l]))), + 0 + ) + : r.strings[l].length >= 0 && (a.strings[l] = r.strings[l]); + } + if (r.tensors) { + if (!Array.isArray(r.tensors)) + throw TypeError('.onnx.AttributeProto.tensors: array expected'); + a.tensors = []; + for (var l = 0; l < r.tensors.length; ++l) { + if (typeof r.tensors[l] != 'object') + throw TypeError('.onnx.AttributeProto.tensors: object expected'); + a.tensors[l] = s.onnx.TensorProto.fromObject(r.tensors[l]); + } + } + if (r.graphs) { + if (!Array.isArray(r.graphs)) + throw TypeError('.onnx.AttributeProto.graphs: array expected'); + a.graphs = []; + for (var l = 0; l < r.graphs.length; ++l) { + if (typeof r.graphs[l] != 'object') + throw TypeError('.onnx.AttributeProto.graphs: object expected'); + a.graphs[l] = s.onnx.GraphProto.fromObject(r.graphs[l]); + } + } + if (r.sparseTensors) { + if (!Array.isArray(r.sparseTensors)) + throw TypeError('.onnx.AttributeProto.sparseTensors: array expected'); + a.sparseTensors = []; + for (var l = 0; l < r.sparseTensors.length; ++l) { + if (typeof r.sparseTensors[l] != 'object') + throw TypeError('.onnx.AttributeProto.sparseTensors: object expected'); + a.sparseTensors[l] = s.onnx.SparseTensorProto.fromObject(r.sparseTensors[l]); + } + } + if (r.typeProtos) { + if (!Array.isArray(r.typeProtos)) + throw TypeError('.onnx.AttributeProto.typeProtos: array expected'); + a.typeProtos = []; + for (var l = 0; l < r.typeProtos.length; ++l) { + if (typeof r.typeProtos[l] != 'object') + throw TypeError('.onnx.AttributeProto.typeProtos: object expected'); + a.typeProtos[l] = s.onnx.TypeProto.fromObject(r.typeProtos[l]); + } + } + return a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if ( + ((a.arrays || a.defaults) && + ((l.floats = []), + (l.ints = []), + (l.strings = []), + (l.tensors = []), + (l.graphs = []), + (l.typeProtos = []), + (l.sparseTensors = [])), + a.defaults) + ) { + if (((l.name = ''), (l.f = 0), n.Long)) { + var p = new n.Long(0, 0, !1); + l.i = a.longs === String ? p.toString() : a.longs === Number ? p.toNumber() : p; + } else l.i = a.longs === String ? '0' : 0; + a.bytes === String + ? (l.s = '') + : ((l.s = []), a.bytes !== Array && (l.s = n.newBuffer(l.s))), + (l.t = null), + (l.g = null), + (l.docString = ''), + (l.tp = null), + (l.type = a.enums === String ? 'UNDEFINED' : 0), + (l.refAttrName = ''), + (l.sparseTensor = null); + } + if ( + (r.name != null && r.hasOwnProperty('name') && (l.name = r.name), + r.f != null && + r.hasOwnProperty('f') && + (l.f = a.json && !isFinite(r.f) ? String(r.f) : r.f), + r.i != null && + r.hasOwnProperty('i') && + (typeof r.i == 'number' + ? (l.i = a.longs === String ? String(r.i) : r.i) + : (l.i = + a.longs === String + ? n.Long.prototype.toString.call(r.i) + : a.longs === Number + ? new n.LongBits(r.i.low >>> 0, r.i.high >>> 0).toNumber() + : r.i)), + r.s != null && + r.hasOwnProperty('s') && + (l.s = + a.bytes === String + ? n.base64.encode(r.s, 0, r.s.length) + : a.bytes === Array + ? Array.prototype.slice.call(r.s) + : r.s), + r.t != null && r.hasOwnProperty('t') && (l.t = s.onnx.TensorProto.toObject(r.t, a)), + r.g != null && r.hasOwnProperty('g') && (l.g = s.onnx.GraphProto.toObject(r.g, a)), + r.floats && r.floats.length) + ) { + l.floats = []; + for (var m = 0; m < r.floats.length; ++m) + l.floats[m] = a.json && !isFinite(r.floats[m]) ? String(r.floats[m]) : r.floats[m]; + } + if (r.ints && r.ints.length) { + l.ints = []; + for (var m = 0; m < r.ints.length; ++m) + typeof r.ints[m] == 'number' + ? (l.ints[m] = a.longs === String ? String(r.ints[m]) : r.ints[m]) + : (l.ints[m] = + a.longs === String + ? n.Long.prototype.toString.call(r.ints[m]) + : a.longs === Number + ? new n.LongBits(r.ints[m].low >>> 0, r.ints[m].high >>> 0).toNumber() + : r.ints[m]); + } + if (r.strings && r.strings.length) { + l.strings = []; + for (var m = 0; m < r.strings.length; ++m) + l.strings[m] = + a.bytes === String + ? n.base64.encode(r.strings[m], 0, r.strings[m].length) + : a.bytes === Array + ? Array.prototype.slice.call(r.strings[m]) + : r.strings[m]; + } + if (r.tensors && r.tensors.length) { + l.tensors = []; + for (var m = 0; m < r.tensors.length; ++m) + l.tensors[m] = s.onnx.TensorProto.toObject(r.tensors[m], a); + } + if (r.graphs && r.graphs.length) { + l.graphs = []; + for (var m = 0; m < r.graphs.length; ++m) + l.graphs[m] = s.onnx.GraphProto.toObject(r.graphs[m], a); + } + if ( + (r.docString != null && r.hasOwnProperty('docString') && (l.docString = r.docString), + r.tp != null && r.hasOwnProperty('tp') && (l.tp = s.onnx.TypeProto.toObject(r.tp, a)), + r.typeProtos && r.typeProtos.length) + ) { + l.typeProtos = []; + for (var m = 0; m < r.typeProtos.length; ++m) + l.typeProtos[m] = s.onnx.TypeProto.toObject(r.typeProtos[m], a); + } + if ( + (r.type != null && + r.hasOwnProperty('type') && + (l.type = + a.enums === String + ? s.onnx.AttributeProto.AttributeType[r.type] === void 0 + ? r.type + : s.onnx.AttributeProto.AttributeType[r.type] + : r.type), + r.refAttrName != null && + r.hasOwnProperty('refAttrName') && + (l.refAttrName = r.refAttrName), + r.sparseTensor != null && + r.hasOwnProperty('sparseTensor') && + (l.sparseTensor = s.onnx.SparseTensorProto.toObject(r.sparseTensor, a)), + r.sparseTensors && r.sparseTensors.length) + ) { + l.sparseTensors = []; + for (var m = 0; m < r.sparseTensors.length; ++m) + l.sparseTensors[m] = s.onnx.SparseTensorProto.toObject(r.sparseTensors[m], a); + } + return l; + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.AttributeProto'; + }), + (f.AttributeType = (function () { + var r = {}, + a = Object.create(r); + return ( + (a[(r[0] = 'UNDEFINED')] = 0), + (a[(r[1] = 'FLOAT')] = 1), + (a[(r[2] = 'INT')] = 2), + (a[(r[3] = 'STRING')] = 3), + (a[(r[4] = 'TENSOR')] = 4), + (a[(r[5] = 'GRAPH')] = 5), + (a[(r[11] = 'SPARSE_TENSOR')] = 11), + (a[(r[13] = 'TYPE_PROTO')] = 13), + (a[(r[6] = 'FLOATS')] = 6), + (a[(r[7] = 'INTS')] = 7), + (a[(r[8] = 'STRINGS')] = 8), + (a[(r[9] = 'TENSORS')] = 9), + (a[(r[10] = 'GRAPHS')] = 10), + (a[(r[12] = 'SPARSE_TENSORS')] = 12), + (a[(r[14] = 'TYPE_PROTOS')] = 14), + a + ); + })()), + f + ); + })()), + (d.ValueInfoProto = (function () { + function f(r) { + if (r) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.name = ''), + (f.prototype.type = null), + (f.prototype.docString = ''), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + return ( + a || (a = u.create()), + r.name != null && Object.hasOwnProperty.call(r, 'name') && a.uint32(10).string(r.name), + r.type != null && + Object.hasOwnProperty.call(r, 'type') && + s.onnx.TypeProto.encode(r.type, a.uint32(18).fork()).ldelim(), + r.docString != null && + Object.hasOwnProperty.call(r, 'docString') && + a.uint32(26).string(r.docString), + a + ); + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for ( + var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.ValueInfoProto(); + r.pos < l; + + ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + p.name = r.string(); + break; + } + case 2: { + p.type = s.onnx.TypeProto.decode(r, r.uint32()); + break; + } + case 3: { + p.docString = r.string(); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if (r.name != null && r.hasOwnProperty('name') && !n.isString(r.name)) + return 'name: string expected'; + if (r.type != null && r.hasOwnProperty('type')) { + var a = s.onnx.TypeProto.verify(r.type); + if (a) return 'type.' + a; + } + return r.docString != null && r.hasOwnProperty('docString') && !n.isString(r.docString) + ? 'docString: string expected' + : null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.ValueInfoProto) return r; + var a = new s.onnx.ValueInfoProto(); + if ((r.name != null && (a.name = String(r.name)), r.type != null)) { + if (typeof r.type != 'object') + throw TypeError('.onnx.ValueInfoProto.type: object expected'); + a.type = s.onnx.TypeProto.fromObject(r.type); + } + return r.docString != null && (a.docString = String(r.docString)), a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + return ( + a.defaults && ((l.name = ''), (l.type = null), (l.docString = '')), + r.name != null && r.hasOwnProperty('name') && (l.name = r.name), + r.type != null && + r.hasOwnProperty('type') && + (l.type = s.onnx.TypeProto.toObject(r.type, a)), + r.docString != null && r.hasOwnProperty('docString') && (l.docString = r.docString), + l + ); + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.ValueInfoProto'; + }), + f + ); + })()), + (d.NodeProto = (function () { + function f(r) { + if (((this.input = []), (this.output = []), (this.attribute = []), r)) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.input = n.emptyArray), + (f.prototype.output = n.emptyArray), + (f.prototype.name = ''), + (f.prototype.opType = ''), + (f.prototype.domain = ''), + (f.prototype.attribute = n.emptyArray), + (f.prototype.docString = ''), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + if ((a || (a = u.create()), r.input != null && r.input.length)) + for (var l = 0; l < r.input.length; ++l) a.uint32(10).string(r.input[l]); + if (r.output != null && r.output.length) + for (var l = 0; l < r.output.length; ++l) a.uint32(18).string(r.output[l]); + if ( + (r.name != null && Object.hasOwnProperty.call(r, 'name') && a.uint32(26).string(r.name), + r.opType != null && + Object.hasOwnProperty.call(r, 'opType') && + a.uint32(34).string(r.opType), + r.attribute != null && r.attribute.length) + ) + for (var l = 0; l < r.attribute.length; ++l) + s.onnx.AttributeProto.encode(r.attribute[l], a.uint32(42).fork()).ldelim(); + return ( + r.docString != null && + Object.hasOwnProperty.call(r, 'docString') && + a.uint32(50).string(r.docString), + r.domain != null && + Object.hasOwnProperty.call(r, 'domain') && + a.uint32(58).string(r.domain), + a + ); + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for (var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.NodeProto(); r.pos < l; ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + (p.input && p.input.length) || (p.input = []), p.input.push(r.string()); + break; + } + case 2: { + (p.output && p.output.length) || (p.output = []), p.output.push(r.string()); + break; + } + case 3: { + p.name = r.string(); + break; + } + case 4: { + p.opType = r.string(); + break; + } + case 7: { + p.domain = r.string(); + break; + } + case 5: { + (p.attribute && p.attribute.length) || (p.attribute = []), + p.attribute.push(s.onnx.AttributeProto.decode(r, r.uint32())); + break; + } + case 6: { + p.docString = r.string(); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if (r.input != null && r.hasOwnProperty('input')) { + if (!Array.isArray(r.input)) return 'input: array expected'; + for (var a = 0; a < r.input.length; ++a) + if (!n.isString(r.input[a])) return 'input: string[] expected'; + } + if (r.output != null && r.hasOwnProperty('output')) { + if (!Array.isArray(r.output)) return 'output: array expected'; + for (var a = 0; a < r.output.length; ++a) + if (!n.isString(r.output[a])) return 'output: string[] expected'; + } + if (r.name != null && r.hasOwnProperty('name') && !n.isString(r.name)) + return 'name: string expected'; + if (r.opType != null && r.hasOwnProperty('opType') && !n.isString(r.opType)) + return 'opType: string expected'; + if (r.domain != null && r.hasOwnProperty('domain') && !n.isString(r.domain)) + return 'domain: string expected'; + if (r.attribute != null && r.hasOwnProperty('attribute')) { + if (!Array.isArray(r.attribute)) return 'attribute: array expected'; + for (var a = 0; a < r.attribute.length; ++a) { + var l = s.onnx.AttributeProto.verify(r.attribute[a]); + if (l) return 'attribute.' + l; + } + } + return r.docString != null && r.hasOwnProperty('docString') && !n.isString(r.docString) + ? 'docString: string expected' + : null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.NodeProto) return r; + var a = new s.onnx.NodeProto(); + if (r.input) { + if (!Array.isArray(r.input)) throw TypeError('.onnx.NodeProto.input: array expected'); + a.input = []; + for (var l = 0; l < r.input.length; ++l) a.input[l] = String(r.input[l]); + } + if (r.output) { + if (!Array.isArray(r.output)) throw TypeError('.onnx.NodeProto.output: array expected'); + a.output = []; + for (var l = 0; l < r.output.length; ++l) a.output[l] = String(r.output[l]); + } + if ( + (r.name != null && (a.name = String(r.name)), + r.opType != null && (a.opType = String(r.opType)), + r.domain != null && (a.domain = String(r.domain)), + r.attribute) + ) { + if (!Array.isArray(r.attribute)) + throw TypeError('.onnx.NodeProto.attribute: array expected'); + a.attribute = []; + for (var l = 0; l < r.attribute.length; ++l) { + if (typeof r.attribute[l] != 'object') + throw TypeError('.onnx.NodeProto.attribute: object expected'); + a.attribute[l] = s.onnx.AttributeProto.fromObject(r.attribute[l]); + } + } + return r.docString != null && (a.docString = String(r.docString)), a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if ( + ((a.arrays || a.defaults) && ((l.input = []), (l.output = []), (l.attribute = [])), + a.defaults && ((l.name = ''), (l.opType = ''), (l.docString = ''), (l.domain = '')), + r.input && r.input.length) + ) { + l.input = []; + for (var p = 0; p < r.input.length; ++p) l.input[p] = r.input[p]; + } + if (r.output && r.output.length) { + l.output = []; + for (var p = 0; p < r.output.length; ++p) l.output[p] = r.output[p]; + } + if ( + (r.name != null && r.hasOwnProperty('name') && (l.name = r.name), + r.opType != null && r.hasOwnProperty('opType') && (l.opType = r.opType), + r.attribute && r.attribute.length) + ) { + l.attribute = []; + for (var p = 0; p < r.attribute.length; ++p) + l.attribute[p] = s.onnx.AttributeProto.toObject(r.attribute[p], a); + } + return ( + r.docString != null && r.hasOwnProperty('docString') && (l.docString = r.docString), + r.domain != null && r.hasOwnProperty('domain') && (l.domain = r.domain), + l + ); + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.NodeProto'; + }), + f + ); + })()), + (d.TrainingInfoProto = (function () { + function f(r) { + if (((this.initializationBinding = []), (this.updateBinding = []), r)) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.initialization = null), + (f.prototype.algorithm = null), + (f.prototype.initializationBinding = n.emptyArray), + (f.prototype.updateBinding = n.emptyArray), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + if ( + (a || (a = u.create()), + r.initialization != null && + Object.hasOwnProperty.call(r, 'initialization') && + s.onnx.GraphProto.encode(r.initialization, a.uint32(10).fork()).ldelim(), + r.algorithm != null && + Object.hasOwnProperty.call(r, 'algorithm') && + s.onnx.GraphProto.encode(r.algorithm, a.uint32(18).fork()).ldelim(), + r.initializationBinding != null && r.initializationBinding.length) + ) + for (var l = 0; l < r.initializationBinding.length; ++l) + s.onnx.StringStringEntryProto.encode( + r.initializationBinding[l], + a.uint32(26).fork() + ).ldelim(); + if (r.updateBinding != null && r.updateBinding.length) + for (var l = 0; l < r.updateBinding.length; ++l) + s.onnx.StringStringEntryProto.encode( + r.updateBinding[l], + a.uint32(34).fork() + ).ldelim(); + return a; + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for ( + var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.TrainingInfoProto(); + r.pos < l; + + ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + p.initialization = s.onnx.GraphProto.decode(r, r.uint32()); + break; + } + case 2: { + p.algorithm = s.onnx.GraphProto.decode(r, r.uint32()); + break; + } + case 3: { + (p.initializationBinding && p.initializationBinding.length) || + (p.initializationBinding = []), + p.initializationBinding.push( + s.onnx.StringStringEntryProto.decode(r, r.uint32()) + ); + break; + } + case 4: { + (p.updateBinding && p.updateBinding.length) || (p.updateBinding = []), + p.updateBinding.push(s.onnx.StringStringEntryProto.decode(r, r.uint32())); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if (r.initialization != null && r.hasOwnProperty('initialization')) { + var a = s.onnx.GraphProto.verify(r.initialization); + if (a) return 'initialization.' + a; + } + if (r.algorithm != null && r.hasOwnProperty('algorithm')) { + var a = s.onnx.GraphProto.verify(r.algorithm); + if (a) return 'algorithm.' + a; + } + if (r.initializationBinding != null && r.hasOwnProperty('initializationBinding')) { + if (!Array.isArray(r.initializationBinding)) + return 'initializationBinding: array expected'; + for (var l = 0; l < r.initializationBinding.length; ++l) { + var a = s.onnx.StringStringEntryProto.verify(r.initializationBinding[l]); + if (a) return 'initializationBinding.' + a; + } + } + if (r.updateBinding != null && r.hasOwnProperty('updateBinding')) { + if (!Array.isArray(r.updateBinding)) return 'updateBinding: array expected'; + for (var l = 0; l < r.updateBinding.length; ++l) { + var a = s.onnx.StringStringEntryProto.verify(r.updateBinding[l]); + if (a) return 'updateBinding.' + a; + } + } + return null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.TrainingInfoProto) return r; + var a = new s.onnx.TrainingInfoProto(); + if (r.initialization != null) { + if (typeof r.initialization != 'object') + throw TypeError('.onnx.TrainingInfoProto.initialization: object expected'); + a.initialization = s.onnx.GraphProto.fromObject(r.initialization); + } + if (r.algorithm != null) { + if (typeof r.algorithm != 'object') + throw TypeError('.onnx.TrainingInfoProto.algorithm: object expected'); + a.algorithm = s.onnx.GraphProto.fromObject(r.algorithm); + } + if (r.initializationBinding) { + if (!Array.isArray(r.initializationBinding)) + throw TypeError('.onnx.TrainingInfoProto.initializationBinding: array expected'); + a.initializationBinding = []; + for (var l = 0; l < r.initializationBinding.length; ++l) { + if (typeof r.initializationBinding[l] != 'object') + throw TypeError( + '.onnx.TrainingInfoProto.initializationBinding: object expected' + ); + a.initializationBinding[l] = s.onnx.StringStringEntryProto.fromObject( + r.initializationBinding[l] + ); + } + } + if (r.updateBinding) { + if (!Array.isArray(r.updateBinding)) + throw TypeError('.onnx.TrainingInfoProto.updateBinding: array expected'); + a.updateBinding = []; + for (var l = 0; l < r.updateBinding.length; ++l) { + if (typeof r.updateBinding[l] != 'object') + throw TypeError('.onnx.TrainingInfoProto.updateBinding: object expected'); + a.updateBinding[l] = s.onnx.StringStringEntryProto.fromObject(r.updateBinding[l]); + } + } + return a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if ( + ((a.arrays || a.defaults) && ((l.initializationBinding = []), (l.updateBinding = [])), + a.defaults && ((l.initialization = null), (l.algorithm = null)), + r.initialization != null && + r.hasOwnProperty('initialization') && + (l.initialization = s.onnx.GraphProto.toObject(r.initialization, a)), + r.algorithm != null && + r.hasOwnProperty('algorithm') && + (l.algorithm = s.onnx.GraphProto.toObject(r.algorithm, a)), + r.initializationBinding && r.initializationBinding.length) + ) { + l.initializationBinding = []; + for (var p = 0; p < r.initializationBinding.length; ++p) + l.initializationBinding[p] = s.onnx.StringStringEntryProto.toObject( + r.initializationBinding[p], + a + ); + } + if (r.updateBinding && r.updateBinding.length) { + l.updateBinding = []; + for (var p = 0; p < r.updateBinding.length; ++p) + l.updateBinding[p] = s.onnx.StringStringEntryProto.toObject(r.updateBinding[p], a); + } + return l; + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.TrainingInfoProto'; + }), + f + ); + })()), + (d.ModelProto = (function () { + function f(r) { + if ( + ((this.opsetImport = []), + (this.metadataProps = []), + (this.trainingInfo = []), + (this.functions = []), + r) + ) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.irVersion = n.Long ? n.Long.fromBits(0, 0, !1) : 0), + (f.prototype.opsetImport = n.emptyArray), + (f.prototype.producerName = ''), + (f.prototype.producerVersion = ''), + (f.prototype.domain = ''), + (f.prototype.modelVersion = n.Long ? n.Long.fromBits(0, 0, !1) : 0), + (f.prototype.docString = ''), + (f.prototype.graph = null), + (f.prototype.metadataProps = n.emptyArray), + (f.prototype.trainingInfo = n.emptyArray), + (f.prototype.functions = n.emptyArray), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + if ( + (a || (a = u.create()), + r.irVersion != null && + Object.hasOwnProperty.call(r, 'irVersion') && + a.uint32(8).int64(r.irVersion), + r.producerName != null && + Object.hasOwnProperty.call(r, 'producerName') && + a.uint32(18).string(r.producerName), + r.producerVersion != null && + Object.hasOwnProperty.call(r, 'producerVersion') && + a.uint32(26).string(r.producerVersion), + r.domain != null && + Object.hasOwnProperty.call(r, 'domain') && + a.uint32(34).string(r.domain), + r.modelVersion != null && + Object.hasOwnProperty.call(r, 'modelVersion') && + a.uint32(40).int64(r.modelVersion), + r.docString != null && + Object.hasOwnProperty.call(r, 'docString') && + a.uint32(50).string(r.docString), + r.graph != null && + Object.hasOwnProperty.call(r, 'graph') && + s.onnx.GraphProto.encode(r.graph, a.uint32(58).fork()).ldelim(), + r.opsetImport != null && r.opsetImport.length) + ) + for (var l = 0; l < r.opsetImport.length; ++l) + s.onnx.OperatorSetIdProto.encode(r.opsetImport[l], a.uint32(66).fork()).ldelim(); + if (r.metadataProps != null && r.metadataProps.length) + for (var l = 0; l < r.metadataProps.length; ++l) + s.onnx.StringStringEntryProto.encode( + r.metadataProps[l], + a.uint32(114).fork() + ).ldelim(); + if (r.trainingInfo != null && r.trainingInfo.length) + for (var l = 0; l < r.trainingInfo.length; ++l) + s.onnx.TrainingInfoProto.encode(r.trainingInfo[l], a.uint32(162).fork()).ldelim(); + if (r.functions != null && r.functions.length) + for (var l = 0; l < r.functions.length; ++l) + s.onnx.FunctionProto.encode(r.functions[l], a.uint32(202).fork()).ldelim(); + return a; + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for (var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.ModelProto(); r.pos < l; ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + p.irVersion = r.int64(); + break; + } + case 8: { + (p.opsetImport && p.opsetImport.length) || (p.opsetImport = []), + p.opsetImport.push(s.onnx.OperatorSetIdProto.decode(r, r.uint32())); + break; + } + case 2: { + p.producerName = r.string(); + break; + } + case 3: { + p.producerVersion = r.string(); + break; + } + case 4: { + p.domain = r.string(); + break; + } + case 5: { + p.modelVersion = r.int64(); + break; + } + case 6: { + p.docString = r.string(); + break; + } + case 7: { + p.graph = s.onnx.GraphProto.decode(r, r.uint32()); + break; + } + case 14: { + (p.metadataProps && p.metadataProps.length) || (p.metadataProps = []), + p.metadataProps.push(s.onnx.StringStringEntryProto.decode(r, r.uint32())); + break; + } + case 20: { + (p.trainingInfo && p.trainingInfo.length) || (p.trainingInfo = []), + p.trainingInfo.push(s.onnx.TrainingInfoProto.decode(r, r.uint32())); + break; + } + case 25: { + (p.functions && p.functions.length) || (p.functions = []), + p.functions.push(s.onnx.FunctionProto.decode(r, r.uint32())); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if ( + r.irVersion != null && + r.hasOwnProperty('irVersion') && + !n.isInteger(r.irVersion) && + !(r.irVersion && n.isInteger(r.irVersion.low) && n.isInteger(r.irVersion.high)) + ) + return 'irVersion: integer|Long expected'; + if (r.opsetImport != null && r.hasOwnProperty('opsetImport')) { + if (!Array.isArray(r.opsetImport)) return 'opsetImport: array expected'; + for (var a = 0; a < r.opsetImport.length; ++a) { + var l = s.onnx.OperatorSetIdProto.verify(r.opsetImport[a]); + if (l) return 'opsetImport.' + l; + } + } + if ( + r.producerName != null && + r.hasOwnProperty('producerName') && + !n.isString(r.producerName) + ) + return 'producerName: string expected'; + if ( + r.producerVersion != null && + r.hasOwnProperty('producerVersion') && + !n.isString(r.producerVersion) + ) + return 'producerVersion: string expected'; + if (r.domain != null && r.hasOwnProperty('domain') && !n.isString(r.domain)) + return 'domain: string expected'; + if ( + r.modelVersion != null && + r.hasOwnProperty('modelVersion') && + !n.isInteger(r.modelVersion) && + !(r.modelVersion && n.isInteger(r.modelVersion.low) && n.isInteger(r.modelVersion.high)) + ) + return 'modelVersion: integer|Long expected'; + if (r.docString != null && r.hasOwnProperty('docString') && !n.isString(r.docString)) + return 'docString: string expected'; + if (r.graph != null && r.hasOwnProperty('graph')) { + var l = s.onnx.GraphProto.verify(r.graph); + if (l) return 'graph.' + l; + } + if (r.metadataProps != null && r.hasOwnProperty('metadataProps')) { + if (!Array.isArray(r.metadataProps)) return 'metadataProps: array expected'; + for (var a = 0; a < r.metadataProps.length; ++a) { + var l = s.onnx.StringStringEntryProto.verify(r.metadataProps[a]); + if (l) return 'metadataProps.' + l; + } + } + if (r.trainingInfo != null && r.hasOwnProperty('trainingInfo')) { + if (!Array.isArray(r.trainingInfo)) return 'trainingInfo: array expected'; + for (var a = 0; a < r.trainingInfo.length; ++a) { + var l = s.onnx.TrainingInfoProto.verify(r.trainingInfo[a]); + if (l) return 'trainingInfo.' + l; + } + } + if (r.functions != null && r.hasOwnProperty('functions')) { + if (!Array.isArray(r.functions)) return 'functions: array expected'; + for (var a = 0; a < r.functions.length; ++a) { + var l = s.onnx.FunctionProto.verify(r.functions[a]); + if (l) return 'functions.' + l; + } + } + return null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.ModelProto) return r; + var a = new s.onnx.ModelProto(); + if ( + (r.irVersion != null && + (n.Long + ? ((a.irVersion = n.Long.fromValue(r.irVersion)).unsigned = !1) + : typeof r.irVersion == 'string' + ? (a.irVersion = parseInt(r.irVersion, 10)) + : typeof r.irVersion == 'number' + ? (a.irVersion = r.irVersion) + : typeof r.irVersion == 'object' && + (a.irVersion = new n.LongBits( + r.irVersion.low >>> 0, + r.irVersion.high >>> 0 + ).toNumber())), + r.opsetImport) + ) { + if (!Array.isArray(r.opsetImport)) + throw TypeError('.onnx.ModelProto.opsetImport: array expected'); + a.opsetImport = []; + for (var l = 0; l < r.opsetImport.length; ++l) { + if (typeof r.opsetImport[l] != 'object') + throw TypeError('.onnx.ModelProto.opsetImport: object expected'); + a.opsetImport[l] = s.onnx.OperatorSetIdProto.fromObject(r.opsetImport[l]); + } + } + if ( + (r.producerName != null && (a.producerName = String(r.producerName)), + r.producerVersion != null && (a.producerVersion = String(r.producerVersion)), + r.domain != null && (a.domain = String(r.domain)), + r.modelVersion != null && + (n.Long + ? ((a.modelVersion = n.Long.fromValue(r.modelVersion)).unsigned = !1) + : typeof r.modelVersion == 'string' + ? (a.modelVersion = parseInt(r.modelVersion, 10)) + : typeof r.modelVersion == 'number' + ? (a.modelVersion = r.modelVersion) + : typeof r.modelVersion == 'object' && + (a.modelVersion = new n.LongBits( + r.modelVersion.low >>> 0, + r.modelVersion.high >>> 0 + ).toNumber())), + r.docString != null && (a.docString = String(r.docString)), + r.graph != null) + ) { + if (typeof r.graph != 'object') + throw TypeError('.onnx.ModelProto.graph: object expected'); + a.graph = s.onnx.GraphProto.fromObject(r.graph); + } + if (r.metadataProps) { + if (!Array.isArray(r.metadataProps)) + throw TypeError('.onnx.ModelProto.metadataProps: array expected'); + a.metadataProps = []; + for (var l = 0; l < r.metadataProps.length; ++l) { + if (typeof r.metadataProps[l] != 'object') + throw TypeError('.onnx.ModelProto.metadataProps: object expected'); + a.metadataProps[l] = s.onnx.StringStringEntryProto.fromObject(r.metadataProps[l]); + } + } + if (r.trainingInfo) { + if (!Array.isArray(r.trainingInfo)) + throw TypeError('.onnx.ModelProto.trainingInfo: array expected'); + a.trainingInfo = []; + for (var l = 0; l < r.trainingInfo.length; ++l) { + if (typeof r.trainingInfo[l] != 'object') + throw TypeError('.onnx.ModelProto.trainingInfo: object expected'); + a.trainingInfo[l] = s.onnx.TrainingInfoProto.fromObject(r.trainingInfo[l]); + } + } + if (r.functions) { + if (!Array.isArray(r.functions)) + throw TypeError('.onnx.ModelProto.functions: array expected'); + a.functions = []; + for (var l = 0; l < r.functions.length; ++l) { + if (typeof r.functions[l] != 'object') + throw TypeError('.onnx.ModelProto.functions: object expected'); + a.functions[l] = s.onnx.FunctionProto.fromObject(r.functions[l]); + } + } + return a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if ( + ((a.arrays || a.defaults) && + ((l.opsetImport = []), + (l.metadataProps = []), + (l.trainingInfo = []), + (l.functions = [])), + a.defaults) + ) { + if (n.Long) { + var p = new n.Long(0, 0, !1); + l.irVersion = + a.longs === String ? p.toString() : a.longs === Number ? p.toNumber() : p; + } else l.irVersion = a.longs === String ? '0' : 0; + if (((l.producerName = ''), (l.producerVersion = ''), (l.domain = ''), n.Long)) { + var p = new n.Long(0, 0, !1); + l.modelVersion = + a.longs === String ? p.toString() : a.longs === Number ? p.toNumber() : p; + } else l.modelVersion = a.longs === String ? '0' : 0; + (l.docString = ''), (l.graph = null); + } + if ( + (r.irVersion != null && + r.hasOwnProperty('irVersion') && + (typeof r.irVersion == 'number' + ? (l.irVersion = a.longs === String ? String(r.irVersion) : r.irVersion) + : (l.irVersion = + a.longs === String + ? n.Long.prototype.toString.call(r.irVersion) + : a.longs === Number + ? new n.LongBits( + r.irVersion.low >>> 0, + r.irVersion.high >>> 0 + ).toNumber() + : r.irVersion)), + r.producerName != null && + r.hasOwnProperty('producerName') && + (l.producerName = r.producerName), + r.producerVersion != null && + r.hasOwnProperty('producerVersion') && + (l.producerVersion = r.producerVersion), + r.domain != null && r.hasOwnProperty('domain') && (l.domain = r.domain), + r.modelVersion != null && + r.hasOwnProperty('modelVersion') && + (typeof r.modelVersion == 'number' + ? (l.modelVersion = + a.longs === String ? String(r.modelVersion) : r.modelVersion) + : (l.modelVersion = + a.longs === String + ? n.Long.prototype.toString.call(r.modelVersion) + : a.longs === Number + ? new n.LongBits( + r.modelVersion.low >>> 0, + r.modelVersion.high >>> 0 + ).toNumber() + : r.modelVersion)), + r.docString != null && r.hasOwnProperty('docString') && (l.docString = r.docString), + r.graph != null && + r.hasOwnProperty('graph') && + (l.graph = s.onnx.GraphProto.toObject(r.graph, a)), + r.opsetImport && r.opsetImport.length) + ) { + l.opsetImport = []; + for (var m = 0; m < r.opsetImport.length; ++m) + l.opsetImport[m] = s.onnx.OperatorSetIdProto.toObject(r.opsetImport[m], a); + } + if (r.metadataProps && r.metadataProps.length) { + l.metadataProps = []; + for (var m = 0; m < r.metadataProps.length; ++m) + l.metadataProps[m] = s.onnx.StringStringEntryProto.toObject(r.metadataProps[m], a); + } + if (r.trainingInfo && r.trainingInfo.length) { + l.trainingInfo = []; + for (var m = 0; m < r.trainingInfo.length; ++m) + l.trainingInfo[m] = s.onnx.TrainingInfoProto.toObject(r.trainingInfo[m], a); + } + if (r.functions && r.functions.length) { + l.functions = []; + for (var m = 0; m < r.functions.length; ++m) + l.functions[m] = s.onnx.FunctionProto.toObject(r.functions[m], a); + } + return l; + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.ModelProto'; + }), + f + ); + })()), + (d.StringStringEntryProto = (function () { + function f(r) { + if (r) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.key = ''), + (f.prototype.value = ''), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + return ( + a || (a = u.create()), + r.key != null && Object.hasOwnProperty.call(r, 'key') && a.uint32(10).string(r.key), + r.value != null && + Object.hasOwnProperty.call(r, 'value') && + a.uint32(18).string(r.value), + a + ); + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for ( + var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.StringStringEntryProto(); + r.pos < l; + + ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + p.key = r.string(); + break; + } + case 2: { + p.value = r.string(); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + return typeof r != 'object' || r === null + ? 'object expected' + : r.key != null && r.hasOwnProperty('key') && !n.isString(r.key) + ? 'key: string expected' + : r.value != null && r.hasOwnProperty('value') && !n.isString(r.value) + ? 'value: string expected' + : null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.StringStringEntryProto) return r; + var a = new s.onnx.StringStringEntryProto(); + return ( + r.key != null && (a.key = String(r.key)), + r.value != null && (a.value = String(r.value)), + a + ); + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + return ( + a.defaults && ((l.key = ''), (l.value = '')), + r.key != null && r.hasOwnProperty('key') && (l.key = r.key), + r.value != null && r.hasOwnProperty('value') && (l.value = r.value), + l + ); + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.StringStringEntryProto'; + }), + f + ); + })()), + (d.TensorAnnotation = (function () { + function f(r) { + if (((this.quantParameterTensorNames = []), r)) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.tensorName = ''), + (f.prototype.quantParameterTensorNames = n.emptyArray), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + if ( + (a || (a = u.create()), + r.tensorName != null && + Object.hasOwnProperty.call(r, 'tensorName') && + a.uint32(10).string(r.tensorName), + r.quantParameterTensorNames != null && r.quantParameterTensorNames.length) + ) + for (var l = 0; l < r.quantParameterTensorNames.length; ++l) + s.onnx.StringStringEntryProto.encode( + r.quantParameterTensorNames[l], + a.uint32(18).fork() + ).ldelim(); + return a; + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for ( + var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.TensorAnnotation(); + r.pos < l; + + ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + p.tensorName = r.string(); + break; + } + case 2: { + (p.quantParameterTensorNames && p.quantParameterTensorNames.length) || + (p.quantParameterTensorNames = []), + p.quantParameterTensorNames.push( + s.onnx.StringStringEntryProto.decode(r, r.uint32()) + ); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if (r.tensorName != null && r.hasOwnProperty('tensorName') && !n.isString(r.tensorName)) + return 'tensorName: string expected'; + if (r.quantParameterTensorNames != null && r.hasOwnProperty('quantParameterTensorNames')) { + if (!Array.isArray(r.quantParameterTensorNames)) + return 'quantParameterTensorNames: array expected'; + for (var a = 0; a < r.quantParameterTensorNames.length; ++a) { + var l = s.onnx.StringStringEntryProto.verify(r.quantParameterTensorNames[a]); + if (l) return 'quantParameterTensorNames.' + l; + } + } + return null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.TensorAnnotation) return r; + var a = new s.onnx.TensorAnnotation(); + if ( + (r.tensorName != null && (a.tensorName = String(r.tensorName)), + r.quantParameterTensorNames) + ) { + if (!Array.isArray(r.quantParameterTensorNames)) + throw TypeError('.onnx.TensorAnnotation.quantParameterTensorNames: array expected'); + a.quantParameterTensorNames = []; + for (var l = 0; l < r.quantParameterTensorNames.length; ++l) { + if (typeof r.quantParameterTensorNames[l] != 'object') + throw TypeError( + '.onnx.TensorAnnotation.quantParameterTensorNames: object expected' + ); + a.quantParameterTensorNames[l] = s.onnx.StringStringEntryProto.fromObject( + r.quantParameterTensorNames[l] + ); + } + } + return a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if ( + ((a.arrays || a.defaults) && (l.quantParameterTensorNames = []), + a.defaults && (l.tensorName = ''), + r.tensorName != null && r.hasOwnProperty('tensorName') && (l.tensorName = r.tensorName), + r.quantParameterTensorNames && r.quantParameterTensorNames.length) + ) { + l.quantParameterTensorNames = []; + for (var p = 0; p < r.quantParameterTensorNames.length; ++p) + l.quantParameterTensorNames[p] = s.onnx.StringStringEntryProto.toObject( + r.quantParameterTensorNames[p], + a + ); + } + return l; + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.TensorAnnotation'; + }), + f + ); + })()), + (d.GraphProto = (function () { + function f(r) { + if ( + ((this.node = []), + (this.initializer = []), + (this.sparseInitializer = []), + (this.input = []), + (this.output = []), + (this.valueInfo = []), + (this.quantizationAnnotation = []), + r) + ) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.node = n.emptyArray), + (f.prototype.name = ''), + (f.prototype.initializer = n.emptyArray), + (f.prototype.sparseInitializer = n.emptyArray), + (f.prototype.docString = ''), + (f.prototype.input = n.emptyArray), + (f.prototype.output = n.emptyArray), + (f.prototype.valueInfo = n.emptyArray), + (f.prototype.quantizationAnnotation = n.emptyArray), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + if ((a || (a = u.create()), r.node != null && r.node.length)) + for (var l = 0; l < r.node.length; ++l) + s.onnx.NodeProto.encode(r.node[l], a.uint32(10).fork()).ldelim(); + if ( + (r.name != null && Object.hasOwnProperty.call(r, 'name') && a.uint32(18).string(r.name), + r.initializer != null && r.initializer.length) + ) + for (var l = 0; l < r.initializer.length; ++l) + s.onnx.TensorProto.encode(r.initializer[l], a.uint32(42).fork()).ldelim(); + if ( + (r.docString != null && + Object.hasOwnProperty.call(r, 'docString') && + a.uint32(82).string(r.docString), + r.input != null && r.input.length) + ) + for (var l = 0; l < r.input.length; ++l) + s.onnx.ValueInfoProto.encode(r.input[l], a.uint32(90).fork()).ldelim(); + if (r.output != null && r.output.length) + for (var l = 0; l < r.output.length; ++l) + s.onnx.ValueInfoProto.encode(r.output[l], a.uint32(98).fork()).ldelim(); + if (r.valueInfo != null && r.valueInfo.length) + for (var l = 0; l < r.valueInfo.length; ++l) + s.onnx.ValueInfoProto.encode(r.valueInfo[l], a.uint32(106).fork()).ldelim(); + if (r.quantizationAnnotation != null && r.quantizationAnnotation.length) + for (var l = 0; l < r.quantizationAnnotation.length; ++l) + s.onnx.TensorAnnotation.encode( + r.quantizationAnnotation[l], + a.uint32(114).fork() + ).ldelim(); + if (r.sparseInitializer != null && r.sparseInitializer.length) + for (var l = 0; l < r.sparseInitializer.length; ++l) + s.onnx.SparseTensorProto.encode( + r.sparseInitializer[l], + a.uint32(122).fork() + ).ldelim(); + return a; + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for (var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.GraphProto(); r.pos < l; ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + (p.node && p.node.length) || (p.node = []), + p.node.push(s.onnx.NodeProto.decode(r, r.uint32())); + break; + } + case 2: { + p.name = r.string(); + break; + } + case 5: { + (p.initializer && p.initializer.length) || (p.initializer = []), + p.initializer.push(s.onnx.TensorProto.decode(r, r.uint32())); + break; + } + case 15: { + (p.sparseInitializer && p.sparseInitializer.length) || + (p.sparseInitializer = []), + p.sparseInitializer.push(s.onnx.SparseTensorProto.decode(r, r.uint32())); + break; + } + case 10: { + p.docString = r.string(); + break; + } + case 11: { + (p.input && p.input.length) || (p.input = []), + p.input.push(s.onnx.ValueInfoProto.decode(r, r.uint32())); + break; + } + case 12: { + (p.output && p.output.length) || (p.output = []), + p.output.push(s.onnx.ValueInfoProto.decode(r, r.uint32())); + break; + } + case 13: { + (p.valueInfo && p.valueInfo.length) || (p.valueInfo = []), + p.valueInfo.push(s.onnx.ValueInfoProto.decode(r, r.uint32())); + break; + } + case 14: { + (p.quantizationAnnotation && p.quantizationAnnotation.length) || + (p.quantizationAnnotation = []), + p.quantizationAnnotation.push( + s.onnx.TensorAnnotation.decode(r, r.uint32()) + ); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if (r.node != null && r.hasOwnProperty('node')) { + if (!Array.isArray(r.node)) return 'node: array expected'; + for (var a = 0; a < r.node.length; ++a) { + var l = s.onnx.NodeProto.verify(r.node[a]); + if (l) return 'node.' + l; + } + } + if (r.name != null && r.hasOwnProperty('name') && !n.isString(r.name)) + return 'name: string expected'; + if (r.initializer != null && r.hasOwnProperty('initializer')) { + if (!Array.isArray(r.initializer)) return 'initializer: array expected'; + for (var a = 0; a < r.initializer.length; ++a) { + var l = s.onnx.TensorProto.verify(r.initializer[a]); + if (l) return 'initializer.' + l; + } + } + if (r.sparseInitializer != null && r.hasOwnProperty('sparseInitializer')) { + if (!Array.isArray(r.sparseInitializer)) return 'sparseInitializer: array expected'; + for (var a = 0; a < r.sparseInitializer.length; ++a) { + var l = s.onnx.SparseTensorProto.verify(r.sparseInitializer[a]); + if (l) return 'sparseInitializer.' + l; + } + } + if (r.docString != null && r.hasOwnProperty('docString') && !n.isString(r.docString)) + return 'docString: string expected'; + if (r.input != null && r.hasOwnProperty('input')) { + if (!Array.isArray(r.input)) return 'input: array expected'; + for (var a = 0; a < r.input.length; ++a) { + var l = s.onnx.ValueInfoProto.verify(r.input[a]); + if (l) return 'input.' + l; + } + } + if (r.output != null && r.hasOwnProperty('output')) { + if (!Array.isArray(r.output)) return 'output: array expected'; + for (var a = 0; a < r.output.length; ++a) { + var l = s.onnx.ValueInfoProto.verify(r.output[a]); + if (l) return 'output.' + l; + } + } + if (r.valueInfo != null && r.hasOwnProperty('valueInfo')) { + if (!Array.isArray(r.valueInfo)) return 'valueInfo: array expected'; + for (var a = 0; a < r.valueInfo.length; ++a) { + var l = s.onnx.ValueInfoProto.verify(r.valueInfo[a]); + if (l) return 'valueInfo.' + l; + } + } + if (r.quantizationAnnotation != null && r.hasOwnProperty('quantizationAnnotation')) { + if (!Array.isArray(r.quantizationAnnotation)) + return 'quantizationAnnotation: array expected'; + for (var a = 0; a < r.quantizationAnnotation.length; ++a) { + var l = s.onnx.TensorAnnotation.verify(r.quantizationAnnotation[a]); + if (l) return 'quantizationAnnotation.' + l; + } + } + return null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.GraphProto) return r; + var a = new s.onnx.GraphProto(); + if (r.node) { + if (!Array.isArray(r.node)) throw TypeError('.onnx.GraphProto.node: array expected'); + a.node = []; + for (var l = 0; l < r.node.length; ++l) { + if (typeof r.node[l] != 'object') + throw TypeError('.onnx.GraphProto.node: object expected'); + a.node[l] = s.onnx.NodeProto.fromObject(r.node[l]); + } + } + if ((r.name != null && (a.name = String(r.name)), r.initializer)) { + if (!Array.isArray(r.initializer)) + throw TypeError('.onnx.GraphProto.initializer: array expected'); + a.initializer = []; + for (var l = 0; l < r.initializer.length; ++l) { + if (typeof r.initializer[l] != 'object') + throw TypeError('.onnx.GraphProto.initializer: object expected'); + a.initializer[l] = s.onnx.TensorProto.fromObject(r.initializer[l]); + } + } + if (r.sparseInitializer) { + if (!Array.isArray(r.sparseInitializer)) + throw TypeError('.onnx.GraphProto.sparseInitializer: array expected'); + a.sparseInitializer = []; + for (var l = 0; l < r.sparseInitializer.length; ++l) { + if (typeof r.sparseInitializer[l] != 'object') + throw TypeError('.onnx.GraphProto.sparseInitializer: object expected'); + a.sparseInitializer[l] = s.onnx.SparseTensorProto.fromObject( + r.sparseInitializer[l] + ); + } + } + if ((r.docString != null && (a.docString = String(r.docString)), r.input)) { + if (!Array.isArray(r.input)) throw TypeError('.onnx.GraphProto.input: array expected'); + a.input = []; + for (var l = 0; l < r.input.length; ++l) { + if (typeof r.input[l] != 'object') + throw TypeError('.onnx.GraphProto.input: object expected'); + a.input[l] = s.onnx.ValueInfoProto.fromObject(r.input[l]); + } + } + if (r.output) { + if (!Array.isArray(r.output)) + throw TypeError('.onnx.GraphProto.output: array expected'); + a.output = []; + for (var l = 0; l < r.output.length; ++l) { + if (typeof r.output[l] != 'object') + throw TypeError('.onnx.GraphProto.output: object expected'); + a.output[l] = s.onnx.ValueInfoProto.fromObject(r.output[l]); + } + } + if (r.valueInfo) { + if (!Array.isArray(r.valueInfo)) + throw TypeError('.onnx.GraphProto.valueInfo: array expected'); + a.valueInfo = []; + for (var l = 0; l < r.valueInfo.length; ++l) { + if (typeof r.valueInfo[l] != 'object') + throw TypeError('.onnx.GraphProto.valueInfo: object expected'); + a.valueInfo[l] = s.onnx.ValueInfoProto.fromObject(r.valueInfo[l]); + } + } + if (r.quantizationAnnotation) { + if (!Array.isArray(r.quantizationAnnotation)) + throw TypeError('.onnx.GraphProto.quantizationAnnotation: array expected'); + a.quantizationAnnotation = []; + for (var l = 0; l < r.quantizationAnnotation.length; ++l) { + if (typeof r.quantizationAnnotation[l] != 'object') + throw TypeError('.onnx.GraphProto.quantizationAnnotation: object expected'); + a.quantizationAnnotation[l] = s.onnx.TensorAnnotation.fromObject( + r.quantizationAnnotation[l] + ); + } + } + return a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if ( + ((a.arrays || a.defaults) && + ((l.node = []), + (l.initializer = []), + (l.input = []), + (l.output = []), + (l.valueInfo = []), + (l.quantizationAnnotation = []), + (l.sparseInitializer = [])), + a.defaults && ((l.name = ''), (l.docString = '')), + r.node && r.node.length) + ) { + l.node = []; + for (var p = 0; p < r.node.length; ++p) + l.node[p] = s.onnx.NodeProto.toObject(r.node[p], a); + } + if ( + (r.name != null && r.hasOwnProperty('name') && (l.name = r.name), + r.initializer && r.initializer.length) + ) { + l.initializer = []; + for (var p = 0; p < r.initializer.length; ++p) + l.initializer[p] = s.onnx.TensorProto.toObject(r.initializer[p], a); + } + if ( + (r.docString != null && r.hasOwnProperty('docString') && (l.docString = r.docString), + r.input && r.input.length) + ) { + l.input = []; + for (var p = 0; p < r.input.length; ++p) + l.input[p] = s.onnx.ValueInfoProto.toObject(r.input[p], a); + } + if (r.output && r.output.length) { + l.output = []; + for (var p = 0; p < r.output.length; ++p) + l.output[p] = s.onnx.ValueInfoProto.toObject(r.output[p], a); + } + if (r.valueInfo && r.valueInfo.length) { + l.valueInfo = []; + for (var p = 0; p < r.valueInfo.length; ++p) + l.valueInfo[p] = s.onnx.ValueInfoProto.toObject(r.valueInfo[p], a); + } + if (r.quantizationAnnotation && r.quantizationAnnotation.length) { + l.quantizationAnnotation = []; + for (var p = 0; p < r.quantizationAnnotation.length; ++p) + l.quantizationAnnotation[p] = s.onnx.TensorAnnotation.toObject( + r.quantizationAnnotation[p], + a + ); + } + if (r.sparseInitializer && r.sparseInitializer.length) { + l.sparseInitializer = []; + for (var p = 0; p < r.sparseInitializer.length; ++p) + l.sparseInitializer[p] = s.onnx.SparseTensorProto.toObject( + r.sparseInitializer[p], + a + ); + } + return l; + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.GraphProto'; + }), + f + ); + })()), + (d.TensorProto = (function () { + function f(r) { + if ( + ((this.dims = []), + (this.floatData = []), + (this.int32Data = []), + (this.stringData = []), + (this.int64Data = []), + (this.externalData = []), + (this.doubleData = []), + (this.uint64Data = []), + r) + ) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.dims = n.emptyArray), + (f.prototype.dataType = 0), + (f.prototype.segment = null), + (f.prototype.floatData = n.emptyArray), + (f.prototype.int32Data = n.emptyArray), + (f.prototype.stringData = n.emptyArray), + (f.prototype.int64Data = n.emptyArray), + (f.prototype.name = ''), + (f.prototype.docString = ''), + (f.prototype.rawData = n.newBuffer([])), + (f.prototype.externalData = n.emptyArray), + (f.prototype.dataLocation = 0), + (f.prototype.doubleData = n.emptyArray), + (f.prototype.uint64Data = n.emptyArray), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + if ((a || (a = u.create()), r.dims != null && r.dims.length)) { + a.uint32(10).fork(); + for (var l = 0; l < r.dims.length; ++l) a.int64(r.dims[l]); + a.ldelim(); + } + if ( + (r.dataType != null && + Object.hasOwnProperty.call(r, 'dataType') && + a.uint32(16).int32(r.dataType), + r.segment != null && + Object.hasOwnProperty.call(r, 'segment') && + s.onnx.TensorProto.Segment.encode(r.segment, a.uint32(26).fork()).ldelim(), + r.floatData != null && r.floatData.length) + ) { + a.uint32(34).fork(); + for (var l = 0; l < r.floatData.length; ++l) a.float(r.floatData[l]); + a.ldelim(); + } + if (r.int32Data != null && r.int32Data.length) { + a.uint32(42).fork(); + for (var l = 0; l < r.int32Data.length; ++l) a.int32(r.int32Data[l]); + a.ldelim(); + } + if (r.stringData != null && r.stringData.length) + for (var l = 0; l < r.stringData.length; ++l) a.uint32(50).bytes(r.stringData[l]); + if (r.int64Data != null && r.int64Data.length) { + a.uint32(58).fork(); + for (var l = 0; l < r.int64Data.length; ++l) a.int64(r.int64Data[l]); + a.ldelim(); + } + if ( + (r.name != null && Object.hasOwnProperty.call(r, 'name') && a.uint32(66).string(r.name), + r.rawData != null && + Object.hasOwnProperty.call(r, 'rawData') && + a.uint32(74).bytes(r.rawData), + r.doubleData != null && r.doubleData.length) + ) { + a.uint32(82).fork(); + for (var l = 0; l < r.doubleData.length; ++l) a.double(r.doubleData[l]); + a.ldelim(); + } + if (r.uint64Data != null && r.uint64Data.length) { + a.uint32(90).fork(); + for (var l = 0; l < r.uint64Data.length; ++l) a.uint64(r.uint64Data[l]); + a.ldelim(); + } + if ( + (r.docString != null && + Object.hasOwnProperty.call(r, 'docString') && + a.uint32(98).string(r.docString), + r.externalData != null && r.externalData.length) + ) + for (var l = 0; l < r.externalData.length; ++l) + s.onnx.StringStringEntryProto.encode( + r.externalData[l], + a.uint32(106).fork() + ).ldelim(); + return ( + r.dataLocation != null && + Object.hasOwnProperty.call(r, 'dataLocation') && + a.uint32(112).int32(r.dataLocation), + a + ); + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for (var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.TensorProto(); r.pos < l; ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + if (((p.dims && p.dims.length) || (p.dims = []), (m & 7) === 2)) + for (var y = r.uint32() + r.pos; r.pos < y; ) p.dims.push(r.int64()); + else p.dims.push(r.int64()); + break; + } + case 2: { + p.dataType = r.int32(); + break; + } + case 3: { + p.segment = s.onnx.TensorProto.Segment.decode(r, r.uint32()); + break; + } + case 4: { + if (((p.floatData && p.floatData.length) || (p.floatData = []), (m & 7) === 2)) + for (var y = r.uint32() + r.pos; r.pos < y; ) p.floatData.push(r.float()); + else p.floatData.push(r.float()); + break; + } + case 5: { + if (((p.int32Data && p.int32Data.length) || (p.int32Data = []), (m & 7) === 2)) + for (var y = r.uint32() + r.pos; r.pos < y; ) p.int32Data.push(r.int32()); + else p.int32Data.push(r.int32()); + break; + } + case 6: { + (p.stringData && p.stringData.length) || (p.stringData = []), + p.stringData.push(r.bytes()); + break; + } + case 7: { + if (((p.int64Data && p.int64Data.length) || (p.int64Data = []), (m & 7) === 2)) + for (var y = r.uint32() + r.pos; r.pos < y; ) p.int64Data.push(r.int64()); + else p.int64Data.push(r.int64()); + break; + } + case 8: { + p.name = r.string(); + break; + } + case 12: { + p.docString = r.string(); + break; + } + case 9: { + p.rawData = r.bytes(); + break; + } + case 13: { + (p.externalData && p.externalData.length) || (p.externalData = []), + p.externalData.push(s.onnx.StringStringEntryProto.decode(r, r.uint32())); + break; + } + case 14: { + p.dataLocation = r.int32(); + break; + } + case 10: { + if ( + ((p.doubleData && p.doubleData.length) || (p.doubleData = []), + (m & 7) === 2) + ) + for (var y = r.uint32() + r.pos; r.pos < y; ) p.doubleData.push(r.double()); + else p.doubleData.push(r.double()); + break; + } + case 11: { + if ( + ((p.uint64Data && p.uint64Data.length) || (p.uint64Data = []), + (m & 7) === 2) + ) + for (var y = r.uint32() + r.pos; r.pos < y; ) p.uint64Data.push(r.uint64()); + else p.uint64Data.push(r.uint64()); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if (r.dims != null && r.hasOwnProperty('dims')) { + if (!Array.isArray(r.dims)) return 'dims: array expected'; + for (var a = 0; a < r.dims.length; ++a) + if ( + !n.isInteger(r.dims[a]) && + !(r.dims[a] && n.isInteger(r.dims[a].low) && n.isInteger(r.dims[a].high)) + ) + return 'dims: integer|Long[] expected'; + } + if (r.dataType != null && r.hasOwnProperty('dataType') && !n.isInteger(r.dataType)) + return 'dataType: integer expected'; + if (r.segment != null && r.hasOwnProperty('segment')) { + var l = s.onnx.TensorProto.Segment.verify(r.segment); + if (l) return 'segment.' + l; + } + if (r.floatData != null && r.hasOwnProperty('floatData')) { + if (!Array.isArray(r.floatData)) return 'floatData: array expected'; + for (var a = 0; a < r.floatData.length; ++a) + if (typeof r.floatData[a] != 'number') return 'floatData: number[] expected'; + } + if (r.int32Data != null && r.hasOwnProperty('int32Data')) { + if (!Array.isArray(r.int32Data)) return 'int32Data: array expected'; + for (var a = 0; a < r.int32Data.length; ++a) + if (!n.isInteger(r.int32Data[a])) return 'int32Data: integer[] expected'; + } + if (r.stringData != null && r.hasOwnProperty('stringData')) { + if (!Array.isArray(r.stringData)) return 'stringData: array expected'; + for (var a = 0; a < r.stringData.length; ++a) + if ( + !( + (r.stringData[a] && typeof r.stringData[a].length == 'number') || + n.isString(r.stringData[a]) + ) + ) + return 'stringData: buffer[] expected'; + } + if (r.int64Data != null && r.hasOwnProperty('int64Data')) { + if (!Array.isArray(r.int64Data)) return 'int64Data: array expected'; + for (var a = 0; a < r.int64Data.length; ++a) + if ( + !n.isInteger(r.int64Data[a]) && + !( + r.int64Data[a] && + n.isInteger(r.int64Data[a].low) && + n.isInteger(r.int64Data[a].high) + ) + ) + return 'int64Data: integer|Long[] expected'; + } + if (r.name != null && r.hasOwnProperty('name') && !n.isString(r.name)) + return 'name: string expected'; + if (r.docString != null && r.hasOwnProperty('docString') && !n.isString(r.docString)) + return 'docString: string expected'; + if ( + r.rawData != null && + r.hasOwnProperty('rawData') && + !((r.rawData && typeof r.rawData.length == 'number') || n.isString(r.rawData)) + ) + return 'rawData: buffer expected'; + if (r.externalData != null && r.hasOwnProperty('externalData')) { + if (!Array.isArray(r.externalData)) return 'externalData: array expected'; + for (var a = 0; a < r.externalData.length; ++a) { + var l = s.onnx.StringStringEntryProto.verify(r.externalData[a]); + if (l) return 'externalData.' + l; + } + } + if (r.dataLocation != null && r.hasOwnProperty('dataLocation')) + switch (r.dataLocation) { + default: + return 'dataLocation: enum value expected'; + case 0: + case 1: + break; + } + if (r.doubleData != null && r.hasOwnProperty('doubleData')) { + if (!Array.isArray(r.doubleData)) return 'doubleData: array expected'; + for (var a = 0; a < r.doubleData.length; ++a) + if (typeof r.doubleData[a] != 'number') return 'doubleData: number[] expected'; + } + if (r.uint64Data != null && r.hasOwnProperty('uint64Data')) { + if (!Array.isArray(r.uint64Data)) return 'uint64Data: array expected'; + for (var a = 0; a < r.uint64Data.length; ++a) + if ( + !n.isInteger(r.uint64Data[a]) && + !( + r.uint64Data[a] && + n.isInteger(r.uint64Data[a].low) && + n.isInteger(r.uint64Data[a].high) + ) + ) + return 'uint64Data: integer|Long[] expected'; + } + return null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.TensorProto) return r; + var a = new s.onnx.TensorProto(); + if (r.dims) { + if (!Array.isArray(r.dims)) throw TypeError('.onnx.TensorProto.dims: array expected'); + a.dims = []; + for (var l = 0; l < r.dims.length; ++l) + n.Long + ? ((a.dims[l] = n.Long.fromValue(r.dims[l])).unsigned = !1) + : typeof r.dims[l] == 'string' + ? (a.dims[l] = parseInt(r.dims[l], 10)) + : typeof r.dims[l] == 'number' + ? (a.dims[l] = r.dims[l]) + : typeof r.dims[l] == 'object' && + (a.dims[l] = new n.LongBits( + r.dims[l].low >>> 0, + r.dims[l].high >>> 0 + ).toNumber()); + } + if ((r.dataType != null && (a.dataType = r.dataType | 0), r.segment != null)) { + if (typeof r.segment != 'object') + throw TypeError('.onnx.TensorProto.segment: object expected'); + a.segment = s.onnx.TensorProto.Segment.fromObject(r.segment); + } + if (r.floatData) { + if (!Array.isArray(r.floatData)) + throw TypeError('.onnx.TensorProto.floatData: array expected'); + a.floatData = []; + for (var l = 0; l < r.floatData.length; ++l) a.floatData[l] = Number(r.floatData[l]); + } + if (r.int32Data) { + if (!Array.isArray(r.int32Data)) + throw TypeError('.onnx.TensorProto.int32Data: array expected'); + a.int32Data = []; + for (var l = 0; l < r.int32Data.length; ++l) a.int32Data[l] = r.int32Data[l] | 0; + } + if (r.stringData) { + if (!Array.isArray(r.stringData)) + throw TypeError('.onnx.TensorProto.stringData: array expected'); + a.stringData = []; + for (var l = 0; l < r.stringData.length; ++l) + typeof r.stringData[l] == 'string' + ? n.base64.decode( + r.stringData[l], + (a.stringData[l] = n.newBuffer(n.base64.length(r.stringData[l]))), + 0 + ) + : r.stringData[l].length >= 0 && (a.stringData[l] = r.stringData[l]); + } + if (r.int64Data) { + if (!Array.isArray(r.int64Data)) + throw TypeError('.onnx.TensorProto.int64Data: array expected'); + a.int64Data = []; + for (var l = 0; l < r.int64Data.length; ++l) + n.Long + ? ((a.int64Data[l] = n.Long.fromValue(r.int64Data[l])).unsigned = !1) + : typeof r.int64Data[l] == 'string' + ? (a.int64Data[l] = parseInt(r.int64Data[l], 10)) + : typeof r.int64Data[l] == 'number' + ? (a.int64Data[l] = r.int64Data[l]) + : typeof r.int64Data[l] == 'object' && + (a.int64Data[l] = new n.LongBits( + r.int64Data[l].low >>> 0, + r.int64Data[l].high >>> 0 + ).toNumber()); + } + if ( + (r.name != null && (a.name = String(r.name)), + r.docString != null && (a.docString = String(r.docString)), + r.rawData != null && + (typeof r.rawData == 'string' + ? n.base64.decode( + r.rawData, + (a.rawData = n.newBuffer(n.base64.length(r.rawData))), + 0 + ) + : r.rawData.length >= 0 && (a.rawData = r.rawData)), + r.externalData) + ) { + if (!Array.isArray(r.externalData)) + throw TypeError('.onnx.TensorProto.externalData: array expected'); + a.externalData = []; + for (var l = 0; l < r.externalData.length; ++l) { + if (typeof r.externalData[l] != 'object') + throw TypeError('.onnx.TensorProto.externalData: object expected'); + a.externalData[l] = s.onnx.StringStringEntryProto.fromObject(r.externalData[l]); + } + } + switch (r.dataLocation) { + default: + if (typeof r.dataLocation == 'number') { + a.dataLocation = r.dataLocation; + break; + } + break; + case 'DEFAULT': + case 0: + a.dataLocation = 0; + break; + case 'EXTERNAL': + case 1: + a.dataLocation = 1; + break; + } + if (r.doubleData) { + if (!Array.isArray(r.doubleData)) + throw TypeError('.onnx.TensorProto.doubleData: array expected'); + a.doubleData = []; + for (var l = 0; l < r.doubleData.length; ++l) a.doubleData[l] = Number(r.doubleData[l]); + } + if (r.uint64Data) { + if (!Array.isArray(r.uint64Data)) + throw TypeError('.onnx.TensorProto.uint64Data: array expected'); + a.uint64Data = []; + for (var l = 0; l < r.uint64Data.length; ++l) + n.Long + ? ((a.uint64Data[l] = n.Long.fromValue(r.uint64Data[l])).unsigned = !0) + : typeof r.uint64Data[l] == 'string' + ? (a.uint64Data[l] = parseInt(r.uint64Data[l], 10)) + : typeof r.uint64Data[l] == 'number' + ? (a.uint64Data[l] = r.uint64Data[l]) + : typeof r.uint64Data[l] == 'object' && + (a.uint64Data[l] = new n.LongBits( + r.uint64Data[l].low >>> 0, + r.uint64Data[l].high >>> 0 + ).toNumber(!0)); + } + return a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if ( + ((a.arrays || a.defaults) && + ((l.dims = []), + (l.floatData = []), + (l.int32Data = []), + (l.stringData = []), + (l.int64Data = []), + (l.doubleData = []), + (l.uint64Data = []), + (l.externalData = [])), + a.defaults && + ((l.dataType = 0), + (l.segment = null), + (l.name = ''), + a.bytes === String + ? (l.rawData = '') + : ((l.rawData = []), a.bytes !== Array && (l.rawData = n.newBuffer(l.rawData))), + (l.docString = ''), + (l.dataLocation = a.enums === String ? 'DEFAULT' : 0)), + r.dims && r.dims.length) + ) { + l.dims = []; + for (var p = 0; p < r.dims.length; ++p) + typeof r.dims[p] == 'number' + ? (l.dims[p] = a.longs === String ? String(r.dims[p]) : r.dims[p]) + : (l.dims[p] = + a.longs === String + ? n.Long.prototype.toString.call(r.dims[p]) + : a.longs === Number + ? new n.LongBits(r.dims[p].low >>> 0, r.dims[p].high >>> 0).toNumber() + : r.dims[p]); + } + if ( + (r.dataType != null && r.hasOwnProperty('dataType') && (l.dataType = r.dataType), + r.segment != null && + r.hasOwnProperty('segment') && + (l.segment = s.onnx.TensorProto.Segment.toObject(r.segment, a)), + r.floatData && r.floatData.length) + ) { + l.floatData = []; + for (var p = 0; p < r.floatData.length; ++p) + l.floatData[p] = + a.json && !isFinite(r.floatData[p]) ? String(r.floatData[p]) : r.floatData[p]; + } + if (r.int32Data && r.int32Data.length) { + l.int32Data = []; + for (var p = 0; p < r.int32Data.length; ++p) l.int32Data[p] = r.int32Data[p]; + } + if (r.stringData && r.stringData.length) { + l.stringData = []; + for (var p = 0; p < r.stringData.length; ++p) + l.stringData[p] = + a.bytes === String + ? n.base64.encode(r.stringData[p], 0, r.stringData[p].length) + : a.bytes === Array + ? Array.prototype.slice.call(r.stringData[p]) + : r.stringData[p]; + } + if (r.int64Data && r.int64Data.length) { + l.int64Data = []; + for (var p = 0; p < r.int64Data.length; ++p) + typeof r.int64Data[p] == 'number' + ? (l.int64Data[p] = + a.longs === String ? String(r.int64Data[p]) : r.int64Data[p]) + : (l.int64Data[p] = + a.longs === String + ? n.Long.prototype.toString.call(r.int64Data[p]) + : a.longs === Number + ? new n.LongBits( + r.int64Data[p].low >>> 0, + r.int64Data[p].high >>> 0 + ).toNumber() + : r.int64Data[p]); + } + if ( + (r.name != null && r.hasOwnProperty('name') && (l.name = r.name), + r.rawData != null && + r.hasOwnProperty('rawData') && + (l.rawData = + a.bytes === String + ? n.base64.encode(r.rawData, 0, r.rawData.length) + : a.bytes === Array + ? Array.prototype.slice.call(r.rawData) + : r.rawData), + r.doubleData && r.doubleData.length) + ) { + l.doubleData = []; + for (var p = 0; p < r.doubleData.length; ++p) + l.doubleData[p] = + a.json && !isFinite(r.doubleData[p]) + ? String(r.doubleData[p]) + : r.doubleData[p]; + } + if (r.uint64Data && r.uint64Data.length) { + l.uint64Data = []; + for (var p = 0; p < r.uint64Data.length; ++p) + typeof r.uint64Data[p] == 'number' + ? (l.uint64Data[p] = + a.longs === String ? String(r.uint64Data[p]) : r.uint64Data[p]) + : (l.uint64Data[p] = + a.longs === String + ? n.Long.prototype.toString.call(r.uint64Data[p]) + : a.longs === Number + ? new n.LongBits( + r.uint64Data[p].low >>> 0, + r.uint64Data[p].high >>> 0 + ).toNumber(!0) + : r.uint64Data[p]); + } + if ( + (r.docString != null && r.hasOwnProperty('docString') && (l.docString = r.docString), + r.externalData && r.externalData.length) + ) { + l.externalData = []; + for (var p = 0; p < r.externalData.length; ++p) + l.externalData[p] = s.onnx.StringStringEntryProto.toObject(r.externalData[p], a); + } + return ( + r.dataLocation != null && + r.hasOwnProperty('dataLocation') && + (l.dataLocation = + a.enums === String + ? s.onnx.TensorProto.DataLocation[r.dataLocation] === void 0 + ? r.dataLocation + : s.onnx.TensorProto.DataLocation[r.dataLocation] + : r.dataLocation), + l + ); + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.TensorProto'; + }), + (f.DataType = (function () { + var r = {}, + a = Object.create(r); + return ( + (a[(r[0] = 'UNDEFINED')] = 0), + (a[(r[1] = 'FLOAT')] = 1), + (a[(r[2] = 'UINT8')] = 2), + (a[(r[3] = 'INT8')] = 3), + (a[(r[4] = 'UINT16')] = 4), + (a[(r[5] = 'INT16')] = 5), + (a[(r[6] = 'INT32')] = 6), + (a[(r[7] = 'INT64')] = 7), + (a[(r[8] = 'STRING')] = 8), + (a[(r[9] = 'BOOL')] = 9), + (a[(r[10] = 'FLOAT16')] = 10), + (a[(r[11] = 'DOUBLE')] = 11), + (a[(r[12] = 'UINT32')] = 12), + (a[(r[13] = 'UINT64')] = 13), + (a[(r[14] = 'COMPLEX64')] = 14), + (a[(r[15] = 'COMPLEX128')] = 15), + (a[(r[16] = 'BFLOAT16')] = 16), + (a[(r[17] = 'FLOAT8E4M3FN')] = 17), + (a[(r[18] = 'FLOAT8E4M3FNUZ')] = 18), + (a[(r[19] = 'FLOAT8E5M2')] = 19), + (a[(r[20] = 'FLOAT8E5M2FNUZ')] = 20), + a + ); + })()), + (f.Segment = (function () { + function r(a) { + if (a) + for (var l = Object.keys(a), p = 0; p < l.length; ++p) + a[l[p]] != null && (this[l[p]] = a[l[p]]); + } + return ( + (r.prototype.begin = n.Long ? n.Long.fromBits(0, 0, !1) : 0), + (r.prototype.end = n.Long ? n.Long.fromBits(0, 0, !1) : 0), + (r.create = function (a) { + return new r(a); + }), + (r.encode = function (a, l) { + return ( + l || (l = u.create()), + a.begin != null && + Object.hasOwnProperty.call(a, 'begin') && + l.uint32(8).int64(a.begin), + a.end != null && + Object.hasOwnProperty.call(a, 'end') && + l.uint32(16).int64(a.end), + l + ); + }), + (r.encodeDelimited = function (a, l) { + return this.encode(a, l).ldelim(); + }), + (r.decode = function (a, l) { + a instanceof i || (a = i.create(a)); + for ( + var p = l === void 0 ? a.len : a.pos + l, m = new s.onnx.TensorProto.Segment(); + a.pos < p; + + ) { + var y = a.uint32(); + switch (y >>> 3) { + case 1: { + m.begin = a.int64(); + break; + } + case 2: { + m.end = a.int64(); + break; + } + default: + a.skipType(y & 7); + break; + } + } + return m; + }), + (r.decodeDelimited = function (a) { + return a instanceof i || (a = new i(a)), this.decode(a, a.uint32()); + }), + (r.verify = function (a) { + return typeof a != 'object' || a === null + ? 'object expected' + : a.begin != null && + a.hasOwnProperty('begin') && + !n.isInteger(a.begin) && + !(a.begin && n.isInteger(a.begin.low) && n.isInteger(a.begin.high)) + ? 'begin: integer|Long expected' + : a.end != null && + a.hasOwnProperty('end') && + !n.isInteger(a.end) && + !(a.end && n.isInteger(a.end.low) && n.isInteger(a.end.high)) + ? 'end: integer|Long expected' + : null; + }), + (r.fromObject = function (a) { + if (a instanceof s.onnx.TensorProto.Segment) return a; + var l = new s.onnx.TensorProto.Segment(); + return ( + a.begin != null && + (n.Long + ? ((l.begin = n.Long.fromValue(a.begin)).unsigned = !1) + : typeof a.begin == 'string' + ? (l.begin = parseInt(a.begin, 10)) + : typeof a.begin == 'number' + ? (l.begin = a.begin) + : typeof a.begin == 'object' && + (l.begin = new n.LongBits( + a.begin.low >>> 0, + a.begin.high >>> 0 + ).toNumber())), + a.end != null && + (n.Long + ? ((l.end = n.Long.fromValue(a.end)).unsigned = !1) + : typeof a.end == 'string' + ? (l.end = parseInt(a.end, 10)) + : typeof a.end == 'number' + ? (l.end = a.end) + : typeof a.end == 'object' && + (l.end = new n.LongBits( + a.end.low >>> 0, + a.end.high >>> 0 + ).toNumber())), + l + ); + }), + (r.toObject = function (a, l) { + l || (l = {}); + var p = {}; + if (l.defaults) { + if (n.Long) { + var m = new n.Long(0, 0, !1); + p.begin = + l.longs === String + ? m.toString() + : l.longs === Number + ? m.toNumber() + : m; + } else p.begin = l.longs === String ? '0' : 0; + if (n.Long) { + var m = new n.Long(0, 0, !1); + p.end = + l.longs === String + ? m.toString() + : l.longs === Number + ? m.toNumber() + : m; + } else p.end = l.longs === String ? '0' : 0; + } + return ( + a.begin != null && + a.hasOwnProperty('begin') && + (typeof a.begin == 'number' + ? (p.begin = l.longs === String ? String(a.begin) : a.begin) + : (p.begin = + l.longs === String + ? n.Long.prototype.toString.call(a.begin) + : l.longs === Number + ? new n.LongBits( + a.begin.low >>> 0, + a.begin.high >>> 0 + ).toNumber() + : a.begin)), + a.end != null && + a.hasOwnProperty('end') && + (typeof a.end == 'number' + ? (p.end = l.longs === String ? String(a.end) : a.end) + : (p.end = + l.longs === String + ? n.Long.prototype.toString.call(a.end) + : l.longs === Number + ? new n.LongBits(a.end.low >>> 0, a.end.high >>> 0).toNumber() + : a.end)), + p + ); + }), + (r.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (r.getTypeUrl = function (a) { + return a === void 0 && (a = 'type.googleapis.com'), a + '/onnx.TensorProto.Segment'; + }), + r + ); + })()), + (f.DataLocation = (function () { + var r = {}, + a = Object.create(r); + return (a[(r[0] = 'DEFAULT')] = 0), (a[(r[1] = 'EXTERNAL')] = 1), a; + })()), + f + ); + })()), + (d.SparseTensorProto = (function () { + function f(r) { + if (((this.dims = []), r)) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.values = null), + (f.prototype.indices = null), + (f.prototype.dims = n.emptyArray), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + if ( + (a || (a = u.create()), + r.values != null && + Object.hasOwnProperty.call(r, 'values') && + s.onnx.TensorProto.encode(r.values, a.uint32(10).fork()).ldelim(), + r.indices != null && + Object.hasOwnProperty.call(r, 'indices') && + s.onnx.TensorProto.encode(r.indices, a.uint32(18).fork()).ldelim(), + r.dims != null && r.dims.length) + ) { + a.uint32(26).fork(); + for (var l = 0; l < r.dims.length; ++l) a.int64(r.dims[l]); + a.ldelim(); + } + return a; + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for ( + var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.SparseTensorProto(); + r.pos < l; + + ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + p.values = s.onnx.TensorProto.decode(r, r.uint32()); + break; + } + case 2: { + p.indices = s.onnx.TensorProto.decode(r, r.uint32()); + break; + } + case 3: { + if (((p.dims && p.dims.length) || (p.dims = []), (m & 7) === 2)) + for (var y = r.uint32() + r.pos; r.pos < y; ) p.dims.push(r.int64()); + else p.dims.push(r.int64()); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if (r.values != null && r.hasOwnProperty('values')) { + var a = s.onnx.TensorProto.verify(r.values); + if (a) return 'values.' + a; + } + if (r.indices != null && r.hasOwnProperty('indices')) { + var a = s.onnx.TensorProto.verify(r.indices); + if (a) return 'indices.' + a; + } + if (r.dims != null && r.hasOwnProperty('dims')) { + if (!Array.isArray(r.dims)) return 'dims: array expected'; + for (var l = 0; l < r.dims.length; ++l) + if ( + !n.isInteger(r.dims[l]) && + !(r.dims[l] && n.isInteger(r.dims[l].low) && n.isInteger(r.dims[l].high)) + ) + return 'dims: integer|Long[] expected'; + } + return null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.SparseTensorProto) return r; + var a = new s.onnx.SparseTensorProto(); + if (r.values != null) { + if (typeof r.values != 'object') + throw TypeError('.onnx.SparseTensorProto.values: object expected'); + a.values = s.onnx.TensorProto.fromObject(r.values); + } + if (r.indices != null) { + if (typeof r.indices != 'object') + throw TypeError('.onnx.SparseTensorProto.indices: object expected'); + a.indices = s.onnx.TensorProto.fromObject(r.indices); + } + if (r.dims) { + if (!Array.isArray(r.dims)) + throw TypeError('.onnx.SparseTensorProto.dims: array expected'); + a.dims = []; + for (var l = 0; l < r.dims.length; ++l) + n.Long + ? ((a.dims[l] = n.Long.fromValue(r.dims[l])).unsigned = !1) + : typeof r.dims[l] == 'string' + ? (a.dims[l] = parseInt(r.dims[l], 10)) + : typeof r.dims[l] == 'number' + ? (a.dims[l] = r.dims[l]) + : typeof r.dims[l] == 'object' && + (a.dims[l] = new n.LongBits( + r.dims[l].low >>> 0, + r.dims[l].high >>> 0 + ).toNumber()); + } + return a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if ( + ((a.arrays || a.defaults) && (l.dims = []), + a.defaults && ((l.values = null), (l.indices = null)), + r.values != null && + r.hasOwnProperty('values') && + (l.values = s.onnx.TensorProto.toObject(r.values, a)), + r.indices != null && + r.hasOwnProperty('indices') && + (l.indices = s.onnx.TensorProto.toObject(r.indices, a)), + r.dims && r.dims.length) + ) { + l.dims = []; + for (var p = 0; p < r.dims.length; ++p) + typeof r.dims[p] == 'number' + ? (l.dims[p] = a.longs === String ? String(r.dims[p]) : r.dims[p]) + : (l.dims[p] = + a.longs === String + ? n.Long.prototype.toString.call(r.dims[p]) + : a.longs === Number + ? new n.LongBits(r.dims[p].low >>> 0, r.dims[p].high >>> 0).toNumber() + : r.dims[p]); + } + return l; + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.SparseTensorProto'; + }), + f + ); + })()), + (d.TensorShapeProto = (function () { + function f(r) { + if (((this.dim = []), r)) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.dim = n.emptyArray), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + if ((a || (a = u.create()), r.dim != null && r.dim.length)) + for (var l = 0; l < r.dim.length; ++l) + s.onnx.TensorShapeProto.Dimension.encode(r.dim[l], a.uint32(10).fork()).ldelim(); + return a; + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for ( + var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.TensorShapeProto(); + r.pos < l; + + ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + (p.dim && p.dim.length) || (p.dim = []), + p.dim.push(s.onnx.TensorShapeProto.Dimension.decode(r, r.uint32())); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if (r.dim != null && r.hasOwnProperty('dim')) { + if (!Array.isArray(r.dim)) return 'dim: array expected'; + for (var a = 0; a < r.dim.length; ++a) { + var l = s.onnx.TensorShapeProto.Dimension.verify(r.dim[a]); + if (l) return 'dim.' + l; + } + } + return null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.TensorShapeProto) return r; + var a = new s.onnx.TensorShapeProto(); + if (r.dim) { + if (!Array.isArray(r.dim)) + throw TypeError('.onnx.TensorShapeProto.dim: array expected'); + a.dim = []; + for (var l = 0; l < r.dim.length; ++l) { + if (typeof r.dim[l] != 'object') + throw TypeError('.onnx.TensorShapeProto.dim: object expected'); + a.dim[l] = s.onnx.TensorShapeProto.Dimension.fromObject(r.dim[l]); + } + } + return a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if (((a.arrays || a.defaults) && (l.dim = []), r.dim && r.dim.length)) { + l.dim = []; + for (var p = 0; p < r.dim.length; ++p) + l.dim[p] = s.onnx.TensorShapeProto.Dimension.toObject(r.dim[p], a); + } + return l; + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.TensorShapeProto'; + }), + (f.Dimension = (function () { + function r(l) { + if (l) + for (var p = Object.keys(l), m = 0; m < p.length; ++m) + l[p[m]] != null && (this[p[m]] = l[p[m]]); + } + (r.prototype.dimValue = null), (r.prototype.dimParam = null), (r.prototype.denotation = ''); + var a; + return ( + Object.defineProperty(r.prototype, 'value', { + get: n.oneOfGetter((a = ['dimValue', 'dimParam'])), + set: n.oneOfSetter(a), + }), + (r.create = function (l) { + return new r(l); + }), + (r.encode = function (l, p) { + return ( + p || (p = u.create()), + l.dimValue != null && + Object.hasOwnProperty.call(l, 'dimValue') && + p.uint32(8).int64(l.dimValue), + l.dimParam != null && + Object.hasOwnProperty.call(l, 'dimParam') && + p.uint32(18).string(l.dimParam), + l.denotation != null && + Object.hasOwnProperty.call(l, 'denotation') && + p.uint32(26).string(l.denotation), + p + ); + }), + (r.encodeDelimited = function (l, p) { + return this.encode(l, p).ldelim(); + }), + (r.decode = function (l, p) { + l instanceof i || (l = i.create(l)); + for ( + var m = p === void 0 ? l.len : l.pos + p, + y = new s.onnx.TensorShapeProto.Dimension(); + l.pos < m; + + ) { + var T = l.uint32(); + switch (T >>> 3) { + case 1: { + y.dimValue = l.int64(); + break; + } + case 2: { + y.dimParam = l.string(); + break; + } + case 3: { + y.denotation = l.string(); + break; + } + default: + l.skipType(T & 7); + break; + } + } + return y; + }), + (r.decodeDelimited = function (l) { + return l instanceof i || (l = new i(l)), this.decode(l, l.uint32()); + }), + (r.verify = function (l) { + if (typeof l != 'object' || l === null) return 'object expected'; + var p = {}; + if ( + l.dimValue != null && + l.hasOwnProperty('dimValue') && + ((p.value = 1), + !n.isInteger(l.dimValue) && + !( + l.dimValue && + n.isInteger(l.dimValue.low) && + n.isInteger(l.dimValue.high) + )) + ) + return 'dimValue: integer|Long expected'; + if (l.dimParam != null && l.hasOwnProperty('dimParam')) { + if (p.value === 1) return 'value: multiple values'; + if (((p.value = 1), !n.isString(l.dimParam))) + return 'dimParam: string expected'; + } + return l.denotation != null && + l.hasOwnProperty('denotation') && + !n.isString(l.denotation) + ? 'denotation: string expected' + : null; + }), + (r.fromObject = function (l) { + if (l instanceof s.onnx.TensorShapeProto.Dimension) return l; + var p = new s.onnx.TensorShapeProto.Dimension(); + return ( + l.dimValue != null && + (n.Long + ? ((p.dimValue = n.Long.fromValue(l.dimValue)).unsigned = !1) + : typeof l.dimValue == 'string' + ? (p.dimValue = parseInt(l.dimValue, 10)) + : typeof l.dimValue == 'number' + ? (p.dimValue = l.dimValue) + : typeof l.dimValue == 'object' && + (p.dimValue = new n.LongBits( + l.dimValue.low >>> 0, + l.dimValue.high >>> 0 + ).toNumber())), + l.dimParam != null && (p.dimParam = String(l.dimParam)), + l.denotation != null && (p.denotation = String(l.denotation)), + p + ); + }), + (r.toObject = function (l, p) { + p || (p = {}); + var m = {}; + return ( + p.defaults && (m.denotation = ''), + l.dimValue != null && + l.hasOwnProperty('dimValue') && + (typeof l.dimValue == 'number' + ? (m.dimValue = p.longs === String ? String(l.dimValue) : l.dimValue) + : (m.dimValue = + p.longs === String + ? n.Long.prototype.toString.call(l.dimValue) + : p.longs === Number + ? new n.LongBits( + l.dimValue.low >>> 0, + l.dimValue.high >>> 0 + ).toNumber() + : l.dimValue), + p.oneofs && (m.value = 'dimValue')), + l.dimParam != null && + l.hasOwnProperty('dimParam') && + ((m.dimParam = l.dimParam), p.oneofs && (m.value = 'dimParam')), + l.denotation != null && + l.hasOwnProperty('denotation') && + (m.denotation = l.denotation), + m + ); + }), + (r.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (r.getTypeUrl = function (l) { + return ( + l === void 0 && (l = 'type.googleapis.com'), + l + '/onnx.TensorShapeProto.Dimension' + ); + }), + r + ); + })()), + f + ); + })()), + (d.TypeProto = (function () { + function f(a) { + if (a) + for (var l = Object.keys(a), p = 0; p < l.length; ++p) + a[l[p]] != null && (this[l[p]] = a[l[p]]); + } + (f.prototype.tensorType = null), + (f.prototype.sequenceType = null), + (f.prototype.mapType = null), + (f.prototype.optionalType = null), + (f.prototype.sparseTensorType = null), + (f.prototype.denotation = ''); + var r; + return ( + Object.defineProperty(f.prototype, 'value', { + get: n.oneOfGetter( + (r = ['tensorType', 'sequenceType', 'mapType', 'optionalType', 'sparseTensorType']) + ), + set: n.oneOfSetter(r), + }), + (f.create = function (a) { + return new f(a); + }), + (f.encode = function (a, l) { + return ( + l || (l = u.create()), + a.tensorType != null && + Object.hasOwnProperty.call(a, 'tensorType') && + s.onnx.TypeProto.Tensor.encode(a.tensorType, l.uint32(10).fork()).ldelim(), + a.sequenceType != null && + Object.hasOwnProperty.call(a, 'sequenceType') && + s.onnx.TypeProto.Sequence.encode(a.sequenceType, l.uint32(34).fork()).ldelim(), + a.mapType != null && + Object.hasOwnProperty.call(a, 'mapType') && + s.onnx.TypeProto.Map.encode(a.mapType, l.uint32(42).fork()).ldelim(), + a.denotation != null && + Object.hasOwnProperty.call(a, 'denotation') && + l.uint32(50).string(a.denotation), + a.sparseTensorType != null && + Object.hasOwnProperty.call(a, 'sparseTensorType') && + s.onnx.TypeProto.SparseTensor.encode( + a.sparseTensorType, + l.uint32(66).fork() + ).ldelim(), + a.optionalType != null && + Object.hasOwnProperty.call(a, 'optionalType') && + s.onnx.TypeProto.Optional.encode(a.optionalType, l.uint32(74).fork()).ldelim(), + l + ); + }), + (f.encodeDelimited = function (a, l) { + return this.encode(a, l).ldelim(); + }), + (f.decode = function (a, l) { + a instanceof i || (a = i.create(a)); + for (var p = l === void 0 ? a.len : a.pos + l, m = new s.onnx.TypeProto(); a.pos < p; ) { + var y = a.uint32(); + switch (y >>> 3) { + case 1: { + m.tensorType = s.onnx.TypeProto.Tensor.decode(a, a.uint32()); + break; + } + case 4: { + m.sequenceType = s.onnx.TypeProto.Sequence.decode(a, a.uint32()); + break; + } + case 5: { + m.mapType = s.onnx.TypeProto.Map.decode(a, a.uint32()); + break; + } + case 9: { + m.optionalType = s.onnx.TypeProto.Optional.decode(a, a.uint32()); + break; + } + case 8: { + m.sparseTensorType = s.onnx.TypeProto.SparseTensor.decode(a, a.uint32()); + break; + } + case 6: { + m.denotation = a.string(); + break; + } + default: + a.skipType(y & 7); + break; + } + } + return m; + }), + (f.decodeDelimited = function (a) { + return a instanceof i || (a = new i(a)), this.decode(a, a.uint32()); + }), + (f.verify = function (a) { + if (typeof a != 'object' || a === null) return 'object expected'; + var l = {}; + if (a.tensorType != null && a.hasOwnProperty('tensorType')) { + l.value = 1; + { + var p = s.onnx.TypeProto.Tensor.verify(a.tensorType); + if (p) return 'tensorType.' + p; + } + } + if (a.sequenceType != null && a.hasOwnProperty('sequenceType')) { + if (l.value === 1) return 'value: multiple values'; + l.value = 1; + { + var p = s.onnx.TypeProto.Sequence.verify(a.sequenceType); + if (p) return 'sequenceType.' + p; + } + } + if (a.mapType != null && a.hasOwnProperty('mapType')) { + if (l.value === 1) return 'value: multiple values'; + l.value = 1; + { + var p = s.onnx.TypeProto.Map.verify(a.mapType); + if (p) return 'mapType.' + p; + } + } + if (a.optionalType != null && a.hasOwnProperty('optionalType')) { + if (l.value === 1) return 'value: multiple values'; + l.value = 1; + { + var p = s.onnx.TypeProto.Optional.verify(a.optionalType); + if (p) return 'optionalType.' + p; + } + } + if (a.sparseTensorType != null && a.hasOwnProperty('sparseTensorType')) { + if (l.value === 1) return 'value: multiple values'; + l.value = 1; + { + var p = s.onnx.TypeProto.SparseTensor.verify(a.sparseTensorType); + if (p) return 'sparseTensorType.' + p; + } + } + return a.denotation != null && a.hasOwnProperty('denotation') && !n.isString(a.denotation) + ? 'denotation: string expected' + : null; + }), + (f.fromObject = function (a) { + if (a instanceof s.onnx.TypeProto) return a; + var l = new s.onnx.TypeProto(); + if (a.tensorType != null) { + if (typeof a.tensorType != 'object') + throw TypeError('.onnx.TypeProto.tensorType: object expected'); + l.tensorType = s.onnx.TypeProto.Tensor.fromObject(a.tensorType); + } + if (a.sequenceType != null) { + if (typeof a.sequenceType != 'object') + throw TypeError('.onnx.TypeProto.sequenceType: object expected'); + l.sequenceType = s.onnx.TypeProto.Sequence.fromObject(a.sequenceType); + } + if (a.mapType != null) { + if (typeof a.mapType != 'object') + throw TypeError('.onnx.TypeProto.mapType: object expected'); + l.mapType = s.onnx.TypeProto.Map.fromObject(a.mapType); + } + if (a.optionalType != null) { + if (typeof a.optionalType != 'object') + throw TypeError('.onnx.TypeProto.optionalType: object expected'); + l.optionalType = s.onnx.TypeProto.Optional.fromObject(a.optionalType); + } + if (a.sparseTensorType != null) { + if (typeof a.sparseTensorType != 'object') + throw TypeError('.onnx.TypeProto.sparseTensorType: object expected'); + l.sparseTensorType = s.onnx.TypeProto.SparseTensor.fromObject(a.sparseTensorType); + } + return a.denotation != null && (l.denotation = String(a.denotation)), l; + }), + (f.toObject = function (a, l) { + l || (l = {}); + var p = {}; + return ( + l.defaults && (p.denotation = ''), + a.tensorType != null && + a.hasOwnProperty('tensorType') && + ((p.tensorType = s.onnx.TypeProto.Tensor.toObject(a.tensorType, l)), + l.oneofs && (p.value = 'tensorType')), + a.sequenceType != null && + a.hasOwnProperty('sequenceType') && + ((p.sequenceType = s.onnx.TypeProto.Sequence.toObject(a.sequenceType, l)), + l.oneofs && (p.value = 'sequenceType')), + a.mapType != null && + a.hasOwnProperty('mapType') && + ((p.mapType = s.onnx.TypeProto.Map.toObject(a.mapType, l)), + l.oneofs && (p.value = 'mapType')), + a.denotation != null && a.hasOwnProperty('denotation') && (p.denotation = a.denotation), + a.sparseTensorType != null && + a.hasOwnProperty('sparseTensorType') && + ((p.sparseTensorType = s.onnx.TypeProto.SparseTensor.toObject( + a.sparseTensorType, + l + )), + l.oneofs && (p.value = 'sparseTensorType')), + a.optionalType != null && + a.hasOwnProperty('optionalType') && + ((p.optionalType = s.onnx.TypeProto.Optional.toObject(a.optionalType, l)), + l.oneofs && (p.value = 'optionalType')), + p + ); + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (a) { + return a === void 0 && (a = 'type.googleapis.com'), a + '/onnx.TypeProto'; + }), + (f.Tensor = (function () { + function a(l) { + if (l) + for (var p = Object.keys(l), m = 0; m < p.length; ++m) + l[p[m]] != null && (this[p[m]] = l[p[m]]); + } + return ( + (a.prototype.elemType = 0), + (a.prototype.shape = null), + (a.create = function (l) { + return new a(l); + }), + (a.encode = function (l, p) { + return ( + p || (p = u.create()), + l.elemType != null && + Object.hasOwnProperty.call(l, 'elemType') && + p.uint32(8).int32(l.elemType), + l.shape != null && + Object.hasOwnProperty.call(l, 'shape') && + s.onnx.TensorShapeProto.encode(l.shape, p.uint32(18).fork()).ldelim(), + p + ); + }), + (a.encodeDelimited = function (l, p) { + return this.encode(l, p).ldelim(); + }), + (a.decode = function (l, p) { + l instanceof i || (l = i.create(l)); + for ( + var m = p === void 0 ? l.len : l.pos + p, y = new s.onnx.TypeProto.Tensor(); + l.pos < m; + + ) { + var T = l.uint32(); + switch (T >>> 3) { + case 1: { + y.elemType = l.int32(); + break; + } + case 2: { + y.shape = s.onnx.TensorShapeProto.decode(l, l.uint32()); + break; + } + default: + l.skipType(T & 7); + break; + } + } + return y; + }), + (a.decodeDelimited = function (l) { + return l instanceof i || (l = new i(l)), this.decode(l, l.uint32()); + }), + (a.verify = function (l) { + if (typeof l != 'object' || l === null) return 'object expected'; + if (l.elemType != null && l.hasOwnProperty('elemType') && !n.isInteger(l.elemType)) + return 'elemType: integer expected'; + if (l.shape != null && l.hasOwnProperty('shape')) { + var p = s.onnx.TensorShapeProto.verify(l.shape); + if (p) return 'shape.' + p; + } + return null; + }), + (a.fromObject = function (l) { + if (l instanceof s.onnx.TypeProto.Tensor) return l; + var p = new s.onnx.TypeProto.Tensor(); + if ((l.elemType != null && (p.elemType = l.elemType | 0), l.shape != null)) { + if (typeof l.shape != 'object') + throw TypeError('.onnx.TypeProto.Tensor.shape: object expected'); + p.shape = s.onnx.TensorShapeProto.fromObject(l.shape); + } + return p; + }), + (a.toObject = function (l, p) { + p || (p = {}); + var m = {}; + return ( + p.defaults && ((m.elemType = 0), (m.shape = null)), + l.elemType != null && l.hasOwnProperty('elemType') && (m.elemType = l.elemType), + l.shape != null && + l.hasOwnProperty('shape') && + (m.shape = s.onnx.TensorShapeProto.toObject(l.shape, p)), + m + ); + }), + (a.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (a.getTypeUrl = function (l) { + return l === void 0 && (l = 'type.googleapis.com'), l + '/onnx.TypeProto.Tensor'; + }), + a + ); + })()), + (f.Sequence = (function () { + function a(l) { + if (l) + for (var p = Object.keys(l), m = 0; m < p.length; ++m) + l[p[m]] != null && (this[p[m]] = l[p[m]]); + } + return ( + (a.prototype.elemType = null), + (a.create = function (l) { + return new a(l); + }), + (a.encode = function (l, p) { + return ( + p || (p = u.create()), + l.elemType != null && + Object.hasOwnProperty.call(l, 'elemType') && + s.onnx.TypeProto.encode(l.elemType, p.uint32(10).fork()).ldelim(), + p + ); + }), + (a.encodeDelimited = function (l, p) { + return this.encode(l, p).ldelim(); + }), + (a.decode = function (l, p) { + l instanceof i || (l = i.create(l)); + for ( + var m = p === void 0 ? l.len : l.pos + p, y = new s.onnx.TypeProto.Sequence(); + l.pos < m; + + ) { + var T = l.uint32(); + switch (T >>> 3) { + case 1: { + y.elemType = s.onnx.TypeProto.decode(l, l.uint32()); + break; + } + default: + l.skipType(T & 7); + break; + } + } + return y; + }), + (a.decodeDelimited = function (l) { + return l instanceof i || (l = new i(l)), this.decode(l, l.uint32()); + }), + (a.verify = function (l) { + if (typeof l != 'object' || l === null) return 'object expected'; + if (l.elemType != null && l.hasOwnProperty('elemType')) { + var p = s.onnx.TypeProto.verify(l.elemType); + if (p) return 'elemType.' + p; + } + return null; + }), + (a.fromObject = function (l) { + if (l instanceof s.onnx.TypeProto.Sequence) return l; + var p = new s.onnx.TypeProto.Sequence(); + if (l.elemType != null) { + if (typeof l.elemType != 'object') + throw TypeError('.onnx.TypeProto.Sequence.elemType: object expected'); + p.elemType = s.onnx.TypeProto.fromObject(l.elemType); + } + return p; + }), + (a.toObject = function (l, p) { + p || (p = {}); + var m = {}; + return ( + p.defaults && (m.elemType = null), + l.elemType != null && + l.hasOwnProperty('elemType') && + (m.elemType = s.onnx.TypeProto.toObject(l.elemType, p)), + m + ); + }), + (a.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (a.getTypeUrl = function (l) { + return l === void 0 && (l = 'type.googleapis.com'), l + '/onnx.TypeProto.Sequence'; + }), + a + ); + })()), + (f.Map = (function () { + function a(l) { + if (l) + for (var p = Object.keys(l), m = 0; m < p.length; ++m) + l[p[m]] != null && (this[p[m]] = l[p[m]]); + } + return ( + (a.prototype.keyType = 0), + (a.prototype.valueType = null), + (a.create = function (l) { + return new a(l); + }), + (a.encode = function (l, p) { + return ( + p || (p = u.create()), + l.keyType != null && + Object.hasOwnProperty.call(l, 'keyType') && + p.uint32(8).int32(l.keyType), + l.valueType != null && + Object.hasOwnProperty.call(l, 'valueType') && + s.onnx.TypeProto.encode(l.valueType, p.uint32(18).fork()).ldelim(), + p + ); + }), + (a.encodeDelimited = function (l, p) { + return this.encode(l, p).ldelim(); + }), + (a.decode = function (l, p) { + l instanceof i || (l = i.create(l)); + for ( + var m = p === void 0 ? l.len : l.pos + p, y = new s.onnx.TypeProto.Map(); + l.pos < m; + + ) { + var T = l.uint32(); + switch (T >>> 3) { + case 1: { + y.keyType = l.int32(); + break; + } + case 2: { + y.valueType = s.onnx.TypeProto.decode(l, l.uint32()); + break; + } + default: + l.skipType(T & 7); + break; + } + } + return y; + }), + (a.decodeDelimited = function (l) { + return l instanceof i || (l = new i(l)), this.decode(l, l.uint32()); + }), + (a.verify = function (l) { + if (typeof l != 'object' || l === null) return 'object expected'; + if (l.keyType != null && l.hasOwnProperty('keyType') && !n.isInteger(l.keyType)) + return 'keyType: integer expected'; + if (l.valueType != null && l.hasOwnProperty('valueType')) { + var p = s.onnx.TypeProto.verify(l.valueType); + if (p) return 'valueType.' + p; + } + return null; + }), + (a.fromObject = function (l) { + if (l instanceof s.onnx.TypeProto.Map) return l; + var p = new s.onnx.TypeProto.Map(); + if ((l.keyType != null && (p.keyType = l.keyType | 0), l.valueType != null)) { + if (typeof l.valueType != 'object') + throw TypeError('.onnx.TypeProto.Map.valueType: object expected'); + p.valueType = s.onnx.TypeProto.fromObject(l.valueType); + } + return p; + }), + (a.toObject = function (l, p) { + p || (p = {}); + var m = {}; + return ( + p.defaults && ((m.keyType = 0), (m.valueType = null)), + l.keyType != null && l.hasOwnProperty('keyType') && (m.keyType = l.keyType), + l.valueType != null && + l.hasOwnProperty('valueType') && + (m.valueType = s.onnx.TypeProto.toObject(l.valueType, p)), + m + ); + }), + (a.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (a.getTypeUrl = function (l) { + return l === void 0 && (l = 'type.googleapis.com'), l + '/onnx.TypeProto.Map'; + }), + a + ); + })()), + (f.Optional = (function () { + function a(l) { + if (l) + for (var p = Object.keys(l), m = 0; m < p.length; ++m) + l[p[m]] != null && (this[p[m]] = l[p[m]]); + } + return ( + (a.prototype.elemType = null), + (a.create = function (l) { + return new a(l); + }), + (a.encode = function (l, p) { + return ( + p || (p = u.create()), + l.elemType != null && + Object.hasOwnProperty.call(l, 'elemType') && + s.onnx.TypeProto.encode(l.elemType, p.uint32(10).fork()).ldelim(), + p + ); + }), + (a.encodeDelimited = function (l, p) { + return this.encode(l, p).ldelim(); + }), + (a.decode = function (l, p) { + l instanceof i || (l = i.create(l)); + for ( + var m = p === void 0 ? l.len : l.pos + p, y = new s.onnx.TypeProto.Optional(); + l.pos < m; + + ) { + var T = l.uint32(); + switch (T >>> 3) { + case 1: { + y.elemType = s.onnx.TypeProto.decode(l, l.uint32()); + break; + } + default: + l.skipType(T & 7); + break; + } + } + return y; + }), + (a.decodeDelimited = function (l) { + return l instanceof i || (l = new i(l)), this.decode(l, l.uint32()); + }), + (a.verify = function (l) { + if (typeof l != 'object' || l === null) return 'object expected'; + if (l.elemType != null && l.hasOwnProperty('elemType')) { + var p = s.onnx.TypeProto.verify(l.elemType); + if (p) return 'elemType.' + p; + } + return null; + }), + (a.fromObject = function (l) { + if (l instanceof s.onnx.TypeProto.Optional) return l; + var p = new s.onnx.TypeProto.Optional(); + if (l.elemType != null) { + if (typeof l.elemType != 'object') + throw TypeError('.onnx.TypeProto.Optional.elemType: object expected'); + p.elemType = s.onnx.TypeProto.fromObject(l.elemType); + } + return p; + }), + (a.toObject = function (l, p) { + p || (p = {}); + var m = {}; + return ( + p.defaults && (m.elemType = null), + l.elemType != null && + l.hasOwnProperty('elemType') && + (m.elemType = s.onnx.TypeProto.toObject(l.elemType, p)), + m + ); + }), + (a.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (a.getTypeUrl = function (l) { + return l === void 0 && (l = 'type.googleapis.com'), l + '/onnx.TypeProto.Optional'; + }), + a + ); + })()), + (f.SparseTensor = (function () { + function a(l) { + if (l) + for (var p = Object.keys(l), m = 0; m < p.length; ++m) + l[p[m]] != null && (this[p[m]] = l[p[m]]); + } + return ( + (a.prototype.elemType = 0), + (a.prototype.shape = null), + (a.create = function (l) { + return new a(l); + }), + (a.encode = function (l, p) { + return ( + p || (p = u.create()), + l.elemType != null && + Object.hasOwnProperty.call(l, 'elemType') && + p.uint32(8).int32(l.elemType), + l.shape != null && + Object.hasOwnProperty.call(l, 'shape') && + s.onnx.TensorShapeProto.encode(l.shape, p.uint32(18).fork()).ldelim(), + p + ); + }), + (a.encodeDelimited = function (l, p) { + return this.encode(l, p).ldelim(); + }), + (a.decode = function (l, p) { + l instanceof i || (l = i.create(l)); + for ( + var m = p === void 0 ? l.len : l.pos + p, + y = new s.onnx.TypeProto.SparseTensor(); + l.pos < m; + + ) { + var T = l.uint32(); + switch (T >>> 3) { + case 1: { + y.elemType = l.int32(); + break; + } + case 2: { + y.shape = s.onnx.TensorShapeProto.decode(l, l.uint32()); + break; + } + default: + l.skipType(T & 7); + break; + } + } + return y; + }), + (a.decodeDelimited = function (l) { + return l instanceof i || (l = new i(l)), this.decode(l, l.uint32()); + }), + (a.verify = function (l) { + if (typeof l != 'object' || l === null) return 'object expected'; + if (l.elemType != null && l.hasOwnProperty('elemType') && !n.isInteger(l.elemType)) + return 'elemType: integer expected'; + if (l.shape != null && l.hasOwnProperty('shape')) { + var p = s.onnx.TensorShapeProto.verify(l.shape); + if (p) return 'shape.' + p; + } + return null; + }), + (a.fromObject = function (l) { + if (l instanceof s.onnx.TypeProto.SparseTensor) return l; + var p = new s.onnx.TypeProto.SparseTensor(); + if ((l.elemType != null && (p.elemType = l.elemType | 0), l.shape != null)) { + if (typeof l.shape != 'object') + throw TypeError('.onnx.TypeProto.SparseTensor.shape: object expected'); + p.shape = s.onnx.TensorShapeProto.fromObject(l.shape); + } + return p; + }), + (a.toObject = function (l, p) { + p || (p = {}); + var m = {}; + return ( + p.defaults && ((m.elemType = 0), (m.shape = null)), + l.elemType != null && l.hasOwnProperty('elemType') && (m.elemType = l.elemType), + l.shape != null && + l.hasOwnProperty('shape') && + (m.shape = s.onnx.TensorShapeProto.toObject(l.shape, p)), + m + ); + }), + (a.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (a.getTypeUrl = function (l) { + return ( + l === void 0 && (l = 'type.googleapis.com'), l + '/onnx.TypeProto.SparseTensor' + ); + }), + a + ); + })()), + f + ); + })()), + (d.OperatorSetIdProto = (function () { + function f(r) { + if (r) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.domain = ''), + (f.prototype.version = n.Long ? n.Long.fromBits(0, 0, !1) : 0), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + return ( + a || (a = u.create()), + r.domain != null && + Object.hasOwnProperty.call(r, 'domain') && + a.uint32(10).string(r.domain), + r.version != null && + Object.hasOwnProperty.call(r, 'version') && + a.uint32(16).int64(r.version), + a + ); + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for ( + var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.OperatorSetIdProto(); + r.pos < l; + + ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + p.domain = r.string(); + break; + } + case 2: { + p.version = r.int64(); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + return typeof r != 'object' || r === null + ? 'object expected' + : r.domain != null && r.hasOwnProperty('domain') && !n.isString(r.domain) + ? 'domain: string expected' + : r.version != null && + r.hasOwnProperty('version') && + !n.isInteger(r.version) && + !(r.version && n.isInteger(r.version.low) && n.isInteger(r.version.high)) + ? 'version: integer|Long expected' + : null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.OperatorSetIdProto) return r; + var a = new s.onnx.OperatorSetIdProto(); + return ( + r.domain != null && (a.domain = String(r.domain)), + r.version != null && + (n.Long + ? ((a.version = n.Long.fromValue(r.version)).unsigned = !1) + : typeof r.version == 'string' + ? (a.version = parseInt(r.version, 10)) + : typeof r.version == 'number' + ? (a.version = r.version) + : typeof r.version == 'object' && + (a.version = new n.LongBits( + r.version.low >>> 0, + r.version.high >>> 0 + ).toNumber())), + a + ); + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if (a.defaults) + if (((l.domain = ''), n.Long)) { + var p = new n.Long(0, 0, !1); + l.version = + a.longs === String ? p.toString() : a.longs === Number ? p.toNumber() : p; + } else l.version = a.longs === String ? '0' : 0; + return ( + r.domain != null && r.hasOwnProperty('domain') && (l.domain = r.domain), + r.version != null && + r.hasOwnProperty('version') && + (typeof r.version == 'number' + ? (l.version = a.longs === String ? String(r.version) : r.version) + : (l.version = + a.longs === String + ? n.Long.prototype.toString.call(r.version) + : a.longs === Number + ? new n.LongBits(r.version.low >>> 0, r.version.high >>> 0).toNumber() + : r.version)), + l + ); + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.OperatorSetIdProto'; + }), + f + ); + })()), + (d.OperatorStatus = (function () { + var f = {}, + r = Object.create(f); + return (r[(f[0] = 'EXPERIMENTAL')] = 0), (r[(f[1] = 'STABLE')] = 1), r; + })()), + (d.FunctionProto = (function () { + function f(r) { + if ( + ((this.input = []), + (this.output = []), + (this.attribute = []), + (this.attributeProto = []), + (this.node = []), + (this.opsetImport = []), + r) + ) + for (var a = Object.keys(r), l = 0; l < a.length; ++l) + r[a[l]] != null && (this[a[l]] = r[a[l]]); + } + return ( + (f.prototype.name = ''), + (f.prototype.input = n.emptyArray), + (f.prototype.output = n.emptyArray), + (f.prototype.attribute = n.emptyArray), + (f.prototype.attributeProto = n.emptyArray), + (f.prototype.node = n.emptyArray), + (f.prototype.docString = ''), + (f.prototype.opsetImport = n.emptyArray), + (f.prototype.domain = ''), + (f.create = function (r) { + return new f(r); + }), + (f.encode = function (r, a) { + if ( + (a || (a = u.create()), + r.name != null && Object.hasOwnProperty.call(r, 'name') && a.uint32(10).string(r.name), + r.input != null && r.input.length) + ) + for (var l = 0; l < r.input.length; ++l) a.uint32(34).string(r.input[l]); + if (r.output != null && r.output.length) + for (var l = 0; l < r.output.length; ++l) a.uint32(42).string(r.output[l]); + if (r.attribute != null && r.attribute.length) + for (var l = 0; l < r.attribute.length; ++l) a.uint32(50).string(r.attribute[l]); + if (r.node != null && r.node.length) + for (var l = 0; l < r.node.length; ++l) + s.onnx.NodeProto.encode(r.node[l], a.uint32(58).fork()).ldelim(); + if ( + (r.docString != null && + Object.hasOwnProperty.call(r, 'docString') && + a.uint32(66).string(r.docString), + r.opsetImport != null && r.opsetImport.length) + ) + for (var l = 0; l < r.opsetImport.length; ++l) + s.onnx.OperatorSetIdProto.encode(r.opsetImport[l], a.uint32(74).fork()).ldelim(); + if ( + (r.domain != null && + Object.hasOwnProperty.call(r, 'domain') && + a.uint32(82).string(r.domain), + r.attributeProto != null && r.attributeProto.length) + ) + for (var l = 0; l < r.attributeProto.length; ++l) + s.onnx.AttributeProto.encode(r.attributeProto[l], a.uint32(90).fork()).ldelim(); + return a; + }), + (f.encodeDelimited = function (r, a) { + return this.encode(r, a).ldelim(); + }), + (f.decode = function (r, a) { + r instanceof i || (r = i.create(r)); + for ( + var l = a === void 0 ? r.len : r.pos + a, p = new s.onnx.FunctionProto(); + r.pos < l; + + ) { + var m = r.uint32(); + switch (m >>> 3) { + case 1: { + p.name = r.string(); + break; + } + case 4: { + (p.input && p.input.length) || (p.input = []), p.input.push(r.string()); + break; + } + case 5: { + (p.output && p.output.length) || (p.output = []), p.output.push(r.string()); + break; + } + case 6: { + (p.attribute && p.attribute.length) || (p.attribute = []), + p.attribute.push(r.string()); + break; + } + case 11: { + (p.attributeProto && p.attributeProto.length) || (p.attributeProto = []), + p.attributeProto.push(s.onnx.AttributeProto.decode(r, r.uint32())); + break; + } + case 7: { + (p.node && p.node.length) || (p.node = []), + p.node.push(s.onnx.NodeProto.decode(r, r.uint32())); + break; + } + case 8: { + p.docString = r.string(); + break; + } + case 9: { + (p.opsetImport && p.opsetImport.length) || (p.opsetImport = []), + p.opsetImport.push(s.onnx.OperatorSetIdProto.decode(r, r.uint32())); + break; + } + case 10: { + p.domain = r.string(); + break; + } + default: + r.skipType(m & 7); + break; + } + } + return p; + }), + (f.decodeDelimited = function (r) { + return r instanceof i || (r = new i(r)), this.decode(r, r.uint32()); + }), + (f.verify = function (r) { + if (typeof r != 'object' || r === null) return 'object expected'; + if (r.name != null && r.hasOwnProperty('name') && !n.isString(r.name)) + return 'name: string expected'; + if (r.input != null && r.hasOwnProperty('input')) { + if (!Array.isArray(r.input)) return 'input: array expected'; + for (var a = 0; a < r.input.length; ++a) + if (!n.isString(r.input[a])) return 'input: string[] expected'; + } + if (r.output != null && r.hasOwnProperty('output')) { + if (!Array.isArray(r.output)) return 'output: array expected'; + for (var a = 0; a < r.output.length; ++a) + if (!n.isString(r.output[a])) return 'output: string[] expected'; + } + if (r.attribute != null && r.hasOwnProperty('attribute')) { + if (!Array.isArray(r.attribute)) return 'attribute: array expected'; + for (var a = 0; a < r.attribute.length; ++a) + if (!n.isString(r.attribute[a])) return 'attribute: string[] expected'; + } + if (r.attributeProto != null && r.hasOwnProperty('attributeProto')) { + if (!Array.isArray(r.attributeProto)) return 'attributeProto: array expected'; + for (var a = 0; a < r.attributeProto.length; ++a) { + var l = s.onnx.AttributeProto.verify(r.attributeProto[a]); + if (l) return 'attributeProto.' + l; + } + } + if (r.node != null && r.hasOwnProperty('node')) { + if (!Array.isArray(r.node)) return 'node: array expected'; + for (var a = 0; a < r.node.length; ++a) { + var l = s.onnx.NodeProto.verify(r.node[a]); + if (l) return 'node.' + l; + } + } + if (r.docString != null && r.hasOwnProperty('docString') && !n.isString(r.docString)) + return 'docString: string expected'; + if (r.opsetImport != null && r.hasOwnProperty('opsetImport')) { + if (!Array.isArray(r.opsetImport)) return 'opsetImport: array expected'; + for (var a = 0; a < r.opsetImport.length; ++a) { + var l = s.onnx.OperatorSetIdProto.verify(r.opsetImport[a]); + if (l) return 'opsetImport.' + l; + } + } + return r.domain != null && r.hasOwnProperty('domain') && !n.isString(r.domain) + ? 'domain: string expected' + : null; + }), + (f.fromObject = function (r) { + if (r instanceof s.onnx.FunctionProto) return r; + var a = new s.onnx.FunctionProto(); + if ((r.name != null && (a.name = String(r.name)), r.input)) { + if (!Array.isArray(r.input)) + throw TypeError('.onnx.FunctionProto.input: array expected'); + a.input = []; + for (var l = 0; l < r.input.length; ++l) a.input[l] = String(r.input[l]); + } + if (r.output) { + if (!Array.isArray(r.output)) + throw TypeError('.onnx.FunctionProto.output: array expected'); + a.output = []; + for (var l = 0; l < r.output.length; ++l) a.output[l] = String(r.output[l]); + } + if (r.attribute) { + if (!Array.isArray(r.attribute)) + throw TypeError('.onnx.FunctionProto.attribute: array expected'); + a.attribute = []; + for (var l = 0; l < r.attribute.length; ++l) a.attribute[l] = String(r.attribute[l]); + } + if (r.attributeProto) { + if (!Array.isArray(r.attributeProto)) + throw TypeError('.onnx.FunctionProto.attributeProto: array expected'); + a.attributeProto = []; + for (var l = 0; l < r.attributeProto.length; ++l) { + if (typeof r.attributeProto[l] != 'object') + throw TypeError('.onnx.FunctionProto.attributeProto: object expected'); + a.attributeProto[l] = s.onnx.AttributeProto.fromObject(r.attributeProto[l]); + } + } + if (r.node) { + if (!Array.isArray(r.node)) throw TypeError('.onnx.FunctionProto.node: array expected'); + a.node = []; + for (var l = 0; l < r.node.length; ++l) { + if (typeof r.node[l] != 'object') + throw TypeError('.onnx.FunctionProto.node: object expected'); + a.node[l] = s.onnx.NodeProto.fromObject(r.node[l]); + } + } + if ((r.docString != null && (a.docString = String(r.docString)), r.opsetImport)) { + if (!Array.isArray(r.opsetImport)) + throw TypeError('.onnx.FunctionProto.opsetImport: array expected'); + a.opsetImport = []; + for (var l = 0; l < r.opsetImport.length; ++l) { + if (typeof r.opsetImport[l] != 'object') + throw TypeError('.onnx.FunctionProto.opsetImport: object expected'); + a.opsetImport[l] = s.onnx.OperatorSetIdProto.fromObject(r.opsetImport[l]); + } + } + return r.domain != null && (a.domain = String(r.domain)), a; + }), + (f.toObject = function (r, a) { + a || (a = {}); + var l = {}; + if ( + ((a.arrays || a.defaults) && + ((l.input = []), + (l.output = []), + (l.attribute = []), + (l.node = []), + (l.opsetImport = []), + (l.attributeProto = [])), + a.defaults && ((l.name = ''), (l.docString = ''), (l.domain = '')), + r.name != null && r.hasOwnProperty('name') && (l.name = r.name), + r.input && r.input.length) + ) { + l.input = []; + for (var p = 0; p < r.input.length; ++p) l.input[p] = r.input[p]; + } + if (r.output && r.output.length) { + l.output = []; + for (var p = 0; p < r.output.length; ++p) l.output[p] = r.output[p]; + } + if (r.attribute && r.attribute.length) { + l.attribute = []; + for (var p = 0; p < r.attribute.length; ++p) l.attribute[p] = r.attribute[p]; + } + if (r.node && r.node.length) { + l.node = []; + for (var p = 0; p < r.node.length; ++p) + l.node[p] = s.onnx.NodeProto.toObject(r.node[p], a); + } + if ( + (r.docString != null && r.hasOwnProperty('docString') && (l.docString = r.docString), + r.opsetImport && r.opsetImport.length) + ) { + l.opsetImport = []; + for (var p = 0; p < r.opsetImport.length; ++p) + l.opsetImport[p] = s.onnx.OperatorSetIdProto.toObject(r.opsetImport[p], a); + } + if ( + (r.domain != null && r.hasOwnProperty('domain') && (l.domain = r.domain), + r.attributeProto && r.attributeProto.length) + ) { + l.attributeProto = []; + for (var p = 0; p < r.attributeProto.length; ++p) + l.attributeProto[p] = s.onnx.AttributeProto.toObject(r.attributeProto[p], a); + } + return l; + }), + (f.prototype.toJSON = function () { + return this.constructor.toObject(this, o.util.toJSONOptions); + }), + (f.getTypeUrl = function (r) { + return r === void 0 && (r = 'type.googleapis.com'), r + '/onnx.FunctionProto'; + }), + f + ); + })()), + d + ); + })()), + (e.exports = s); + }); +function Cr(t, e) { + if (!t) throw new Error(typeof e == 'string' ? e : e()); +} +function sn(t) { + return new TextDecoder().decode(t); +} +var ye, + cr, + hi, + Xe, + Xn, + Ve, + nt, + U, + an, + pr, + dr, + hr, + fe = L(() => { + Wn(), + ei(), + (ye = Er($r())), + mr(), + (cr = class { + static arraysEqual(t, e) { + if (t.length !== e.length) return !1; + for (let o = 0; o < t.length; o++) if (t[o] !== e[o]) return !1; + return !0; + } + }), + (hi = class { + static preprocessInputShapes(t, e) { + let o = t.length === 1 ? [1, t[0]] : t, + i = e.length === 1 ? [e[0], 1] : e; + return [o, i]; + } + static postprocessOutputShape(t, e, o) { + e === 1 && t.splice(t.length - 2, 1), o === 1 && t.pop(); + } + static calcMatMulShape(t, e) { + return t[1] !== e[0] ? void 0 : [t[0], e[1]]; + } + }), + (Xe = class fr { + static calcShape(e, o, i = !1) { + let u = e.length, + n = o.length; + if (u === 0) return o; + if (n === 0) return e; + let s = Math.max(e.length, o.length), + d = new Array(s); + if (i) { + if (u < 2 || n < 2) return; + let f = hi.calcMatMulShape([e[u - 2], e[u - 1]], [o[n - 2], o[n - 1]]); + if (f === void 0) return; + [d[s - 2], d[s - 1]] = f; + } + for (let f = i ? 3 : 1; f <= s; f++) { + let r = u - f < 0 ? 1 : e[u - f], + a = n - f < 0 ? 1 : o[n - f]; + if (r !== a && r > 1 && a > 1) return; + d[s - f] = Math.max(r, a); + } + return d; + } + static index(e, o) { + let i = new Array(o.length); + return fr.fillIndex(e, o, i), i; + } + static fillIndex(e, o, i) { + let u = e.length - o.length; + for (let n = 0; n < o.length; n++) i[n] = e[u + n] % o[n]; + } + static calc(e, o, i, u, n) { + let s = fr.calcShape(e.dims, o.dims); + if (s) { + if (u && !U.areEqual(s, e.dims)) return; + let d = U.size(s), + f = u ? e : new Fe(s, n || e.type); + if (s.length === 0) f.set([], i(e.get([]), o.get([]))); + else { + let r = new Array(s.length), + a = new Array(e.dims.length), + l = new Array(o.dims.length), + p = 0, + m = 0, + y = !1, + T = !1; + e.dims.length === 0 && ((p = e.get([])), (y = !0)), + o.dims.length === 0 && ((m = o.get([])), (T = !0)); + let v; + for (let S = 0; S < d; S++) { + v = S; + for (let E = s.length - 1; E >= 0; E--) (r[E] = v % s[E]), (v = Math.floor(v / s[E])); + y || (fr.fillIndex(r, e.dims, a), (p = e.get(a))), + T || (fr.fillIndex(r, o.dims, l), (m = o.get(l))), + f.set(r, i(p, m)); + } + } + return f; + } + } + static isValidBroadcast(e, o) { + let i = e.length, + u = o.length; + if (i > u) return !1; + for (let n = 1; n <= i; n++) if (e[i - n] !== 1 && e[i - n] !== o[u - n]) return !1; + return !0; + } + static getBroadcastDims(e, o) { + let i = e.length, + u = []; + for (let n = 0; n < i; n++) { + let s = i - 1 - n, + d = e[s] || 1; + (o[o.length - 1 - n] || 1) > 1 && d === 1 && u.unshift(s); + } + return u; + } + }), + (Xn = class { + static getShapeOfGemmResult(t, e, o, i, u) { + if (t.length !== 2 || o.length !== 2) throw new Error('shape need to be of size 2'); + let n, s, d; + e ? ((n = t[1]), (s = t[0])) : ((n = t[0]), (s = t[1])); + let f = -1; + if ((i ? ((d = o[0]), (f = 1)) : ((d = o[1]), (f = 0)), o[f] !== s)) + throw new Error('dimension mismatch'); + if (n <= 0 || d <= 0 || s <= 0) throw new Error('invalid shape specified'); + if (u && !Xe.isValidBroadcast(u, [n, d])) throw new Error('gemm: invalid bias shape for broadcast'); + return [n, d, s]; + } + }), + (Ve = class Sn { + static tensorDataTypeFromProto(e) { + switch (e) { + case ye.onnx.TensorProto.DataType.INT8: + return 'int8'; + case ye.onnx.TensorProto.DataType.UINT8: + return 'uint8'; + case ye.onnx.TensorProto.DataType.BOOL: + return 'bool'; + case ye.onnx.TensorProto.DataType.INT16: + return 'int16'; + case ye.onnx.TensorProto.DataType.UINT16: + return 'uint16'; + case ye.onnx.TensorProto.DataType.INT32: + return 'int32'; + case ye.onnx.TensorProto.DataType.UINT32: + return 'uint32'; + case ye.onnx.TensorProto.DataType.FLOAT: + return 'float32'; + case ye.onnx.TensorProto.DataType.DOUBLE: + return 'float64'; + case ye.onnx.TensorProto.DataType.STRING: + return 'string'; + case ye.onnx.TensorProto.DataType.INT64: + return 'int32'; + case ye.onnx.TensorProto.DataType.UINT64: + return 'uint32'; + default: + throw new Error(`unsupported data type: ${ye.onnx.TensorProto.DataType[e]}`); + } + } + static tensorDataTypeStringToEnum(e) { + switch (e) { + case 'int8': + return ye.onnx.TensorProto.DataType.INT8; + case 'uint8': + return ye.onnx.TensorProto.DataType.UINT8; + case 'bool': + return ye.onnx.TensorProto.DataType.BOOL; + case 'int16': + return ye.onnx.TensorProto.DataType.INT16; + case 'uint16': + return ye.onnx.TensorProto.DataType.UINT16; + case 'int32': + return ye.onnx.TensorProto.DataType.INT32; + case 'uint32': + return ye.onnx.TensorProto.DataType.UINT32; + case 'float32': + return ye.onnx.TensorProto.DataType.FLOAT; + case 'float64': + return ye.onnx.TensorProto.DataType.DOUBLE; + case 'string': + return ye.onnx.TensorProto.DataType.STRING; + case 'int64': + return ye.onnx.TensorProto.DataType.INT64; + case 'uint64': + return ye.onnx.TensorProto.DataType.UINT64; + default: + throw new Error(`unsupported data type: ${e}`); + } + } + static tensorDimsFromProto(e) { + return e.map((o) => (zt.isLong(o) ? o.toNumber() : o)); + } + static tensorValueTypeFromProto(e) { + return { + tensorType: Sn.tensorDataTypeFromProto(e.elemType), + shape: { dims: Sn.tensorDimsFromProto(e.shape.dim.map((o) => o.dimValue)) }, + }; + } + static tensorDimsFromORTFormat(e) { + let o = []; + for (let i = 0; i < e.dimsLength(); i++) o.push(nt.longToNumber(e.dims(i))); + return o; + } + static tensorAttributesFromORTFormat(e) { + let o = []; + for (let i = 0; i < e.attributesLength(); i++) o.push(e.attributes(i)); + return o; + } + }), + (nt = class { + static longToNumber(t, e) { + return zt.isLong(t) + ? t.toNumber() + : t instanceof _.Long + ? zt.fromValue({ low: t.low, high: t.high, unsigned: e ?? !1 }).toNumber() + : t; + } + static isLong(t) { + return zt.isLong(t) || t instanceof _.Long; + } + }), + (U = class Pt { + static size(e) { + return Pt.getSizeFromDimensionRange(e, 0, e.length); + } + static sizeFromDimension(e, o) { + if (o < 0 || o > e.length) + throw new Error( + `invalid dimension of ${o} for sizeFromDimension as Tensor has ${e.length} dimensions.` + ); + return Pt.getSizeFromDimensionRange(e, o, e.length); + } + static sizeToDimension(e, o) { + if (o < 0 || o > e.length) + throw new Error( + `invalid dimension of ${o} for sizeToDimension as Tensor has ${e.length} dimensions.` + ); + return Pt.getSizeFromDimensionRange(e, 0, o); + } + static getSizeFromDimensionRange(e, o, i) { + let u = 1; + for (let n = o; n < i; n++) { + if (e[n] <= 0) + throw new Error( + 'cannot get valid size from specified dimension range. Most likely the range contains 0 or negative values in them.' + ); + u *= e[n]; + } + return u; + } + static computeStrides(e) { + let o = e.length; + if (o === 0) return []; + if (o === 1) return [1]; + let i = new Array(o); + (i[o - 1] = 1), (i[o - 2] = e[o - 1]); + for (let u = o - 3; u >= 0; --u) i[u] = i[u + 1] * e[u + 1]; + return i; + } + static transpose(e) { + return e.slice().reverse(); + } + static indicesToOffset(e, o, i) { + i === void 0 && (i = e.length); + let u = 0; + for (let n = 0; n < i; ++n) u += o[n] * e[n]; + return u; + } + static offsetToIndices(e, o) { + let i = o.length; + if (i === 0) return []; + if (i === 1) return [e * o[0]]; + let u = new Array(o.length); + for (let n = 0; n < u.length - 1; ++n) (u[n] = Math.floor(e / o[n])), (e -= u[n] * o[n]); + return (u[u.length - 1] = e), u; + } + static normalizeAxis(e, o) { + if (e < -o && e >= o) throw new Error('unsupported axis for this operation.'); + return e < 0 ? e + o : e; + } + static normalizeAxes(e, o) { + return e.map((i) => this.normalizeAxis(i, o)); + } + static incrementIndex(e, o, i) { + if (o.length === 0 || e.length === 0) + throw new Error('Index incrementing unsupported for scalar Tensor'); + if (i === void 0) i = o.length; + else if (i <= 0 || i > o.length) throw new Error('Incorrect axis to increment on'); + for (let u = i - 1; u >= 0 && (e[u]++, !(e[u] < o[u])); --u) e[u] = 0; + } + static calculateReshapedDims(e, o) { + if (o.length === 0) { + if (e.length === 0 || Pt.size(e) === 1) return []; + throw new Error('cannot reshape to a scalar Tensor'); + } + let i = o.length, + u = new Array(i), + n = -1, + s = 1; + for (let f = 0; f < i; f++) { + if (o[f] < -1) throw new Error('a dimension in shape hints cannot be less than -1'); + if (o[f] === -1) { + if (n !== -1) throw new Error('at most one dimension in shape hints can be -1'); + n = f; + } else { + if (o[f] === 0) { + if (f >= e.length) + throw new Error( + 'the dimension with value zero exceeds the dimension size of the input tensor' + ); + u[f] = e[f]; + } else u[f] = o[f]; + s *= u[f]; + } + } + let d = Pt.size(e); + if (n !== -1) { + if (d % s !== 0) + throw new Error( + `the input tensor cannot be reshaped to the requested shape. Input shape: [${e}] Output shape: [${o}]` + ); + u[n] = d / s; + } else if (s !== d) throw new Error("reshapedDims and originalDims don't have matching sizes"); + return u; + } + static sortBasedOnPerm(e, o) { + return o ? o.map((i) => e[i]) : e.slice().reverse(); + } + static padShape(e, o) { + let i = e.length; + return e.map((u, n) => u + o[n] + o[n + i]); + } + static areEqual(e, o) { + return e.length !== o.length ? !1 : e.every((i, u) => i === o[u]); + } + static validateDimsAndCalcSize(e) { + if (e.length > 6) throw new TypeError('Only rank 0 to 6 is supported for tensor shape.'); + let o = 1; + for (let i of e) { + if (!Number.isInteger(i)) throw new TypeError(`Invalid shape: ${i} is not an integer`); + if (i < 0 || i > 2147483647) throw new TypeError(`Invalid shape: length ${i} is not allowed`); + o *= i; + } + return o; + } + static flattenShape(e, o) { + o < 0 && (o += e.length); + let i = e.reduce((n, s) => n * s, 1), + u = e.slice(o).reduce((n, s) => n * s, 1); + return [i / u, u]; + } + static squeezeShape(e, o) { + let i = new Array(); + o = Pt.normalizeAxes(o, e.length); + for (let u = 0; u < e.length; u++) { + let n = o.indexOf(u) >= 0; + if (n && e[u] !== 1) throw new Error('squeeze an axis of size different than 1'); + ((o.length === 0 && e[u] > 1) || (o.length > 0 && !n)) && i.push(e[u]); + } + return i; + } + static unsqueezeShape(e, o) { + let i = new Array(e.length + o.length); + i.fill(0); + for (let n = 0; n < o.length; n++) { + let s = Pt.normalizeAxis(o[n], i.length); + if (s >= i.length) throw new Error("'axes' has an out of range axis"); + if (i[s] !== 0) throw new Error("'axes' has a duplicate axis"); + i[s] = 1; + } + let u = 0; + for (let n = 0; n < i.length; n++) i[n] === 0 && (i[n] = e[u++]); + if (u !== e.length) throw new Error('the unsqueezed dimension could not be established'); + return i; + } + }), + (an = class js { + static splitShape(e, o, i, u) { + if (i.length === 0) { + if (!u) + throw new Error( + "need to know number of outputs when the 'split' attribute is not specified" + ); + js.determineSplit(e[o], u, i); + } + let n = [], + s = [0]; + for (let d = 0; d < i.length; ++d) { + d !== 0 && s.push(s[d - 1] + i[d - 1]); + let f = e.slice(); + (f[o] = i[d]), n.push(f); + } + return [n, s]; + } + static determineSplit(e, o, i) { + if (e % o !== 0) throw new Error('cannot split tensor to equal sized parts'); + for (let u = 0; u < o; ++u) i.push(e / o); + } + }), + (pr = class _r { + static adjustPoolAttributes(e, o, i, u, n, s) { + if (!e && i.length !== o.length - 2) + throw new Error( + 'length of specified kernel shapes should be 2 less than length of input dimensions' + ); + if (e) for (let d = 0; d < o.length - 2; d++) d >= i.length ? i.push(o[d + 2]) : (i[d] = o[d + 2]); + for (let d = 0; d < i.length; d++) + if (d < u.length) { + if (u[d] < 0) throw new Error('strides should be greater than or equal to 1'); + } else u.push(1); + for (let d = 0; d < i.length; d++) + if (d < n.length) { + if (n[d] < 0) throw new Error('dilations should be greater than or equal to 1'); + } else n.push(1); + for (let d = 0; d < i.length * 2; d++) + if (d < s.length) { + if (s[d] < 0) throw new Error('pad should be greater than or equal to 1'); + } else s.push(0); + for (let d = 0; d < i.length; d++) { + if (i[d] <= 0) throw new Error('kernel shapes need to be greater than 0'); + if (s[d] >= i[d] || s[d + i.length] >= i[d]) + throw new Error('pads should be smaller than kernel'); + } + } + static adjustPadsBasedOnAutoPad(e, o, i, u, n, s) { + if (s) { + if (n.length !== 2 * (e.length - 2)) + throw new Error('length of pads should be twice the length of data dimensions'); + if (o.length !== e.length - 2) + throw new Error('length of strides should be the length of data dimensions'); + if (u.length !== e.length - 2) + throw new Error('length of kernel shapes should be the length of data dimensions'); + for (let d = 0; d < e.length - 2; d++) + _r.adjustPadAndReturnShape(e[d + 2], o[d], i[d], u[d], n, d, d + e.length - 2, s); + } + } + static computePoolOutputShape(e, o, i, u, n, s, d) { + if (o.length <= 0) throw new Error('input shape must be of size greater than 0'); + let f = [o[0], o[1]]; + return _r.computeShapeHelper(e, o, f, i, u, n, s, d), f; + } + static computeConvOutputShape(e, o, i, u, n, s, d) { + if (e.length <= 0 || o.length <= 0) + throw new Error('invalid input tensor dims or invalid filter tensor dims'); + let f = [e[0], o[0]]; + return _r.computeShapeHelper(!1, e, f, i, u, n, s, d), f; + } + static computeShapeHelper(e, o, i, u, n, s, d, f) { + if (e) for (let r = 0; r < o.length - 2; r++) i.push(1); + else + for (let r = 0; r < o.length - 2; r++) + i.push(_r.adjustPadAndReturnShape(o[r + 2], u[r], n[r], s[r], d, r, r + o.length - 2, f)); + } + static adjustPadAndReturnShape(e, o, i, u, n, s, d, f) { + let r = i * (u - 1) + 1; + if (f && f !== 'NOTSET') + switch (f) { + case 'VALID': + return (n[s] = 0), (n[d] = 0), Math.floor((e - r) / o + 1); + case 'SAME_LOWER': + case 'SAME_UPPER': + if (i !== 1) throw new Error('Dilation not supported for SAME_UPPER or SAME_LOWER'); + { + let a = ((e + o - 1) / o - 1) * o + u - e; + return ( + (n[s] = Math.floor(f === 'SAME_LOWER' ? (a + 1) / 2 : a / 2)), + (n[d] = a - n[s]), + Math.floor((e + a - u) / o + 1) + ); + } + default: + throw new Error('Unsupported AutoPad type'); + } + else return Math.floor((e + n[s] + n[d] - r) / o + 1); + } + }), + (dr = -34028234663852886e22), + (hr = 34028234663852886e22); + }); +function Vd(t) { + switch (t) { + case 'bool': + case 'int8': + case 'uint8': + return 1; + case 'int16': + case 'uint16': + return 2; + case 'int32': + case 'uint32': + case 'float32': + return 4; + case 'float64': + return 8; + default: + throw new Error(`cannot calculate sizeof() on type ${t}`); + } +} +function Fu(t) { + switch (t) { + case te.onnx.TensorProto.DataType.UINT8: + case te.onnx.TensorProto.DataType.INT8: + case te.onnx.TensorProto.DataType.BOOL: + return 1; + case te.onnx.TensorProto.DataType.UINT16: + case te.onnx.TensorProto.DataType.INT16: + return 2; + case te.onnx.TensorProto.DataType.FLOAT: + case te.onnx.TensorProto.DataType.INT32: + case te.onnx.TensorProto.DataType.UINT32: + return 4; + case te.onnx.TensorProto.DataType.INT64: + case te.onnx.TensorProto.DataType.DOUBLE: + case te.onnx.TensorProto.DataType.UINT64: + return 8; + default: + throw new Error(`cannot calculate sizeof() on type ${te.onnx.TensorProto.DataType[t]}`); + } +} +function Wd(t, e) { + return new (ku(e))(t); +} +function ku(t) { + switch (t) { + case 'bool': + case 'uint8': + return Uint8Array; + case 'int8': + return Int8Array; + case 'int16': + return Int16Array; + case 'uint16': + return Uint16Array; + case 'int32': + return Int32Array; + case 'uint32': + return Uint32Array; + case 'int64': + return BigInt64Array; + case 'float32': + return Float32Array; + case 'float64': + return Float64Array; + default: + throw new Error('unspecified error'); + } +} +function bi(t, e) { + if (e === te.onnx.TensorProto.DataType.INT64 || e === mi.TensorDataType.INT64) { + if (t.greaterThanOrEqual(2147483648) || t.lessThan(-2147483648)) throw new TypeError('int64 is not supported'); + } else if ( + e === te.onnx.TensorProto.DataType.UINT32 || + e === mi.TensorDataType.UINT32 || + e === te.onnx.TensorProto.DataType.UINT64 || + e === mi.TensorDataType.UINT64 + ) { + if (t.greaterThanOrEqual(4294967296) || t.lessThan(0)) throw new TypeError('uint64 is not supported'); + } else throw new TypeError(`not a LONG type: ${te.onnx.TensorProto.DataType[e]}`); + return t.toNumber(); +} +function $u(t, e, o) { + switch (e) { + case te.onnx.TensorProto.DataType.BOOL: + case te.onnx.TensorProto.DataType.UINT8: + return t.getUint8(o); + case te.onnx.TensorProto.DataType.INT8: + return t.getInt8(o); + case te.onnx.TensorProto.DataType.UINT16: + return t.getUint16(o, !0); + case te.onnx.TensorProto.DataType.INT16: + return t.getInt16(o, !0); + case te.onnx.TensorProto.DataType.FLOAT: + return t.getFloat32(o, !0); + case te.onnx.TensorProto.DataType.INT32: + return t.getInt32(o, !0); + case te.onnx.TensorProto.DataType.UINT32: + return t.getUint32(o, !0); + case te.onnx.TensorProto.DataType.INT64: + return bi(zt.fromBits(t.getUint32(o, !0), t.getUint32(o + 4, !0), !1), e); + case te.onnx.TensorProto.DataType.DOUBLE: + return t.getFloat64(o, !0); + case te.onnx.TensorProto.DataType.UINT64: + return bi(zt.fromBits(t.getUint32(o, !0), t.getUint32(o + 4, !0), !0), e); + default: + throw new Error(`cannot read from DataView for type ${te.onnx.TensorProto.DataType[e]}`); + } +} +var Cu, + te, + mi, + Fe, + mr = L(() => { + (Cu = Er(_s())), + ei(), + tn(), + (te = Er($r())), + fe(), + (mi = W.experimental.fbs), + (Fe = class Kr { + constructor(e, o, i, u, n, s = Cu.Guid.create()) { + (this.dims = e), + (this.type = o), + (this.dataProvider = i), + (this.asyncDataProvider = u), + (this.cache = n), + (this.dataId = s), + (this.size = U.validateDimsAndCalcSize(e)); + let d = this.size, + f = i === void 0 && u === void 0 && n === void 0; + if (n !== void 0 && n.length !== d) throw new RangeError("Input dims doesn't match data length."); + if (o === 'string') { + if (n !== void 0 && (!Array.isArray(n) || !n.every((r) => typeof r == 'string'))) + throw new TypeError('cache should be a string array'); + f && (this.cache = new Array(d)); + } else { + if (n !== void 0) { + let r = ku(o); + if (!(n instanceof r)) throw new TypeError(`cache should be type ${r.name}`); + } + if (f) { + let r = new ArrayBuffer(d * Vd(o)); + this.cache = Wd(r, o); + } + } + } + get data() { + if (this.cache === void 0) { + let e = this.dataProvider(this.dataId); + if (e.length !== this.size) + throw new Error( + 'Length of data provided by the Data Provider is inconsistent with the dims of this Tensor.' + ); + this.cache = e; + } + return this.cache; + } + get stringData() { + if (this.type !== 'string') throw new TypeError('data type is not string'); + return this.data; + } + get integerData() { + switch (this.type) { + case 'uint8': + case 'int8': + case 'uint16': + case 'int16': + case 'int32': + case 'uint32': + case 'bool': + return this.data; + default: + throw new TypeError( + 'data type is not integer (uint8, int8, uint16, int16, int32, uint32, bool)' + ); + } + } + get floatData() { + switch (this.type) { + case 'float32': + case 'float64': + return this.data; + default: + throw new TypeError('data type is not float (float32, float64)'); + } + } + get numberData() { + if (this.type !== 'string') return this.data; + throw new TypeError('type cannot be non-number (string)'); + } + get(e) { + return this.data[U.indicesToOffset(e, this.strides)]; + } + set(e, o) { + this.data[U.indicesToOffset(e, this.strides)] = o; + } + async getData() { + return ( + this.cache === void 0 && (this.cache = await this.asyncDataProvider(this.dataId)), this.cache + ); + } + get strides() { + return this._strides || (this._strides = U.computeStrides(this.dims)), this._strides; + } + static fromProto(e) { + if (!e) throw new Error('cannot construct Value from an empty tensor'); + let o = Ve.tensorDataTypeFromProto(e.dataType), + i = Ve.tensorDimsFromProto(e.dims), + u = new Kr(i, o); + if (o === 'string') + e.stringData.forEach((n, s) => { + u.data[s] = sn(n); + }); + else if (e.rawData && typeof e.rawData.byteLength == 'number' && e.rawData.byteLength > 0) { + let n = u.data, + s = new DataView(e.rawData.buffer, e.rawData.byteOffset, e.rawData.byteLength), + d = Fu(e.dataType), + f = e.rawData.byteLength / d; + if (e.rawData.byteLength % d !== 0) throw new Error('invalid buffer length'); + if (n.length !== f) throw new Error('buffer length mismatch'); + for (let r = 0; r < f; r++) { + let a = $u(s, e.dataType, r * d); + n[r] = a; + } + } else { + let n; + switch (e.dataType) { + case te.onnx.TensorProto.DataType.FLOAT: + n = e.floatData; + break; + case te.onnx.TensorProto.DataType.INT32: + case te.onnx.TensorProto.DataType.INT16: + case te.onnx.TensorProto.DataType.UINT16: + case te.onnx.TensorProto.DataType.INT8: + case te.onnx.TensorProto.DataType.UINT8: + case te.onnx.TensorProto.DataType.BOOL: + n = e.int32Data; + break; + case te.onnx.TensorProto.DataType.INT64: + n = e.int64Data; + break; + case te.onnx.TensorProto.DataType.DOUBLE: + n = e.doubleData; + break; + case te.onnx.TensorProto.DataType.UINT32: + case te.onnx.TensorProto.DataType.UINT64: + n = e.uint64Data; + break; + default: + throw new Error('unspecific error'); + } + if (n == null) throw new Error('failed to populate data from a tensorproto value'); + let s = u.data; + if (s.length !== n.length) throw new Error('array length mismatch'); + for (let d = 0; d < n.length; d++) { + let f = n[d]; + zt.isLong(f) ? (s[d] = bi(f, e.dataType)) : (s[d] = f); + } + } + return u; + } + static fromData(e, o, i) { + return new Kr(o, i, void 0, void 0, e); + } + static fromOrtTensor(e) { + if (!e) throw new Error('cannot construct Value from an empty tensor'); + let o = Ve.tensorDimsFromORTFormat(e), + i = Ve.tensorDataTypeFromProto(e.dataType()), + u = new Kr(o, i); + if (i === 'string') for (let n = 0; n < e.stringDataLength(); n++) u.data[n] = e.stringData(n); + else if (e.rawDataArray() && typeof e.rawDataLength() == 'number' && e.rawDataLength() > 0) { + let n = u.data, + s = new DataView(e.rawDataArray().buffer, e.rawDataArray().byteOffset, e.rawDataLength()), + d = Fu(e.dataType()), + f = e.rawDataLength() / d; + if (e.rawDataLength() % d !== 0) throw new Error('invalid buffer length'); + if (n.length !== f) throw new Error('buffer length mismatch'); + for (let r = 0; r < f; r++) { + let a = $u(s, e.dataType(), r * d); + n[r] = a; + } + } + return u; + } + }); + }); +function q(t) { + return t === 1 ? Hd : qd; +} +function Bu(t) { + let e = q(t); + return `${e.version} + precision highp float; + ${e.attribute} vec3 position; + ${e.attribute} vec2 textureCoord; + + ${e.varyingVertex} vec2 TexCoords; + + void main() + { + gl_Position = vec4(position, 1.0); + TexCoords = textureCoord; + }`; +} +function Nu(t) { + let e = q(t); + return `${e.version} + precision highp float; + precision highp int; + precision highp sampler2D; + ${e.varyingFrag} vec2 TexCoords; + ${e.outputDeclaration} + const vec2 halfCR = vec2(0.5, 0.5); + + // Custom vector types to handle higher dimenalities. + struct ivec5 + { + int x; + int y; + int z; + int w; + int u; + }; + + struct ivec6 + { + int x; + int y; + int z; + int w; + int u; + int v; + }; + + int imod(int x, int y) { + return x - y * (x / y); + } + + `; +} +function Ru(t, e) { + let o = q(t); + return ` + void main() { + int indices[${e}]; + toVec(TexCoords, indices); + vec4 result = vec4(process(indices)); + ${o.output} = result; + } + `; +} +var Hd, + qd, + xe = L(() => { + (Hd = { + version: '', + attribute: 'attribute', + varyingVertex: 'varying', + varyingFrag: 'varying', + texture2D: 'texture2D', + output: 'gl_FragColor', + outputDeclaration: '', + }), + (qd = { + version: '#version 300 es', + attribute: 'in', + varyingVertex: 'out', + varyingFrag: 'in', + texture2D: 'texture', + output: 'outputColor', + outputDeclaration: 'out vec4 outputColor;', + }); + }), + ae = L(() => {}); +async function gi(t, e = (i) => 0, o) { + return new Promise((i, u) => { + let n = 0, + s = () => { + if (t()) { + i(); + return; + } + n++; + let d = e(n); + if (o != null && n >= o) { + u(); + return; + } + setTimeout(s, d); + }; + s(); + }); +} +function Kn(t) { + return ( + Cr(typeof t < 'u' && t.length !== 0, () => 'empty string found for sampler name'), + 'get' + t.charAt(0).toUpperCase() + t.slice(1) + ); +} +function Mu(t) { + return ( + Cr(typeof t < 'u' && t.length !== 0, () => 'empty string found for sampler name'), + 'get' + t.charAt(0).toUpperCase() + t.slice(1) + 'AtOutCoords' + ); +} +function kr(t, e) { + let o = JSON.parse(JSON.stringify(t)); + return (o = e), o; +} +function Br(t, e) { + return e.map((o) => t[o]).join(', '); +} +function Ke(t) { + if (t <= 1) return 'int'; + if (t === 2) return 'ivec2'; + if (t === 3) return 'ivec3'; + if (t === 4) return 'ivec4'; + if (t === 5) return 'ivec5'; + if (t === 6) return 'ivec6'; + throw Error(`GPU for rank ${t} is not yet supported`); +} +function St(t = 6) { + return ['x', 'y', 'z', 'w', 'u', 'v'].slice(0, t); +} +var Ft = L(() => { + fe(); +}); +function jd(t, e) { + return St(e).map((o) => `${t}.${o}`); +} +function Nr(t, e) { + return e === 1 ? [t] : jd(t, e); +} +function $t() { + return ` + float getChannel(vec4 frag, int dim) { + int modCoord = imod(dim, 2); + return modCoord == 0 ? frag.r : frag.g; + } + + float getChannel(vec4 frag, vec2 innerDims) { + vec2 modCoord = mod(innerDims, 2.); + return modCoord.x == 0. ? + (modCoord.y == 0. ? frag.r : frag.g) : + (modCoord.y == 0. ? frag.b : frag.a); + } + `; +} +var br = L(() => { + Ft(); +}); +function Xd(t, e, o) { + if (t === 0) return 'false'; + if (t === 1) return `rc > ${e[0]}`; + let i = ''; + for (let u = t - 2; u < t; u++) (i += `${o[u]} >= ${e[u - t + 2]}`), u < t - 1 && (i += '||'); + return i; +} +function Kd(t, e) { + let o = t.length; + if (o === 0) return 'getA(), 0, 0, 0'; + if (o === 1) + return `getA(rc), + rc + 1 >= ${t[0]} ? 0. : getA(rc + 1), + 0, 0`; + let i = 'r, c', + u = 'r, cp1', + n = 'rp1, c', + s = 'rp1, cp1', + d = ''; + if (o > 2) for (let f = 0; f < o - 2; ++f) d = d + `${e[f]},`; + return `getA(${d}${i}), + rEdge ? 0. : getA(${d}${n}), + cEdge ? 0. : getA(${d}${u}), + rEdge || cEdge ? 0. : getA(${d}${s})`; +} +function Jd(t, e, o, i) { + return t === 0 || t === 1 + ? '' + : ` + int r = ${e[t - 2]}; + int c = ${e[t - 1]}; + int rp1 = ${e[t - 2]} + 1; + int cp1 = ${e[t - 1]} + 1; + bool rEdge = rp1 >= ${i}; + bool cEdge = cp1 >= ${o}; + `; +} +var Gu, + Yd, + Uu, + zu = L(() => { + xe(), + ae(), + Ft(), + br(), + (Gu = { name: 'pack', inputNames: ['A'], inputTypes: [1] }), + (Yd = (t, e) => { + let o = q(t.session.backend.glContext.version), + i = e.dims, + u = i.length, + n = e.dims.length, + s = Ke(n), + d = Nr('rc', n), + f = Jd(n, d, i[i.length - 2], i[i.length - 1]), + r; + u === 0 ? (r = [1, 1]) : u === 1 ? (r = [i[0], 1]) : (r = [i[n - 1], i[n - 2]]); + let a = Xd(n, r, d), + l = Kd(i, d), + p = ` + void main() { + ${s} rc = getOutputCoords(); + + if(${a}) { + ${o.output} = vec4(0); + } else { + ${f} + + ${o.output} = vec4(${l}); + } + } + `; + return { ...Gu, hasMain: !0, output: { dims: e.dims, type: e.type, textureType: 2 }, shaderSource: p }; + }), + (Uu = (t, e) => ({ ...Gu, get: () => Yd(t, e) })); + }); +function yi(t) { + if (t.length === 0) return [1, 1, 1]; + let e = 1; + for (let o = 0; o < t.length - 2; ++o) e *= t[o]; + return [e, t.length > 1 ? t[t.length - 2] : 1, t[t.length - 1]]; +} +function Wu(t, e) { + let o = !1; + return ( + t.length === 0 || e.length === 0 + ? (o = !0) + : t.length < 2 || e.length < 2 + ? (o = t[t.length - 1] === e[e.length - 1]) + : (o = t[t.length - 1] === e[e.length - 1] && t[t.length - 2] === e[e.length - 2]), + o + ); +} +function eh(t) { + let e = U.computeStrides(t), + o = ['b', 'r', 'c'], + i = 'index'; + return ` + ivec3 inputCoordsFromReshapedOutCoords(int index) { + ${e + .map((u, n) => { + let s = `int ${o[n]} = ${i} / ${u}`, + d = n === e.length - 1 ? `int ${o[n + 1]} = ${i} - ${o[n]} * ${u}` : `index -= ${o[n]} * ${u}`; + return `${s}; ${d};`; + }) + .join('')} + return ivec3(b, r, c); + } + `; +} +function th(t) { + let e = U.computeStrides(t); + return ` + int getFlattenedIndex(ivec3 coords) { + // reverse y, z order + return coords.x * ${e[0]} + coords.z * ${e[1]} + coords.y; + } +`; +} +var Zd, + Qd, + Vu, + Hu = L(() => { + fe(), + xe(), + ae(), + br(), + (Zd = (t) => ({ name: 'Reshape (packed)', inputTypes: [2], inputNames: ['A'], cacheHint: `${t}` })), + (Qd = (t, e, o, i) => { + let u = e.dims, + n = i, + s = ''; + for (let r = 0; r < 4; r++) { + let a = ''; + switch (r) { + case 0: + a = 'outputCoords = rc;'; + break; + case 1: + a = 'outputCoords = ivec3(rc.x, rc.y+1, rc.z);'; + break; + case 2: + a = 'outputCoords = ivec3(rc.x, rc.y, rc.z+1);'; + break; + case 3: + a = 'outputCoords = ivec3(rc.x, rc.y+1, rc.z+1);'; + break; + default: + throw new Error(); + } + s += ` + ${a} + ${r > 0 ? 'if(outputCoords.y < rows && outputCoords.z < cols){' : ''} + int flattenedIndex = getFlattenedIndex(outputCoords); + + ivec3 inputRC = inputCoordsFromReshapedOutCoords(flattenedIndex); + vec2 innerDims = vec2(float(inputRC.y),float(inputRC.z)); + + result[${r}] = getChannel(getA(inputRC.x, inputRC.y, inputRC.z), innerDims); + + ${r > 0 ? '}' : ''} + `; + } + let d = q(t.session.backend.glContext.version), + f = ` + ${eh(u)} + ${th(n)} + ${$t()} + + void main() { + ivec3 rc = getOutputCoords(); + + vec4 result = vec4(0.0); + + ivec3 outputCoords; + int rows = ${n[2]}; + int cols = ${n[1]}; + + ${s} + ${d.output} = result; + } + `; + return { ...o, output: { dims: n, type: e.type, textureType: 2 }, shaderSource: f, hasMain: !0 }; + }), + (Vu = (t, e, o) => { + let i = Zd(o); + return { ...i, get: () => Qd(t, e, i, o) }; + }); + }), + Ti, + qu = L(() => { + xe(), + ae(), + (Ti = (t, e) => { + let o = e.shape, + i = q(t.session.backend.glContext.version), + u = ` + const float FLOAT_MAX = 1.70141184e38; + const float FLOAT_MIN = 1.17549435e-38; + + bool isNaN(float val) { + return (val < 1.0 || 0.0 < val || val == 0.0) ? false : true; + } + + highp vec4 encodeAsUint8(highp float v) { + if (isNaN(v)) { + return vec4(255, 255, 255, 255); + } + + highp float av = abs(v); + + if(av < FLOAT_MIN) { + return vec4(0.0, 0.0, 0.0, 0.0); + } else if(v > FLOAT_MAX) { + return vec4(0.0, 0.0, 128.0, 127.0) / 255.0; + } else if(v < -FLOAT_MAX) { + return vec4(0.0, 0.0, 128.0, 255.0) / 255.0; + } + + highp vec4 c = vec4(0,0,0,0); + + highp float e = floor(log2(av)); + highp float m = exp2(fract(log2(av))) - 1.0; + + c[2] = floor(128.0 * m); + m -= c[2] / 128.0; + c[1] = floor(32768.0 * m); + m -= c[1] / 32768.0; + c[0] = floor(8388608.0 * m); + + highp float ebias = e + 127.0; + c[3] = floor(ebias / 2.0); + ebias -= c[3] * 2.0; + c[2] += floor(ebias) * 128.0; + + c[3] += 128.0 * step(0.0, -v); + + return c / 255.0; + } + + void main() { + float value = ${i.texture2D}(X,TexCoords).r; + ${i.output} = encodeAsUint8(value); + }`, + n = { + name: 'Uint8Encode', + inputTypes: [0], + inputNames: ['X'], + output: { dims: o, type: e.tensor.type, textureType: 3 }, + shaderSource: u, + hasMain: !0, + }; + return t.executeProgram(n, [e.tensor]); + }); + }); +function nh(t, e) { + if (t === 1) return 'rc'; + let o = ''; + for (let i = 0; i < t; i++) (o += e[i]), i < t - 1 && (o += ','); + return o; +} +var ju, + rh, + Yu, + Xu = L(() => { + xe(), + ae(), + Ft(), + br(), + (ju = { name: 'unpack', inputNames: ['A'], inputTypes: [2] }), + (rh = (t, e) => { + let o = e.dims.length, + i = Nr('rc', o), + u = i.slice(-2), + n = Ke(o), + s = $t(), + d = e.dims.length === 0 ? '' : nh(o, i), + f = o <= 1 ? 'rc' : `vec2(${u.join(',')})`, + r = q(t.session.backend.glContext.version), + a = ` + ${s} + void main() { + ${n} rc = getOutputCoords(); + + // Sample the texture with the coords to get the rgba channel value. + vec4 packedInput = getA(${d}); + + ${r.output} = vec4(getChannel(packedInput, ${f}), 0, 0, 0); + } + `; + return { ...ju, hasMain: !0, output: { dims: e.dims, type: e.type, textureType: 0 }, shaderSource: a }; + }), + (Yu = (t, e) => ({ ...ju, get: () => rh(t, e) })); + }), + Jn, + un, + Zn, + ln = L(() => { + ut(), + (Jn = class { + constructor(t, e = 1) { + if (e === 1) + (this.internalFormat = t.R32F), + (this.format = t.RED), + (this.textureType = t.FLOAT), + (this.channelSize = e); + else if (e === 4) + (this.internalFormat = t.RGBA32F), + (this.format = t.RGBA), + (this.textureType = t.FLOAT), + (this.channelSize = e); + else throw new Error(`Invalid number of channels: ${e}`); + } + encode(t, e) { + let o, i; + return ( + t.constructor !== Float32Array && + (ce.warning('Encoder', 'data was not of type Float32; creating new Float32Array'), + (i = new Float32Array(t))), + e * this.channelSize > t.length + ? (ce.warning('Encoder', 'Source data too small. Allocating larger array'), + (i = t), + (o = this.allocate(e * this.channelSize)), + i.forEach((u, n) => (o[n] = u))) + : ((i = t), (o = i)), + o + ); + } + allocate(t) { + return new Float32Array(t * 4); + } + decode(t, e) { + return this.channelSize === 1 ? t.filter((o, i) => i % 4 === 0).subarray(0, e) : t.subarray(0, e); + } + }), + (un = class { + constructor(t, e = 1, o) { + if (e !== 1 && e !== 4) throw new Error(`Invalid number of channels: ${e}`); + (this.internalFormat = t.RGBA), + (this.format = t.RGBA), + (this.channelSize = e), + (this.textureType = o || t.FLOAT); + } + encode(t, e) { + let o = t; + return ( + this.channelSize === 1 && + (ce.verbose('Encoder', 'Exploding into a larger array'), + (o = this.allocate(e)), + t.forEach((i, u) => (o[u * 4] = i))), + o + ); + } + allocate(t) { + return new Float32Array(t * 4); + } + decode(t, e) { + return this.channelSize === 1 ? t.filter((o, i) => i % 4 === 0).subarray(0, e) : t.subarray(0, e); + } + }), + (Zn = class { + constructor(t, e = 1) { + if (((this.channelSize = 4), e === 1)) + (this.internalFormat = t.ALPHA), + (this.format = t.ALPHA), + (this.textureType = t.UNSIGNED_BYTE), + (this.channelSize = e); + else if (e === 4) + (this.internalFormat = t.RGBA), + (this.format = t.RGBA), + (this.textureType = t.UNSIGNED_BYTE), + (this.channelSize = e); + else throw new Error(`Invalid number of channels: ${e}`); + } + encode(t, e) { + return new Uint8Array(t.buffer, t.byteOffset, t.byteLength); + } + allocate(t) { + return new Uint8Array(t * this.channelSize); + } + decode(t, e) { + if (t instanceof Uint8Array) return t.subarray(0, e); + throw new Error(`Invalid array type: ${t.constructor}`); + } + }); + }), + fn, + Ku, + xi, + Ju = L(() => { + fe(), + ae(), + (fn = (t, e, o) => { + let i = o === 0 || o === 1 ? 1 : 4, + u = o === 2, + n = o === 1 || o === 2, + s = o === 4 ? e.length - 1 : void 0, + d = o === 4 ? e.map((f, r) => (r === e.length - 1 ? f * 4 : f)) : void 0; + return xi(t, e, i, d, { isPacked: u, reverseWH: n, breakAxis: s }); + }), + (Ku = (t, e, o) => { + let i = fn(t, e, o); + return [i.width, i.height]; + }), + (xi = (t, e, o = 1, i, u) => { + let n = !!(u && u.isPacked), + [s, d] = t.computeTextureWH((n && i) || e, u), + f = e.length, + r = e.slice(0); + if ((f === 0 && (r = [1]), o === 1)) i = e; + else if (n) { + if (o !== 4) throw new Error('a packed texture must be 4-channel'); + (i = e), + f > 0 && (r[f - 1] = Math.ceil(r[f - 1] / 2)), + f > 1 && (r[f - 2] = Math.ceil(r[f - 2] / 2)); + } else if (!i) throw new Error('Unpacked shape is needed when using channels > 1'); + return { + width: s, + height: d, + channels: o, + isPacked: n, + shape: r, + strides: U.computeStrides(r), + unpackedShape: i, + reversedWH: u && u.reverseWH, + }; + }); + }), + ih, + Qn, + Qu = L(() => { + ut(), + mr(), + fe(), + zu(), + Hu(), + qu(), + Xu(), + ln(), + Ju(), + ae(), + (ih = (t, e) => { + let o = e.map((u) => `${u.unpackedShape.join(',')};${u.width}x${u.height}`).join('_'), + i = t.name; + return t.cacheHint && (i += '[' + t.cacheHint + ']'), (i += ':' + o), i; + }), + (Qn = class { + constructor(t) { + (this.session = t), + (this.packedTextureDataCache = new Map()), + (this.unpackedTextureDataCache = new Map()); + } + calculateTextureWidthAndHeight(t, e) { + return Ku(this.session.layoutStrategy, t, e); + } + executeProgram(t, e) { + if (e.length < t.inputNames.length) + throw new Error(`Input size mustn't be less than ${t.inputNames.length}.`); + if (t.inputNames.length !== t.inputTypes.length) + throw new Error('input names size does not match input types'); + let o = []; + for (let f = 0; f < t.inputNames.length; ++f) + o[f] = this.getOrCreateTextureData(e[f], t.inputTypes[f]); + let i = ih(t, o), + u = this.session.programManager.getArtifact(i), + n = u ? u.programInfo : typeof t.get == 'function' ? t.get() : t, + s = fn(this.session.layoutStrategy, n.output.dims, n.output.textureType), + d = this.createTextureData(s, n.output.type); + return ( + u || + ((u = this.session.programManager.build(n, o, d)), + this.session.programManager.setArtifact(i, u)), + this.runProgram(u, o, d), + d + ); + } + run(t, e) { + return this.executeProgram(t, e).tensor; + } + runProgram(t, e, o) { + for (let i = 0; i < e.length; ++i) + if (!!e[i].isPacked != (t.programInfo.inputTypes[i] === 2)) + throw new Error(`input[${i}] property packed inconsistent`); + if (!!o.isPacked != (t.programInfo.output.textureType === 2)) + throw new Error('output property packed inconsistent'); + this.session.programManager.run(t, e, o); + } + getOrCreateTextureData(t, e) { + let o = this.getTextureData(t.dataId, e === 2); + if (!o && ((o = this.getTextureData(t.dataId, e !== 2)), o)) + return e === 2 ? this.pack(o) : this.unpack(o); + if (!o) { + let i = fn(this.session.layoutStrategy, t.dims, e); + if (e === 4) { + let u = t.dims; + if (u.length === 4) { + let n = [u[0], Math.ceil((u[1] * u[2] * u[3]) / 4)], + s = fn(this.session.layoutStrategy, n, e), + d = t.numberData; + if ((u[1] * u[2] * u[3]) % 4 !== 0) { + let f = u[0], + r = u[1] * u[2] * u[3], + a = Math.ceil((r * 1) / 4) * 4, + l = f * a; + d = new Float32Array(l); + for (let p = 0; p < f; ++p) { + let m = p * r, + y = p * a + (p % 1) * r; + d.set(t.numberData.subarray(m, m + r), y); + } + } + return this.createTextureData(s, t.type, d, t, 1); + } + } + if (e === 2) { + let u = xi(this.session.layoutStrategy, t.dims, 1, [], { reverseWH: !0 }), + n = this.createTextureData(u, t.type, t.numberData, t, 1); + o = this.pack(n); + } else o = this.createTextureData(i, t.type, t.numberData, t, 1); + } + return o; + } + createTextureDataFromLayoutBindTensor(t, e, o, i) { + return this.createTextureData(t, e, o, i, 1); + } + createTextureData(t, e, o, i, u) { + ce.verbose('InferenceHandler', `Creating TextureData: layout:[${JSON.stringify(t)}]`); + let n = this.session.textureManager.createTextureFromLayout(e, t, o, u); + return this.createTextureDataFromTexture(t, e, n, i); + } + reshapeUnpacked(t, e) { + let o = this.getOrCreateTextureData(t, 0), + i = { + channels: o.channels, + height: o.height, + width: o.width, + shape: e.length !== 0 ? e : [1], + strides: U.computeStrides(e), + unpackedShape: e, + }; + return this.createTextureDataFromTexture(i, t.type, o.texture).tensor; + } + reshapePacked(t, e) { + let o = this.getOrCreateTextureData(t, 2); + if (Wu(t.dims, e)) { + let d = { + channels: o.channels, + height: o.height, + width: o.width, + shape: e.length !== 0 ? e : [1], + strides: U.computeStrides(e), + unpackedShape: e, + isPacked: !0, + }; + return this.createTextureDataFromTexture(d, t.type, o.texture).tensor; + } + let i = yi(t.dims), + u = yi(e), + n = this.reshapePacked(t, i), + s = this.run(Vu(this, n, u), [n]); + return this.reshapePacked(s, e); + } + cast(t, e) { + let o = this.getOrCreateTextureData(t, 0); + return this.createTextureDataFromTexture(o, e, o.texture).tensor; + } + createTextureDataFromTexture(t, e, o, i, u) { + let n = { + ...t, + tensor: + i || + new Fe( + t.unpackedShape, + e, + (s) => this.readTexture(n), + async (s) => this.readTextureAsync(n), + void 0, + u + ), + texture: o, + }; + return this.setTextureData(n.tensor.dataId, n, t.isPacked), n; + } + getTextureData(t, e = !1) { + return this.session.isInitializer(t) + ? this.session.getTextureData(t, e) + : e + ? this.packedTextureDataCache.get(t) + : this.unpackedTextureDataCache.get(t); + } + setTextureData(t, e, o = !1) { + this.session.isInitializer(t) + ? this.session.setTextureData(t, e, o) + : (o ? this.packedTextureDataCache : this.unpackedTextureDataCache).set(t, e); + } + isTextureLayoutCached(t, e = !1) { + return !!this.getTextureData(t.dataId, e); + } + dispose() { + this.session.textureManager.clearActiveTextures(), + this.packedTextureDataCache.forEach((t) => this.session.textureManager.releaseTexture(t)), + (this.packedTextureDataCache = new Map()), + this.unpackedTextureDataCache.forEach((t) => this.session.textureManager.releaseTexture(t)), + (this.unpackedTextureDataCache = new Map()); + } + readTexture(t) { + return t.isPacked + ? this.readTexture(this.unpack(t)) + : this.session.backend.glContext.isFloat32DownloadSupported + ? this.session.textureManager.readTexture(t, t.tensor.type, t.channels) + : this.session.textureManager.readUint8TextureAsFloat(Ti(this, t)); + } + async readTextureAsync(t) { + return t.isPacked + ? this.readTextureAsync(this.unpack(t)) + : this.session.backend.glContext.isFloat32DownloadSupported + ? this.session.textureManager.readTextureAsync(t, t.tensor.type, t.channels) + : this.session.textureManager.readUint8TextureAsFloat(Ti(this, t)); + } + pack(t) { + return this.executeProgram(Uu(this, t.tensor), [t.tensor]); + } + unpack(t) { + return this.executeProgram(Yu(this, t.tensor), [t.tensor]); + } + }); + }), + vi, + ee, + Ge = L(() => { + (vi = class { + constructor(t) { + Object.assign(this, t); + } + get cacheKey() { + return ( + this.key || + (this.key = Object.getOwnPropertyNames(this) + .sort() + .map((t) => `${this[t]}`) + .join(';')), + this.key + ); + } + }), + (ee = (t) => new vi(t)); + }), + el, + tl, + rl, + ah, + sh, + nl = L(() => { + Ge(), + xe(), + ae(), + (el = { + name: 'BatchNormalization', + inputNames: ['A', 'Scale', 'B', 'Mean', 'Variance'], + inputTypes: [0, 0, 0, 0, 0], + }), + (tl = (t, e, o) => (sh(e), [t.run({ ...el, cacheHint: o.cacheKey, get: () => ah(t, e, o) }, e)])), + (rl = (t) => { + let e = t.attributes.getFloat('epsilon', 1e-5), + o = t.attributes.getFloat('momentum', 0.9), + i = t.attributes.getInt('spatial', 1); + return ee({ epsilon: e, momentum: o, spatial: i }); + }), + (ah = (t, e, o) => { + let i = q(t.session.backend.glContext.version), + u = e[0].dims.length, + [n, s] = t.calculateTextureWidthAndHeight(e[1].dims, 0), + d = ` + float process(int[${u}] indices) { + vec2 position = offsetToCoords(indices[1], ${n}, ${s}); + float scale = getColorAsFloat(${i.texture2D}(Scale, position)); + float mean = getColorAsFloat(${i.texture2D}(Mean, position)); + float variance = getColorAsFloat(${i.texture2D}(Variance, position)); + float b = getColorAsFloat(${i.texture2D}(B, position)); + + return scale * ( (_A(indices) - mean) / sqrt(variance + float(${o.epsilon})) ) + b; + }`; + return { ...el, output: { dims: e[0].dims, type: e[0].type, textureType: 0 }, shaderSource: d }; + }), + (sh = (t) => { + if (!t || t.length !== 5) throw new Error('BatchNormalization requires 5 inputs.'); + let e = t[0], + o = t[1], + i = t[2], + u = t[3], + n = t[4]; + if ( + e.dims.length < 3 || + o.dims.length !== 1 || + i.dims.length !== 1 || + u.dims.length !== 1 || + n.dims.length !== 1 + ) + throw new Error('invalid input shape.'); + if ( + o.dims[0] !== e.dims[1] || + i.dims[0] !== e.dims[1] || + u.dims[0] !== e.dims[1] || + n.dims[0] !== e.dims[1] + ) + throw new Error('invalid input shape.'); + if ( + (e.type !== 'float32' && e.type !== 'float64') || + (o.type !== 'float32' && o.type !== 'float64') || + (i.type !== 'float32' && i.type !== 'float64') || + (u.type !== 'float32' && u.type !== 'float64') || + (n.type !== 'float32' && n.type !== 'float64') + ) + throw new Error('invalid input tensor types.'); + }); + }), + eo, + pt, + R, + cn, + to, + Vt = L(() => { + (eo = class { + constructor(t, e, o, i) { + (this.glContext = t), + (this.programInfo = e), + (this.inputTextureLayouts = o), + (this.outputTextureLayout = i); + } + }), + (pt = class { + constructor(t) { + this.context = t; + } + }), + (R = class { + constructor(t, e) { + (this.routineBody = t), (this.dependencies = e); + } + }), + (cn = class { + constructor(t, e, o) { + (this.name = t), + o ? (this.dependencies = o) : (this.dependencies = []), + e && (this.routineBody = e); + } + addDependency(t) { + t && this.dependencies.push(t); + } + }), + (to = class { + static returnOrderedNodes(t) { + if (!t || t.length === 0) return []; + if (t.length === 1) return t; + let e = new Set(), + o = new Set(), + i = new Array(); + return this.createOrderedNodes(t, e, o, i), i; + } + static createOrderedNodes(t, e, o, i) { + for (let u = 0; u < t.length; ++u) this.dfsTraverse(t[u], e, o, i); + } + static dfsTraverse(t, e, o, i) { + if (!t || o.has(t.name)) return; + if (e.has(t.name)) + throw new Error( + "Cyclic dependency detected. Can't topologically sort routines needed for shader." + ); + e.add(t.name); + let u = t.dependencies; + if (u && u.length > 0) for (let n = 0; n < u.length; ++n) this.dfsTraverse(u[n], e, o, i); + i.push(t), o.add(t.name), e.delete(t.name); + } + }); + }); +function lh() { + let t = 'add_'; + return { + body: ` + float ${t}(float a, float b) { + return a + b; + } + vec4 ${t}(vec4 v1, vec4 v2) { + return v1 + v2; + } + `, + name: t, + type: 0, + }; +} +function fh() { + let t = 'div_'; + return { + body: ` + float ${t}(float a, float b) { + return a / b; + } + vec4 ${t}(vec4 v1, vec4 v2) { + return v1 / v2; + } + `, + name: t, + type: 0, + }; +} +function ch() { + let t = 'mul_'; + return { + body: ` + float ${t}(float a, float b) { + return a * b; + } + vec4 ${t}(vec4 v1, vec4 v2) { + return v1 * v2; + } + `, + name: t, + type: 0, + }; +} +function ph() { + let t = 'sub_'; + return { + body: ` + float ${t}(float a, float b) { + return a - b; + } + vec4 ${t}(vec4 v1, vec4 v2) { + return v1 - v2; + } + `, + name: t, + type: 0, + }; +} +function dh() { + let t = 'equal_'; + return { + body: ` + float ${t}(float a, float b) { + return float(a == b); + } + vec4 ${t}(vec4 v1, vec4 v2) { + return vec4(equal(v1, v2)); + } + `, + name: t, + type: 0, + }; +} +function hh() { + let t = 'greater_'; + return { + body: ` + float ${t}(float a, float b) { + return float(a > b); + } + vec4 ${t}(vec4 v1, vec4 v2) { + return vec4( v1.r > v2.r , + v1.g > v2.g, + v1.b > v2.b, + v1.a > v2.a ); + } + `, + name: t, + type: 0, + }; +} +function mh() { + let t = 'less_'; + return { + body: ` + float ${t}(float a, float b) { + return float(a < b); + } + vec4 ${t}(vec4 v1, vec4 v2) { + return vec4( v1.r < v2.r , + v1.g < v2.g, + v1.b < v2.b, + v1.a < v2.a ); + } + `, + name: t, + type: 0, + }; +} +function bh() { + let t = 'and_'; + return { + body: ` + float ${t}(float a, float b) { + return float( bool(a) && bool(b) ); + } + vec4 ${t}(vec4 v1, vec4 v2) { + bvec4 b1 = bvec4(v1); + bvec4 b2 = bvec4(v2); + return vec4( b1.r && b2.r , + b1.g && b2.g, + b1.b && b2.b, + b1.a && b2.a ); + } + `, + name: t, + type: 0, + }; +} +function gh() { + let t = 'or_'; + return { + body: ` + float ${t}(float a, float b) { + return float( bool(a) || bool(b) ); + } + vec4 ${t}(vec4 v1, vec4 v2) { + bvec4 b1 = bvec4(v1); + bvec4 b2 = bvec4(v2); + return vec4( b1.r || b2.r , + b1.g || b2.g, + b1.b || b2.b, + b1.a || b2.a ); + } + `, + name: t, + type: 0, + }; +} +function yh() { + let t = 'xor_'; + return { + body: ` + float ${t}(float a, float b) { + return float( bool(a) ^^ bool(b) ); + } + vec4 ${t}(vec4 v1, vec4 v2) { + bvec4 b1 = bvec4(v1); + bvec4 b2 = bvec4(v2); + return vec4( b1.r ^^ b2.r , + b1.g ^^ b2.g, + b1.b ^^ b2.b, + b1.a ^^ b2.a ); + } + `, + name: t, + type: 0, + }; +} +function Th() { + return vh('pow'); +} +function xh() { + let t = 'prelu_'; + return { + body: ` + float ${t}(float a, float b) { + return a < 0.0 ? a * b: a; + } + vec4 ${t}(vec4 v1, vec4 v2) { + return vec4( + v1.r < 0.0 ? v1.r * v2.r: v1.r, + v1.g < 0.0 ? v1.g * v2.g: v1.g, + v1.b < 0.0 ? v1.b * v2.b: v1.b, + v1.a < 0.0 ? v1.a * v2.a: v1.a + ); + } + `, + name: t, + type: 0, + }; +} +function vh(t) { + let e = `${t}_`; + return { + body: ` + float ${e}(float a, float b) { + return ${t}(a, b); + } + vec4 ${e}(vec4 v1, vec4 v2) { + return ${t}(v1, v2); + } + `, + name: e, + type: 0, + }; +} +var dt, + wh, + ol, + il, + al, + sl, + ul, + ll, + fl, + cl, + pl, + dl, + hl, + ml, + bl = L(() => { + fe(), + Vt(), + xe(), + ae(), + (dt = (t, e, o, i = e[0].type, u) => { + let n = t.session.pack ? 2 : 0; + return { + name: o.name, + inputNames: ['A', 'B'], + inputTypes: [n, n], + cacheHint: u, + get: () => wh(t, e, o, i), + }; + }), + (wh = (t, e, o, i = e[0].type) => { + let u = t.session.pack ? 2 : 0, + n = !U.areEqual(e[0].dims, e[1].dims), + s = e[0].dims, + d = t.session.pack; + if (n) { + let a = Xe.calcShape(e[0].dims, e[1].dims, !1); + if (!a) throw new Error("Can't perform binary op on the given tensors"); + s = a; + let l = s.length, + p = e[0].dims.length !== 0 ? e[0].dims.length : 1, + m = e[1].dims.length !== 0 ? e[1].dims.length : 1, + y = e[0].dims.length !== 0 ? 'bcastIndices_A(indices, aindices);' : 'aindices[0] = 0;', + T = e[1].dims.length !== 0 ? 'bcastIndices_B(indices, bindices);' : 'bindices[0] = 0;', + v = q(t.session.backend.glContext.version), + S = d + ? ` + ${o.body} + void main() { + vec4 a = getAAtOutCoords(); + vec4 b = getBAtOutCoords(); + vec4 result = ${o.name}(a, b); + ${v.output} = result; + }` + : ` + ${o.body} + float process(int indices[${l}]) { + int aindices[${p}]; + int bindices[${m}]; + ${y} + ${T} + return ${o.name}(_A(aindices), _B(bindices)); + }`; + return { + name: o.name, + inputNames: ['A', 'B'], + inputTypes: [u, u], + output: { dims: s, type: i, textureType: u }, + shaderSource: S, + hasMain: d, + }; + } + let f = q(t.session.backend.glContext.version), + r = ` + ${o.body} + void main() { + vec4 v1 = ${f.texture2D}(A, TexCoords); + vec4 v2 = ${f.texture2D}(B, TexCoords); + vec4 result = ${o.name}(v1, v2); + ${f.output} = result; + } + `; + return { + name: o.name, + inputNames: ['A', 'B'], + inputTypes: [u, u], + output: { dims: e[0].dims, type: i, textureType: u }, + shaderSource: r, + hasMain: !0, + }; + }), + (ol = (t, e) => [t.run(dt(t, e, lh()), e)]), + (il = (t, e) => [t.run(dt(t, e, bh(), 'bool'), e)]), + (al = (t, e) => [t.run(dt(t, e, fh()), e)]), + (sl = (t, e) => [t.run(dt(t, e, dh(), 'bool'), e)]), + (ul = (t, e) => [t.run(dt(t, e, hh(), 'bool'), e)]), + (ll = (t, e) => [t.run(dt(t, e, mh(), 'bool'), e)]), + (fl = (t, e) => [t.run(dt(t, e, ch()), e)]), + (cl = (t, e) => [t.run(dt(t, e, gh(), 'bool'), e)]), + (pl = (t, e) => [t.run(dt(t, e, Th()), e)]), + (dl = (t, e) => [t.run(dt(t, e, xh()), e)]), + (hl = (t, e) => [t.run(dt(t, e, ph()), e)]), + (ml = (t, e) => [t.run(dt(t, e, yh(), 'bool'), e)]); + }), + gl, + yl, + Oh, + Tl = L(() => { + fe(), + (gl = (t, e, o) => (Oh(e), [t.cast(e[0], o)])), + (yl = (t) => Ve.tensorDataTypeFromProto(t.attributes.getInt('to'))), + (Oh = (t) => { + if (!t || t.length !== 1) throw new Error('Cast requires 1 input.'); + if (t[0].type === 'string') throw new Error('Invalid input type.'); + }); + }), + Ih, + Sh, + xl, + ro, + vl = L(() => { + xe(), + ae(), + Ft(), + br(), + (Ih = (t, e) => ({ + name: 'Concat (packed)', + inputNames: Array.from({ length: t }, (o, i) => `X${i}`), + inputTypes: Array(t).fill(2), + cacheHint: e, + })), + (Sh = (t, e, o, i) => { + let u = o[0].dims.slice(); + if (i >= u.length || i < -1 * u.length) + throw new Error("axis specified for concat doesn't match input dimensionality"); + i < 0 && (i = u.length + i); + let n = u.slice(0); + for (let B = 1; B < o.length; B++) { + let J = o[B].dims.slice(); + for (let Q = 0; Q < u.length; Q++) + if (Q === i) n[i] += J[Q]; + else if (u[Q] !== J[Q]) throw new Error('non concat dimensions must match'); + } + let s = n.length, + d = Nr('coords', s), + f = Ke(s), + r = $t(), + a = o.map((B) => B.dims), + l = St(s), + p = new Array(a.length - 1); + p[0] = a[0][i]; + for (let B = 1; B < p.length; B++) p[B] = p[B - 1] + a[B][i]; + let m = l[i], + y = l.slice(-2), + T = l.join(), + v = `if (${m} < ${p[0]}) { + return getChannel( + getX0(${T}), vec2(${y.join()})); + }`; + for (let B = 1; B < p.length; B++) { + let J = p[B - 1]; + v += ` + if (${m} < ${p[B]} && ${m} >= ${p[B - 1]}) { + return getChannel( + getX${B}(${ro(l, m, J)}), + vec2(${ro(y, m, J)})); + }`; + } + let S = p.length, + E = p[p.length - 1]; + v += ` + return getChannel( + getX${S}(${ro(l, m, E)}), + vec2(${ro(y, m, E)}));`; + let A = q(t.session.backend.glContext.version), + F = ` + ${r} + float getValue(${l.map((B) => 'int ' + B)}) { + ${v} + } + + void main() { + ${f} coords = getOutputCoords(); + int lastDim = coords.${l[s - 1]}; + coords.${l[s - 1]} = coords.${l[s - 2]}; + coords.${l[s - 2]} = lastDim; + + vec4 result = vec4(getValue(${d}), 0., 0., 0.); + + ${d[s - 1]} = ${d[s - 1]} + 1; + if (${d[s - 1]} < ${n[s - 1]}) { + result.g = getValue(${d}); + } + + ${d[s - 2]} = ${d[s - 2]} + 1; + if (${d[s - 2]} < ${n[s - 2]}) { + result.a = getValue(${d}); + } + + ${d[s - 1]} = ${d[s - 1]} - 1; + if (${d[s - 2]} < ${n[s - 2]} && + ${d[s - 1]} < ${n[s - 1]}) { + result.b = getValue(${d}); + } + ${A.output} = result; + } + `; + return { ...e, output: { dims: n, type: o[0].type, textureType: 2 }, shaderSource: F, hasMain: !0 }; + }), + (xl = (t, e, o) => { + let i = Ih(e.length, o.cacheKey); + return { ...i, get: () => Sh(t, i, e, o.axis) }; + }), + (ro = (t, e, o) => { + let i = t.indexOf(e); + return t.map((u, n) => (n === i ? `${u} - ${o}` : u)).join(); + }); + }), + wl, + Ah, + Ph, + Eh, + _l, + Dh, + Lh, + Fh, + Ol, + $h, + Il = L(() => { + Ge(), + ae(), + vl(), + (wl = (t, e, o) => ( + $h(e), t.session.pack && e[0].dims.length > 1 ? [t.run(xl(t, e, o), e)] : [t.run(Eh(t, e, o), e)] + )), + (Ah = (t, e) => ({ + name: 'Concat', + inputNames: Array.from({ length: t }, (o, i) => `X${i}`), + inputTypes: Array(t).fill(0), + cacheHint: e, + })), + (Ph = (t, e, o, i) => { + let u = o[0].dims.slice(); + if (i >= u.length || i < -1 * u.length) + throw new Error("axis specified for concat doesn't match input dimensionality"); + i < 0 && (i = u.length + i); + let n = u.slice(0); + for (let m = 1; m < o.length; m++) { + let y = o[m].dims.slice(); + for (let T = 0; T < u.length; T++) + if (T === i) n[i] += y[T]; + else if (u[T] !== y[T]) throw new Error('non concat dimensions must match'); + } + let s = n.length, + d = new Array(o.length), + f = 0; + for (let m = 0; m < d.length; ++m) (f += o[m].dims[i]), (d[m] = f); + let r = ''; + o.length < 5 ? (r = _l(d)) : (r = Dh(d)); + let a = Lh(o.length, s), + l = Fh(d), + p = ` + ${a} + ${l} + ${r} + float process(int indices[${s}]) { + int textureIndex = getTextureWhereDataResides (indices[${i}]); + + if(textureIndex != 0) { + indices[${i}] = indices[${i}] - int(getSizeInConcatAxisValueFromIndex(textureIndex-int(1))); + } + + return fetchDataFromCorrectTexture(textureIndex, indices); + }`; + return { ...e, output: { dims: n, type: o[0].type, textureType: 0 }, shaderSource: p }; + }), + (Eh = (t, e, o) => { + let i = Ah(e.length, o.cacheKey); + return { ...i, get: () => Ph(t, i, e, o.axis) }; + }), + (_l = (t) => `int getTextureWhereDataResides(int index) { + ${t + .map( + (e, o) => `if(index<${e}) {return ${o};} +` + ) + .join('')} + }`), + (Dh = (t) => _l(t)), + (Lh = (t, e) => { + let o = [`float fetchDataFromCorrectTexture(int textureIndex, int indices[${e}]) {`]; + for (let i = 0; i < t; ++i) + i === 0 + ? o.push(` if (textureIndex == ${i}) { return _X${i}(indices); }`) + : i === t - 1 + ? o.push(` else { return _X${i}(indices); }`) + : o.push(` else if (textureIndex == ${i}) { return _X${i}(indices); }`); + return ( + o.push(' }'), + o.join(` +`) + ); + }), + (Fh = (t) => { + let e = ['int getSizeInConcatAxisValueFromIndex(int index) {']; + for (let o = 0; o < t.length; ++o) + o === 0 + ? e.push(` if (index == ${o}) { return ${t[o]}; }`) + : o === t.length - 1 + ? e.push(` else { return ${t[o]}; }`) + : e.push(` else if (index == ${o}) { return ${t[o]}; }`); + return ( + e.push(' }'), + e.join(` +`) + ); + }), + (Ol = (t) => ee({ axis: t.attributes.getInt('axis') })), + ($h = (t) => { + if (!t || t.length < 1) throw new Error('too few inputs'); + let e = t[0].type, + o = t[0].dims.length; + if (e === 'string') throw new Error('string tensor is not supported yet'); + for (let i of t) { + if (i.type !== e) throw new Error('input tensors should be one type'); + if (i.dims.length !== o) throw new Error('input tensors should have the same shape'); + } + }); + }); +function Ch() { + return ht('abs'); +} +function kh() { + return ht('acos'); +} +function Bh() { + return ht('asin'); +} +function Nh() { + return ht('atan'); +} +function Rh() { + return ht('ceil'); +} +function Mh() { + return ht('cos'); +} +function Gh(t) { + let e = 'elu'; + return { + body: ` + const float alpha = float(${t}); + + float ${e}_(float a) { + return a >= 0.0 ? a: (exp(a) - 1.0) * alpha; + } + vec4 ${e}_(vec4 v) { + return vec4(${e}_(v.x), ${e}_(v.y), ${e}_(v.z), ${e}_(v.w)); + } + `, + name: e, + type: 0, + }; +} +function Uh() { + return ht('exp'); +} +function zh() { + return ht('floor'); +} +function wi(t, e) { + let o = 'clip'; + return { + body: ` + const float min = float(${t}); + const float max = float(${e}); + + float ${o}_(float a) { + return clamp(a, min, max); + } + vec4 ${o}_(vec4 v) { + return clamp(v, min, max); + } + `, + name: o, + type: 0, + }; +} +function Vh() { + let t = 'indentity'; + return { + body: ` + float ${t}_(float a) { + return a; + } + vec4 ${t}_(vec4 v) { + return v; + } + `, + name: t, + type: 0, + }; +} +function Wh(t) { + let e = 'leakyRelu'; + return { + body: ` + const float alpha = float(${t}); + + float ${e}_(float a) { + return a < 0.0 ? a * alpha : a; + } + vec4 ${e}_(vec4 v) { + return vec4(${e}_(v.x), ${e}_(v.y), ${e}_(v.z), ${e}_(v.w)); + } + `, + name: e, + type: 0, + }; +} +function Hh() { + return ht('log'); +} +function qh() { + let t = 'neg'; + return { + body: ` + float ${t}_(float a) { + return -a; + } + vec4 ${t}_(vec4 v) { + return -v; + } + `, + name: t, + type: 0, + }; +} +function jh() { + let t = 'not'; + return { + body: ` + float ${t}_(float a) { + return float( ! bool(a) ); + } + bool ${t}_(bool a) { + return !a; + } + vec4 ${t}_(vec4 v) { + return vec4(!bool(v.x), !bool(v.y), !bool(v.z), !bool(v.w)); + } + bvec4 ${t}_(bvec4 v) { + return bvec4(!v.x, !v.y, !v.z, !v.w); + } + `, + name: t, + type: 0, + }; +} +function Yh() { + return ht('sin'); +} +function _i() { + let t = 'relu'; + return { + body: ` + float ${t}_(float a) { + return max( a, 0.0 ); + } + vec4 ${t}_(vec4 v) { + return max( v, 0.0 ); + } + `, + name: t, + type: 0, + }; +} +function Oi() { + let t = 'sigmoid'; + return { + body: ` + float ${t}_(float a) { + return 1.0 / (1.0 + exp(-a)); + } + vec4 ${t}_(vec4 v) { + return 1.0 / (1.0 + exp(-v)); + } + `, + name: t, + type: 0, + }; +} +function Xh() { + return ht('sqrt'); +} +function Kh() { + return ht('tan'); +} +function Jh() { + let t = 'tanh'; + return { + body: ` + float ${t}_(float a) { + a = clamp(a, -10., 10.); + a = exp(2.*a); + return (a - 1.) / (a + 1.); + } + vec4 ${t}_(vec4 v) { + v = clamp(v, -10., 10.); + v = exp(2.*v); + return (v - 1.) / (v + 1.); + } + `, + name: t, + type: 0, + }; +} +function ht(t) { + return { + body: ` + float ${t}_(float a) { + return ${t}(a); + } + vec4 ${t}_(vec4 v) { + return ${t}(v); + } + `, + name: t, + type: 0, + }; +} +var Zh, + Pe, + Sl, + Al, + Pl, + El, + Ii, + Dl, + Ll, + Qh, + Fl, + $l, + Cl, + kl, + Bl, + Nl, + Si, + Rl, + Ml, + Gl, + Ul, + zl, + Vl, + Wl, + Hl, + ql, + jl, + Yl, + Ai = L(() => { + Ge(), + fe(), + Vt(), + xe(), + ae(), + (Zh = (t, e, o, i) => { + let u = t.session.pack ? 2 : 0, + n = q(t.session.backend.glContext.version); + return { + ...e, + output: { dims: o.dims, type: o.type, textureType: u }, + shaderSource: ` + ${i.body} + void main() { + vec4 v = ${n.texture2D}(A, TexCoords); + v = ${i.name}_(v); + ${n.output} = v; + } + `, + hasMain: !0, + }; + }), + (Pe = (t, e, o, i) => { + let u = t.session.pack ? 2 : 0, + n = { name: o.name, inputTypes: [u], inputNames: ['A'], cacheHint: i }; + return { ...n, get: () => Zh(t, n, e, o) }; + }), + (Sl = (t, e) => [t.run(Pe(t, e[0], Ch()), e)]), + (Al = (t, e) => [t.run(Pe(t, e[0], kh()), e)]), + (Pl = (t, e) => [t.run(Pe(t, e[0], Bh()), e)]), + (El = (t, e) => [t.run(Pe(t, e[0], Nh()), e)]), + (Ii = (t, e, o) => [t.run(Pe(t, e[0], wi(o.min, o.max), o.cacheKey), e)]), + (Dl = (t) => ee({ min: t.attributes.getFloat('min', dr), max: t.attributes.getFloat('max', hr) })), + (Ll = (t, e) => { + let o = Qh(t, e); + return Ii(t, [e[0]], o); + }), + (Qh = (t, e) => { + if (e.length >= 3 && (!t.session.isInitializer(e[1].dataId) || !t.session.isInitializer(e[2].dataId))) + throw new Error('dynamic clip attributes are not allowed'); + let o = e.length >= 3 ? e[1].numberData[0] : dr, + i = e.length >= 3 ? e[2].numberData[0] : hr; + return ee({ min: o, max: i }); + }), + (Fl = (t, e) => [t.run(Pe(t, e[0], Rh()), e)]), + ($l = (t, e) => [t.run(Pe(t, e[0], Mh()), e)]), + (Cl = (t, e, o) => [t.run(Pe(t, e[0], Gh(o.alpha), o.cacheKey), e)]), + (kl = (t) => ee({ alpha: t.attributes.getFloat('alpha', 1) })), + (Bl = (t, e) => [t.run(Pe(t, e[0], Uh()), e)]), + (Nl = (t, e) => [t.run(Pe(t, e[0], zh()), e)]), + (Si = (t, e) => [t.run(Pe(t, e[0], Vh()), e)]), + (Rl = (t, e, o) => [t.run(Pe(t, e[0], Wh(o.alpha), o.cacheKey), e)]), + (Ml = (t) => ee({ alpha: t.attributes.getFloat('alpha', 0.01) })), + (Gl = (t, e) => [t.run(Pe(t, e[0], Hh()), e)]), + (Ul = (t, e) => [t.run(Pe(t, e[0], qh()), e)]), + (zl = (t, e) => [t.run(Pe(t, e[0], jh()), e)]), + (Vl = (t, e) => [t.run(Pe(t, e[0], _i()), e)]), + (Wl = (t, e) => [t.run(Pe(t, e[0], Oi()), e)]), + (Hl = (t, e) => [t.run(Pe(t, e[0], Yh()), e)]), + (ql = (t, e) => [t.run(Pe(t, e[0], Xh()), e)]), + (jl = (t, e) => [t.run(Pe(t, e[0], Kh()), e)]), + (Yl = (t, e) => [t.run(Pe(t, e[0], Jh()), e)]); + }); +function Ct(t) { + let e; + switch (t.activation) { + case 'Relu': + e = _i(); + break; + case 'Sigmoid': + e = Oi(); + break; + case 'Clip': + e = wi(t.clipMin, t.clipMax); + break; + default: + return { activationFunction: '', applyActivation: '' }; + } + let o = e.name, + i = e.body, + u = `value = ${o}_(value);`; + return { activationFunction: i, applyActivation: u }; +} +var Rr, + gr = L(() => { + fe(), + Ai(), + (Rr = (t) => { + let e = t.getString('activation', ''); + if (e === 'Clip') { + let [o, i] = t.getFloats('activation_params', [dr, hr]); + return { activation: e, clipMax: i, clipMin: o, activationCacheKey: `${e}:${o},${i}` }; + } + return { activation: e, activationCacheKey: e }; + }); + }), + tm, + rm, + Xl, + Kl = L(() => { + ut(), + xe(), + ae(), + no(), + gr(), + (tm = (t, e) => ({ + name: 'GroupedConv', + inputNames: t ? ['X', 'W', 'Bias'] : ['X', 'W'], + inputTypes: t ? [0, 0, 0] : [0, 0], + cacheHint: e, + })), + (rm = (t, e, o, i) => { + let u = e.length > 2 ? 'value += getBias(output_channel);' : '', + n = e[0].dims.slice(), + s = e[1].dims.slice(), + d = s[0] / i.group; + ce.verbose( + 'GroupedConv', + `autpPad:${i.autoPad}, dilations:${i.dilations}, group:${i.group}, kernelShape:${i.kernelShape}, pads:${i.pads}, strides:${i.strides}` + ); + let f = Mr(n, s, i.dilations, i.pads, i.strides), + r = q(t.session.backend.glContext.version), + { activationFunction: a, applyActivation: l } = Ct(i), + p = ` + const ivec2 strides = ivec2(${i.strides[0]}, ${i.strides[1]}); + const ivec2 pads = ivec2(${i.pads[0]}, ${i.pads[1]}); + ${a} + void main() { + ivec4 coords = getOutputCoords(); + int batch = coords.x; + int output_channel = coords.y; + ivec2 xRCCorner = coords.zw * strides - pads; + int group_id = output_channel / ${d}; + + float value = 0.0; + for (int wInChannel = 0; wInChannel < ${s[1]}; wInChannel++) { + int input_channel = group_id * ${s[1]} + wInChannel; + for (int wHeight = 0; wHeight < ${s[2]}; wHeight++) { + int xHeight = xRCCorner.x + wHeight * ${i.dilations[0]}; + + if (xHeight < 0 || xHeight >= ${n[2]}) { + continue; + } + + for (int wWidth = 0; wWidth < ${s[3]}; wWidth++) { + int xWidth = xRCCorner.y + wWidth * ${i.dilations[1]}; + if (xWidth < 0 || xWidth >= ${n[3]}) { + continue; + } + + float xVal = getX(batch, input_channel, xWidth, xHeight); + float wVal = getW(output_channel, wInChannel, wWidth, wHeight); + value += xVal*wVal; + } + } + } + ${u} + ${l} + ${r.output} = vec4(value, .0, .0, .0); + } +`; + return { ...o, output: { dims: f, type: e[0].type, textureType: 0 }, shaderSource: p, hasMain: !0 }; + }), + (Xl = (t, e, o) => { + let i = tm(e.length > 2, o.cacheKey); + return { ...i, get: () => rm(t, e, i, o) }; + }); + }), + nm, + om, + Jl, + Zl = L(() => { + xe(), + ae(), + br(), + (nm = (t) => ({ name: 'Im2Col (packed)', inputNames: ['A'], inputTypes: [2], cacheHint: t })), + (om = (t, e, o, i, u, n) => { + let s = o.dims, + d = i.dims, + f = 2, + r = 3, + a = u.length, + l = [d[1] * d[2] * d[3], u[2] * u[3]], + p = d[2] * d[3], + m = $t(), + y = q(t.session.backend.glContext.version), + T = ''; + for (let S = 0; S <= 1; S++) + for (let E = 0; E <= 1; E++) + T += ` + blockIndex = rc.x + ${E}; + pos = rc.y + ${S}; + + if(blockIndex < ${l[1]} && pos < ${l[0]}) { + offsetY = int(blockIndex / (${u[a - 1]})) * ${n.strides[0]} - + ${n.pads[0]}; + d0 = offsetY + ${n.dilations[0]} * (imod(pos, ${p}) / ${d[2]}); + + if(d0 < ${s[f]} && d0 >= 0) { + offsetX = imod(blockIndex, ${u[a - 1]}) * ${n.strides[1]} - + ${n.pads[1]}; + d1 = offsetX + ${n.dilations[1]} * imod(imod(pos, ${p}), ${d[2]}); + + if(d1 < ${s[r]} && d1 >= 0) { + + ch = int(float(pos)/ ${p}.); + innerDims = vec2(d0, d1); + result[${S * 2 + E}] = getChannel( + getA(0, ch, int(innerDims.x), + int(innerDims.y)), innerDims); + } + } + } + + `; + let v = ` + ${m} + + void main() { + ivec2 rc = getOutputCoords(); + vec4 result = vec4(0.0); + int blockIndex, pos, offsetY, d0, offsetX, d1, ch; + vec2 innerDims; + ${T} + ${y.output} = result; + } + `; + return { ...e, output: { dims: l, type: o.type, textureType: 2 }, shaderSource: v, hasMain: !0 }; + }), + (Jl = (t, e, o, i, u) => { + let n = nm(u.cacheKey); + return { ...n, get: () => om(t, n, e, o, i, u) }; + }); + }); +function am(t, e, o) { + let i = e[0].dims, + u = e[1].dims, + n = Xe.calcShape(i, u, !0); + if (!n) throw new Error("Can't use matmul on the given tensors"); + let s = Ke(n.length), + d = St(), + { activationFunction: f, applyActivation: r } = Ct(o), + a = e.length > 2, + l = a ? 'value += getBiasForMatmul();' : '', + p = a ? `${Ei(s, d, e[2].dims, n, !1)}` : '', + m = n.length, + y = i.length, + T = u.length, + v = i[i.length - 1], + S = ` + ${f} + ${p} + float process(int indices[${m}]) { + int a[${y}]; + int b[${T}]; + bcastMatmulIndices_A(indices, a); + bcastMatmulIndices_B(indices, b); + + float value; + for (int k=0; k<${v}; ++k) { + a[${y - 1}] = k; + b[${T - 2}] = k; + value += _A(a) * _B(b); + } + ${l} + ${r} + return value; + }`; + return { ...t, output: { dims: n, type: e[0].type, textureType: 0 }, shaderSource: S }; +} +function Pi(t, e) { + let o = im(t.length > 2, e.activationCacheKey); + return { ...o, get: () => am(o, t, e) }; +} +function Ei(t, e, o, i, u) { + let n = '', + s = o.length, + d = i.length, + f = d - s; + d < 2 && s > 0 ? (n = 'coords') : (n = o.map((p, m) => `coords.${e[m + f]}`).join(', ')); + let r = Xe.getBroadcastDims(o, i).map((p) => `coords.${e[p + f]} = 0;`).join(` +`), + a = U.size(o) === 1, + l = 'vec4(outputValue.xx, outputValue.yy)'; + return ( + a && (l = 'vec4(outputValue.x)'), + u + ? ` +vec4 getBiasForMatmul() { + ${t} coords = getOutputCoords(); + ${r} + vec4 outputValue = getBias(${n}); + return ${l}; +}` + : ` +float getBiasForMatmul() { + ${t} coords = getOutputCoords(); + ${r} + return getBias(coords.x); +}` + ); +} +var Ql, + ef, + im, + sm, + oo = L(() => { + fe(), + ae(), + Ft(), + gr(), + Di(), + (Ql = (t, e, o) => (sm(e), t.session.pack ? [t.run(io(t, e, o), e)] : [t.run(Pi(e, o), e)])), + (ef = (t) => Rr(t.attributes)), + (im = (t, e) => ({ + name: 'MatMul', + inputNames: t ? ['A', 'B', 'Bias'] : ['A', 'B'], + inputTypes: t ? [0, 0, 0] : [0, 0], + cacheHint: e, + })), + (sm = (t) => { + if (!t || t.length !== 2) throw new Error('MatMul requires 2 inputs.'); + if (t[0].dims[t[0].dims.length - 1] !== t[1].dims[t[1].dims.length - 2]) + throw new Error('shared dimension does not match.'); + if ( + (t[0].type !== 'float32' && t[0].type !== 'float64') || + (t[1].type !== 'float32' && t[1].type !== 'float64') + ) + throw new Error('inputs should be float type'); + if (t[0].type !== t[1].type) throw new Error('inputs types should match'); + }); + }); +function fm(t, e, o, i) { + let u = [], + n = [], + s = o[0].dims, + d = o[1].dims, + f = s.length, + r = d.length, + a = i.length, + l = a - f, + p = a - r; + (u = s.map((E, A) => `coords.${e[A + l]}`)), + (u[f - 1] = 'i*2'), + u.join(', '), + (n = d.map((E, A) => `coords.${e[A + p]}`)), + (n[r - 2] = 'i*2'), + n.join(', '); + let m = Xe.getBroadcastDims(s, i), + y = Xe.getBroadcastDims(d, i), + T = m.map((E) => `coords.${e[E + l]} = 0;`).join(` +`), + v = y.map((E) => `coords.${e[E + p]} = 0;`).join(` +`), + S = `int lastDim = coords.${e[a - 1]}; + coords.${e[a - 1]} = coords.${e[a - 2]}; + coords.${e[a - 2]} = lastDim;`; + return ` +vec4 getAAtOutCoordsMatmul(int i) { + ${t} coords = getOutputCoords(); + ${S} + ${T} + vec4 outputValue = getA(${u}); + return outputValue; +} + +vec4 getBAtOutCoordsMatmul(int i) { + ${t} coords = getOutputCoords(); + ${S} + ${v} + vec4 outputValue = getB(${n}); + return outputValue; +}`; +} +function cm(t, e) { + let o = ''; + for (let i = 0; i < e - 2; i++) o += `rc.${t[i]}, `; + return (o += `rc.${t[e - 2]}, i*2`), o; +} +function pm(t, e) { + let o = ''; + for (let i = 0; i < e - 2; i++) o += `rc.${t[i]}, `; + return (o += `i*2, rc.${t[e - 1]}`), o; +} +var um, + lm, + io, + Di = L(() => { + fe(), + xe(), + ae(), + Ft(), + gr(), + oo(), + (um = (t, e) => ({ + name: 'MatMul (packed)', + inputNames: t ? ['A', 'B', 'Bias'] : ['A', 'B'], + inputTypes: t ? [2, 2, 2] : [2, 2], + cacheHint: e, + })), + (lm = (t, e, o, i) => { + let u = o.length > 2, + n = u ? 'value += getBiasForMatmul();' : '', + s = o[0].dims, + d = o[1].dims, + f = Xe.calcShape(s, d, !0), + r = !U.areEqual(o[0].dims, o[1].dims); + if (!f) throw new Error("Can't use matmul on the given tensors"); + let a = s[s.length - 1], + l = Math.ceil(a / 2), + p = s.length, + m = d.length, + y = q(t.session.backend.glContext.version), + T = Ke(f.length), + v = f.length, + S = St(), + { activationFunction: E, applyActivation: A } = Ct(i), + F = u ? `${Ei(T, S, o[2].dims, f, !0)}` : '', + B = r ? `${fm(T, S, o, f)}` : '', + J = r ? 'getAAtOutCoordsMatmul(i)' : `getA(${cm(S, p)})`, + Q = r ? 'getBAtOutCoordsMatmul(i)' : `getB(${pm(S, m)})`, + re = r + ? '' + : `${T} rc = + getOutputCoords(); int lastDim = rc.${S[v - 1]}; rc.${S[v - 1]} = + rc.${S[v - 2]}; rc.${S[v - 2]} = lastDim; + `, + V = ` + ${B} + ${F} + ${E} + void main() { + ${re} + + vec4 value = vec4(0); + for (int i = 0; i < ${l}; i++) { + vec4 a = ${J}; + vec4 b = ${Q}; + + value += (a.rrbb * b.rgrg); + value += (a.ggaa * b.baba); + } + ${n} + ${A} + ${y.output} = value; + }`; + return { ...e, output: { dims: f, type: o[0].type, textureType: 2 }, shaderSource: V, hasMain: !0 }; + }), + (io = (t, e, o) => { + let i = um(e.length > 2, o.activationCacheKey); + return { ...i, get: () => lm(t, i, e, o) }; + }); + }), + tf, + rf = L(() => { + no(), + Zl(), + Di(), + (tf = (t, e, o) => { + let i = e[0].dims, + u = e[1].dims, + n = Mr(i, u, o.dilations, o.pads, o.strides), + s = t.run(Jl(t, e[0], e[1], n, o), [e[0]]), + d = t.reshapePacked(e[1], [u[0], u[1] * u[2] * u[3]]), + f = e.length === 3 ? [d, s, e[2]] : [d, s], + r = t.run(io(t, f, o), f); + return t.reshapePacked(r, n); + }); + }), + dm, + hm, + nf, + Li, + Fi = L(() => { + ae(), + (dm = (t) => ({ name: 'Im2Col', inputNames: ['X'], inputTypes: [0], cacheHint: t })), + (hm = (t, e, o, i, u, n) => { + let s = o.dims, + d = i.dims, + f = u.length, + r = Li(s, d, u, 4), + a = ` + const int XC = ${s[1]}; + const int XH = ${s[2]}; + const int XW = ${s[3]}; + const int KH = ${n.kernelShape[0]}; + const int KW = ${n.kernelShape[1]}; + const int dilationH = ${n.dilations[0]}; + const int dilationW = ${n.dilations[1]}; + const int strideH = ${n.strides[0]}; + const int strideW = ${n.strides[1]}; + const int padH = ${n.pads[0]}; + const int padW = ${n.pads[1]}; + const int KHKW = KH*KW; + const int XCKHKW = XC * KHKW; + const int outputChannels = 4; + vec4 process(int indices[${f}]) { + int b = indices[0]; // batch size + int oh = indices[1] * strideH - padH; //output height + int ow = indices[2] * strideW - padW; //output width + int p = indices[3] * outputChannels; //patch + vec4 value = vec4(0.0); + for(int i=0; i < outputChannels; ++i) { + if(p < XCKHKW) { + int patchC = p / KHKW; + int patchH = (p - patchC*KHKW) / KW; + int patchW = (p - patchC*KHKW) - patchH * KW; + int xh2 = oh + patchH * dilationH; + int xw2 = ow + patchW * dilationW; + int x[${s.length}]; + x[0] = b; + x[1] = patchC; + x[2] = xh2; + x[3] = xw2; + if(xh2 >= 0 && + xh2 < XH && + xw2 >= 0 && + xw2 < XW) { + value[i] = _X(x); + } + } + ++p; + } + return value; + } + `; + return { ...e, output: { dims: r, type: o.type, textureType: 4 }, shaderSource: a }; + }), + (nf = (t, e, o, i, u) => { + let n = dm(u.cacheKey); + return { ...n, get: () => hm(t, n, e, o, i, u) }; + }), + (Li = (t, e, o, i = 4) => [o[0], o[2], o[3], Math.ceil((t[1] * e[2] * e[3]) / i)]); + }), + mm, + bm, + of, + af = L(() => { + fe(), + xe(), + ae(), + gr(), + Fi(), + (mm = (t, e) => ({ + name: 'ConvDotProduct', + inputNames: t ? ['Im2Col', 'K', 'B'] : ['Im2Col', 'K'], + inputTypes: t ? [0, 4, 0] : [0, 4], + cacheKey: e.activationCacheKey, + })), + (bm = (t, e, o, i, u) => { + let n = o[0].dims, + s = o[1].dims, + d = [s[0], Math.ceil((n[1] * s[2] * s[3]) / 4)], + f = Li(n, s, i), + [r, a] = t.calculateTextureWidthAndHeight(d, 4), + l = U.computeStrides(f), + [p, m] = t.calculateTextureWidthAndHeight(f, 4), + y = i.length, + T = o.length < 3 ? '0.0' : '_B(b)', + v = Math.ceil((n[1] * s[2] * s[3]) / 4), + { activationFunction: S, applyActivation: E } = Ct(u), + A = q(t.session.backend.glContext.version), + F = ` +${S} +float process(int indices[${y}]) { + int b[1]; + b[0] = indices[1]; + int im2col[4]; + im2col[0] = indices[0]; + im2col[1] = indices[2]; + im2col[2] = indices[3]; + int im2colOffset = im2col[0] * ${l[0]} + im2col[1] * ${l[1]} + im2col[2] * ${l[2]}; + int kernelOffset = indices[1] * ${d[1]}; + float value = ${T}; + for (int i = 0; i < ${v}; ++i) { + vec2 im2colCoords = offsetToCoords(im2colOffset, ${p}, ${m}); + vec2 kernelCoords = offsetToCoords(kernelOffset, ${r}, ${a}); + value += dot(${A.texture2D}(Im2Col, im2colCoords), ${A.texture2D}(K, kernelCoords)); + ++im2colOffset; + ++kernelOffset; + } + ${E} + return value; +}`; + return { ...e, output: { dims: i, type: o[0].type, textureType: 0 }, shaderSource: F }; + }), + (of = (t, e, o, i) => { + let u = mm(e.length > 2, i); + return { ...u, get: () => bm(t, u, e, o, i) }; + }); + }), + Mr, + $i, + gm, + ym, + Tm, + xm, + Ci, + vm, + no = L(() => { + Ge(), + fe(), + Kl(), + rf(), + af(), + gr(), + Fi(), + oo(), + (Mr = (t, e, o, i, u) => { + let n = t[0], + s = t.slice(2), + d = s.length, + f = e[0], + r = e.slice(2).map((l, p) => l + (l - 1) * (o[p] - 1)), + a = s.map((l, p) => l + i[p] + i[p + d]).map((l, p) => Math.floor((l - r[p] + u[p]) / u[p])); + return [n, f].concat(...a); + }), + ($i = (t, e, o) => (vm(e, o), gm(t, e, o))), + (gm = (t, e, o) => { + let i = xm(o, e), + u = t.session.pack, + n = i.kernelShape[0] === 1 && i.kernelShape[1] === 1; + return i.group > 1 + ? [t.run(Xl(t, e, i), e)] + : n && u + ? [ym(t, e, i)] + : u && e[0].dims.length === 4 && e[0].dims[0] === 1 && !n + ? [tf(t, e, i)] + : [Tm(t, e, i)]; + }), + (ym = (t, e, o) => { + let i = e[0].dims, + u = e[1].dims, + n = Mr(i, u, o.dilations, o.pads, o.strides), + s = t.reshapeUnpacked(e[0], [i[1], i[2] * i[3]]), + d = t.reshapeUnpacked(e[1], [u[0], u[1]]), + f = e.length > 2 ? [d, s, e[2]] : [d, s], + r = t.run(Pi(f, o), f); + return t.reshapeUnpacked(r, n); + }), + (Tm = (t, e, o) => { + let i = e[0].dims, + u = e[1].dims, + n = Mr(i, u, o.dilations, o.pads, o.strides), + s = t.run(nf(t, e[0], e[1], n, o), [e[0]]), + d = e.length === 3 ? [s, e[1], e[2]] : [s, e[1]]; + return t.run(of(t, e, n, o), d); + }), + (xm = (t, e) => { + let o = t.kernelShape.slice(); + if (t.kernelShape.length === 0) for (let n = 2; n < e[1].dims.length; ++n) o.push(e[1].dims[n]); + let i = t.pads.slice(); + pr.adjustPadsBasedOnAutoPad(e[0].dims, t.strides, t.dilations, o, i, t.autoPad); + let u = Object.assign({}, t); + return Object.assign(u, { kernelShape: o, pads: i, cacheKey: t.cacheKey }), u; + }), + (Ci = (t) => { + let e = t.attributes, + o = Rr(e), + i = e.getString('auto_pad', 'NOTSET'), + u = e.getInts('dilations', [1, 1]), + n = e.getInt('group', 1), + s = e.getInts('kernel_shape', []), + d = e.getInts('pads', [0, 0, 0, 0]), + f = e.getInts('strides', [1, 1]); + return ee({ autoPad: i, dilations: u, group: n, kernelShape: s, pads: d, strides: f, ...o }); + }), + (vm = (t, e) => { + if (!t || (t.length !== 2 && t.length !== 3)) throw new Error('Conv requires 2 or 3 inputs'); + if (t[0].dims.length !== 4 || t[1].dims.length !== 4) + throw new Error('currently only support 2-dimensional conv'); + let o = t[0].dims[1], + i = t[1].dims[1] * e.group; + if (o !== i) throw new Error('FILTER_IN_CHANNEL should be equal to DATA_CHANNEL'); + if (t.length === 3 && (t[2].dims.length !== 1 || t[1].dims[0] !== t[2].dims[0])) + throw new Error('invalid bias'); + let u = t[0].dims.length - 2; + if (e.dilations.length !== u) throw new Error(`dilations should be ${u}D`); + if (e.strides.length !== u) throw new Error(`strides should be ${u}D`); + if (e.pads.length !== u * 2) throw new Error(`pads should be ${u * 2}D`); + if (e.kernelShape.length !== 0 && e.kernelShape.length !== t[1].dims.length - 2) + throw new Error('invalid kernel shape'); + if (t[0].type !== 'float32' || t[1].type !== 'float32') + throw new Error('Conv input(X,W) should be float tensor'); + if (t.length === 3 && t[2].type !== 'float32') + throw new Error('Conv input(bias) should be float tensor'); + }); + }), + wm, + _m, + Om, + sf, + Im, + Sm, + Am, + Pm, + Em, + Dm, + uf, + Lm, + lf = L(() => { + Ge(), + xe(), + ae(), + gr(), + (wm = (t, e, o, i, u, n) => (t - 1) * e + o + (i - 1) * u + 1 - n), + (_m = (t, e, o, i, u) => { + let n = Math.floor(t / 2); + e === 'SAME_UPPER' ? ((o[i] = n), (o[u] = t - n)) : e === 'SAME_LOWER' && ((o[i] = t - n), (o[u] = n)); + }), + (Om = (t, e, o, i, u, n, s, d) => { + let f = t.length - 2, + r = d.length === 0; + for (let a = 0; a < f; ++a) { + let l = r ? t[a + 2] * n[a] : d[a], + p = wm(t[a + 2], n[a], u[a], e[a], o[a], l); + _m(p, i, u, a, a + f), + r && d.push(n[a] * (t[a + 2] - 1) + s[a] + (e[a] - 1) * o[a] + 1 - u[a] - u[a + f]); + } + }), + (sf = (t, e, o) => (Lm(e, o), Im(t, e, o))), + (Im = (t, e, o) => { + let i = Dm(o, e); + return [Em(t, e, i)]; + }), + (Sm = (t, e) => ({ + name: 'ConvTranspose', + inputNames: t ? ['X', 'W', 'B'] : ['X', 'W'], + inputTypes: t ? [0, 0, 0] : [0, 0], + cacheHint: e, + })), + (Am = (t, e, o, i) => { + let u = e.length > 2 ? 'getB(output_channel)' : '0.0', + n = e[0].dims, + s = e[1].dims, + d = s[1], + f = s[0] / i.group, + r = [e[0].dims[0], e[1].dims[1] * i.group, ...i.outputShape], + a = q(t.session.backend.glContext.version), + { activationFunction: l, applyActivation: p } = Ct(i), + m = ` + const ivec2 strides = ivec2(${i.strides[0]}, ${i.strides[1]}); + const ivec2 pads = ivec2(${i.pads[0]}, ${i.pads[1]}); + ${l} + void main() { + ivec4 coords = getOutputCoords(); + int batch = coords.x; + int output_channel = coords.y; + + ivec2 loc = coords.zw + pads; + + int group_id = output_channel / ${d}; + int wOutChannel = output_channel - group_id * ${d}; + + float value = ${u}; + for (int inChannelOffset = 0; inChannelOffset < ${f}; inChannelOffset++) { + int input_channel = group_id * ${f} + inChannelOffset; + for (int wWOff = 0; wWOff < ${s[2]}; wWOff++) { + for (int wHOff = 0; wHOff < ${s[3]}; wHOff++) { + ivec2 wOff = ivec2(wWOff * ${i.dilations[0]}, wHOff * ${i.dilations[1]}); + ivec2 wLoc = loc - wOff; + ivec2 wLocIn = wLoc / strides; + if ( + wLocIn * strides == wLoc && + wLocIn.x >= 0 && wLocIn.x < ${n[2]} && + wLocIn.y >= 0 && wLocIn.y < ${n[3]} + ) { + float xVal = getX(batch, input_channel, wLocIn.y, wLocIn.x); + float wVal = getW(input_channel, wOutChannel, wHOff, wWOff); + value += xVal * wVal; + } + } + } + } + ${p} + ${a.output} = vec4(value, .0, .0, .0); + } +`; + return { ...o, output: { dims: r, type: e[0].type, textureType: 0 }, shaderSource: m, hasMain: !0 }; + }), + (Pm = (t, e, o) => { + let i = Sm(e.length > 2, o.cacheKey); + return { ...i, get: () => Am(t, e, i, o) }; + }), + (Em = (t, e, o) => t.run(Pm(t, e, o), e)), + (Dm = (t, e) => { + let o = t.kernelShape.slice(); + if (t.kernelShape.length === 0) for (let d = 2; d < e[1].dims.length; ++d) o.push(e[1].dims[d]); + let i = t.pads.slice(), + u = t.outputShape.slice(), + n = e[0].dims; + Om(n, o, t.dilations, t.autoPad, i, t.strides, t.outputPadding, u); + let s = Object.assign({}, t); + return Object.assign(s, { kernelShape: o, pads: i, outputShape: u, cacheKey: t.cacheKey }), s; + }), + (uf = (t) => { + let e = t.attributes, + o = Rr(e), + i = e.getString('auto_pad', 'NOTSET'), + u = e.getInts('dilations', [1, 1]), + n = e.getInt('group', 1), + s = e.getInts('kernel_shape', []), + d = e.getInts('output_padding', [0, 0]), + f = e.getInts('output_shape', []), + r = e.getInts('pads', [0, 0, 0, 0]), + a = e.getInts('strides', [1, 1]); + return ee({ + autoPad: i, + dilations: u, + group: n, + kernelShape: s, + outputPadding: d, + outputShape: f, + pads: r, + strides: a, + ...o, + }); + }), + (Lm = (t, e) => { + if (!t || (t.length !== 2 && t.length !== 3)) throw new Error('Conv requires 2 or 3 inputs'); + if (t[0].dims.length !== 4 || t[1].dims.length !== 4) + throw new Error('currently only support 2-dimensional conv'); + let o = t[0].dims[1], + i = t[1].dims[0]; + if (o !== i) throw new Error('FILTER_IN_CHANNEL should be equal to DATA_CHANNEL'); + let u = t[1].dims[1] * e.group; + if (t.length === 3 && (t[2].dims.length !== 1 || t[2].dims[0] !== u)) throw new Error('invalid bias'); + let n = t[0].dims.length - 2; + if (e.dilations.length !== n) throw new Error(`dilations should be ${n}D`); + if (e.strides.length !== n) throw new Error(`strides should be ${n}D`); + if (e.pads.length !== n * 2) throw new Error(`pads should be ${n * 2}D`); + if (e.outputPadding.length !== n) throw new Error(`output_padding should be ${n}D`); + if (e.kernelShape.length !== 0 && e.kernelShape.length !== t[1].dims.length - 2) + throw new Error('invalid kernel shape'); + if (e.outputShape.length !== 0 && e.outputShape.length !== t[0].dims.length - 2) + throw new Error('invalid output shape'); + if (t[0].type !== 'float32' || t[1].type !== 'float32') + throw new Error('ConvTranspose input(X,W) should be float tensor'); + if (t.length === 3 && t[2].type !== 'float32') + throw new Error('ConvTranspose input(bias) should be float tensor'); + }); + }), + ff, + yr, + cf, + Fm, + pf, + $m, + Cm, + km, + ao = L(() => { + Ge(), + fe(), + ae(), + (ff = { name: 'Transpose', inputNames: ['A'], inputTypes: [0] }), + (yr = (t, e, o) => (km(e), [t.run({ ...ff, cacheHint: o.cacheKey, get: () => Fm(t, e[0], o.perm) }, e)])), + (cf = (t) => ee({ perm: t.attributes.getInts('perm', []) })), + (Fm = (t, e, o) => { + let i = e.dims; + o = pf(i, o); + let u = $m(i, o), + n = i.length, + s = ` + ${Cm('perm', o, n)} + float process(int indices[${n}]) { + int a[${n}]; + perm(a, indices); + return _A(a); + }`; + return { ...ff, output: { dims: u, type: e.type, textureType: 0 }, shaderSource: s }; + }), + (pf = (t, e) => (e && e.length !== t.length && (e = [...t.keys()].reverse()), e)), + ($m = (t, e) => ((e = pf(t, e)), U.sortBasedOnPerm(t, e))), + (Cm = (t, e, o) => { + let i = []; + i.push(`void ${t}(out int a[${o}], int src[${o}]) {`); + for (let u = 0; u < o; ++u) i.push(` a[${e[u]}]=src[${u}];`); + return ( + i.push(' }'), + i.join(` +`) + ); + }), + (km = (t) => { + if (!t || t.length !== 1) throw new Error('Transpose requires 1 input.'); + if (t[0].type !== 'float32' && t[0].type !== 'float64') throw new Error('input should be float tensor'); + }); + }), + df, + hf, + Bm, + mf = L(() => { + ao(), + (df = (t, e, o) => { + Bm(e); + let i = o.blocksize, + u = i * i, + n = o.mode === 'DCR' ? [0, 3, 4, 1, 5, 2] : [0, 1, 4, 2, 5, 3], + s = + o.mode === 'DCR' + ? [e[0].dims[0], i, i, e[0].dims[1] / u, e[0].dims[2], e[0].dims[3]] + : [e[0].dims[0], e[0].dims[1] / u, i, i, e[0].dims[2], e[0].dims[3]], + d = t.reshapeUnpacked(e[0], s), + f = { perm: n, cacheKey: `${n}` }, + [r] = yr(t, [d], f), + a = [e[0].dims[0], e[0].dims[1] / u, e[0].dims[2] * i, e[0].dims[3] * i]; + return [t.reshapeUnpacked(r, a)]; + }), + (hf = (t) => { + let e = t.attributes.getInt('blocksize'); + if (e < 1) throw new Error(`blocksize must be >= 1, but got : ${e} for DepthToSpace`); + let o = t.attributes.getString('mode', 'DCR'); + if (o !== 'DCR' && o !== 'CRD') throw new Error(`unrecognized mode: ${o} for DepthToSpace`); + return { mode: o, blocksize: e }; + }), + (Bm = (t) => { + if (t.length !== 1) throw new Error(`DepthToSpace expect 1 inputs, but got ${t.length}`); + if (t[0].type === 'string' || t[0].dims.length !== 4) + throw new TypeError('DepthToSpace input should be a 4-D numeric tensor'); + }); + }), + bf, + gf, + Nm, + yf = L(() => { + fe(), + (bf = (t, e, o) => { + Nm(e, o); + let i = U.flattenShape(e[0].dims, o); + return [t.reshapeUnpacked(e[0], i)]; + }), + (gf = (t) => t.attributes.getInt('axis', 1)), + (Nm = (t, e) => { + if (!t || t.length !== 1) throw new Error('Flatten requires 1 input.'); + let o = t[0].dims.length; + if (o === 0) throw new Error('scalar tensor is not supported.'); + if (e < -o || e > o) throw new Error('Invalid axis'); + if (t[0].type === 'string') throw new Error('string tensor is not supported.'); + }); + }), + Jt, + pn = L(() => { + Jt = ['float32', 'float64', 'int32', 'int16', 'int8', 'uint16', 'uint32', 'uint8']; + }), + Tf, + xf, + Rm, + Mm, + Gm, + Um, + vf = L(() => { + Ge(), + pn(), + fe(), + ae(), + (Tf = (t, e, o) => (Um(e, o.axis), [t.run(Gm(t, e, o), e)])), + (xf = (t) => ee({ axis: t.attributes.getInt('axis', 0) })), + (Rm = { name: 'Gather', inputNames: ['A', 'B'], inputTypes: [0, 0] }), + (Mm = (t, e, o, i) => { + let u = o[0].dims.slice(), + n = o[1].dims.slice(), + s = new Array(u.length + n.length - 1); + i = U.normalizeAxis(i, u.length); + let d = []; + for (let p = 0; p < s.length; p++) + p < i + ? ((s[p] = u[p]), d.push(`inputIdx[${p}] = outputIdx[${p}];`)) + : p < i + n.length + ? ((s[p] = n[p - i]), d.push(`indexDataIdx[${p - i}] = outputIdx[${p}];`)) + : ((s[p] = u[p - n.length + 1]), d.push(`inputIdx[${p - n.length + 1}] = outputIdx[${p}];`)); + let f = s.length || 1, + r = u.length, + a = n.length || 1, + l = ` + float process(int outputIdx[${f}]) { + int inputIdx[${r}]; + int indexDataIdx[${a}]; + indexDataIdx[0] = 0; + ${d.join(` + `)} + int idx = int(_B(indexDataIdx)); + inputIdx[${i}] = idx < 0 ? idx + ${u[i]} : idx; + return _A(inputIdx); + }`; + return { ...e, output: { dims: s, type: o[0].type, textureType: 0 }, shaderSource: l }; + }), + (Gm = (t, e, o) => { + let i = { ...Rm, cacheHint: o.cacheKey }; + return { ...i, get: () => Mm(t, i, e, o.axis) }; + }), + (Um = (t, e) => { + if (!t || t.length !== 2) throw new Error('Gather requires 2 inputs.'); + let o = t[0].dims.length; + if (o < 1) throw new Error('Invalid input shape.'); + if (e < -o || e > o - 1) throw new Error('Invalid axis.'); + if (Jt.indexOf(t[0].type) === -1) throw new Error('Invaid input type.'); + if (t[1].type !== 'int32' && t[1].type !== 'int16') throw new Error('Invaid input type.'); + }); + }), + ki, + wf, + _f, + Of, + zm, + Vm, + Wm, + If = L(() => { + Ge(), + fe(), + ae(), + (ki = (t, e, o) => (Wm(e, o), [t.run(zm(e, o), e)])), + (wf = (t, e) => { + let o = t.attributes.getInt('transA', 0) !== 0, + i = t.attributes.getInt('transB', 0) !== 0, + u = t.attributes.getFloat('alpha', 1), + n = t.attributes.getFloat('beta', 1); + return ee({ transA: o, transB: i, alpha: u, beta: n, isOptionalC: e }); + }), + (_f = (t) => wf(t, !1)), + (Of = (t) => wf(t, !0)), + (zm = (t, e) => { + let o = { + name: 'Gemm', + inputNames: t.length === 3 ? ['A', 'B', 'C'] : ['A', 'B'], + inputTypes: t.length === 3 ? [0, 0, 0] : [0, 0], + key: e.cacheKey, + }; + return { ...o, get: () => Vm(o, t, e) }; + }), + (Vm = (t, e, o) => { + let i = e[0].dims.slice(), + u = e[1].dims.slice(), + [n, s] = Xn.getShapeOfGemmResult(i, o.transA, u, o.transB, e.length === 3 ? e[2].dims : void 0), + d = [n, s]; + if (!d) throw new Error("Can't use gemm on the given tensors"); + let f = i[i.length - 1], + r = ''; + o.transA && (f = i[0]), + o.transA && o.transB + ? (r = 'value += _A_T(a) * _B_T(b);') + : o.transA && !o.transB + ? (r = 'value += _A_T(a) * _B(b);') + : !o.transA && o.transB + ? (r = 'value += _A(a) * _B_T(b);') + : !o.transA && !o.transB && (r = 'value += _A(a) * _B(b);'); + let a = d.length, + l = e.length === 3 ? `int c[${e[2].dims.length}];` : '', + p = e.length === 3 ? 'bcastIndices_C(indices, c);' : '', + m = e.length === 3 ? 'value += beta * _C(c);' : '', + y = ` + float process(int indices[${a}]) { + int a[${a}]; + int b[${a}]; + ${l} + + copyVec(indices, a); + copyVec(indices, b); + ${p} + + float value = 0.0; + for (int k=0; k<${f}; ++k) { + a[${a - 1}] = k; + b[${a - 2}] = k; + ${r} + } + + value = value * alpha; + ${m} + return value; + }`; + return { + ...t, + output: { dims: d, type: e[0].type, textureType: 0 }, + variables: [ + { name: 'alpha', type: 'float', data: o.alpha }, + { name: 'beta', type: 'float', data: o.beta }, + ], + shaderSource: y, + }; + }), + (Wm = (t, e) => { + if (!t) throw new Error('Input is missing'); + if (e.isOptionalC && (t.length < 2 || t.length > 3)) throw new Error('Invaid input shape.'); + if (!e.isOptionalC && t.length !== 3) throw new Error('Gemm requires 3 inputs'); + if (t.length === 3 && t[2].dims.length !== 1 && t[2].dims.length !== 2) + throw new Error('Invalid input shape of C'); + if ( + (t[0].type !== 'float32' && t[0].type !== 'float64') || + (t[1].type !== 'float32' && t[1].type !== 'float64') || + (t.length === 3 && t[2].type !== 'float32' && t[2].type !== 'float64') + ) + throw new Error('Invalid input type.'); + if (t[0].type !== t[1].type || (t.length === 3 && t[0].type !== t[2].type)) + throw new Error('Input types are mismatched'); + }); + }), + Sf, + Af, + Hm, + qm, + jm, + Ym, + Xm, + Pf = L(() => { + Ge(), + ae(), + (Sf = (t, e, o) => (Xm(e), [t.run(jm(t, e, o), e)])), + (Af = (t) => { + let e = t.attributes.getFloat('scale'), + o = t.attributes.getFloats('bias'); + return ee({ scale: e, bias: o }); + }), + (Hm = { name: 'ImageScaler', inputNames: ['X'], inputTypes: [0] }), + (qm = (t, e, o, i) => { + let u = o[0].dims.slice(), + n = u.length, + s = ` + ${Ym(i.bias.length)} + float process(int indices[${n}]) { + return _X(indices) * scale + getBias(bias, indices[1]); + }`; + return { + ...e, + output: { dims: u, type: o[0].type, textureType: 0 }, + variables: [ + { name: 'bias', type: 'float', arrayLength: i.bias.length, data: i.bias }, + { name: 'scale', type: 'float', data: i.scale }, + ], + shaderSource: s, + }; + }), + (jm = (t, e, o) => { + let i = { ...Hm, cacheHint: o.cacheKey }; + return { ...i, get: () => qm(t, i, e, o) }; + }), + (Ym = (t) => { + let e = [`float getBias(float bias[${t}], int channel) {`]; + for (let o = 0; o < t; ++o) + o === 0 + ? e.push(` if (channel == ${o}) { return bias[${o}]; }`) + : o === t - 1 + ? e.push(` else { return bias[${o}]; }`) + : e.push(` else if (channel == ${o}) { return bias[${o}]; }`); + return ( + e.push(' }'), + e.join(` +`) + ); + }), + (Xm = (t) => { + if (!t || t.length !== 1) throw new Error('ImageScaler requires 1 input.'); + if (t[0].dims.length !== 4) throw new Error('Invalid input shape.'); + if (t[0].type !== 'float32' && t[0].type !== 'float64') throw new Error('Invalid input type.'); + }); + }), + Df, + Lf, + Ef, + Km, + Jm, + Zm, + Qm, + eb, + tb, + Ff = L(() => { + xe(), + ae(), + (Df = (t, e, o) => { + tb(e); + let i = t.run(Jm(e[0]), e); + return [t.run(eb(t, e[0], o, i.dims), [e[0], i, e[1], e[2]])]; + }), + (Lf = (t) => t.attributes.getFloat('epsilon', 1e-5)), + (Ef = { name: 'InstanceNormalization_MeanAndVariance', inputNames: ['X'], inputTypes: [0] }), + (Km = (t, e) => { + let o = e.dims.slice(), + i = o[1], + u = o[2] * o[3], + n = [o[0], i], + s = ` + vec4 process(int[2] indices) { + vec4 v = vec4(0.0); + int a[4]; + a[0] = indices[0]; + a[1] = indices[1]; + float temp = 0.0; + for(int a2=0; a2<${o[2]}; a2++) { + a[2] = a2; + for(int a3=0; a3<${o[3]}; a3++) { + a[3] = a3; + float x = _X(a); + temp += x; + } + } + float mean = temp / float(${u}); + temp = 0.0; + for(int a2=0; a2<${o[2]}; a2++) { + a[2] = a2; + for(int a3=0; a3<${o[3]}; a3++) { + a[3] = a3; + float x = _X(a); + temp += (x - mean) * (x - mean); + } + } + v.r = mean; + v.g = temp / float(${u}); + + return v; + }`; + return { ...t, output: { dims: n, type: e.type, textureType: 4 }, shaderSource: s }; + }), + (Jm = (t) => ({ ...Ef, get: () => Km(Ef, t) })), + (Zm = { + name: 'InstanceNormalization_ComputeOutput', + inputNames: ['X', 'MeanAndVariance', 'Scale', 'B'], + inputTypes: [0, 4, 0, 0], + }), + (Qm = (t, e, o, i, u) => { + let n = q(t.session.backend.glContext.version), + [s, d] = t.calculateTextureWidthAndHeight(u, 4), + [f, r] = [s / 4, d], + a = ` + vec4 get_MeanAndVariance(int[2] mv) { + int offset = indicesToOffset_MeanAndVariance(mv); + vec2 coords = offsetToCoords(offset, ${f}, ${r}); + return ${n.texture2D}(MeanAndVariance, coords); + } + + float process(int[4] indices) { + int mv[2]; + mv[0] = indices[0]; + mv[1] = indices[1]; + vec4 mean_and_variance = get_MeanAndVariance(mv); + float mean = mean_and_variance.r; + float variance = mean_and_variance.g; + + int sb[1]; + sb[0] = indices[1]; + float scale = _Scale(sb); + float b = _B(sb); + + return scale * (_X(indices) - mean) / sqrt(variance + epsilon) + b; + }`; + return { + ...e, + output: { dims: o.dims, type: o.type, textureType: 0 }, + variables: [{ name: 'epsilon', type: 'float', data: i }], + shaderSource: a, + }; + }), + (eb = (t, e, o, i) => { + let u = { ...Zm, cacheHint: `${o}` }; + return { ...u, get: () => Qm(t, u, e, o, i) }; + }), + (tb = (t) => { + if (!t || t.length !== 3) throw new Error('InstanceNormalization requires 3 inputs.'); + let e = t[0], + o = t[1], + i = t[2]; + if (e.dims.length < 3 || o.dims.length !== 1 || i.dims.length !== 1) + throw new Error('Invalid input shape.'); + if (o.dims[0] !== e.dims[1] || i.dims[0] !== e.dims[1]) throw new Error('Input shapes are mismatched.'); + if ( + (e.type !== 'float32' && e.type !== 'float64') || + (o.type !== 'float32' && o.type !== 'float64') || + (i.type !== 'float32' && i.type !== 'float64') + ) + throw new Error('Invalid input type.'); + if (t[0].dims.length !== 4) throw new Error('Only support 4-D input shape.'); + }); + }); +function rb(t, e) { + let o = t[0].dims[1], + i = t[0].dims.length, + u = -Math.floor((e.size - 1) / 2), + n = Math.ceil((e.size - 1) / 2), + s = `float(${e.alpha}) / float(${e.size})`, + d = `float(${e.bias})`, + f = `float(${e.beta})`, + r = ` + float process(int indices[${i}]) { + int c = indices[1]; + float x = _X(indices); + float square_sum = 0.0; + + for (int i = ${u}; i <= ${n}; i++) { + int idx = c + i; + if (c >= 0 && c < ${o}) { + indices[1] = idx; + float j = _X(indices); + square_sum += j * j; + } + } + return x / pow(${d} + ${s} * square_sum, ${f}); + }`; + return { + ...kf, + cacheHint: e.cacheKey, + output: { dims: t[0].dims, type: t[0].type, textureType: 0 }, + shaderSource: r, + }; +} +function nb(t, e) { + return { ...kf, cacheHint: e.cacheKey, get: () => rb(t, e) }; +} +var $f, + Cf, + kf, + ob, + Bf = L(() => { + Ge(), + ae(), + ($f = (t, e, o) => (ob(e), [t.run(nb(e, o), e)])), + (Cf = (t) => { + let e = t.attributes.getFloat('alpha', 1e-4), + o = t.attributes.getFloat('beta', 0.75), + i = t.attributes.getFloat('bias', 1), + u = t.attributes.getInt('size'); + return ee({ alpha: e, beta: o, bias: i, size: u }); + }), + (kf = { name: 'LRN', inputNames: ['X'], inputTypes: [0] }), + (ob = (t) => { + if (!t || t.length !== 1) throw new Error('LRN requires 1 input.'); + if (t[0].dims.length !== 4) throw new Error('currently only support LRN for input with "NCHW" format'); + if (t[0].type !== 'float32') throw new Error('input should be float type'); + }); + }), + ib, + Bi, + Nf, + Rf, + Mf, + ab, + sb, + ub, + lb, + fb, + cb, + pb, + db, + Gf = L(() => { + Ge(), + fe(), + xe(), + ae(), + (ib = { name: 'Pad', inputNames: ['A'], inputTypes: [0] }), + (Bi = (t, e, o) => (ub(e), [t.run({ ...ib, cacheHint: o.cacheKey, get: () => sb(t, e[0], o) }, e)])), + (Nf = (t) => { + let e = t.attributes.getString('mode', 'constant'), + o = t.attributes.getFloat('value', 0), + i = t.attributes.getInts('pads'); + return ee({ mode: e, value: o, pads: i }); + }), + (Rf = (t, e, o) => { + lb(e); + let i = ab(t, e, o); + return Bi(t, [e[0]], i); + }), + (Mf = (t) => t.attributes.getString('mode', 'constant')), + (ab = (t, e, o) => { + if (!t.session.isInitializer(e[1].dataId) || (e.length >= 3 && !t.session.isInitializer(e[2].dataId))) + throw new Error('dynamic pad attributes are not allowed'); + let i = Array.from(e[1].integerData), + u = e.length >= 3 ? e[2].floatData[0] : 0; + return ee({ mode: o, pads: i, value: u }); + }), + (sb = (t, e, o) => { + let i = U.padShape(e.dims.slice(), o.pads), + u = i.length, + n = ` + ${fb(t, e, o)} + float process(int[${u}] indices) { + return padA(indices); + }`; + return { + name: 'Pad', + inputNames: ['A'], + inputTypes: [0], + output: { dims: i, type: e.type, textureType: 0 }, + shaderSource: n, + }; + }), + (ub = (t) => { + if (!t || t.length !== 1) throw new Error('Pad requires 1 input'); + if (t[0].type !== 'float32' && t[0].type !== 'float64') throw new Error('Invalid input type.'); + }), + (lb = (t) => { + if (!t || (t.length !== 2 && t.length !== 3)) throw new Error('Pad requires 2 or 3 inputs'); + if (t[1].type !== 'int32') throw new Error('Invalid input type.'); + if (t.length >= 3 && t[2].type === 'string') throw new Error('Invalid input type.'); + }), + (fb = (t, e, o) => { + let i = q(t.session.backend.glContext.version), + [u, n] = t.calculateTextureWidthAndHeight(e.dims, 0), + s = U.computeStrides(e.dims); + switch (o.mode) { + case 'constant': + return cb(i, e.dims, s, u, n, o.pads, o.value); + case 'reflect': + return pb(i, e.dims, s, u, n, o.pads); + case 'edge': + return db(i, e.dims, s, u, n, o.pads); + default: + throw new Error('Invalid mode'); + } + }), + (cb = (t, e, o, i, u, n, s) => { + let d = e.length, + f = ''; + for (let r = d - 1; r >= 0; --r) + f += ` + k = m[${r}] - ${n[r]}; + if (k < 0) return constant; + if (k >= ${e[r]}) return constant; + offset += k * ${o[r]}; + `; + return ` + float padA(int m[${d}]) { + const float constant = float(${s}); + int offset = 0; + int k = 0; + ${f} + vec2 coords = offsetToCoords(offset, ${i}, ${u}); + float value = getColorAsFloat(${t.texture2D}(A, coords)); + return value; + } + `; + }), + (pb = (t, e, o, i, u, n) => { + let s = e.length, + d = ''; + for (let f = s - 1; f >= 0; --f) + d += ` + k = m[${f}] - ${n[f]}; + if (k < 0) { k = -k; } + { + const int _2n_1 = ${2 * (e[f] - 1)}; + k = int( mod( float(k), float(_2n_1) ) ) ; + if(k >= ${e[f]}) { k = _2n_1 - k; } + } + offset += k * ${o[f]}; + `; + return ` + float padA(int m[${s}]) { + int offset = 0; + int k = 0; + ${d} + vec2 coords = offsetToCoords(offset, ${i}, ${u}); + float value = getColorAsFloat(${t.texture2D}(A, coords)); + return value; + } + `; + }), + (db = (t, e, o, i, u, n) => { + let s = e.length, + d = ''; + for (let f = s - 1; f >= 0; --f) + d += ` + k = m[${f}] - ${n[f]}; + if (k < 0) k = 0; + if (k >= ${e[f]}) k = ${e[f] - 1}; + offset += k * ${o[f]}; + `; + return ` + float padA(int m[${s}]) { + int offset = 0; + int k = 0; + ${d} + vec2 coords = offsetToCoords(offset, ${i}, ${u}); + float value = getColorAsFloat(${t.texture2D}(A, coords)); + return value; + } + `; + }); + }), + zf, + Vf, + Wf, + Hf, + qf, + jf, + Yf, + Xf, + Kf, + hb, + Uf, + Jf, + uo, + Zf, + so, + mb, + Qf = L(() => { + Ge(), + fe(), + ae(), + (zf = (t, e, o) => { + uo(e); + let i = { name: 'AveragePool', inputNames: ['X'], inputTypes: [0], cacheHint: o.cacheKey }; + return [t.run({ ...i, get: () => Wf(e, i, !1, o) }, e)]; + }), + (Vf = (t) => { + let e = t.attributes.getString('auto_pad', 'NOTSET'), + o = t.attributes.getInt('ceil_mode', 0), + i = t.attributes.getInt('count_include_pad', 0) !== 0, + u = t.attributes.getInts('kernel_shape'), + n = t.attributes.getInts('strides', []), + s = t.attributes.getInts('pads', []); + if (o !== 0) throw new Error('using ceil() in shape computation is not yet supported for AveragePool'); + return ee({ autoPad: e, ceilMode: o, countIncludePad: i, kernelShape: u, strides: n, pads: s }); + }), + (Wf = (t, e, o, i) => { + let [u, n] = Kf(t, i, o), + s = U.size(u.kernelShape), + d = 'value += _X(x);', + f = ''; + u.countIncludePad ? (f += `value /= float(${s});`) : (f += `value /= float(${s} - pad);`); + let r = ` + ${Zf(t[0].dims, u, d, f, '0.0')} + `; + return { ...e, output: { dims: n, type: t[0].type, textureType: 0 }, shaderSource: r }; + }), + (Hf = (t, e, o) => { + uo(e); + let i = { + name: 'GlobalAveragePool', + inputNames: ['X'], + inputTypes: [0], + cacheHint: `${o.countIncludePad}`, + }; + return [t.run({ ...i, get: () => Wf(e, i, !0, o) }, e)]; + }), + (qf = (t) => { + let e = t.attributes.getInt('count_include_pad', 0) !== 0; + return ee({ autoPad: '', ceilMode: 0, countIncludePad: e, kernelShape: [], strides: [], pads: [] }); + }), + (jf = (t, e, o) => { + uo(e); + let i = { name: 'MaxPool', inputNames: ['X'], inputTypes: [0], cacheHint: o.cacheKey }; + return [t.run({ ...i, get: () => Xf(e, i, !1, o) }, e)]; + }), + (Yf = (t) => { + let e = t.attributes.getString('auto_pad', 'NOTSET'), + o = t.attributes.getInt('ceil_mode', 0), + i = t.attributes.getInts('kernel_shape'), + u = t.attributes.getInts('strides', []), + n = t.attributes.getInts('pads', []), + s = t.attributes.getInt('storage_order', 0), + d = t.attributes.getInts('dilations', []); + if (s !== 0) throw new Error('column major storage order is not yet supported for MaxPool'); + if (o !== 0) throw new Error('using ceil() in shape computation is not yet supported for MaxPool'); + return ee({ + autoPad: e, + ceilMode: o, + countIncludePad: !1, + kernelShape: i, + strides: u, + pads: n, + storageOrder: s, + dilations: d, + }); + }), + (Xf = (t, e, o, i) => { + let [u, n] = Kf(t, i, o), + s = ` + value = max(_X(x), value); + `, + d = '', + f = ` + ${Zf(t[0].dims, u, s, d, '-1e5')} + `; + return { ...e, output: { dims: n, type: t[0].type, textureType: 0 }, shaderSource: f }; + }), + (Kf = (t, e, o) => { + let i = t[0].dims.slice(), + u = Object.hasOwnProperty.call(e, 'dilations'), + n = e.kernelShape.slice(), + s = e.strides.slice(), + d = u ? e.dilations.slice() : [], + f = e.pads.slice(); + pr.adjustPoolAttributes(o, i, n, s, d, f); + let r = pr.computePoolOutputShape(o, i, s, d, n, f, e.autoPad), + a = Object.assign({}, e); + return ( + u + ? Object.assign(a, { kernelShape: n, strides: s, pads: f, dilations: d, cacheKey: e.cacheKey }) + : Object.assign(a, { kernelShape: n, strides: s, pads: f, cacheKey: e.cacheKey }), + [a, r] + ); + }), + (hb = { + autoPad: '', + ceilMode: 0, + countIncludePad: !1, + kernelShape: [], + strides: [], + pads: [], + storageOrder: 0, + dilations: [], + cacheKey: '', + }), + (Uf = { name: 'GlobalMaxPool', inputNames: ['X'], inputTypes: [0] }), + (Jf = (t, e) => (uo(e), [t.run({ ...Uf, get: () => Xf(e, Uf, !0, hb) }, e)])), + (uo = (t) => { + if (!t || t.length !== 1) throw new Error('Pool ops requires 1 input.'); + if (t[0].type !== 'float32' && t[0].type !== 'float64') throw new Error('Invalid input type.'); + }), + (Zf = (t, e, o, i, u) => { + let n = t.length; + if (e.kernelShape.length <= 2) { + let s = e.kernelShape[e.kernelShape.length - 1], + d = e.strides[e.strides.length - 1], + f = e.pads[e.pads.length / 2 - 1], + r = e.pads[e.pads.length - 1], + a = t[n - 1], + l = '', + p = '', + m = ''; + if ( + (f + r !== 0 + ? (l = ` + for (int i = 0; i < ${s}; i++) { + x[${n} - 1] = indices[${n} - 1] * ${d} - ${f} + i; + if (x[${n} - 1] < 0 || x[${n} - 1] >= ${a}) { + pad++; + continue; + } + ${o} + }`) + : (l = ` + for (int i = 0; i < ${s}; i++) { + x[${n} - 1] = indices[${n} - 1] * ${d} - ${f} + i; + ${o} + }`), + e.kernelShape.length === 2) + ) { + let y = e.kernelShape[e.kernelShape.length - 2], + T = e.strides[e.strides.length - 2], + v = e.pads[e.pads.length / 2 - 2], + S = e.pads[e.pads.length - 2], + E = t[n - 2]; + v + S !== 0 + ? (p = ` + for (int j = 0; j < ${y}; j++) { + x[${n} - 2] = indices[${n} - 2] * ${T} - ${v} + j; + if (x[${n} - 2] < 0 || x[${n} - 2] >= ${E}) { + pad+= ${s}; + continue; + } + `) + : (p = ` + for (int j = 0; j < ${y}; j++) { + x[${n} - 2] = indices[${n} - 2] * ${T} - ${v} + j; + `), + (m = ` + } + `); + } + return ` + float process(int indices[${n}]) { + int x[${n}]; + copyVec(indices, x); + + float value = ${u}; + int pad = 0; + ${p} + ${l} + ${m} + ${i} + return value; + } + `; + } else { + let s = U.size(e.kernelShape), + d = U.computeStrides(e.kernelShape), + f = d.length, + r = e.pads.length, + a = mb(f), + l = so(t, 'inputDims'), + p = so(e.pads, 'pads'), + m = so(d, 'kernelStrides'), + y = so(e.strides, 'strides'), + T = e.pads.reduce((S, E) => S + E), + v = ''; + return ( + T + ? (v = ` + if (x[j] >= inputDims[j] || x[j] < 0) { + pad++; + isPad = true; + break; + } + } + if (!isPad) { + ${o} + }`) + : (v = ` + } + ${o} + `), + ` + ${a} + float process(int indices[${n}]) { + int x[${n}]; + copyVec(indices, x); + int offset[${f}]; + int pads[${r}]; + int inputDims[${n}]; + int kernelStrides[${f}]; + int strides[${f}]; + ${p} + ${l} + ${y} + ${m} + + float value = ${u}; + int pad = 0; + bool isPad = false; + for (int i = 0; i < ${s}; i++) { + offsetToIndices(i, kernelStrides, offset); + isPad = false; + for (int j = ${n} - ${f}; j < ${n}; j++) { + x[j] = indices[j] * strides[j - ${n} + ${f}] + + offset[j - ${n} + ${f}] - pads[j - 2]; + ${v} + } + ${i} + + return value; + } + ` + ); + } + }), + (so = (t, e) => { + let o = ''; + for (let i = 0; i < t.length; i++) + o += ` + ${e}[${i}] = ${t[i]}; + `; + return o; + }), + (mb = (t) => ` + void offsetToIndices(int offset, int[${t}] strides, out int[${t}] indices) { + if (${t} == 0) { + return; + } + for (int i = 0; i < ${t} - 1; ++i) { + indices[i] = offset / strides[i]; + offset -= indices[i] * strides[i]; + } + indices[${t} - 1] = offset; + }`); + }), + Tr, + Zt, + bb, + gb, + ec, + tc, + rc, + nc, + oc, + ic, + ac, + sc = L(() => { + Ge(), + pn(), + fe(), + ae(), + (Tr = (t, e, o, i, u) => { + gb(e); + let n = { name: i, inputNames: ['A'], inputTypes: [0] }; + return [t.run({ ...n, cacheHint: o.cacheKey, get: () => bb(t, e, o, i, u, n) }, e)]; + }), + (Zt = (t) => { + let e = t.attributes.getInts('axes', []), + o = t.attributes.getInt('keepdims', 1) === 1; + return ee({ axes: e, keepDims: o }); + }), + (bb = (t, e, o, i, u, n) => { + let s = [], + d = e[0].dims.length || 1, + f = [], + r = U.normalizeAxes(o.axes, e[0].dims.length), + a = u(e, r), + l = a[1]; + for (let m = 0; m < e[0].dims.length; m++) + r.indexOf(m) >= 0 || r.length === 0 + ? (o.keepDims && s.push(1), + (l = ` + for(int j${m} = 0; j${m} < ${e[0].dims[m]}; j${m}++) { + inputIdx[${m}] = j${m}; + ${l} + }`)) + : (f.push(`inputIdx[${m}] = outputIdx[${s.length}];`), s.push(e[0].dims[m])); + let p = ` + float process(int outputIdx[${s.length || 1}]) { + float value; // final result + int inputIdx[${d}]; // addressing input data + ${f.join(` +`)} + ${a[0]} // init ops for reduce max/min + ${l} + ${a[2]} // final computation for reduce mean + return value; + }`; + return { ...n, output: { dims: s, type: e[0].type, textureType: 0 }, shaderSource: p }; + }), + (gb = (t) => { + if (!t || t.length !== 1) throw new Error('Reduce op requires 1 input.'); + if (Jt.indexOf(t[0].type) === -1) throw new Error('Invalid input type.'); + }), + (ec = (t, e, o) => Tr(t, e, o, 'ReduceSum', () => ['value = 0.0;', 'value += _A(inputIdx);', ''])), + (tc = (t, e, o) => + Tr(t, e, o, 'ReduceMean', (i, u) => { + let n = 1; + for (let s = 0; s < i[0].dims.length; s++) + (u.indexOf(s) >= 0 || u.length === 0) && (n *= i[0].dims[s]); + return ['value = 0.0;', 'value += _A(inputIdx);', `value /= ${n}.;`]; + })), + (rc = (t, e, o) => + Tr(t, e, o, 'ReduceMax', (i, u) => { + let n = []; + for (let s = 0; s < i[0].dims.length; s++) + (u.indexOf(s) >= 0 || u.length === 0) && n.push(`inputIdx[${s}] = 0;`); + return [ + `${n.join(` +`)} +value = _A(inputIdx);`, + 'value = max(value, _A(inputIdx));', + '', + ]; + })), + (nc = (t, e, o) => + Tr(t, e, o, 'ReduceMin', (i, u) => { + let n = []; + for (let s = 0; s < i[0].dims.length; s++) + (u.indexOf(s) >= 0 || u.length === 0) && n.push(`inputIdx[${s}] = 0;`); + return [ + `${n.join(` +`)} +value = _A(inputIdx);`, + 'value = min(value, _A(inputIdx));', + '', + ]; + })), + (oc = (t, e, o) => Tr(t, e, o, 'ReduceProd', () => ['value = 1.0;', 'value *= _A(inputIdx);', ''])), + (ic = (t, e, o) => + Tr(t, e, o, 'ReduceLogSum', () => ['value = 0.0;', 'value += _A(inputIdx);', 'value = log(value);'])), + (ac = (t, e, o) => + Tr(t, e, o, 'ReduceLogSumSquare', () => [ + 'float t; value = 0.0;', + 't = _A(inputIdx); value += t * t;', + '', + ])); + }), + uc, + lc = L(() => { + fe(), + (uc = (t, e) => { + let o = U.calculateReshapedDims(e[0].dims, e[1].integerData); + return t.session.pack ? [t.reshapePacked(e[0], o)] : [t.reshapeUnpacked(e[0], o)]; + }); + }), + fc, + Ni, + cc, + pc, + dn, + yb, + Ri, + lo, + Mi = L(() => { + Ge(), + xe(), + ae(), + (fc = { name: 'Upsample', inputNames: ['X'], inputTypes: [0] }), + (Ni = (t, e, o) => (Ri(e, o), [t.run({ ...fc, cacheHint: o.cacheKey, get: () => yb(t, e, o) }, e)])), + (cc = (t) => dn(t, 7)), + (pc = (t) => dn(t, 9)), + (dn = (t, e) => { + let o = e >= 10, + i = t.attributes.getString('mode', 'nearest'); + if (i !== 'nearest' && i !== 'linear' && (e < 11 || i !== 'cubic')) + throw new Error(`unrecognized mode: ${i}`); + let u = []; + e < 9 && ((u = t.attributes.getFloats('scales')), lo(u, i, o)); + let n = t.attributes.getFloat('extrapolation_value', 0), + s = e > 10 ? t.attributes.getString('coordinate_transformation_mode', 'half_pixel') : 'asymmetric'; + if ( + [ + 'asymmetric', + 'pytorch_half_pixel', + 'tf_half_pixel_for_nn', + 'align_corners', + 'tf_crop_and_resize', + 'half_pixel', + ].indexOf(s) === -1 + ) + throw new Error(`coordinate_transform_mode '${s}' is not supported`); + let d = s === 'tf_crop_and_resize', + f = d, + r = i === 'nearest' && e >= 11 ? t.attributes.getString('nearest_mode', 'round_prefer_floor') : ''; + if (['round_prefer_floor', 'round_prefer_ceil', 'floor', 'ceil', ''].indexOf(r) === -1) + throw new Error(`nearest_mode '${r}' is not supported`); + let a = t.attributes.getFloat('cubic_coeff_a', -0.75), + l = t.attributes.getInt('exclude_outside', 0) !== 0; + if (l && i !== 'cubic') throw new Error('exclude_outside can be set to 1 only when mode is CUBIC.'); + let p = e < 11 ? !0 : i === 'nearest' && s === 'asymmetric' && r === 'floor', + m = 0, + y = 0, + T = 0; + return ( + e > 10 + ? t.inputs.length > 2 + ? ((m = 1), (y = 2), (T = 3)) + : ((y = 1), (T = 2)) + : e === 9 && (y = 1), + ee({ + opset: e, + isResize: o, + mode: i, + scales: u, + extrapolationValue: n, + coordinateTransformMode: s, + useExtrapolation: f, + needRoiInput: d, + nearestMode: r, + cubicCoefficientA: a, + excludeOutside: l, + useNearest2xOptimization: p, + roiInputIdx: m, + scalesInputIdx: y, + sizesInputIdx: T, + }) + ); + }), + (yb = (t, e, o) => { + let i = q(t.session.backend.glContext.version), + [u, n] = t.calculateTextureWidthAndHeight(e[0].dims, 0), + s = e[0].dims.map((T, v) => Math.floor(T * o.scales[v])), + [d, f] = t.calculateTextureWidthAndHeight(s, 0), + r = s.length, + a = new Array(r), + l = new Array(r), + p = ` + int output_pitches[${r}]; + int input_pitches[${r}]; + `; + for (let T = r - 1; T >= 0; T--) + (a[T] = T === r - 1 ? 1 : a[T + 1] * s[T + 1]), + (l[T] = T === r - 1 ? 1 : l[T + 1] * e[0].dims[T + 1]), + (p += ` + output_pitches[${T}] = ${a[T]}; + input_pitches[${T}] = ${l[T]}; + `); + let m = ` + float getInputFloat(int index) { + vec2 coords = offsetToCoords(index, ${u}, ${n}); + float value = getColorAsFloat(${i.texture2D}(X, coords)); + return value; + } + `, + y = + o.mode === 'nearest' + ? ` + ${m} + float process(int indices[${r}]) { + int input_index = 0; + int output_index = coordsToOffset(TexCoords, ${d}, ${f}); + + ${p} + + int d, m; + for (int dim = 0; dim < ${r}; ++dim) { + d = output_index / output_pitches[dim]; + m = output_index - d * output_pitches[dim]; + output_index = m; + + if (scales[dim] != 1 && d > 0) { + int d2 = d / scales[dim]; + m = d - d2 * scales[dim]; + d = d2; + } + input_index += input_pitches[dim] * d; + } + + return getInputFloat(input_index); + }` + : r === 4 + ? ` + ${m} + float process(int indices[4]) { + int input_index = 0; + int output_index = coordsToOffset(TexCoords, ${d}, ${f}); + + ${p} + + int m; + int index_of_dim0, index_of_dim1, index_of_dim2, index_of_dim3; + index_of_dim0 = output_index / output_pitches[0]; + m = output_index - index_of_dim0 * output_pitches[0]; + index_of_dim1 = m / output_pitches[1]; + m = m - index_of_dim1 * output_pitches[1]; + index_of_dim2 = m / output_pitches[2]; + m = m - index_of_dim2 * output_pitches[2]; + index_of_dim3 = m; + + int index_of_input_dim2, index_of_input_dim3, x_offset, y_offset; + index_of_input_dim2 = index_of_dim2 / scales[2]; + y_offset = index_of_dim2 - index_of_input_dim2 * scales[2]; + index_of_input_dim3 = index_of_dim3 / scales[3]; + x_offset = index_of_dim3 - index_of_input_dim3 * scales[3]; + + input_index = index_of_dim0 * input_pitches[0] + + index_of_dim1 * input_pitches[1] + + index_of_input_dim2 * input_pitches[2] + + index_of_input_dim3; + + float x00 = getInputFloat(input_index); + float x10, x01, x11; + + bool end_of_dim2 = false; + if (index_of_input_dim2 == (${e[0].dims[2]} - 1)) { + // It's the end in dimension 2 + x01 = x00; + end_of_dim2 = true; + } else { + x01 = getInputFloat(input_index + input_pitches[2]); + } + + if (index_of_input_dim3 == (input_pitches[2] - 1)) { + // It's the end in dimension 3 + x10 = x00; + x11 = x01; + } + else { + x10 = getInputFloat(input_index + 1); + x11 = end_of_dim2 ? x10 : getInputFloat(input_index + input_pitches[2] + 1); + } + + float y0 = x00 + float(y_offset) * (x01 - x00) / float(scales[2]); + float y1 = x10 + float(y_offset) * (x11 - x10) / float(scales[2]); + return y0 + float(x_offset) * (y1 - y0) / float(scales[3]); + }` + : ` + ${m} + float process(int indices[2]) { + int input_index = 0; + int output_index = coordsToOffset(TexCoords, ${d}, ${f}); + + ${p} + + int m; + int index_of_dim0, index_of_dim1; + index_of_dim0 = output_index / output_pitches[0]; + m = output_index - index_of_dim0 * output_pitches[0]; + index_of_dim1 = m; + + int index_of_input_dim0, index_of_input_dim1, x_offset, y_offset; + index_of_input_dim0 = index_of_dim0 / scales[0]; + y_offset = index_of_dim0 - index_of_input_dim0 * scales[0]; + index_of_input_dim1 = index_of_dim1 / scales[1]; + x_offset = index_of_dim1 - index_of_input_dim1 * scales[1]; + + input_index = index_of_input_dim0 * input_pitches[0] + index_of_input_dim1; + + float x00 = getInputFloat(input_index); + float x10, x01, x11; + + bool end_of_dim0 = false; + if (index_of_input_dim0 == (${e[0].dims[0]} - 1)) { + // It's the end in dimension 0 + x01 = x00; + end_of_dim0 = true; + } else { + x01 = getInputFloat(input_index + input_pitches[0]); + } + + if (index_of_input_dim1 == (input_pitches[0] - 1)) { + // It's the end in dimension 1 + x10 = x00; + x11 = x01; + } + else { + x10 = getInputFloat(input_index + 1); + x11 = end_of_dim0 ? x10 : getInputFloat(input_index + input_pitches[0] + 1); + } + + float y0 = x00 + float(y_offset) * (x01 - x00) / float(scales[0]); + float y1 = x10 + float(y_offset) * (x11 - x10) / float(scales[0]); + return y0 + float(x_offset) * (y1 - y0) / float(scales[1]); + }`; + return { + ...fc, + output: { dims: s, type: e[0].type, textureType: 0 }, + shaderSource: y, + variables: [ + { + name: 'scales', + type: 'int', + arrayLength: o.scales.length, + data: o.scales.map((T) => Math.ceil(T)), + }, + ], + }; + }), + (Ri = (t, e) => { + if ( + !t || + (e.opset < 9 && t.length !== 1) || + (e.opset >= 9 && e.opset < 11 && t.length !== 2) || + (e.opset >= 11 && t.length < 2) + ) + throw new Error('invalid inputs.'); + if (e.scales.length > 0 && t[0].dims.length !== e.scales.length) + throw new Error('Invalid input shape.'); + if (t[0].type === 'string') throw new Error('Invalid input tensor types.'); + }), + (lo = (t, e, o) => { + if (o) { + for (let i of t) if (i <= 0) throw new Error('Scale value should be greater than 0.'); + } else for (let i of t) if (i < 1) throw new Error('Scale value should be greater than or equal to 1.'); + if ((e === 'linear' || e === 'cubic') && t.length !== 2 && (t.length !== 4 || t[0] !== 1 || t[1] !== 1)) + throw new Error( + `'Linear' mode and 'Cubic' mode only support 2-D inputs ('Bilinear', 'Bicubic') or 4-D inputs with the corresponding outermost 2 scale values being 1 in the ${ + o ? 'Resize' : 'Upsample' + } opeartor.` + ); + }); + }), + Gi, + Ui, + dc, + hc, + Tb, + xb, + vb, + wb, + mc = L(() => { + xe(), + ae(), + Ft(), + br(), + Mi(), + (Gi = { name: 'Resize', inputNames: ['A'], inputTypes: [2] }), + (Ui = (t, e, o) => (Ri(e, o), [t.run({ ...Gi, cacheHint: o.cacheKey, get: () => Tb(t, e, o) }, e)])), + (dc = (t) => dn(t, 10)), + (hc = (t) => dn(t, 11)), + (Tb = (t, e, o) => { + let i = q(t.session.backend.glContext.version), + [u, n] = xb(e, o); + if (u.every((E) => E === 1) && o.coordinateTransformMode !== 'tf_crop_and_resize') + return { + ...Gi, + output: { dims: n, type: e[0].type, textureType: 2 }, + hasMain: !0, + shaderSource: `void main() { + vec4 v = ${i.texture2D}(X, TexCoords); + ${i.output} = v; + }`, + }; + let s = n.length; + if (s < 2) throw new Error(`output dimension should be at least 2, but got ${s}`); + let d = n[s - 2], + f = n[s - 1], + r = e[0].dims; + if (s !== r.length) throw new Error(`output dimension should match input ${r.length}, but got ${s}`); + let a = r[s - 2], + l = r[s - 1], + p = u[s - 2], + m = u[s - 1], + y = ''; + if (o.mode !== 'linear') throw new Error(`resize (packed) does not support mode: '${o.mode}'`); + switch (o.coordinateTransformMode) { + case 'asymmetric': + y = ` + vec4 getSourceFracIndex(ivec4 coords) { + return vec4(coords) / scaleWHWH; + } + `; + break; + case 'half_pixel': + y = ` + vec4 getSourceFracIndex(ivec4 coords) { + return (vec4(coords) + 0.5) / scaleWHWH - 0.5; + } + `; + break; + case 'pytorch_half_pixel': + y = ` + vec4 getSourceFracIndex(ivec4 coords) { + vec4 fcoords = vec4(coords); + return vec4( + ${f}.0 > 1.0 ? (fcoords.x + 0.5) / scaleWHWH.x - 0.5 : 0.0, + ${d}.0 > 1.0 ? (fcoords.y + 0.5) / scaleWHWH.y - 0.5 : 0.0, + ${f}.0 > 1.0 ? (fcoords.z + 0.5) / scaleWHWH.z - 0.5 : 0.0, + ${d}.0 > 1.0 ? (fcoords.w + 0.5) / scaleWHWH.w - 0.5 : 0.0 + ); + } + `; + break; + case 'align_corners': + y = ` + vec4 getSourceFracIndex(ivec4 coords) { + vec4 resized = vec4(${f}.0 - 1.0, ${d}.0 - 1.0, ${f}.0 - 1.0, + ${d}.0 - 1.0); + vec4 original = vec4(${l}.0 - 1.0, ${a}.0 - 1.0, ${l}.0 - 1.0, + ${a}.0 - 1.0); + vec4 new_scale = original / resized; + return vec4(coords) * new_scale; + } + `; + break; + default: + throw new Error( + `resize (packed) does not support coordinateTransformMode: '${o.coordinateTransformMode}'` + ); + } + let T = Ke(s), + v = $t(), + S = ` + const vec2 inputWH = vec2(${a}.0, ${l}.0); + const vec4 scaleWHWH = vec4(float(${p}), float(${m}), float(${p}), float(${m})); + ${v} + ${y} + float getAValue(int x10, int r, int c, int d) { + return getChannel(getA(x10, r, c, d), vec2(c, d)); + } + void main() { + ${T} rc = getOutputCoords(); + + int batch = rc[0]; + int depth = rc[1]; + + // retrieve the 4 coordinates that is used in the 4 packed output values. + ivec4 coords = ivec4(rc.wz, rc.w + 1, rc.z + 1); + + // calculate the source index in fraction + vec4 sourceFrac = getSourceFracIndex(coords); + + // get the lower and upper bound of the 4 values that will be packed into one texel. + ivec4 x00 = ivec4(max(sourceFrac.xy, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.xy))); + ivec4 x01 = ivec4(max(sourceFrac.xw, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.xw))); + ivec4 x10 = ivec4(max(sourceFrac.zy, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.zy))); + ivec4 x11 = ivec4(max(sourceFrac.zw, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.zw))); + + bool hasNextRow = rc.w < ${d - 1}; + bool hasNextCol = rc.z < ${f - 1}; + + // pack x00, x01, x10, x11's top-left corner into one vec4 structure + vec4 topLeft = vec4( + getAValue(batch, depth, x00.x, x00.y), + hasNextCol ? getAValue(batch, depth, x01.x, x01.y) : 0.0, + hasNextRow ? getAValue(batch, depth, x10.x, x10.y) : 0.0, + (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.x, x11.y) : 0.0); + + // pack x00, x01, x10, x11's top-right corner into one vec4 structure + vec4 topRight = vec4( + getAValue(batch, depth, x00.x, x00.w), + hasNextCol ? getAValue(batch, depth, x01.x, x01.w) : 0.0, + hasNextRow ? getAValue(batch, depth, x10.x, x10.w) : 0.0, + (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.x, x11.w) : 0.0); + + // pack x00, x01, x10, x11's bottom-left corner into one vec4 structure + vec4 bottomLeft = vec4( + getAValue(batch, depth, x00.z, x00.y), + hasNextCol ? getAValue(batch, depth, x01.z, x01.y) : 0.0, + hasNextRow ? getAValue(batch, depth, x10.z, x10.y) : 0.0, + (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.z, x11.y) : 0.0); + + // pack x00, x01, x10, x11's bottom-right corner into one vec4 structure + vec4 bottomRight = vec4( + getAValue(batch, depth, x00.z, x00.w), + hasNextCol ? getAValue(batch, depth, x01.z, x01.w) : 0.0, + hasNextRow ? getAValue(batch, depth, x10.z, x10.w) : 0.0, + (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.z, x11.w) : 0.0); + + // calculate the interpolation fraction on u and v direction + vec4 frac = vec4(sourceFrac) - floor(sourceFrac); + vec4 clampFrac = clamp(frac, vec4(0.0), vec4(1.0)); + + vec4 top = mix(topLeft, topRight, clampFrac.ywyw); + vec4 bottom = mix(bottomLeft, bottomRight, clampFrac.ywyw); + vec4 newValue = mix(top, bottom, clampFrac.xxzz); + + ${i.output} = vec4(newValue); + } + `; + return { ...Gi, output: { dims: n, type: e[0].type, textureType: 2 }, hasMain: !0, shaderSource: S }; + }), + (xb = (t, e) => { + let o = t[0].dims, + i = e.scales, + u; + if (i.length === 0) { + let s = t[e.scalesInputIdx]; + if (s && s.size !== 0) { + if (t[e.sizesInputIdx]) + throw new Error('Only one of scales or sizes must be provided as input.'); + i = vb(s, e.mode, e.isResize); + } else { + let d = t[e.sizesInputIdx]; + if (!d || d.size === 0) throw new Error('Either scales or sizes MUST be provided as input.'); + (u = Array.from(d.integerData)), (i = wb(u, o, e.mode, e.isResize)); + } + } else if (t[e.sizesInputIdx]) + throw new Error('Only one of scales or sizes must be provided as input.'); + let n = u || o.map((s, d) => Math.floor(s * i[d])); + return [i, n]; + }), + (vb = (t, e, o) => { + let i = Array.from(t.floatData); + return lo(i, e, o), i; + }), + (wb = (t, e, o, i) => { + let u = e.length, + n = new Array(u); + for (let s = 0, d = u; s < d; s++) + if (e[s] === 0) { + if (t[s] !== 0) throw new Error('Input dim is zero but required output dim is non-zero.'); + n[s] = 1; + } else n[s] = t[s] / e[s]; + return lo(n, o, i), n; + }); + }), + bc, + _b, + gc = L(() => { + mr(), + (bc = (t, e) => (_b(e), [new Fe([e[0].dims.length], 'int32', void 0, void 0, new Int32Array(e[0].dims))])), + (_b = (t) => { + if (!t || t.length !== 1) throw new Error('Shape requires 1 input.'); + }); + }), + zi, + yc, + Tc, + xc, + Ob, + vc, + Ib, + Sb, + wc = L(() => { + Ge(), + pn(), + fe(), + ae(), + (zi = { name: 'Slice', inputNames: ['A'], inputTypes: [0] }), + (yc = (t, e, o) => (Ob(e), [t.run({ ...zi, cacheHint: o.cacheKey, get: () => xc(t, e[0], o) }, e)])), + (Tc = (t) => { + let e = t.attributes.getInts('starts'), + o = t.attributes.getInts('ends'), + i = t.attributes.getInts('axes', []); + return ee({ starts: e, ends: o, axes: i }); + }), + (xc = (t, e, o) => { + let i = o.axes.length === 0 ? e.dims.slice(0).map((a, l) => l) : o.axes, + u = U.normalizeAxes(i, e.dims.length), + n = o.starts.map((a, l) => + a > e.dims[u[l]] - 1 ? e.dims[u[l]] : U.normalizeAxis(a, e.dims[u[l]]) + ), + s = o.ends.map((a, l) => (a > e.dims[u[l]] - 1 ? e.dims[u[l]] : U.normalizeAxis(a, e.dims[u[l]]))), + d = e.dims.slice(), + f = []; + for (let a = 0; a < u.length; a++) + (d[u[a]] = s[a] - n[a]), n[a] > 0 && f.push(`outputIdx[${u[a]}] += ${n[a]};`); + let r = ` + float process(int outputIdx[${d.length}]) { + ${f.join(` + `)} + return _A(outputIdx); + }`; + return { ...zi, output: { dims: d, type: e.type, textureType: 0 }, shaderSource: r }; + }), + (Ob = (t) => { + if (!t || t.length !== 1) throw new Error('Slice requires 1 input.'); + if (Jt.indexOf(t[0].type) === -1) throw new Error('Invalid input type.'); + }), + (vc = (t, e) => { + Sb(e); + let o = Ib(t, e); + return [t.run({ ...zi, cacheHint: o.cacheKey, get: () => xc(t, e[0], o) }, [e[0]])]; + }), + (Ib = (t, e) => { + if ( + !t.session.isInitializer(e[1].dataId) || + !t.session.isInitializer(e[2].dataId) || + (e.length >= 4 && !t.session.isInitializer(e[3].dataId)) || + (e.length >= 5 && !t.session.isInitializer(e[4].dataId)) + ) + throw new Error('dynamic slice attributes are not allowed'); + if (e.length >= 5 && e[4].integerData.some((s) => s !== 1)) + throw new Error('currently non-1 steps is not supported for Slice'); + let o = Array.from(e[1].integerData), + i = Array.from(e[2].integerData), + u = e.length >= 4 ? Array.from(e[3].integerData) : [], + n = `${u};${o};${i}`; + return { starts: o, ends: i, axes: u, cacheKey: n }; + }), + (Sb = (t) => { + if (!t || t.length < 3 || t.length > 5) throw new Error('Invalid input number.'); + if (t[1].type !== 'int32' || t[1].dims.length !== 1) throw new Error('Invalid input type.'); + if (t[2].type !== 'int32' || t[2].dims.length !== 1) throw new Error('Invalid input type.'); + if (t.length >= 4 && (t[3].type !== 'int32' || t[3].dims.length !== 1)) + throw new Error('Invalid input type.'); + if (t.length >= 5 && (t[4].type !== 'int32' || t[4].dims.length !== 1)) + throw new Error('Invalid input type.'); + }); + }), + _c, + Oc, + Ic, + Sc, + Ac, + Pc, + Ec, + Dc, + Ab, + Pb, + Eb, + Lc, + Fc = L(() => { + Ge(), + fe(), + xe(), + ae(), + ao(), + (_c = { name: 'SoftmaxComputeMax', inputNames: ['A'], inputTypes: [0] }), + (Oc = { name: 'SoftmaxComputeScale', inputNames: ['A', 'Max'], inputTypes: [0, 0] }), + (Ic = { name: 'SoftMax', inputNames: ['A', 'Max', 'Norm'], inputTypes: [0, 0, 0] }), + (Sc = (t, e, o) => { + Lc(e); + let i = e[0].dims.slice(), + u = U.normalizeAxis(o.axis, i.length), + n = U.sizeToDimension(i, u), + s = U.sizeFromDimension(i, u); + return Dc(t, e, o, n, s); + }), + (Ac = (t) => ee({ axis: t.attributes.getInt('axis', 1) })), + (Pc = (t) => ee({ axis: t.attributes.getInt('axis', -1) })), + (Ec = (t, e, o) => { + Lc(e); + let i = e[0].dims.slice(), + u = U.normalizeAxis(o.axis, i.length), + n = i.length, + s = u !== n - 1, + d = [], + f = [], + r = [], + a; + s && + ((f = Array.from({ length: n }).map((y, T) => T)), + (f[u] = n - 1), + (f[n - 1] = u), + f.map((y) => d.push(i[y])), + (a = ee({ perm: f })), + (r = yr(t, e, a))); + let l = s ? U.sizeToDimension(d, n - 1) : U.sizeToDimension(i, n - 1), + p = s ? U.sizeFromDimension(d, n - 1) : U.sizeFromDimension(i, n - 1), + m = Dc(t, s ? r : e, o, l, p); + return s ? yr(t, m, a) : m; + }), + (Dc = (t, e, o, i, u) => { + let n = Ab(t, e[0], i, u, [i]), + s = t.run({ ..._c, cacheHint: o.cacheKey, get: () => n }, e), + d = Pb(t, e[0], i, u, n.output.dims, [i]), + f = t.run({ ...Oc, cacheHint: o.cacheKey, get: () => d }, [e[0], s]), + r = Eb(t, e[0], i, u, n.output.dims, d.output.dims); + return [t.run({ ...Ic, cacheHint: o.cacheKey, get: () => r }, [e[0], s, f])]; + }), + (Ab = (t, e, o, i, u) => { + let [n, s] = t.calculateTextureWidthAndHeight(e.dims, 0), + d = u.length; + if (o < 1 || i < 1) + throw new Error('Logical row count N and feature count D must be greater than or equal to 1'); + if (u.length !== 1) throw new Error('Dimensionality of the output should be 1'); + if (u[0] !== o) throw new Error('Shape of the output should be equal to logical row count'); + let f = q(t.session.backend.glContext.version), + r = ` + float process(int[${d}] indices) { + int logical_row_start_offset = indices[0] * ${i}; + + float max = getColorAsFloat(${f.texture2D}(A, offsetToCoords(logical_row_start_offset, ${n}, + ${s} ))); + for(int i=1; i<${i}; ++i) + { + float current = getColorAsFloat(${f.texture2D}(A, offsetToCoords(logical_row_start_offset + i, + ${n}, ${s}))); + if(current > max) + max = current; + } + + return max; + }`; + return { ..._c, output: { dims: u, type: e.type, textureType: 0 }, shaderSource: r }; + }), + (Pb = (t, e, o, i, u, n) => { + let [s, d] = t.calculateTextureWidthAndHeight(e.dims, 0), + f = n.length; + if (o < 1 || i < 1) + throw new Error('Logical row count N and feature count D must be greater than or equal to 1'); + if (n.length !== 1) throw new Error('Dimensionality of the output should be 1'); + if (n[0] !== o) throw new Error('Shape of the output should be equal to logical row count'); + if (u.length !== 1) throw new Error('Dimensionality of the intermediate results should be 1'); + if (u[0] !== o) + throw new Error('Shape of the intermediate results should be equal to logical row count'); + let r = q(t.session.backend.glContext.version), + a = ` + float process(int[${f}] indices) { + int logical_row_start_offset = indices[0] * ${i}; + + float norm_factor = 0.0; + float max = _Max(indices); + for(int i=0; i<${i}; ++i) + { + norm_factor += exp(getColorAsFloat(${r.texture2D}(A, offsetToCoords(logical_row_start_offset + i, + ${s}, ${d}))) - max); + } + + return norm_factor; + }`; + return { ...Oc, output: { dims: n, type: e.type, textureType: 0 }, shaderSource: a }; + }), + (Eb = (t, e, o, i, u, n) => { + let [s, d] = t.calculateTextureWidthAndHeight(e.dims, 0), + f = e.dims.length; + if (o < 1 || i < 1) + throw new Error('Logical row count N and feature count D must be greater than or equal to 1'); + if (u.length !== 1 || n.length !== 1) + throw new Error('Dimensionality of the intermediate results should be 1'); + if (u[0] !== o || n[0] !== o) + throw new Error('Shape of the intermediate results should be equal to logical row count'); + let r = ` + float process(int[${f}] indices) { + + // get offset of current logical tensor index from the 2-D texture coordinates (TexCoords) + int offset = coordsToOffset(TexCoords, ${s}, ${d}); + + //determine the logical row for this index + int logical_row_index[1]; + logical_row_index[0] = offset / ${i}; + + float norm_factor = _Norm(logical_row_index); + + // avoid possible division by 0 + // if norm_facor is 0, all elements are zero + // if so, return 0 + if(norm_factor == 0.0) + return 0.0; + + return exp(_A(indices) - _Max(logical_row_index)) / norm_factor; + }`; + return { ...Ic, output: { dims: e.dims, type: e.type, textureType: 0 }, shaderSource: r }; + }), + (Lc = (t) => { + if (!t || t.length !== 1) throw new Error('Softmax requires 1 input.'); + if (t[0].type !== 'float32' && t[0].type !== 'float64') throw new Error('Invalid input type'); + }); + }), + $c, + Cc, + kc, + Db, + Lb, + Fb, + Bc = L(() => { + Ge(), + fe(), + ae(), + ($c = { name: 'Split', inputNames: ['A'], inputTypes: [0] }), + (Cc = (t, e, o) => { + Fb(e); + let i = U.normalizeAxis(o.axis, e[0].dims.length), + u = Db(t, e, i, o), + n = []; + for (let s = 0; s < u; ++s) + n.push(t.run({ ...$c, cacheHint: `${o.cacheKey};${s}`, get: () => Lb(t, e[0], o, i, s) }, e)); + return n; + }), + (kc = (t) => { + let e = t.attributes.getInt('axis', 0), + o = t.attributes.getInts('split', []), + i = t.outputs.length; + return ee({ axis: e, split: o, numOutputs: i }); + }), + (Db = (t, e, o, i) => { + let [, u] = an.splitShape(e[0].dims, o, i.split, i.numOutputs); + return u.length; + }), + (Lb = (t, e, o, i, u) => { + let [n, s] = an.splitShape(e.dims, i, o.split, o.numOutputs), + d = s[u], + f = n[u], + r = ` + float process(int indices[${f.length}]) { + indices[${i}] += ${d}; + return _A(indices); + } + `; + return { + ...$c, + cacheHint: `${o.cacheKey}:${u}`, + output: { dims: f, type: e.type, textureType: 0 }, + shaderSource: r, + }; + }), + (Fb = (t) => { + if (!t || t.length !== 1) throw new Error('Split requires one input.'); + if ( + t[0].type !== 'int8' && + t[0].type !== 'uint8' && + t[0].type !== 'int16' && + t[0].type !== 'uint16' && + t[0].type !== 'int32' && + t[0].type !== 'uint32' && + t[0].type !== 'float32' && + t[0].type !== 'float64' && + t[0].type !== 'bool' + ) + throw new Error('Invalid input type.'); + }); + }), + Vi, + Nc, + Rc, + $b, + Cb, + Mc = L(() => { + fe(), + (Vi = (t, e, o) => { + $b(e); + let i = U.squeezeShape(e[0].dims, o); + return [t.reshapeUnpacked(e[0], i)]; + }), + (Nc = (t, e) => (Cb(e), Vi(t, [e[0]], Array.from(e[1].integerData)))), + (Rc = (t) => t.attributes.getInts('axes')), + ($b = (t) => { + if (!t || t.length !== 1) throw new Error('Squeeze requires 1 input.'); + if (t[0].type === 'string') throw new Error('invalid input tensor types.'); + }), + (Cb = (t) => { + if (!t || t.length !== 2) throw new Error('Squeeze requires 2 inputs.'); + if (t[1].type !== 'int32') throw new Error('Invalid input type.'); + }); + }), + Gc, + kb, + Bb, + Uc = L(() => { + xe(), + ae(), + (Gc = (t, e) => { + Bb(e); + let o = { name: 'Sum', inputNames: e.map((i, u) => `X${u}`), inputTypes: new Array(e.length).fill(0) }; + return [t.run({ ...o, get: () => kb(t, e, o) }, e)]; + }), + (kb = (t, e, o) => { + let i = q(t.session.backend.glContext.version), + u = e[0].dims.slice(), + n = ` + void main() { + vec4 result = ${e.map((s, d) => `${i.texture2D}(X${d},TexCoords)`).join(' + ')}; + ${i.output} = result; + } + `; + return { ...o, output: { dims: u, type: e[0].type, textureType: 0 }, hasMain: !0, shaderSource: n }; + }), + (Bb = (t) => { + if (!t || t.length === 0) throw new Error('Sum requires inputs.'); + let e = t[0].dims.length; + for (let o = 1; o < t.length; o++) { + if (e !== t[o].dims.length) throw new Error('Input shapes are mismatched.'); + for (let i = 0; i < e; i++) + if (t[0].dims[i] !== t[o].dims[i]) throw new Error('Input shapes are not matched.'); + } + if (t[0].type !== 'float32' && t[0].type !== 'float64') throw new Error('Invalid input type.'); + for (let o = 1; o < t.length; o++) + if (t[0].type !== t[o].type) throw new Error('Input types are not matched.'); + }); + }), + zc, + Nb, + Rb, + Vc = L(() => { + pn(), + ae(), + (zc = (t, e) => { + Rb(e); + let o = { name: 'Tile', inputNames: ['A'], inputTypes: [0] }; + return [t.run({ ...o, get: () => Nb(t, e, o) }, e)]; + }), + (Nb = (t, e, o) => { + let i = e[0].dims.slice(), + u = new Array(i.length), + n = []; + for (let f = 0; f < i.length; f++) + (u[f] = i[f] * e[1].numberData[f]), + n.push(`inputIdx[${f}] = int(mod(float(outputIdx[${f}]), ${i[f]}.));`); + let s = u.length, + d = ` + float process(int outputIdx[${s}]) { + int inputIdx[${s}]; + ${n.join(` +`)} + return _A(inputIdx); + } + `; + return { ...o, output: { dims: u, type: e[0].type, textureType: 0 }, shaderSource: d }; + }), + (Rb = (t) => { + if (!t || t.length !== 2) throw new Error('Tile requires 2 input.'); + if (t[1].dims.length !== 1) throw new Error('The second input shape must 1 dimension.'); + if (t[1].dims[0] !== t[0].dims.length) throw new Error('Invalid input shape.'); + if (Jt.indexOf(t[0].type) === -1) throw new Error('Invalid input type.'); + if (t[1].type !== 'int32' && t[1].type !== 'int16') throw new Error('Invalid repeat type.'); + }); + }), + Wi, + Wc, + Hc, + Mb, + Gb, + qc = L(() => { + fe(), + (Wi = (t, e, o) => { + Mb(e); + let i = U.unsqueezeShape(e[0].dims, o); + return [t.reshapeUnpacked(e[0], i)]; + }), + (Wc = (t, e) => (Gb(e), Wi(t, [e[0]], Array.from(e[1].integerData)))), + (Hc = (t) => t.attributes.getInts('axes')), + (Mb = (t) => { + if (!t || t.length !== 1) throw new Error('Unsqueeze requires 1 input.'); + if (t[0].type === 'string') throw new Error('invalid input tensor types.'); + }), + (Gb = (t) => { + if (!t || t.length !== 2) throw new Error('Unsqueeze requires 2 inputs.'); + if (t[1].type !== 'int32') throw new Error('Invalid input type.'); + }); + }), + jc, + Yc = L(() => { + nl(), + bl(), + Tl(), + Il(), + no(), + lf(), + mf(), + yf(), + vf(), + If(), + Pf(), + Ff(), + Bf(), + oo(), + Gf(), + Qf(), + sc(), + lc(), + mc(), + gc(), + wc(), + Fc(), + Bc(), + Mc(), + Uc(), + Vc(), + ao(), + Ai(), + qc(), + Mi(), + (jc = [ + ['Abs', '', '6+', Sl], + ['Acos', '', '7+', Al], + ['Add', '', '7+', ol], + ['And', '', '7+', il], + ['Asin', '', '7+', Pl], + ['Atan', '', '7+', El], + ['AveragePool', '', '7+', zf, Vf], + ['BatchNormalization', '', '7+', tl, rl], + ['Cast', '', '6+', gl, yl], + ['Ceil', '', '6+', Fl], + ['Clip', '', '6-10', Ii, Dl], + ['Clip', '', '11+', Ll], + ['Concat', '', '4+', wl, Ol], + ['Conv', '', '1+', $i, Ci], + ['ConvTranspose', '', '1+', sf, uf], + ['Cos', '', '7+', $l], + ['Div', '', '7+', al], + ['Dropout', '', '7+', Si], + ['DepthToSpace', '', '1+', df, hf], + ['Equal', '', '7+', sl], + ['Elu', '', '6+', Cl, kl], + ['Exp', '', '6+', Bl], + ['Flatten', '', '1+', bf, gf], + ['Floor', '', '6+', Nl], + ['FusedConv', 'com.microsoft', '1+', $i, Ci], + ['Gather', '', '1+', Tf, xf], + ['Gemm', '', '7-10', ki, _f], + ['Gemm', '', '11+', ki, Of], + ['GlobalAveragePool', '', '1+', Hf, qf], + ['GlobalMaxPool', '', '1+', Jf], + ['Greater', '', '7+', ul], + ['Identity', '', '1+', Si], + ['ImageScaler', '', '1+', Sf, Af], + ['InstanceNormalization', '', '6+', Df, Lf], + ['LeakyRelu', '', '6+', Rl, Ml], + ['Less', '', '7+', ll], + ['LRN', '', '1+', $f, Cf], + ['Log', '', '6+', Gl], + ['MatMul', '', '1+', Ql, ef], + ['MaxPool', '', '1+', jf, Yf], + ['Mul', '', '7+', fl], + ['Neg', '', '6+', Ul], + ['Not', '', '1+', zl], + ['Or', '', '7+', cl], + ['Pad', '', '2-10', Bi, Nf], + ['Pad', '', '11+', Rf, Mf], + ['Pow', '', '7+', pl], + ['PRelu', '', '7+', dl], + ['ReduceLogSum', '', '1+', ic, Zt], + ['ReduceMax', '', '1+', rc, Zt], + ['ReduceMean', '', '1+', tc, Zt], + ['ReduceMin', '', '1+', nc, Zt], + ['ReduceProd', '', '1+', oc, Zt], + ['ReduceSum', '', '1-12', ec, Zt], + ['ReduceSumSquare', '', '1+', ac, Zt], + ['Relu', '', '6+', Vl], + ['Reshape', '', '5+', uc], + ['Resize', '', '10', Ui, dc], + ['Resize', '', '11+', Ui, hc], + ['Shape', '', '1+', bc], + ['Sigmoid', '', '6+', Wl], + ['Sin', '', '7+', Hl], + ['Slice', '', '10+', vc], + ['Slice', '', '1-9', yc, Tc], + ['Softmax', '', '1-12', Sc, Ac], + ['Softmax', '', '13+', Ec, Pc], + ['Split', '', '2-12', Cc, kc], + ['Sqrt', '', '6+', ql], + ['Squeeze', '', '1-12', Vi, Rc], + ['Squeeze', '', '13+', Nc], + ['Sub', '', '7+', hl], + ['Sum', '', '6+', Gc], + ['Tan', '', '7+', jl], + ['Tanh', '', '6+', Yl], + ['Tile', '', '6+', zc], + ['Transpose', '', '1+', yr, cf], + ['Upsample', '', '7-8', Ni, cc], + ['Upsample', '', '9', Ni, pc], + ['Unsqueeze', '', '1-12', Wi, Hc], + ['Unsqueeze', '', '13+', Wc], + ['Xor', '', '7+', ml], + ]); + }); +function Kc(t) { + let e = {}, + o; + for (; (o = Xc.exec(t)) !== null; ) { + let i = o[3] + .split(',') + .map((u) => { + let n = u.trim().split(' '); + return n && n.length === 2 ? { type: n[0], name: n[1] } : null; + }) + .filter((u) => u !== null); + e[o[2]] = { params: i, body: o[4] }; + } + for (let i in e) { + let u = Ub.replace('__FUNC__', i), + n = new RegExp(u, 'gm'); + for (; (o = n.exec(t)) !== null; ) { + let s = o[1], + d = o[2], + f = o[3].split(','), + r = s ? `${s} ${d};` : '', + a = e[i].body, + l = ''; + e[i].params.forEach((m, y) => { + m && + (l += `${m.type} ${m.name} = ${f[y]}; +`); + }), + (a = `${l} + ${a}`), + (a = a.replace('return', `${d} = `)); + let p = ` + ${r} + { + ${a} + } + `; + t = t.replace(o[0], p); + } + } + return (t = t.replace(Xc, '')), t; +} +var Xc, + Ub, + Jc = L(() => { + (Xc = /@inline[\s\n\r]+(\w+)[\s\n\r]+([0-9a-zA-Z_]+)\s*\(([^)]*)\)\s*{(([^}]|[\n\r])*)}/gm), + (Ub = '(\\w+)?\\s+([_0-9a-zA-Z]+)\\s+=\\s+__FUNC__\\((.*)\\)\\s*;'); + }); +function Gr(t, e) { + let o = [], + i = [], + u = e != null && Array.isArray(e) && e.length === 0, + n = e == null || u ? null : zb(e, t).sort(), + s = 0; + for (let d = 0; d < t.length; ++d) { + if (n != null) { + if (n[s] === d && t[d] !== 1) throw new Error(`Can't squeeze axis ${d} since its dim '${t[d]}' is not 1`); + (n[s] == null || n[s] > d) && t[d] === 1 && (o.push(t[d]), i.push(d)), n[s] <= d && s++; + } + t[d] !== 1 && (o.push(t[d]), i.push(d)); + } + return { newShape: o, keptDims: i }; +} +function zb(t, e) { + let o = e.length; + return ( + (t = t == null ? e.map((i, u) => u) : [].concat(t)), + Cr( + t.every((i) => i >= -o && i < o), + () => `All values in axis param must be in range [-${o}, ${o}) but got axis ${t}` + ), + Cr(t.every(Vb), () => `All values in axis param must be integers but got axis ${t}`), + t.map((i) => (i < 0 ? o + i : i)) + ); +} +function Vb(t) { + return t % 1 === 0; +} +function Wb(t) { + if (t.length === 0) return 1; + let e = t[0]; + for (let o = 1; o < t.length; o++) e *= t[o]; + return e; +} +function Zc(t) { + let e = Math.ceil(Math.sqrt(t)); + return [e, Math.ceil(t / e)]; +} +var fo, + Hi = L(() => { + ut(), + fe(), + (fo = class { + constructor(t) { + this.maxTextureSize = t; + } + computeTextureWH(t, e) { + let o = this.computeTexture(t, e); + return e && e.isPacked && ((o[0] /= 2), (o[1] /= 2)), e && e.reverseWH ? [o[1], o[0]] : o; + } + computeTexture(t, e) { + let o = e && e.isPacked; + if (t.length === 0) return o ? [2, 2] : [1, 1]; + let i = this.maxTextureSize; + if (e && e.breakAxis !== void 0) { + let s = e.breakAxis >= t.length ? 1 : t.slice(e.breakAxis).reduce((f, r) => f * r), + d = e.breakAxis <= 0 ? 1 : t.slice(0, e.breakAxis).reduce((f, r) => f * r); + if (s > i || d > i) + ce.verbose( + 'TextureLayout', + `Given width/height preferences were unattainable: shape:${t}, breakAxis:${e.breakAxis}` + ); + else return [s, d]; + } + let u = t.slice(0); + o && + ((i = i * 2), + (u = u.map((s, d) => (d >= u.length - 2 ? (u[d] % 2 === 0 ? u[d] : u[d] + 1) : u[d]))), + u.length === 1 && (u = [2, u[0]])), + u.length !== 2 && (u = Gr(u).newShape); + let n = Wb(u); + return u.length <= 1 && n <= i + ? [1, n] + : u.length === 2 && u[0] <= i && u[1] <= i + ? u + : u.length === 3 && u[0] * u[1] <= i && u[2] <= i + ? [u[0] * u[1], u[2]] + : u.length === 3 && u[0] <= i && u[1] * u[2] <= i + ? [u[0], u[1] * u[2]] + : u.length === 4 && u[0] * u[1] * u[2] <= i && u[3] <= i + ? [u[0] * u[1] * u[2], u[3]] + : u.length === 4 && u[0] <= i && u[1] * u[2] * u[3] <= i + ? [u[0], u[1] * u[2] * u[3]] + : o + ? Zc(n / 4).map((s) => s * 2) + : Zc(n); + } + }); + }), + co, + Qc = L(() => { + fe(), + Vt(), + xe(), + Hi(), + Ft(), + (co = class extends pt { + constructor(t) { + super(t); + } + getFunctions() { + return { + ...this.offsetToCoords(), + ...this.coordsToOffset(), + ...this.toVec(), + ...this.valueFrom(), + ...this.getCommonUtilFuncs(), + ...this.getInputsSamplingSnippets(), + ...this.getOutputSamplingSnippet(), + }; + } + getCustomTypes() { + return {}; + } + offsetToCoords() { + let t = 'offsetToCoords'; + return { + offsetToCoords: new R(` + vec2 ${t}(int offset, int width, int height) { + int t = offset / width; + int s = offset - t*width; + vec2 coords = (vec2(s,t) + vec2(0.5,0.5)) / vec2(width, height); + return coords; + } + `), + }; + } + coordsToOffset() { + let t = 'coordsToOffset'; + return { + coordsToOffset: new R(` + int ${t}(vec2 coords, int width, int height) { + float s = coords.s * float(width); + float t = coords.t * float(height); + int offset = int(t) * width + int(s); + return offset; + } + `), + }; + } + getOutputSamplingSnippet() { + let t = this.context.outputTextureLayout; + return t.isPacked + ? this.getPackedOutputSamplingSnippet(t) + : this.getUnpackedOutputSamplingSnippet(t); + } + getPackedOutputSamplingSnippet(t) { + let e = t.unpackedShape, + o = [t.width, t.height], + i = {}, + u = 'getOutputCoords'; + switch (e.length) { + case 0: + i[u] = this.getOutputScalarCoords(); + break; + case 1: + i[u] = this.getOutputPacked1DCoords(e, o); + break; + case 2: + i[u] = this.getOutputPacked2DCoords(e, o); + break; + case 3: + i[u] = this.getOutputPacked3DCoords(e, o); + break; + default: + i[u] = this.getOutputPackedNDCoords(e, o); + } + let n = ` + void setOutput(vec4 val) { + ${q(this.context.glContext.version).output} = val; + } + `, + s = 'floatTextureSetRGBA'; + return (i[s] = new R(n)), i; + } + getUnpackedOutputSamplingSnippet(t) { + let e = t.unpackedShape, + o = [t.width, t.height], + i = {}, + u = 'getOutputCoords'; + switch (e.length) { + case 0: + i[u] = this.getOutputScalarCoords(); + break; + case 1: + i[u] = this.getOutputUnpacked1DCoords(e, o); + break; + case 2: + i[u] = this.getOutputUnpacked2DCoords(e, o); + break; + case 3: + i[u] = this.getOutputUnpacked3DCoords(e, o); + break; + case 4: + i[u] = this.getOutputUnpacked4DCoords(e, o); + break; + case 5: + i[u] = this.getOutputUnpacked5DCoords(e, o); + break; + case 6: + i[u] = this.getOutputUnpacked6DCoords(e, o); + break; + default: + throw new Error(`Unsupported output dimensionality: ${e.length}`); + } + let n = ` + void setOutput(float val) { + ${q(this.context.glContext.version).output} = vec4(val, 0, 0, 0); + } + `, + s = 'floatTextureSetR'; + return (i[s] = new R(n)), i; + } + getOutputScalarCoords() { + return new R(` + int getOutputCoords() { + return 0; + } + `); + } + getOutputPacked1DCoords(t, e) { + let o = e, + i = ''; + return o[0] === 1 + ? ((i = ` + int getOutputCoords() { + return 2 * int(TexCoords.y * ${o[1]}.0); + } + `), + new R(i)) + : o[1] === 1 + ? ((i = ` + int getOutputCoords() { + return 2 * int(TexCoords.x * ${o[0]}.0); + } + `), + new R(i)) + : ((i = ` + int getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${o[0]}, ${o[1]})); + return 2 * (resTexRC.y * ${o[0]} + resTexRC.x); + } + `), + new R(i)); + } + getOutputPacked2DCoords(t, e) { + let o = ''; + if (cr.arraysEqual(t, e)) + return ( + (o = ` + ivec2 getOutputCoords() { + return 2 * ivec2(TexCoords.xy * vec2(${e[0]}, ${e[1]})); + } + `), + new R(o) + ); + let i = e, + u = Math.ceil(t[1] / 2); + return ( + (o = ` + ivec2 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${i[0]}, ${i[1]})); + + int index = resTexRC.y * ${i[0]} + resTexRC.x; + + // reverse r and c order for packed texture + int r = imod(index, ${u}) * 2; + int c = 2 * (index / ${u}); + + return ivec2(r, c); + } + `), + new R(o) + ); + } + getOutputPacked3DCoords(t, e) { + let o = [e[0], e[1]], + i = Math.ceil(t[2] / 2), + u = i * Math.ceil(t[1] / 2), + n = ` + ivec3 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${o[0]}, ${o[1]})); + int index = resTexRC.y * ${o[0]} + resTexRC.x; + + int b = index / ${u}; + index -= b * ${u}; + + // reverse r and c order for packed texture + int r = imod(index, ${i}) * 2; + int c = 2 * (index / ${i}); + + return ivec3(b, r, c); + } + `; + return new R(n); + } + getOutputPackedNDCoords(t, e) { + let o = [e[0], e[1]], + i = Math.ceil(t[t.length - 1] / 2), + u = i * Math.ceil(t[t.length - 2] / 2), + n = u, + s = '', + d = 'b, r, c'; + for (let r = 2; r < t.length - 1; r++) + (n *= t[t.length - r - 1]), + (s = + ` + int b${r} = index / ${n}; + index -= b${r} * ${n}; + ` + s), + (d = `b${r}, ` + d); + let f = ` + ivec${t.length} getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${o[0]}, ${o[1]})); + int index = resTexRC.y * ${o[0]} + resTexRC.x; + + ${s} + + int b = index / ${u}; + index -= b * ${u}; + + // reverse r and c order for packed texture + int r = imod(index, ${i}) * 2; + int c = 2 * (index / ${i}); + + return ivec${t.length}(${d}); + } + `; + return new R(f); + } + getOutputUnpacked1DCoords(t, e) { + let o = ` + int getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${e[0]}, ${e[1]})); + return resTexRC.y * ${e[0]} + resTexRC.x; + } + `; + return new R(o); + } + getOutputUnpacked2DCoords(t, e) { + let o = ` + ivec2 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${e[0]}, ${e[1]})); + int index = resTexRC.y * ${e[0]} + resTexRC.x; + int r = index / ${t[1]}; + int c = index - r * ${t[1]}; + return ivec2(r, c); + } + `; + return new R(o); + } + getOutputUnpacked3DCoords(t, e) { + let o = '', + i = t.length, + u = null; + i < 2 && (u = []), (u = new Array(i - 1)), (u[i - 2] = t[i - 1]); + for (let d = i - 3; d >= 0; --d) u[d] = u[d + 1] * t[d + 1]; + let n = ['r', 'c', 'd'], + s = u + .map((d, f) => { + let r = `int ${n[f]} = index / ${d}`, + a = + f === u.length - 1 + ? `int ${n[f + 1]} = index - ${n[f]} * ${d}` + : `index -= ${n[f]} * ${d}`; + return `${r}; ${a};`; + }) + .join(''); + return ( + (o = ` + ivec3 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${e[0]}, ${e[1]})); + int index = resTexRC.y * ${e[0]} + resTexRC.x; + ${s} + return ivec3(r, c, d); + } + `), + new R(o) + ); + } + getOutputUnpacked4DCoords(t, e) { + let o = '', + i = t.length, + u = null; + i < 2 && (u = []), (u = new Array(i - 1)), (u[i - 2] = t[i - 1]); + for (let d = i - 3; d >= 0; --d) u[d] = u[d + 1] * t[d + 1]; + let n = ['r', 'c', 'd', 'd2'], + s = u + .map((d, f) => { + let r = `int ${n[f]} = index / ${d}`, + a = + f === u.length - 1 + ? `int ${n[f + 1]} = index - ${n[f]} * ${d}` + : `index -= ${n[f]} * ${d}`; + return `${r}; ${a};`; + }) + .join(''); + return ( + (o = ` + ivec4 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${e[0]}, ${e[1]})); + int index = resTexRC.y * ${e[0]} + resTexRC.x; + ${s} + return ivec4(r, c, d, d2); + } + `), + new R(o) + ); + } + getOutputUnpacked5DCoords(t, e) { + let o = '', + i = t.length, + u = null; + i < 2 && (u = []), (u = new Array(i - 1)), (u[i - 2] = t[i - 1]); + for (let d = i - 3; d >= 0; --d) u[d] = u[d + 1] * t[d + 1]; + let n = ['r', 'c', 'd', 'd2', 'd3'], + s = u + .map((d, f) => { + let r = `int ${n[f]} = index / ${d}`, + a = + f === u.length - 1 + ? `int ${n[f + 1]} = index - ${n[f]} * ${d}` + : `index -= ${n[f]} * ${d}`; + return `${r}; ${a};`; + }) + .join(''); + return ( + (o = ` + ivec5 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${e[0]}, ${e[1]})); + int index = resTexRC.y * ${e[0]} + resTexRC.x; + ${s} + return ivec5(r, c, d, d2, d3); + } + `), + new R(o) + ); + } + getOutputUnpacked6DCoords(t, e) { + let o = '', + i = t.length, + u = null; + i < 2 && (u = []), (u = new Array(i - 1)), (u[i - 2] = t[i - 1]); + for (let d = i - 3; d >= 0; --d) u[d] = u[d + 1] * t[d + 1]; + let n = ['r', 'c', 'd', 'd2', 'd3', 'd4'], + s = u + .map((d, f) => { + let r = `int ${n[f]} = index / ${d}`, + a = + f === u.length - 1 + ? `int ${n[f + 1]} = index - ${n[f]} * ${d}` + : `index -= ${n[f]} * ${d}`; + return `${r}; ${a};`; + }) + .join(''); + return ( + (o = ` + ivec6 getOutputCoords() { + ivec2 resTexRC = ivec2(TexCoords.xy * + vec2(${e[0]}, ${e[1]})); + int index = resTexRC.y * ${e[0]} + resTexRC.x; + ${s} + return ivec6(r, c, d, d2, d3, d4); + } + `), + new R(o) + ); + } + getCommonUtilFuncs() { + let t = {}, + e = 'uvFromFlat'; + (t[e] = new R(` + vec2 uvFromFlat(int texNumR, int texNumC, int index) { + int texC = index / texNumR; + int texR = index - texC * texNumR; + // TODO: swap texR, texC order in following function so row is corresponding to u and column is corresponding to + // v. + return (vec2(texR, texC) + halfCR) / vec2(texNumR, texNumC); + } + `)), + (e = 'packedUVfrom1D'), + (t[e] = new R(` + vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { + int texelIndex = index / 2; + int texR = texelIndex / texNumC; + int texC = texelIndex - texR * texNumC; + return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); + } + `)), + (e = 'packedUVfrom2D'), + (t[e] = new R(` + vec2 packedUVfrom2D(int texNumR, int texNumC, int texelsInLogicalRow, int row, int col) { + int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); + int texR = texelIndex / texNumC; + int texC = texelIndex - texR * texNumC; + return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); + } + `)), + (e = 'packedUVfrom3D'), + (t[e] = new R(` + vec2 packedUVfrom3D(int texNumR, int texNumC, + int texelsInBatch, int texelsInLogicalRow, int b, + int row, int col) { + int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2); + int texR = index / texNumC; + int texC = index - texR * texNumC; + return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); + } + `)), + (e = 'sampleTexture'); + let o = q(this.context.glContext.version); + return ( + (t[e] = new R(` + float sampleTexture(sampler2D textureSampler, vec2 uv) { + return ${o.texture2D}(textureSampler, uv).r; + }`)), + t + ); + } + getInputsSamplingSnippets() { + let t = {}, + e = this.context.outputTextureLayout; + return ( + this.context.programInfo.inputNames.forEach((o, i) => { + let u = this.context.inputTextureLayouts[i], + n = Kn(o); + u.isPacked + ? (t[n] = this.getPackedSamplerFromInput(n, o, u)) + : (t[n] = this.getUnpackedSamplerFromInput(n, o, u)); + let s = Mu(o); + u.unpackedShape.length <= e.unpackedShape.length && + (u.isPacked + ? (t[s] = this.getPackedSamplerAtOutputCoords(s, u, e, o)) + : (t[s] = this.getUnpackedSamplerAtOutputCoords(s, u, e, o))); + }), + t + ); + } + getPackedSamplerAtOutputCoords(t, e, o, i) { + let u = e.unpackedShape, + n = o.unpackedShape, + s = Kn(i), + d = u.length, + f = n.length, + r = Xe.getBroadcastDims(u, n), + a = Ke(f), + l = f - d, + p, + m = St(); + d === 0 + ? (p = '') + : f < 2 && r.length >= 1 + ? (p = 'coords = 0;') + : (p = r.map((F) => `coords.${m[F + l]} = 0;`).join(` +`)); + let y = ''; + f < 2 && d > 0 ? (y = 'coords') : (y = u.map((F, B) => `coords.${m[B + l]}`).join(', ')); + let T = 'return outputValue;', + v = U.size(u) === 1, + S = U.size(n) === 1; + if (d === 1 && !v && !S) + T = ` + return vec4(outputValue.xy, outputValue.xy); + `; + else if (v && !S) + f === 1 + ? (T = ` + return vec4(outputValue.x, outputValue.x, 0., 0.); + `) + : (T = ` + return vec4(outputValue.x); + `); + else if (r.length) { + let F = d - 2, + B = d - 1; + r.indexOf(F) > -1 && r.indexOf(B) > -1 + ? (T = 'return vec4(outputValue.x);') + : r.indexOf(F) > -1 + ? (T = 'return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);') + : r.indexOf(B) > -1 && (T = 'return vec4(outputValue.xx, outputValue.zz);'); + } + let E = ` + int lastDim = coords.${m[f - 1]}; + coords.${m[f - 1]} = coords.${m[f - 2]}; + coords.${m[f - 2]} = lastDim; + `, + A = ` + vec4 ${t}() { + ${a} coords = getOutputCoords(); + ${E} + ${p} + vec4 outputValue = ${s}(${y}); + ${T} + } + `; + return new R(A, ['coordinates.getOutputCoords']); + } + getUnpackedSamplerAtOutputCoords(t, e, o, i) { + let u = [o.width, o.height], + n = [e.width, e.height], + s = e.unpackedShape.length, + d = o.unpackedShape.length, + f = e.unpackedShape, + r = o.unpackedShape, + a = Kn(i); + if (s === d && cr.arraysEqual(n, u)) { + let E = ` + float ${t}() { + return sampleTexture(${i}, TexCoords); + } + `; + return new R(E, ['coordinates.sampleTexture']); + } + let l = Ke(d), + p = Xe.getBroadcastDims(f, r), + m = d - s, + y, + T = St(); + s === 0 + ? (y = '') + : d < 2 && p.length >= 1 + ? (y = 'coords = 0;') + : (y = p.map((E) => `coords.${T[E + m]} = 0;`).join(` +`)); + let v = ''; + d < 2 && s > 0 + ? (v = 'coords') + : (v = e.unpackedShape.map((E, A) => `coords.${T[A + m]}`).join(', ')); + let S = ` + float ${t}() { + ${l} coords = getOutputCoords(); + ${y} + return ${a}(${v}); + } + `; + return new R(S, ['coordinates.getOutputCoords']); + } + getPackedSamplerFromInput(t, e, o) { + switch (o.unpackedShape.length) { + case 0: + return this.getPackedSamplerScalar(t, e); + case 1: + return this.getPackedSampler1D(t, e, o); + case 2: + return this.getPackedSampler2D(t, e, o); + case 3: + return this.getPackedSampler3D(t, e, o); + default: + return this.getPackedSamplerND(t, e, o); + } + } + getUnpackedSamplerFromInput(t, e, o) { + let i = o.unpackedShape; + switch (i.length) { + case 0: + return this.getUnpackedSamplerScalar(t, e, o); + case 1: + return this.getUnpackedSampler1D(t, e, o); + case 2: + return this.getUnpackedSampler2D(t, e, o); + case 3: + return this.getUnpackedSampler3D(t, e, o); + case 4: + return this.getUnpackedSampler4D(t, e, o); + case 5: + return this.getUnpackedSampler5D(t, e, o); + case 6: + return this.getUnpackedSampler6D(t, e, o); + default: + throw new Error(`Unsupported dimension ${i.length}-D`); + } + } + getPackedSamplerScalar(t, e) { + let o = q(this.context.glContext.version), + i = ` + vec4 ${t}() { + return ${o.texture2D}(${e}, halfCR); + } + `; + return new R(i); + } + getPackedSampler1D(t, e, o) { + let i = [o.width, o.height], + u = [i[1], i[0]], + n = q(this.context.glContext.version), + s = `vec4 ${t}(int index) { + vec2 uv = packedUVfrom1D( + ${u[0]}, ${u[1]}, index); + return ${n.texture2D}(${e}, uv); + }`; + return new R(s, ['coordinates.packedUVfrom1D']); + } + getPackedSampler2D(t, e, o) { + let i = o.unpackedShape, + u = [o.width, o.height], + n = q(this.context.glContext.version), + s = u[0], + d = u[1]; + if (u != null && cr.arraysEqual(i, u)) { + let l = `vec4 ${t}(int row, int col) { + vec2 uv = (vec2(col, row) + halfCR) / vec2(${d}.0, ${s}.0); + return ${n.texture2D}(${e}, uv); + }`; + return new R(l); + } + let f = u, + r = Math.ceil(i[1] / 2), + a = `vec4 ${t}(int row, int col) { + vec2 uv = packedUVfrom2D(${f[1]}, ${f[0]}, ${r}, row, col); + return ${n.texture2D}(${e}, uv); + }`; + return new R(a, ['coordinates.packedUVfrom2D']); + } + getPackedSampler3D(t, e, o) { + let i = o.unpackedShape, + u = [o.width, o.height], + n = [u[0], u[1]], + s = q(this.context.glContext.version); + if (i[0] === 1) { + let p = i.slice(1), + m = [1, 2], + y = kr(i, p), + T = ['b', 'row', 'col'], + v = JSON.parse(JSON.stringify(o)); + v.unpackedShape = y; + let S = this.getPackedSamplerFromInput(t, e, v), + E = `${S.routineBody} + vec4 ${t}(int b, int row, int col) { + return ${t}(${Br(T, m)}); + } `; + return new R(E, S.dependencies); + } + let d = n[0], + f = n[1], + r = Math.ceil(i[2] / 2), + a = r * Math.ceil(i[1] / 2), + l = `vec4 ${t}(int b, int row, int col) { + vec2 uv = packedUVfrom3D( + ${f}, ${d}, ${a}, ${r}, b, row, col); + return ${s.texture2D}(${e}, uv);}`; + return new R(l, ['coordinates.packedUVfrom3D']); + } + getPackedSamplerND(t, e, o) { + let i = o.unpackedShape, + u = i.length, + n = [o.width, o.height], + s = q(this.context.glContext.version), + d = [n[0], n[1]], + f = d[1], + r = d[0], + a = Math.ceil(i[u - 1] / 2), + l = a * Math.ceil(i[u - 2] / 2), + p = 'int b, int row, int col', + m = `b * ${l} + (row / 2) * ${a} + (col / 2)`; + for (let T = 2; T < u - 1; T++) + (p = `int b${T}, ` + p), (l *= i[u - T - 1]), (m = `b${T} * ${l} + ` + m); + let y = `vec4 ${t}(${p}) { + int index = ${m}; + int texR = index / ${r}; + int texC = index - texR * ${r}; + vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${r}, ${f}); + return ${s.texture2D}(${e}, uv); + }`; + return new R(y); + } + getUnpackedSamplerScalar(t, e, o) { + let [i, u] = [o.width, o.height]; + if (i === 1 && u === 1) { + let s = ` + float ${t}() { + return sampleTexture(${e}, halfCR); + } + `; + return new R(s, ['coordinates.sampleTexture']); + } + let n = ` + float ${t}() { + int offset_${e} = coordsToOffset(TexCoords, ${i}, ${u}); + vec2 uv = uvFromFlat(${i}, ${u}, offset_${e}); + return sampleTexture(${e}, uv); + } + `; + return new R(n, [ + 'coordinates.uvFromFlat', + 'coordinates.sampleTexture', + 'coordinates.coordsToOffset', + ]); + } + getUnpackedSampler1D(t, e, o) { + let i = o.width, + u = o.height; + if (u === 1 && i === 1) { + let s = ` + float ${t}(int index) { + return sampleTexture(${e}, halfCR); + } + `; + return new R(s, ['coordinates.sampleTexture']); + } + if (u === 1) { + let s = ` + float ${t}(int index) { + vec2 uv = vec2((float(index) + 0.5) / ${i}.0, 0.5); + return sampleTexture(${e}, uv); + } + `; + return new R(s, ['coordinates.sampleTexture']); + } + if (i === 1) { + let s = ` + float ${t}(int index) { + vec2 uv = vec2(0.5, (float(index) + 0.5) / ${u}.0); + return sampleTexture(${e}, uv); + } + `; + return new R(s, ['coordinates.sampleTexture']); + } + let n = ` + float ${t}(int index) { + vec2 uv = uvFromFlat(${i}, ${u}, index); + return sampleTexture(${e}, uv); + } + `; + return new R(n, ['coordinates.uvFromFlat', 'coordinates.sampleTexture']); + } + getUnpackedSampler2D(t, e, o) { + let i = o.unpackedShape, + u = [o.height, o.width]; + if (u != null && cr.arraysEqual(i, u)) { + let l = u[1], + p = u[0], + m = ` + float ${t}(int row, int col) { + vec2 uv = (vec2(row, col) + halfCR) / vec2(${l}.0, ${p}.0); + return sampleTexture(${e}, uv); + } + `; + return new R(m, ['coordinates.sampleTexture']); + } + let { newShape: n, keptDims: s } = Gr(i), + d = n; + if (d.length < i.length) { + let l = kr(i, d), + p = JSON.parse(JSON.stringify(o)); + p.unpackedShape = l; + let m = ['col', 'row'], + y = ` + ${this.getUnpackedSamplerFromInput(t, e, p).routineBody} + float ${t}(int row, int col) { + return ${t}(${Br(m, s)}); + } + `; + return new R(y, ['coordinates.sampleTexture']); + } + let f = u[1], + r = u[0]; + if (r === 1) { + let l = ` + float ${t}(int row, int col) { + int offset_${e} = coordsToOffset(TexCoords, ${f}, ${r}); + float index = dot(vec3(row, col, offset_${e}), vec3(${i[1]}, 1, 1)); + vec2 uv = vec2(0.5, (index + 0.5) / ${f}.0); + return sampleTexture(${e}, uv); + } + `; + return new R(l, ['coordinates.sampleTexture', 'coordinates.coordsToOffset']); + } + if (f === 1) { + let l = ` + float ${t}(int row, int col) { + int offset_${e} = coordsToOffset(TexCoords, ${f}, ${r}); + float index = dot(vec3(row, col, offset_${e}), vec3(${i[1]}, 1, 1)); + vec2 uv = vec2((index + 0.5) / ${r}.0, 0.5); + return sampleTexture(${e}, uv); + } + `; + return new R(l, ['coordinates.sampleTexture', 'coordinates.coordsToOffset']); + } + let a = ` + float ${t}(int row, int col) { + int index = col * ${i[1]} + row; + vec2 uv = uvFromFlat(${f}, ${r}, index); + return sampleTexture(${e}, uv); + } + `; + return new R(a, [ + 'coordinates.uvFromFlat', + 'coordinates.sampleTexture', + 'coordinates.coordsToOffset', + ]); + } + getUnpackedSampler3D(t, e, o) { + let i = o.unpackedShape, + u = i[1] * i[2], + n = i[2], + { newShape: s, keptDims: d } = Gr(i), + f = s; + if (f.length < i.length) { + let p = kr(i, f), + m = ['batch', 'col', 'row'], + y = JSON.parse(JSON.stringify(o)); + y.unpackedShape = p; + let T = this.getUnpackedSamplerFromInput(t, e, y), + v = d.reverse(), + S = ` + ${T.routineBody} + float ${t}(int batch, int row, int col) { + return ${t}(${Br(m, v)}); + } + `; + return new R(S, T.dependencies); + } + let r = o.width, + a = o.height, + l = ` + float ${t}(int depth, int row, int col) { + // Explicitly use integer operations as dot() only works on floats. + int index = depth * ${u} + col * ${n} + row; + vec2 uv = uvFromFlat(${r}, ${a}, index); + return sampleTexture(${e}, uv); + } + `; + return new R(l, [ + 'coordinates.uvFromFlat', + 'coordinates.sampleTexture', + 'coordinates.coordsToOffset', + ]); + } + getUnpackedSampler4D(t, e, o) { + let i = o.unpackedShape, + u = i[3], + n = i[2] * u, + s = i[1] * n, + d = o.width, + f = o.height, + r = ` + float ${t}(int row, int col, int depth, int depth2) { + int index = row * ${s} + col * ${n} + + depth2 * ${u} + depth; + vec2 uv = uvFromFlat(${d}, ${f}, index); + return sampleTexture(${e}, uv); + } + `; + return new R(r, ['coordinates.uvFromFlat', 'coordinates.sampleTexture']); + } + getUnpackedSampler5D(t, e, o) { + let i = o.unpackedShape, + u = i[4], + n = i[3] * u, + s = i[2] * n, + d = i[1] * s, + { newShape: f, keptDims: r } = Gr(i); + if (f.length < i.length) { + let m = kr(i, f), + y = ['row', 'col', 'depth', 'depth2', 'depth3'], + T = JSON.parse(JSON.stringify(o)); + T.unpackedShape = m; + let v = ` + ${this.getUnpackedSamplerFromInput(t, e, T).routineBody} + float ${t}(int row, int col, int depth, int depth2, int depth3) { + return ${t}(${Br(y, r)}); + } + `; + return new R(v, ['coordinates.sampleTexture', 'coordinates.uvFromFlat']); + } + let a = o.width, + l = o.height, + p = ` + float ${t}(int row, int col, int depth, int depth2, int depth3) { + int index = row * ${d} + col * ${s} + depth * ${n} + + depth3 * ${u} + depth2; + vec2 uv = uvFromFlat(${a}, ${l}, index); + return sampleTexture(${e}, uv); + } + `; + return new R(p, ['coordinates.sampleTexture', 'coordinates.uvFromFlat']); + } + getUnpackedSampler6D(t, e, o) { + let i = o.unpackedShape, + u = i[5], + n = i[4] * u, + s = i[3] * n, + d = i[2] * s, + f = i[1] * d, + { newShape: r, keptDims: a } = Gr(i); + if (r.length < i.length) { + let y = kr(i, r), + T = ['row', 'col', 'depth', 'depth2', 'depth3', 'depth4'], + v = JSON.parse(JSON.stringify(o)); + v.unpackedShape = y; + let S = ` + ${this.getUnpackedSamplerFromInput(t, e, v).routineBody} + float ${t}(int row, int col, int depth, + int depth2, int depth3, int depth4) { + return ${t}(${Br(T, a)}); + } + `; + return new R(S, ['coordinates.sampleTexture', 'coordinates.uvFromFlat']); + } + let l = o.width, + p = o.height, + m = ` + float ${t}(int row, int col, int depth, + int depth2, int depth3, int depth4) { + int index = row * ${f} + col * ${d} + depth * ${s} + + depth2 * ${n} + depth3 * ${u} + depth4; + vec2 uv = uvFromFlat(${l}, ${p}, index); + return sampleTexture(${e}, uv); + } + `; + return new R(m, [ + 'coordinates.uvFromFlat', + 'coordinates.sampleTexture', + 'coordinates.coordsToOffset', + ]); + } + toVec() { + let t = this.context.outputTextureLayout, + e = t.shape.length, + o = t.strides, + i = t.width, + u = t.height, + n = []; + for (let d = 0; d < e - 1; ++d) + n.push(` + c[${d}] = offset / ${o[d]};`), + n.push(` + offset -= c[${d}] * ${o[d]};`); + n.push(` + c[${e - 1}] = offset;`); + let s = ` + void toVec(vec2 texCoords, out int c[${e}]) { + int offset = coordsToOffset(texCoords, ${i}, ${u}); + ${n.join('')} + } + void toVec(int offset, out int c[${e}]) { + ${n.join('')} + } + `; + return { toVec: new R(s, ['coordinates.coordsToOffset']) }; + } + valueFrom() { + let t = {}; + return ( + this.context.programInfo.inputNames.forEach((e, o) => { + let i = this.context.inputTextureLayouts[o], + u = (i.unpackedShape.length > 0 ? i.unpackedShape : i.shape).length, + n = `_${e}`; + (t[n] = new R(this.getValueFromSingle(e, u, i.width, i.height, !1), [ + `shapeUtils.indicesToOffset${n}`, + 'coordinates.offsetToCoords', + 'fragcolor.getColorAsFloat', + ])), + (n = n + '_T'), + (t[n] = new R(this.getValueFromSingle(e, u, i.width, i.height, !0), [ + `shapeUtils.indicesToOffset${n}`, + 'coordinates.offsetToCoords', + 'fragcolor.getColorAsFloat', + ])); + }), + t + ); + } + getValueFromSingle(t, e, o, i, u) { + let n = `_${t}`; + u && (n = n + '_T'); + let s = q(this.context.glContext.version); + return ` + float ${n}(int m[${e}]) { + int offset = indicesToOffset${n}(m); + vec2 coords = offsetToCoords(offset, ${o}, ${i}); + float value = getColorAsFloat(${s.texture2D}(${t}, coords)); + return value; + } + `; + } + getPackedValueFrom(t, e, o, i, u) { + let n = `_${t}_Pack`; + u && (n = n + '_T'); + let s = q(this.context.glContext.version); + return ` + vec4 ${n}(int m[${e}]) { + int offset = indicesToOffset_${t}(m); + vec2 coords = offsetToCoords(offset, ${o}, ${i}); + return ${s.texture2D}(${t}, coords); + } + `; + } + }); + }), + po, + ep = L(() => { + Vt(), + (po = class Pn extends pt { + constructor(e) { + super(e); + } + getFunctions() { + return { ...this.encodeFloat32(), ...this.decodeFloat32() }; + } + getCustomTypes() { + return {}; + } + encodeFloat32() { + return { + encode: new R(`highp vec4 encode(highp float f) { + return vec4(f, 0.0, 0.0, 0.0); + } + `), + }; + } + decodeFloat32() { + return { + decode: new R(`highp float decode(highp vec4 rgba) { + return rgba.r; + } + `), + }; + } + encodeUint8() { + let e = Pn.isLittleEndian() ? 'rgba.rgba=rgba.abgr;' : ''; + return { + encode: new R(` + highp vec4 encode(highp float f) { + highp float F = abs(f); + highp float Sign = step(0.0,-f); + highp float Exponent = floor(log2(F)); + highp float Mantissa = (exp2(- Exponent) * F); + Exponent = floor(log2(F) + 127.0) + floor(log2(Mantissa)); + highp vec4 rgba; + rgba[0] = 128.0 * Sign + floor(Exponent*exp2(-1.0)); + rgba[1] = 128.0 * mod(Exponent,2.0) + mod(floor(Mantissa*128.0),128.0); + rgba[2] = floor(mod(floor(Mantissa*exp2(23.0 -8.0)),exp2(8.0))); + rgba[3] = floor(exp2(23.0)*mod(Mantissa,exp2(-15.0))); + ${e} + rgba = rgba / 255.0; // values need to be normalized to [0,1] + return rgba; + } + `), + }; + } + decodeUint8() { + let e = Pn.isLittleEndian() ? 'rgba.rgba=rgba.abgr;' : ''; + return { + decode: new R(` + highp float decode(highp vec4 rgba) { + rgba = rgba * 255.0; // values need to be de-normalized from [0,1] to [0,255] + ${e} + highp float Sign = 1.0 - step(128.0,rgba[0])*2.0; + highp float Exponent = 2.0 * mod(rgba[0],128.0) + step(128.0,rgba[1]) - 127.0; + highp float Mantissa = mod(rgba[1],128.0)*65536.0 + rgba[2]*256.0 +rgba[3] + float(0x800000); + highp float Result = Sign * exp2(Exponent) * (Mantissa * exp2(-23.0 )); + return Result; + } + `), + }; + } + static isLittleEndian() { + let e = new ArrayBuffer(4), + o = new Uint32Array(e), + i = new Uint8Array(e); + if (((o[0] = 3735928559), i[0] === 239)) return !0; + if (i[0] === 222) return !1; + throw new Error('unknown endianness'); + } + }); + }), + ho, + tp = L(() => { + Vt(), + xe(), + (ho = class extends pt { + constructor(t) { + super(t); + } + getFunctions() { + return { ...this.setFragColor(), ...this.getColorAsFloat() }; + } + getCustomTypes() { + return {}; + } + setFragColor() { + let t = q(this.context.glContext.version); + return { + setFragColor: new R( + ` + void setFragColor(float value) { + ${t.output} = encode(value); + } + `, + ['encoding.encode'] + ), + }; + } + getColorAsFloat() { + return { + getColorAsFloat: new R( + ` + float getColorAsFloat(vec4 color) { + return decode(color); + } + `, + ['encoding.decode'] + ), + }; + } + }); + }), + mo, + rp = L(() => { + Vt(), + (mo = class wr extends pt { + constructor(e) { + super(e); + } + getFunctions() { + return { + ...this.bcastIndex(), + ...this.bcastMatmulIndex(), + ...this.offsetToIndices(), + ...this.indicesToOffset(), + ...this.incrementIndices(), + }; + } + getCustomTypes() { + return {}; + } + bcastIndex() { + let e = this.context.outputTextureLayout.shape.length, + o = {}; + return ( + this.context.programInfo.inputNames.forEach((i, u) => { + let n = this.context.inputTextureLayouts[u].unpackedShape; + if (n.length <= e) { + let s = n.length, + d = e - s, + f = `bcastIndices_${i}`, + r = ''; + for (let l = 0; l < s; ++l) + r += ` + realIndices[${l}] = int( mod(float(bcastedIndices[${d + l}]), ${n[l]}.0) ); + `; + let a = ` + void ${f} (int bcastedIndices[${e}], out int realIndices[${s}]) { + ${r} + } + `; + o[f] = new R(a); + } + }), + o + ); + } + bcastMatmulIndex() { + let e = this.context.outputTextureLayout.shape.length, + o = {}; + return ( + this.context.programInfo.inputNames.forEach((i, u) => { + let n = this.context.inputTextureLayouts[u].shape; + if (!(n.length < 2 || n.length > e)) { + let s = n.length, + d = e - s, + f = `bcastMatmulIndices_${i}`, + r = ''; + for (let l = 0; l < s - 2; ++l) + r += ` + realIndices[${l}] = int( mod(float(bcastedIndices[${d + l}]), ${n[l]}.0) ); + `; + let a = ` + void ${f}(int bcastedIndices[${e}], out int realIndices[${s}]) { + ${r} + realIndices[${s - 1}] = bcastedIndices[${e - 1}]; + realIndices[${s - 2}] = bcastedIndices[${e - 2}]; + } + `; + o[f] = new R(a); + } + }), + o + ); + } + indicesToOffset() { + let e = {}; + return ( + this.context.programInfo.inputNames.forEach((o, i) => { + let u = this.context.inputTextureLayouts[i].shape, + n = this.context.inputTextureLayouts[i].strides, + s = u.length, + d = `indicesToOffset_${o}`; + (e[d] = new R(wr.indexToOffsetSingle(d, s, n))), + (d = `indicesToOffset_${o}_T`), + (e[d] = new R(wr.indexToOffsetSingle(d, s, n.slice().reverse()))); + }), + e + ); + } + static indexToOffsetSingle(e, o, i) { + let u = ''; + for (let n = o - 1; n >= 0; --n) + u += ` + offset += indices[${n}] * ${i[n]}; + `; + return ` + int ${e}(int indices[${o}]) { + int offset = 0; + ${u} + return offset; + } + `; + } + offsetToIndices() { + let e = {}; + return ( + this.context.programInfo.inputNames.forEach((o, i) => { + let u = this.context.inputTextureLayouts[i].shape, + n = this.context.inputTextureLayouts[i].strides, + s = u.length, + d = `offsetToIndices_${o}`; + (e[d] = new R(wr.offsetToIndicesSingle(d, s, n))), + (d = `offsetToIndices_${o}_T`), + (e[d] = new R(wr.offsetToIndicesSingle(d, s, n.slice().reverse()))); + }), + e + ); + } + static offsetToIndicesSingle(e, o, i) { + let u = []; + for (let n = 0; n < o - 1; ++n) + u.push(` + indices[${n}] = offset / ${i[n]};`), + u.push(` + offset -= indices[${n}] * ${i[n]};`); + return ( + u.push(` + indices[${o - 1}] = offset;`), + ` + void ${e}(int offset, out int indices[${o}]) { + ${u.join('')} + } + ` + ); + } + incrementIndices() { + let e = {}; + return ( + this.context.programInfo.inputNames.forEach((o, i) => { + let u = this.context.inputTextureLayouts[i].shape, + n = u.length, + s = `incrementIndices_${o}`, + d = ''; + for (let r = 0; r < n; ++r) + d += ` + shape[${r}] = ${u[r]};`; + let f = ` + void ${s}(int axis, out int indices[${n}]) { + int shape[${n}]; + ${d}; + for(int i = ${n} -1 ; i >= 0; --i) { + if(i > axis) continue; + indices[i] += 1; + if(indices[i] < shape[i]) { + break; + } + indices[i] = 0; + } + } + `; + e[s] = new R(f); + }), + e + ); + } + }); + }), + bo, + np = L(() => { + Vt(), + (bo = class extends pt { + constructor(t) { + super(t); + } + getCustomTypes() { + return {}; + } + getFunctions() { + return { + ...this.binaryVecFunctions(), + ...this.copyVec(), + ...this.setVecItem(), + ...this.getVecItem(), + }; + } + binaryVecFunctions() { + let t = this.context.outputTextureLayout.shape.length, + e = { add: '+=', sub: '-=', mul: '*=', div: '/=' }, + o = {}; + for (let i in e) { + let u = `${i}Vec`, + n = ''; + for (let d = 0; d < t; ++d) + n += ` + dest[${d}] ${e[i]} src[${d}]; + `; + let s = ` + void ${u}(int src[${t}], out int dest[${t}]) { + ${n} + } + `; + o[u] = new R(s); + } + return o; + } + copyVec() { + let t = this.context.outputTextureLayout.shape.length, + e = ''; + for (let i = 0; i < t; ++i) + e += ` + dest[${i}] = src[${i}]; + `; + let o = ` + void copyVec(int src[${t}], out int dest[${t}]) { + ${e} + } + `; + return { copyVec: new R(o) }; + } + setVecItem() { + let t = this.context.outputTextureLayout.shape.length, + e = ` + if(index < 0) + index =${t} + index; + if (index == 0) + m[0] = value; + `; + for (let i = 1; i < t - 1; ++i) + e += ` + else if (index == ${i}) + m[${i}] = value; + `; + e += ` + else + m[${t - 1}] = value; + `; + let o = ` + void setVecItem(out int m[${t}], int index, int value) { + ${e} + } + `; + return { setVecItem: new R(o) }; + } + getVecItem() { + let t = this.context.outputTextureLayout.shape.length, + e = ` + if(index < 0) + index = ${t} + index; + if (index == 0) + return m[0]; + `; + for (let i = 1; i < t - 1; ++i) + e += ` + else if (index == ${i}) + return m[${i}]; + `; + e += ` + else + return m[${t - 1}]; + `; + let o = ` + int getVecItem(int m[${t}], int index) { + ${e} + } + `; + return { getVecItem: new R(o) }; + } + }); + }), + qi, + op = L(() => { + Qc(), ep(), tp(), rp(), np(), (qi = { encoding: po, fragcolor: ho, vec: bo, shapeUtils: mo, coordinates: co }); + }), + go, + ip = L(() => { + Vt(), + Jc(), + op(), + xe(), + (go = class { + constructor(t, e, o, i) { + (this.libs = {}), + (this.glslLibRoutineDependencyGraph = {}), + (this.context = new eo(t, e, o, i)), + Object.keys(qi).forEach((n) => { + let s = new qi[n](this.context); + this.libs[n] = s; + }); + let u = this.glslLibRoutineDependencyGraph; + for (let n in this.libs) { + let s = this.libs[n].getFunctions(); + for (let d in s) { + let f = n + '.' + d, + r; + u[f] + ? ((r = u[f]), (r.routineBody = s[d].routineBody)) + : ((r = new cn(f, s[d].routineBody)), (u[f] = r)); + let a = s[d].dependencies; + if (a) + for (let l = 0; l < a.length; ++l) + if (u[a[l]]) r.addDependency(u[a[l]]); + else { + let p = new cn(a[l]); + (u[a[l]] = p), r.addDependency(p); + } + } + } + } + preprocess() { + let t = this.context.programInfo, + e = t.shaderSource; + return ( + this.context.programInfo.hasMain || + (e = `${e} + ${Ru(this.context.glContext.version, this.context.outputTextureLayout.shape.length)}`), + (e = Kc(e)), + `${Nu(this.context.glContext.version)} + ${this.getUniforms(t.inputNames, t.variables)} + ${this.getImports(e)} + ${e}` + ); + } + getImports(t) { + let e = this.selectGlslLibRoutinesToBeIncluded(t); + if (e.length === 0) return ''; + let o = ''; + for (let i = 0; i < e.length; ++i) + if (e[i].routineBody) + o += + e[i].routineBody + + ` +`; + else throw new Error(`Missing body for the Glsl Library routine: ${e[i].name}`); + return o; + } + selectGlslLibRoutinesToBeIncluded(t) { + let e = []; + return ( + Object.keys(this.glslLibRoutineDependencyGraph).forEach((o) => { + let i = o.split('.')[1]; + t.indexOf(i) !== -1 && e.push(this.glslLibRoutineDependencyGraph[o]); + }), + to.returnOrderedNodes(e) + ); + } + getUniforms(t, e) { + let o = []; + if (t) for (let i of t) o.push(`uniform sampler2D ${i};`); + if (e) + for (let i of e) + o.push(`uniform ${i.type} ${i.name}${i.arrayLength ? `[${i.arrayLength}]` : ''};`); + return o.join(` +`); + } + }); + }), + yo, + ap = L(() => { + vt(), + ut(), + ip(), + xe(), + (yo = class { + constructor(t, e, o) { + (this.profiler = t), + (this.glContext = e), + (this.textureLayoutStrategy = o), + (this.repo = new Map()), + (this.attributesBound = !1); + } + getArtifact(t) { + return this.repo.get(t); + } + setArtifact(t, e) { + this.repo.set(t, e); + } + run(t, e, o) { + this.profiler.event( + 'op', + `ProgramManager.run ${t.programInfo.name ?? 'unknown kernel'}`, + () => { + let i = this.glContext.gl, + u = t.program; + i.useProgram(u); + try { + this.bindOutput(o), + this.attributesBound || this.bindAttributes(t.attribLocations), + this.bindUniforms(t.uniformLocations, t.programInfo.variables ?? [], e); + } catch (n) { + throw (ce.error('ProgramManager', t.programInfo.shaderSource), n); + } + this.profiler.event('backend', 'GlContext.draw()', () => { + this.glContext.draw(); + }); + }, + this.glContext + ); + } + dispose() { + this.vertexShader && this.glContext.deleteShader(this.vertexShader), + this.repo.forEach((t) => this.glContext.deleteProgram(t.program)); + } + build(t, e, o) { + return this.profiler.event('backend', 'ProgramManager.build', () => { + let i = new go(this.glContext, t, e, o), + u = i.preprocess(), + n = this.compile(u); + return { + programInfo: t, + program: n, + uniformLocations: this.getUniformLocations( + n, + i.context.programInfo.inputNames, + i.context.programInfo.variables + ), + attribLocations: this.getAttribLocations(n), + }; + }); + } + compile(t) { + if (!this.vertexShader) { + ce.verbose('ProrgramManager', 'Compiling and caching Vertex shader for the first time'); + let i = Bu(this.glContext.version); + this.vertexShader = this.glContext.compileShader(i, this.glContext.gl.VERTEX_SHADER); + } + Z.debug && + ce.verbose( + 'ProrgramManager', + `FragShader: +${t} +` + ); + let e = this.glContext.compileShader(t, this.glContext.gl.FRAGMENT_SHADER), + o = this.glContext.createProgram(this.vertexShader, e); + return this.glContext.deleteShader(e), o; + } + bindOutput(t) { + let e = t.width, + o = t.height; + ce.verbose( + 'ProrgramManager', + `Binding output texture to Framebuffer: w/h=${e}/${o}, shape=${t.shape}, type=${t.tensor.type}` + ), + this.glContext.attachFramebuffer(t.texture, e, o); + } + bindAttributes(t) { + let e = t.position, + o = t.textureCoord; + this.glContext.setVertexAttributes(e, o), (this.attributesBound = !0); + } + bindUniforms(t, e, o) { + let i = this.glContext.gl, + u = 0; + for (let { name: n, type: s, location: d, arrayLength: f } of t) { + let r = e.find((a) => a.name === n)?.data; + if (s !== 'sampler2D' && !r) + throw new Error(`variable '${n}' does not have data defined in program info`); + switch (s) { + case 'sampler2D': + this.bindTexture(o[u], d, u), u++; + break; + case 'float': + f ? i.uniform1fv(d, r) : i.uniform1f(d, r); + break; + case 'int': + f ? i.uniform1iv(d, r) : i.uniform1i(d, r); + break; + default: + throw new Error(`Uniform not implemented: ${s}`); + } + } + } + bindTexture(t, e, o) { + this.glContext.bindTextureToUniform(t.texture, o, e); + } + getAttribLocations(t) { + return { + position: this.getAttribLocation(t, 'position'), + textureCoord: this.getAttribLocation(t, 'textureCoord'), + }; + } + getUniformLocations(t, e, o) { + let i = []; + if (e) + for (let u of e) + i.push({ name: u, type: 'sampler2D', location: this.getUniformLocation(t, u) }); + if (o) for (let u of o) i.push({ ...u, location: this.getUniformLocation(t, u.name) }); + return i; + } + getUniformLocation(t, e) { + let o = this.glContext.gl.getUniformLocation(t, e); + if (o === null) throw new Error(`Uniform ${e} not found.`); + return o; + } + getAttribLocation(t, e) { + return this.glContext.gl.getAttribLocation(t, e); + } + }); + }), + To, + sp = L(() => { + ut(), + ln(), + (To = class { + constructor(t, e, o, i) { + (this.glContext = t), + (this.layoutStrategy = e), + (this.profiler = o), + (this.config = i), + (this.pendingRead = new Map()), + i.reuseTextures && + ((this.inUseTextures = new Map()), + (this.idleTextures = new Map()), + (this.textureLookup = new Map())); + } + createTextureFromLayout(t, e, o, i) { + let u = this.toEncoderType(t), + n = this.glContext.getEncoder(u, e.channels || 1, i); + if (e.isPacked && i === 1) throw new Error('not implemented'); + let s = e.width, + d = e.height, + f, + r; + if (this.config.reuseTextures) { + (f = `${s}x${d}_${n.format}_${n.internalFormat}_${n.textureType}`), + (r = this.inUseTextures.get(f)), + r || ((r = []), this.inUseTextures.set(f, r)); + let l = this.idleTextures.get(f); + if (l && l.length > 0) { + let p = l.pop(); + return ( + r.push(p), + i === 1 && this.glContext.updateTexture(p, s, d, n, this.toTextureData(t, o)), + p + ); + } + } + ce.verbose('TextureManager', `Creating new texture of size ${e.width}x${e.height}`); + let a = this.glContext.allocateTexture(s, d, n, this.toTextureData(t, o)); + return this.config.reuseTextures && (r.push(a), this.textureLookup.set(a, f)), a; + } + readTexture(t, e, o) { + return ( + o || (o = 1), + this.profiler.event('backend', 'TextureManager.readTexture', () => { + let i = t.shape.reduce((n, s) => n * s) * o, + u = this.glContext.readTexture( + t.texture, + t.width, + t.height, + i, + this.toEncoderType(e), + o + ); + return this.toTensorData(e, u); + }) + ); + } + async readTextureAsync(t, e, o) { + let i = t.tensor.dataId; + if ((o || (o = 1), this.pendingRead.has(i))) { + let u = this.pendingRead.get(i); + return new Promise((n) => u?.push(n)); + } + return this.profiler.event('backend', 'TextureManager.readTextureAsync', async () => { + this.pendingRead.set(i, []); + let u = t.shape.reduce((f, r) => f * r) * o; + await this.glContext.createAndWaitForFence(); + let n = this.glContext.readTexture(t.texture, t.width, t.height, u, this.toEncoderType(e), o), + s = this.toTensorData(e, n), + d = this.pendingRead.get(i); + return this.pendingRead.delete(i), d?.forEach((f) => f(s)), s; + }); + } + readUint8TextureAsFloat(t) { + return this.profiler.event('backend', 'TextureManager.readUint8TextureAsFloat', () => { + let e = t.shape.reduce((i, u) => i * u), + o = this.glContext.readTexture(t.texture, t.width, t.height, e * 4, 'byte', 4); + return new Float32Array(o.buffer, o.byteOffset, e); + }); + } + releaseTexture(t, e) { + let o; + if (this.config.reuseTextures && ((o = this.textureLookup.get(t.texture)), o)) { + e && this.textureLookup.delete(o); + let i = this.inUseTextures.get(o); + if (i) { + let u = i.indexOf(t.texture); + if (u !== -1) { + i.splice(u, 1); + let n = this.idleTextures.get(o); + n || ((n = []), this.idleTextures.set(o, n)), n.push(t.texture); + } + } + } + (!o || e) && + (ce.verbose('TextureManager', `Deleting texture of size ${t.width}x${t.height}`), + this.glContext.deleteTexture(t.texture)); + } + toTensorData(t, e) { + switch (t) { + case 'int16': + return e instanceof Int16Array ? e : Int16Array.from(e); + case 'int32': + return e instanceof Int32Array ? e : Int32Array.from(e); + case 'int8': + return e instanceof Int8Array ? e : Int8Array.from(e); + case 'uint16': + return e instanceof Uint16Array ? e : Uint16Array.from(e); + case 'uint32': + return e instanceof Uint32Array ? e : Uint32Array.from(e); + case 'uint8': + case 'bool': + return e instanceof Uint8Array ? e : Uint8Array.from(e); + case 'float32': + return e instanceof Float32Array ? e : Float32Array.from(e); + case 'float64': + return e instanceof Float64Array ? e : Float64Array.from(e); + default: + throw new Error(`TensorData type ${t} is not supported`); + } + } + toTextureData(t, e) { + if (e) return e instanceof Float32Array ? e : new Float32Array(e); + } + toEncoderType(t) { + return 'float'; + } + clearActiveTextures() { + this.glContext.clearActiveTextures(); + } + }); + }), + xo, + up = L(() => { + ut(), + ws(), + Qu(), + Yc(), + ap(), + Hi(), + sp(), + (xo = class { + constructor(t, e) { + (this.backend = t), + (this.context = e), + (this.layoutStrategy = new fo(t.glContext.maxTextureSize)), + (this.programManager = new yo(this.context.profiler, t.glContext, this.layoutStrategy)), + (this.textureManager = new To(t.glContext, this.layoutStrategy, this.context.profiler, { + reuseTextures: t.textureCacheMode === 'full', + })), + (this.packedTextureDataCache = new Map()), + (this.unpackedTextureDataCache = new Map()), + (this.pack = t.pack), + (this.pack2unpackMap = new Map()), + (this.unpack2packMap = new Map()); + } + createInferenceHandler() { + return new Qn(this); + } + onGraphInitialized(t) { + let e = t + .getValues() + .filter((o) => o.from === -1 && o.tensor) + .map((o) => o.tensor.dataId); + this.initializers = new Set(e); + } + isInitializer(t) { + return this.initializers ? this.initializers.has(t) : !1; + } + addInitializer(t) { + this.initializers.add(t); + } + getTextureData(t, e) { + return e ? this.packedTextureDataCache.get(t) : this.unpackedTextureDataCache.get(t); + } + setTextureData(t, e, o = !1) { + ce.verbose('WebGLSessionHandler', 'Storing Texture data in cache'), + o ? this.packedTextureDataCache.set(t, e) : this.unpackedTextureDataCache.set(t, e); + } + dispose() { + this.programManager.dispose(), + this.textureManager.clearActiveTextures(), + this.packedTextureDataCache.forEach((t) => this.textureManager.releaseTexture(t, !0)), + (this.packedTextureDataCache = new Map()), + this.unpackedTextureDataCache.forEach((t) => this.textureManager.releaseTexture(t, !0)), + (this.unpackedTextureDataCache = new Map()); + } + resolve(t, e, o) { + let i = vs(t, e, jc); + return { impl: i.opImpl, context: i.opInit ? i.opInit(t, o) : t }; + } + }); + }); +function Hb(t) { + let e = 0; + for (; e < t.length && t[e](); ++e); + return e - 1; +} +var hn, + lp = L(() => { + vt(), + ln(), + ln(), + Ft(), + (hn = class { + constructor(t, e) { + (this.frameBufferBound = !1), + (this.itemsToPoll = []), + (this.gl = t), + (this.version = e), + this.getExtensions(), + (this.vertexbuffer = this.createVertexbuffer()), + (this.framebuffer = this.createFramebuffer()), + this.queryVitalParameters(); + } + allocateTexture(t, e, o, i) { + let u = this.gl, + n = u.createTexture(); + u.bindTexture(u.TEXTURE_2D, n), + u.texParameteri(u.TEXTURE_2D, u.TEXTURE_MIN_FILTER, u.NEAREST), + u.texParameteri(u.TEXTURE_2D, u.TEXTURE_MAG_FILTER, u.NEAREST), + u.texParameteri(u.TEXTURE_2D, u.TEXTURE_WRAP_S, u.CLAMP_TO_EDGE), + u.texParameteri(u.TEXTURE_2D, u.TEXTURE_WRAP_T, u.CLAMP_TO_EDGE); + let s = i ? o.encode(i, t * e) : null; + return ( + u.texImage2D(u.TEXTURE_2D, 0, o.internalFormat, t, e, 0, o.format, o.textureType, s), + this.checkError(), + n + ); + } + updateTexture(t, e, o, i, u) { + let n = this.gl; + n.bindTexture(n.TEXTURE_2D, t); + let s = i.encode(u, e * o); + n.texSubImage2D(n.TEXTURE_2D, 0, 0, 0, e, o, i.format, i.textureType, s), this.checkError(); + } + attachFramebuffer(t, e, o) { + let i = this.gl; + i.bindTexture(i.TEXTURE_2D, t), + i.bindFramebuffer(i.FRAMEBUFFER, this.framebuffer), + i.framebufferTexture2D(i.FRAMEBUFFER, i.COLOR_ATTACHMENT0, i.TEXTURE_2D, t, 0), + this.checkError(), + i.viewport(0, 0, e, o), + i.scissor(0, 0, e, o); + } + readTexture(t, e, o, i, u, n) { + let s = this.gl; + n || (n = 1), this.frameBufferBound || this.attachFramebuffer(t, e, o); + let d = this.getEncoder(u, n), + f = d.allocate(e * o); + return ( + s.bindTexture(s.TEXTURE_2D, t), + s.framebufferTexture2D(s.FRAMEBUFFER, s.COLOR_ATTACHMENT0, s.TEXTURE_2D, t, 0), + s.readPixels(0, 0, e, o, s.RGBA, d.textureType, f), + this.checkError(), + d.decode(f, i) + ); + } + isFramebufferReady() { + return !0; + } + getActiveTexture() { + let t = this.gl; + return `TEXTURE${t.getParameter(this.gl.ACTIVE_TEXTURE) - t.TEXTURE0}`; + } + getTextureBinding() { + return this.gl.getParameter(this.gl.TEXTURE_BINDING_2D); + } + getFramebufferBinding() { + return this.gl.getParameter(this.gl.FRAMEBUFFER_BINDING); + } + setVertexAttributes(t, e) { + let o = this.gl; + o.vertexAttribPointer(t, 3, o.FLOAT, !1, 20, 0), + o.enableVertexAttribArray(t), + e !== -1 && (o.vertexAttribPointer(e, 2, o.FLOAT, !1, 20, 12), o.enableVertexAttribArray(e)), + this.checkError(); + } + createProgram(t, e) { + let o = this.gl, + i = o.createProgram(); + return o.attachShader(i, t), o.attachShader(i, e), o.linkProgram(i), i; + } + compileShader(t, e) { + let o = this.gl, + i = o.createShader(e); + if (!i) throw new Error(`createShader() returned null with type ${e}`); + if ((o.shaderSource(i, t), o.compileShader(i), o.getShaderParameter(i, o.COMPILE_STATUS) === !1)) + throw new Error(`Failed to compile shader: ${o.getShaderInfoLog(i)} +Shader source: +${t}`); + return i; + } + deleteShader(t) { + this.gl.deleteShader(t); + } + bindTextureToUniform(t, e, o) { + let i = this.gl; + i.activeTexture(i.TEXTURE0 + e), + this.checkError(), + i.bindTexture(i.TEXTURE_2D, t), + this.checkError(), + i.uniform1i(o, e), + this.checkError(); + } + draw() { + this.gl.drawArrays(this.gl.TRIANGLE_STRIP, 0, 4), this.checkError(); + } + checkError() { + if (Z.debug) { + let t = this.gl, + e = t.getError(), + o = ''; + switch (e) { + case t.NO_ERROR: + return; + case t.INVALID_ENUM: + o = 'INVALID_ENUM'; + break; + case t.INVALID_VALUE: + o = 'INVALID_VALUE'; + break; + case t.INVALID_OPERATION: + o = 'INVALID_OPERATION'; + break; + case t.INVALID_FRAMEBUFFER_OPERATION: + o = 'INVALID_FRAMEBUFFER_OPERATION'; + break; + case t.OUT_OF_MEMORY: + o = 'OUT_OF_MEMORY'; + break; + case t.CONTEXT_LOST_WEBGL: + o = 'CONTEXT_LOST_WEBGL'; + break; + default: + o = `Unknown WebGL Error: ${e.toString(16)}`; + } + throw new Error(o); + } + } + deleteTexture(t) { + this.gl.deleteTexture(t); + } + deleteProgram(t) { + this.gl.deleteProgram(t); + } + getEncoder(t, e, o = 0) { + if (this.version === 2) return new Jn(this.gl, e); + switch (t) { + case 'float': + return o === 1 || this.isRenderFloat32Supported + ? new un(this.gl, e) + : new un(this.gl, e, this.textureHalfFloatExtension.HALF_FLOAT_OES); + case 'int': + throw new Error('not implemented'); + case 'byte': + return new Zn(this.gl, e); + default: + throw new Error(`Invalid dataType: ${t}`); + } + } + clearActiveTextures() { + let t = this.gl; + for (let e = 0; e < this.maxTextureImageUnits; ++e) + t.activeTexture(t.TEXTURE0 + e), t.bindTexture(t.TEXTURE_2D, null); + } + dispose() { + if (this.disposed) return; + let t = this.gl; + t.bindFramebuffer(t.FRAMEBUFFER, null), + t.deleteFramebuffer(this.framebuffer), + t.bindBuffer(t.ARRAY_BUFFER, null), + t.deleteBuffer(this.vertexbuffer), + t.bindBuffer(t.ELEMENT_ARRAY_BUFFER, null), + t.finish(), + (this.disposed = !0); + } + createDefaultGeometry() { + return new Float32Array([-1, 1, 0, 0, 1, -1, -1, 0, 0, 0, 1, 1, 0, 1, 1, 1, -1, 0, 1, 0]); + } + createVertexbuffer() { + let t = this.gl, + e = t.createBuffer(); + if (!e) throw new Error('createBuffer() returned null'); + let o = this.createDefaultGeometry(); + return ( + t.bindBuffer(t.ARRAY_BUFFER, e), + t.bufferData(t.ARRAY_BUFFER, o, t.STATIC_DRAW), + this.checkError(), + e + ); + } + createFramebuffer() { + let t = this.gl.createFramebuffer(); + if (!t) throw new Error('createFramebuffer returned null'); + return t; + } + queryVitalParameters() { + let t = this.gl; + if ( + ((this.isFloatTextureAttachableToFrameBuffer = this.checkFloatTextureAttachableToFrameBuffer()), + (this.isRenderFloat32Supported = this.checkRenderFloat32()), + (this.isFloat32DownloadSupported = this.checkFloat32Download()), + this.version === 1 && !this.textureHalfFloatExtension && !this.isRenderFloat32Supported) + ) + throw new Error('both float32 and float16 TextureType are not supported'); + (this.isBlendSupported = !this.isRenderFloat32Supported || this.checkFloat32Blend()), + (this.maxTextureSize = t.getParameter(t.MAX_TEXTURE_SIZE)), + (this.maxTextureImageUnits = t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)), + this.version; + } + getExtensions() { + this.version === 2 + ? ((this.colorBufferFloatExtension = this.gl.getExtension('EXT_color_buffer_float')), + (this.disjointTimerQueryWebgl2Extension = this.gl.getExtension( + 'EXT_disjoint_timer_query_webgl2' + ))) + : ((this.textureFloatExtension = this.gl.getExtension('OES_texture_float')), + (this.textureHalfFloatExtension = this.gl.getExtension('OES_texture_half_float'))); + } + checkFloatTextureAttachableToFrameBuffer() { + let t = this.gl, + e = t.createTexture(); + t.bindTexture(t.TEXTURE_2D, e); + let o = this.version === 2 ? t.RGBA32F : t.RGBA; + t.texImage2D(t.TEXTURE_2D, 0, o, 1, 1, 0, t.RGBA, t.FLOAT, null); + let i = t.createFramebuffer(); + t.bindFramebuffer(t.FRAMEBUFFER, i), + t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, e, 0); + let u = t.checkFramebufferStatus(t.FRAMEBUFFER) === t.FRAMEBUFFER_COMPLETE; + return ( + t.bindTexture(t.TEXTURE_2D, null), + t.bindFramebuffer(t.FRAMEBUFFER, null), + t.deleteTexture(e), + t.deleteFramebuffer(i), + u + ); + } + checkRenderFloat32() { + if (this.version === 2) { + if (!this.colorBufferFloatExtension) return !1; + } else if (!this.textureFloatExtension) return !1; + return this.isFloatTextureAttachableToFrameBuffer; + } + checkFloat32Download() { + if (this.version === 2) { + if (!this.colorBufferFloatExtension) return !1; + } else if (!this.textureFloatExtension || !this.gl.getExtension('WEBGL_color_buffer_float')) + return !1; + return this.isFloatTextureAttachableToFrameBuffer; + } + checkFloat32Blend() { + let t = this.gl, + e, + o, + i, + u, + n; + try { + (e = t.createTexture()), (o = t.createFramebuffer()), t.bindTexture(t.TEXTURE_2D, e); + let s = this.version === 2 ? t.RGBA32F : t.RGBA; + return ( + t.texImage2D(t.TEXTURE_2D, 0, s, 1, 1, 0, t.RGBA, t.FLOAT, null), + t.bindFramebuffer(t.FRAMEBUFFER, o), + t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, e, 0), + t.enable(t.BLEND), + (i = t.createShader(t.VERTEX_SHADER)), + !i || + (t.shaderSource(i, 'void main(){}'), + t.compileShader(i), + (u = t.createShader(t.FRAGMENT_SHADER)), + !u) || + (t.shaderSource(u, 'precision highp float;void main(){gl_FragColor=vec4(0.5);}'), + t.compileShader(u), + (n = t.createProgram()), + !n) + ? !1 + : (t.attachShader(n, i), + t.attachShader(n, u), + t.linkProgram(n), + t.useProgram(n), + t.drawArrays(t.POINTS, 0, 1), + t.getError() === t.NO_ERROR) + ); + } finally { + t.disable(t.BLEND), + n && t.deleteProgram(n), + i && t.deleteShader(i), + u && t.deleteShader(u), + o && (t.bindFramebuffer(t.FRAMEBUFFER, null), t.deleteFramebuffer(o)), + e && (t.bindTexture(t.TEXTURE_2D, null), t.deleteTexture(e)); + } + } + beginTimer() { + if (this.version === 2 && this.disjointTimerQueryWebgl2Extension) { + let t = this.gl, + e = this.disjointTimerQueryWebgl2Extension, + o = t.createQuery(); + return t.beginQuery(e.TIME_ELAPSED_EXT, o), o; + } else throw new Error('WebGL1 profiling currently not supported.'); + } + endTimer() { + if (this.version === 2 && this.disjointTimerQueryWebgl2Extension) { + let t = this.gl, + e = this.disjointTimerQueryWebgl2Extension; + t.endQuery(e.TIME_ELAPSED_EXT); + return; + } else throw new Error('WebGL1 profiling currently not supported'); + } + isTimerResultAvailable(t) { + let e = !1, + o = !1; + if (this.version === 2 && this.disjointTimerQueryWebgl2Extension) { + let i = this.gl, + u = this.disjointTimerQueryWebgl2Extension; + (e = i.getQueryParameter(t, i.QUERY_RESULT_AVAILABLE)), + (o = i.getParameter(u.GPU_DISJOINT_EXT)); + } else throw new Error('WebGL1 profiling currently not supported'); + return e && !o; + } + getTimerResult(t) { + let e = 0; + if (this.version === 2) { + let o = this.gl; + (e = o.getQueryParameter(t, o.QUERY_RESULT)), o.deleteQuery(t); + } else throw new Error('WebGL1 profiling currently not supported'); + return e / 1e6; + } + async waitForQueryAndGetTime(t) { + return await gi(() => this.isTimerResultAvailable(t)), this.getTimerResult(t); + } + async createAndWaitForFence() { + let t = this.createFence(this.gl); + return this.pollFence(t); + } + createFence(t) { + let e, + o = t, + i = o.fenceSync(o.SYNC_GPU_COMMANDS_COMPLETE, 0); + return ( + t.flush(), + i === null + ? (e = () => !0) + : (e = () => { + let u = o.clientWaitSync(i, 0, 0); + return u === o.ALREADY_SIGNALED || u === o.CONDITION_SATISFIED; + }), + { query: i, isFencePassed: e } + ); + } + async pollFence(t) { + return new Promise((e) => { + this.addItemToPoll( + () => t.isFencePassed(), + () => e() + ); + }); + } + pollItems() { + let t = Hb(this.itemsToPoll.map((e) => e.isDoneFn)); + for (let e = 0; e <= t; ++e) { + let { resolveFn: o } = this.itemsToPoll[e]; + o(); + } + this.itemsToPoll = this.itemsToPoll.slice(t + 1); + } + async addItemToPoll(t, e) { + this.itemsToPoll.push({ isDoneFn: t, resolveFn: e }), + !(this.itemsToPoll.length > 1) && + (await gi(() => (this.pollItems(), this.itemsToPoll.length === 0))); + } + }); + }); +function ji(t) { + let e; + if ( + ((!t || t === 'webgl2') && 'webgl2' in Ur + ? (e = Ur.webgl2) + : (!t || t === 'webgl') && 'webgl' in Ur && (e = Ur.webgl), + !e) + ) + try { + let i = jb(); + e = fp(i, t); + } catch { + let i = qb(); + e = fp(i, t); + } + t = t || e.version === 1 ? 'webgl' : 'webgl2'; + let o = e.gl; + return ( + (Ur[t] = e), + o.isContextLost() + ? (delete Ur[t], ji(t)) + : (o.disable(o.DEPTH_TEST), + o.disable(o.STENCIL_TEST), + o.disable(o.BLEND), + o.disable(o.DITHER), + o.disable(o.POLYGON_OFFSET_FILL), + o.disable(o.SAMPLE_COVERAGE), + o.enable(o.SCISSOR_TEST), + o.enable(o.CULL_FACE), + o.cullFace(o.BACK), + e) + ); +} +function fp(t, e) { + let o = { + alpha: !1, + depth: !1, + antialias: !1, + stencil: !1, + preserveDrawingBuffer: !1, + premultipliedAlpha: !1, + failIfMajorPerformanceCaveat: !1, + }, + i, + u = o; + if ((!e || e === 'webgl2') && ((i = t.getContext('webgl2', u)), i)) + try { + return new hn(i, 2); + } catch (n) { + ce.warning('GlContextFactory', `failed to create WebGLContext using contextId 'webgl2'. Error: ${n}`); + } + if ((!e || e === 'webgl') && ((i = t.getContext('webgl', u) || t.getContext('experimental-webgl', u)), i)) + try { + return new hn(i, 1); + } catch (n) { + ce.warning( + 'GlContextFactory', + `failed to create WebGLContext using contextId 'webgl' or 'experimental-webgl'. Error: ${n}` + ); + } + throw new Error('WebGL is not supported'); +} +function qb() { + if (typeof document > 'u') throw new TypeError('failed to create canvas: document is not supported'); + let t = document.createElement('canvas'); + return (t.width = 1), (t.height = 1), t; +} +function jb() { + if (typeof OffscreenCanvas > 'u') + throw new TypeError('failed to create offscreen canvas: OffscreenCanvas is not supported'); + return new OffscreenCanvas(1, 1); +} +var Ur, + cp = L(() => { + ut(), lp(), (Ur = {}); + }), + vo, + pp = L(() => { + vt(), + ut(), + up(), + cp(), + (vo = class { + get contextId() { + return Z.webgl.contextId; + } + set contextId(t) { + Z.webgl.contextId = t; + } + get matmulMaxBatchSize() { + return Z.webgl.matmulMaxBatchSize; + } + set matmulMaxBatchSize(t) { + Z.webgl.matmulMaxBatchSize = t; + } + get textureCacheMode() { + return Z.webgl.textureCacheMode; + } + set textureCacheMode(t) { + Z.webgl.textureCacheMode = t; + } + get pack() { + return Z.webgl.pack; + } + set pack(t) { + Z.webgl.pack = t; + } + get async() { + return Z.webgl.async; + } + set async(t) { + Z.webgl.async = t; + } + initialize() { + try { + return ( + (this.glContext = ji(this.contextId)), + typeof this.matmulMaxBatchSize != 'number' && (this.matmulMaxBatchSize = 16), + typeof this.textureCacheMode != 'string' && (this.textureCacheMode = 'full'), + typeof this.pack != 'boolean' && (this.pack = !1), + typeof this.async != 'boolean' && (this.async = !1), + ce.setWithEnv(Z), + Z.webgl.context || Object.defineProperty(Z.webgl, 'context', { value: this.glContext.gl }), + ce.verbose( + 'WebGLBackend', + `Created WebGLContext: ${typeof this.glContext} with matmulMaxBatchSize: ${ + this.matmulMaxBatchSize + }; textureCacheMode: ${this.textureCacheMode}; pack: ${this.pack}; async: ${ + this.async + }.` + ), + !0 + ); + } catch (t) { + return ce.warning('WebGLBackend', `Unable to initialize WebGLBackend. ${t}`), !1; + } + } + createSessionHandler(t) { + return new xo(this, t); + } + dispose() { + this.glContext.dispose(); + } + }); + }); +async function Yi(t) { + if (t) { + let e = typeof t == 'string' ? [t] : t; + for (let o of e) { + let i = dp.get(o); + if (i) return i; + let u = await Xb(o); + if (u) return u; + } + } else return Yi(['webgl']); + throw new Error('no available backend to use'); +} +async function Xb(t) { + let e = Yb; + if (typeof e[t] < 'u' && Kb(e[t])) { + let o = e[t], + i = o.initialize(); + if ((typeof i == 'object' && 'then' in i && (i = await i), i)) return dp.set(t, o), o; + } +} +function Kb(t) { + let e = t; + return ( + 'initialize' in e && + typeof e.initialize == 'function' && + 'createSessionHandler' in e && + typeof e.createSessionHandler == 'function' && + 'dispose' in e && + typeof e.dispose == 'function' + ); +} +var dp, + Yb, + hp = L(() => { + pp(), (dp = new Map()), (Yb = { webgl: new vo() }); + }), + Xi, + wo, + mp = L(() => { + ut(), + (Xi = class { + constructor(t, e) { + (this.op = t), (this.node = e); + } + }), + (wo = class { + constructor(t, e, o) { + (this.graph = t), (this.profiler = o), this.initialize(e); + } + initialize(t) { + this.profiler.event('session', 'ExecutionPlan.initialize', () => { + let e = this.graph.getNodes(); + if (e.length !== t.length) throw new Error('The size of nodes and OPs do not match.'); + (this._ops = t.map((o, i) => new Xi(o, e[i]))), + this.reset(), + (this._starter = []), + this._ops.forEach((o, i) => { + let u = !0; + for (let n of o.node.inputs) + if (!this._values[n] && this.graph.getInputIndices().indexOf(n) === -1) { + u = !1; + break; + } + u && this._starter.push(i); + }); + }); + } + reset() { + this._values = this.graph.getValues().map((t) => t.tensor); + } + async execute(t, e) { + return this.profiler.event('session', 'ExecutionPlan.execute', async () => { + this.reset(); + let o = t.createInferenceHandler(), + i = this.graph.getInputIndices(); + if (e.length !== i.length) + throw new Error( + `number of input tensors don't match the number of inputs to the model: actual: ${e.length} expected: ${i.length}` + ); + e.forEach((r, a) => { + let l = i[a]; + this._values[l] = r; + }); + let u = this._starter.slice(0), + n = this.graph.getValues(), + s = this.graph.getNodes(), + d = 0; + for (; d < u.length; ) { + let r = u[d++], + a = this._ops[r], + l = a.node.inputs.map((T) => this._values[T]); + if (l.indexOf(void 0) !== -1) throw new Error(`unresolved input detected: op: ${a.node}`); + let p = l; + ce.verbose( + 'ExecPlan', + `Runing op:${a.node.name} (${p + .map((T, v) => `'${a.node.inputs[v]}': ${T.type}[${T.dims.join(',')}]`) + .join(', ')})` + ); + let m = await this.profiler.event('node', a.node.name, async () => + a.op.impl(o, p, a.op.context) + ); + if (m.length !== a.node.outputs.length) + throw new Error('the size of output does not match model definition.'); + m.forEach((T, v) => { + let S = a.node.outputs[v]; + if (this._values[S]) + throw new Error(`output [${S}] already has value: op:${a.node.name}`); + this._values[S] = T; + }); + let y = new Set(); + m.forEach((T, v) => { + let S = a.node.outputs[v]; + for (let E of n[S].to) { + let A = s[E], + F = !0; + for (let B of A.inputs) + if (!this._values[B]) { + F = !1; + break; + } + F && y.add(E); + } + }), + u.push(...y); + } + let f = []; + for (let r = 0; r < this.graph.getOutputIndices().length; r++) { + let a = this.graph.getOutputIndices()[r], + l = this._values[a]; + if (l === void 0) throw new Error(`required output [${a}] does not have value`); + a === 0 ? await l.getData() : l.data, f.push(l); + } + return ce.verbose('ExecPlan', 'disposing of inferenceHandler'), o.dispose(), f; + }); + } + }); + }), + oe, + mt, + mn, + bp = L(() => { + tn(), + (oe = Er($r())), + mr(), + fe(), + (mt = W.experimental.fbs), + (mn = class vr { + constructor(e) { + if (((this._attributes = new Map()), e != null)) { + for (let o of e) + o instanceof oe.onnx.AttributeProto + ? this._attributes.set(o.name, [vr.getValue(o), vr.getType(o)]) + : o instanceof mt.Attribute && + this._attributes.set(o.name(), [vr.getValue(o), vr.getType(o)]); + if (this._attributes.size < e.length) throw new Error('duplicated attribute names'); + } + } + set(e, o, i) { + this._attributes.set(e, [i, o]); + } + delete(e) { + this._attributes.delete(e); + } + getFloat(e, o) { + return this.get(e, 'float', o); + } + getInt(e, o) { + return this.get(e, 'int', o); + } + getString(e, o) { + return this.get(e, 'string', o); + } + getTensor(e, o) { + return this.get(e, 'tensor', o); + } + getFloats(e, o) { + return this.get(e, 'floats', o); + } + getInts(e, o) { + return this.get(e, 'ints', o); + } + getStrings(e, o) { + return this.get(e, 'strings', o); + } + getTensors(e, o) { + return this.get(e, 'tensors', o); + } + get(e, o, i) { + let u = this._attributes.get(e); + if (u === void 0) { + if (i !== void 0) return i; + throw new Error(`required attribute not found: ${e}`); + } + if (u[1] !== o) throw new Error(`type mismatch: expected ${o} but got ${u[1]}`); + return u[0]; + } + static getType(e) { + let o = e instanceof oe.onnx.AttributeProto ? e.type : e.type(); + switch (o) { + case oe.onnx.AttributeProto.AttributeType.FLOAT: + return 'float'; + case oe.onnx.AttributeProto.AttributeType.INT: + return 'int'; + case oe.onnx.AttributeProto.AttributeType.STRING: + return 'string'; + case oe.onnx.AttributeProto.AttributeType.TENSOR: + return 'tensor'; + case oe.onnx.AttributeProto.AttributeType.FLOATS: + return 'floats'; + case oe.onnx.AttributeProto.AttributeType.INTS: + return 'ints'; + case oe.onnx.AttributeProto.AttributeType.STRINGS: + return 'strings'; + case oe.onnx.AttributeProto.AttributeType.TENSORS: + return 'tensors'; + default: + throw new Error( + `attribute type is not supported yet: ${oe.onnx.AttributeProto.AttributeType[o]}` + ); + } + } + static getValue(e) { + let o = e instanceof oe.onnx.AttributeProto ? e.type : e.type(); + if ( + o === oe.onnx.AttributeProto.AttributeType.GRAPH || + o === oe.onnx.AttributeProto.AttributeType.GRAPHS + ) + throw new Error('graph attribute is not supported yet'); + let i = this.getValueNoCheck(e); + if (o === oe.onnx.AttributeProto.AttributeType.INT && nt.isLong(i)) return nt.longToNumber(i); + if (o === oe.onnx.AttributeProto.AttributeType.INTS) { + let u = i, + n = new Array(u.length); + for (let s = 0; s < u.length; s++) { + let d = u[s]; + n[s] = nt.longToNumber(d); + } + return n; + } + if (o === oe.onnx.AttributeProto.AttributeType.TENSOR) + return e instanceof oe.onnx.AttributeProto ? Fe.fromProto(i) : Fe.fromOrtTensor(i); + if (o === oe.onnx.AttributeProto.AttributeType.TENSORS) { + if (e instanceof oe.onnx.AttributeProto) return i.map((u) => Fe.fromProto(u)); + if (e instanceof mt.Attribute) return i.map((u) => Fe.fromOrtTensor(u)); + } + return o === oe.onnx.AttributeProto.AttributeType.STRING && e instanceof oe.onnx.AttributeProto + ? sn(i) + : o === oe.onnx.AttributeProto.AttributeType.STRINGS && e instanceof oe.onnx.AttributeProto + ? i.map(sn) + : i; + } + static getValueNoCheck(e) { + return e instanceof oe.onnx.AttributeProto + ? this.getValueNoCheckFromOnnxFormat(e) + : this.getValueNoCheckFromOrtFormat(e); + } + static getValueNoCheckFromOnnxFormat(e) { + switch (e.type) { + case oe.onnx.AttributeProto.AttributeType.FLOAT: + return e.f; + case oe.onnx.AttributeProto.AttributeType.INT: + return e.i; + case oe.onnx.AttributeProto.AttributeType.STRING: + return e.s; + case oe.onnx.AttributeProto.AttributeType.TENSOR: + return e.t; + case oe.onnx.AttributeProto.AttributeType.GRAPH: + return e.g; + case oe.onnx.AttributeProto.AttributeType.FLOATS: + return e.floats; + case oe.onnx.AttributeProto.AttributeType.INTS: + return e.ints; + case oe.onnx.AttributeProto.AttributeType.STRINGS: + return e.strings; + case oe.onnx.AttributeProto.AttributeType.TENSORS: + return e.tensors; + case oe.onnx.AttributeProto.AttributeType.GRAPHS: + return e.graphs; + default: + throw new Error( + `unsupported attribute type: ${oe.onnx.AttributeProto.AttributeType[e.type]}` + ); + } + } + static getValueNoCheckFromOrtFormat(e) { + switch (e.type()) { + case mt.AttributeType.FLOAT: + return e.f(); + case mt.AttributeType.INT: + return e.i(); + case mt.AttributeType.STRING: + return e.s(); + case mt.AttributeType.TENSOR: + return e.t(); + case mt.AttributeType.GRAPH: + return e.g(); + case mt.AttributeType.FLOATS: + return e.floatsArray(); + case mt.AttributeType.INTS: { + let o = []; + for (let i = 0; i < e.intsLength(); i++) o.push(e.ints(i)); + return o; + } + case mt.AttributeType.STRINGS: { + let o = []; + for (let i = 0; i < e.stringsLength(); i++) o.push(e.strings(i)); + return o; + } + case mt.AttributeType.TENSORS: { + let o = []; + for (let i = 0; i < e.tensorsLength(); i++) o.push(e.tensors(i)); + return o; + } + default: + throw new Error(`unsupported attribute type: ${mt.AttributeType[e.type()]}`); + } + } + }); + }), + Ji, + _o, + Zi, + kt, + Oo, + Ki, + gp = L(() => { + bp(), + tn(), + (Ji = Er($r())), + mr(), + fe(), + (_o = W.experimental.fbs), + (Zi = { from: (t, e) => new Ki(t, e) }), + (kt = class { + constructor(t) { + (this._from = void 0), + (this._to = []), + (this.tensor = void 0), + (this.type = void 0), + t && (this.type = Ve.tensorValueTypeFromProto(t.type.tensorType)); + } + get from() { + return this._from; + } + get to() { + return this._to; + } + }), + (Oo = class { + constructor(t, e) { + t instanceof Ji.onnx.NodeProto + ? ((this.name = t.name), (this.opType = t.opType), (this.attributes = new mn(t.attribute))) + : t instanceof _o.Node && + ((this.name = e ?? t.name()), + (this.opType = t.opType()), + (this.attributes = new mn(Ve.tensorAttributesFromORTFormat(t)))), + (this.inputs = []), + (this.outputs = []), + (this.executeNode = !0); + } + }), + (Ki = class { + constructor(t, e) { + if (!t) throw new TypeError('graph is empty'); + this.buildGraph(t), this.transformGraph(e), this.checkIsAcyclic(); + } + getInputIndices() { + return this._allInputIndices; + } + getInputNames() { + return this._allInputNames; + } + getOutputIndices() { + return this._allOutputIndices; + } + getOutputNames() { + return this._allOutputNames; + } + getValues() { + return this._allData; + } + getNodes() { + return this._nodes; + } + buildGraph(t) { + if (t instanceof Ji.onnx.GraphProto) this.buildGraphFromOnnxFormat(t); + else if (t instanceof _o.Graph) this.buildGraphFromOrtFormat(t); + else throw new TypeError('Graph type is not supported.'); + } + buildGraphFromOnnxFormat(t) { + let e = new Map(); + (this._allData = []), + (this._allInputIndices = []), + (this._allInputNames = []), + (this._allOutputIndices = []), + (this._allOutputNames = []), + (this._nodes = []); + let o = new Map(); + if (!t.input) throw new Error('missing information in graph: input'); + let i = []; + for (let u of t.input) { + if (e.has(u.name)) throw new Error(`duplicated input name: ${u.name}`); + let n = this._allData.push(new kt(u)) - 1; + e.set(u.name, n), i.push(u.name); + } + if (!t.initializer) throw new Error('missing information in graph: initializer'); + for (let u of t.initializer) { + let n = e.get(u.name); + if (n === void 0) { + let s = new kt(); + (s.type = { + shape: { dims: Ve.tensorDimsFromProto(u.dims) }, + tensorType: Ve.tensorDataTypeFromProto(u.dataType), + }), + (n = this._allData.push(s) - 1), + e.set(u.name, n); + } + (this._allData[n]._from = -1), (this._allData[n].tensor = Fe.fromProto(u)); + } + for (let u = 0; u < this._allData.length; u++) + this._allData[u].tensor || (this._allInputIndices.push(u), this._allInputNames.push(i[u])); + if (!t.output) throw new Error('missing information in graph: output'); + for (let u of t.output) { + if (e.has(u.name)) throw new Error(`duplicated output name: ${u.name}`); + let n = this._allData.push(new kt(u)) - 1; + e.set(u.name, n), this._allOutputIndices.push(n), this._allOutputNames.push(u.name); + } + if (!t.node) throw new Error('missing information in graph: node'); + for (let u of t.node) { + if (!u.name) + for (let s = 0; ; s++) { + let d = `unnamed_${u.opType}_${s}`; + if (!o.has(d)) { + u.name = d; + break; + } + } + if (o.has(u.name)) throw new Error(`duplicated node name: ${u.name}`); + let n = this._nodes.push(new Oo(u)) - 1; + o.set(u.name, n); + } + for (let u = 0; u < this._nodes.length; u++) { + let n = this._nodes[u], + s = t.node[u]; + if (!s.output) throw new Error(`missing output for node: ${s.name}`); + for (let d of s.output) { + let f = e.get(d); + if ( + (typeof f > 'u' && ((f = this._allData.push(new kt()) - 1), e.set(d, f)), + n.outputs.push(f), + this._allData[f]._from !== void 0) + ) + throw new Error(`multiple nodes output to one data value: ${f}`); + if (((this._allData[f]._from = u), s.opType === 'Constant')) { + if (!s.attribute || s.attribute.length !== 1 || !s.attribute[0].t) + throw new Error( + 'missing attributes or missing tensor value in attributes for this Constant operator' + ); + if (!s.output || s.output.length !== 1) + throw new Error( + 'missing output or incorrect number of outputs for this Constant operator' + ); + n.outputs.pop(), + (n.executeNode = !1), + (this._allData[f]._from = -1), + (this._allData[f].tensor = Fe.fromProto(s.attribute[0].t)); + } + } + } + for (let u = 0; u < this._nodes.length; u++) { + let n = this._nodes[u], + s = t.node[u]; + if (!s.input) throw new Error(`missing input for node: ${s.name}`); + for (let d of s.input) { + let f = e.get(d); + if (typeof f > 'u') { + if (d === '' && (s.input.length === 3 || s.input.length === 4) && s.opType === 'Resize') + continue; + throw new Error(`unrecognized input '${d}' for node: ${s.name}`); + } + n.inputs.push(f), this._allData[f]._to.push(u); + } + } + return !0; + } + buildGraphFromOrtFormat(t) { + let e = new Map(); + (this._allData = []), + (this._allInputIndices = []), + (this._allInputNames = []), + (this._allOutputIndices = []), + (this._allOutputNames = []), + (this._nodes = []); + let o = new Map(), + i = []; + for (let u = 0; u < t.inputsLength(); u++) { + let n = t.inputs(u); + if (e.has(n)) throw new Error(`duplicated input name: ${n}`); + for (let s = 0; s < t.nodeArgsLength(); s++) + if (t.nodeArgs(s)?.name() === n) { + let d = new kt(); + if (t.nodeArgs(s)?.type()?.valueType() !== _o.TypeInfoValue.tensor_type) + throw new Error('Unexpected value type for the nodeArg.'); + let f = t.nodeArgs(s).type().value(new _o.TensorTypeAndShape()), + r = Ve.tensorDataTypeFromProto(f.elemType()), + a = f.shape(), + l = []; + for (let m = 0; m < a.dimLength(); m++) + l.push(nt.longToNumber(a.dim(m).value().dimValue())); + d.type = { shape: { dims: l }, tensorType: r }; + let p = this._allData.push(d) - 1; + e.set(n, p), i.push(n); + } + } + for (let u = 0; u < t.initializersLength(); u++) { + let n = t.initializers(u), + s = e.get(n.name()); + if (s === void 0) { + let d = new kt(), + f = Ve.tensorDimsFromORTFormat(n), + r = Ve.tensorDataTypeFromProto(n.dataType()); + (d.type = { shape: { dims: f }, tensorType: r }), + (s = this._allData.push(d) - 1), + e.set(n.name(), s); + } + (this._allData[s]._from = -1), (this._allData[s].tensor = Fe.fromOrtTensor(n)); + } + for (let u = 0; u < this._allData.length; u++) + this._allData[u].tensor || (this._allInputIndices.push(u), this._allInputNames.push(i[u])); + for (let u = 0; u < t.outputsLength(); u++) { + let n = t.outputs(u); + if (e.has(n)) throw new Error(`duplicated output name: ${n}`); + let s = this._allData.push(new kt()) - 1; + e.set(n, s), this._allOutputIndices.push(s), this._allOutputNames.push(n); + } + if (!t.nodes) throw new Error('missing information in graph: node'); + for (let u = 0; u < t.nodesLength(); u++) { + let n = t.nodes(u), + s = n.name(); + if (!s) for (let f = 0; (s = `unnamed_${n.opType()}_${f}`), !!o.has(s); f++); + if (o.has(s)) throw new Error(`duplicated node name: ${s}`); + let d = this._nodes.push(new Oo(n, s)) - 1; + o.set(s, d); + } + for (let u = 0; u < this._nodes.length; u++) { + let n = this._nodes[u], + s = t.nodes(u); + if (s == null) throw new Error(`No node exists at index ${u}`); + if (s?.outputsLength() === 0) throw new Error(`missing output for node: ${s.name}`); + for (let d = 0; d < s?.outputsLength(); d++) { + let f = s?.outputs(d), + r = e.get(f); + if ( + (typeof r > 'u' && ((r = this._allData.push(new kt()) - 1), e.set(f, r)), + n.outputs.push(r), + this._allData[r]._from !== void 0) + ) + throw new Error(`multiple nodes output to one data value: ${r}`); + if (((this._allData[r]._from = u), s.opType() === 'Constant')) { + if (s.attributesLength() !== 1 || !s.attributes(0).t()) + throw new Error( + 'missing attributes or missing tensor value in attributes for this Constant operator' + ); + if (s.outputsLength() !== 1) + throw new Error( + 'missing output or incorrect number of outputs for this Constant operator' + ); + n.outputs.pop(), + (n.executeNode = !1), + (this._allData[r]._from = -1), + (this._allData[r].tensor = Fe.fromOrtTensor(s.attributes(0).t())); + } + } + } + for (let u = 0; u < this._nodes.length; u++) { + let n = this._nodes[u], + s = t.nodes(u); + if (s.inputsLength() === 0) throw new Error(`missing input for node: ${s.name}`); + for (let d = 0; d < s.inputsLength(); d++) { + let f = s.inputs(d), + r = e.get(f); + if (typeof r > 'u') throw new Error(`unrecognized input '${f}' for node: ${s.name()}`); + n.inputs.push(r), this._allData[r]._to.push(u); + } + } + } + checkIsAcyclic() { + let t = new Set(); + this._allInputIndices.forEach((i) => { + this._allData[i]._to.forEach((u) => { + t.add(u); + }); + }); + let e = Array.from(t), + o = new Array(this._nodes.length).fill('white'); + for (; e.length > 0; ) { + let i = e.pop(); + o[i] === 'gray' + ? (o[i] = 'black') + : (e.push(i), + (o[i] = 'gray'), + this._nodes[i].outputs.forEach((u) => { + let n = this._allData[u]; + if (typeof n.tensor < 'u') throw new Error('node outputs should not be initialized'); + if (n._from !== i) + throw new Error( + "from property of the Value object doesn't match index of Node being processed" + ); + n._to.forEach((s) => { + if (o[s] === 'gray') throw new Error('model graph is cyclic'); + o[s] === 'white' && e.push(s); + }); + })); + } + } + transformGraph(t) { + this.removeAllIdentityNodes(), + this.removeAllDropoutNodes(), + this.fuseConvActivationNodes(), + t && t.transformGraph(this), + this.finalizeGraph(); + } + finalizeGraph() { + let t = 0, + e = new Array(this._nodes.length, 0), + o = 0; + for (let i = 0; i < this._nodes.length; i++) + (e[i] = o), + this._nodes[i].executeNode + ? (o !== i && (this._nodes[o] = this._nodes[i]), o++) + : this._nodes[i].outputs.forEach((u) => { + this._allData[u]._from = -2; + }); + this._nodes.splice(o, this._nodes.length - o); + for (let i = 0; i < this._allData.length; i++) { + let u = this._allData[i]; + u._from !== void 0 && u._from !== -1 && u._from !== -2 && (u._from = e[u._from]); + for (let n = 0; n < u._to.length; n++) + if (u._to[n] >= 0) u._to[n] = e[u._to[n]]; + else throw new Error('Trying to update a removed node'); + } + t = 0; + for (let i = 0; i < this._allData.length; i++) { + if (this._allData[i].from === -2 && this._allOutputIndices.indexOf(i + t) === -1) { + t++, this._allData.splice(i, 1), i--; + continue; + } + if (t > 0) { + let u = -1; + this._allData[i].from !== void 0 && this._allData[i].from !== -1 + ? ((u = this._nodes[this._allData[i].from].outputs.indexOf(i + t)), + u !== -1 && (this._nodes[this._allData[i].from].outputs[u] = i)) + : ((u = this._allInputIndices.indexOf(i + t)), + u !== -1 && (this._allInputIndices[u] = i)), + this._allData[i].to.forEach((n) => { + (u = this._nodes[n].inputs.indexOf(i + t)), + u !== -1 && (this._nodes[n].inputs[u] = i); + }), + this._allData[i].to.length === 0 && + ((u = this._allOutputIndices.indexOf(i + t)), + u !== -1 && (this._allOutputIndices[u] = i)); + } + } + } + deleteNode(t) { + let e = this._nodes[t]; + if (e.outputs.length > 1) { + for (let s = 1; s < e.outputs.length; s++) + if (this._allData[e.outputs[s]].to.length > 0) + throw new Error( + 'Node deletion with more than one output connected to other nodes is not supported. ' + ); + } + e.executeNode = !1; + let o = e.inputs[0], + i = e.outputs[0], + u = this._allData[i].to; + for (let s = 0; s < e.inputs.length; s++) { + let d = this._allData[e.inputs[s]].to.indexOf(t); + if (d === -1) + throw new Error("The Value object doesn't have the current Node in it's 'to' property "); + this._allData[e.inputs[s]].to.splice(d, 1); + } + this._allData[i]._to = []; + let n = this._allOutputIndices.indexOf(i); + if ((n !== -1 && (this._allOutputIndices[n] = o), u && u.length > 0)) + for (let s of u) { + let d = this._nodes[s].inputs.indexOf(i); + if (d === -1) + throw new Error( + "The Node object doesn't have the output Value in it's 'inputs' property " + ); + (this._nodes[s].inputs[d] = o), this._allData[o].to.push(s); + } + } + removeAllDropoutNodes() { + let t = 0; + for (let e of this._nodes) { + if (e.opType === 'Dropout') { + if (e.inputs.length !== 1) throw new Error('Dropout nodes should only contain one input. '); + if (e.outputs.length !== 1 && e.outputs.length !== 2) + throw new Error('Dropout nodes should contain either 1 or 2 output(s)'); + if (e.outputs.length === 2 && this._allData[e.outputs[1]]._to.length !== 0) + throw new Error( + "Dropout nodes's second output should not be referenced by other nodes" + ); + this.deleteNode(t); + } + t++; + } + } + removeAllIdentityNodes() { + let t = 0; + for (let e of this._nodes) e.opType === 'Identity' && this.deleteNode(t), t++; + } + isActivation(t) { + switch (t.opType) { + case 'Relu': + case 'Sigmoid': + case 'Clip': + return !0; + default: + return !1; + } + } + fuseConvActivationNodes() { + for (let t of this._nodes) + if (t.opType === 'Conv') { + let e = this._allData[t.outputs[0]]._to; + if (e.length === 1 && this.isActivation(this._nodes[e[0]])) { + let o = this._nodes[e[0]]; + if (o.opType === 'Clip') + if (o.inputs.length === 1) + try { + t.attributes.set('activation_params', 'floats', [ + o.attributes.getFloat('min'), + o.attributes.getFloat('max'), + ]); + } catch { + t.attributes.set('activation_params', 'floats', [dr, hr]); + } + else if ( + o.inputs.length >= 3 && + this._allData[o.inputs[1]].tensor !== void 0 && + this._allData[o.inputs[2]].tensor !== void 0 + ) + t.attributes.set('activation_params', 'floats', [ + this._allData[o.inputs[1]].tensor.floatData[0], + this._allData[o.inputs[2]].tensor.floatData[0], + ]); + else continue; + t.attributes.set('activation', 'string', o.opType), this.deleteNode(e[0]); + } + } + } + }); + }), + yp, + Jb, + Io, + Tp = L(() => { + Wn(), + gp(), + tn(), + (yp = Er($r())), + fe(), + (Jb = W.experimental.fbs), + (Io = class { + constructor() {} + load(t, e, o) { + if (!o) + try { + this.loadFromOnnxFormat(t, e); + return; + } catch (i) { + if (o !== void 0) throw i; + } + this.loadFromOrtFormat(t, e); + } + loadFromOnnxFormat(t, e) { + let o = yp.onnx.ModelProto.decode(t); + if (nt.longToNumber(o.irVersion) < 3) throw new Error('only support ONNX model with IR_VERSION>=3'); + (this._opsets = o.opsetImport.map((i) => ({ + domain: i.domain, + version: nt.longToNumber(i.version), + }))), + (this._graph = Zi.from(o.graph, e)); + } + loadFromOrtFormat(t, e) { + let o = new _.ByteBuffer(t), + i = Jb.InferenceSession.getRootAsInferenceSession(o).model(); + if (nt.longToNumber(i.irVersion()) < 3) + throw new Error('only support ONNX model with IR_VERSION>=3'); + this._opsets = []; + for (let u = 0; u < i.opsetImportLength(); u++) { + let n = i.opsetImport(u); + this._opsets.push({ domain: n?.domain(), version: nt.longToNumber(n.version()) }); + } + this._graph = Zi.from(i.graph(), e); + } + get graph() { + return this._graph; + } + get opsets() { + return this._opsets; + } + }); + }), + So, + xp = L(() => { + hp(), + mp(), + ut(), + Tp(), + (So = class { + constructor(t = {}) { + (this._initialized = !1), + (this.backendHint = t.backendHint), + (this.profiler = zn.create(t.profiler)), + (this.context = { profiler: this.profiler, graphInputTypes: [], graphInputDims: [] }); + } + get inputNames() { + return this._model.graph.getInputNames(); + } + get outputNames() { + return this._model.graph.getOutputNames(); + } + startProfiling() { + this.profiler.start(); + } + endProfiling() { + this.profiler.stop(); + } + async loadModel(t, e, o) { + await this.profiler.event('session', 'Session.loadModel', async () => { + let i = await Yi(this.backendHint); + if ( + ((this.sessionHandler = i.createSessionHandler(this.context)), + (this._model = new Io()), + typeof t == 'string') + ) { + let u = t.endsWith('.ort'); + if (typeof process < 'u' && process.versions && process.versions.node) { + let n = await (void 0)(t); + this.initialize(n, u); + } else { + let n = await (await fetch(t)).arrayBuffer(); + this.initialize(new Uint8Array(n), u); + } + } else if (ArrayBuffer.isView(t)) this.initialize(t); + else { + let u = new Uint8Array(t, e || 0, o || t.byteLength); + this.initialize(u); + } + }); + } + initialize(t, e) { + if (this._initialized) throw new Error('already initialized'); + this.profiler.event('session', 'Session.initialize', () => { + let o = this.sessionHandler.transformGraph ? this.sessionHandler : void 0; + this._model.load(t, o, e), + this.sessionHandler.onGraphInitialized && + this.sessionHandler.onGraphInitialized(this._model.graph), + this.initializeOps(this._model.graph), + (this._executionPlan = new wo(this._model.graph, this._ops, this.profiler)); + }), + (this._initialized = !0); + } + async run(t) { + if (!this._initialized) throw new Error('session not initialized yet'); + return this.profiler.event('session', 'Session.run', async () => { + let e = this.normalizeAndValidateInputs(t), + o = await this._executionPlan.execute(this.sessionHandler, e); + return this.createOutput(o); + }); + } + normalizeAndValidateInputs(t) { + let e = this._model.graph.getInputNames(); + if (Array.isArray(t)) { + if (t.length !== e.length) + throw new Error(`incorrect input array length: expected ${e.length} but got ${t.length}`); + } else { + if (t.size !== e.length) + throw new Error(`incorrect input map size: expected ${e.length} but got ${t.size}`); + let o = new Array(t.size), + i = 0; + for (let u = 0; u < e.length; ++u) { + let n = t.get(e[u]); + if (!n) throw new Error(`missing input tensor for: '${name}'`); + o[i++] = n; + } + t = o; + } + if ( + !this.context.graphInputTypes || + this.context.graphInputTypes.length === 0 || + !this.context.graphInputDims || + this.context.graphInputDims.length === 0 + ) { + let o = this._model.graph.getInputIndices(), + i = this._model.graph.getValues(), + u = new Array(o.length); + for (let n = 0; n < o.length; ++n) { + let s = i[o[n]]; + (u[n] = s.type.shape.dims), + this.context.graphInputTypes.push(s.type.tensorType), + this.context.graphInputDims.push(t[n].dims); + } + this.validateInputTensorDims(u, t, !0); + } else this.validateInputTensorDims(this.context.graphInputDims, t, !1); + return this.validateInputTensorTypes(this.context.graphInputTypes, t), t; + } + validateInputTensorTypes(t, e) { + for (let o = 0; o < e.length; o++) { + let i = t[o], + u = e[o].type; + if (i !== u) + throw new Error(`input tensor[${o}] check failed: expected type '${i}' but got ${u}`); + } + } + validateInputTensorDims(t, e, o) { + for (let i = 0; i < e.length; i++) { + let u = t[i], + n = e[i].dims; + if (!this.compareTensorDims(u, n, o)) + throw new Error( + `input tensor[${i}] check failed: expected shape '[${u.join(',')}]' but got [${n.join( + ',' + )}]` + ); + } + } + compareTensorDims(t, e, o) { + if (t.length !== e.length) return !1; + for (let i = 0; i < t.length; ++i) if (t[i] !== e[i] && (!o || t[i] !== 0)) return !1; + return !0; + } + createOutput(t) { + let e = this._model.graph.getOutputNames(); + if (t.length !== e.length) + throw new Error('expected number of outputs do not match number of generated outputs'); + let o = new Map(); + for (let i = 0; i < e.length; ++i) o.set(e[i], t[i]); + return o; + } + initializeOps(t) { + let e = t.getNodes(); + this._ops = new Array(e.length); + for (let o = 0; o < e.length; o++) + this._ops[o] = this.sessionHandler.resolve(e[o], this._model.opsets, t); + } + }); + }), + Ao, + vp = L(() => { + vt(), + mr(), + (Ao = class { + constructor(t) { + (this.session = t), + (this.inputNames = this.session.inputNames), + (this.outputNames = this.session.outputNames); + } + async dispose() {} + async run(t, e, o) { + let i = new Map(); + for (let s in t) + if (Object.hasOwnProperty.call(t, s)) { + let d = t[s]; + i.set(s, new Fe(d.dims, d.type, void 0, void 0, d.data)); + } + let u = await this.session.run(i), + n = {}; + return ( + u.forEach((s, d) => { + n[d] = new Re(s.type, s.data, s.dims); + }), + n + ); + } + startProfiling() { + this.session.startProfiling(); + } + endProfiling() { + this.session.endProfiling(); + } + }); + }), + wp = {}; +Pr(wp, { onnxjsBackend: () => Qb }); +var Qi, + Qb, + _p = L(() => { + xp(), + vp(), + (Qi = class { + async init() {} + async createInferenceSessionHandler(t, e) { + let o = new So(e); + return typeof t == 'string' ? await o.loadModel(t) : await o.loadModel(t), new Ao(o); + } + }), + (Qb = new Qi()); + }), + ea = {}; +Pr(ea, { createReadStream: () => Op, readFile: () => eg, readFileSync: () => tg }); +var eg, + tg, + Op, + ta = L(() => { + (eg = void 0), (tg = void 0), (Op = void 0); + }), + ra = {}; +Pr(ra, { join: () => rg }); +var rg, + na = L(() => { + rg = void 0; + }), + Ap = me((t, e) => { + var o = (() => { + var i = typeof document < 'u' && document.currentScript ? document.currentScript.src : void 0; + return ( + typeof __filename < 'u' && (i = i || __filename), + function (u = {}) { + var n = u, + s, + d; + n.ready = new Promise((O, M) => { + (s = O), (d = M); + }); + var f = Object.assign({}, n), + r = './this.program', + a = typeof window == 'object', + l = typeof importScripts == 'function', + p = + typeof process == 'object' && + typeof process.versions == 'object' && + typeof process.versions.node == 'string', + m = '', + y, + T, + v; + if (p) { + var S = (ta(), rr(ea)), + E = (na(), rr(ra)); + (m = l ? E.dirname(m) + '/' : __dirname + '/'), + (y = (O, M) => ( + (O = ve(O) ? new URL(O) : E.normalize(O)), S.readFileSync(O, M ? void 0 : 'utf8') + )), + (v = (O) => ((O = y(O, !0)), O.buffer || (O = new Uint8Array(O)), O)), + (T = (O, M, I, k = !0) => { + (O = ve(O) ? new URL(O) : E.normalize(O)), + S.readFile(O, k ? void 0 : 'utf8', (G, ne) => { + G ? I(G) : M(k ? ne.buffer : ne); + }); + }), + !n.thisProgram && 1 < process.argv.length && (r = process.argv[1].replace(/\\/g, '/')), + process.argv.slice(2), + (n.inspect = () => '[Emscripten Module object]'); + } else + (a || l) && + (l + ? (m = self.location.href) + : typeof document < 'u' && document.currentScript && (m = document.currentScript.src), + i && (m = i), + m.indexOf('blob:') !== 0 + ? (m = m.substr(0, m.replace(/[?#].*/, '').lastIndexOf('/') + 1)) + : (m = ''), + (y = (O) => { + var M = new XMLHttpRequest(); + return M.open('GET', O, !1), M.send(null), M.responseText; + }), + l && + (v = (O) => { + var M = new XMLHttpRequest(); + return ( + M.open('GET', O, !1), + (M.responseType = 'arraybuffer'), + M.send(null), + new Uint8Array(M.response) + ); + }), + (T = (O, M, I) => { + var k = new XMLHttpRequest(); + k.open('GET', O, !0), + (k.responseType = 'arraybuffer'), + (k.onload = () => { + k.status == 200 || (k.status == 0 && k.response) ? M(k.response) : I(); + }), + (k.onerror = I), + k.send(null); + })); + var A = console.log.bind(console), + F = console.error.bind(console); + Object.assign(n, f), + (f = null), + typeof WebAssembly != 'object' && pe('no native wasm support detected'); + var B, + J = !1, + Q, + re, + V, + de, + ke; + function Ne() { + var O = B.buffer; + (n.HEAP8 = Q = new Int8Array(O)), + (n.HEAP16 = new Int16Array(O)), + (n.HEAPU8 = re = new Uint8Array(O)), + (n.HEAPU16 = new Uint16Array(O)), + (n.HEAP32 = V = new Int32Array(O)), + (n.HEAPU32 = de = new Uint32Array(O)), + (n.HEAPF32 = new Float32Array(O)), + (n.HEAPF64 = ke = new Float64Array(O)); + } + var Me = [], + Y = [], + _e = [], + he = 0, + ue = null; + function pe(O) { + throw ( + ((O = 'Aborted(' + O + ')'), + F(O), + (J = !0), + (O = new WebAssembly.RuntimeError(O + '. Build with -sASSERTIONS for more info.')), + d(O), + O) + ); + } + var X = (O) => O.startsWith('data:application/octet-stream;base64,'), + ve = (O) => O.startsWith('file://'), + we; + if (((we = 'ort-wasm.wasm'), !X(we))) { + var rt = we; + we = n.locateFile ? n.locateFile(rt, m) : m + rt; + } + function ot(O) { + if (v) return v(O); + throw 'both async and sync fetching of the wasm failed'; + } + function qe(O) { + if (a || l) { + if (typeof fetch == 'function' && !ve(O)) + return fetch(O, { credentials: 'same-origin' }) + .then((M) => { + if (!M.ok) throw "failed to load wasm binary file at '" + O + "'"; + return M.arrayBuffer(); + }) + .catch(() => ot(O)); + if (T) + return new Promise((M, I) => { + T(O, (k) => M(new Uint8Array(k)), I); + }); + } + return Promise.resolve().then(() => ot(O)); + } + function He(O, M, I) { + return qe(O) + .then((k) => WebAssembly.instantiate(k, M)) + .then((k) => k) + .then(I, (k) => { + F(`failed to asynchronously prepare wasm: ${k}`), pe(k); + }); + } + function Qe(O, M) { + var I = we; + return typeof WebAssembly.instantiateStreaming != 'function' || + X(I) || + ve(I) || + p || + typeof fetch != 'function' + ? He(I, O, M) + : fetch(I, { credentials: 'same-origin' }).then((k) => + WebAssembly.instantiateStreaming(k, O).then(M, function (G) { + return ( + F(`wasm streaming compile failed: ${G}`), + F('falling back to ArrayBuffer instantiation'), + He(I, O, M) + ); + }) + ); + } + var Be, + Ce = { + 919888: (O, M, I, k) => { + if (typeof n > 'u' || !n.za) return 1; + if ( + ((O = Mt(O >>> 0)), + O.startsWith('./') && (O = O.substring(2)), + (O = n.za.get(O)), + !O) + ) + return 2; + if (((M >>>= 0), (I >>>= 0), M + I > O.byteLength)) return 3; + try { + return re.set(O.subarray(M, M + I), (k >>> 0) >>> 0), 0; + } catch { + return 4; + } + }, + }; + function Se(O) { + (this.xa = O - 24), + (this.Ha = function (M) { + de[((this.xa + 4) >>> 2) >>> 0] = M; + }), + (this.Ga = function (M) { + de[((this.xa + 8) >>> 2) >>> 0] = M; + }), + (this.Aa = function (M, I) { + this.Fa(), this.Ha(M), this.Ga(I); + }), + (this.Fa = function () { + de[((this.xa + 16) >>> 2) >>> 0] = 0; + }); + } + var je = 0, + Tt = typeof TextDecoder < 'u' ? new TextDecoder('utf8') : void 0, + xt = (O, M, I) => { + M >>>= 0; + var k = M + I; + for (I = M; O[I] && !(I >= k); ) ++I; + if (16 < I - M && O.buffer && Tt) return Tt.decode(O.subarray(M, I)); + for (k = ''; M < I; ) { + var G = O[M++]; + if (G & 128) { + var ne = O[M++] & 63; + if ((G & 224) == 192) k += String.fromCharCode(((G & 31) << 6) | ne); + else { + var ge = O[M++] & 63; + (G = + (G & 240) == 224 + ? ((G & 15) << 12) | (ne << 6) | ge + : ((G & 7) << 18) | (ne << 12) | (ge << 6) | (O[M++] & 63)), + 65536 > G + ? (k += String.fromCharCode(G)) + : ((G -= 65536), + (k += String.fromCharCode(55296 | (G >> 10), 56320 | (G & 1023)))); + } + } else k += String.fromCharCode(G); + } + return k; + }, + Mt = (O, M) => ((O >>>= 0) ? xt(re, O, M) : ''), + Ot = (O) => { + for (var M = 0, I = 0; I < O.length; ++I) { + var k = O.charCodeAt(I); + 127 >= k + ? M++ + : 2047 >= k + ? (M += 2) + : 55296 <= k && 57343 >= k + ? ((M += 4), ++I) + : (M += 3); + } + return M; + }, + gt = (O, M, I, k) => { + if (((I >>>= 0), !(0 < k))) return 0; + var G = I; + k = I + k - 1; + for (var ne = 0; ne < O.length; ++ne) { + var ge = O.charCodeAt(ne); + if (55296 <= ge && 57343 >= ge) { + var Ue = O.charCodeAt(++ne); + ge = (65536 + ((ge & 1023) << 10)) | (Ue & 1023); + } + if (127 >= ge) { + if (I >= k) break; + M[I++ >>> 0] = ge; + } else { + if (2047 >= ge) { + if (I + 1 >= k) break; + M[I++ >>> 0] = 192 | (ge >> 6); + } else { + if (65535 >= ge) { + if (I + 2 >= k) break; + M[I++ >>> 0] = 224 | (ge >> 12); + } else { + if (I + 3 >= k) break; + (M[I++ >>> 0] = 240 | (ge >> 18)), (M[I++ >>> 0] = 128 | ((ge >> 12) & 63)); + } + M[I++ >>> 0] = 128 | ((ge >> 6) & 63); + } + M[I++ >>> 0] = 128 | (ge & 63); + } + } + return (M[I >>> 0] = 0), I - G; + }, + yt = (O) => O % 4 === 0 && (O % 100 !== 0 || O % 400 === 0), + Or = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], + Ht = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], + Sr = (O) => { + var M = Ot(O) + 1, + I = Gt(M); + return I && gt(O, re, I, M), I; + }, + st = [], + Bt = {}, + At = () => { + if (!It) { + var O = { + USER: 'web_user', + LOGNAME: 'web_user', + PATH: '/', + PWD: '/', + HOME: '/home/web_user', + LANG: + ( + (typeof navigator == 'object' && + navigator.languages && + navigator.languages[0]) || + 'C' + ).replace('-', '_') + '.UTF-8', + _: r || './this.program', + }, + M; + for (M in Bt) Bt[M] === void 0 ? delete O[M] : (O[M] = Bt[M]); + var I = []; + for (M in O) I.push(`${M}=${O[M]}`); + It = I; + } + return It; + }, + It, + Ar = [null, [], []], + Et = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + Yt = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + function Ir(O) { + var M = Array(Ot(O) + 1); + return gt(O, M, 0, M.length), M; + } + function Dt(O, M, I, k) { + function G(C, Te, Ie) { + for (C = typeof C == 'number' ? C.toString() : C || ''; C.length < Te; ) C = Ie[0] + C; + return C; + } + function ne(C, Te) { + return G(C, Te, '0'); + } + function ge(C, Te) { + function Ie(lr) { + return 0 > lr ? -1 : 0 < lr ? 1 : 0; + } + var at; + return ( + (at = Ie(C.getFullYear() - Te.getFullYear())) === 0 && + (at = Ie(C.getMonth() - Te.getMonth())) === 0 && + (at = Ie(C.getDate() - Te.getDate())), + at + ); + } + function Ue(C) { + switch (C.getDay()) { + case 0: + return new Date(C.getFullYear() - 1, 11, 29); + case 1: + return C; + case 2: + return new Date(C.getFullYear(), 0, 3); + case 3: + return new Date(C.getFullYear(), 0, 2); + case 4: + return new Date(C.getFullYear(), 0, 1); + case 5: + return new Date(C.getFullYear() - 1, 11, 31); + case 6: + return new Date(C.getFullYear() - 1, 11, 30); + } + } + function et(C) { + var Te = C.ta; + for (C = new Date(new Date(C.ua + 1900, 0, 1).getTime()); 0 < Te; ) { + var Ie = C.getMonth(), + at = (yt(C.getFullYear()) ? Et : Yt)[Ie]; + if (Te > at - C.getDate()) + (Te -= at - C.getDate() + 1), + C.setDate(1), + 11 > Ie + ? C.setMonth(Ie + 1) + : (C.setMonth(0), C.setFullYear(C.getFullYear() + 1)); + else { + C.setDate(C.getDate() + Te); + break; + } + } + return ( + (Ie = new Date(C.getFullYear() + 1, 0, 4)), + (Te = Ue(new Date(C.getFullYear(), 0, 4))), + (Ie = Ue(Ie)), + 0 >= ge(Te, C) + ? 0 >= ge(Ie, C) + ? C.getFullYear() + 1 + : C.getFullYear() + : C.getFullYear() - 1 + ); + } + (O >>>= 0), (M >>>= 0), (I >>>= 0), (k >>>= 0); + var Ze = de[((k + 40) >>> 2) >>> 0]; + (k = { + Da: V[(k >>> 2) >>> 0], + Ca: V[((k + 4) >>> 2) >>> 0], + va: V[((k + 8) >>> 2) >>> 0], + ya: V[((k + 12) >>> 2) >>> 0], + wa: V[((k + 16) >>> 2) >>> 0], + ua: V[((k + 20) >>> 2) >>> 0], + oa: V[((k + 24) >>> 2) >>> 0], + ta: V[((k + 28) >>> 2) >>> 0], + Ia: V[((k + 32) >>> 2) >>> 0], + Ba: V[((k + 36) >>> 2) >>> 0], + Ea: Ze ? Mt(Ze) : '', + }), + (I = Mt(I)), + (Ze = { + '%c': '%a %b %d %H:%M:%S %Y', + '%D': '%m/%d/%y', + '%F': '%Y-%m-%d', + '%h': '%b', + '%r': '%I:%M:%S %p', + '%R': '%H:%M', + '%T': '%H:%M:%S', + '%x': '%m/%d/%y', + '%X': '%H:%M:%S', + '%Ec': '%c', + '%EC': '%C', + '%Ex': '%m/%d/%y', + '%EX': '%H:%M:%S', + '%Ey': '%y', + '%EY': '%Y', + '%Od': '%d', + '%Oe': '%e', + '%OH': '%H', + '%OI': '%I', + '%Om': '%m', + '%OM': '%M', + '%OS': '%S', + '%Ou': '%u', + '%OU': '%U', + '%OV': '%V', + '%Ow': '%w', + '%OW': '%W', + '%Oy': '%y', + }); + for (var Je in Ze) I = I.replace(new RegExp(Je, 'g'), Ze[Je]); + var er = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' '), + tr = + 'January February March April May June July August September October November December'.split( + ' ' + ); + (Ze = { + '%a': (C) => er[C.oa].substring(0, 3), + '%A': (C) => er[C.oa], + '%b': (C) => tr[C.wa].substring(0, 3), + '%B': (C) => tr[C.wa], + '%C': (C) => ne(((C.ua + 1900) / 100) | 0, 2), + '%d': (C) => ne(C.ya, 2), + '%e': (C) => G(C.ya, 2, ' '), + '%g': (C) => et(C).toString().substring(2), + '%G': (C) => et(C), + '%H': (C) => ne(C.va, 2), + '%I': (C) => ((C = C.va), C == 0 ? (C = 12) : 12 < C && (C -= 12), ne(C, 2)), + '%j': (C) => { + for (var Te = 0, Ie = 0; Ie <= C.wa - 1; Te += (yt(C.ua + 1900) ? Et : Yt)[Ie++]); + return ne(C.ya + Te, 3); + }, + '%m': (C) => ne(C.wa + 1, 2), + '%M': (C) => ne(C.Ca, 2), + '%n': () => ` +`, + '%p': (C) => (0 <= C.va && 12 > C.va ? 'AM' : 'PM'), + '%S': (C) => ne(C.Da, 2), + '%t': () => ' ', + '%u': (C) => C.oa || 7, + '%U': (C) => ne(Math.floor((C.ta + 7 - C.oa) / 7), 2), + '%V': (C) => { + var Te = Math.floor((C.ta + 7 - ((C.oa + 6) % 7)) / 7); + if ((2 >= (C.oa + 371 - C.ta - 2) % 7 && Te++, Te)) + Te == 53 && + ((Ie = (C.oa + 371 - C.ta) % 7), Ie == 4 || (Ie == 3 && yt(C.ua)) || (Te = 1)); + else { + Te = 52; + var Ie = (C.oa + 7 - C.ta - 1) % 7; + (Ie == 4 || (Ie == 5 && yt((C.ua % 400) - 1))) && Te++; + } + return ne(Te, 2); + }, + '%w': (C) => C.oa, + '%W': (C) => ne(Math.floor((C.ta + 7 - ((C.oa + 6) % 7)) / 7), 2), + '%y': (C) => (C.ua + 1900).toString().substring(2), + '%Y': (C) => C.ua + 1900, + '%z': (C) => { + C = C.Ba; + var Te = 0 <= C; + return ( + (C = Math.abs(C) / 60), + (Te ? '+' : '-') + ('0000' + ((C / 60) * 100 + (C % 60))).slice(-4) + ); + }, + '%Z': (C) => C.Ea, + '%%': () => '%', + }), + (I = I.replace(/%%/g, '\0\0')); + for (Je in Ze) I.includes(Je) && (I = I.replace(new RegExp(Je, 'g'), Ze[Je](k))); + return ( + (I = I.replace(/\0\0/g, '%')), + (Je = Ir(I)), + Je.length > M ? 0 : (Q.set(Je, O >>> 0), Je.length - 1) + ); + } + var Zr = { + a: function (O, M, I) { + throw ((O >>>= 0), new Se(O).Aa(M >>> 0, I >>> 0), (je = O), je); + }, + e: function () { + return 0; + }, + H: function () {}, + x: function () {}, + z: function () {}, + J: function () { + return 0; + }, + F: function () {}, + A: function () {}, + E: function () {}, + g: function () {}, + y: function () {}, + v: function () {}, + G: function () {}, + w: function () {}, + k: () => 1, + n: function (O, M, I) { + (O = (M + 2097152) >>> 0 < 4194305 - !!O ? (O >>> 0) + 4294967296 * M : NaN), + (I >>>= 0), + (O = new Date(1e3 * O)), + (V[(I >>> 2) >>> 0] = O.getUTCSeconds()), + (V[((I + 4) >>> 2) >>> 0] = O.getUTCMinutes()), + (V[((I + 8) >>> 2) >>> 0] = O.getUTCHours()), + (V[((I + 12) >>> 2) >>> 0] = O.getUTCDate()), + (V[((I + 16) >>> 2) >>> 0] = O.getUTCMonth()), + (V[((I + 20) >>> 2) >>> 0] = O.getUTCFullYear() - 1900), + (V[((I + 24) >>> 2) >>> 0] = O.getUTCDay()), + (V[((I + 28) >>> 2) >>> 0] = + ((O.getTime() - Date.UTC(O.getUTCFullYear(), 0, 1, 0, 0, 0, 0)) / 864e5) | 0); + }, + o: function (O, M, I) { + (O = (M + 2097152) >>> 0 < 4194305 - !!O ? (O >>> 0) + 4294967296 * M : NaN), + (I >>>= 0), + (O = new Date(1e3 * O)), + (V[(I >>> 2) >>> 0] = O.getSeconds()), + (V[((I + 4) >>> 2) >>> 0] = O.getMinutes()), + (V[((I + 8) >>> 2) >>> 0] = O.getHours()), + (V[((I + 12) >>> 2) >>> 0] = O.getDate()), + (V[((I + 16) >>> 2) >>> 0] = O.getMonth()), + (V[((I + 20) >>> 2) >>> 0] = O.getFullYear() - 1900), + (V[((I + 24) >>> 2) >>> 0] = O.getDay()), + (V[((I + 28) >>> 2) >>> 0] = + ((yt(O.getFullYear()) ? Or : Ht)[O.getMonth()] + O.getDate() - 1) | 0), + (V[((I + 36) >>> 2) >>> 0] = -(60 * O.getTimezoneOffset())), + (M = new Date(O.getFullYear(), 6, 1).getTimezoneOffset()); + var k = new Date(O.getFullYear(), 0, 1).getTimezoneOffset(); + V[((I + 32) >>> 2) >>> 0] = (M != k && O.getTimezoneOffset() == Math.min(k, M)) | 0; + }, + p: function (O) { + O >>>= 0; + var M = new Date( + V[((O + 20) >>> 2) >>> 0] + 1900, + V[((O + 16) >>> 2) >>> 0], + V[((O + 12) >>> 2) >>> 0], + V[((O + 8) >>> 2) >>> 0], + V[((O + 4) >>> 2) >>> 0], + V[(O >>> 2) >>> 0], + 0 + ), + I = V[((O + 32) >>> 2) >>> 0], + k = M.getTimezoneOffset(), + G = new Date(M.getFullYear(), 6, 1).getTimezoneOffset(), + ne = new Date(M.getFullYear(), 0, 1).getTimezoneOffset(), + ge = Math.min(ne, G); + return ( + 0 > I + ? (V[((O + 32) >>> 2) >>> 0] = +(G != ne && ge == k)) + : 0 < I != (ge == k) && + ((G = Math.max(ne, G)), + M.setTime(M.getTime() + 6e4 * ((0 < I ? ge : G) - k))), + (V[((O + 24) >>> 2) >>> 0] = M.getDay()), + (V[((O + 28) >>> 2) >>> 0] = + ((yt(M.getFullYear()) ? Or : Ht)[M.getMonth()] + M.getDate() - 1) | 0), + (V[(O >>> 2) >>> 0] = M.getSeconds()), + (V[((O + 4) >>> 2) >>> 0] = M.getMinutes()), + (V[((O + 8) >>> 2) >>> 0] = M.getHours()), + (V[((O + 12) >>> 2) >>> 0] = M.getDate()), + (V[((O + 16) >>> 2) >>> 0] = M.getMonth()), + (V[((O + 20) >>> 2) >>> 0] = M.getYear()), + (O = M.getTime()), + isNaN(O) ? ((V[(Kt() >>> 2) >>> 0] = 61), (O = -1)) : (O /= 1e3), + Fr( + ((Be = O), + 1 <= +Math.abs(Be) + ? 0 < Be + ? +Math.floor(Be / 4294967296) >>> 0 + : ~~+Math.ceil((Be - +(~~Be >>> 0)) / 4294967296) >>> 0 + : 0) + ), + O >>> 0 + ); + }, + l: function () { + return -52; + }, + m: function () {}, + t: function (O, M, I) { + function k(et) { + return (et = et.toTimeString().match(/\(([A-Za-z ]+)\)$/)) ? et[1] : 'GMT'; + } + I >>>= 0; + var G = new Date().getFullYear(), + ne = new Date(G, 0, 1), + ge = new Date(G, 6, 1); + G = ne.getTimezoneOffset(); + var Ue = ge.getTimezoneOffset(); + (de[((O >>> 0) >>> 2) >>> 0] = 60 * Math.max(G, Ue)), + (V[((M >>> 0) >>> 2) >>> 0] = +(G != Ue)), + (O = k(ne)), + (M = k(ge)), + (O = Sr(O)), + (M = Sr(M)), + Ue < G + ? ((de[(I >>> 2) >>> 0] = O), (de[((I + 4) >>> 2) >>> 0] = M)) + : ((de[(I >>> 2) >>> 0] = M), (de[((I + 4) >>> 2) >>> 0] = O)); + }, + d: () => { + pe(''); + }, + B: function (O, M, I) { + (O >>>= 0), (M >>>= 0), (I >>>= 0), (st.length = 0); + for (var k; (k = re[M++ >>> 0]); ) { + var G = k != 105; + (G &= k != 112), + (I += G && I % 8 ? 4 : 0), + st.push( + k == 112 + ? de[(I >>> 2) >>> 0] + : k == 105 + ? V[(I >>> 2) >>> 0] + : ke[(I >>> 3) >>> 0] + ), + (I += G ? 8 : 4); + } + return Ce[O].apply(null, st); + }, + h: () => Date.now(), + u: function () { + return 4294901760; + }, + b: () => performance.now(), + I: function (O, M, I) { + return (M >>>= 0), re.copyWithin((O >>> 0) >>> 0, M >>> 0, (M + (I >>> 0)) >>> 0); + }, + s: function (O) { + O >>>= 0; + var M = re.length; + if (4294901760 < O) return !1; + for (var I = 1; 4 >= I; I *= 2) { + var k = M * (1 + 0.2 / I); + k = Math.min(k, O + 100663296); + var G = Math; + k = Math.max(O, k); + e: { + G = + (G.min.call(G, 4294901760, k + ((65536 - (k % 65536)) % 65536)) - + B.buffer.byteLength + + 65535) / + 65536; + try { + B.grow(G), Ne(); + var ne = 1; + break e; + } catch {} + ne = void 0; + } + if (ne) return !0; + } + return !1; + }, + C: function (O, M) { + (O >>>= 0), (M >>>= 0); + var I = 0; + return ( + At().forEach((k, G) => { + var ne = M + I; + for (G = de[((O + 4 * G) >>> 2) >>> 0] = ne, ne = 0; ne < k.length; ++ne) + Q[(G++ >>> 0) >>> 0] = k.charCodeAt(ne); + (Q[(G >>> 0) >>> 0] = 0), (I += k.length + 1); + }), + 0 + ); + }, + D: function (O, M) { + (O >>>= 0), (M >>>= 0); + var I = At(); + de[(O >>> 2) >>> 0] = I.length; + var k = 0; + return I.forEach((G) => (k += G.length + 1)), (de[(M >>> 2) >>> 0] = k), 0; + }, + f: () => 52, + j: function () { + return 52; + }, + q: function () { + return 70; + }, + i: function (O, M, I, k) { + (M >>>= 0), (I >>>= 0), (k >>>= 0); + for (var G = 0, ne = 0; ne < I; ne++) { + var ge = de[(M >>> 2) >>> 0], + Ue = de[((M + 4) >>> 2) >>> 0]; + M += 8; + for (var et = 0; et < Ue; et++) { + var Ze = re[(ge + et) >>> 0], + Je = Ar[O]; + Ze === 0 || Ze === 10 + ? ((O === 1 ? A : F)(xt(Je, 0)), (Je.length = 0)) + : Je.push(Ze); + } + G += Ue; + } + return (de[(k >>> 2) >>> 0] = G), 0; + }, + r: Dt, + c: function (O, M, I, k) { + return Dt(O >>> 0, M >>> 0, I >>> 0, k >>> 0); + }, + }, + H = (function () { + function O(I) { + return ( + (H = I.exports), + (H = Wt()), + (B = H.K), + Ne(), + Y.unshift(H.L), + he--, + he == 0 && ue && ((I = ue), (ue = null), I()), + H + ); + } + var M = { a: Zr }; + if ((he++, n.instantiateWasm)) + try { + return n.instantiateWasm(M, O); + } catch (I) { + F(`Module.instantiateWasm callback failed with error: ${I}`), d(I); + } + return ( + Qe(M, function (I) { + O(I.instance); + }).catch(d), + {} + ); + })(); + (n._OrtInit = (O, M) => (n._OrtInit = H.M)(O, M)), + (n._OrtGetLastError = (O, M) => (n._OrtGetLastError = H.N)(O, M)), + (n._OrtCreateSessionOptions = (O, M, I, k, G, ne, ge, Ue, et, Ze) => + (n._OrtCreateSessionOptions = H.O)(O, M, I, k, G, ne, ge, Ue, et, Ze)), + (n._OrtAppendExecutionProvider = (O, M) => (n._OrtAppendExecutionProvider = H.P)(O, M)), + (n._OrtAddFreeDimensionOverride = (O, M, I) => (n._OrtAddFreeDimensionOverride = H.Q)(O, M, I)), + (n._OrtAddSessionConfigEntry = (O, M, I) => (n._OrtAddSessionConfigEntry = H.R)(O, M, I)), + (n._OrtReleaseSessionOptions = (O) => (n._OrtReleaseSessionOptions = H.S)(O)), + (n._OrtCreateSession = (O, M, I) => (n._OrtCreateSession = H.T)(O, M, I)), + (n._OrtReleaseSession = (O) => (n._OrtReleaseSession = H.U)(O)), + (n._OrtGetInputOutputCount = (O, M, I) => (n._OrtGetInputOutputCount = H.V)(O, M, I)), + (n._OrtGetInputName = (O, M) => (n._OrtGetInputName = H.W)(O, M)), + (n._OrtGetOutputName = (O, M) => (n._OrtGetOutputName = H.X)(O, M)), + (n._OrtFree = (O) => (n._OrtFree = H.Y)(O)), + (n._OrtCreateTensor = (O, M, I, k, G, ne) => (n._OrtCreateTensor = H.Z)(O, M, I, k, G, ne)), + (n._OrtGetTensorData = (O, M, I, k, G) => (n._OrtGetTensorData = H._)(O, M, I, k, G)), + (n._OrtReleaseTensor = (O) => (n._OrtReleaseTensor = H.$)(O)), + (n._OrtCreateRunOptions = (O, M, I, k) => (n._OrtCreateRunOptions = H.aa)(O, M, I, k)), + (n._OrtAddRunConfigEntry = (O, M, I) => (n._OrtAddRunConfigEntry = H.ba)(O, M, I)), + (n._OrtReleaseRunOptions = (O) => (n._OrtReleaseRunOptions = H.ca)(O)), + (n._OrtCreateBinding = (O) => (n._OrtCreateBinding = H.da)(O)), + (n._OrtBindInput = (O, M, I) => (n._OrtBindInput = H.ea)(O, M, I)), + (n._OrtBindOutput = (O, M, I, k) => (n._OrtBindOutput = H.fa)(O, M, I, k)), + (n._OrtClearBoundOutputs = (O) => (n._OrtClearBoundOutputs = H.ga)(O)), + (n._OrtReleaseBinding = (O) => (n._OrtReleaseBinding = H.ha)(O)), + (n._OrtRunWithBinding = (O, M, I, k, G) => (n._OrtRunWithBinding = H.ia)(O, M, I, k, G)), + (n._OrtRun = (O, M, I, k, G, ne, ge, Ue) => (n._OrtRun = H.ja)(O, M, I, k, G, ne, ge, Ue)), + (n._OrtEndProfiling = (O) => (n._OrtEndProfiling = H.ka)(O)); + var Kt = () => (Kt = H.la)(), + Gt = (n._malloc = (O) => (Gt = n._malloc = H.ma)(O)); + n._free = (O) => (n._free = H.na)(O); + var Fr = (O) => (Fr = H.pa)(O), + Qt = () => (Qt = H.qa)(), + jr = (O) => (jr = H.ra)(O), + se = (O) => (se = H.sa)(O); + function Wt() { + var O = H; + O = Object.assign({}, O); + var M = (k) => () => k() >>> 0, + I = (k) => (G) => k(G) >>> 0; + return (O.la = M(O.la)), (O.ma = I(O.ma)), (O.qa = M(O.qa)), (O.sa = I(O.sa)), O; + } + (n.stackAlloc = se), + (n.stackSave = Qt), + (n.stackRestore = jr), + (n.UTF8ToString = Mt), + (n.stringToUTF8 = (O, M, I) => gt(O, re, M, I)), + (n.lengthBytesUTF8 = Ot); + var Nt; + ue = function O() { + Nt || Lt(), Nt || (ue = O); + }; + function Lt() { + if (!(0 < he)) { + if (n.preRun) + for (typeof n.preRun == 'function' && (n.preRun = [n.preRun]); n.preRun.length; ) { + var O = n.preRun.shift(); + Me.unshift(O); + } + for (; 0 < Me.length; ) Me.shift()(n); + if (!(0 < he || Nt || ((Nt = !0), (n.calledRun = !0), J))) { + for (; 0 < Y.length; ) Y.shift()(n); + for (s(n); 0 < _e.length; ) _e.shift()(n); + } + } + } + return Lt(), u.ready; + } + ); + })(); + typeof t == 'object' && typeof e == 'object' + ? (e.exports = o) + : typeof define == 'function' && define.amd && define([], () => o); + }), + Pp = me(() => {}), + Ep = me(() => {}), + Dp = {}; +Pr(Dp, { cpus: () => ng }); +var ng, + Lp = L(() => { + ng = void 0; + }), + Cp = me((t, e) => { + var o = (() => { + var i = typeof document < 'u' && document.currentScript ? document.currentScript.src : void 0; + return ( + typeof __filename < 'u' && (i = i || __filename), + function (u = {}) { + function n() { + return _e.buffer != X.buffer && qe(), X; + } + function s() { + return _e.buffer != X.buffer && qe(), ve; + } + function d() { + return _e.buffer != X.buffer && qe(), we; + } + function f() { + return _e.buffer != X.buffer && qe(), rt; + } + function r() { + return _e.buffer != X.buffer && qe(), ot; + } + var a = u, + l, + p; + a.ready = new Promise((g, x) => { + (l = g), (p = x); + }); + var m = Object.assign({}, a), + y = './this.program', + T = (g, x) => { + throw x; + }, + v = typeof window == 'object', + S = typeof importScripts == 'function', + E = + typeof process == 'object' && + typeof process.versions == 'object' && + typeof process.versions.node == 'string', + A = a.ENVIRONMENT_IS_PTHREAD || !1, + F = ''; + function B(g) { + return a.locateFile ? a.locateFile(g, F) : F + g; + } + var J, Q, re; + if (E) { + var V = (ta(), rr(ea)), + de = (na(), rr(ra)); + (F = S ? de.dirname(F) + '/' : __dirname + '/'), + (J = (x, P) => ( + (x = Ot(x) ? new URL(x) : de.normalize(x)), V.readFileSync(x, P ? void 0 : 'utf8') + )), + (re = (x) => ((x = J(x, !0)), x.buffer || (x = new Uint8Array(x)), x)), + (Q = (x, P, D, j = !0) => { + (x = Ot(x) ? new URL(x) : de.normalize(x)), + V.readFile(x, j ? void 0 : 'utf8', (z, K) => { + z ? D(z) : P(j ? K.buffer : K); + }); + }), + !a.thisProgram && 1 < process.argv.length && (y = process.argv[1].replace(/\\/g, '/')), + process.argv.slice(2), + (T = (x, P) => { + throw ((process.exitCode = x), P); + }), + (a.inspect = () => '[Emscripten Module object]'); + let g; + try { + g = Pp(); + } catch (x) { + throw ( + (console.error( + 'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?' + ), + x) + ); + } + global.Worker = g.Worker; + } else + (v || S) && + (S + ? (F = self.location.href) + : typeof document < 'u' && document.currentScript && (F = document.currentScript.src), + typeof i < 'u' && i && (F = i), + F.indexOf('blob:') !== 0 + ? (F = F.substr(0, F.replace(/[?#].*/, '').lastIndexOf('/') + 1)) + : (F = ''), + E || + ((J = (g) => { + var x = new XMLHttpRequest(); + return x.open('GET', g, !1), x.send(null), x.responseText; + }), + S && + (re = (g) => { + var x = new XMLHttpRequest(); + return ( + x.open('GET', g, !1), + (x.responseType = 'arraybuffer'), + x.send(null), + new Uint8Array(x.response) + ); + }), + (Q = (g, x, P) => { + var D = new XMLHttpRequest(); + D.open('GET', g, !0), + (D.responseType = 'arraybuffer'), + (D.onload = () => { + D.status == 200 || (D.status == 0 && D.response) ? x(D.response) : P(); + }), + (D.onerror = P), + D.send(null); + }))); + E && typeof performance > 'u' && (global.performance = Ep().performance); + var ke = console.log.bind(console), + Ne = console.error.bind(console); + E && + ((ke = (...g) => + V.writeSync( + 1, + g.join(' ') + + ` +` + )), + (Ne = (...g) => + V.writeSync( + 2, + g.join(' ') + + ` +` + ))); + var Me = ke, + Y = Ne; + Object.assign(a, m), + (m = null), + typeof WebAssembly != 'object' && xt('no native wasm support detected'); + var _e, + he, + ue = !1, + pe, + X, + ve, + we, + rt, + ot; + function qe() { + var g = _e.buffer; + (a.HEAP8 = X = new Int8Array(g)), + (a.HEAP16 = new Int16Array(g)), + (a.HEAPU8 = ve = new Uint8Array(g)), + (a.HEAPU16 = new Uint16Array(g)), + (a.HEAP32 = we = new Int32Array(g)), + (a.HEAPU32 = rt = new Uint32Array(g)), + (a.HEAPF32 = new Float32Array(g)), + (a.HEAPF64 = ot = new Float64Array(g)); + } + var He = 16777216; + if (A) _e = a.wasmMemory; + else if (a.wasmMemory) _e = a.wasmMemory; + else if ( + ((_e = new WebAssembly.Memory({ initial: He / 65536, maximum: 65536, shared: !0 })), + !(_e.buffer instanceof SharedArrayBuffer)) + ) + throw ( + (Y( + 'requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag' + ), + E && + Y( + '(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)' + ), + Error('bad memory')) + ); + qe(), (He = _e.buffer.byteLength); + var Qe = [], + Be = [], + Ce = [], + Se = 0, + je = null; + function Tt() { + if ((Se--, Se == 0 && je)) { + var g = je; + (je = null), g(); + } + } + function xt(g) { + throw ( + ((g = 'Aborted(' + g + ')'), + Y(g), + (ue = !0), + (pe = 1), + (g = new WebAssembly.RuntimeError(g + '. Build with -sASSERTIONS for more info.')), + p(g), + g) + ); + } + var Mt = (g) => g.startsWith('data:application/octet-stream;base64,'), + Ot = (g) => g.startsWith('file://'), + gt; + (gt = 'ort-wasm-threaded.wasm'), Mt(gt) || (gt = B(gt)); + function yt(g) { + if (re) return re(g); + throw 'both async and sync fetching of the wasm failed'; + } + function Or(g) { + if (v || S) { + if (typeof fetch == 'function' && !Ot(g)) + return fetch(g, { credentials: 'same-origin' }) + .then((x) => { + if (!x.ok) throw "failed to load wasm binary file at '" + g + "'"; + return x.arrayBuffer(); + }) + .catch(() => yt(g)); + if (Q) + return new Promise((x, P) => { + Q(g, (D) => x(new Uint8Array(D)), P); + }); + } + return Promise.resolve().then(() => yt(g)); + } + function Ht(g, x, P) { + return Or(g) + .then((D) => WebAssembly.instantiate(D, x)) + .then((D) => D) + .then(P, (D) => { + Y(`failed to asynchronously prepare wasm: ${D}`), xt(D); + }); + } + function Sr(g, x) { + var P = gt; + return typeof WebAssembly.instantiateStreaming != 'function' || + Mt(P) || + Ot(P) || + E || + typeof fetch != 'function' + ? Ht(P, g, x) + : fetch(P, { credentials: 'same-origin' }).then((D) => + WebAssembly.instantiateStreaming(D, g).then(x, function (j) { + return ( + Y(`wasm streaming compile failed: ${j}`), + Y('falling back to ArrayBuffer instantiation'), + Ht(P, g, x) + ); + }) + ); + } + var st, + Bt = { + 921276: (g, x, P, D) => { + if (typeof a > 'u' || !a.cb) return 1; + if ( + ((g = Dt(g >>> 0)), + g.startsWith('./') && (g = g.substring(2)), + (g = a.cb.get(g)), + !g) + ) + return 2; + if (((x >>>= 0), (P >>>= 0), (D >>>= 0), x + P > g.byteLength)) return 3; + try { + return s().set(g.subarray(x, x + P), D >>> 0), 0; + } catch { + return 4; + } + }, + }; + function At(g) { + (this.name = 'ExitStatus'), + (this.message = `Program terminated with exit(${g})`), + (this.status = g); + } + var It = (g) => { + g.terminate(), (g.onmessage = () => {}); + }, + Ar = (g) => { + se.Pa.length == 0 && (Qt(), se.Ya(se.Pa[0])); + var x = se.Pa.pop(); + if (!x) return 6; + se.Qa.push(x), (se.Ma[g.Oa] = x), (x.Oa = g.Oa); + var P = { cmd: 'run', start_routine: g.kb, arg: g.hb, pthread_ptr: g.Oa }; + return E && x.unref(), x.postMessage(P, g.qb), 0; + }, + Et = 0, + Yt = typeof TextDecoder < 'u' ? new TextDecoder('utf8') : void 0, + Ir = (g, x, P) => { + x >>>= 0; + var D = x + P; + for (P = x; g[P] && !(P >= D); ) ++P; + if (16 < P - x && g.buffer && Yt) + return Yt.decode( + g.buffer instanceof SharedArrayBuffer ? g.slice(x, P) : g.subarray(x, P) + ); + for (D = ''; x < P; ) { + var j = g[x++]; + if (j & 128) { + var z = g[x++] & 63; + if ((j & 224) == 192) D += String.fromCharCode(((j & 31) << 6) | z); + else { + var K = g[x++] & 63; + (j = + (j & 240) == 224 + ? ((j & 15) << 12) | (z << 6) | K + : ((j & 7) << 18) | (z << 12) | (K << 6) | (g[x++] & 63)), + 65536 > j + ? (D += String.fromCharCode(j)) + : ((j -= 65536), + (D += String.fromCharCode(55296 | (j >> 10), 56320 | (j & 1023)))); + } + } else D += String.fromCharCode(j); + } + return D; + }, + Dt = (g, x) => ((g >>>= 0) ? Ir(s(), g, x) : ''), + Zr = (g) => { + var x = xn(); + return (g = g()), Yr(x), g; + }; + function H(g, x) { + var P = arguments.length - 2, + D = arguments; + return Zr(() => { + for (var j = On(8 * P), z = j >>> 3, K = 0; K < P; K++) { + var $e = D[2 + K]; + r()[(z + K) >>> 0] = $e; + } + return si(g, P, j, x); + }); + } + function Kt(g) { + if (A) return H(0, 1, g); + (pe = g), 0 < Et || (se.lb(), a.onExit?.(g), (ue = !0)), T(g, new At(g)); + } + var Gt = (g) => { + if (((pe = g), A)) throw (Nt(g), 'unwind'); + Kt(g); + }; + function Fr() { + for (var g = a.numThreads; g--; ) Qt(); + Qe.unshift(() => { + Se++, jr(() => Tt()); + }); + } + function Qt() { + var g = B('ort-wasm-threaded.worker.js'); + (g = new Worker(g)), se.Pa.push(g); + } + function jr(g) { + A ? g() : Promise.all(se.Pa.map(se.Ya)).then(g); + } + var se = { + Pa: [], + Qa: [], + bb: [], + Ma: {}, + Wa() { + A + ? ((se.receiveObjectTransfer = se.jb), + (se.threadInitTLS = se.ab), + (se.setExitStatus = se.$a)) + : Fr(); + }, + $a: (g) => (pe = g), + tb: ['$terminateWorker'], + lb: () => { + for (var g of se.Qa) It(g); + for (g of se.Pa) It(g); + (se.Pa = []), (se.Qa = []), (se.Ma = []); + }, + Za: (g) => { + var x = g.Oa; + delete se.Ma[x], se.Pa.push(g), se.Qa.splice(se.Qa.indexOf(g), 1), (g.Oa = 0), wn(x); + }, + jb() {}, + ab() { + se.bb.forEach((g) => g()); + }, + Ya: (g) => + new Promise((x) => { + (g.onmessage = (z) => { + z = z.data; + var K = z.cmd; + if (z.targetThread && z.targetThread != Hr()) { + var $e = se.Ma[z.targetThread]; + $e + ? $e.postMessage(z, z.transferList) + : Y( + `Internal error! Worker sent a message "${K}" to target pthread ${z.targetThread}, but that thread no longer exists!` + ); + } else + K === 'checkMailbox' + ? qr() + : K === 'spawnThread' + ? Ar(z) + : K === 'cleanupThread' + ? se.Za(se.Ma[z.thread]) + : K === 'killThread' + ? ((z = z.thread), + (K = se.Ma[z]), + delete se.Ma[z], + It(K), + wn(z), + se.Qa.splice(se.Qa.indexOf(K), 1), + (K.Oa = 0)) + : K === 'cancelThread' + ? se.Ma[z.thread].postMessage({ cmd: 'cancel' }) + : K === 'loaded' + ? ((g.loaded = !0), E && !g.Oa && g.unref(), x(g)) + : K === 'alert' + ? alert(`Thread ${z.threadId}: ${z.text}`) + : z.target === 'setimmediate' + ? g.postMessage(z) + : K === 'callHandler' + ? a[z.handler](...z.args) + : K && Y(`worker sent an unknown command ${K}`); + }), + (g.onerror = (z) => { + throw (Y(`worker sent an error! ${z.filename}:${z.lineno}: ${z.message}`), z); + }), + E && + (g.on('message', (z) => g.onmessage({ data: z })), + g.on('error', (z) => g.onerror(z))); + var P = [], + D = ['onExit'], + j; + for (j of D) a.hasOwnProperty(j) && P.push(j); + g.postMessage({ + cmd: 'load', + handlers: P, + urlOrBlob: a.mainScriptUrlOrBlob || i, + wasmMemory: _e, + wasmModule: he, + }); + }), + }; + a.PThread = se; + var Wt = (g) => { + for (; 0 < g.length; ) g.shift()(a); + }; + a.establishStackSpace = () => { + var g = Hr(), + x = f()[((g + 52) >>> 2) >>> 0]; + (g = f()[((g + 56) >>> 2) >>> 0]), ci(x, x - g), Yr(x); + }; + function Nt(g) { + if (A) return H(1, 0, g); + Gt(g); + } + var Lt = [], + O; + a.invokeEntryPoint = (g, x) => { + var P = Lt[g]; + P || (g >= Lt.length && (Lt.length = g + 1), (Lt[g] = P = O.get(g))), + (g = P(x)), + 0 < Et ? se.$a(g) : vn(g); + }; + function M(g) { + (this.Va = g - 24), + (this.gb = function (x) { + f()[((this.Va + 4) >>> 2) >>> 0] = x; + }), + (this.fb = function (x) { + f()[((this.Va + 8) >>> 2) >>> 0] = x; + }), + (this.Wa = function (x, P) { + this.eb(), this.gb(x), this.fb(P); + }), + (this.eb = function () { + f()[((this.Va + 16) >>> 2) >>> 0] = 0; + }); + } + var I = 0; + function k(g, x, P, D) { + return A ? H(2, 1, g, x, P, D) : G(g, x, P, D); + } + function G(g, x, P, D) { + if (((g >>>= 0), (x >>>= 0), (P >>>= 0), (D >>>= 0), typeof SharedArrayBuffer > 'u')) + return ( + Y( + 'Current environment does not support SharedArrayBuffer, pthreads are not available!' + ), + 6 + ); + var j = []; + return A && j.length === 0 + ? k(g, x, P, D) + : ((g = { kb: P, Oa: g, hb: D, qb: j }), + A ? ((g.sb = 'spawnThread'), postMessage(g, j), 0) : Ar(g)); + } + function ne(g, x, P) { + return A ? H(3, 1, g, x, P) : 0; + } + function ge(g, x) { + if (A) return H(4, 1, g, x); + } + var Ue = (g) => { + for (var x = 0, P = 0; P < g.length; ++P) { + var D = g.charCodeAt(P); + 127 >= D + ? x++ + : 2047 >= D + ? (x += 2) + : 55296 <= D && 57343 >= D + ? ((x += 4), ++P) + : (x += 3); + } + return x; + }, + et = (g, x, P, D) => { + if (((P >>>= 0), !(0 < D))) return 0; + var j = P; + D = P + D - 1; + for (var z = 0; z < g.length; ++z) { + var K = g.charCodeAt(z); + if (55296 <= K && 57343 >= K) { + var $e = g.charCodeAt(++z); + K = (65536 + ((K & 1023) << 10)) | ($e & 1023); + } + if (127 >= K) { + if (P >= D) break; + x[P++ >>> 0] = K; + } else { + if (2047 >= K) { + if (P + 1 >= D) break; + x[P++ >>> 0] = 192 | (K >> 6); + } else { + if (65535 >= K) { + if (P + 2 >= D) break; + x[P++ >>> 0] = 224 | (K >> 12); + } else { + if (P + 3 >= D) break; + (x[P++ >>> 0] = 240 | (K >> 18)), (x[P++ >>> 0] = 128 | ((K >> 12) & 63)); + } + x[P++ >>> 0] = 128 | ((K >> 6) & 63); + } + x[P++ >>> 0] = 128 | (K & 63); + } + } + return (x[P >>> 0] = 0), P - j; + }, + Ze = (g, x, P) => et(g, s(), x, P); + function Je(g, x) { + if (A) return H(5, 1, g, x); + } + function er(g, x, P) { + if (A) return H(6, 1, g, x, P); + } + function tr(g, x, P) { + return A ? H(7, 1, g, x, P) : 0; + } + function C(g, x) { + if (A) return H(8, 1, g, x); + } + function Te(g, x, P) { + if (A) return H(9, 1, g, x, P); + } + function Ie(g, x, P, D) { + if (A) return H(10, 1, g, x, P, D); + } + function at(g, x, P, D) { + if (A) return H(11, 1, g, x, P, D); + } + function lr(g, x, P, D) { + if (A) return H(12, 1, g, x, P, D); + } + function An(g) { + if (A) return H(13, 1, g); + } + function In(g, x) { + if (A) return H(14, 1, g, x); + } + function jn(g, x, P) { + if (A) return H(15, 1, g, x, P); + } + function Jr(g) { + (g >>>= 0), + typeof Atomics.rb == 'function' && + (Atomics.rb(d(), g >>> 2, g).value.then(qr), + (g += 128), + Atomics.store(d(), g >>> 2, 1)); + } + a.__emscripten_thread_mailbox_await = Jr; + var qr = () => { + var g = Hr(); + if (g && (Jr(g), (g = ai), !ue)) + try { + if ((g(), !(0 < Et))) + try { + A ? vn(pe) : Gt(pe); + } catch (x) { + x instanceof At || x == 'unwind' || T(1, x); + } + } catch (x) { + x instanceof At || x == 'unwind' || T(1, x); + } + }; + a.checkMailbox = qr; + var rn = [], + qt = (g) => g % 4 === 0 && (g % 100 !== 0 || g % 400 === 0), + qn = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], + Hn = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + function Yn(g, x, P, D, j, z, K, $e) { + return A ? H(16, 1, g, x, P, D, j, z, K, $e) : -52; + } + function Mo(g, x, P, D, j, z, K) { + if (A) return H(17, 1, g, x, P, D, j, z, K); + } + var No = (g) => { + var x = Ue(g) + 1, + P = oi(x); + return P && Ze(g, P, x), P; + }, + nn = [], + on = {}, + Ro = () => { + if (!_n) { + var g = { + USER: 'web_user', + LOGNAME: 'web_user', + PATH: '/', + PWD: '/', + HOME: '/home/web_user', + LANG: + ( + (typeof navigator == 'object' && + navigator.languages && + navigator.languages[0]) || + 'C' + ).replace('-', '_') + '.UTF-8', + _: y || './this.program', + }, + x; + for (x in on) on[x] === void 0 ? delete g[x] : (g[x] = on[x]); + var P = []; + for (x in g) P.push(`${x}=${g[x]}`); + _n = P; + } + return _n; + }, + _n; + function Bo(g, x) { + if (A) return H(18, 1, g, x); + (g >>>= 0), (x >>>= 0); + var P = 0; + return ( + Ro().forEach((D, j) => { + var z = x + P; + for (j = f()[((g + 4 * j) >>> 2) >>> 0] = z, z = 0; z < D.length; ++z) + n()[(j++ >>> 0) >>> 0] = D.charCodeAt(z); + (n()[(j >>> 0) >>> 0] = 0), (P += D.length + 1); + }), + 0 + ); + } + function Uo(g, x) { + if (A) return H(19, 1, g, x); + (g >>>= 0), (x >>>= 0); + var P = Ro(); + f()[(g >>> 2) >>> 0] = P.length; + var D = 0; + return P.forEach((j) => (D += j.length + 1)), (f()[(x >>> 2) >>> 0] = D), 0; + } + function zo(g) { + return A ? H(20, 1, g) : 52; + } + function Vo(g, x, P, D) { + return A ? H(21, 1, g, x, P, D) : 52; + } + function Go(g, x, P, D, j) { + return A ? H(22, 1, g, x, P, D, j) : 70; + } + var zs = [null, [], []]; + function Wo(g, x, P, D) { + if (A) return H(23, 1, g, x, P, D); + (x >>>= 0), (P >>>= 0), (D >>>= 0); + for (var j = 0, z = 0; z < P; z++) { + var K = f()[(x >>> 2) >>> 0], + $e = f()[((x + 4) >>> 2) >>> 0]; + x += 8; + for (var ct = 0; ct < $e; ct++) { + var ze = s()[(K + ct) >>> 0], + it = zs[g]; + ze === 0 || ze === 10 ? ((g === 1 ? Me : Y)(Ir(it, 0)), (it.length = 0)) : it.push(ze); + } + j += $e; + } + return (f()[(D >>> 2) >>> 0] = j), 0; + } + var Jo = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + ti = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + function Vs(g) { + var x = Array(Ue(g) + 1); + return et(g, x, 0, x.length), x; + } + var Gs = (g, x) => { + n().set(g, x >>> 0); + }; + function ri(g, x, P, D) { + function j(N, Ae, Le) { + for (N = typeof N == 'number' ? N.toString() : N || ''; N.length < Ae; ) N = Le[0] + N; + return N; + } + function z(N, Ae) { + return j(N, Ae, '0'); + } + function K(N, Ae) { + function Le(Ns) { + return 0 > Ns ? -1 : 0 < Ns ? 1 : 0; + } + var Rt; + return ( + (Rt = Le(N.getFullYear() - Ae.getFullYear())) === 0 && + (Rt = Le(N.getMonth() - Ae.getMonth())) === 0 && + (Rt = Le(N.getDate() - Ae.getDate())), + Rt + ); + } + function $e(N) { + switch (N.getDay()) { + case 0: + return new Date(N.getFullYear() - 1, 11, 29); + case 1: + return N; + case 2: + return new Date(N.getFullYear(), 0, 3); + case 3: + return new Date(N.getFullYear(), 0, 2); + case 4: + return new Date(N.getFullYear(), 0, 1); + case 5: + return new Date(N.getFullYear() - 1, 11, 31); + case 6: + return new Date(N.getFullYear() - 1, 11, 30); + } + } + function ct(N) { + var Ae = N.Ra; + for (N = new Date(new Date(N.Sa + 1900, 0, 1).getTime()); 0 < Ae; ) { + var Le = N.getMonth(), + Rt = (qt(N.getFullYear()) ? Jo : ti)[Le]; + if (Ae > Rt - N.getDate()) + (Ae -= Rt - N.getDate() + 1), + N.setDate(1), + 11 > Le + ? N.setMonth(Le + 1) + : (N.setMonth(0), N.setFullYear(N.getFullYear() + 1)); + else { + N.setDate(N.getDate() + Ae); + break; + } + } + return ( + (Le = new Date(N.getFullYear() + 1, 0, 4)), + (Ae = $e(new Date(N.getFullYear(), 0, 4))), + (Le = $e(Le)), + 0 >= K(Ae, N) + ? 0 >= K(Le, N) + ? N.getFullYear() + 1 + : N.getFullYear() + : N.getFullYear() - 1 + ); + } + (g >>>= 0), (x >>>= 0), (P >>>= 0), (D >>>= 0); + var ze = f()[((D + 40) >>> 2) >>> 0]; + (D = { + ob: d()[(D >>> 2) >>> 0], + nb: d()[((D + 4) >>> 2) >>> 0], + Ta: d()[((D + 8) >>> 2) >>> 0], + Xa: d()[((D + 12) >>> 2) >>> 0], + Ua: d()[((D + 16) >>> 2) >>> 0], + Sa: d()[((D + 20) >>> 2) >>> 0], + Na: d()[((D + 24) >>> 2) >>> 0], + Ra: d()[((D + 28) >>> 2) >>> 0], + ub: d()[((D + 32) >>> 2) >>> 0], + mb: d()[((D + 36) >>> 2) >>> 0], + pb: ze ? Dt(ze) : '', + }), + (P = Dt(P)), + (ze = { + '%c': '%a %b %d %H:%M:%S %Y', + '%D': '%m/%d/%y', + '%F': '%Y-%m-%d', + '%h': '%b', + '%r': '%I:%M:%S %p', + '%R': '%H:%M', + '%T': '%H:%M:%S', + '%x': '%m/%d/%y', + '%X': '%H:%M:%S', + '%Ec': '%c', + '%EC': '%C', + '%Ex': '%m/%d/%y', + '%EX': '%H:%M:%S', + '%Ey': '%y', + '%EY': '%Y', + '%Od': '%d', + '%Oe': '%e', + '%OH': '%H', + '%OI': '%I', + '%Om': '%m', + '%OM': '%M', + '%OS': '%S', + '%Ou': '%u', + '%OU': '%U', + '%OV': '%V', + '%Ow': '%w', + '%OW': '%W', + '%Oy': '%y', + }); + for (var it in ze) P = P.replace(new RegExp(it, 'g'), ze[it]); + var fi = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' '), + Cs = + 'January February March April May June July August September October November December'.split( + ' ' + ); + (ze = { + '%a': (N) => fi[N.Na].substring(0, 3), + '%A': (N) => fi[N.Na], + '%b': (N) => Cs[N.Ua].substring(0, 3), + '%B': (N) => Cs[N.Ua], + '%C': (N) => z(((N.Sa + 1900) / 100) | 0, 2), + '%d': (N) => z(N.Xa, 2), + '%e': (N) => j(N.Xa, 2, ' '), + '%g': (N) => ct(N).toString().substring(2), + '%G': (N) => ct(N), + '%H': (N) => z(N.Ta, 2), + '%I': (N) => ((N = N.Ta), N == 0 ? (N = 12) : 12 < N && (N -= 12), z(N, 2)), + '%j': (N) => { + for (var Ae = 0, Le = 0; Le <= N.Ua - 1; Ae += (qt(N.Sa + 1900) ? Jo : ti)[Le++]); + return z(N.Xa + Ae, 3); + }, + '%m': (N) => z(N.Ua + 1, 2), + '%M': (N) => z(N.nb, 2), + '%n': () => ` +`, + '%p': (N) => (0 <= N.Ta && 12 > N.Ta ? 'AM' : 'PM'), + '%S': (N) => z(N.ob, 2), + '%t': () => ' ', + '%u': (N) => N.Na || 7, + '%U': (N) => z(Math.floor((N.Ra + 7 - N.Na) / 7), 2), + '%V': (N) => { + var Ae = Math.floor((N.Ra + 7 - ((N.Na + 6) % 7)) / 7); + if ((2 >= (N.Na + 371 - N.Ra - 2) % 7 && Ae++, Ae)) + Ae == 53 && + ((Le = (N.Na + 371 - N.Ra) % 7), Le == 4 || (Le == 3 && qt(N.Sa)) || (Ae = 1)); + else { + Ae = 52; + var Le = (N.Na + 7 - N.Ra - 1) % 7; + (Le == 4 || (Le == 5 && qt((N.Sa % 400) - 1))) && Ae++; + } + return z(Ae, 2); + }, + '%w': (N) => N.Na, + '%W': (N) => z(Math.floor((N.Ra + 7 - ((N.Na + 6) % 7)) / 7), 2), + '%y': (N) => (N.Sa + 1900).toString().substring(2), + '%Y': (N) => N.Sa + 1900, + '%z': (N) => { + N = N.mb; + var Ae = 0 <= N; + return ( + (N = Math.abs(N) / 60), + (Ae ? '+' : '-') + ('0000' + ((N / 60) * 100 + (N % 60))).slice(-4) + ); + }, + '%Z': (N) => N.pb, + '%%': () => '%', + }), + (P = P.replace(/%%/g, '\0\0')); + for (it in ze) P.includes(it) && (P = P.replace(new RegExp(it, 'g'), ze[it](D))); + return ( + (P = P.replace(/\0\0/g, '%')), (it = Vs(P)), it.length > x ? 0 : (Gs(it, g), it.length - 1) + ); + } + se.Wa(); + var Ws = [ + Kt, + Nt, + k, + ne, + ge, + Je, + er, + tr, + C, + Te, + Ie, + at, + lr, + An, + In, + jn, + Yn, + Mo, + Bo, + Uo, + zo, + Vo, + Go, + Wo, + ], + qs = { + b: function (g, x, P) { + throw ((g >>>= 0), new M(g).Wa(x >>> 0, P >>> 0), (I = g), I); + }, + L: function (g) { + ii(g >>> 0, !S, 1, !v, 131072, !1), se.ab(); + }, + j: function (g) { + (g >>>= 0), A ? postMessage({ cmd: 'cleanupThread', thread: g }) : se.Za(se.Ma[g]); + }, + H: G, + h: ne, + S: ge, + D: Je, + F: er, + T: tr, + Q: C, + J: Te, + P: Ie, + n: at, + E: lr, + B: An, + R: In, + C: jn, + p: () => 1, + z: function (g, x) { + (g >>>= 0), + g == x >>> 0 + ? setTimeout(() => qr()) + : A + ? postMessage({ targetThread: g, cmd: 'checkMailbox' }) + : (g = se.Ma[g]) && g.postMessage({ cmd: 'checkMailbox' }); + }, + I: function (g, x, P, D) { + (x >>>= 0), (rn.length = P), (D = (D >>> 0) >>> 3); + for (var j = 0; j < P; j++) rn[j] = r()[(D + j) >>> 0]; + return ( + (g = 0 > g ? Bt[-g - 1] : Ws[g]), + (se.ib = x), + (x = g.apply(null, rn)), + (se.ib = 0), + x + ); + }, + K: Jr, + o: function (g) { + E && se.Ma[g >>> 0].ref(); + }, + s: function (g, x, P) { + (g = (x + 2097152) >>> 0 < 4194305 - !!g ? (g >>> 0) + 4294967296 * x : NaN), + (P >>>= 0), + (g = new Date(1e3 * g)), + (d()[(P >>> 2) >>> 0] = g.getUTCSeconds()), + (d()[((P + 4) >>> 2) >>> 0] = g.getUTCMinutes()), + (d()[((P + 8) >>> 2) >>> 0] = g.getUTCHours()), + (d()[((P + 12) >>> 2) >>> 0] = g.getUTCDate()), + (d()[((P + 16) >>> 2) >>> 0] = g.getUTCMonth()), + (d()[((P + 20) >>> 2) >>> 0] = g.getUTCFullYear() - 1900), + (d()[((P + 24) >>> 2) >>> 0] = g.getUTCDay()), + (g = ((g.getTime() - Date.UTC(g.getUTCFullYear(), 0, 1, 0, 0, 0, 0)) / 864e5) | 0), + (d()[((P + 28) >>> 2) >>> 0] = g); + }, + t: function (g, x, P) { + (g = (x + 2097152) >>> 0 < 4194305 - !!g ? (g >>> 0) + 4294967296 * x : NaN), + (P >>>= 0), + (g = new Date(1e3 * g)), + (d()[(P >>> 2) >>> 0] = g.getSeconds()), + (d()[((P + 4) >>> 2) >>> 0] = g.getMinutes()), + (d()[((P + 8) >>> 2) >>> 0] = g.getHours()), + (d()[((P + 12) >>> 2) >>> 0] = g.getDate()), + (d()[((P + 16) >>> 2) >>> 0] = g.getMonth()), + (d()[((P + 20) >>> 2) >>> 0] = g.getFullYear() - 1900), + (d()[((P + 24) >>> 2) >>> 0] = g.getDay()), + (x = ((qt(g.getFullYear()) ? qn : Hn)[g.getMonth()] + g.getDate() - 1) | 0), + (d()[((P + 28) >>> 2) >>> 0] = x), + (d()[((P + 36) >>> 2) >>> 0] = -(60 * g.getTimezoneOffset())), + (x = new Date(g.getFullYear(), 6, 1).getTimezoneOffset()); + var D = new Date(g.getFullYear(), 0, 1).getTimezoneOffset(); + (g = (x != D && g.getTimezoneOffset() == Math.min(D, x)) | 0), + (d()[((P + 32) >>> 2) >>> 0] = g); + }, + u: function (g) { + g >>>= 0; + var x = new Date( + d()[((g + 20) >>> 2) >>> 0] + 1900, + d()[((g + 16) >>> 2) >>> 0], + d()[((g + 12) >>> 2) >>> 0], + d()[((g + 8) >>> 2) >>> 0], + d()[((g + 4) >>> 2) >>> 0], + d()[(g >>> 2) >>> 0], + 0 + ), + P = d()[((g + 32) >>> 2) >>> 0], + D = x.getTimezoneOffset(), + j = new Date(x.getFullYear(), 6, 1).getTimezoneOffset(), + z = new Date(x.getFullYear(), 0, 1).getTimezoneOffset(), + K = Math.min(z, j); + return ( + 0 > P + ? (d()[((g + 32) >>> 2) >>> 0] = +(j != z && K == D)) + : 0 < P != (K == D) && + ((j = Math.max(z, j)), x.setTime(x.getTime() + 6e4 * ((0 < P ? K : j) - D))), + (d()[((g + 24) >>> 2) >>> 0] = x.getDay()), + (P = ((qt(x.getFullYear()) ? qn : Hn)[x.getMonth()] + x.getDate() - 1) | 0), + (d()[((g + 28) >>> 2) >>> 0] = P), + (d()[(g >>> 2) >>> 0] = x.getSeconds()), + (d()[((g + 4) >>> 2) >>> 0] = x.getMinutes()), + (d()[((g + 8) >>> 2) >>> 0] = x.getHours()), + (d()[((g + 12) >>> 2) >>> 0] = x.getDate()), + (d()[((g + 16) >>> 2) >>> 0] = x.getMonth()), + (d()[((g + 20) >>> 2) >>> 0] = x.getYear()), + (g = x.getTime()), + isNaN(g) ? ((d()[(ni() >>> 2) >>> 0] = 61), (g = -1)) : (g /= 1e3), + ui( + ((st = g), + 1 <= +Math.abs(st) + ? 0 < st + ? +Math.floor(st / 4294967296) >>> 0 + : ~~+Math.ceil((st - +(~~st >>> 0)) / 4294967296) >>> 0 + : 0) + ), + g >>> 0 + ); + }, + q: Yn, + r: Mo, + y: function (g, x, P) { + function D(ze) { + return (ze = ze.toTimeString().match(/\(([A-Za-z ]+)\)$/)) ? ze[1] : 'GMT'; + } + (g >>>= 0), (x >>>= 0), (P >>>= 0); + var j = new Date().getFullYear(), + z = new Date(j, 0, 1), + K = new Date(j, 6, 1); + j = z.getTimezoneOffset(); + var $e = K.getTimezoneOffset(), + ct = Math.max(j, $e); + (f()[(g >>> 2) >>> 0] = 60 * ct), + (d()[(x >>> 2) >>> 0] = +(j != $e)), + (g = D(z)), + (x = D(K)), + (g = No(g)), + (x = No(x)), + $e < j + ? ((f()[(P >>> 2) >>> 0] = g), (f()[((P + 4) >>> 2) >>> 0] = x)) + : ((f()[(P >>> 2) >>> 0] = x), (f()[((P + 4) >>> 2) >>> 0] = g)); + }, + c: () => { + xt(''); + }, + O: function (g, x, P) { + (g >>>= 0), (x >>>= 0), (P >>>= 0), (nn.length = 0); + for (var D; (D = s()[x++ >>> 0]); ) { + var j = D != 105; + (j &= D != 112), + (P += j && P % 8 ? 4 : 0), + nn.push( + D == 112 + ? f()[(P >>> 2) >>> 0] + : D == 105 + ? d()[(P >>> 2) >>> 0] + : r()[(P >>> 3) >>> 0] + ), + (P += j ? 8 : 4); + } + return Bt[g].apply(null, nn); + }, + k: () => {}, + i: () => Date.now(), + U: () => { + throw ((Et += 1), 'unwind'); + }, + A: function () { + return 4294901760; + }, + e: () => performance.timeOrigin + performance.now(), + f: () => (E ? (Lp(), rr(Dp)).cpus().length : navigator.hardwareConcurrency), + x: function (g) { + g >>>= 0; + var x = s().length; + if (g <= x || 4294901760 < g) return !1; + for (var P = 1; 4 >= P; P *= 2) { + var D = x * (1 + 0.2 / P); + D = Math.min(D, g + 100663296); + var j = Math; + D = Math.max(g, D); + e: { + j = + (j.min.call(j, 4294901760, D + ((65536 - (D % 65536)) % 65536)) - + _e.buffer.byteLength + + 65535) / + 65536; + try { + _e.grow(j), qe(); + var z = 1; + break e; + } catch {} + z = void 0; + } + if (z) return !0; + } + return !1; + }, + M: Bo, + N: Uo, + G: Gt, + g: zo, + m: Vo, + v: Go, + l: Wo, + a: _e || a.wasmMemory, + w: ri, + d: function (g, x, P, D) { + return ri(g >>> 0, x >>> 0, P >>> 0, D >>> 0); + }, + }, + ie = (function () { + function g(P, D) { + return ( + (ie = P.exports), + (ie = Hs()), + se.bb.push(ie.za), + (O = ie.Aa), + Be.unshift(ie.V), + (he = D), + Tt(), + ie + ); + } + var x = { a: qs }; + if ((Se++, a.instantiateWasm)) + try { + return a.instantiateWasm(x, g); + } catch (P) { + Y(`Module.instantiateWasm callback failed with error: ${P}`), p(P); + } + return ( + Sr(x, function (P) { + g(P.instance, P.module); + }).catch(p), + {} + ); + })(); + (a._OrtInit = (g, x) => (a._OrtInit = ie.W)(g, x)), + (a._OrtGetLastError = (g, x) => (a._OrtGetLastError = ie.X)(g, x)), + (a._OrtCreateSessionOptions = (g, x, P, D, j, z, K, $e, ct, ze) => + (a._OrtCreateSessionOptions = ie.Y)(g, x, P, D, j, z, K, $e, ct, ze)), + (a._OrtAppendExecutionProvider = (g, x) => (a._OrtAppendExecutionProvider = ie.Z)(g, x)), + (a._OrtAddFreeDimensionOverride = (g, x, P) => + (a._OrtAddFreeDimensionOverride = ie._)(g, x, P)), + (a._OrtAddSessionConfigEntry = (g, x, P) => (a._OrtAddSessionConfigEntry = ie.$)(g, x, P)), + (a._OrtReleaseSessionOptions = (g) => (a._OrtReleaseSessionOptions = ie.aa)(g)), + (a._OrtCreateSession = (g, x, P) => (a._OrtCreateSession = ie.ba)(g, x, P)), + (a._OrtReleaseSession = (g) => (a._OrtReleaseSession = ie.ca)(g)), + (a._OrtGetInputOutputCount = (g, x, P) => (a._OrtGetInputOutputCount = ie.da)(g, x, P)), + (a._OrtGetInputName = (g, x) => (a._OrtGetInputName = ie.ea)(g, x)), + (a._OrtGetOutputName = (g, x) => (a._OrtGetOutputName = ie.fa)(g, x)), + (a._OrtFree = (g) => (a._OrtFree = ie.ga)(g)), + (a._OrtCreateTensor = (g, x, P, D, j, z) => (a._OrtCreateTensor = ie.ha)(g, x, P, D, j, z)), + (a._OrtGetTensorData = (g, x, P, D, j) => (a._OrtGetTensorData = ie.ia)(g, x, P, D, j)), + (a._OrtReleaseTensor = (g) => (a._OrtReleaseTensor = ie.ja)(g)), + (a._OrtCreateRunOptions = (g, x, P, D) => (a._OrtCreateRunOptions = ie.ka)(g, x, P, D)), + (a._OrtAddRunConfigEntry = (g, x, P) => (a._OrtAddRunConfigEntry = ie.la)(g, x, P)), + (a._OrtReleaseRunOptions = (g) => (a._OrtReleaseRunOptions = ie.ma)(g)), + (a._OrtCreateBinding = (g) => (a._OrtCreateBinding = ie.na)(g)), + (a._OrtBindInput = (g, x, P) => (a._OrtBindInput = ie.oa)(g, x, P)), + (a._OrtBindOutput = (g, x, P, D) => (a._OrtBindOutput = ie.pa)(g, x, P, D)), + (a._OrtClearBoundOutputs = (g) => (a._OrtClearBoundOutputs = ie.qa)(g)), + (a._OrtReleaseBinding = (g) => (a._OrtReleaseBinding = ie.ra)(g)), + (a._OrtRunWithBinding = (g, x, P, D, j) => (a._OrtRunWithBinding = ie.sa)(g, x, P, D, j)), + (a._OrtRun = (g, x, P, D, j, z, K, $e) => (a._OrtRun = ie.ta)(g, x, P, D, j, z, K, $e)), + (a._OrtEndProfiling = (g) => (a._OrtEndProfiling = ie.ua)(g)); + var ni = () => (ni = ie.va)(), + Hr = (a._pthread_self = () => (Hr = a._pthread_self = ie.wa)()), + oi = (a._malloc = (g) => (oi = a._malloc = ie.xa)(g)); + (a._free = (g) => (a._free = ie.ya)(g)), + (a.__emscripten_tls_init = () => (a.__emscripten_tls_init = ie.za)()); + var ii = (a.__emscripten_thread_init = (g, x, P, D, j, z) => + (ii = a.__emscripten_thread_init = ie.Ba)(g, x, P, D, j, z)); + a.__emscripten_thread_crashed = () => (a.__emscripten_thread_crashed = ie.Ca)(); + var si = (g, x, P, D) => (si = ie.Da)(g, x, P, D), + wn = (g) => (wn = ie.Ea)(g), + vn = (a.__emscripten_thread_exit = (g) => (vn = a.__emscripten_thread_exit = ie.Fa)(g)), + ai = () => (ai = ie.Ga)(), + ui = (g) => (ui = ie.Ha)(g), + ci = (g, x) => (ci = ie.Ia)(g, x), + xn = () => (xn = ie.Ja)(), + Yr = (g) => (Yr = ie.Ka)(g), + On = (g) => (On = ie.La)(g); + function Hs() { + var g = ie; + g = Object.assign({}, g); + var x = (D) => () => D() >>> 0, + P = (D) => (j) => D(j) >>> 0; + return ( + (g.va = x(g.va)), + (g.wa = x(g.wa)), + (g.xa = P(g.xa)), + (g.emscripten_main_runtime_thread_id = x(g.emscripten_main_runtime_thread_id)), + (g.Ja = x(g.Ja)), + (g.La = P(g.La)), + g + ); + } + (a.wasmMemory = _e), + (a.stackAlloc = On), + (a.stackSave = xn), + (a.stackRestore = Yr), + (a.keepRuntimeAlive = () => 0 < Et), + (a.UTF8ToString = Dt), + (a.stringToUTF8 = Ze), + (a.lengthBytesUTF8 = Ue), + (a.ExitStatus = At), + (a.PThread = se); + var Xr; + je = function g() { + Xr || di(), Xr || (je = g); + }; + function di() { + if (!(0 < Se)) + if (A) l(a), A || Wt(Be), startWorker(a); + else { + if (a.preRun) + for (typeof a.preRun == 'function' && (a.preRun = [a.preRun]); a.preRun.length; ) + Qe.unshift(a.preRun.shift()); + Wt(Qe), + 0 < Se || + Xr || + ((Xr = !0), (a.calledRun = !0), ue || (A || Wt(Be), l(a), A || Wt(Ce))); + } + } + return di(), u.ready; + } + ); + })(); + typeof t == 'object' && typeof e == 'object' + ? (e.exports = o) + : typeof define == 'function' && define.amd && define([], () => o); + }), + kp = me((t, e) => { + e.exports = + '"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\n'; + }), + Np, + ig, + aa, + sa, + Po, + Bp, + ag, + sg, + ug, + Rp, + Ee, + zr = L(() => { + (Np = Ap()), + (ig = Cp()), + (sa = !1), + (Po = !1), + (Bp = !1), + (ag = (t) => { + if (t === 1) return !1; + if (typeof SharedArrayBuffer > 'u') + return ( + typeof self < 'u' && + !self.crossOriginIsolated && + console.warn( + 'env.wasm.numThreads is set to ' + + t + + ', but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.' + ), + !1 + ); + typeof process < 'u' && + process.versions && + process.versions.node && + console.warn( + 'env.wasm.numThreads is set to ' + + t + + ', however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.' + ); + try { + return ( + typeof MessageChannel < 'u' && new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)), + WebAssembly.validate( + new Uint8Array([ + 0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 5, 4, 1, 3, 1, 1, 10, 11, 1, + 9, 0, 65, 0, 254, 16, 2, 0, 26, 11, + ]) + ) + ); + } catch { + return !1; + } + }), + (sg = () => { + try { + return WebAssembly.validate( + new Uint8Array([ + 0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 10, 30, 1, 28, 0, 65, 0, 253, + 15, 253, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 186, 1, 26, 11, + ]) + ); + } catch { + return !1; + } + }), + (ug = (t, e) => + t + ? e + ? 'ort-wasm-simd-threaded.wasm' + : 'ort-wasm-simd.wasm' + : e + ? 'ort-wasm-threaded.wasm' + : 'ort-wasm.wasm'), + (Rp = async (t) => { + if (sa) return Promise.resolve(); + if (Po) throw new Error("multiple calls to 'initializeWebAssembly()' detected."); + if (Bp) throw new Error("previous call to 'initializeWebAssembly()' failed."); + Po = !0; + let e = t.initTimeout, + o = t.numThreads, + i = t.simd, + u = ag(o), + n = i && sg(), + s = t.wasmPaths, + d = typeof s == 'string' ? s : void 0, + f = ug(n, u), + r = typeof s == 'object' ? s[f] : void 0, + a = !1, + l = []; + if ( + (e > 0 && + l.push( + new Promise((p) => { + setTimeout(() => { + (a = !0), p(); + }, e); + }) + ), + l.push( + new Promise((p, m) => { + let y = u ? ig : Np, + T = { + locateFile: (v, S) => + u && v.endsWith('.worker.js') && typeof Blob < 'u' + ? URL.createObjectURL(new Blob([kp()], { type: 'text/javascript' })) + : v.endsWith('.wasm') + ? r || (d ?? S) + f + : S + v, + }; + if (u) + if (((T.numThreads = o), typeof Blob > 'u')) + T.mainScriptUrlOrBlob = (void 0)(__dirname, 'ort-wasm-threaded.js'); + else { + let v = `var ortWasmThreaded=${y.toString()};`; + T.mainScriptUrlOrBlob = new Blob([v], { type: 'text/javascript' }); + } + y(T).then( + (v) => { + (Po = !1), (sa = !0), (aa = v), p(); + }, + (v) => { + (Po = !1), (Bp = !0), m(v); + } + ); + }) + ), + await Promise.race(l), + a) + ) + throw new Error(`WebAssembly backend initializing failed due to timeout: ${e}ms`); + }), + (Ee = () => { + if (sa && aa) return aa; + throw new Error('WebAssembly is not initialized yet.'); + }); + }), + De, + bn, + Oe, + Eo = L(() => { + zr(), + (De = (t, e) => { + let o = Ee(), + i = o.lengthBytesUTF8(t) + 1, + u = o._malloc(i); + return o.stringToUTF8(t, u, i), e.push(u), u; + }), + (bn = (t, e, o, i) => { + if (typeof t == 'object' && t !== null) { + if (o.has(t)) throw new Error('Circular reference in options'); + o.add(t); + } + Object.entries(t).forEach(([u, n]) => { + let s = e ? e + u : u; + if (typeof n == 'object') bn(n, s + '.', o, i); + else if (typeof n == 'string' || typeof n == 'number') i(s, n.toString()); + else if (typeof n == 'boolean') i(s, n ? '1' : '0'); + else throw new Error(`Can't handle extra config type: ${typeof n}`); + }); + }), + (Oe = (t) => { + let e = Ee(), + o = e.stackSave(); + try { + let i = e.stackAlloc(8); + e._OrtGetLastError(i, i + 4); + let u = e.HEAP32[i / 4], + n = e.HEAPU32[i / 4 + 1], + s = n ? e.UTF8ToString(n) : ''; + throw new Error(`${t} ERROR_CODE: ${u}, ERROR_MESSAGE: ${s}`); + } finally { + e.stackRestore(o); + } + }); + }), + Mp, + Gp = L(() => { + zr(), + Eo(), + (Mp = (t) => { + let e = Ee(), + o = 0, + i = [], + u = t || {}; + try { + if (t?.logSeverityLevel === void 0) u.logSeverityLevel = 2; + else if ( + typeof t.logSeverityLevel != 'number' || + !Number.isInteger(t.logSeverityLevel) || + t.logSeverityLevel < 0 || + t.logSeverityLevel > 4 + ) + throw new Error(`log serverity level is not valid: ${t.logSeverityLevel}`); + if (t?.logVerbosityLevel === void 0) u.logVerbosityLevel = 0; + else if (typeof t.logVerbosityLevel != 'number' || !Number.isInteger(t.logVerbosityLevel)) + throw new Error(`log verbosity level is not valid: ${t.logVerbosityLevel}`); + t?.terminate === void 0 && (u.terminate = !1); + let n = 0; + return ( + t?.tag !== void 0 && (n = De(t.tag, i)), + (o = e._OrtCreateRunOptions(u.logSeverityLevel, u.logVerbosityLevel, !!u.terminate, n)), + o === 0 && Oe("Can't create run options."), + t?.extra !== void 0 && + bn(t.extra, '', new WeakSet(), (s, d) => { + let f = De(s, i), + r = De(d, i); + e._OrtAddRunConfigEntry(o, f, r) !== 0 && + Oe(`Can't set a run config entry: ${s} - ${d}.`); + }), + [o, i] + ); + } catch (n) { + throw (o !== 0 && e._OrtReleaseRunOptions(o), i.forEach((s) => e._free(s)), n); + } + }); + }), + lg, + fg, + cg, + pg, + Up, + zp = L(() => { + zr(), + Eo(), + (lg = (t) => { + switch (t) { + case 'disabled': + return 0; + case 'basic': + return 1; + case 'extended': + return 2; + case 'all': + return 99; + default: + throw new Error(`unsupported graph optimization level: ${t}`); + } + }), + (fg = (t) => { + switch (t) { + case 'sequential': + return 0; + case 'parallel': + return 1; + default: + throw new Error(`unsupported execution mode: ${t}`); + } + }), + (cg = (t) => { + t.extra || (t.extra = {}), t.extra.session || (t.extra.session = {}); + let e = t.extra.session; + e.use_ort_model_bytes_directly || (e.use_ort_model_bytes_directly = '1'), + t.executionProviders && + t.executionProviders.some((o) => (typeof o == 'string' ? o : o.name) === 'webgpu') && + (t.enableMemPattern = !1); + }), + (pg = (t, e, o) => { + for (let i of e) { + let u = typeof i == 'string' ? i : i.name; + switch (u) { + case 'webnn': + if (((u = 'WEBNN'), typeof i != 'string')) { + let s = i; + if (s?.deviceType) { + let d = De('deviceType', o), + f = De(s.deviceType, o); + Ee()._OrtAddSessionConfigEntry(t, d, f) !== 0 && + Oe(`Can't set a session config entry: 'deviceType' - ${s.deviceType}.`); + } + if (s?.numThreads) { + let d = s.numThreads; + (typeof d != 'number' || !Number.isInteger(d) || d < 0) && (d = 0); + let f = De('numThreads', o), + r = De(d.toString(), o); + Ee()._OrtAddSessionConfigEntry(t, f, r) !== 0 && + Oe(`Can't set a session config entry: 'numThreads' - ${s.numThreads}.`); + } + if (s?.powerPreference) { + let d = De('powerPreference', o), + f = De(s.powerPreference, o); + Ee()._OrtAddSessionConfigEntry(t, d, f) !== 0 && + Oe( + `Can't set a session config entry: 'powerPreference' - ${s.powerPreference}.` + ); + } + } + break; + case 'webgpu': + if (((u = 'JS'), typeof i != 'string')) { + let s = i; + if (s?.preferredLayout) { + if (s.preferredLayout !== 'NCHW' && s.preferredLayout !== 'NHWC') + throw new Error( + `preferredLayout must be either 'NCHW' or 'NHWC': ${s.preferredLayout}` + ); + let d = De('preferredLayout', o), + f = De(s.preferredLayout, o); + Ee()._OrtAddSessionConfigEntry(t, d, f) !== 0 && + Oe( + `Can't set a session config entry: 'preferredLayout' - ${s.preferredLayout}.` + ); + } + } + break; + case 'wasm': + case 'cpu': + continue; + default: + throw new Error(`not supported execution provider: ${u}`); + } + let n = De(u, o); + Ee()._OrtAppendExecutionProvider(t, n) !== 0 && Oe(`Can't append execution provider: ${u}.`); + } + }), + (Up = (t) => { + let e = Ee(), + o = 0, + i = [], + u = t || {}; + cg(u); + try { + let n = lg(u.graphOptimizationLevel ?? 'all'), + s = fg(u.executionMode ?? 'sequential'), + d = typeof u.logId == 'string' ? De(u.logId, i) : 0, + f = u.logSeverityLevel ?? 2; + if (!Number.isInteger(f) || f < 0 || f > 4) + throw new Error(`log serverity level is not valid: ${f}`); + let r = u.logVerbosityLevel ?? 0; + if (!Number.isInteger(r) || r < 0 || r > 4) + throw new Error(`log verbosity level is not valid: ${r}`); + let a = typeof u.optimizedModelFilePath == 'string' ? De(u.optimizedModelFilePath, i) : 0; + if ( + ((o = e._OrtCreateSessionOptions( + n, + !!u.enableCpuMemArena, + !!u.enableMemPattern, + s, + !!u.enableProfiling, + 0, + d, + f, + r, + a + )), + o === 0 && Oe("Can't create session options."), + u.executionProviders && pg(o, u.executionProviders, i), + u.freeDimensionOverrides) + ) + for (let [l, p] of Object.entries(u.freeDimensionOverrides)) { + if (typeof l != 'string') + throw new Error(`free dimension override name must be a string: ${l}`); + if (typeof p != 'number' || !Number.isInteger(p) || p < 0) + throw new Error(`free dimension override value must be a non-negative integer: ${p}`); + let m = De(l, i); + e._OrtAddFreeDimensionOverride(o, m, p) !== 0 && + Oe(`Can't set a free dimension override: ${l} - ${p}.`); + } + return ( + u.extra !== void 0 && + bn(u.extra, '', new WeakSet(), (l, p) => { + let m = De(l, i), + y = De(p, i); + e._OrtAddSessionConfigEntry(o, m, y) !== 0 && + Oe(`Can't set a session config entry: ${l} - ${p}.`); + }), + [o, i] + ); + } catch (n) { + throw (o !== 0 && e._OrtReleaseSessionOptions(o), i.forEach((s) => e._free(s)), n); + } + }); + }), + ua, + Vp, + la, + Wp, + Hp, + Do, + qp, + fa = L(() => { + (ua = (t) => { + switch (t) { + case 'int8': + return 3; + case 'uint8': + return 2; + case 'bool': + return 9; + case 'int16': + return 5; + case 'uint16': + return 4; + case 'int32': + return 6; + case 'uint32': + return 12; + case 'float16': + return 10; + case 'float32': + return 1; + case 'float64': + return 11; + case 'string': + return 8; + case 'int64': + return 7; + case 'uint64': + return 13; + default: + throw new Error(`unsupported data type: ${t}`); + } + }), + (Vp = (t) => { + switch (t) { + case 3: + return 'int8'; + case 2: + return 'uint8'; + case 9: + return 'bool'; + case 5: + return 'int16'; + case 4: + return 'uint16'; + case 6: + return 'int32'; + case 12: + return 'uint32'; + case 10: + return 'float16'; + case 1: + return 'float32'; + case 11: + return 'float64'; + case 8: + return 'string'; + case 7: + return 'int64'; + case 13: + return 'uint64'; + default: + throw new Error(`unsupported data type: ${t}`); + } + }), + (la = (t) => [void 0, 4, 1, 1, 2, 2, 4, 8, void 0, 1, 2, 8, 4, 8, void 0, void 0, void 0][t]), + (Wp = (t) => { + switch (t) { + case 'float16': + return Uint16Array; + case 'float32': + return Float32Array; + case 'uint8': + return Uint8Array; + case 'int8': + return Int8Array; + case 'uint16': + return Uint16Array; + case 'int16': + return Int16Array; + case 'int32': + return Int32Array; + case 'bool': + return Uint8Array; + case 'float64': + return Float64Array; + case 'uint32': + return Uint32Array; + case 'int64': + return BigInt64Array; + case 'uint64': + return BigUint64Array; + default: + throw new Error(`unsupported type: ${t}`); + } + }), + (Hp = (t) => { + switch (t) { + case 'verbose': + return 0; + case 'info': + return 1; + case 'warning': + return 2; + case 'error': + return 3; + case 'fatal': + return 4; + default: + throw new Error(`unsupported logging level: ${t}`); + } + }), + (Do = (t) => + t === 'float32' || t === 'int32' || t === 'int64' || t === 'bool' || t === 'float16' || t === 'uint32'), + (qp = (t) => { + switch (t) { + case 'none': + return 0; + case 'cpu': + return 1; + case 'cpu-pinned': + return 2; + case 'texture': + return 3; + case 'gpu-buffer': + return 4; + default: + throw new Error(`unsupported data location: ${t}`); + } + }); + }), + gn, + ca = L(() => { + gn = async (t) => { + if (typeof t == 'string') + if (typeof process < 'u' && process.versions && process.versions.node) + try { + return new Uint8Array(await (void 0)(t)); + } catch (e) { + if (e.code === 'ERR_FS_FILE_TOO_LARGE') { + let o = (void 0)(t), + i = []; + for await (let u of o) i.push(u); + return new Uint8Array(Buffer.concat(i)); + } + throw e; + } + else { + let e = await fetch(t); + if (!e.ok) throw new Error(`failed to load external data file: ${t}`); + let o = e.headers.get('Content-Length'), + i = o ? parseInt(o, 10) : 0; + if (i < 1073741824) return new Uint8Array(await e.arrayBuffer()); + { + if (!e.body) throw new Error(`failed to load external data file: ${t}, no response body.`); + let u = e.body.getReader(), + n; + try { + n = new ArrayBuffer(i); + } catch (d) { + if (d instanceof RangeError) { + let f = Math.ceil(i / 65536); + n = new WebAssembly.Memory({ initial: f, maximum: f }).buffer; + } else throw d; + } + let s = 0; + for (;;) { + let { done: d, value: f } = await u.read(); + if (d) break; + let r = f.byteLength; + new Uint8Array(n, s, r).set(f), (s += r); + } + return new Uint8Array(n, 0, i); + } + } + else + return t instanceof Blob + ? new Uint8Array(await t.arrayBuffer()) + : t instanceof Uint8Array + ? t + : new Uint8Array(t); + }; + }), + dg, + Yp, + Xp, + yn, + hg, + pa, + Kp, + Jp, + jp, + Zp, + Qp, + ed, + td = L(() => { + Gp(), + zp(), + fa(), + zr(), + Eo(), + ca(), + (dg = (t, e) => { + Ee()._OrtInit(t, e) !== 0 && Oe("Can't initialize onnxruntime."); + }), + (Yp = async (t) => { + dg(t.wasm.numThreads, Hp(t.logLevel)); + }), + (Xp = async (t, e) => {}), + (yn = new Map()), + (hg = (t) => { + let e = Ee(), + o = e.stackSave(); + try { + let i = e.stackAlloc(8); + return ( + e._OrtGetInputOutputCount(t, i, i + 4) !== 0 && Oe("Can't get session input/output count."), + [e.HEAP32[i / 4], e.HEAP32[i / 4 + 1]] + ); + } finally { + e.stackRestore(o); + } + }), + (pa = (t) => { + let e = Ee(), + o = e._malloc(t.byteLength); + if (o === 0) + throw new Error(`Can't create a session. failed to allocate a buffer of size ${t.byteLength}.`); + return e.HEAPU8.set(t, o), [o, t.byteLength]; + }), + (Kp = async (t, e) => { + let o, + i, + u = Ee(); + Array.isArray(t) + ? ([o, i] = t) + : t.buffer === u.HEAPU8.buffer + ? ([o, i] = [t.byteOffset, t.byteLength]) + : ([o, i] = pa(t)); + let n = 0, + s = 0, + d = [], + f = [], + r = []; + try { + if ((([s, d] = Up(e)), e?.externalData && u.mountExternalData)) { + let v = []; + for (let S of e.externalData) { + let E = typeof S == 'string' ? S : S.path; + v.push( + gn(typeof S == 'string' ? S : S.data).then((A) => { + u.mountExternalData(E, A); + }) + ); + } + await Promise.all(v); + } + (n = u._OrtCreateSession(o, i, s)), n === 0 && Oe("Can't create a session."); + let [a, l] = hg(n), + p = [], + m = [], + y = []; + for (let v = 0; v < a; v++) { + let S = u._OrtGetInputName(n, v); + S === 0 && Oe("Can't get an input name."), f.push(S), p.push(u.UTF8ToString(S)); + } + for (let v = 0; v < l; v++) { + let S = u._OrtGetOutputName(n, v); + S === 0 && Oe("Can't get an output name."), r.push(S); + let E = u.UTF8ToString(S); + m.push(E); + } + return yn.set(n, [n, f, r, null]), [n, p, m]; + } catch (a) { + throw ( + (f.forEach((l) => u._OrtFree(l)), + r.forEach((l) => u._OrtFree(l)), + n !== 0 && u._OrtReleaseSession(n), + a) + ); + } finally { + u._free(o), + s !== 0 && u._OrtReleaseSessionOptions(s), + d.forEach((a) => u._free(a)), + u.unmountExternalData?.(); + } + }), + (Jp = (t) => { + let e = Ee(), + o = yn.get(t); + if (!o) throw new Error(`cannot release session. invalid session id: ${t}`); + let [i, u, n, s] = o; + s && e._OrtReleaseBinding(s.handle), + e.jsepUnregisterBuffers?.(t), + u.forEach((d) => e._OrtFree(d)), + n.forEach((d) => e._OrtFree(d)), + e._OrtReleaseSession(i), + yn.delete(t); + }), + (jp = (t, e, o, i, u) => { + if (!t) { + e.push(0); + return; + } + let n = Ee(), + s = t[0], + d = t[1], + f = t[3], + r, + a; + if (s === 'string' && f === 'gpu-buffer') throw new Error('String tensor is not supported on GPU.'); + if (f === 'gpu-buffer') { + let m = t[2].gpuBuffer, + y = la(ua(s)); + (a = d.reduce((T, v) => T * v, 1) * y), (r = n.jsepRegisterBuffer(i, u, m, a)); + } else { + let m = t[2]; + if (Array.isArray(m)) { + (a = 4 * m.length), (r = n._malloc(a)), o.push(r); + let y = r / 4; + for (let T = 0; T < m.length; T++) { + if (typeof m[T] != 'string') + throw new TypeError(`tensor data at index ${T} is not a string`); + n.HEAPU32[y++] = De(m[T], o); + } + } else + (a = m.byteLength), + (r = n._malloc(a)), + o.push(r), + n.HEAPU8.set(new Uint8Array(m.buffer, m.byteOffset, a), r); + } + let l = n.stackSave(), + p = n.stackAlloc(4 * d.length); + try { + let m = p / 4; + d.forEach((T) => (n.HEAP32[m++] = T)); + let y = n._OrtCreateTensor(ua(s), r, a, p, d.length, qp(f)); + y === 0 && Oe(`Can't create tensor for input/output. session=${i}, index=${u}.`), e.push(y); + } finally { + n.stackRestore(l); + } + }), + (Zp = async (t, e, o, i, u, n) => { + let s = Ee(), + d = yn.get(t); + if (!d) throw new Error(`cannot run inference. invalid session id: ${t}`); + let [f, r, a, l] = d, + p = e.length, + m = i.length, + y = 0, + T = [], + v = [], + S = [], + E = [], + A = s.stackSave(), + F = s.stackAlloc(p * 4), + B = s.stackAlloc(p * 4), + J = s.stackAlloc(m * 4), + Q = s.stackAlloc(m * 4); + try { + [y, T] = Mp(n); + for (let Y = 0; Y < p; Y++) jp(o[Y], v, E, t, e[Y]); + for (let Y = 0; Y < m; Y++) jp(u[Y], S, E, t, p + i[Y]); + let re = F / 4, + V = B / 4, + de = J / 4, + ke = Q / 4; + for (let Y = 0; Y < p; Y++) (s.HEAPU32[re++] = v[Y]), (s.HEAPU32[V++] = r[e[Y]]); + for (let Y = 0; Y < m; Y++) (s.HEAPU32[de++] = S[Y]), (s.HEAPU32[ke++] = a[i[Y]]); + let Ne; + (Ne = await s._OrtRun(f, B, F, p, Q, m, J, y)), Ne !== 0 && Oe('failed to call OrtRun().'); + let Me = []; + for (let Y = 0; Y < m; Y++) { + let _e = s.HEAPU32[J / 4 + Y]; + if (_e === S[Y]) { + Me.push(u[Y]); + continue; + } + let he = s.stackSave(), + ue = s.stackAlloc(4 * 4), + pe = !1, + X, + ve = 0; + try { + s._OrtGetTensorData(_e, ue, ue + 4, ue + 8, ue + 12) !== 0 && + Oe(`Can't access output tensor data on index ${Y}.`); + let we = ue / 4, + rt = s.HEAPU32[we++]; + ve = s.HEAPU32[we++]; + let ot = s.HEAPU32[we++], + qe = s.HEAPU32[we++], + He = []; + for (let Ce = 0; Ce < qe; Ce++) He.push(s.HEAPU32[ot / 4 + Ce]); + s._OrtFree(ot); + let Qe = He.reduce((Ce, Se) => Ce * Se, 1); + X = Vp(rt); + let Be = l?.outputPreferredLocations[i[Y]]; + if (X === 'string') { + if (Be === 'gpu-buffer') throw new Error('String tensor is not supported on GPU.'); + let Ce = [], + Se = ve / 4; + for (let je = 0; je < Qe; je++) { + let Tt = s.HEAPU32[Se++], + xt = je === Qe - 1 ? void 0 : s.HEAPU32[Se] - Tt; + Ce.push(s.UTF8ToString(Tt, xt)); + } + Me.push([X, He, Ce, 'cpu']); + } else if (Be === 'gpu-buffer' && Qe > 0) { + let Ce = s.jsepGetBuffer(ve), + Se = la(rt); + if (Se === void 0 || !Do(X)) throw new Error(`Unsupported data type: ${X}`); + (pe = !0), + Me.push([ + X, + He, + { + gpuBuffer: Ce, + download: s.jsepCreateDownloader(Ce, Qe * Se, X), + dispose: () => { + s._OrtReleaseTensor(_e); + }, + }, + 'gpu-buffer', + ]); + } else { + let Ce = Wp(X), + Se = new Ce(Qe); + new Uint8Array(Se.buffer, Se.byteOffset, Se.byteLength).set( + s.HEAPU8.subarray(ve, ve + Se.byteLength) + ), + Me.push([X, He, Se, 'cpu']); + } + } finally { + s.stackRestore(he), X === 'string' && ve && s._free(ve), pe || s._OrtReleaseTensor(_e); + } + } + return l && s._OrtClearBoundOutputs(l.handle), Me; + } finally { + s.stackRestore(A), + v.forEach((re) => s._OrtReleaseTensor(re)), + S.forEach((re) => s._OrtReleaseTensor(re)), + E.forEach((re) => s._free(re)), + y !== 0 && s._OrtReleaseRunOptions(y), + T.forEach((re) => s._free(re)); + } + }), + (Qp = (t) => { + let e = Ee(), + o = yn.get(t); + if (!o) throw new Error('invalid session id'); + let i = o[0], + u = e._OrtEndProfiling(i); + u === 0 && Oe("Can't get an profile file name."), e._OrtFree(u); + }), + (ed = (t) => { + let e = []; + for (let o of t) { + let i = o[2]; + !Array.isArray(i) && 'buffer' in i && e.push(i.buffer); + } + return e; + }); + }), + rd = me((t, e) => { + e.exports = + '/*!\n * ONNX Runtime Web v1.17.1\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n"use strict";(()=>{var Et=Object.defineProperty;var Jr=Object.getOwnPropertyDescriptor;var Xr=Object.getOwnPropertyNames;var Qr=Object.prototype.hasOwnProperty;var St=(u,d)=>()=>(u&&(d=u(u=0)),d);var et=(u,d)=>()=>(d||u((d={exports:{}}).exports,d),d.exports),Tt=(u,d)=>{for(var a in d)Et(u,a,{get:d[a],enumerable:!0})},Zr=(u,d,a,h)=>{if(d&&typeof d=="object"||typeof d=="function")for(let l of Xr(d))!Qr.call(u,l)&&l!==a&&Et(u,l,{get:()=>d[l],enumerable:!(h=Jr(d,l))||h.enumerable});return u};var tt=u=>Zr(Et({},"__esModule",{value:!0}),u);var At={};Tt(At,{createReadStream:()=>dr,readFile:()=>Kr,readFileSync:()=>en});var Kr,en,dr,Mt=St(()=>{Kr=void 0,en=void 0,dr=void 0});var Ct={};Tt(Ct,{join:()=>tn});var tn,Dt=St(()=>{tn=void 0});var gr=et((mr,xt)=>{"use strict";var pr=(()=>{var u=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(u=u||__filename),function(d={}){var a=d,h,l;a.ready=new Promise((r,o)=>{h=r,l=o});var w=Object.assign({},a),g="./this.program",i=typeof window=="object",A=typeof importScripts=="function",D=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",I="",B,F,U;if(D){var k=(Mt(),tt(At)),L=(Dt(),tt(Ct));I=A?L.dirname(I)+"/":__dirname+"/",B=(r,o)=>(r=ye(r)?new URL(r):L.normalize(r),k.readFileSync(r,o?void 0:"utf8")),U=r=>(r=B(r,!0),r.buffer||(r=new Uint8Array(r)),r),F=(r,o,s,m=!0)=>{r=ye(r)?new URL(r):L.normalize(r),k.readFile(r,m?void 0:"utf8",(O,S)=>{O?s(O):o(m?S.buffer:S)})},!a.thisProgram&&1"[Emscripten Module object]"}else(i||A)&&(A?I=self.location.href:typeof document<"u"&&document.currentScript&&(I=document.currentScript.src),u&&(I=u),I.indexOf("blob:")!==0?I=I.substr(0,I.replace(/[?#].*/,"").lastIndexOf("/")+1):I="",B=r=>{var o=new XMLHttpRequest;return o.open("GET",r,!1),o.send(null),o.responseText},A&&(U=r=>{var o=new XMLHttpRequest;return o.open("GET",r,!1),o.responseType="arraybuffer",o.send(null),new Uint8Array(o.response)}),F=(r,o,s)=>{var m=new XMLHttpRequest;m.open("GET",r,!0),m.responseType="arraybuffer",m.onload=()=>{m.status==200||m.status==0&&m.response?o(m.response):s()},m.onerror=s,m.send(null)});var _=console.log.bind(console),x=console.error.bind(console);Object.assign(a,w),w=null,typeof WebAssembly!="object"&&de("no native wasm support detected");var N,he=!1,ie,ae,E,Y,ue;function Re(){var r=N.buffer;a.HEAP8=ie=new Int8Array(r),a.HEAP16=new Int16Array(r),a.HEAPU8=ae=new Uint8Array(r),a.HEAPU16=new Uint16Array(r),a.HEAP32=E=new Int32Array(r),a.HEAPU32=Y=new Uint32Array(r),a.HEAPF32=new Float32Array(r),a.HEAPF64=ue=new Float64Array(r)}var Ie=[],ee=[],j=[],ce=0,P=null,te=null;function de(r){throw r="Aborted("+r+")",x(r),he=!0,r=new WebAssembly.RuntimeError(r+". Build with -sASSERTIONS for more info."),l(r),r}var ge=r=>r.startsWith("data:application/octet-stream;base64,"),ye=r=>r.startsWith("file://"),J;if(J="ort-wasm.wasm",!ge(J)){var fe=J;J=a.locateFile?a.locateFile(fe,I):I+fe}function we(r){if(U)return U(r);throw"both async and sync fetching of the wasm failed"}function Ae(r){if(i||A){if(typeof fetch=="function"&&!ye(r))return fetch(r,{credentials:"same-origin"}).then(o=>{if(!o.ok)throw"failed to load wasm binary file at \'"+r+"\'";return o.arrayBuffer()}).catch(()=>we(r));if(F)return new Promise((o,s)=>{F(r,m=>o(new Uint8Array(m)),s)})}return Promise.resolve().then(()=>we(r))}function Me(r,o,s){return Ae(r).then(m=>WebAssembly.instantiate(m,o)).then(m=>m).then(s,m=>{x(`failed to asynchronously prepare wasm: ${m}`),de(m)})}function Fe(r,o){var s=J;return typeof WebAssembly.instantiateStreaming!="function"||ge(s)||ye(s)||D||typeof fetch!="function"?Me(s,r,o):fetch(s,{credentials:"same-origin"}).then(m=>WebAssembly.instantiateStreaming(m,r).then(o,function(O){return x(`wasm streaming compile failed: ${O}`),x("falling back to ArrayBuffer instantiation"),Me(s,r,o)}))}var Ee,pe={919888:(r,o,s,m)=>{if(typeof a>"u"||!a.za)return 1;if(r=be(r>>>0),r.startsWith("./")&&(r=r.substring(2)),r=a.za.get(r),!r)return 2;if(o>>>=0,s>>>=0,o+s>r.byteLength)return 3;try{return ae.set(r.subarray(o,o+s),m>>>0>>>0),0}catch{return 4}}};function Oe(r){this.xa=r-24,this.Ha=function(o){Y[this.xa+4>>>2>>>0]=o},this.Ga=function(o){Y[this.xa+8>>>2>>>0]=o},this.Aa=function(o,s){this.Fa(),this.Ha(o),this.Ga(s)},this.Fa=function(){Y[this.xa+16>>>2>>>0]=0}}var ve=0,re=0,Z=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Ce=(r,o,s)=>{o>>>=0;var m=o+s;for(s=o;r[s]&&!(s>=m);)++s;if(16O?m+=String.fromCharCode(O):(O-=65536,m+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else m+=String.fromCharCode(O)}return m},be=(r,o)=>(r>>>=0)?Ce(ae,r,o):"",_e=r=>{for(var o=0,s=0;s=m?o++:2047>=m?o+=2:55296<=m&&57343>=m?(o+=4,++s):o+=3}return o},ke=(r,o,s,m)=>{if(s>>>=0,!(0=R){var K=r.charCodeAt(++S);R=65536+((R&1023)<<10)|K&1023}if(127>=R){if(s>=m)break;o[s++>>>0]=R}else{if(2047>=R){if(s+1>=m)break;o[s++>>>0]=192|R>>6}else{if(65535>=R){if(s+2>=m)break;o[s++>>>0]=224|R>>12}else{if(s+3>=m)break;o[s++>>>0]=240|R>>18,o[s++>>>0]=128|R>>12&63}o[s++>>>0]=128|R>>6&63}o[s++>>>0]=128|R&63}}return o[s>>>0]=0,s-O},Ue=r=>r%4===0&&(r%100!==0||r%400===0),ze=[0,31,60,91,121,152,182,213,244,274,305,335],at=[0,31,59,90,120,151,181,212,243,273,304,334],De=r=>{var o=_e(r)+1,s=st(o);return s&&ke(r,ae,s,o),s},Ne=[],Pe={},He=()=>{if(!$e){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:g||"./this.program"},o;for(o in Pe)Pe[o]===void 0?delete r[o]:r[o]=Pe[o];var s=[];for(o in r)s.push(`${o}=${r[o]}`);$e=s}return $e},$e,Le=[null,[],[]],qe=[31,29,31,30,31,30,31,31,30,31,30,31],Ve=[31,28,31,30,31,30,31,31,30,31,30,31];function Ge(r){var o=Array(_e(r)+1);return ke(r,o,0,o.length),o}function ot(r,o,s,m){function O(c,W,G){for(c=typeof c=="number"?c.toString():c||"";c.lengthKe?-1:0Se-c.getDate())W-=Se-c.getDate()+1,c.setDate(1),11>G?c.setMonth(G+1):(c.setMonth(0),c.setFullYear(c.getFullYear()+1));else{c.setDate(c.getDate()+W);break}}return G=new Date(c.getFullYear()+1,0,4),W=K(new Date(c.getFullYear(),0,4)),G=K(G),0>=R(W,c)?0>=R(G,c)?c.getFullYear()+1:c.getFullYear():c.getFullYear()-1}r>>>=0,o>>>=0,s>>>=0,m>>>=0;var oe=Y[m+40>>>2>>>0];m={Da:E[m>>>2>>>0],Ca:E[m+4>>>2>>>0],va:E[m+8>>>2>>>0],ya:E[m+12>>>2>>>0],wa:E[m+16>>>2>>>0],ua:E[m+20>>>2>>>0],oa:E[m+24>>>2>>>0],ta:E[m+28>>>2>>>0],Ia:E[m+32>>>2>>>0],Ba:E[m+36>>>2>>>0],Ea:oe?be(oe):""},s=be(s),oe={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var se in oe)s=s.replace(new RegExp(se,"g"),oe[se]);var Qe="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Ze="January February March April May June July August September October November December".split(" ");oe={"%a":c=>Qe[c.oa].substring(0,3),"%A":c=>Qe[c.oa],"%b":c=>Ze[c.wa].substring(0,3),"%B":c=>Ze[c.wa],"%C":c=>S((c.ua+1900)/100|0,2),"%d":c=>S(c.ya,2),"%e":c=>O(c.ya,2," "),"%g":c=>le(c).toString().substring(2),"%G":c=>le(c),"%H":c=>S(c.va,2),"%I":c=>(c=c.va,c==0?c=12:12{for(var W=0,G=0;G<=c.wa-1;W+=(Ue(c.ua+1900)?qe:Ve)[G++]);return S(c.ya+W,3)},"%m":c=>S(c.wa+1,2),"%M":c=>S(c.Ca,2),"%n":()=>`\n`,"%p":c=>0<=c.va&&12>c.va?"AM":"PM","%S":c=>S(c.Da,2),"%t":()=>" ","%u":c=>c.oa||7,"%U":c=>S(Math.floor((c.ta+7-c.oa)/7),2),"%V":c=>{var W=Math.floor((c.ta+7-(c.oa+6)%7)/7);if(2>=(c.oa+371-c.ta-2)%7&&W++,W)W==53&&(G=(c.oa+371-c.ta)%7,G==4||G==3&&Ue(c.ua)||(W=1));else{W=52;var G=(c.oa+7-c.ta-1)%7;(G==4||G==5&&Ue(c.ua%400-1))&&W++}return S(W,2)},"%w":c=>c.oa,"%W":c=>S(Math.floor((c.ta+7-(c.oa+6)%7)/7),2),"%y":c=>(c.ua+1900).toString().substring(2),"%Y":c=>c.ua+1900,"%z":c=>{c=c.Ba;var W=0<=c;return c=Math.abs(c)/60,(W?"+":"-")+("0000"+(c/60*100+c%60)).slice(-4)},"%Z":c=>c.Ea,"%%":()=>"%"},s=s.replace(/%%/g,"\\0\\0");for(se in oe)s.includes(se)&&(s=s.replace(new RegExp(se,"g"),oe[se](m)));return s=s.replace(/\\0\\0/g,"%"),se=Ge(s),se.length>o?0:(ie.set(se,r>>>0),se.length-1)}var $={a:function(r,o,s){throw r>>>=0,new Oe(r).Aa(o>>>0,s>>>0),ve=r,re++,ve},e:function(){return 0},H:function(){},x:function(){},z:function(){},J:function(){return 0},F:function(){},A:function(){},E:function(){},g:function(){},y:function(){},v:function(){},G:function(){},w:function(){},k:()=>1,n:function(r,o,s){r=o+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*o:NaN,s>>>=0,r=new Date(1e3*r),E[s>>>2>>>0]=r.getUTCSeconds(),E[s+4>>>2>>>0]=r.getUTCMinutes(),E[s+8>>>2>>>0]=r.getUTCHours(),E[s+12>>>2>>>0]=r.getUTCDate(),E[s+16>>>2>>>0]=r.getUTCMonth(),E[s+20>>>2>>>0]=r.getUTCFullYear()-1900,E[s+24>>>2>>>0]=r.getUTCDay(),E[s+28>>>2>>>0]=(r.getTime()-Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},o:function(r,o,s){r=o+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*o:NaN,s>>>=0,r=new Date(1e3*r),E[s>>>2>>>0]=r.getSeconds(),E[s+4>>>2>>>0]=r.getMinutes(),E[s+8>>>2>>>0]=r.getHours(),E[s+12>>>2>>>0]=r.getDate(),E[s+16>>>2>>>0]=r.getMonth(),E[s+20>>>2>>>0]=r.getFullYear()-1900,E[s+24>>>2>>>0]=r.getDay(),E[s+28>>>2>>>0]=(Ue(r.getFullYear())?ze:at)[r.getMonth()]+r.getDate()-1|0,E[s+36>>>2>>>0]=-(60*r.getTimezoneOffset()),o=new Date(r.getFullYear(),6,1).getTimezoneOffset();var m=new Date(r.getFullYear(),0,1).getTimezoneOffset();E[s+32>>>2>>>0]=(o!=m&&r.getTimezoneOffset()==Math.min(m,o))|0},p:function(r){r>>>=0;var o=new Date(E[r+20>>>2>>>0]+1900,E[r+16>>>2>>>0],E[r+12>>>2>>>0],E[r+8>>>2>>>0],E[r+4>>>2>>>0],E[r>>>2>>>0],0),s=E[r+32>>>2>>>0],m=o.getTimezoneOffset(),O=new Date(o.getFullYear(),6,1).getTimezoneOffset(),S=new Date(o.getFullYear(),0,1).getTimezoneOffset(),R=Math.min(S,O);return 0>s?E[r+32>>>2>>>0]=+(O!=S&&R==m):0>>2>>>0]=o.getDay(),E[r+28>>>2>>>0]=(Ue(o.getFullYear())?ze:at)[o.getMonth()]+o.getDate()-1|0,E[r>>>2>>>0]=o.getSeconds(),E[r+4>>>2>>>0]=o.getMinutes(),E[r+8>>>2>>>0]=o.getHours(),E[r+12>>>2>>>0]=o.getDate(),E[r+16>>>2>>>0]=o.getMonth(),E[r+20>>>2>>>0]=o.getYear(),r=o.getTime(),isNaN(r)?(E[Ye()>>>2>>>0]=61,r=-1):r/=1e3,Je((Ee=r,1<=+Math.abs(Ee)?0>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)),r>>>0},l:function(){return-52},m:function(){},t:function(r,o,s){function m(le){return(le=le.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?le[1]:"GMT"}s>>>=0;var O=new Date().getFullYear(),S=new Date(O,0,1),R=new Date(O,6,1);O=S.getTimezoneOffset();var K=R.getTimezoneOffset();Y[r>>>0>>>2>>>0]=60*Math.max(O,K),E[o>>>0>>>2>>>0]=+(O!=K),r=m(S),o=m(R),r=De(r),o=De(o),K>>2>>>0]=r,Y[s+4>>>2>>>0]=o):(Y[s>>>2>>>0]=o,Y[s+4>>>2>>>0]=r)},d:()=>{de("")},B:function(r,o,s){r>>>=0,o>>>=0,s>>>=0,Ne.length=0;for(var m;m=ae[o++>>>0];){var O=m!=105;O&=m!=112,s+=O&&s%8?4:0,Ne.push(m==112?Y[s>>>2>>>0]:m==105?E[s>>>2>>>0]:ue[s>>>3>>>0]),s+=O?8:4}return pe[r].apply(null,Ne)},h:()=>Date.now(),u:function(){return 4294901760},b:()=>performance.now(),I:function(r,o,s){return o>>>=0,ae.copyWithin(r>>>0>>>0,o>>>0,o+(s>>>0)>>>0)},s:function(r){r>>>=0;var o=ae.length;if(4294901760=s;s*=2){var m=o*(1+.2/s);m=Math.min(m,r+100663296);var O=Math;m=Math.max(r,m);e:{O=(O.min.call(O,4294901760,m+(65536-m%65536)%65536)-N.buffer.byteLength+65535)/65536;try{N.grow(O),Re();var S=1;break e}catch{}S=void 0}if(S)return!0}return!1},C:function(r,o){r>>>=0,o>>>=0;var s=0;return He().forEach((m,O)=>{var S=o+s;for(O=Y[r+4*O>>>2>>>0]=S,S=0;S>>0>>>0]=m.charCodeAt(S);ie[O>>>0>>>0]=0,s+=m.length+1}),0},D:function(r,o){r>>>=0,o>>>=0;var s=He();Y[r>>>2>>>0]=s.length;var m=0;return s.forEach(O=>m+=O.length+1),Y[o>>>2>>>0]=m,0},f:()=>52,j:function(){return 52},q:function(){return 70},i:function(r,o,s,m){o>>>=0,s>>>=0,m>>>=0;for(var O=0,S=0;S>>2>>>0],K=Y[o+4>>>2>>>0];o+=8;for(var le=0;le>>0],se=Le[r];oe===0||oe===10?((r===1?_:x)(Ce(se,0)),se.length=0):se.push(oe)}O+=K}return Y[m>>>2>>>0]=O,0},r:ot,c:function(r,o,s,m){return ot(r>>>0,o>>>0,s>>>0,m>>>0)}},C=function(){function r(s){return C=s.exports,C=ut(),N=C.K,Re(),ee.unshift(C.L),ce--,ce==0&&(P!==null&&(clearInterval(P),P=null),te&&(s=te,te=null,s())),C}var o={a:$};if(ce++,a.instantiateWasm)try{return a.instantiateWasm(o,r)}catch(s){x(`Module.instantiateWasm callback failed with error: ${s}`),l(s)}return Fe(o,function(s){r(s.instance)}).catch(l),{}}();a._OrtInit=(r,o)=>(a._OrtInit=C.M)(r,o),a._OrtGetLastError=(r,o)=>(a._OrtGetLastError=C.N)(r,o),a._OrtCreateSessionOptions=(r,o,s,m,O,S,R,K,le,oe)=>(a._OrtCreateSessionOptions=C.O)(r,o,s,m,O,S,R,K,le,oe),a._OrtAppendExecutionProvider=(r,o)=>(a._OrtAppendExecutionProvider=C.P)(r,o),a._OrtAddFreeDimensionOverride=(r,o,s)=>(a._OrtAddFreeDimensionOverride=C.Q)(r,o,s),a._OrtAddSessionConfigEntry=(r,o,s)=>(a._OrtAddSessionConfigEntry=C.R)(r,o,s),a._OrtReleaseSessionOptions=r=>(a._OrtReleaseSessionOptions=C.S)(r),a._OrtCreateSession=(r,o,s)=>(a._OrtCreateSession=C.T)(r,o,s),a._OrtReleaseSession=r=>(a._OrtReleaseSession=C.U)(r),a._OrtGetInputOutputCount=(r,o,s)=>(a._OrtGetInputOutputCount=C.V)(r,o,s),a._OrtGetInputName=(r,o)=>(a._OrtGetInputName=C.W)(r,o),a._OrtGetOutputName=(r,o)=>(a._OrtGetOutputName=C.X)(r,o),a._OrtFree=r=>(a._OrtFree=C.Y)(r),a._OrtCreateTensor=(r,o,s,m,O,S)=>(a._OrtCreateTensor=C.Z)(r,o,s,m,O,S),a._OrtGetTensorData=(r,o,s,m,O)=>(a._OrtGetTensorData=C._)(r,o,s,m,O),a._OrtReleaseTensor=r=>(a._OrtReleaseTensor=C.$)(r),a._OrtCreateRunOptions=(r,o,s,m)=>(a._OrtCreateRunOptions=C.aa)(r,o,s,m),a._OrtAddRunConfigEntry=(r,o,s)=>(a._OrtAddRunConfigEntry=C.ba)(r,o,s),a._OrtReleaseRunOptions=r=>(a._OrtReleaseRunOptions=C.ca)(r),a._OrtCreateBinding=r=>(a._OrtCreateBinding=C.da)(r),a._OrtBindInput=(r,o,s)=>(a._OrtBindInput=C.ea)(r,o,s),a._OrtBindOutput=(r,o,s,m)=>(a._OrtBindOutput=C.fa)(r,o,s,m),a._OrtClearBoundOutputs=r=>(a._OrtClearBoundOutputs=C.ga)(r),a._OrtReleaseBinding=r=>(a._OrtReleaseBinding=C.ha)(r),a._OrtRunWithBinding=(r,o,s,m,O)=>(a._OrtRunWithBinding=C.ia)(r,o,s,m,O),a._OrtRun=(r,o,s,m,O,S,R,K)=>(a._OrtRun=C.ja)(r,o,s,m,O,S,R,K),a._OrtEndProfiling=r=>(a._OrtEndProfiling=C.ka)(r);var Ye=()=>(Ye=C.la)(),st=a._malloc=r=>(st=a._malloc=C.ma)(r);a._free=r=>(a._free=C.na)(r);var Je=r=>(Je=C.pa)(r),it=()=>(it=C.qa)(),M=r=>(M=C.ra)(r),Be=r=>(Be=C.sa)(r);function ut(){var r=C;r=Object.assign({},r);var o=m=>()=>m()>>>0,s=m=>O=>m(O)>>>0;return r.la=o(r.la),r.ma=s(r.ma),r.qa=o(r.qa),r.sa=s(r.sa),r}a.stackAlloc=Be,a.stackSave=it,a.stackRestore=M,a.UTF8ToString=be,a.stringToUTF8=(r,o,s)=>ke(r,ae,o,s),a.lengthBytesUTF8=_e;var xe;te=function r(){xe||Xe(),xe||(te=r)};function Xe(){if(!(0pr)});var hr=et(()=>{});var yr=et(()=>{});var br={};Tt(br,{cpus:()=>rn});var rn,wr=St(()=>{rn=void 0});var _r=et((vr,Ft)=>{"use strict";var Or=(()=>{var u=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(u=u||__filename),function(d={}){function a(){return j.buffer!=de.buffer&&we(),de}function h(){return j.buffer!=de.buffer&&we(),ge}function l(){return j.buffer!=de.buffer&&we(),ye}function w(){return j.buffer!=de.buffer&&we(),J}function g(){return j.buffer!=de.buffer&&we(),fe}var i=d,A,D;i.ready=new Promise((e,t)=>{A=e,D=t});var I=Object.assign({},i),B="./this.program",F=(e,t)=>{throw t},U=typeof window=="object",k=typeof importScripts=="function",L=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",_=i.ENVIRONMENT_IS_PTHREAD||!1,x="";function N(e){return i.locateFile?i.locateFile(e,x):x+e}var he,ie,ae;if(L){var E=(Mt(),tt(At)),Y=(Dt(),tt(Ct));x=k?Y.dirname(x)+"/":__dirname+"/",he=(t,n)=>(t=be(t)?new URL(t):Y.normalize(t),E.readFileSync(t,n?void 0:"utf8")),ae=t=>(t=he(t,!0),t.buffer||(t=new Uint8Array(t)),t),ie=(t,n,f,y=!0)=>{t=be(t)?new URL(t):Y.normalize(t),E.readFile(t,y?void 0:"utf8",(b,v)=>{b?f(b):n(y?v.buffer:v)})},!i.thisProgram&&1{throw process.exitCode=t,n},i.inspect=()=>"[Emscripten Module object]";let e;try{e=hr()}catch(t){throw console.error(\'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?\'),t}global.Worker=e.Worker}else(U||k)&&(k?x=self.location.href:typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),typeof u<"u"&&u&&(x=u),x.indexOf("blob:")!==0?x=x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1):x="",L||(he=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},k&&(ae=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),ie=(e,t,n)=>{var f=new XMLHttpRequest;f.open("GET",e,!0),f.responseType="arraybuffer",f.onload=()=>{f.status==200||f.status==0&&f.response?t(f.response):n()},f.onerror=n,f.send(null)}));L&&typeof performance>"u"&&(global.performance=yr().performance);var ue=console.log.bind(console),Re=console.error.bind(console);L&&(ue=(...e)=>E.writeSync(1,e.join(" ")+`\n`),Re=(...e)=>E.writeSync(2,e.join(" ")+`\n`));var Ie=ue,ee=Re;Object.assign(i,I),I=null,typeof WebAssembly!="object"&&Z("no native wasm support detected");var j,ce,P=!1,te,de,ge,ye,J,fe;function we(){var e=j.buffer;i.HEAP8=de=new Int8Array(e),i.HEAP16=new Int16Array(e),i.HEAPU8=ge=new Uint8Array(e),i.HEAPU16=new Uint16Array(e),i.HEAP32=ye=new Int32Array(e),i.HEAPU32=J=new Uint32Array(e),i.HEAPF32=new Float32Array(e),i.HEAPF64=fe=new Float64Array(e)}var Ae=16777216;if(_)j=i.wasmMemory;else if(i.wasmMemory)j=i.wasmMemory;else if(j=new WebAssembly.Memory({initial:Ae/65536,maximum:65536,shared:!0}),!(j.buffer instanceof SharedArrayBuffer))throw ee("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),L&&ee("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");we(),Ae=j.buffer.byteLength;var Me=[],Fe=[],Ee=[],pe=0,Oe=null,ve=null;function re(){if(pe--,pe==0&&(Oe!==null&&(clearInterval(Oe),Oe=null),ve)){var e=ve;ve=null,e()}}function Z(e){throw e="Aborted("+e+")",ee(e),P=!0,te=1,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),D(e),e}var Ce=e=>e.startsWith("data:application/octet-stream;base64,"),be=e=>e.startsWith("file://"),_e;_e="ort-wasm-threaded.wasm",Ce(_e)||(_e=N(_e));function ke(e){if(ae)return ae(e);throw"both async and sync fetching of the wasm failed"}function Ue(e){if(U||k){if(typeof fetch=="function"&&!be(e))return fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw"failed to load wasm binary file at \'"+e+"\'";return t.arrayBuffer()}).catch(()=>ke(e));if(ie)return new Promise((t,n)=>{ie(e,f=>t(new Uint8Array(f)),n)})}return Promise.resolve().then(()=>ke(e))}function ze(e,t,n){return Ue(e).then(f=>WebAssembly.instantiate(f,t)).then(f=>f).then(n,f=>{ee(`failed to asynchronously prepare wasm: ${f}`),Z(f)})}function at(e,t){var n=_e;return typeof WebAssembly.instantiateStreaming!="function"||Ce(n)||be(n)||L||typeof fetch!="function"?ze(n,e,t):fetch(n,{credentials:"same-origin"}).then(f=>WebAssembly.instantiateStreaming(f,e).then(t,function(y){return ee(`wasm streaming compile failed: ${y}`),ee("falling back to ArrayBuffer instantiation"),ze(n,e,t)}))}var De,Ne={921276:(e,t,n,f)=>{if(typeof i>"u"||!i.cb)return 1;if(e=Ge(e>>>0),e.startsWith("./")&&(e=e.substring(2)),e=i.cb.get(e),!e)return 2;if(t>>>=0,n>>>=0,f>>>=0,t+n>e.byteLength)return 3;try{return h().set(e.subarray(t,t+n),f>>>0),0}catch{return 4}}};function Pe(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}var He=e=>{e.terminate(),e.onmessage=()=>{}},$e=e=>{M.Pa.length==0&&(Je(),M.Ya(M.Pa[0]));var t=M.Pa.pop();if(!t)return 6;M.Qa.push(t),M.Ma[e.Oa]=t,t.Oa=e.Oa;var n={cmd:"run",start_routine:e.kb,arg:e.hb,pthread_ptr:e.Oa};return L&&t.unref(),t.postMessage(n,e.qb),0},Le=0,qe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Ve=(e,t,n)=>{t>>>=0;var f=t+n;for(n=t;e[n]&&!(n>=f);)++n;if(16y?f+=String.fromCharCode(y):(y-=65536,f+=String.fromCharCode(55296|y>>10,56320|y&1023))}}else f+=String.fromCharCode(y)}return f},Ge=(e,t)=>(e>>>=0)?Ve(h(),e,t):"",ot=e=>{var t=vt();return e=e(),ct(t),e};function $(e,t){var n=arguments.length-2,f=arguments;return ot(()=>{for(var y=_t(8*n),b=y>>>3,v=0;v>>0]=z}return ar(e,n,y,t)})}function C(e){if(_)return $(0,1,e);te=e,0{if(te=e,_)throw ut(e),"unwind";C(e)};function st(){for(var e=i.numThreads;e--;)Je();Me.unshift(()=>{pe++,it(()=>re())})}function Je(){var e=N("ort-wasm-threaded.worker.js");e=new Worker(e),M.Pa.push(e)}function it(e){_?e():Promise.all(M.Pa.map(M.Ya)).then(e)}var M={Pa:[],Qa:[],bb:[],Ma:{},Wa(){_?(M.receiveObjectTransfer=M.jb,M.threadInitTLS=M.ab,M.setExitStatus=M.$a):st()},$a:e=>te=e,tb:["$terminateWorker"],lb:()=>{for(var e of M.Qa)He(e);for(e of M.Pa)He(e);M.Pa=[],M.Qa=[],M.Ma=[]},Za:e=>{var t=e.Oa;delete M.Ma[t],M.Pa.push(e),M.Qa.splice(M.Qa.indexOf(e),1),e.Oa=0,wt(t)},jb(){},ab(){M.bb.forEach(e=>e())},Ya:e=>new Promise(t=>{e.onmessage=b=>{b=b.data;var v=b.cmd;if(b.targetThread&&b.targetThread!=lt()){var z=M.Ma[b.targetThread];z?z.postMessage(b,b.transferList):ee(`Internal error! Worker sent a message "${v}" to target pthread ${b.targetThread}, but that thread no longer exists!`)}else v==="checkMailbox"?ft():v==="spawnThread"?$e(b):v==="cleanupThread"?M.Za(M.Ma[b.thread]):v==="killThread"?(b=b.thread,v=M.Ma[b],delete M.Ma[b],He(v),wt(b),M.Qa.splice(M.Qa.indexOf(v),1),v.Oa=0):v==="cancelThread"?M.Ma[b.thread].postMessage({cmd:"cancel"}):v==="loaded"?(e.loaded=!0,L&&!e.Oa&&e.unref(),t(e)):v==="alert"?alert(`Thread ${b.threadId}: ${b.text}`):b.target==="setimmediate"?e.postMessage(b):v==="callHandler"?i[b.handler](...b.args):v&&ee(`worker sent an unknown command ${v}`)},e.onerror=b=>{throw ee(`worker sent an error! ${b.filename}:${b.lineno}: ${b.message}`),b},L&&(e.on("message",b=>e.onmessage({data:b})),e.on("error",b=>e.onerror(b)));var n=[],f=["onExit"],y;for(y of f)i.hasOwnProperty(y)&&n.push(y);e.postMessage({cmd:"load",handlers:n,urlOrBlob:i.mainScriptUrlOrBlob||u,wasmMemory:j,wasmModule:ce})})};i.PThread=M;var Be=e=>{for(;0{var e=lt(),t=w()[e+52>>>2>>>0];e=w()[e+56>>>2>>>0],ir(t,t-e),ct(t)};function ut(e){if(_)return $(1,0,e);Ye(e)}var xe=[],Xe;i.invokeEntryPoint=(e,t)=>{var n=xe[e];n||(e>=xe.length&&(xe.length=e+1),xe[e]=n=Xe.get(e)),e=n(t),0>>2>>>0]=t},this.fb=function(t){w()[this.Va+8>>>2>>>0]=t},this.Wa=function(t,n){this.eb(),this.gb(t),this.fb(n)},this.eb=function(){w()[this.Va+16>>>2>>>0]=0}}var o=0,s=0;function m(e,t,n,f){return _?$(2,1,e,t,n,f):O(e,t,n,f)}function O(e,t,n,f){if(e>>>=0,t>>>=0,n>>>=0,f>>>=0,typeof SharedArrayBuffer>"u")return ee("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var y=[];return _&&y.length===0?m(e,t,n,f):(e={kb:n,Oa:e,hb:f,qb:y},_?(e.sb="spawnThread",postMessage(e,y),0):$e(e))}function S(e,t,n){return _?$(3,1,e,t,n):0}function R(e,t){if(_)return $(4,1,e,t)}var K=e=>{for(var t=0,n=0;n=f?t++:2047>=f?t+=2:55296<=f&&57343>=f?(t+=4,++n):t+=3}return t},le=(e,t,n,f)=>{if(n>>>=0,!(0=v){var z=e.charCodeAt(++b);v=65536+((v&1023)<<10)|z&1023}if(127>=v){if(n>=f)break;t[n++>>>0]=v}else{if(2047>=v){if(n+1>=f)break;t[n++>>>0]=192|v>>6}else{if(65535>=v){if(n+2>=f)break;t[n++>>>0]=224|v>>12}else{if(n+3>=f)break;t[n++>>>0]=240|v>>18,t[n++>>>0]=128|v>>12&63}t[n++>>>0]=128|v>>6&63}t[n++>>>0]=128|v&63}}return t[n>>>0]=0,n-y},oe=(e,t,n)=>le(e,h(),t,n);function se(e,t){if(_)return $(5,1,e,t)}function Qe(e,t,n){if(_)return $(6,1,e,t,n)}function Ze(e,t,n){return _?$(7,1,e,t,n):0}function c(e,t){if(_)return $(8,1,e,t)}function W(e,t,n){if(_)return $(9,1,e,t,n)}function G(e,t,n,f){if(_)return $(10,1,e,t,n,f)}function Se(e,t,n,f){if(_)return $(11,1,e,t,n,f)}function Ke(e,t,n,f){if(_)return $(12,1,e,t,n,f)}function Bt(e){if(_)return $(13,1,e)}function Wt(e,t){if(_)return $(14,1,e,t)}function kt(e,t,n){if(_)return $(15,1,e,t,n)}function mt(e){e>>>=0,typeof Atomics.rb=="function"&&(Atomics.rb(l(),e>>>2,e).value.then(ft),e+=128,Atomics.store(l(),e>>>2,1))}i.__emscripten_thread_mailbox_await=mt;var ft=()=>{var e=lt();if(e&&(mt(e),e=or,!P))try{if(e(),!(0e%4===0&&(e%100!==0||e%400===0),Nt=[0,31,60,91,121,152,182,213,244,274,305,335],Ht=[0,31,59,90,120,151,181,212,243,273,304,334];function $t(e,t,n,f,y,b,v,z){return _?$(16,1,e,t,n,f,y,b,v,z):-52}function Gt(e,t,n,f,y,b,v){if(_)return $(17,1,e,t,n,f,y,b,v)}var Yt=e=>{var t=K(e)+1,n=rr(t);return n&&oe(e,n,t),n},ht=[],yt={},jt=()=>{if(!bt){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:B||"./this.program"},t;for(t in yt)yt[t]===void 0?delete e[t]:e[t]=yt[t];var n=[];for(t in e)n.push(`${t}=${e[t]}`);bt=n}return bt},bt;function zt(e,t){if(_)return $(18,1,e,t);e>>>=0,t>>>=0;var n=0;return jt().forEach((f,y)=>{var b=t+n;for(y=w()[e+4*y>>>2>>>0]=b,b=0;b>>0>>>0]=f.charCodeAt(b);a()[y>>>0>>>0]=0,n+=f.length+1}),0}function qt(e,t){if(_)return $(19,1,e,t);e>>>=0,t>>>=0;var n=jt();w()[e>>>2>>>0]=n.length;var f=0;return n.forEach(y=>f+=y.length+1),w()[t>>>2>>>0]=f,0}function Vt(e){return _?$(20,1,e):52}function Jt(e,t,n,f){return _?$(21,1,e,t,n,f):52}function Xt(e,t,n,f,y){return _?$(22,1,e,t,n,f,y):70}var Gr=[null,[],[]];function Qt(e,t,n,f){if(_)return $(23,1,e,t,n,f);t>>>=0,n>>>=0,f>>>=0;for(var y=0,b=0;b>>2>>>0],z=w()[t+4>>>2>>>0];t+=8;for(var Te=0;Te>>0],me=Gr[e];ne===0||ne===10?((e===1?Ie:ee)(Ve(me,0)),me.length=0):me.push(ne)}y+=z}return w()[f>>>2>>>0]=y,0}var Zt=[31,29,31,30,31,30,31,31,30,31,30,31],Kt=[31,28,31,30,31,30,31,31,30,31,30,31];function Yr(e){var t=Array(K(e)+1);return le(e,t,0,t.length),t}var jr=(e,t)=>{a().set(e,t>>>0)};function er(e,t,n,f){function y(p,H,q){for(p=typeof p=="number"?p.toString():p||"";p.lengthcr?-1:0We-p.getDate())H-=We-p.getDate()+1,p.setDate(1),11>q?p.setMonth(q+1):(p.setMonth(0),p.setFullYear(p.getFullYear()+1));else{p.setDate(p.getDate()+H);break}}return q=new Date(p.getFullYear()+1,0,4),H=z(new Date(p.getFullYear(),0,4)),q=z(q),0>=v(H,p)?0>=v(q,p)?p.getFullYear()+1:p.getFullYear():p.getFullYear()-1}e>>>=0,t>>>=0,n>>>=0,f>>>=0;var ne=w()[f+40>>>2>>>0];f={ob:l()[f>>>2>>>0],nb:l()[f+4>>>2>>>0],Ta:l()[f+8>>>2>>>0],Xa:l()[f+12>>>2>>>0],Ua:l()[f+16>>>2>>>0],Sa:l()[f+20>>>2>>>0],Na:l()[f+24>>>2>>>0],Ra:l()[f+28>>>2>>>0],ub:l()[f+32>>>2>>>0],mb:l()[f+36>>>2>>>0],pb:ne?Ge(ne):""},n=Ge(n),ne={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var me in ne)n=n.replace(new RegExp(me,"g"),ne[me]);var fr="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),lr="January February March April May June July August September October November December".split(" ");ne={"%a":p=>fr[p.Na].substring(0,3),"%A":p=>fr[p.Na],"%b":p=>lr[p.Ua].substring(0,3),"%B":p=>lr[p.Ua],"%C":p=>b((p.Sa+1900)/100|0,2),"%d":p=>b(p.Xa,2),"%e":p=>y(p.Xa,2," "),"%g":p=>Te(p).toString().substring(2),"%G":p=>Te(p),"%H":p=>b(p.Ta,2),"%I":p=>(p=p.Ta,p==0?p=12:12{for(var H=0,q=0;q<=p.Ua-1;H+=(je(p.Sa+1900)?Zt:Kt)[q++]);return b(p.Xa+H,3)},"%m":p=>b(p.Ua+1,2),"%M":p=>b(p.nb,2),"%n":()=>`\n`,"%p":p=>0<=p.Ta&&12>p.Ta?"AM":"PM","%S":p=>b(p.ob,2),"%t":()=>" ","%u":p=>p.Na||7,"%U":p=>b(Math.floor((p.Ra+7-p.Na)/7),2),"%V":p=>{var H=Math.floor((p.Ra+7-(p.Na+6)%7)/7);if(2>=(p.Na+371-p.Ra-2)%7&&H++,H)H==53&&(q=(p.Na+371-p.Ra)%7,q==4||q==3&&je(p.Sa)||(H=1));else{H=52;var q=(p.Na+7-p.Ra-1)%7;(q==4||q==5&&je(p.Sa%400-1))&&H++}return b(H,2)},"%w":p=>p.Na,"%W":p=>b(Math.floor((p.Ra+7-(p.Na+6)%7)/7),2),"%y":p=>(p.Sa+1900).toString().substring(2),"%Y":p=>p.Sa+1900,"%z":p=>{p=p.mb;var H=0<=p;return p=Math.abs(p)/60,(H?"+":"-")+("0000"+(p/60*100+p%60)).slice(-4)},"%Z":p=>p.pb,"%%":()=>"%"},n=n.replace(/%%/g,"\\0\\0");for(me in ne)n.includes(me)&&(n=n.replace(new RegExp(me,"g"),ne[me](f)));return n=n.replace(/\\0\\0/g,"%"),me=Yr(n),me.length>t?0:(jr(me,e),me.length-1)}M.Wa();var zr=[C,ut,m,S,R,se,Qe,Ze,c,W,G,Se,Ke,Bt,Wt,kt,$t,Gt,zt,qt,Vt,Jt,Xt,Qt],qr={b:function(e,t,n){throw e>>>=0,new r(e).Wa(t>>>0,n>>>0),o=e,s++,o},L:function(e){nr(e>>>0,!k,1,!U,131072,!1),M.ab()},j:function(e){e>>>=0,_?postMessage({cmd:"cleanupThread",thread:e}):M.Za(M.Ma[e])},H:O,h:S,S:R,D:se,F:Qe,T:Ze,Q:c,J:W,P:G,n:Se,E:Ke,B:Bt,R:Wt,C:kt,p:()=>1,z:function(e,t){e>>>=0,e==t>>>0?setTimeout(()=>ft()):_?postMessage({targetThread:e,cmd:"checkMailbox"}):(e=M.Ma[e])&&e.postMessage({cmd:"checkMailbox"})},I:function(e,t,n,f){t>>>=0,gt.length=n,f=f>>>0>>>3;for(var y=0;y>>0];return e=0>e?Ne[-e-1]:zr[e],M.ib=t,t=e.apply(null,gt),M.ib=0,t},K:mt,o:function(e){L&&M.Ma[e>>>0].ref()},s:function(e,t,n){e=t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,n>>>=0,e=new Date(1e3*e),l()[n>>>2>>>0]=e.getUTCSeconds(),l()[n+4>>>2>>>0]=e.getUTCMinutes(),l()[n+8>>>2>>>0]=e.getUTCHours(),l()[n+12>>>2>>>0]=e.getUTCDate(),l()[n+16>>>2>>>0]=e.getUTCMonth(),l()[n+20>>>2>>>0]=e.getUTCFullYear()-1900,l()[n+24>>>2>>>0]=e.getUTCDay(),e=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,l()[n+28>>>2>>>0]=e},t:function(e,t,n){e=t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,n>>>=0,e=new Date(1e3*e),l()[n>>>2>>>0]=e.getSeconds(),l()[n+4>>>2>>>0]=e.getMinutes(),l()[n+8>>>2>>>0]=e.getHours(),l()[n+12>>>2>>>0]=e.getDate(),l()[n+16>>>2>>>0]=e.getMonth(),l()[n+20>>>2>>>0]=e.getFullYear()-1900,l()[n+24>>>2>>>0]=e.getDay(),t=(je(e.getFullYear())?Nt:Ht)[e.getMonth()]+e.getDate()-1|0,l()[n+28>>>2>>>0]=t,l()[n+36>>>2>>>0]=-(60*e.getTimezoneOffset()),t=new Date(e.getFullYear(),6,1).getTimezoneOffset();var f=new Date(e.getFullYear(),0,1).getTimezoneOffset();e=(t!=f&&e.getTimezoneOffset()==Math.min(f,t))|0,l()[n+32>>>2>>>0]=e},u:function(e){e>>>=0;var t=new Date(l()[e+20>>>2>>>0]+1900,l()[e+16>>>2>>>0],l()[e+12>>>2>>>0],l()[e+8>>>2>>>0],l()[e+4>>>2>>>0],l()[e>>>2>>>0],0),n=l()[e+32>>>2>>>0],f=t.getTimezoneOffset(),y=new Date(t.getFullYear(),6,1).getTimezoneOffset(),b=new Date(t.getFullYear(),0,1).getTimezoneOffset(),v=Math.min(b,y);return 0>n?l()[e+32>>>2>>>0]=+(y!=b&&v==f):0>>2>>>0]=t.getDay(),n=(je(t.getFullYear())?Nt:Ht)[t.getMonth()]+t.getDate()-1|0,l()[e+28>>>2>>>0]=n,l()[e>>>2>>>0]=t.getSeconds(),l()[e+4>>>2>>>0]=t.getMinutes(),l()[e+8>>>2>>>0]=t.getHours(),l()[e+12>>>2>>>0]=t.getDate(),l()[e+16>>>2>>>0]=t.getMonth(),l()[e+20>>>2>>>0]=t.getYear(),e=t.getTime(),isNaN(e)?(l()[tr()>>>2>>>0]=61,e=-1):e/=1e3,sr((De=e,1<=+Math.abs(De)?0>>0:~~+Math.ceil((De-+(~~De>>>0))/4294967296)>>>0:0)),e>>>0},q:$t,r:Gt,y:function(e,t,n){function f(ne){return(ne=ne.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?ne[1]:"GMT"}e>>>=0,t>>>=0,n>>>=0;var y=new Date().getFullYear(),b=new Date(y,0,1),v=new Date(y,6,1);y=b.getTimezoneOffset();var z=v.getTimezoneOffset(),Te=Math.max(y,z);w()[e>>>2>>>0]=60*Te,l()[t>>>2>>>0]=+(y!=z),e=f(b),t=f(v),e=Yt(e),t=Yt(t),z>>2>>>0]=e,w()[n+4>>>2>>>0]=t):(w()[n>>>2>>>0]=t,w()[n+4>>>2>>>0]=e)},c:()=>{Z("")},O:function(e,t,n){e>>>=0,t>>>=0,n>>>=0,ht.length=0;for(var f;f=h()[t++>>>0];){var y=f!=105;y&=f!=112,n+=y&&n%8?4:0,ht.push(f==112?w()[n>>>2>>>0]:f==105?l()[n>>>2>>>0]:g()[n>>>3>>>0]),n+=y?8:4}return Ne[e].apply(null,ht)},k:()=>{},i:()=>Date.now(),U:()=>{throw Le+=1,"unwind"},A:function(){return 4294901760},e:()=>performance.timeOrigin+performance.now(),f:()=>L?(wr(),tt(br)).cpus().length:navigator.hardwareConcurrency,x:function(e){e>>>=0;var t=h().length;if(e<=t||4294901760=n;n*=2){var f=t*(1+.2/n);f=Math.min(f,e+100663296);var y=Math;f=Math.max(e,f);e:{y=(y.min.call(y,4294901760,f+(65536-f%65536)%65536)-j.buffer.byteLength+65535)/65536;try{j.grow(y),we();var b=1;break e}catch{}b=void 0}if(b)return!0}return!1},M:zt,N:qt,G:Ye,g:Vt,m:Jt,v:Xt,l:Qt,a:j||i.wasmMemory,w:er,d:function(e,t,n,f){return er(e>>>0,t>>>0,n>>>0,f>>>0)}},T=function(){function e(n,f){return T=n.exports,T=Vr(),M.bb.push(T.za),Xe=T.Aa,Fe.unshift(T.V),ce=f,re(),T}var t={a:qr};if(pe++,i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(n){ee(`Module.instantiateWasm callback failed with error: ${n}`),D(n)}return at(t,function(n){e(n.instance,n.module)}).catch(D),{}}();i._OrtInit=(e,t)=>(i._OrtInit=T.W)(e,t),i._OrtGetLastError=(e,t)=>(i._OrtGetLastError=T.X)(e,t),i._OrtCreateSessionOptions=(e,t,n,f,y,b,v,z,Te,ne)=>(i._OrtCreateSessionOptions=T.Y)(e,t,n,f,y,b,v,z,Te,ne),i._OrtAppendExecutionProvider=(e,t)=>(i._OrtAppendExecutionProvider=T.Z)(e,t),i._OrtAddFreeDimensionOverride=(e,t,n)=>(i._OrtAddFreeDimensionOverride=T._)(e,t,n),i._OrtAddSessionConfigEntry=(e,t,n)=>(i._OrtAddSessionConfigEntry=T.$)(e,t,n),i._OrtReleaseSessionOptions=e=>(i._OrtReleaseSessionOptions=T.aa)(e),i._OrtCreateSession=(e,t,n)=>(i._OrtCreateSession=T.ba)(e,t,n),i._OrtReleaseSession=e=>(i._OrtReleaseSession=T.ca)(e),i._OrtGetInputOutputCount=(e,t,n)=>(i._OrtGetInputOutputCount=T.da)(e,t,n),i._OrtGetInputName=(e,t)=>(i._OrtGetInputName=T.ea)(e,t),i._OrtGetOutputName=(e,t)=>(i._OrtGetOutputName=T.fa)(e,t),i._OrtFree=e=>(i._OrtFree=T.ga)(e),i._OrtCreateTensor=(e,t,n,f,y,b)=>(i._OrtCreateTensor=T.ha)(e,t,n,f,y,b),i._OrtGetTensorData=(e,t,n,f,y)=>(i._OrtGetTensorData=T.ia)(e,t,n,f,y),i._OrtReleaseTensor=e=>(i._OrtReleaseTensor=T.ja)(e),i._OrtCreateRunOptions=(e,t,n,f)=>(i._OrtCreateRunOptions=T.ka)(e,t,n,f),i._OrtAddRunConfigEntry=(e,t,n)=>(i._OrtAddRunConfigEntry=T.la)(e,t,n),i._OrtReleaseRunOptions=e=>(i._OrtReleaseRunOptions=T.ma)(e),i._OrtCreateBinding=e=>(i._OrtCreateBinding=T.na)(e),i._OrtBindInput=(e,t,n)=>(i._OrtBindInput=T.oa)(e,t,n),i._OrtBindOutput=(e,t,n,f)=>(i._OrtBindOutput=T.pa)(e,t,n,f),i._OrtClearBoundOutputs=e=>(i._OrtClearBoundOutputs=T.qa)(e),i._OrtReleaseBinding=e=>(i._OrtReleaseBinding=T.ra)(e),i._OrtRunWithBinding=(e,t,n,f,y)=>(i._OrtRunWithBinding=T.sa)(e,t,n,f,y),i._OrtRun=(e,t,n,f,y,b,v,z)=>(i._OrtRun=T.ta)(e,t,n,f,y,b,v,z),i._OrtEndProfiling=e=>(i._OrtEndProfiling=T.ua)(e);var tr=()=>(tr=T.va)(),lt=i._pthread_self=()=>(lt=i._pthread_self=T.wa)(),rr=i._malloc=e=>(rr=i._malloc=T.xa)(e);i._free=e=>(i._free=T.ya)(e),i.__emscripten_tls_init=()=>(i.__emscripten_tls_init=T.za)();var nr=i.__emscripten_thread_init=(e,t,n,f,y,b)=>(nr=i.__emscripten_thread_init=T.Ba)(e,t,n,f,y,b);i.__emscripten_thread_crashed=()=>(i.__emscripten_thread_crashed=T.Ca)();var ar=(e,t,n,f)=>(ar=T.Da)(e,t,n,f),wt=e=>(wt=T.Ea)(e),Ot=i.__emscripten_thread_exit=e=>(Ot=i.__emscripten_thread_exit=T.Fa)(e),or=()=>(or=T.Ga)(),sr=e=>(sr=T.Ha)(e),ir=(e,t)=>(ir=T.Ia)(e,t),vt=()=>(vt=T.Ja)(),ct=e=>(ct=T.Ka)(e),_t=e=>(_t=T.La)(e);function Vr(){var e=T;e=Object.assign({},e);var t=f=>()=>f()>>>0,n=f=>y=>f(y)>>>0;return e.va=t(e.va),e.wa=t(e.wa),e.xa=n(e.xa),e.emscripten_main_runtime_thread_id=t(e.emscripten_main_runtime_thread_id),e.Ja=t(e.Ja),e.La=n(e.La),e}i.wasmMemory=j,i.stackAlloc=_t,i.stackSave=vt,i.stackRestore=ct,i.keepRuntimeAlive=()=>0Or)});var Er=et((On,nn)=>{nn.exports=\'"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\\n\'});var Tr;Tr=gr();var an=_r(),Ut,Pt=!1,pt=!1,Sr=!1,on=u=>{if(u===1)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+u+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+u+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},sn=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},un=(u,d)=>u?d?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":d?"ort-wasm-threaded.wasm":"ort-wasm.wasm",Ar=async u=>{if(Pt)return Promise.resolve();if(pt)throw new Error("multiple calls to \'initializeWebAssembly()\' detected.");if(Sr)throw new Error("previous call to \'initializeWebAssembly()\' failed.");pt=!0;let d=u.initTimeout,a=u.numThreads,h=u.simd,l=on(a),w=h&&sn(),g=u.wasmPaths,i=typeof g=="string"?g:void 0,A=un(w,l),D=typeof g=="object"?g[A]:void 0,I=!1,B=[];if(d>0&&B.push(new Promise(F=>{setTimeout(()=>{I=!0,F()},d)})),B.push(new Promise((F,U)=>{let k=l?an:Tr,L={locateFile:(_,x)=>l&&_.endsWith(".worker.js")&&typeof Blob<"u"?URL.createObjectURL(new Blob([Er()],{type:"text/javascript"})):_.endsWith(".wasm")?D||(i??x)+A:x+_};if(l)if(L.numThreads=a,typeof Blob>"u")L.mainScriptUrlOrBlob=(void 0)(__dirname,"ort-wasm-threaded.js");else{let _=`var ortWasmThreaded=${k.toString()};`;L.mainScriptUrlOrBlob=new Blob([_],{type:"text/javascript"})}k(L).then(_=>{pt=!1,Pt=!0,Ut=_,F()},_=>{pt=!1,Sr=!0,U(_)})})),await Promise.race(B),I)throw new Error(`WebAssembly backend initializing failed due to timeout: ${d}ms`)},X=()=>{if(Pt&&Ut)return Ut;throw new Error("WebAssembly is not initialized yet.")};var Q=(u,d)=>{let a=X(),h=a.lengthBytesUTF8(u)+1,l=a._malloc(h);return a.stringToUTF8(u,l,h),d.push(l),l},rt=(u,d,a,h)=>{if(typeof u=="object"&&u!==null){if(a.has(u))throw new Error("Circular reference in options");a.add(u)}Object.entries(u).forEach(([l,w])=>{let g=d?d+l:l;if(typeof w=="object")rt(w,g+".",a,h);else if(typeof w=="string"||typeof w=="number")h(g,w.toString());else if(typeof w=="boolean")h(g,w?"1":"0");else throw new Error(`Can\'t handle extra config type: ${typeof w}`)})},V=u=>{let d=X(),a=d.stackSave();try{let h=d.stackAlloc(8);d._OrtGetLastError(h,h+4);let l=d.HEAP32[h/4],w=d.HEAPU32[h/4+1],g=w?d.UTF8ToString(w):"";throw new Error(`${u} ERROR_CODE: ${l}, ERROR_MESSAGE: ${g}`)}finally{d.stackRestore(a)}};var Mr=u=>{let d=X(),a=0,h=[],l=u||{};try{if(u?.logSeverityLevel===void 0)l.logSeverityLevel=2;else if(typeof u.logSeverityLevel!="number"||!Number.isInteger(u.logSeverityLevel)||u.logSeverityLevel<0||u.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${u.logSeverityLevel}`);if(u?.logVerbosityLevel===void 0)l.logVerbosityLevel=0;else if(typeof u.logVerbosityLevel!="number"||!Number.isInteger(u.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${u.logVerbosityLevel}`);u?.terminate===void 0&&(l.terminate=!1);let w=0;return u?.tag!==void 0&&(w=Q(u.tag,h)),a=d._OrtCreateRunOptions(l.logSeverityLevel,l.logVerbosityLevel,!!l.terminate,w),a===0&&V("Can\'t create run options."),u?.extra!==void 0&&rt(u.extra,"",new WeakSet,(g,i)=>{let A=Q(g,h),D=Q(i,h);d._OrtAddRunConfigEntry(a,A,D)!==0&&V(`Can\'t set a run config entry: ${g} - ${i}.`)}),[a,h]}catch(w){throw a!==0&&d._OrtReleaseRunOptions(a),h.forEach(g=>d._free(g)),w}};var fn=u=>{switch(u){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${u}`)}},ln=u=>{switch(u){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${u}`)}},cn=u=>{u.extra||(u.extra={}),u.extra.session||(u.extra.session={});let d=u.extra.session;d.use_ort_model_bytes_directly||(d.use_ort_model_bytes_directly="1"),u.executionProviders&&u.executionProviders.some(a=>(typeof a=="string"?a:a.name)==="webgpu")&&(u.enableMemPattern=!1)},dn=(u,d,a)=>{for(let h of d){let l=typeof h=="string"?h:h.name;switch(l){case"webnn":if(l="WEBNN",typeof h!="string"){let g=h;if(g?.deviceType){let i=Q("deviceType",a),A=Q(g.deviceType,a);X()._OrtAddSessionConfigEntry(u,i,A)!==0&&V(`Can\'t set a session config entry: \'deviceType\' - ${g.deviceType}.`)}if(g?.numThreads){let i=g.numThreads;(typeof i!="number"||!Number.isInteger(i)||i<0)&&(i=0);let A=Q("numThreads",a),D=Q(i.toString(),a);X()._OrtAddSessionConfigEntry(u,A,D)!==0&&V(`Can\'t set a session config entry: \'numThreads\' - ${g.numThreads}.`)}if(g?.powerPreference){let i=Q("powerPreference",a),A=Q(g.powerPreference,a);X()._OrtAddSessionConfigEntry(u,i,A)!==0&&V(`Can\'t set a session config entry: \'powerPreference\' - ${g.powerPreference}.`)}}break;case"webgpu":if(l="JS",typeof h!="string"){let g=h;if(g?.preferredLayout){if(g.preferredLayout!=="NCHW"&&g.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either \'NCHW\' or \'NHWC\': ${g.preferredLayout}`);let i=Q("preferredLayout",a),A=Q(g.preferredLayout,a);X()._OrtAddSessionConfigEntry(u,i,A)!==0&&V(`Can\'t set a session config entry: \'preferredLayout\' - ${g.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${l}`)}let w=Q(l,a);X()._OrtAppendExecutionProvider(u,w)!==0&&V(`Can\'t append execution provider: ${l}.`)}},Cr=u=>{let d=X(),a=0,h=[],l=u||{};cn(l);try{let w=fn(l.graphOptimizationLevel??"all"),g=ln(l.executionMode??"sequential"),i=typeof l.logId=="string"?Q(l.logId,h):0,A=l.logSeverityLevel??2;if(!Number.isInteger(A)||A<0||A>4)throw new Error(`log serverity level is not valid: ${A}`);let D=l.logVerbosityLevel??0;if(!Number.isInteger(D)||D<0||D>4)throw new Error(`log verbosity level is not valid: ${D}`);let I=typeof l.optimizedModelFilePath=="string"?Q(l.optimizedModelFilePath,h):0;if(a=d._OrtCreateSessionOptions(w,!!l.enableCpuMemArena,!!l.enableMemPattern,g,!!l.enableProfiling,0,i,A,D,I),a===0&&V("Can\'t create session options."),l.executionProviders&&dn(a,l.executionProviders,h),l.freeDimensionOverrides)for(let[B,F]of Object.entries(l.freeDimensionOverrides)){if(typeof B!="string")throw new Error(`free dimension override name must be a string: ${B}`);if(typeof F!="number"||!Number.isInteger(F)||F<0)throw new Error(`free dimension override value must be a non-negative integer: ${F}`);let U=Q(B,h);d._OrtAddFreeDimensionOverride(a,U,F)!==0&&V(`Can\'t set a free dimension override: ${B} - ${F}.`)}return l.extra!==void 0&&rt(l.extra,"",new WeakSet,(B,F)=>{let U=Q(B,h),k=Q(F,h);d._OrtAddSessionConfigEntry(a,U,k)!==0&&V(`Can\'t set a session config entry: ${B} - ${F}.`)}),[a,h]}catch(w){throw a!==0&&d._OrtReleaseSessionOptions(a),h.forEach(g=>d._free(g)),w}};var Rt=u=>{switch(u){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;default:throw new Error(`unsupported data type: ${u}`)}},Dr=u=>{switch(u){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";default:throw new Error(`unsupported data type: ${u}`)}},It=u=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][u],xr=u=>{switch(u){case"float16":return Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${u}`)}},Fr=u=>{switch(u){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${u}`)}},Ur=u=>u==="float32"||u==="int32"||u==="int64"||u==="bool"||u==="float16"||u==="uint32",Pr=u=>{switch(u){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${u}`)}};var Rr=async u=>{if(typeof u=="string")if(typeof process<"u"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(u))}catch(d){if(d.code==="ERR_FS_FILE_TOO_LARGE"){let a=(void 0)(u),h=[];for await(let l of a)h.push(l);return new Uint8Array(Buffer.concat(h))}throw d}else{let d=await fetch(u);if(!d.ok)throw new Error(`failed to load external data file: ${u}`);let a=d.headers.get("Content-Length"),h=a?parseInt(a,10):0;if(h<1073741824)return new Uint8Array(await d.arrayBuffer());{if(!d.body)throw new Error(`failed to load external data file: ${u}, no response body.`);let l=d.body.getReader(),w;try{w=new ArrayBuffer(h)}catch(i){if(i instanceof RangeError){let A=Math.ceil(h/65536);w=new WebAssembly.Memory({initial:A,maximum:A}).buffer}else throw i}let g=0;for(;;){let{done:i,value:A}=await l.read();if(i)break;let D=A.byteLength;new Uint8Array(w,g,D).set(A),g+=D}return new Uint8Array(w,0,h)}}else return u instanceof Blob?new Uint8Array(await u.arrayBuffer()):u instanceof Uint8Array?u:new Uint8Array(u)};var pn=(u,d)=>{X()._OrtInit(u,d)!==0&&V("Can\'t initialize onnxruntime.")},Lr=async u=>{pn(u.wasm.numThreads,Fr(u.logLevel))},Br=async(u,d)=>{},nt=new Map,mn=u=>{let d=X(),a=d.stackSave();try{let h=d.stackAlloc(8);return d._OrtGetInputOutputCount(u,h,h+4)!==0&&V("Can\'t get session input/output count."),[d.HEAP32[h/4],d.HEAP32[h/4+1]]}finally{d.stackRestore(a)}},Lt=u=>{let d=X(),a=d._malloc(u.byteLength);if(a===0)throw new Error(`Can\'t create a session. failed to allocate a buffer of size ${u.byteLength}.`);return d.HEAPU8.set(u,a),[a,u.byteLength]},Wr=async(u,d)=>{let a,h,l=X();Array.isArray(u)?[a,h]=u:u.buffer===l.HEAPU8.buffer?[a,h]=[u.byteOffset,u.byteLength]:[a,h]=Lt(u);let w=0,g=0,i=0,A=[],D=[],I=[];try{if([g,A]=Cr(d),d?.externalData&&l.mountExternalData){let x=[];for(let N of d.externalData){let he=typeof N=="string"?N:N.path;x.push(Rr(typeof N=="string"?N:N.data).then(ie=>{l.mountExternalData(he,ie)}))}await Promise.all(x)}w=l._OrtCreateSession(a,h,g),w===0&&V("Can\'t create a session.");let[B,F]=mn(w),U=[],k=[],L=[];for(let x=0;xl._OrtFree(F)),I.forEach(F=>l._OrtFree(F)),i!==0&&l._OrtReleaseBinding(i),w!==0&&l._OrtReleaseSession(w),B}finally{l._free(a),g!==0&&l._OrtReleaseSessionOptions(g),A.forEach(B=>l._free(B)),l.unmountExternalData?.()}},kr=u=>{let d=X(),a=nt.get(u);if(!a)throw new Error(`cannot release session. invalid session id: ${u}`);let[h,l,w,g]=a;g&&d._OrtReleaseBinding(g.handle),d.jsepUnregisterBuffers?.(u),l.forEach(i=>d._OrtFree(i)),w.forEach(i=>d._OrtFree(i)),d._OrtReleaseSession(h),nt.delete(u)},Ir=(u,d,a,h,l)=>{if(!u){d.push(0);return}let w=X(),g=u[0],i=u[1],A=u[3],D,I;if(g==="string"&&A==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");if(A==="gpu-buffer"){let U=u[2].gpuBuffer,k=It(Rt(g));I=i.reduce((L,_)=>L*_,1)*k,D=w.jsepRegisterBuffer(h,l,U,I)}else{let U=u[2];if(Array.isArray(U)){I=4*U.length,D=w._malloc(I),a.push(D);let k=D/4;for(let L=0;Lw.HEAP32[U++]=L);let k=w._OrtCreateTensor(Rt(g),D,I,F,i.length,Pr(A));k===0&&V(`Can\'t create tensor for input/output. session=${h}, index=${l}.`),d.push(k)}finally{w.stackRestore(B)}},Nr=async(u,d,a,h,l,w)=>{let g=X(),i=nt.get(u);if(!i)throw new Error(`cannot run inference. invalid session id: ${u}`);let[A,D,I,B]=i,F=d.length,U=h.length,k=0,L=[],_=[],x=[],N=[],he=g.stackSave(),ie=g.stackAlloc(F*4),ae=g.stackAlloc(F*4),E=g.stackAlloc(U*4),Y=g.stackAlloc(U*4);try{[k,L]=Mr(w);for(let P=0;Pre*Z,1);J=Dr(Me);let ve=B?.outputPreferredLocations[h[P]];if(J==="string"){if(ve==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");let re=[],Z=fe/4;for(let Ce=0;Ce0){let re=g.jsepGetBuffer(fe),Z=It(Me);if(Z===void 0||!Ur(J))throw new Error(`Unsupported data type: ${J}`);ye=!0,ce.push([J,pe,{gpuBuffer:re,download:g.jsepCreateDownloader(re,Oe*Z,J),dispose:()=>{g._OrtReleaseTensor(te)}},"gpu-buffer"])}else{let re=xr(J),Z=new re(Oe);new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength).set(g.HEAPU8.subarray(fe,fe+Z.byteLength)),ce.push([J,pe,Z,"cpu"])}}finally{g.stackRestore(de),J==="string"&&fe&&g._free(fe),ye||g._OrtReleaseTensor(te)}}return B&&g._OrtClearBoundOutputs(B.handle),ce}finally{g.stackRestore(he),_.forEach(ue=>g._OrtReleaseTensor(ue)),x.forEach(ue=>g._OrtReleaseTensor(ue)),N.forEach(ue=>g._free(ue)),k!==0&&g._OrtReleaseRunOptions(k),L.forEach(ue=>g._free(ue))}},Hr=u=>{let d=X(),a=nt.get(u);if(!a)throw new Error("invalid session id");let h=a[0],l=d._OrtEndProfiling(h);l===0&&V("Can\'t get an profile file name."),d._OrtFree(l)},$r=u=>{let d=[];for(let a of u){let h=a[2];!Array.isArray(h)&&"buffer"in h&&d.push(h.buffer)}return d};self.onmessage=u=>{let{type:d,in:a}=u.data;try{switch(d){case"init-wasm":Ar(a.wasm).then(()=>{Lr(a).then(()=>{postMessage({type:d})},h=>{postMessage({type:d,err:h})})},h=>{postMessage({type:d,err:h})});break;case"init-ep":{let{epName:h,env:l}=a;Br(l,h).then(()=>{postMessage({type:d})},w=>{postMessage({type:d,err:w})});break}case"copy-from":{let{buffer:h}=a,l=Lt(h);postMessage({type:d,out:l});break}case"create":{let{model:h,options:l}=a;Wr(h,l).then(w=>{postMessage({type:d,out:w})},w=>{postMessage({type:d,err:w})});break}case"release":kr(a),postMessage({type:d});break;case"run":{let{sessionId:h,inputIndices:l,inputs:w,outputIndices:g,options:i}=a;Nr(h,l,w,g,new Array(g.length).fill(null),i).then(A=>{A.some(D=>D[3]!=="cpu")?postMessage({type:d,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:d,out:A},$r(A))},A=>{postMessage({type:d,err:A})});break}case"end-profiling":Hr(a),postMessage({type:d});break;default:}}catch(h){postMessage({type:d,err:h})}};})();\n'; + }), + xr, + bt, + Tn, + Fo, + $o, + da, + ha, + Vr, + Wr, + gg, + Lo, + nd, + od, + id, + ad, + sd, + ud, + ld, + ma = L(() => { + vt(), + td(), + zr(), + (xr = () => !!Z.wasm.proxy && typeof document < 'u'), + (Tn = !1), + (Fo = !1), + ($o = !1), + (ha = new Map()), + (Vr = (t, e) => { + let o = ha.get(t); + o ? o.push(e) : ha.set(t, [e]); + }), + (Wr = () => { + if (Tn || !Fo || $o || !bt) throw new Error('worker not ready'); + }), + (gg = (t) => { + switch (t.data.type) { + case 'init-wasm': + (Tn = !1), t.data.err ? (($o = !0), da[1](t.data.err)) : ((Fo = !0), da[0]()); + break; + case 'init-ep': + case 'copy-from': + case 'create': + case 'release': + case 'run': + case 'end-profiling': { + let e = ha.get(t.data.type); + t.data.err ? e.shift()[1](t.data.err) : e.shift()[0](t.data.out); + break; + } + } + }), + (Lo = typeof document < 'u' ? document?.currentScript?.src : void 0), + (nd = async () => { + if (!Fo) { + if (Tn) throw new Error("multiple calls to 'initWasm()' detected."); + if ($o) throw new Error("previous call to 'initWasm()' failed."); + if (((Tn = !0), xr())) + return ( + Z.wasm.wasmPaths === void 0 && + Lo && + Lo.indexOf('blob:') !== 0 && + (Z.wasm.wasmPaths = Lo.substr(0, +Lo.lastIndexOf('/') + 1)), + new Promise((t, e) => { + bt?.terminate(); + let o = URL.createObjectURL(new Blob([rd()], { type: 'text/javascript' })); + (bt = new Worker(o, { name: 'ort-wasm-proxy-worker' })), + (bt.onerror = (u) => e(u)), + (bt.onmessage = gg), + URL.revokeObjectURL(o), + (da = [t, e]); + let i = { type: 'init-wasm', in: Z }; + bt.postMessage(i); + }) + ); + try { + await Rp(Z.wasm), await Yp(Z), (Fo = !0); + } catch (t) { + throw (($o = !0), t); + } finally { + Tn = !1; + } + } + }), + (od = async (t) => { + if (xr()) + return ( + Wr(), + new Promise((e, o) => { + Vr('init-ep', [e, o]); + let i = { type: 'init-ep', in: { epName: t, env: Z } }; + bt.postMessage(i); + }) + ); + await Xp(Z, t); + }), + (id = async (t) => + xr() + ? (Wr(), + new Promise((e, o) => { + Vr('copy-from', [e, o]); + let i = { type: 'copy-from', in: { buffer: t } }; + bt.postMessage(i, [t.buffer]); + })) + : pa(t)), + (ad = async (t, e) => { + if (xr()) { + if (e?.preferredOutputLocation) + throw new Error('session option "preferredOutputLocation" is not supported for proxy.'); + return ( + Wr(), + new Promise((o, i) => { + Vr('create', [o, i]); + let u = { type: 'create', in: { model: t, options: e } }, + n = []; + t instanceof Uint8Array && n.push(t.buffer), bt.postMessage(u, n); + }) + ); + } else return Kp(t, e); + }), + (sd = async (t) => { + if (xr()) + return ( + Wr(), + new Promise((e, o) => { + Vr('release', [e, o]); + let i = { type: 'release', in: t }; + bt.postMessage(i); + }) + ); + Jp(t); + }), + (ud = async (t, e, o, i, u, n) => { + if (xr()) { + if (o.some((s) => s[3] !== 'cpu')) + throw new Error('input tensor on GPU is not supported for proxy.'); + if (u.some((s) => s)) throw new Error('pre-allocated output tensor is not supported for proxy.'); + return ( + Wr(), + new Promise((s, d) => { + Vr('run', [s, d]); + let f = o, + r = { + type: 'run', + in: { sessionId: t, inputIndices: e, inputs: f, outputIndices: i, options: n }, + }; + bt.postMessage(r, ed(f)); + }) + ); + } else return Zp(t, e, o, i, u, n); + }), + (ld = async (t) => { + if (xr()) + return ( + Wr(), + new Promise((e, o) => { + Vr('end-profiling', [e, o]); + let i = { type: 'end-profiling', in: t }; + bt.postMessage(i); + }) + ); + Qp(t); + }); + }), + fd, + yg, + Co, + cd = L(() => { + vt(), + ma(), + fa(), + ca(), + (fd = (t, e) => { + switch (t.location) { + case 'cpu': + return [t.type, t.dims, t.data, 'cpu']; + case 'gpu-buffer': + return [t.type, t.dims, { gpuBuffer: t.gpuBuffer }, 'gpu-buffer']; + default: + throw new Error(`invalid data location: ${t.location} for ${e()}`); + } + }), + (yg = (t) => { + switch (t[3]) { + case 'cpu': + return new Re(t[0], t[2], t[1]); + case 'gpu-buffer': { + let e = t[0]; + if (!Do(e)) throw new Error(`not supported data type: ${e} for deserializing GPU tensor`); + let { gpuBuffer: o, download: i, dispose: u } = t[2]; + return Re.fromGpuBuffer(o, { dataType: e, dims: t[1], download: i, dispose: u }); + } + default: + throw new Error(`invalid data location: ${t[3]}`); + } + }), + (Co = class { + async fetchModelAndCopyToWasmMemory(t) { + return id(await gn(t)); + } + async loadModel(t, e) { + ar(); + let o; + typeof t == 'string' + ? typeof process < 'u' && process.versions && process.versions.node + ? (o = await gn(t)) + : (o = await this.fetchModelAndCopyToWasmMemory(t)) + : (o = t), + ([this.sessionId, this.inputNames, this.outputNames] = await ad(o, e)), + sr(); + } + async dispose() { + return sd(this.sessionId); + } + async run(t, e, o) { + ar(); + let i = [], + u = []; + Object.entries(t).forEach((l) => { + let p = l[0], + m = l[1], + y = this.inputNames.indexOf(p); + if (y === -1) throw new Error(`invalid input '${p}'`); + i.push(m), u.push(y); + }); + let n = [], + s = []; + Object.entries(e).forEach((l) => { + let p = l[0], + m = l[1], + y = this.outputNames.indexOf(p); + if (y === -1) throw new Error(`invalid output '${p}'`); + n.push(m), s.push(y); + }); + let d = i.map((l, p) => fd(l, () => `input "${this.inputNames[u[p]]}"`)), + f = n.map((l, p) => (l ? fd(l, () => `output "${this.outputNames[s[p]]}"`) : null)), + r = await ud(this.sessionId, u, d, s, f, o), + a = {}; + for (let l = 0; l < r.length; l++) a[this.outputNames[s[l]]] = n[l] ?? yg(r[l]); + return sr(), a; + } + startProfiling() {} + endProfiling() { + ld(this.sessionId); + } + }); + }), + Tg, + ko, + pd = L(() => { + vt(), + ma(), + cd(), + (Tg = () => { + if ( + ((typeof Z.wasm.initTimeout != 'number' || Z.wasm.initTimeout < 0) && (Z.wasm.initTimeout = 0), + typeof Z.wasm.simd != 'boolean' && (Z.wasm.simd = !0), + typeof Z.wasm.proxy != 'boolean' && (Z.wasm.proxy = !1), + typeof Z.wasm.trace != 'boolean' && (Z.wasm.trace = !1), + typeof Z.wasm.numThreads != 'number' || + !Number.isInteger(Z.wasm.numThreads) || + Z.wasm.numThreads <= 0) + ) { + ((typeof self < 'u' && !self.crossOriginIsolated) || + (typeof process < 'u' && process.versions && process.versions.node)) && + (Z.wasm.numThreads = 1); + let t = typeof navigator > 'u' ? (void 0)().length : navigator.hardwareConcurrency; + Z.wasm.numThreads = Math.min(4, Math.ceil((t || 1) / 2)); + } + }), + (ko = class { + async init(t) { + Tg(), await nd(), await od(t); + } + async createInferenceSessionHandler(t, e) { + let o = new Co(); + return await o.loadModel(t, e), Promise.resolve(o); + } + }); + }), + dd = {}; +Pr(dd, { wasmBackend: () => xg }); +var xg, + hd = L(() => { + pd(), (xg = new ko()); + }); +vt(); +vt(); +vt(); +var ys = '1.17.1', + zO = Yo; +{ + let t = (_p(), rr(wp)).onnxjsBackend; + or('webgl', t, -10); +} +{ + let t = (hd(), rr(dd)).wasmBackend; + or('cpu', t, 10), or('wasm', t, 10), or('webnn', t, 9); +} +Object.defineProperty(Z.versions, 'web', { value: ys, enumerable: !0 }); +/*! Bundled license information: + +long/index.js: + (** + * @license + * Copyright 2009 The Closure Library Authors + * Copyright 2020 Daniel Wirtz / The long.js Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + *) +*/ const ONNX_WEB = Object.freeze( + Object.defineProperty( + { + __proto__: null, + get InferenceSession() { + return Sd; + }, + get TRACE() { + return cs; + }, + get TRACE_FUNC_BEGIN() { + return ar; + }, + get TRACE_FUNC_END() { + return sr; + }, + get Tensor() { + return Re; + }, + get TrainingSession() { + return Pd; + }, + default: zO, + get env() { + return Z; + }, + get registerBackend() { + return or; + }, + }, + Symbol.toStringTag, + { value: 'Module' } + ) + ), + tensorToDataURL = (t, e) => { + const o = typeof document < 'u' ? document.createElement('canvas') : new OffscreenCanvas(1, 1); + (o.width = t.dims[3]), (o.height = t.dims[2]); + const i = o.getContext('2d'); + if (i != null) { + let u, n; + e?.tensorLayout !== void 0 && e.tensorLayout === 'NHWC' + ? ((u = t.dims[2]), (n = t.dims[3])) + : ((u = t.dims[3]), (n = t.dims[2])); + const s = e?.format !== void 0 ? e.format : 'RGB', + d = e?.norm; + let f, r; + d === void 0 || d.mean === void 0 + ? (f = [255, 255, 255, 255]) + : typeof d.mean == 'number' + ? (f = [d.mean, d.mean, d.mean, d.mean]) + : ((f = [d.mean[0], d.mean[1], d.mean[2], 0]), d.mean[3] !== void 0 && (f[3] = d.mean[3])), + d === void 0 || d.bias === void 0 + ? (r = [0, 0, 0, 0]) + : typeof d.bias == 'number' + ? (r = [d.bias, d.bias, d.bias, d.bias]) + : ((r = [d.bias[0], d.bias[1], d.bias[2], 0]), d.bias[3] !== void 0 && (r[3] = d.bias[3])); + const a = n * u; + let l = 0, + p = a, + m = a * 2, + y = -1; + s === 'RGBA' + ? ((l = 0), (p = a), (m = a * 2), (y = a * 3)) + : s === 'RGB' + ? ((l = 0), (p = a), (m = a * 2)) + : s === 'RBG' && ((l = 0), (m = a), (p = a * 2)); + for (let T = 0; T < n; T++) + for (let v = 0; v < u; v++) { + const S = (t.data[l++] - r[0]) * f[0], + E = (t.data[p++] - r[1]) * f[1], + A = (t.data[m++] - r[2]) * f[2], + F = y === -1 ? 255 : (t.data[y++] - r[3]) * f[3]; + (i.fillStyle = 'rgba(' + S + ',' + E + ',' + A + ',' + F + ')'), i.fillRect(v, T, 1, 1); + } + if ('toDataURL' in o) return o.toDataURL(); + throw new Error('toDataURL is not supported'); + } else throw new Error('Can not access image data'); + }, + tensorToImageData = (t, e) => { + const o = + typeof document < 'u' + ? document.createElement('canvas').getContext('2d') + : new OffscreenCanvas(1, 1).getContext('2d'); + let i; + if (o != null) { + let u, n, s; + e?.tensorLayout !== void 0 && e.tensorLayout === 'NHWC' + ? ((u = t.dims[2]), (n = t.dims[1]), (s = t.dims[3])) + : ((u = t.dims[3]), (n = t.dims[2]), (s = t.dims[1])); + const d = e !== void 0 && e.format !== void 0 ? e.format : 'RGB', + f = e?.norm; + let r, a; + f === void 0 || f.mean === void 0 + ? (r = [255, 255, 255, 255]) + : typeof f.mean == 'number' + ? (r = [f.mean, f.mean, f.mean, f.mean]) + : ((r = [f.mean[0], f.mean[1], f.mean[2], 255]), f.mean[3] !== void 0 && (r[3] = f.mean[3])), + f === void 0 || f.bias === void 0 + ? (a = [0, 0, 0, 0]) + : typeof f.bias == 'number' + ? (a = [f.bias, f.bias, f.bias, f.bias]) + : ((a = [f.bias[0], f.bias[1], f.bias[2], 0]), f.bias[3] !== void 0 && (a[3] = f.bias[3])); + const l = n * u; + if ( + e !== void 0 && + ((e.format !== void 0 && s === 4 && e.format !== 'RGBA') || + (s === 3 && e.format !== 'RGB' && e.format !== 'BGR')) + ) + throw new Error("Tensor format doesn't match input tensor dims"); + const p = 4; + let m = 0, + y = 1, + T = 2, + v = 3, + S = 0, + E = l, + A = l * 2, + F = -1; + d === 'RGBA' + ? ((S = 0), (E = l), (A = l * 2), (F = l * 3)) + : d === 'RGB' + ? ((S = 0), (E = l), (A = l * 2)) + : d === 'RBG' && ((S = 0), (A = l), (E = l * 2)), + (i = o.createImageData(u, n)); + for (let B = 0; B < n * u; m += p, y += p, T += p, v += p, B++) + (i.data[m] = (t.data[S++] - a[0]) * r[0]), + (i.data[y] = (t.data[E++] - a[1]) * r[1]), + (i.data[T] = (t.data[A++] - a[2]) * r[2]), + (i.data[v] = F === -1 ? 255 : (t.data[F++] - a[3]) * r[3]); + } else throw new Error('Can not access image data'); + return i; + }, + bufferToTensor = (t, e) => { + if (t === void 0) throw new Error('Image buffer must be defined'); + if (e.height === void 0 || e.width === void 0) throw new Error('Image height and width must be defined'); + if (e.tensorLayout === 'NHWC') throw new Error('NHWC Tensor layout is not supported yet'); + const { height: o, width: i } = e, + u = e.norm ?? { mean: 255, bias: 0 }; + let n, s; + typeof u.mean == 'number' + ? (n = [u.mean, u.mean, u.mean, u.mean]) + : (n = [u.mean[0], u.mean[1], u.mean[2], u.mean[3] ?? 255]), + typeof u.bias == 'number' + ? (s = [u.bias, u.bias, u.bias, u.bias]) + : (s = [u.bias[0], u.bias[1], u.bias[2], u.bias[3] ?? 0]); + const d = e.format !== void 0 ? e.format : 'RGBA', + f = e.tensorFormat !== void 0 && e.tensorFormat !== void 0 ? e.tensorFormat : 'RGB', + r = o * i, + a = f === 'RGBA' ? new Float32Array(r * 4) : new Float32Array(r * 3); + let l = 4, + p = 0, + m = 1, + y = 2, + T = 3, + v = 0, + S = r, + E = r * 2, + A = -1; + d === 'RGB' && ((l = 3), (p = 0), (m = 1), (y = 2), (T = -1)), + f === 'RGBA' + ? (A = r * 3) + : f === 'RBG' + ? ((v = 0), (E = r), (S = r * 2)) + : f === 'BGR' && ((E = 0), (S = r), (v = r * 2)); + for (let B = 0; B < r; B++, p += l, y += l, m += l, T += l) + (a[v++] = (t[p] + s[0]) / n[0]), + (a[S++] = (t[m] + s[1]) / n[1]), + (a[E++] = (t[y] + s[2]) / n[2]), + A !== -1 && T !== -1 && (a[A++] = (t[T] + s[3]) / n[3]); + return f === 'RGBA' ? new Tensor$2('float32', a, [1, 4, o, i]) : new Tensor$2('float32', a, [1, 3, o, i]); + }, + tensorFromImage = async (t, e) => { + const o = typeof HTMLImageElement < 'u' && t instanceof HTMLImageElement, + i = typeof ImageData < 'u' && t instanceof ImageData, + u = typeof ImageBitmap < 'u' && t instanceof ImageBitmap, + n = typeof t == 'string'; + let s, + d = e ?? {}; + const f = () => { + if (typeof document < 'u') return document.createElement('canvas'); + if (typeof OffscreenCanvas < 'u') return new OffscreenCanvas(1, 1); + throw new Error('Canvas is not supported'); + }, + r = (a) => (a instanceof HTMLCanvasElement || a instanceof OffscreenCanvas ? a.getContext('2d') : null); + if (o) { + const a = f(); + (a.width = t.width), (a.height = t.height); + const l = r(a); + if (l != null) { + let p = t.height, + m = t.width; + if ( + (e !== void 0 && + e.resizedHeight !== void 0 && + e.resizedWidth !== void 0 && + ((p = e.resizedHeight), (m = e.resizedWidth)), + e !== void 0) + ) { + if (((d = e), e.tensorFormat !== void 0)) + throw new Error('Image input config format must be RGBA for HTMLImageElement'); + (d.tensorFormat = 'RGBA'), (d.height = p), (d.width = m); + } else (d.tensorFormat = 'RGBA'), (d.height = p), (d.width = m); + l.drawImage(t, 0, 0), (s = l.getImageData(0, 0, m, p).data); + } else throw new Error('Can not access image data'); + } else if (i) { + let a, l; + if ( + (e !== void 0 && e.resizedWidth !== void 0 && e.resizedHeight !== void 0 + ? ((a = e.resizedHeight), (l = e.resizedWidth)) + : ((a = t.height), (l = t.width)), + e !== void 0 && (d = e), + (d.format = 'RGBA'), + (d.height = a), + (d.width = l), + e !== void 0) + ) { + const p = f(); + (p.width = l), (p.height = a); + const m = r(p); + if (m != null) m.putImageData(t, 0, 0), (s = m.getImageData(0, 0, l, a).data); + else throw new Error('Can not access image data'); + } else s = t.data; + } else if (u) { + if (e === void 0) throw new Error('Please provide image config with format for Imagebitmap'); + const a = f(); + (a.width = t.width), (a.height = t.height); + const l = r(a); + if (l != null) { + const p = t.height, + m = t.width; + return ( + l.drawImage(t, 0, 0, m, p), + (s = l.getImageData(0, 0, m, p).data), + (d.height = p), + (d.width = m), + bufferToTensor(s, d) + ); + } else throw new Error('Can not access image data'); + } else { + if (n) + return new Promise((a, l) => { + const p = f(), + m = r(p); + if (!t || !m) return l(); + const y = new Image(); + (y.crossOrigin = 'Anonymous'), + (y.src = t), + (y.onload = () => { + (p.width = y.width), (p.height = y.height), m.drawImage(y, 0, 0, p.width, p.height); + const T = m.getImageData(0, 0, p.width, p.height); + (d.height = p.height), (d.width = p.width), a(bufferToTensor(T.data, d)); + }); + }); + throw new Error('Input data provided is not supported - aborted tensor creation'); + } + if (s !== void 0) return bufferToTensor(s, d); + throw new Error('Input data provided is not supported - aborted tensor creation'); + }, + tensorFromTexture = (t, e) => { + const { width: o, height: i, download: u, dispose: n } = e, + s = [1, i, o, 4]; + return new Tensor$2({ location: 'texture', type: 'float32', texture: t, dims: s, download: u, dispose: n }); + }, + tensorFromGpuBuffer = (t, e) => { + const { dataType: o, dims: i, download: u, dispose: n } = e; + return new Tensor$2({ + location: 'gpu-buffer', + type: o ?? 'float32', + gpuBuffer: t, + dims: i, + download: u, + dispose: n, + }); + }, + tensorFromPinnedBuffer = (t, e, o) => + new Tensor$2({ location: 'cpu-pinned', type: t, data: e, dims: o ?? [e.length] }), + NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP = new Map([ + ['float32', Float32Array], + ['uint8', Uint8Array], + ['int8', Int8Array], + ['uint16', Uint16Array], + ['float16', Uint16Array], + ['int16', Int16Array], + ['int32', Int32Array], + ['bool', Uint8Array], + ['float64', Float64Array], + ['uint32', Uint32Array], + ]), + NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP = new Map([ + [Float32Array, 'float32'], + [Uint8Array, 'uint8'], + [Int8Array, 'int8'], + [Uint16Array, 'uint16'], + [Int16Array, 'int16'], + [Int32Array, 'int32'], + [Float64Array, 'float64'], + [Uint32Array, 'uint32'], + ]); +let isBigIntChecked = !1; +const checkBigInt = () => { + if (!isBigIntChecked) { + isBigIntChecked = !0; + const t = typeof BigInt64Array < 'u' && typeof BigInt64Array.from == 'function', + e = typeof BigUint64Array < 'u' && typeof BigUint64Array.from == 'function'; + t && + (NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.set('int64', BigInt64Array), + NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.set(BigInt64Array, 'int64')), + e && + (NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.set('uint64', BigUint64Array), + NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.set(BigUint64Array, 'uint64')); + } + }, + calculateSize = (t) => { + let e = 1; + for (let o = 0; o < t.length; o++) { + const i = t[o]; + if (typeof i != 'number' || !Number.isSafeInteger(i)) + throw new TypeError(`dims[${o}] must be an integer, got: ${i}`); + if (i < 0) throw new RangeError(`dims[${o}] must be a non-negative integer, got: ${i}`); + e *= i; + } + return e; + }, + tensorReshape = (t, e) => { + switch (t.location) { + case 'cpu': + return new Tensor$2(t.type, t.data, e); + case 'cpu-pinned': + return new Tensor$2({ location: 'cpu-pinned', data: t.data, type: t.type, dims: e }); + case 'texture': + return new Tensor$2({ location: 'texture', texture: t.texture, type: t.type, dims: e }); + case 'gpu-buffer': + return new Tensor$2({ location: 'gpu-buffer', gpuBuffer: t.gpuBuffer, type: t.type, dims: e }); + default: + throw new Error(`tensorReshape: tensor location ${t.location} is not supported`); + } + }; +let Tensor$2 = class { + constructor(e, o, i) { + checkBigInt(); + let u, n; + if (typeof e == 'object' && 'location' in e) + switch (((this.dataLocation = e.location), (u = e.type), (n = e.dims), e.location)) { + case 'cpu-pinned': { + const d = NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.get(u); + if (!d) throw new TypeError(`unsupported type "${u}" to create tensor from pinned buffer`); + if (!(e.data instanceof d)) throw new TypeError(`buffer should be of type ${d.name}`); + this.cpuData = e.data; + break; + } + case 'texture': { + if (u !== 'float32') throw new TypeError(`unsupported type "${u}" to create tensor from texture`); + (this.gpuTextureData = e.texture), (this.downloader = e.download), (this.disposer = e.dispose); + break; + } + case 'gpu-buffer': { + if ( + u !== 'float32' && + u !== 'float16' && + u !== 'int32' && + u !== 'int64' && + u !== 'uint32' && + u !== 'bool' + ) + throw new TypeError(`unsupported type "${u}" to create tensor from gpu buffer`); + (this.gpuBufferData = e.gpuBuffer), (this.downloader = e.download), (this.disposer = e.dispose); + break; + } + default: + throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`); + } + else { + let d, f; + if (typeof e == 'string') + if (((u = e), (f = i), e === 'string')) { + if (!Array.isArray(o)) throw new TypeError("A string tensor's data must be a string array."); + d = o; + } else { + const r = NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.get(e); + if (r === void 0) throw new TypeError(`Unsupported tensor type: ${e}.`); + if (Array.isArray(o)) { + if (e === 'float16') + throw new TypeError( + 'Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.' + ); + e === 'uint64' || e === 'int64' ? (d = r.from(o, BigInt)) : (d = r.from(o)); + } else if (o instanceof r) d = o; + else throw new TypeError(`A ${u} tensor's data must be type of ${r}`); + } + else if (((f = o), Array.isArray(e))) { + if (e.length === 0) throw new TypeError('Tensor type cannot be inferred from an empty array.'); + const r = typeof e[0]; + if (r === 'string') (u = 'string'), (d = e); + else if (r === 'boolean') (u = 'bool'), (d = Uint8Array.from(e)); + else throw new TypeError(`Invalid element type of data array: ${r}.`); + } else { + const r = NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.get(e.constructor); + if (r === void 0) throw new TypeError(`Unsupported type for tensor data: ${e.constructor}.`); + (u = r), (d = e); + } + if (f === void 0) f = [d.length]; + else if (!Array.isArray(f)) throw new TypeError("A tensor's dims must be a number array"); + (n = f), (this.cpuData = d), (this.dataLocation = 'cpu'); + } + const s = calculateSize(n); + if (this.cpuData && s !== this.cpuData.length) + throw new Error(`Tensor's size(${s}) does not match data length(${this.cpuData.length}).`); + (this.type = u), (this.dims = n), (this.size = s); + } + static async fromImage(e, o) { + return tensorFromImage(e, o); + } + static fromTexture(e, o) { + return tensorFromTexture(e, o); + } + static fromGpuBuffer(e, o) { + return tensorFromGpuBuffer(e, o); + } + static fromPinnedBuffer(e, o, i) { + return tensorFromPinnedBuffer(e, o, i); + } + toDataURL(e) { + return tensorToDataURL(this, e); + } + toImageData(e) { + return tensorToImageData(this, e); + } + get data() { + if ((this.ensureValid(), !this.cpuData)) + throw new Error( + 'The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.' + ); + return this.cpuData; + } + get location() { + return this.dataLocation; + } + get texture() { + if ((this.ensureValid(), !this.gpuTextureData)) throw new Error('The data is not stored as a WebGL texture.'); + return this.gpuTextureData; + } + get gpuBuffer() { + if ((this.ensureValid(), !this.gpuBufferData)) throw new Error('The data is not stored as a WebGPU buffer.'); + return this.gpuBufferData; + } + async getData(e) { + switch ((this.ensureValid(), this.dataLocation)) { + case 'cpu': + case 'cpu-pinned': + return this.data; + case 'texture': + case 'gpu-buffer': { + if (!this.downloader) + throw new Error('The current tensor is not created with a specified data downloader.'); + if (this.isDownloading) throw new Error('The current tensor is being downloaded.'); + try { + this.isDownloading = !0; + const o = await this.downloader(); + return ( + (this.downloader = void 0), + (this.dataLocation = 'cpu'), + (this.cpuData = o), + e && this.disposer && (this.disposer(), (this.disposer = void 0)), + o + ); + } finally { + this.isDownloading = !1; + } + } + default: + throw new Error(`cannot get data from location: ${this.dataLocation}`); + } + } + dispose() { + if (this.isDownloading) throw new Error('The current tensor is being downloaded.'); + this.disposer && (this.disposer(), (this.disposer = void 0)), + (this.cpuData = void 0), + (this.gpuTextureData = void 0), + (this.gpuBufferData = void 0), + (this.downloader = void 0), + (this.isDownloading = void 0), + (this.dataLocation = 'none'); + } + ensureValid() { + if (this.dataLocation === 'none') throw new Error('The tensor is disposed.'); + } + reshape(e) { + if ((this.ensureValid(), this.downloader || this.disposer)) + throw new Error('Cannot reshape a tensor that owns GPU resource.'); + return tensorReshape(this, e); + } +}; +const Tensor$1 = Tensor$2; +let ONNX; +const WEBGPU_AVAILABLE = typeof navigator < 'u' && 'gpu' in navigator, + USE_ONNXRUNTIME_NODE = typeof process < 'u' && process?.release?.name === 'node', + ONNX_MODULES = new Map(); +USE_ONNXRUNTIME_NODE + ? ((ONNX = sharp ?? ONNX_NODE), ONNX_MODULES.set('node', ONNX)) + : ((ONNX = zO ?? ONNX_WEB), ONNX_MODULES.set('web', ONNX)); +async function createInferenceSession(t, e) { + let o, i; + if (USE_ONNXRUNTIME_NODE) { + const s = ONNX_MODULES.get('node'); + (i = s.InferenceSession), (o = ['cpu']), Object.assign(s.env, env.backends.onnx); + } else if (WEBGPU_AVAILABLE && env.experimental.useWebGPU) { + let s = ONNX_MODULES.get('webgpu'); + s === void 0 && + ((s = await __vitePreload(() => import('./ort.webgpu.min-7V0I_OOb.js'), __vite__mapDeps([]))), + ONNX_MODULES.set('webgpu', s)), + (i = s.InferenceSession), + (o = ['webgpu', 'wasm']), + Object.assign(s.env, env.backends.onnx); + } else { + const s = ONNX_MODULES.get('web'); + (i = s.InferenceSession), (o = ['wasm']), Object.assign(s.env, env.backends.onnx); + } + const u = { executionProviders: o, ...e }; + return await i.create(t, u); +} +function isONNXTensor(t) { + for (const e of ONNX_MODULES.values()) if (t instanceof e.Tensor) return !0; + return !1; +} +const ONNX_ENV = ONNX?.env; +ONNX_ENV && + ONNX_ENV.wasm && + ((ONNX_ENV.wasm.wasmPaths = RUNNING_LOCALLY + ? sharp.join(env.__dirname, '/dist/') + : `https://cdn.jsdelivr.net/npm/@xenova/transformers@${env.version}/dist/`), + typeof navigator < 'u' && + /iP(hone|od|ad).+16_4.+AppleWebKit/.test(navigator.userAgent) && + (ONNX_ENV.wasm.simd = !1), + (ONNX_ENV.wasm.proxy = !0)); +function isONNXProxy() { + return ONNX_ENV.wasm.proxy; +} +env.backends.onnx = ONNX_ENV; +const DataTypeMap = Object.freeze({ + float32: Float32Array, + float16: Uint16Array, + float64: Float64Array, + string: Array, + int8: Int8Array, + uint8: Uint8Array, + int16: Int16Array, + uint16: Uint16Array, + int32: Int32Array, + uint32: Uint32Array, + int64: BigInt64Array, + uint64: BigUint64Array, + bool: Uint8Array, +}); +class Tensor { + get dims() { + return this.ort_tensor.dims; + } + set dims(e) { + this.ort_tensor.dims = e; + } + get type() { + return this.ort_tensor.type; + } + get data() { + return this.ort_tensor.data; + } + get size() { + return this.ort_tensor.size; + } + ort_tensor; + constructor(...e) { + return ( + isONNXTensor(e[0]) ? (this.ort_tensor = e[0]) : (this.ort_tensor = new Tensor$1(e[0], e[1], e[2])), + new Proxy(this, { + get: (o, i) => { + if (typeof i == 'string') { + let u = Number(i); + if (Number.isInteger(u)) return o._getitem(u); + } + return o[i]; + }, + set: (o, i, u) => (o[i] = u), + }) + ); + } + dispose() { + this.ort_tensor.dispose(); + } + *[Symbol.iterator]() { + const [e, ...o] = this.dims; + if (o.length > 0) { + const i = o.reduce((u, n) => u * n); + for (let u = 0; u < e; ++u) yield this._subarray(u, i, o); + } else yield* this.data; + } + _getitem(e) { + const [o, ...i] = this.dims; + if (((e = safeIndex(e, o)), i.length > 0)) { + const u = i.reduce((n, s) => n * s); + return this._subarray(e, u, i); + } else return new Tensor(this.type, [this.data[e]], i); + } + indexOf(e) { + for (let o = 0; o < this.data.length; ++o) if (this.data[o] == e) return o; + return -1; + } + _subarray(e, o, i) { + const u = e * o, + n = (e + 1) * o, + s = 'subarray' in this.data ? this.data.subarray(u, n) : this.data.slice(u, n); + return new Tensor(this.type, s, i); + } + item() { + if (this.data.length !== 1) + throw new Error(`a Tensor with ${this.data.length} elements cannot be converted to Scalar`); + return this.data[0]; + } + tolist() { + return reshape(this.data, this.dims); + } + sigmoid() { + return this.clone().sigmoid_(); + } + sigmoid_() { + for (let e = 0; e < this.data.length; ++e) this.data[e] = 1 / (1 + Math.exp(-this.data[e])); + return this; + } + mul(e) { + return this.clone().mul_(e); + } + mul_(e) { + for (let o = 0; o < this.data.length; ++o) this.data[o] *= e; + return this; + } + add(e) { + return this.clone().add_(e); + } + add_(e) { + for (let o = 0; o < this.data.length; ++o) this.data[o] += e; + return this; + } + clone() { + return new Tensor(this.type, this.data.slice(), this.dims.slice()); + } + slice(...e) { + let o = [], + i = []; + for (let f = 0; f < this.dims.length; ++f) { + let r = e[f]; + if (r == null) i.push([0, this.dims[f]]), o.push(this.dims[f]); + else if (typeof r == 'number') (r = safeIndex(r, this.dims[f], f)), i.push([r, r + 1]); + else if (Array.isArray(r) && r.length === 2) { + if (r[0] > r[1]) throw new Error(`Invalid slice: ${r}`); + let a = [Math.max(r[0], 0), Math.min(r[1], this.dims[f])]; + i.push(a), o.push(a[1] - a[0]); + } else throw new Error(`Invalid slice: ${r}`); + } + let u = i.map(([f, r]) => r - f), + n = u.reduce((f, r) => f * r), + s = new this.data.constructor(n); + const d = this.stride(); + for (let f = 0; f < n; ++f) { + let r = 0; + for (let a = u.length - 1, l = f; a >= 0; --a) { + const p = u[a]; + (r += ((l % p) + i[a][0]) * d[a]), (l = Math.floor(l / p)); + } + s[f] = this.data[r]; + } + return new Tensor(this.type, s, o); + } + transpose(...e) { + return transpose(this, e); + } + sum(e = null, o = !1) { + return this.norm(1, e, o); + } + norm(e = 'fro', o = null, i = !1) { + if (e === 'fro') e = 2; + else if (typeof e == 'string') throw Error(`Unsupported norm: ${e}`); + if (o === null) { + let s = this.data.reduce((d, f) => d + f ** e, 0) ** (1 / e); + return new Tensor(this.type, [s], []); + } + o = safeIndex(o, this.dims.length); + const u = this.dims.slice(); + u[o] = 1; + const n = new this.data.constructor(this.data.length / this.dims[o]); + for (let s = 0; s < this.data.length; ++s) { + let d = 0; + for (let f = this.dims.length - 1, r = s, a = 1; f >= 0; --f) { + const l = this.dims[f]; + if (f !== o) { + const p = r % l; + (d += p * a), (a *= u[f]); + } + r = Math.floor(r / l); + } + n[d] += this.data[s] ** e; + } + if (e !== 1) for (let s = 0; s < n.length; ++s) n[s] = n[s] ** (1 / e); + return i || u.splice(o, 1), new Tensor(this.type, n, u); + } + normalize_(e = 2, o = 1) { + o = safeIndex(o, this.dims.length); + const i = this.norm(e, o, !0); + for (let u = 0; u < this.data.length; ++u) { + let n = 0; + for (let s = this.dims.length - 1, d = u, f = 1; s >= 0; --s) { + const r = this.dims[s]; + if (s !== o) { + const a = d % r; + (n += a * f), (f *= this.dims[s]); + } + d = Math.floor(d / r); + } + this.data[u] /= i.data[n]; + } + return this; + } + normalize(e = 2, o = 1) { + return this.clone().normalize_(e, o); + } + stride() { + return dimsToStride(this.dims); + } + squeeze(e = null) { + return new Tensor(this.type, this.data, calc_squeeze_dims(this.dims, e)); + } + squeeze_(e = null) { + return (this.dims = calc_squeeze_dims(this.dims, e)), this; + } + unsqueeze(e = null) { + return new Tensor(this.type, this.data, calc_unsqueeze_dims(this.dims, e)); + } + unsqueeze_(e = null) { + return (this.dims = calc_unsqueeze_dims(this.dims, e)), this; + } + flatten_(e = 0, o = -1) { + o = (o + this.dims.length) % this.dims.length; + let i = this.dims.slice(0, e), + u = this.dims.slice(e, o + 1), + n = this.dims.slice(o + 1); + return (this.dims = [...i, u.reduce((s, d) => s * d, 1), ...n]), this; + } + flatten(e = 0, o = -1) { + return this.clone().flatten_(e, o); + } + view(...e) { + let o = -1; + for (let i = 0; i < e.length; ++i) + if (e[i] === -1) { + if (o !== -1) throw new Error('Only one dimension can be inferred'); + o = i; + } + if (o !== -1) { + const i = e.reduce((u, n, s) => (s !== o ? u * n : u), 1); + e[o] = this.data.length / i; + } + return new Tensor(this.type, this.data, e); + } + neg_() { + for (let e = 0; e < this.data.length; ++e) this.data[e] = -this.data[e]; + return this; + } + neg() { + return this.clone().neg_(); + } + clamp_(e, o) { + for (let i = 0; i < this.data.length; ++i) this.data[i] = Math.min(Math.max(this.data[i], e), o); + return this; + } + clamp(e, o) { + return this.clone().clamp_(e, o); + } + round_() { + for (let e = 0; e < this.data.length; ++e) this.data[e] = Math.round(this.data[e]); + return this; + } + round() { + return this.clone().round_(); + } + to(e) { + if (this.type === e) return this; + if (!DataTypeMap.hasOwnProperty(e)) throw new Error(`Unsupported type: ${e}`); + return new Tensor(e, DataTypeMap[e].from(this.data), this.dims); + } +} +function reshape(t, e) { + const o = t.length, + i = e.reduce((n, s) => n * s); + if (o !== i) throw Error(`cannot reshape array of size ${o} into shape (${e})`); + let u = t; + for (let n = e.length - 1; n >= 0; n--) + u = u.reduce( + (s, d) => { + let f = s[s.length - 1]; + return f.length < e[n] ? f.push(d) : s.push([d]), s; + }, + [[]] + ); + return u[0]; +} +function transpose(t, e) { + const [o, i] = transpose_data(t.data, t.dims, e); + return new Tensor(t.type, o, i); +} +function interpolate(t, [e, o], i = 'bilinear', u = !1) { + const n = t.dims.at(-3) ?? 1, + s = t.dims.at(-2), + d = t.dims.at(-1); + let f = interpolate_data(t.data, [n, s, d], [e, o], i, u); + return new Tensor(t.type, f, [n, e, o]); +} +function calc_squeeze_dims(t, e) { + return ( + (t = t.slice()), + e === null + ? (t = t.filter((o) => o !== 1)) + : typeof e == 'number' + ? t[e] === 1 && t.splice(e, 1) + : Array.isArray(e) && (t = t.filter((o, i) => o !== 1 || !e.includes(i))), + t + ); +} +function calc_unsqueeze_dims(t, e) { + return (e = safeIndex(e, t.length + 1)), (t = t.slice()), t.splice(e, 0, 1), t; +} +function safeIndex(t, e, o = null) { + if (t < -e || t >= e) + throw new Error( + `IndexError: index ${t} is out of bounds for dimension${o === null ? '' : ' ' + o} with size ${e}` + ); + return t < 0 && (t = ((t % e) + e) % e), t; +} +function cat(t, e = 0) { + e = safeIndex(e, t[0].dims.length); + const o = t[0].dims.slice(); + o[e] = t.reduce((s, d) => s + d.dims[e], 0); + const i = o.reduce((s, d) => s * d, 1), + u = new t[0].data.constructor(i), + n = t[0].type; + if (e === 0) { + let s = 0; + for (let d of t) u.set(d.data, s), (s += d.data.length); + } else { + let s = 0; + for (let d = 0; d < t.length; ++d) { + let f = t[d]; + for (let r = 0; r < f.data.length; ++r) { + let a = 0; + for (let l = f.dims.length - 1, p = r, m = 1; l >= 0; --l) { + const y = f.dims[l]; + let T = p % y; + l === e && (T += s), (a += T * m), (m *= o[l]), (p = Math.floor(p / y)); + } + u[a] = f.data[r]; + } + s += f.dims[e]; + } + } + return new Tensor(n, u, o); +} +function stack(t, e = 0) { + return cat( + t.map((o) => o.unsqueeze(e)), + e + ); +} +function std_mean(t, e = null, o = 1, i = !1) { + if (e === null) { + const r = t.data.reduce((m, y) => m + y, 0) / t.data.length, + a = Math.sqrt(t.data.reduce((m, y) => m + (y - r) ** 2, 0) / (t.data.length - o)), + l = new Tensor(t.type, [r], []); + return [new Tensor(t.type, [a], []), l]; + } + e = safeIndex(e, t.dims.length); + const u = mean(t, e, i), + n = t.dims.slice(); + n[e] = 1; + const s = new t.data.constructor(t.data.length / t.dims[e]); + for (let f = 0; f < t.data.length; ++f) { + let r = 0; + for (let a = t.dims.length - 1, l = f, p = 1; a >= 0; --a) { + const m = t.dims[a]; + if (a !== e) { + const y = l % m; + (r += y * p), (p *= n[a]); + } + l = Math.floor(l / m); + } + s[r] += (t.data[f] - u.data[r]) ** 2; + } + for (let f = 0; f < s.length; ++f) s[f] = Math.sqrt(s[f] / (t.dims[e] - o)); + return i || n.splice(e, 1), [new Tensor(t.type, s, n), u]; +} +function mean(t, e = null, o = !1) { + if (e === null) { + let n = t.data.reduce((s, d) => s + d, 0); + return new Tensor(t.type, [n / t.data.length], []); + } + e = safeIndex(e, t.dims.length); + const i = t.dims.slice(); + i[e] = 1; + const u = new t.data.constructor(t.data.length / t.dims[e]); + for (let n = 0; n < t.data.length; ++n) { + let s = 0; + for (let d = t.dims.length - 1, f = n, r = 1; d >= 0; --d) { + const a = t.dims[d]; + if (d !== e) { + const l = f % a; + (s += l * r), (r *= i[d]); + } + f = Math.floor(f / a); + } + u[s] += t.data[n]; + } + if (t.dims[e] !== 1) for (let n = 0; n < u.length; ++n) u[n] = u[n] / t.dims[e]; + return o || i.splice(e, 1), new Tensor(t.type, u, i); +} +function dynamicTimeWarping(t) { + const [e, o] = t.dims, + i = [e + 1, o + 1], + u = new Tensor('float32', new Float32Array(i[0] * i[1]).fill(1 / 0), i), + n = new Tensor('float32', new Float32Array(i[0] * i[1]).fill(-1), i); + u[0].data[0] = 0; + for (let a = 1; a < o + 1; ++a) + for (let l = 1; l < e + 1; ++l) { + const p = u[l - 1][a - 1].item(), + m = u[l - 1][a].item(), + y = u[l][a - 1].item(); + let T, v; + p < m && p < y ? ((T = p), (v = 0)) : m < p && m < y ? ((T = m), (v = 1)) : ((T = y), (v = 2)), + (u[l].data[a] = t[l - 1][a - 1].item() + T), + (n[l].data[a] = v); + } + let s = e, + d = o; + n.data.fill(2, 0, i[1]); + for (let a = 0; a < i[0]; ++a) n[a].data[0] = 1; + let f = [], + r = []; + for (; s > 0 || d > 0; ) + switch ((f.push(s - 1), r.push(d - 1), n[s][d].item())) { + case 0: + --s, --d; + break; + case 1: + --s; + break; + case 2: + --d; + break; + default: + throw new Error( + `Internal error in dynamic time warping. Unexpected trace[${s}, ${d}]. Please file a bug report.` + ); + } + return f.reverse(), r.reverse(), [f, r]; +} +function dimsToStride(t) { + const e = new Array(t.length); + for (let o = t.length - 1, i = 1; o >= 0; --o) (e[o] = i), (i *= t[o]); + return e; +} +function ones(t) { + const e = t.reduce((o, i) => o * i, 1); + return new Tensor('int64', new BigInt64Array(e).fill(1n), t); +} +function ones_like(t) { + return ones(t.dims); +} +var TOKEN_TYPES = Object.freeze({ + Text: 'Text', + NumericLiteral: 'NumericLiteral', + BooleanLiteral: 'BooleanLiteral', + StringLiteral: 'StringLiteral', + Identifier: 'Identifier', + Equals: 'Equals', + OpenParen: 'OpenParen', + CloseParen: 'CloseParen', + OpenStatement: 'OpenStatement', + CloseStatement: 'CloseStatement', + OpenExpression: 'OpenExpression', + CloseExpression: 'CloseExpression', + OpenSquareBracket: 'OpenSquareBracket', + CloseSquareBracket: 'CloseSquareBracket', + OpenCurlyBracket: 'OpenCurlyBracket', + CloseCurlyBracket: 'CloseCurlyBracket', + Comma: 'Comma', + Dot: 'Dot', + Colon: 'Colon', + Pipe: 'Pipe', + CallOperator: 'CallOperator', + AdditiveBinaryOperator: 'AdditiveBinaryOperator', + MultiplicativeBinaryOperator: 'MultiplicativeBinaryOperator', + ComparisonBinaryOperator: 'ComparisonBinaryOperator', + UnaryOperator: 'UnaryOperator', + Set: 'Set', + If: 'If', + For: 'For', + In: 'In', + Is: 'Is', + NotIn: 'NotIn', + Else: 'Else', + EndIf: 'EndIf', + ElseIf: 'ElseIf', + EndFor: 'EndFor', + And: 'And', + Or: 'Or', + Not: 'UnaryOperator', +}); +Object.freeze({ + set: TOKEN_TYPES.Set, + for: TOKEN_TYPES.For, + in: TOKEN_TYPES.In, + is: TOKEN_TYPES.Is, + if: TOKEN_TYPES.If, + else: TOKEN_TYPES.Else, + endif: TOKEN_TYPES.EndIf, + elif: TOKEN_TYPES.ElseIf, + endfor: TOKEN_TYPES.EndFor, + and: TOKEN_TYPES.And, + or: TOKEN_TYPES.Or, + not: TOKEN_TYPES.Not, + 'not in': TOKEN_TYPES.NotIn, + true: TOKEN_TYPES.BooleanLiteral, + false: TOKEN_TYPES.BooleanLiteral, +}); +TOKEN_TYPES.OpenStatement, + TOKEN_TYPES.CloseStatement, + TOKEN_TYPES.OpenExpression, + TOKEN_TYPES.CloseExpression, + TOKEN_TYPES.OpenParen, + TOKEN_TYPES.CloseParen, + TOKEN_TYPES.OpenCurlyBracket, + TOKEN_TYPES.CloseCurlyBracket, + TOKEN_TYPES.OpenSquareBracket, + TOKEN_TYPES.CloseSquareBracket, + TOKEN_TYPES.Comma, + TOKEN_TYPES.Dot, + TOKEN_TYPES.Colon, + TOKEN_TYPES.Pipe, + TOKEN_TYPES.ComparisonBinaryOperator, + TOKEN_TYPES.ComparisonBinaryOperator, + TOKEN_TYPES.ComparisonBinaryOperator, + TOKEN_TYPES.ComparisonBinaryOperator, + TOKEN_TYPES.ComparisonBinaryOperator, + TOKEN_TYPES.ComparisonBinaryOperator, + TOKEN_TYPES.AdditiveBinaryOperator, + TOKEN_TYPES.AdditiveBinaryOperator, + TOKEN_TYPES.MultiplicativeBinaryOperator, + TOKEN_TYPES.MultiplicativeBinaryOperator, + TOKEN_TYPES.MultiplicativeBinaryOperator, + TOKEN_TYPES.Equals; +const BYTES_TO_UNICODE = (() => { + const t = [ + ...Array.from({ length: 94 }, (u, n) => n + 33), + ...Array.from({ length: 12 }, (u, n) => n + 161), + ...Array.from({ length: 82 }, (u, n) => n + 174), + ], + e = t.slice(); + let o = 0; + for (let u = 0; u < 256; ++u) t.includes(u) || (t.push(u), e.push(256 + o), (o += 1)); + const i = e.map((u) => String.fromCharCode(u)); + return Object.fromEntries(t.map((u, n) => [u, i[n]])); +})(); +reverseDictionary(BYTES_TO_UNICODE); +const WHISPER_LANGUAGES = [ + ['en', 'english'], + ['zh', 'chinese'], + ['de', 'german'], + ['es', 'spanish'], + ['ru', 'russian'], + ['ko', 'korean'], + ['fr', 'french'], + ['ja', 'japanese'], + ['pt', 'portuguese'], + ['tr', 'turkish'], + ['pl', 'polish'], + ['ca', 'catalan'], + ['nl', 'dutch'], + ['ar', 'arabic'], + ['sv', 'swedish'], + ['it', 'italian'], + ['id', 'indonesian'], + ['hi', 'hindi'], + ['fi', 'finnish'], + ['vi', 'vietnamese'], + ['he', 'hebrew'], + ['uk', 'ukrainian'], + ['el', 'greek'], + ['ms', 'malay'], + ['cs', 'czech'], + ['ro', 'romanian'], + ['da', 'danish'], + ['hu', 'hungarian'], + ['ta', 'tamil'], + ['no', 'norwegian'], + ['th', 'thai'], + ['ur', 'urdu'], + ['hr', 'croatian'], + ['bg', 'bulgarian'], + ['lt', 'lithuanian'], + ['la', 'latin'], + ['mi', 'maori'], + ['ml', 'malayalam'], + ['cy', 'welsh'], + ['sk', 'slovak'], + ['te', 'telugu'], + ['fa', 'persian'], + ['lv', 'latvian'], + ['bn', 'bengali'], + ['sr', 'serbian'], + ['az', 'azerbaijani'], + ['sl', 'slovenian'], + ['kn', 'kannada'], + ['et', 'estonian'], + ['mk', 'macedonian'], + ['br', 'breton'], + ['eu', 'basque'], + ['is', 'icelandic'], + ['hy', 'armenian'], + ['ne', 'nepali'], + ['mn', 'mongolian'], + ['bs', 'bosnian'], + ['kk', 'kazakh'], + ['sq', 'albanian'], + ['sw', 'swahili'], + ['gl', 'galician'], + ['mr', 'marathi'], + ['pa', 'punjabi'], + ['si', 'sinhala'], + ['km', 'khmer'], + ['sn', 'shona'], + ['yo', 'yoruba'], + ['so', 'somali'], + ['af', 'afrikaans'], + ['oc', 'occitan'], + ['ka', 'georgian'], + ['be', 'belarusian'], + ['tg', 'tajik'], + ['sd', 'sindhi'], + ['gu', 'gujarati'], + ['am', 'amharic'], + ['yi', 'yiddish'], + ['lo', 'lao'], + ['uz', 'uzbek'], + ['fo', 'faroese'], + ['ht', 'haitian creole'], + ['ps', 'pashto'], + ['tk', 'turkmen'], + ['nn', 'nynorsk'], + ['mt', 'maltese'], + ['sa', 'sanskrit'], + ['lb', 'luxembourgish'], + ['my', 'myanmar'], + ['bo', 'tibetan'], + ['tl', 'tagalog'], + ['mg', 'malagasy'], + ['as', 'assamese'], + ['tt', 'tatar'], + ['haw', 'hawaiian'], + ['ln', 'lingala'], + ['ha', 'hausa'], + ['ba', 'bashkir'], + ['jw', 'javanese'], + ['su', 'sundanese'], +]; +new Map(WHISPER_LANGUAGES); +async function loadConfig(t, e) { + return await getModelJSON(t, 'config.json', !0, e); +} +class PretrainedConfig { + constructor(e) { + (this.model_type = null), (this.is_encoder_decoder = !1), Object.assign(this, e); + } + static async from_pretrained( + e, + { + progress_callback: o = null, + config: i = null, + cache_dir: u = null, + local_files_only: n = !1, + revision: s = 'main', + } = {} + ) { + let d = + i ?? + (await loadConfig(e, { progress_callback: o, config: i, cache_dir: u, local_files_only: n, revision: s })); + return new this(d); + } +} +class AutoConfig { + static async from_pretrained(...e) { + return PretrainedConfig.from_pretrained(...e); + } +} +class LogitsProcessorList extends Callable { + constructor() { + super(), (this.processors = []); + } + push(e) { + this.processors.push(e); + } + extend(e) { + this.processors.push(...e); + } + _call(e, o) { + for (let i of o) this.processors.forEach((u) => u(e, i)); + } + [Symbol.iterator]() { + return this.processors.values(); + } +} +class LogitsProcessor extends Callable { + _call(e, o) { + throw Error('`_call` should be implemented in a subclass'); + } +} +class ForceTokensLogitsProcessor extends LogitsProcessor { + constructor(e) { + super(), (this.force_token_map = Object.fromEntries(e ?? [])); + } + _call(e, o) { + let i = this.force_token_map[e.length]; + return exists(i) && (o.data.fill(-1 / 0), (o.data[i] = 0)), o; + } +} +class ForcedBOSTokenLogitsProcessor extends LogitsProcessor { + constructor(e) { + super(), (this.bos_token_id = e); + } + _call(e, o) { + return e.length === 1 && (o.data.fill(-1 / 0), (o.data[this.bos_token_id] = 0)), o; + } +} +class ForcedEOSTokenLogitsProcessor extends LogitsProcessor { + constructor(e, o) { + super(), (this.max_length = e), (this.forced_eos_token_id = o); + } + _call(e, o) {} +} +class SuppressTokensAtBeginLogitsProcessor extends LogitsProcessor { + constructor(e, o) { + super(), (this.begin_suppress_tokens = e), (this.begin_index = o); + } + _call(e, o) { + if (e.length === this.begin_index) for (let i of this.begin_suppress_tokens) o.data[i] = -1 / 0; + return o; + } +} +class WhisperTimeStampLogitsProcessor extends LogitsProcessor { + constructor(e) { + super(), + (this.eos_token_id = e.eos_token_id), + (this.no_timestamps_token_id = e.no_timestamps_token_id), + (this.timestamp_begin = this.no_timestamps_token_id + 1), + (this.begin_index = (e.forced_decoder_ids || []).length + 2), + e.forced_decoder_ids.slice(-1)[0][1] === this.no_timestamps_token_id && (this.begin_index -= 1), + (this.max_initial_timestamp_index = e.max_initial_timestamp_index); + } + _call(e, o) { + const i = o.data; + if (((i[this.no_timestamps_token_id] = -1 / 0), e.length === this.begin_index - 1)) + return i.fill(-1 / 0), (i[this.timestamp_begin] = 0), o; + const u = e.slice(this.begin_index), + n = u.length >= 1 && u[u.length - 1] >= this.timestamp_begin, + s = u.length < 2 || u[u.length - 2] >= this.timestamp_begin; + if ( + (n && (s ? i.subarray(this.timestamp_begin).fill(-1 / 0) : i.subarray(0, this.eos_token_id).fill(-1 / 0)), + e.length === this.begin_index && this.max_initial_timestamp_index !== null) + ) { + const a = this.timestamp_begin + this.max_initial_timestamp_index; + i.subarray(a + 1).fill(-1 / 0); + } + const d = log_softmax(i), + f = Math.log( + d + .subarray(this.timestamp_begin) + .map(Math.exp) + .reduce((a, l) => a + l) + ), + r = max(d.subarray(0, this.timestamp_begin))[0]; + return f > r && i.subarray(0, this.timestamp_begin).fill(-1 / 0), o; + } +} +class NoRepeatNGramLogitsProcessor extends LogitsProcessor { + constructor(e) { + super(), (this.no_repeat_ngram_size = e); + } + getNgrams(e) { + const o = e.length, + i = []; + for (let n = 0; n < o + 1 - this.no_repeat_ngram_size; ++n) { + const s = []; + for (let d = 0; d < this.no_repeat_ngram_size; ++d) s.push(e[n + d]); + i.push(s); + } + const u = new Map(); + for (const n of i) { + const s = n.slice(0, n.length - 1), + d = JSON.stringify(s), + f = u.get(d) ?? []; + f.push(n[n.length - 1]), u.set(d, f); + } + return u; + } + getGeneratedNgrams(e, o) { + const i = o.slice(o.length + 1 - this.no_repeat_ngram_size, o.length); + return e.get(JSON.stringify(i)) ?? []; + } + calcBannedNgramTokens(e) { + const o = []; + if (e.length + 1 < this.no_repeat_ngram_size) return o; + { + const i = this.getNgrams(e); + return this.getGeneratedNgrams(i, e); + } + } + _call(e, o) { + const i = this.calcBannedNgramTokens(e); + for (const u of i) o.data[u] = -1 / 0; + return o; + } +} +class RepetitionPenaltyLogitsProcessor extends LogitsProcessor { + constructor(e) { + super(), (this.penalty = e); + } + _call(e, o) { + for (const i of e) o.data[i] < 0 ? (o.data[i] *= this.penalty) : (o.data[i] /= this.penalty); + return o; + } +} +class MinLengthLogitsProcessor extends LogitsProcessor { + constructor(e, o) { + super(), (this.min_length = e), (this.eos_token_id = Array.isArray(o) ? o : [o]); + } + _call(e, o) { + if (e.length < this.min_length) for (const i of this.eos_token_id) o.data[i] = -1 / 0; + return o; + } +} +class MinNewTokensLengthLogitsProcessor extends LogitsProcessor { + constructor(e, o, i) { + super(), + (this.prompt_length_to_skip = e), + (this.min_new_tokens = o), + (this.eos_token_id = Array.isArray(i) ? i : [i]); + } + _call(e, o) { + if (e.length - this.prompt_length_to_skip < this.min_new_tokens) + for (const u of this.eos_token_id) o.data[u] = -1 / 0; + return o; + } +} +class NoBadWordsLogitsProcessor extends LogitsProcessor { + constructor(e, o) { + super(), (this.bad_words_ids = e), (this.eos_token_id = Array.isArray(o) ? o : [o]); + } + _call(e, o) { + for (const i of this.bad_words_ids) { + let u = !0; + for (let n = 1; n <= i.length - 1 && i.length < e.length; ++n) + if (i.at(-n - 1) !== e.at(-n)) { + u = !1; + break; + } + u && (o.data[i.at(-1)] = -1 / 0); + } + return o; + } +} +const GenerationConfig = class { + constructor(t = {}) { + (this.max_length = t.max_length ?? 20), + (this.max_new_tokens = t.max_new_tokens ?? null), + (this.min_length = t.min_length ?? 0), + (this.min_new_tokens = t.min_new_tokens ?? null), + (this.early_stopping = t.early_stopping ?? !1), + (this.max_time = t.max_time ?? null), + (this.do_sample = t.do_sample ?? !1), + (this.num_beams = t.num_beams ?? 1), + (this.num_beam_groups = t.num_beam_groups ?? 1), + (this.penalty_alpha = t.penalty_alpha ?? null), + (this.use_cache = t.use_cache ?? !0), + (this.temperature = t.temperature ?? 1), + (this.top_k = t.top_k ?? 50), + (this.top_p = t.top_p ?? 1), + (this.typical_p = t.typical_p ?? 1), + (this.epsilon_cutoff = t.epsilon_cutoff ?? 0), + (this.eta_cutoff = t.eta_cutoff ?? 0), + (this.diversity_penalty = t.diversity_penalty ?? 0), + (this.repetition_penalty = t.repetition_penalty ?? 1), + (this.encoder_repetition_penalty = t.encoder_repetition_penalty ?? 1), + (this.length_penalty = t.length_penalty ?? 1), + (this.no_repeat_ngram_size = t.no_repeat_ngram_size ?? 0), + (this.bad_words_ids = t.bad_words_ids ?? null), + (this.force_words_ids = t.force_words_ids ?? null), + (this.renormalize_logits = t.renormalize_logits ?? !1), + (this.constraints = t.constraints ?? null), + (this.forced_bos_token_id = t.forced_bos_token_id ?? null), + (this.forced_eos_token_id = t.forced_eos_token_id ?? null), + (this.remove_invalid_values = t.remove_invalid_values ?? !1), + (this.exponential_decay_length_penalty = t.exponential_decay_length_penalty ?? null), + (this.suppress_tokens = t.suppress_tokens ?? null), + (this.begin_suppress_tokens = t.begin_suppress_tokens ?? null), + (this.forced_decoder_ids = t.forced_decoder_ids ?? null), + (this.num_return_sequences = t.num_return_sequences ?? 1), + (this.output_attentions = t.output_attentions ?? !1), + (this.output_hidden_states = t.output_hidden_states ?? !1), + (this.output_scores = t.output_scores ?? !1), + (this.return_dict_in_generate = t.return_dict_in_generate ?? !1), + (this.pad_token_id = t.pad_token_id ?? null), + (this.bos_token_id = t.bos_token_id ?? null), + (this.eos_token_id = t.eos_token_id ?? null), + (this.encoder_no_repeat_ngram_size = t.encoder_no_repeat_ngram_size ?? 0), + (this.decoder_start_token_id = t.decoder_start_token_id ?? null), + (this.generation_kwargs = t.generation_kwargs ?? {}); + } +}; +class Sampler extends Callable { + constructor(e) { + super(), (this.generation_config = e); + } + _call(e, o = -1) { + return this.sample(e, o); + } + sample(e, o) { + throw Error('sample should be implemented in subclasses.'); + } + getLogits(e, o) { + let i = e.dims.at(-1), + u = e.data; + if (o === -1) u = u.slice(-i); + else { + let n = o * i; + u = u.slice(n, n + i); + } + return this.generation_config.temperature > 0 && (u = u.map((n) => n / this.generation_config.temperature)), u; + } + randomSelect(e) { + let o = e.reduce((u, n) => u + n, 0), + i = Math.random() * o; + for (let u = 0; u < e.length; ++u) if (((i -= e[u]), i <= 0)) return u; + return 0; + } + static getSampler(e) { + if (e.do_sample) return new MultinomialSampler(e); + if (e.num_beams > 1) return new BeamSearchSampler(e); + if (e.num_return_sequences > 1) + throw Error(`num_return_sequences has to be 1 when doing greedy search, but is ${e.num_return_sequences}.`); + return new GreedySampler(e); + } +} +class GreedySampler extends Sampler { + sample(e, o = -1) { + let i = this.getLogits(e, o); + return [[max(i)[1], 0]]; + } +} +class MultinomialSampler extends Sampler { + sample(e, o = -1) { + let i = e.dims.at(-1); + this.generation_config.top_k > 0 && (i = Math.min(this.generation_config.top_k, i)); + const u = this.getLogits(e, o), + n = getTopItems(u, i), + s = softmax(n.map((d) => d[1])); + return Array.from({ length: this.generation_config.num_beams }, () => { + const d = this.randomSelect(s); + return [n[d][0], Math.log(s[d])]; + }); + } +} +class BeamSearchSampler extends Sampler { + sample(e, o = -1) { + let i = e.dims.at(-1); + this.generation_config.top_k > 0 && (i = Math.min(this.generation_config.top_k, i)); + const u = this.getLogits(e, o), + n = getTopItems(u, i), + s = softmax(n.map((d) => d[1])); + return Array.from({ length: this.generation_config.num_beams }, (d, f) => [n[f][0], Math.log(s[f])]); + } +} +const MODEL_TYPES = { EncoderOnly: 0, EncoderDecoder: 1, Seq2Seq: 2, Vision2Seq: 3, DecoderOnly: 4, MaskGeneration: 5 }, + MODEL_TYPE_MAPPING = new Map(), + MODEL_NAME_TO_CLASS_MAPPING = new Map(), + MODEL_CLASS_TO_NAME_MAPPING = new Map(); +async function constructSession(t, e, o) { + const i = `onnx/${e}${o.quantized ? '_quantized' : ''}.onnx`, + u = await getModelFile(t, i, !0, o), + n = o.session_options ?? {}; + if (n.externalData !== void 0) + for (let s = 0; s < n.externalData.length; s++) { + const d = n.externalData[s]; + if (typeof d.data == 'string') { + const f = await getModelFile(t, d.data, !0, o); + d.data = f; + } + } + return await createInferenceSession(u, n); +} +function validateInputs(t, e) { + const o = Object.create(null), + i = []; + for (const s of t.inputNames) { + const d = e[s]; + if (!(d instanceof Tensor)) { + i.push(s); + continue; + } + o[s] = isONNXProxy() ? d.clone() : d; + } + if (i.length > 0) + throw new Error(`An error occurred during model execution: "Missing the following inputs: ${i.join(', ')}.`); + const u = Object.keys(e).length, + n = t.inputNames.length; + if (u > n) { + let s = Object.keys(e).filter((d) => !t.inputNames.includes(d)); + console.warn( + `WARNING: Too many inputs were provided (${u} > ${n}). The following inputs will be ignored: "${s.join( + ', ' + )}".` + ); + } + return o; +} +async function sessionRun(t, e) { + const o = validateInputs(t, e); + try { + const i = Object.fromEntries(Object.entries(o).map(([n, s]) => [n, s.ort_tensor])); + let u = await t.run(i); + u = replaceTensors(u); + for (const [n, s] of Object.entries(o)) n.startsWith('past_key_values') && s.dispose(); + return u; + } catch (i) { + throw ( + (console.error(`An error occurred during model execution: "${i}".`), + console.error('Inputs given to model:', o), + i) + ); + } +} +function replaceTensors(t) { + for (let e in t) isONNXTensor(t[e]) ? (t[e] = new Tensor(t[e])) : typeof t[e] == 'object' && replaceTensors(t[e]); + return t; +} +function toI64Tensor(t) { + if (t instanceof Tensor) return t; + if (t.length === 0) throw Error('items must be non-empty'); + if (Array.isArray(t[0])) { + if (t.some((e) => e.length !== t[0].length)) + throw Error( + "Unable to create tensor, you should probably activate truncation and/or padding with 'padding=True' and/or 'truncation=True' to have batched tensors with the same length." + ); + return new Tensor('int64', BigInt64Array.from(t.flat().map((e) => BigInt(e))), [t.length, t[0].length]); + } else return new Tensor('int64', BigInt64Array.from(t.map((e) => BigInt(e))), [1, t.length]); +} +function prepareAttentionMask(t, e) { + let o = t.config.pad_token_id ?? null, + i = t.config.eos_token_id ?? null; + isIntegralNumber(i) && (i = [i]); + let u = e.indexOf(o) !== -1, + n = i === null || !i.includes(o); + if (u && n) { + let s = BigInt64Array.from(e.data.map((d) => d != o)); + return new Tensor('int64', s, e.dims); + } else return ones_like(e); +} +function preparePositionIds(t, e, o) { + if (!t.inputNames.includes('position_ids')) return; + const i = new BigInt64Array(e.attention_mask.data.length); + for (let u = 0; u < e.attention_mask.dims[0]; ++u) { + let n = u * e.attention_mask.dims[1], + s = BigInt(0); + for (let d = 0; d < e.attention_mask.dims[1]; ++d) { + const f = n + d; + e.attention_mask.data[f] === 0n ? (i[f] = BigInt(1)) : ((i[f] = s), (s += e.attention_mask.data[f])); + } + } + (e.position_ids = new Tensor('int64', i, e.attention_mask.dims)), + o && (e.position_ids = e.position_ids.slice(null, -1).unsqueeze_(-1)); +} +function boolTensor(t) { + return new Tensor('bool', [t], [1]); +} +async function seq2seqForward(t, e) { + let { encoder_outputs: o, past_key_values: i } = e; + o || (o = (await encoderForward(t, e)).last_hidden_state); + let u = { input_ids: e.decoder_input_ids, encoder_hidden_states: o }; + const n = !!i; + t.decoder_merged_session.inputNames.includes('use_cache_branch') && (u.use_cache_branch = boolTensor(n)), + t.decoder_merged_session.inputNames.includes('encoder_attention_mask') && + (u.encoder_attention_mask = e.attention_mask), + preparePositionIds(t.decoder_merged_session, u, n), + t.addPastKeyValues(u, i); + const s = await sessionRun(t.decoder_merged_session, u); + let d = s.logits; + i = t.getPastKeyValues(s, i); + const f = t.getAttentions(s); + return new Seq2SeqLMOutput({ logits: d, past_key_values: i, encoder_outputs: o, ...f }); +} +function seq2seqStartBeams(t, e, o, i) { + let u = [], + n = 0; + const s = t.requires_attention_mask ?? !0; + let d = o.decoder_input_ids ?? o.decoder_start_token_id ?? o.bos_token_id ?? o.eos_token_id; + d instanceof Tensor ? (d = d.tolist().flat()) : Array.isArray(d) || (d = [d]); + for (let f of e) { + f.dims = [1, ...f.dims]; + let r = { + inputs: f, + encoder_outputs: null, + prev_model_outputs: null, + output_token_ids: d, + done: !1, + score: 0, + id: n++, + }; + s && (r.attention_mask = prepareAttentionMask(t, f)), u.push(r); + } + return u; +} +async function seq2seqRunBeam(t, e) { + const o = t.main_input_name; + let i = e.output_token_ids; + e.prev_model_outputs && (i = i.slice(-1)); + let u = { + [o]: e.inputs, + decoder_input_ids: toI64Tensor(i), + encoder_outputs: e.encoder_outputs, + past_key_values: e.prev_model_outputs?.past_key_values, + }; + e.attention_mask && (u.attention_mask = e.attention_mask); + let n = await t.forward(u); + return (e.prev_model_outputs = n), (e.encoder_outputs = n.encoder_outputs), n; +} +function seq2seqUpdatebeam(t, e) { + t.output_token_ids = [...t.output_token_ids, e]; +} +async function encoderForward(t, e) { + const o = Object.create(null); + for (const i of t.session.inputNames) o[i] = e[i]; + return ( + t.session.inputNames.includes('token_type_ids') && + !o.token_type_ids && + (o.token_type_ids = new Tensor('int64', new BigInt64Array(o.input_ids.data.length), o.input_ids.dims)), + await sessionRun(t.session, o) + ); +} +async function decoderForward(t, e) { + let { input_ids: o, past_key_values: i, attention_mask: u } = e, + n = { input_ids: o, attention_mask: u ?? prepareAttentionMask(t, o) }; + const s = !!i; + t.session.inputNames.includes('use_cache_branch') && (n.use_cache_branch = boolTensor(s)), + preparePositionIds(t.session, n, s), + t.addPastKeyValues(n, i); + let d = await sessionRun(t.session, n), + f = d.logits; + return (i = t.getPastKeyValues(d, i)), { logits: f, past_key_values: i }; +} +function decoderStartBeams(t, e, o, i, u) { + let n = [], + s = 0; + for (let d of e) { + let f = d.tolist().map(Number); + d.dims = [1, ...d.dims]; + let r; + u ? ((r = u[s]), (r.dims = [1, ...r.dims])) : (r = prepareAttentionMask(t, d)); + let a = { + input: d, + model_input_ids: d, + attention_mask: r, + prev_model_outputs: null, + output_token_ids: f, + num_output_tokens: i, + done: !1, + score: 0, + id: s++, + }; + n.push(a); + } + return n; +} +async function decoderRunBeam(t, e) { + let o = new BigInt64Array(e.output_token_ids.length).fill(1n), + i = { + input_ids: e.model_input_ids, + attention_mask: new Tensor('int64', o, [1, o.length]), + past_key_values: e.prev_model_outputs?.past_key_values, + }, + u = await t.forward(i); + return (e.prev_model_outputs = u), u; +} +function decoderUpdatebeam(t, e) { + (t.output_token_ids = [...t.output_token_ids, e]), (t.model_input_ids = new Tensor('int64', [BigInt(e)], [1, 1])); +} +class PreTrainedModel extends Callable { + main_input_name = 'input_ids'; + constructor(e, o) { + super(), (this.config = e), (this.session = o); + const i = MODEL_CLASS_TO_NAME_MAPPING.get(this.constructor), + u = MODEL_TYPE_MAPPING.get(i); + (this.can_generate = !1), + (this._runBeam = null), + (this._getStartBeams = null), + (this._updateBeam = null), + (this._forward = null), + u === MODEL_TYPES.DecoderOnly + ? ((this.can_generate = !0), + (this._runBeam = decoderRunBeam), + (this._getStartBeams = decoderStartBeams), + (this._updateBeam = decoderUpdatebeam), + (this._forward = decoderForward)) + : u === MODEL_TYPES.Seq2Seq || u === MODEL_TYPES.Vision2Seq + ? ((this.can_generate = !0), + (this._runBeam = seq2seqRunBeam), + (this._getStartBeams = seq2seqStartBeams), + (this._updateBeam = seq2seqUpdatebeam), + (this._forward = seq2seqForward)) + : u === MODEL_TYPES.EncoderDecoder + ? (this._forward = encoderForward) + : (this._forward = encoderForward); + } + async dispose() { + const e = []; + for (let o of Object.keys(this)) { + let i = this[o]; + i?.handler?.dispose !== void 0 && e.push(i.handler.dispose()); + } + return await Promise.all(e); + } + static async from_pretrained( + e, + { + quantized: o = !0, + progress_callback: i = null, + config: u = null, + cache_dir: n = null, + local_files_only: s = !1, + revision: d = 'main', + model_file_name: f = null, + session_options: r = {}, + } = {} + ) { + let a = { + quantized: o, + progress_callback: i, + config: u, + cache_dir: n, + local_files_only: s, + revision: d, + model_file_name: f, + session_options: r, + }; + const l = MODEL_CLASS_TO_NAME_MAPPING.get(this), + p = MODEL_TYPE_MAPPING.get(l); + let m; + return ( + p === MODEL_TYPES.DecoderOnly + ? (m = await Promise.all([ + AutoConfig.from_pretrained(e, a), + constructSession(e, a.model_file_name ?? 'decoder_model_merged', a), + getModelJSON(e, 'generation_config.json', !1, a), + ])) + : p === MODEL_TYPES.Seq2Seq || p === MODEL_TYPES.Vision2Seq + ? (m = await Promise.all([ + AutoConfig.from_pretrained(e, a), + constructSession(e, 'encoder_model', a), + constructSession(e, 'decoder_model_merged', a), + getModelJSON(e, 'generation_config.json', !1, a), + ])) + : p === MODEL_TYPES.MaskGeneration + ? (m = await Promise.all([ + AutoConfig.from_pretrained(e, a), + constructSession(e, 'vision_encoder', a), + constructSession(e, 'prompt_encoder_mask_decoder', a), + ])) + : p === MODEL_TYPES.EncoderDecoder + ? (m = await Promise.all([ + AutoConfig.from_pretrained(e, a), + constructSession(e, 'encoder_model', a), + constructSession(e, 'decoder_model_merged', a), + ])) + : (p !== MODEL_TYPES.EncoderOnly && + console.warn( + `Model type for '${ + l ?? u?.model_type + }' not found, assuming encoder-only architecture. Please report this at https://github.com/xenova/transformers.js/issues/new/choose.` + ), + (m = await Promise.all([ + AutoConfig.from_pretrained(e, a), + constructSession(e, a.model_file_name ?? 'model', a), + ]))), + new this(...m) + ); + } + async _call(e) { + return await this.forward(e); + } + async forward(e) { + return await this._forward(this, e); + } + _get_logits_processor(e, o, i = null) { + const u = new LogitsProcessorList(); + if ( + (e.repetition_penalty !== null && + e.repetition_penalty !== 1 && + u.push(new RepetitionPenaltyLogitsProcessor(e.repetition_penalty)), + e.no_repeat_ngram_size !== null && + e.no_repeat_ngram_size > 0 && + u.push(new NoRepeatNGramLogitsProcessor(e.no_repeat_ngram_size)), + e.bad_words_ids !== null && u.push(new NoBadWordsLogitsProcessor(e.bad_words_ids, e.eos_token_id)), + e.min_length !== null && + e.eos_token_id !== null && + e.min_length > 0 && + u.push(new MinLengthLogitsProcessor(e.min_length, e.eos_token_id)), + e.min_new_tokens !== null && + e.eos_token_id !== null && + e.min_new_tokens > 0 && + u.push(new MinNewTokensLengthLogitsProcessor(o, e.min_new_tokens, e.eos_token_id)), + e.forced_bos_token_id !== null && u.push(new ForcedBOSTokenLogitsProcessor(e.forced_bos_token_id)), + e.forced_eos_token_id !== null && + u.push(new ForcedEOSTokenLogitsProcessor(e.max_length, e.forced_eos_token_id)), + e.begin_suppress_tokens !== null) + ) { + let n = o > 1 || e.forced_bos_token_id === null ? o : o + 1; + e.forced_decoder_ids !== null && (n += e.forced_decoder_ids[e.forced_decoder_ids.length - 1][0]), + u.push(new SuppressTokensAtBeginLogitsProcessor(e.begin_suppress_tokens, n)); + } + return ( + e.forced_decoder_ids !== null && u.push(new ForceTokensLogitsProcessor(e.forced_decoder_ids)), + i !== null && u.extend(i), + u + ); + } + _get_generation_config(e) { + let o = new GenerationConfig(this.config); + return ( + 'generation_config' in this && Object.assign(o, this.generation_config), + e !== null && Object.assign(o, e), + o + ); + } + async generate(e, o = null, i = null, { inputs_attention_mask: u = null } = {}) { + if (!this.can_generate) { + let v = `The current model class (${MODEL_CLASS_TO_NAME_MAPPING.get( + this.constructor + )}) is not compatible with \`.generate()\`, as it doesn't have a language model head.`; + const S = this.config.model_type, + E = + MODEL_WITH_LM_HEAD_MAPPING_NAMES.get(S) ?? + MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES.get(S) ?? + MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES.get(S) ?? + MODEL_FOR_VISION_2_SEQ_MAPPING_NAMES.get(S); + throw (E && (v += ` Please use the following class instead: '${E[0]}'`), Error(v)); + } + if (!(e instanceof Tensor) && !isTypedArray(e) && !Array.isArray(e)) + throw Error(`\`inputs\` must be a Tensor, TypedArray, or Array, but is "${e.constructor.name}".`); + let n; + if (this.config.is_encoder_decoder) n = 0; + else if (((n = e instanceof Tensor ? e.dims.at(-1) : e.length), n === 0)) + throw Error('Must supply a non-empty array of input token ids.'); + (o = this._get_generation_config(o)), + (i = i ?? new LogitsProcessorList()), + (i = this._get_logits_processor(o, n, i)); + let s = o.eos_token_id; + s !== null && !Array.isArray(s) && (s = [s]); + let d = 1; + const f = d + (o.max_new_tokens ?? 1 / 0), + r = Number.isInteger(o.max_length) && (o.max_new_tokens ?? null) === null; + let a = Sampler.getSampler(o), + l = this.getStartBeams(e, o, d, u); + for (; l.some((T) => !T.done) && d < f; ) { + let T = []; + for (let v of l) { + if (v.done) { + T.push(v); + continue; + } + if (r && v.output_token_ids.length >= o.max_length) { + (v.done = !0), T.push(v); + continue; + } + let S = await this.runBeam(v); + o.output_attentions && this.addAttentionsToBeam(v, S), o.output_scores; + let E = S.logits.slice(null, -1, null); + i(v.output_token_ids, E); + let A = a(E); + for (let [F, B] of A) { + let J = { ...v }; + this.updateBeam(J, F), (J.score += B), s && s.includes(F) && (J.done = !0), T.push(J); + } + } + ++d, + (T = this.groupBeams(T).map((v) => v.sort((S, E) => E.score - S.score).slice(0, o.num_beams))), + (l = T.flat()), + o.callback_function && o.callback_function(l); + } + const p = this.groupBeams(l), + m = (T) => + p + .map((v) => + o.num_return_sequences > 1 ? v.slice(0, o.num_return_sequences).map((S) => S[T]) : [v[0][T]] + ) + .flat(), + y = m('output_token_ids'); + if (o.return_dict_in_generate) { + const T = m('decoder_attentions'), + v = m('cross_attentions'); + return { sequences: y, decoder_attentions: T, cross_attentions: v }; + } else return y; + } + addAttentionsToBeam(e, o) { + if (this.config.is_encoder_decoder) { + if (!o.cross_attentions || o.cross_attentions.length === 0) + throw Error( + '`output_attentions` is true, but the model did not produce cross-attentions. This is most likely because the model was not exported with `output_attentions=True`.' + ); + e.cross_attentions || (e.cross_attentions = []), e.cross_attentions.push(o.cross_attentions); + } + if (!o.decoder_attentions || o.decoder_attentions.length === 0) + throw Error( + '`output_attentions` is true, but the model did not produce decoder-attentions. This is most likely because the model was not exported with `output_attentions=True`.' + ); + e.decoder_attentions || (e.decoder_attentions = []), e.decoder_attentions.push(o.decoder_attentions); + } + groupBeams(e) { + const o = Object.create(null); + for (const i of e) o[i.id] === void 0 ? (o[i.id] = [i]) : o[i.id].push(i); + return Object.values(o); + } + getPastKeyValues(e, o) { + const i = Object.create(null); + for (const u in e) + if (u.startsWith('present')) { + let n = u.replace('present', 'past_key_values'); + o && u.includes('encoder') ? (i[n] = o[n]) : (i[n] = e[u]); + } + return i; + } + getAttentions(e) { + const o = Object.create(null); + for (const i of ['cross_attentions', 'decoder_attentions']) { + const u = []; + for (const n in e) + if (n.startsWith(i)) { + const s = n.split('.').pop(); + u[s] = e[n]; + } + o[i] = u; + } + return o; + } + addPastKeyValues(e, o) { + if (o) Object.assign(e, o); + else { + const u = this.config.precision || 'float32', + n = u === 'float16' ? new Uint16Array() : []; + if (this.config.is_encoder_decoder && (this.add_encoder_pkv ?? !0)) { + let s = [1, this.num_encoder_heads, 0, this.encoder_dim_kv], + d = [1, this.num_decoder_heads, 0, this.decoder_dim_kv]; + for (let f = 0; f < this.num_decoder_layers; ++f) + (e[`past_key_values.${f}.encoder.key`] = new Tensor(u, n, s)), + (e[`past_key_values.${f}.encoder.value`] = new Tensor(u, n, s)), + (e[`past_key_values.${f}.decoder.key`] = new Tensor(u, n, d)), + (e[`past_key_values.${f}.decoder.value`] = new Tensor(u, n, d)); + } else if (this.config.model_type === 'falcon') { + let s = [1 * this.num_heads, 0, this.dim_kv]; + for (let d = 0; d < this.num_layers; ++d) + (e[`past_key_values.${d}.key`] = new Tensor(u, n, s)), + (e[`past_key_values.${d}.value`] = new Tensor(u, n, s)); + } else if (this.config.multi_query) { + let s = [1 * this.num_heads, 0, 2 * this.dim_kv]; + for (let d = 0; d < this.num_layers; ++d) e[`past_key_values.${d}.key_value`] = new Tensor(u, n, s); + } else if (this.config.model_type === 'bloom') { + let s = [1 * this.num_heads, this.dim_kv, 0], + d = [1 * this.num_heads, 0, this.dim_kv]; + for (let f = 0; f < this.num_layers; ++f) + (e[`past_key_values.${f}.key`] = new Tensor(u, n, s)), + (e[`past_key_values.${f}.value`] = new Tensor(u, n, d)); + } else { + let s = [1, this.num_heads, 0, this.dim_kv]; + for (let d = 0; d < this.num_layers; ++d) + (e[`past_key_values.${d}.key`] = new Tensor(u, n, s)), + (e[`past_key_values.${d}.value`] = new Tensor(u, n, s)); + } + } + } + getStartBeams(e, o, i, u) { + return this._getStartBeams(this, e, o, i, u); + } + async runBeam(e) { + return await this._runBeam(this, e); + } + updateBeam(e, o) { + return this._updateBeam(e, o); + } +} +class ModelOutput {} +class BertPreTrainedModel extends PreTrainedModel {} +class BertModel extends BertPreTrainedModel {} +class BertForMaskedLM extends BertPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class BertForSequenceClassification extends BertPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class BertForTokenClassification extends BertPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class BertForQuestionAnswering extends BertPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class NomicBertPreTrainedModel extends PreTrainedModel {} +class NomicBertModel extends NomicBertPreTrainedModel {} +class RoFormerPreTrainedModel extends PreTrainedModel {} +class RoFormerModel extends RoFormerPreTrainedModel {} +class RoFormerForMaskedLM extends RoFormerPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class RoFormerForSequenceClassification extends RoFormerPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class RoFormerForTokenClassification extends RoFormerPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class RoFormerForQuestionAnswering extends RoFormerPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class ConvBertPreTrainedModel extends PreTrainedModel {} +class ConvBertModel extends ConvBertPreTrainedModel {} +class ConvBertForMaskedLM extends ConvBertPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class ConvBertForSequenceClassification extends ConvBertPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class ConvBertForTokenClassification extends ConvBertPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class ConvBertForQuestionAnswering extends ConvBertPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class ElectraPreTrainedModel extends PreTrainedModel {} +class ElectraModel extends ElectraPreTrainedModel {} +class ElectraForMaskedLM extends ElectraPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class ElectraForSequenceClassification extends ElectraPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class ElectraForTokenClassification extends ElectraPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class ElectraForQuestionAnswering extends ElectraPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class CamembertPreTrainedModel extends PreTrainedModel {} +class CamembertModel extends CamembertPreTrainedModel {} +class CamembertForMaskedLM extends CamembertPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class CamembertForSequenceClassification extends CamembertPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class CamembertForTokenClassification extends CamembertPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class CamembertForQuestionAnswering extends CamembertPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class DebertaPreTrainedModel extends PreTrainedModel {} +class DebertaModel extends DebertaPreTrainedModel {} +class DebertaForMaskedLM extends DebertaPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class DebertaForSequenceClassification extends DebertaPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class DebertaForTokenClassification extends DebertaPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class DebertaForQuestionAnswering extends DebertaPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class DebertaV2PreTrainedModel extends PreTrainedModel {} +class DebertaV2Model extends DebertaV2PreTrainedModel {} +class DebertaV2ForMaskedLM extends DebertaV2PreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class DebertaV2ForSequenceClassification extends DebertaV2PreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class DebertaV2ForTokenClassification extends DebertaV2PreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class DebertaV2ForQuestionAnswering extends DebertaV2PreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class DistilBertPreTrainedModel extends PreTrainedModel {} +class DistilBertModel extends DistilBertPreTrainedModel {} +class DistilBertForSequenceClassification extends DistilBertPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class DistilBertForTokenClassification extends DistilBertPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class DistilBertForQuestionAnswering extends DistilBertPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class DistilBertForMaskedLM extends DistilBertPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class EsmPreTrainedModel extends PreTrainedModel {} +class EsmModel extends EsmPreTrainedModel {} +class EsmForMaskedLM extends EsmPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class EsmForSequenceClassification extends EsmPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class EsmForTokenClassification extends EsmPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class MobileBertPreTrainedModel extends PreTrainedModel {} +class MobileBertModel extends MobileBertPreTrainedModel {} +class MobileBertForMaskedLM extends MobileBertPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class MobileBertForSequenceClassification extends MobileBertPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class MobileBertForQuestionAnswering extends MobileBertPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class MPNetPreTrainedModel extends PreTrainedModel {} +class MPNetModel extends MPNetPreTrainedModel {} +class MPNetForMaskedLM extends MPNetPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class MPNetForSequenceClassification extends MPNetPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class MPNetForTokenClassification extends MPNetPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class MPNetForQuestionAnswering extends MPNetPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class SqueezeBertPreTrainedModel extends PreTrainedModel {} +class SqueezeBertModel extends SqueezeBertPreTrainedModel {} +class SqueezeBertForMaskedLM extends SqueezeBertPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class SqueezeBertForSequenceClassification extends SqueezeBertPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class SqueezeBertForQuestionAnswering extends SqueezeBertPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class AlbertPreTrainedModel extends PreTrainedModel {} +class AlbertModel extends AlbertPreTrainedModel {} +class AlbertForSequenceClassification extends AlbertPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class AlbertForQuestionAnswering extends AlbertPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class AlbertForMaskedLM extends AlbertPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class T5PreTrainedModel extends PreTrainedModel {} +class T5Model extends T5PreTrainedModel {} +class T5ForConditionalGeneration extends T5PreTrainedModel { + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.num_decoder_layers), + (this.num_decoder_heads = this.config.num_heads), + (this.decoder_dim_kv = this.config.d_kv), + (this.num_encoder_layers = this.config.num_layers), + (this.num_encoder_heads = this.config.num_heads), + (this.encoder_dim_kv = this.config.d_kv); + } +} +class LongT5PreTrainedModel extends PreTrainedModel {} +class LongT5Model extends LongT5PreTrainedModel {} +class LongT5ForConditionalGeneration extends LongT5PreTrainedModel { + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.num_decoder_layers), + (this.num_decoder_heads = this.config.num_heads), + (this.decoder_dim_kv = this.config.d_kv), + (this.num_encoder_layers = this.config.num_layers), + (this.num_encoder_heads = this.config.num_heads), + (this.encoder_dim_kv = this.config.d_kv); + } +} +class MT5PreTrainedModel extends PreTrainedModel {} +class MT5Model extends MT5PreTrainedModel {} +class MT5ForConditionalGeneration extends MT5PreTrainedModel { + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.num_decoder_layers), + (this.num_decoder_heads = this.config.num_heads), + (this.decoder_dim_kv = this.config.d_kv), + (this.num_encoder_layers = this.config.num_layers), + (this.num_encoder_heads = this.config.num_heads), + (this.encoder_dim_kv = this.config.d_kv); + } +} +class BartPretrainedModel extends PreTrainedModel {} +class BartModel extends BartPretrainedModel {} +class BartForConditionalGeneration extends BartPretrainedModel { + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.decoder_layers), + (this.num_decoder_heads = this.config.decoder_attention_heads), + (this.decoder_dim_kv = this.config.d_model / this.num_decoder_heads), + (this.num_encoder_layers = this.config.encoder_layers), + (this.num_encoder_heads = this.config.encoder_attention_heads), + (this.encoder_dim_kv = this.config.d_model / this.num_encoder_heads); + } +} +class BartForSequenceClassification extends BartPretrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class MBartPreTrainedModel extends PreTrainedModel {} +class MBartModel extends MBartPreTrainedModel {} +class MBartForConditionalGeneration extends MBartPreTrainedModel { + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.decoder_layers), + (this.num_decoder_heads = this.config.decoder_attention_heads), + (this.decoder_dim_kv = this.config.d_model / this.num_decoder_heads), + (this.num_encoder_layers = this.config.encoder_layers), + (this.num_encoder_heads = this.config.encoder_attention_heads), + (this.encoder_dim_kv = this.config.d_model / this.num_encoder_heads); + } +} +class MBartForSequenceClassification extends MBartPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class MBartForCausalLM extends MBartPreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.num_decoder_layers = this.config.decoder_layers), + (this.num_decoder_heads = this.config.decoder_attention_heads), + (this.decoder_dim_kv = this.config.d_model / this.num_decoder_heads), + (this.num_encoder_layers = this.config.encoder_layers), + (this.num_encoder_heads = this.config.encoder_attention_heads), + (this.encoder_dim_kv = this.config.d_model / this.num_encoder_heads); + } +} +class BlenderbotPreTrainedModel extends PreTrainedModel {} +class BlenderbotModel extends BlenderbotPreTrainedModel {} +class BlenderbotForConditionalGeneration extends BlenderbotPreTrainedModel { + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.decoder_layers), + (this.num_decoder_heads = this.config.decoder_attention_heads), + (this.decoder_dim_kv = this.config.d_model / this.num_decoder_heads), + (this.num_encoder_layers = this.config.encoder_layers), + (this.num_encoder_heads = this.config.encoder_attention_heads), + (this.encoder_dim_kv = this.config.d_model / this.num_encoder_heads); + } +} +class BlenderbotSmallPreTrainedModel extends PreTrainedModel {} +class BlenderbotSmallModel extends BlenderbotSmallPreTrainedModel {} +class BlenderbotSmallForConditionalGeneration extends BlenderbotSmallPreTrainedModel { + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.decoder_layers), + (this.num_decoder_heads = this.config.decoder_attention_heads), + (this.decoder_dim_kv = this.config.d_model / this.num_decoder_heads), + (this.num_encoder_layers = this.config.encoder_layers), + (this.num_encoder_heads = this.config.encoder_attention_heads), + (this.encoder_dim_kv = this.config.d_model / this.num_encoder_heads); + } +} +class RobertaPreTrainedModel extends PreTrainedModel {} +class RobertaModel extends RobertaPreTrainedModel {} +class RobertaForMaskedLM extends RobertaPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class RobertaForSequenceClassification extends RobertaPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class RobertaForTokenClassification extends RobertaPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class RobertaForQuestionAnswering extends RobertaPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class XLMPreTrainedModel extends PreTrainedModel {} +class XLMModel extends XLMPreTrainedModel {} +class XLMWithLMHeadModel extends XLMPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class XLMForSequenceClassification extends XLMPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class XLMForTokenClassification extends XLMPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class XLMForQuestionAnswering extends XLMPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class XLMRobertaPreTrainedModel extends PreTrainedModel {} +class XLMRobertaModel extends XLMRobertaPreTrainedModel {} +class XLMRobertaForMaskedLM extends XLMRobertaPreTrainedModel { + async _call(e) { + return new MaskedLMOutput(await super._call(e)); + } +} +class XLMRobertaForSequenceClassification extends XLMRobertaPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class XLMRobertaForTokenClassification extends XLMRobertaPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class XLMRobertaForQuestionAnswering extends XLMRobertaPreTrainedModel { + async _call(e) { + return new QuestionAnsweringModelOutput(await super._call(e)); + } +} +class ASTPreTrainedModel extends PreTrainedModel {} +class ASTModel extends ASTPreTrainedModel {} +class ASTForAudioClassification extends ASTPreTrainedModel {} +class WhisperPreTrainedModel extends PreTrainedModel {} +class WhisperModel extends WhisperPreTrainedModel {} +class WhisperForConditionalGeneration extends WhisperPreTrainedModel { + requires_attention_mask = !1; + main_input_name = 'input_features'; + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.decoder_layers), + (this.num_decoder_heads = this.config.decoder_attention_heads), + (this.decoder_dim_kv = this.config.d_model / this.num_decoder_heads), + (this.num_encoder_layers = this.config.encoder_layers), + (this.num_encoder_heads = this.config.encoder_attention_heads), + (this.encoder_dim_kv = this.config.d_model / this.num_encoder_heads); + } + async generate(e, o = null, i = null) { + if ( + ((o = this._get_generation_config(o)), + (o.return_timestamps ??= !1), + o.return_timestamps && (i = [new WhisperTimeStampLogitsProcessor(o)]), + o.return_token_timestamps && + ((o.output_attentions = !0), + (o.return_dict_in_generate = !0), + o.task === 'translate' && + console.warn("Token-level timestamps may not be reliable for task 'translate'."), + !o.alignment_heads)) + ) + throw new Error( + 'Model generation config has no `alignment_heads`, token-level timestamps not available. See https://gist.github.com/hollance/42e32852f24243b748ae6bc1f985b13a on how to add this property to the generation config.' + ); + const u = await super.generate(e, o, i); + return ( + o.return_token_timestamps && + o.alignment_heads && + (u.token_timestamps = this._extract_token_timestamps(u, o.alignment_heads, o.num_frames)), + u + ); + } + _extract_token_timestamps(e, o, i = null, u = 0.02) { + if (!e.cross_attentions) + throw new Error( + 'Model outputs must contain cross attentions to extract timestamps. This is most likely because the model was not exported with `output_attentions=True`.' + ); + let n = this.config.median_filter_width; + n === void 0 && (console.warn('Model config has no `median_filter_width`, using default value of 7.'), (n = 7)); + const s = e.cross_attentions.map((r) => { + let a = Array.from({ length: this.config.decoder_layers }, (v, S) => + cat( + r.map((E) => E[S]), + 2 + ) + ), + l = stack(o.map(([v, S]) => (i ? a[v].slice(null, S, null, [0, i]) : a[v].slice(null, S)))); + l = l.transpose(1, 0, 2, 3); + let [p, m] = std_mean(l, -2, 0, !0), + y = l.clone(); + for (let v = 0; v < y.dims[0]; ++v) { + let S = y[v]; + for (let E = 0; E < S.dims[0]; ++E) { + let A = S[E]; + const F = p[v][E][0], + B = m[v][E][0]; + for (let J = 0; J < A.dims[0]; ++J) { + let Q = A[J]; + for (let re = 0; re < Q.data.length; ++re) + Q.data[re] = (Q.data[re] - B.data[re]) / F.data[re]; + Q.data.set(medianFilter(Q.data, n)); + } + } + } + return mean(y, 1); + }), + d = [e.sequences.length, e.sequences[0].length], + f = new Tensor('float32', new Float32Array(d[0] * d[1]), d); + for (let r = 0; r < d[0]; ++r) { + const a = s[r].neg().squeeze_(0); + let [l, p] = dynamicTimeWarping(a), + m = Array.from({ length: l.length - 1 }, (v, S) => l[S + 1] - l[S]), + y = mergeArrays([1], m).map((v) => !!v), + T = []; + for (let v = 0; v < y.length; ++v) y[v] && T.push(p[v] * u); + f[r].data.set(T, 1); + } + return f; + } +} +class VisionEncoderDecoderModel extends PreTrainedModel { + main_input_name = 'pixel_values'; + constructor(e, o, i, u) { + super(e, o), (this.decoder_merged_session = i), (this.generation_config = u); + const n = this.config.encoder, + s = this.config.decoder, + d = n.model_type; + (MODEL_MAPPING_NAMES_ENCODER_ONLY.get(d) ?? MODEL_MAPPING_NAMES_ENCODER_DECODER.get(d)) || + console.warn( + `Model type for encoder '${d}' not found, assuming encoder-only architecture. Please report this at https://github.com/xenova/transformers.js/issues/new/choose.` + ); + const r = MODEL_WITH_LM_HEAD_MAPPING_NAMES.get(s.model_type); + if (!r) + throw new Error( + `Unable to construct \`VisionEncoderDecoder\` due to unsupported decoder: "${this.config.decoder.model_type}"` + ); + const a = r[1], + l = new a(s, i, u); + (this.add_encoder_pkv = 'num_decoder_layers' in l), + this.add_encoder_pkv + ? ((this.num_decoder_layers = l.num_decoder_layers), + (this.num_decoder_heads = l.num_decoder_heads), + (this.decoder_dim_kv = l.decoder_dim_kv), + (this.num_encoder_layers = l.num_encoder_layers), + (this.num_encoder_heads = l.num_encoder_heads), + (this.encoder_dim_kv = l.encoder_dim_kv)) + : ((this.num_layers = l.num_layers), (this.num_heads = l.num_heads), (this.dim_kv = l.dim_kv)); + } +} +class CLIPPreTrainedModel extends PreTrainedModel {} +class CLIPModel extends CLIPPreTrainedModel {} +class CLIPTextModelWithProjection extends CLIPPreTrainedModel { + static async from_pretrained(e, o = {}) { + return (o.model_file_name ??= 'text_model'), super.from_pretrained(e, o); + } +} +class CLIPVisionModelWithProjection extends CLIPPreTrainedModel { + static async from_pretrained(e, o = {}) { + return (o.model_file_name ??= 'vision_model'), super.from_pretrained(e, o); + } +} +class SiglipPreTrainedModel extends PreTrainedModel {} +class SiglipModel extends SiglipPreTrainedModel {} +class SiglipTextModel extends SiglipPreTrainedModel { + static async from_pretrained(e, o = {}) { + return (o.model_file_name ??= 'text_model'), super.from_pretrained(e, o); + } +} +class SiglipVisionModel extends CLIPPreTrainedModel { + static async from_pretrained(e, o = {}) { + return (o.model_file_name ??= 'vision_model'), super.from_pretrained(e, o); + } +} +class ChineseCLIPPreTrainedModel extends PreTrainedModel {} +class ChineseCLIPModel extends ChineseCLIPPreTrainedModel {} +class CLIPSegPreTrainedModel extends PreTrainedModel {} +class CLIPSegModel extends CLIPSegPreTrainedModel {} +class CLIPSegForImageSegmentation extends CLIPSegPreTrainedModel {} +class GPT2PreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.n_head), + (this.num_layers = this.config.n_layer), + (this.dim_kv = this.config.n_embd / this.num_heads); + } +} +class GPT2Model extends GPT2PreTrainedModel {} +class GPT2LMHeadModel extends GPT2PreTrainedModel {} +class GPTNeoPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.num_heads), + (this.num_layers = this.config.num_layers), + (this.dim_kv = this.config.hidden_size / this.num_heads); + } +} +class GPTNeoModel extends GPTNeoPreTrainedModel {} +class GPTNeoForCausalLM extends GPTNeoPreTrainedModel {} +class GPTNeoXPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.num_attention_heads), + (this.num_layers = this.config.num_hidden_layers), + (this.dim_kv = this.config.hidden_size / this.num_heads); + } +} +class GPTNeoXModel extends GPTNeoXPreTrainedModel {} +class GPTNeoXForCausalLM extends GPTNeoXPreTrainedModel {} +class GPTJPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.n_head), + (this.num_layers = this.config.n_layer), + (this.dim_kv = this.config.n_embd / this.num_heads); + } +} +class GPTJModel extends GPTJPreTrainedModel {} +class GPTJForCausalLM extends GPTJPreTrainedModel {} +class GPTBigCodePreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.n_head), + (this.num_layers = this.config.n_layer), + (this.dim_kv = this.config.n_embd / this.num_heads); + } +} +class GPTBigCodeModel extends GPTBigCodePreTrainedModel {} +class GPTBigCodeForCausalLM extends GPTBigCodePreTrainedModel {} +class CodeGenPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.n_head), + (this.num_layers = this.config.n_layer), + (this.dim_kv = this.config.n_embd / this.num_heads); + } +} +class CodeGenModel extends CodeGenPreTrainedModel {} +class CodeGenForCausalLM extends CodeGenPreTrainedModel {} +class LlamaPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.num_key_value_heads ?? this.config.num_attention_heads), + (this.num_layers = this.config.num_hidden_layers), + (this.dim_kv = this.config.hidden_size / this.config.num_attention_heads); + } +} +class LlamaModel extends LlamaPreTrainedModel {} +class LlamaForCausalLM extends LlamaPreTrainedModel {} +class Qwen2PreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.num_key_value_heads ?? this.config.num_attention_heads), + (this.num_layers = this.config.num_hidden_layers), + (this.dim_kv = this.config.hidden_size / this.config.num_attention_heads); + } +} +class Qwen2Model extends Qwen2PreTrainedModel {} +class Qwen2ForCausalLM extends Qwen2PreTrainedModel {} +class PhiPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.num_attention_heads), + (this.num_layers = this.config.num_hidden_layers), + (this.dim_kv = this.config.hidden_size / this.num_heads); + } +} +class PhiModel extends PhiPreTrainedModel {} +class PhiForCausalLM extends PhiPreTrainedModel {} +class BloomPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.n_head), + (this.num_layers = this.config.n_layer), + (this.dim_kv = this.config.hidden_size / this.num_heads); + } +} +class BloomModel extends BloomPreTrainedModel {} +class BloomForCausalLM extends BloomPreTrainedModel {} +class MptPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.n_heads), + (this.num_layers = this.config.n_layers), + (this.dim_kv = this.config.d_model / this.num_heads); + } +} +class MptModel extends MptPreTrainedModel {} +class MptForCausalLM extends MptPreTrainedModel {} +class OPTPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.num_attention_heads), + (this.num_layers = this.config.num_hidden_layers), + (this.dim_kv = this.config.hidden_size / this.num_heads); + } +} +class OPTModel extends OPTPreTrainedModel {} +class OPTForCausalLM extends OPTPreTrainedModel {} +class ViTPreTrainedModel extends PreTrainedModel {} +class ViTModel extends ViTPreTrainedModel {} +class ViTForImageClassification extends ViTPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class VitMattePreTrainedModel extends PreTrainedModel {} +class VitMatteForImageMatting extends VitMattePreTrainedModel { + async _call(e) { + return new ImageMattingOutput(await super._call(e)); + } +} +class MobileViTPreTrainedModel extends PreTrainedModel {} +class MobileViTModel extends MobileViTPreTrainedModel {} +class MobileViTForImageClassification extends MobileViTPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class OwlViTPreTrainedModel extends PreTrainedModel {} +class OwlViTModel extends OwlViTPreTrainedModel {} +class OwlViTForObjectDetection extends OwlViTPreTrainedModel {} +class Owlv2PreTrainedModel extends PreTrainedModel {} +class Owlv2Model extends Owlv2PreTrainedModel {} +class Owlv2ForObjectDetection extends Owlv2PreTrainedModel {} +class BeitPreTrainedModel extends PreTrainedModel {} +class BeitModel extends BeitPreTrainedModel {} +class BeitForImageClassification extends BeitPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class DetrPreTrainedModel extends PreTrainedModel {} +class DetrModel extends DetrPreTrainedModel {} +class DetrForObjectDetection extends DetrPreTrainedModel { + async _call(e) { + return new DetrObjectDetectionOutput(await super._call(e)); + } +} +class DetrForSegmentation extends DetrPreTrainedModel { + async _call(e) { + return new DetrSegmentationOutput(await super._call(e)); + } +} +class DetrObjectDetectionOutput extends ModelOutput { + constructor({ logits: e, pred_boxes: o }) { + super(), (this.logits = e), (this.pred_boxes = o); + } +} +class DetrSegmentationOutput extends ModelOutput { + constructor({ logits: e, pred_boxes: o, pred_masks: i }) { + super(), (this.logits = e), (this.pred_boxes = o), (this.pred_masks = i); + } +} +class TableTransformerPreTrainedModel extends PreTrainedModel {} +class TableTransformerModel extends TableTransformerPreTrainedModel {} +class TableTransformerForObjectDetection extends TableTransformerPreTrainedModel { + async _call(e) { + return new TableTransformerObjectDetectionOutput(await super._call(e)); + } +} +class TableTransformerObjectDetectionOutput extends DetrObjectDetectionOutput {} +class DeiTPreTrainedModel extends PreTrainedModel {} +class DeiTModel extends DeiTPreTrainedModel {} +class DeiTForImageClassification extends DeiTPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class ResNetPreTrainedModel extends PreTrainedModel {} +class ResNetModel extends ResNetPreTrainedModel {} +class ResNetForImageClassification extends ResNetPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class SwinPreTrainedModel extends PreTrainedModel {} +class SwinModel extends SwinPreTrainedModel {} +class SwinForImageClassification extends SwinPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class Swin2SRPreTrainedModel extends PreTrainedModel {} +class Swin2SRModel extends Swin2SRPreTrainedModel {} +class Swin2SRForImageSuperResolution extends Swin2SRPreTrainedModel {} +class DPTPreTrainedModel extends PreTrainedModel {} +class DPTModel extends DPTPreTrainedModel {} +class DPTForDepthEstimation extends DPTPreTrainedModel {} +class DepthAnythingPreTrainedModel extends PreTrainedModel {} +class DepthAnythingForDepthEstimation extends DepthAnythingPreTrainedModel {} +class GLPNPreTrainedModel extends PreTrainedModel {} +class GLPNModel extends GLPNPreTrainedModel {} +class GLPNForDepthEstimation extends GLPNPreTrainedModel {} +class DonutSwinPreTrainedModel extends PreTrainedModel {} +class DonutSwinModel extends DonutSwinPreTrainedModel {} +class ConvNextPreTrainedModel extends PreTrainedModel {} +class ConvNextModel extends ConvNextPreTrainedModel {} +class ConvNextForImageClassification extends ConvNextPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class ConvNextV2PreTrainedModel extends PreTrainedModel {} +class ConvNextV2Model extends ConvNextV2PreTrainedModel {} +class ConvNextV2ForImageClassification extends ConvNextV2PreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class Dinov2PreTrainedModel extends PreTrainedModel {} +class Dinov2Model extends Dinov2PreTrainedModel {} +class Dinov2ForImageClassification extends Dinov2PreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class YolosPreTrainedModel extends PreTrainedModel {} +class YolosModel extends YolosPreTrainedModel {} +class YolosForObjectDetection extends YolosPreTrainedModel { + async _call(e) { + return new YolosObjectDetectionOutput(await super._call(e)); + } +} +class YolosObjectDetectionOutput extends ModelOutput { + constructor({ logits: e, pred_boxes: o }) { + super(), (this.logits = e), (this.pred_boxes = o); + } +} +class SamPreTrainedModel extends PreTrainedModel {} +class SamModel extends SamPreTrainedModel { + constructor(e, o, i) { + super(e, o), (this.prompt_encoder_mask_decoder = i); + } + async get_image_embeddings({ pixel_values: e }) { + return await encoderForward(this, { pixel_values: e }); + } + async forward(e) { + if ( + ((!e.image_embeddings || !e.image_positional_embeddings) && + (e = { ...e, ...(await this.get_image_embeddings(e)) }), + !e.input_labels) + ) { + const o = e.input_points.dims.slice(0, -1), + i = o.reduce((u, n) => u * n, 1); + e.input_labels = new Tensor('int64', new BigInt64Array(i).fill(1n), o); + } + return await sessionRun(this.prompt_encoder_mask_decoder, { + input_points: e.input_points, + input_labels: e.input_labels, + image_embeddings: e.image_embeddings, + image_positional_embeddings: e.image_positional_embeddings, + }); + } + async _call(e) { + return new SamImageSegmentationOutput(await super._call(e)); + } +} +class SamImageSegmentationOutput extends ModelOutput { + constructor({ iou_scores: e, pred_masks: o }) { + super(), (this.iou_scores = e), (this.pred_masks = o); + } +} +class MarianPreTrainedModel extends PreTrainedModel {} +class MarianModel extends MarianPreTrainedModel {} +class MarianMTModel extends MarianPreTrainedModel { + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.decoder_layers), + (this.num_decoder_heads = this.config.decoder_attention_heads), + (this.decoder_dim_kv = this.config.d_model / this.num_decoder_heads), + (this.num_encoder_layers = this.config.encoder_layers), + (this.num_encoder_heads = this.config.encoder_attention_heads), + (this.encoder_dim_kv = this.config.d_model / this.num_encoder_heads); + } +} +class M2M100PreTrainedModel extends PreTrainedModel {} +class M2M100Model extends M2M100PreTrainedModel {} +class M2M100ForConditionalGeneration extends M2M100PreTrainedModel { + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.decoder_layers), + (this.num_decoder_heads = this.config.decoder_attention_heads), + (this.decoder_dim_kv = this.config.d_model / this.num_decoder_heads), + (this.num_encoder_layers = this.config.encoder_layers), + (this.num_encoder_heads = this.config.encoder_attention_heads), + (this.encoder_dim_kv = this.config.d_model / this.num_encoder_heads); + } +} +class Wav2Vec2PreTrainedModel extends PreTrainedModel {} +class Wav2Vec2Model extends Wav2Vec2PreTrainedModel {} +class Wav2Vec2ForCTC extends Wav2Vec2PreTrainedModel { + async _call(e) { + return new CausalLMOutput(await super._call(e)); + } +} +class Wav2Vec2ForSequenceClassification extends Wav2Vec2PreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class Wav2Vec2ForAudioFrameClassification extends Wav2Vec2PreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class UniSpeechPreTrainedModel extends PreTrainedModel {} +class UniSpeechModel extends UniSpeechPreTrainedModel {} +class UniSpeechForCTC extends UniSpeechPreTrainedModel { + async _call(e) { + return new CausalLMOutput(await super._call(e)); + } +} +class UniSpeechForSequenceClassification extends UniSpeechPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class UniSpeechSatPreTrainedModel extends PreTrainedModel {} +class UniSpeechSatModel extends UniSpeechSatPreTrainedModel {} +class UniSpeechSatForCTC extends UniSpeechSatPreTrainedModel { + async _call(e) { + return new CausalLMOutput(await super._call(e)); + } +} +class UniSpeechSatForSequenceClassification extends UniSpeechSatPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class UniSpeechSatForAudioFrameClassification extends UniSpeechSatPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class Wav2Vec2BertPreTrainedModel extends PreTrainedModel {} +class Wav2Vec2BertModel extends Wav2Vec2BertPreTrainedModel {} +class Wav2Vec2BertForCTC extends Wav2Vec2BertPreTrainedModel { + async _call(e) { + return new CausalLMOutput(await super._call(e)); + } +} +class Wav2Vec2BertForSequenceClassification extends Wav2Vec2BertPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class HubertModel extends Wav2Vec2PreTrainedModel {} +class HubertForCTC extends Wav2Vec2PreTrainedModel { + async _call(e) { + return new CausalLMOutput(await super._call(e)); + } +} +class HubertForSequenceClassification extends Wav2Vec2PreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class WavLMPreTrainedModel extends PreTrainedModel {} +class WavLMModel extends WavLMPreTrainedModel {} +class WavLMForCTC extends WavLMPreTrainedModel { + async _call(e) { + return new CausalLMOutput(await super._call(e)); + } +} +class WavLMForSequenceClassification extends WavLMPreTrainedModel { + async _call(e) { + return new SequenceClassifierOutput(await super._call(e)); + } +} +class WavLMForXVector extends WavLMPreTrainedModel { + async _call(e) { + return new XVectorOutput(await super._call(e)); + } +} +class WavLMForAudioFrameClassification extends WavLMPreTrainedModel { + async _call(e) { + return new TokenClassifierOutput(await super._call(e)); + } +} +class SpeechT5PreTrainedModel extends PreTrainedModel {} +class SpeechT5ForSpeechToText extends SpeechT5PreTrainedModel {} +class SpeechT5ForTextToSpeech extends SpeechT5PreTrainedModel { + constructor(e, o, i, u) { + super(e, o), + (this.decoder_merged_session = i), + (this.generation_config = u), + (this.num_decoder_layers = this.config.decoder_layers), + (this.num_decoder_heads = this.config.decoder_attention_heads), + (this.decoder_dim_kv = this.config.hidden_size / this.num_decoder_heads), + (this.num_encoder_layers = this.config.encoder_layers), + (this.num_encoder_heads = this.config.encoder_attention_heads), + (this.encoder_dim_kv = this.config.hidden_size / this.num_encoder_heads); + } + async generate_speech( + e, + o, + { threshold: i = 0.5, minlenratio: u = 0, maxlenratio: n = 20, vocoder: s = null } = {} + ) { + const d = { input_ids: e }, + { encoder_outputs: f, encoder_attention_mask: r } = await encoderForward(this, d), + a = f.dims[1] / this.config.reduction_factor, + l = Math.floor(a * n), + p = Math.floor(a * u), + m = this.config.num_mel_bins; + let y = [], + T = null, + v = null, + S = 0; + for (;;) { + ++S; + const F = boolTensor(!!v); + let B; + v ? (B = v.output_sequence_out) : (B = new Tensor('float32', new Float32Array(m), [1, 1, m])); + let J = { + use_cache_branch: F, + output_sequence: B, + encoder_attention_mask: r, + speaker_embeddings: o, + encoder_hidden_states: f, + }; + this.addPastKeyValues(J, T), + (v = await sessionRun(this.decoder_merged_session, J)), + (T = this.getPastKeyValues(v, T)); + const { prob: Q, spectrum: re } = v; + if ((y.push(re), S >= p && (Array.from(Q.data).filter((V) => V >= i).length > 0 || S >= l))) break; + } + const E = cat(y), + { waveform: A } = await sessionRun(s.session, { spectrogram: E }); + return { spectrogram: E, waveform: A }; + } +} +class SpeechT5HifiGan extends PreTrainedModel { + main_input_name = 'spectrogram'; +} +class TrOCRPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_encoder_layers = this.num_decoder_layers = this.config.decoder_layers), + (this.num_encoder_heads = this.num_decoder_heads = this.config.decoder_attention_heads), + (this.encoder_dim_kv = this.decoder_dim_kv = this.config.d_model / this.num_decoder_heads); + } +} +class TrOCRForCausalLM extends TrOCRPreTrainedModel {} +class MistralPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.num_key_value_heads), + (this.num_layers = this.config.num_hidden_layers), + (this.dim_kv = this.config.hidden_size / this.config.num_attention_heads); + } +} +class MistralModel extends MistralPreTrainedModel {} +class MistralForCausalLM extends MistralPreTrainedModel {} +class Starcoder2PreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.num_key_value_heads), + (this.num_layers = this.config.num_hidden_layers), + (this.dim_kv = this.config.hidden_size / this.config.num_attention_heads); + } +} +class Starcoder2Model extends Starcoder2PreTrainedModel {} +class Starcoder2ForCausalLM extends Starcoder2PreTrainedModel {} +class FalconPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.num_attention_heads), + (this.num_layers = this.config.num_hidden_layers), + (this.dim_kv = this.config.hidden_size / this.config.num_attention_heads); + } +} +class FalconModel extends FalconPreTrainedModel {} +class FalconForCausalLM extends FalconPreTrainedModel {} +class ClapPreTrainedModel extends PreTrainedModel {} +class ClapModel extends ClapPreTrainedModel {} +class ClapTextModelWithProjection extends ClapPreTrainedModel { + static async from_pretrained(e, o = {}) { + return (o.model_file_name ??= 'text_model'), super.from_pretrained(e, o); + } +} +class ClapAudioModelWithProjection extends ClapPreTrainedModel { + static async from_pretrained(e, o = {}) { + return (o.model_file_name ??= 'audio_model'), super.from_pretrained(e, o); + } +} +class VitsPreTrainedModel extends PreTrainedModel {} +class VitsModel extends VitsPreTrainedModel { + async _call(e) { + return new VitsModelOutput(await super._call(e)); + } +} +class SegformerPreTrainedModel extends PreTrainedModel {} +class SegformerForImageClassification extends SegformerPreTrainedModel {} +class SegformerForSemanticSegmentation extends SegformerPreTrainedModel {} +class StableLmPreTrainedModel extends PreTrainedModel { + constructor(e, o, i) { + super(e, o), + (this.generation_config = i), + (this.config.pad_token_id = this.config.eos_token_id), + (this.num_heads = this.config.num_attention_heads), + (this.num_layers = this.config.num_hidden_layers), + (this.dim_kv = this.config.hidden_size / this.num_heads); + } +} +class StableLmForCausalLM extends StableLmPreTrainedModel {} +class PretrainedMixin { + static MODEL_CLASS_MAPPINGS = null; + static BASE_IF_FAIL = !1; + static async from_pretrained( + e, + { + quantized: o = !0, + progress_callback: i = null, + config: u = null, + cache_dir: n = null, + local_files_only: s = !1, + revision: d = 'main', + model_file_name: f = null, + session_options: r = {}, + } = {} + ) { + let a = { + quantized: o, + progress_callback: i, + config: u, + cache_dir: n, + local_files_only: s, + revision: d, + model_file_name: f, + session_options: r, + }; + if (((u = await AutoConfig.from_pretrained(e, a)), a.config || (a.config = u), !this.MODEL_CLASS_MAPPINGS)) + throw new Error('`MODEL_CLASS_MAPPINGS` not implemented for this type of `AutoClass`: ' + this.name); + for (let l of this.MODEL_CLASS_MAPPINGS) { + const p = l.get(u.model_type); + if (p) return await p[1].from_pretrained(e, a); + } + if (this.BASE_IF_FAIL) + return ( + console.warn(`Unknown model class "${u.model_type}", attempting to construct from base class.`), + await PreTrainedModel.from_pretrained(e, a) + ); + throw Error(`Unsupported model type: ${u.model_type}`); + } +} +const MODEL_MAPPING_NAMES_ENCODER_ONLY = new Map([ + ['bert', ['BertModel', BertModel]], + ['nomic_bert', ['NomicBertModel', NomicBertModel]], + ['roformer', ['RoFormerModel', RoFormerModel]], + ['electra', ['ElectraModel', ElectraModel]], + ['esm', ['EsmModel', EsmModel]], + ['convbert', ['ConvBertModel', ConvBertModel]], + ['camembert', ['CamembertModel', CamembertModel]], + ['deberta', ['DebertaModel', DebertaModel]], + ['deberta-v2', ['DebertaV2Model', DebertaV2Model]], + ['mpnet', ['MPNetModel', MPNetModel]], + ['albert', ['AlbertModel', AlbertModel]], + ['distilbert', ['DistilBertModel', DistilBertModel]], + ['roberta', ['RobertaModel', RobertaModel]], + ['xlm', ['XLMModel', XLMModel]], + ['xlm-roberta', ['XLMRobertaModel', XLMRobertaModel]], + ['clap', ['ClapModel', ClapModel]], + ['clip', ['CLIPModel', CLIPModel]], + ['clipseg', ['CLIPSegModel', CLIPSegModel]], + ['chinese_clip', ['ChineseCLIPModel', ChineseCLIPModel]], + ['siglip', ['SiglipModel', SiglipModel]], + ['mobilebert', ['MobileBertModel', MobileBertModel]], + ['squeezebert', ['SqueezeBertModel', SqueezeBertModel]], + ['wav2vec2', ['Wav2Vec2Model', Wav2Vec2Model]], + ['wav2vec2-bert', ['Wav2Vec2BertModel', Wav2Vec2BertModel]], + ['unispeech', ['UniSpeechModel', UniSpeechModel]], + ['unispeech-sat', ['UniSpeechSatModel', UniSpeechSatModel]], + ['hubert', ['HubertModel', HubertModel]], + ['wavlm', ['WavLMModel', WavLMModel]], + ['audio-spectrogram-transformer', ['ASTModel', ASTModel]], + ['vits', ['VitsModel', VitsModel]], + ['detr', ['DetrModel', DetrModel]], + ['table-transformer', ['TableTransformerModel', TableTransformerModel]], + ['vit', ['ViTModel', ViTModel]], + ['mobilevit', ['MobileViTModel', MobileViTModel]], + ['owlvit', ['OwlViTModel', OwlViTModel]], + ['owlv2', ['Owlv2Model', Owlv2Model]], + ['beit', ['BeitModel', BeitModel]], + ['deit', ['DeiTModel', DeiTModel]], + ['convnext', ['ConvNextModel', ConvNextModel]], + ['convnextv2', ['ConvNextV2Model', ConvNextV2Model]], + ['dinov2', ['Dinov2Model', Dinov2Model]], + ['resnet', ['ResNetModel', ResNetModel]], + ['swin', ['SwinModel', SwinModel]], + ['swin2sr', ['Swin2SRModel', Swin2SRModel]], + ['donut-swin', ['DonutSwinModel', DonutSwinModel]], + ['yolos', ['YolosModel', YolosModel]], + ['dpt', ['DPTModel', DPTModel]], + ['glpn', ['GLPNModel', GLPNModel]], + ['hifigan', ['SpeechT5HifiGan', SpeechT5HifiGan]], + ]), + MODEL_MAPPING_NAMES_ENCODER_DECODER = new Map([ + ['t5', ['T5Model', T5Model]], + ['longt5', ['LongT5Model', LongT5Model]], + ['mt5', ['MT5Model', MT5Model]], + ['bart', ['BartModel', BartModel]], + ['mbart', ['MBartModel', MBartModel]], + ['marian', ['MarianModel', MarianModel]], + ['whisper', ['WhisperModel', WhisperModel]], + ['m2m_100', ['M2M100Model', M2M100Model]], + ['blenderbot', ['BlenderbotModel', BlenderbotModel]], + ['blenderbot-small', ['BlenderbotSmallModel', BlenderbotSmallModel]], + ]), + MODEL_MAPPING_NAMES_DECODER_ONLY = new Map([ + ['bloom', ['BloomModel', BloomModel]], + ['gpt2', ['GPT2Model', GPT2Model]], + ['gptj', ['GPTJModel', GPTJModel]], + ['gpt_bigcode', ['GPTBigCodeModel', GPTBigCodeModel]], + ['gpt_neo', ['GPTNeoModel', GPTNeoModel]], + ['gpt_neox', ['GPTNeoXModel', GPTNeoXModel]], + ['codegen', ['CodeGenModel', CodeGenModel]], + ['llama', ['LlamaModel', LlamaModel]], + ['qwen2', ['Qwen2Model', Qwen2Model]], + ['phi', ['PhiModel', PhiModel]], + ['mpt', ['MptModel', MptModel]], + ['opt', ['OPTModel', OPTModel]], + ['mistral', ['MistralModel', MistralModel]], + ['starcoder2', ['Starcoder2Model', Starcoder2Model]], + ['falcon', ['FalconModel', FalconModel]], + ]), + MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES = new Map([ + ['speecht5', ['SpeechT5ForSpeechToText', SpeechT5ForSpeechToText]], + ['whisper', ['WhisperForConditionalGeneration', WhisperForConditionalGeneration]], + ]), + MODEL_FOR_TEXT_TO_SPECTROGRAM_MAPPING_NAMES = new Map([ + ['speecht5', ['SpeechT5ForTextToSpeech', SpeechT5ForTextToSpeech]], + ]), + MODEL_FOR_TEXT_TO_WAVEFORM_MAPPING_NAMES = new Map([['vits', ['VitsModel', VitsModel]]]), + MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING_NAMES = new Map([ + ['bert', ['BertForSequenceClassification', BertForSequenceClassification]], + ['roformer', ['RoFormerForSequenceClassification', RoFormerForSequenceClassification]], + ['electra', ['ElectraForSequenceClassification', ElectraForSequenceClassification]], + ['esm', ['EsmForSequenceClassification', EsmForSequenceClassification]], + ['convbert', ['ConvBertForSequenceClassification', ConvBertForSequenceClassification]], + ['camembert', ['CamembertForSequenceClassification', CamembertForSequenceClassification]], + ['deberta', ['DebertaForSequenceClassification', DebertaForSequenceClassification]], + ['deberta-v2', ['DebertaV2ForSequenceClassification', DebertaV2ForSequenceClassification]], + ['mpnet', ['MPNetForSequenceClassification', MPNetForSequenceClassification]], + ['albert', ['AlbertForSequenceClassification', AlbertForSequenceClassification]], + ['distilbert', ['DistilBertForSequenceClassification', DistilBertForSequenceClassification]], + ['roberta', ['RobertaForSequenceClassification', RobertaForSequenceClassification]], + ['xlm', ['XLMForSequenceClassification', XLMForSequenceClassification]], + ['xlm-roberta', ['XLMRobertaForSequenceClassification', XLMRobertaForSequenceClassification]], + ['bart', ['BartForSequenceClassification', BartForSequenceClassification]], + ['mbart', ['MBartForSequenceClassification', MBartForSequenceClassification]], + ['mobilebert', ['MobileBertForSequenceClassification', MobileBertForSequenceClassification]], + ['squeezebert', ['SqueezeBertForSequenceClassification', SqueezeBertForSequenceClassification]], + ]), + MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING_NAMES = new Map([ + ['bert', ['BertForTokenClassification', BertForTokenClassification]], + ['roformer', ['RoFormerForTokenClassification', RoFormerForTokenClassification]], + ['electra', ['ElectraForTokenClassification', ElectraForTokenClassification]], + ['esm', ['EsmForTokenClassification', EsmForTokenClassification]], + ['convbert', ['ConvBertForTokenClassification', ConvBertForTokenClassification]], + ['camembert', ['CamembertForTokenClassification', CamembertForTokenClassification]], + ['deberta', ['DebertaForTokenClassification', DebertaForTokenClassification]], + ['deberta-v2', ['DebertaV2ForTokenClassification', DebertaV2ForTokenClassification]], + ['mpnet', ['MPNetForTokenClassification', MPNetForTokenClassification]], + ['distilbert', ['DistilBertForTokenClassification', DistilBertForTokenClassification]], + ['roberta', ['RobertaForTokenClassification', RobertaForTokenClassification]], + ['xlm', ['XLMForTokenClassification', XLMForTokenClassification]], + ['xlm-roberta', ['XLMRobertaForTokenClassification', XLMRobertaForTokenClassification]], + ]), + MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES = new Map([ + ['t5', ['T5ForConditionalGeneration', T5ForConditionalGeneration]], + ['longt5', ['LongT5ForConditionalGeneration', LongT5ForConditionalGeneration]], + ['mt5', ['MT5ForConditionalGeneration', MT5ForConditionalGeneration]], + ['bart', ['BartForConditionalGeneration', BartForConditionalGeneration]], + ['mbart', ['MBartForConditionalGeneration', MBartForConditionalGeneration]], + ['marian', ['MarianMTModel', MarianMTModel]], + ['m2m_100', ['M2M100ForConditionalGeneration', M2M100ForConditionalGeneration]], + ['blenderbot', ['BlenderbotForConditionalGeneration', BlenderbotForConditionalGeneration]], + ['blenderbot-small', ['BlenderbotSmallForConditionalGeneration', BlenderbotSmallForConditionalGeneration]], + ]), + MODEL_WITH_LM_HEAD_MAPPING_NAMES = new Map([ + ['bloom', ['BloomForCausalLM', BloomForCausalLM]], + ['gpt2', ['GPT2LMHeadModel', GPT2LMHeadModel]], + ['gptj', ['GPTJForCausalLM', GPTJForCausalLM]], + ['gpt_bigcode', ['GPTBigCodeForCausalLM', GPTBigCodeForCausalLM]], + ['gpt_neo', ['GPTNeoForCausalLM', GPTNeoForCausalLM]], + ['gpt_neox', ['GPTNeoXForCausalLM', GPTNeoXForCausalLM]], + ['codegen', ['CodeGenForCausalLM', CodeGenForCausalLM]], + ['llama', ['LlamaForCausalLM', LlamaForCausalLM]], + ['qwen2', ['Qwen2ForCausalLM', Qwen2ForCausalLM]], + ['phi', ['PhiForCausalLM', PhiForCausalLM]], + ['mpt', ['MptForCausalLM', MptForCausalLM]], + ['opt', ['OPTForCausalLM', OPTForCausalLM]], + ['mbart', ['MBartForCausalLM', MBartForCausalLM]], + ['mistral', ['MistralForCausalLM', MistralForCausalLM]], + ['starcoder2', ['Starcoder2ForCausalLM', Starcoder2ForCausalLM]], + ['falcon', ['FalconForCausalLM', FalconForCausalLM]], + ['trocr', ['TrOCRForCausalLM', TrOCRForCausalLM]], + ['stablelm', ['StableLmForCausalLM', StableLmForCausalLM]], + ]), + MODEL_FOR_MASKED_LM_MAPPING_NAMES = new Map([ + ['bert', ['BertForMaskedLM', BertForMaskedLM]], + ['roformer', ['RoFormerForMaskedLM', RoFormerForMaskedLM]], + ['electra', ['ElectraForMaskedLM', ElectraForMaskedLM]], + ['esm', ['EsmForMaskedLM', EsmForMaskedLM]], + ['convbert', ['ConvBertForMaskedLM', ConvBertForMaskedLM]], + ['camembert', ['CamembertForMaskedLM', CamembertForMaskedLM]], + ['deberta', ['DebertaForMaskedLM', DebertaForMaskedLM]], + ['deberta-v2', ['DebertaV2ForMaskedLM', DebertaV2ForMaskedLM]], + ['mpnet', ['MPNetForMaskedLM', MPNetForMaskedLM]], + ['albert', ['AlbertForMaskedLM', AlbertForMaskedLM]], + ['distilbert', ['DistilBertForMaskedLM', DistilBertForMaskedLM]], + ['roberta', ['RobertaForMaskedLM', RobertaForMaskedLM]], + ['xlm', ['XLMWithLMHeadModel', XLMWithLMHeadModel]], + ['xlm-roberta', ['XLMRobertaForMaskedLM', XLMRobertaForMaskedLM]], + ['mobilebert', ['MobileBertForMaskedLM', MobileBertForMaskedLM]], + ['squeezebert', ['SqueezeBertForMaskedLM', SqueezeBertForMaskedLM]], + ]), + MODEL_FOR_QUESTION_ANSWERING_MAPPING_NAMES = new Map([ + ['bert', ['BertForQuestionAnswering', BertForQuestionAnswering]], + ['roformer', ['RoFormerForQuestionAnswering', RoFormerForQuestionAnswering]], + ['electra', ['ElectraForQuestionAnswering', ElectraForQuestionAnswering]], + ['convbert', ['ConvBertForQuestionAnswering', ConvBertForQuestionAnswering]], + ['camembert', ['CamembertForQuestionAnswering', CamembertForQuestionAnswering]], + ['deberta', ['DebertaForQuestionAnswering', DebertaForQuestionAnswering]], + ['deberta-v2', ['DebertaV2ForQuestionAnswering', DebertaV2ForQuestionAnswering]], + ['mpnet', ['MPNetForQuestionAnswering', MPNetForQuestionAnswering]], + ['albert', ['AlbertForQuestionAnswering', AlbertForQuestionAnswering]], + ['distilbert', ['DistilBertForQuestionAnswering', DistilBertForQuestionAnswering]], + ['roberta', ['RobertaForQuestionAnswering', RobertaForQuestionAnswering]], + ['xlm', ['XLMForQuestionAnswering', XLMForQuestionAnswering]], + ['xlm-roberta', ['XLMRobertaForQuestionAnswering', XLMRobertaForQuestionAnswering]], + ['mobilebert', ['MobileBertForQuestionAnswering', MobileBertForQuestionAnswering]], + ['squeezebert', ['SqueezeBertForQuestionAnswering', SqueezeBertForQuestionAnswering]], + ]), + MODEL_FOR_VISION_2_SEQ_MAPPING_NAMES = new Map([ + ['vision-encoder-decoder', ['VisionEncoderDecoderModel', VisionEncoderDecoderModel]], + ]), + MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING_NAMES = new Map([ + ['vit', ['ViTForImageClassification', ViTForImageClassification]], + ['mobilevit', ['MobileViTForImageClassification', MobileViTForImageClassification]], + ['beit', ['BeitForImageClassification', BeitForImageClassification]], + ['deit', ['DeiTForImageClassification', DeiTForImageClassification]], + ['convnext', ['ConvNextForImageClassification', ConvNextForImageClassification]], + ['convnextv2', ['ConvNextV2ForImageClassification', ConvNextV2ForImageClassification]], + ['dinov2', ['Dinov2ForImageClassification', Dinov2ForImageClassification]], + ['resnet', ['ResNetForImageClassification', ResNetForImageClassification]], + ['swin', ['SwinForImageClassification', SwinForImageClassification]], + ['segformer', ['SegformerForImageClassification', SegformerForImageClassification]], + ]), + MODEL_FOR_OBJECT_DETECTION_MAPPING_NAMES = new Map([ + ['detr', ['DetrForObjectDetection', DetrForObjectDetection]], + ['table-transformer', ['TableTransformerForObjectDetection', TableTransformerForObjectDetection]], + ['yolos', ['YolosForObjectDetection', YolosForObjectDetection]], + ]), + MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING_NAMES = new Map([ + ['owlvit', ['OwlViTForObjectDetection', OwlViTForObjectDetection]], + ['owlv2', ['Owlv2ForObjectDetection', Owlv2ForObjectDetection]], + ]), + MODEL_FOR_IMAGE_SEGMENTATION_MAPPING_NAMES = new Map([ + ['detr', ['DetrForSegmentation', DetrForSegmentation]], + ['clipseg', ['CLIPSegForImageSegmentation', CLIPSegForImageSegmentation]], + ]), + MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING_NAMES = new Map([ + ['segformer', ['SegformerForSemanticSegmentation', SegformerForSemanticSegmentation]], + ]), + MODEL_FOR_MASK_GENERATION_MAPPING_NAMES = new Map([['sam', ['SamModel', SamModel]]]), + MODEL_FOR_CTC_MAPPING_NAMES = new Map([ + ['wav2vec2', ['Wav2Vec2ForCTC', Wav2Vec2ForCTC]], + ['wav2vec2-bert', ['Wav2Vec2BertForCTC', Wav2Vec2BertForCTC]], + ['unispeech', ['UniSpeechForCTC', UniSpeechForCTC]], + ['unispeech-sat', ['UniSpeechSatForCTC', UniSpeechSatForCTC]], + ['wavlm', ['WavLMForCTC', WavLMForCTC]], + ['hubert', ['HubertForCTC', HubertForCTC]], + ]), + MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING_NAMES = new Map([ + ['wav2vec2', ['Wav2Vec2ForSequenceClassification', Wav2Vec2ForSequenceClassification]], + ['wav2vec2-bert', ['Wav2Vec2BertForSequenceClassification', Wav2Vec2BertForSequenceClassification]], + ['unispeech', ['UniSpeechForSequenceClassification', UniSpeechForSequenceClassification]], + ['unispeech-sat', ['UniSpeechSatForSequenceClassification', UniSpeechSatForSequenceClassification]], + ['wavlm', ['WavLMForSequenceClassification', WavLMForSequenceClassification]], + ['hubert', ['HubertForSequenceClassification', HubertForSequenceClassification]], + ['audio-spectrogram-transformer', ['ASTForAudioClassification', ASTForAudioClassification]], + ]), + MODEL_FOR_AUDIO_XVECTOR_MAPPING_NAMES = new Map([['wavlm', ['WavLMForXVector', WavLMForXVector]]]), + MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING_NAMES = new Map([ + ['unispeech-sat', ['UniSpeechSatForAudioFrameClassification', UniSpeechSatForAudioFrameClassification]], + ['wavlm', ['WavLMForAudioFrameClassification', WavLMForAudioFrameClassification]], + ['wav2vec2', ['Wav2Vec2ForAudioFrameClassification', Wav2Vec2ForAudioFrameClassification]], + ]), + MODEL_FOR_IMAGE_MATTING_MAPPING_NAMES = new Map([ + ['vitmatte', ['VitMatteForImageMatting', VitMatteForImageMatting]], + ]), + MODEL_FOR_IMAGE_TO_IMAGE_MAPPING_NAMES = new Map([ + ['swin2sr', ['Swin2SRForImageSuperResolution', Swin2SRForImageSuperResolution]], + ]), + MODEL_FOR_DEPTH_ESTIMATION_MAPPING_NAMES = new Map([ + ['dpt', ['DPTForDepthEstimation', DPTForDepthEstimation]], + ['depth_anything', ['DepthAnythingForDepthEstimation', DepthAnythingForDepthEstimation]], + ['glpn', ['GLPNForDepthEstimation', GLPNForDepthEstimation]], + ]), + MODEL_CLASS_TYPE_MAPPING = [ + [MODEL_MAPPING_NAMES_ENCODER_ONLY, MODEL_TYPES.EncoderOnly], + [MODEL_MAPPING_NAMES_ENCODER_DECODER, MODEL_TYPES.EncoderDecoder], + [MODEL_MAPPING_NAMES_DECODER_ONLY, MODEL_TYPES.DecoderOnly], + [MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES, MODEL_TYPES.Seq2Seq], + [MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES, MODEL_TYPES.Seq2Seq], + [MODEL_WITH_LM_HEAD_MAPPING_NAMES, MODEL_TYPES.DecoderOnly], + [MODEL_FOR_MASKED_LM_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_QUESTION_ANSWERING_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_VISION_2_SEQ_MAPPING_NAMES, MODEL_TYPES.Vision2Seq], + [MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_IMAGE_SEGMENTATION_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_IMAGE_MATTING_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_IMAGE_TO_IMAGE_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_DEPTH_ESTIMATION_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_OBJECT_DETECTION_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_MASK_GENERATION_MAPPING_NAMES, MODEL_TYPES.MaskGeneration], + [MODEL_FOR_CTC_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_TEXT_TO_SPECTROGRAM_MAPPING_NAMES, MODEL_TYPES.Seq2Seq], + [MODEL_FOR_TEXT_TO_WAVEFORM_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_AUDIO_XVECTOR_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + [MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING_NAMES, MODEL_TYPES.EncoderOnly], + ]; +for (const [t, e] of MODEL_CLASS_TYPE_MAPPING) + for (const [o, i] of t.values()) + MODEL_TYPE_MAPPING.set(o, e), MODEL_CLASS_TO_NAME_MAPPING.set(i, o), MODEL_NAME_TO_CLASS_MAPPING.set(o, i); +const CUSTOM_MAPPING = [ + ['CLIPTextModelWithProjection', CLIPTextModelWithProjection, MODEL_TYPES.EncoderOnly], + ['CLIPVisionModelWithProjection', CLIPVisionModelWithProjection, MODEL_TYPES.EncoderOnly], + ['SiglipTextModel', SiglipTextModel, MODEL_TYPES.EncoderOnly], + ['SiglipVisionModel', SiglipVisionModel, MODEL_TYPES.EncoderOnly], + ['ClapTextModelWithProjection', ClapTextModelWithProjection, MODEL_TYPES.EncoderOnly], + ['ClapAudioModelWithProjection', ClapAudioModelWithProjection, MODEL_TYPES.EncoderOnly], +]; +for (const [t, e, o] of CUSTOM_MAPPING) + MODEL_TYPE_MAPPING.set(t, o), MODEL_CLASS_TO_NAME_MAPPING.set(e, t), MODEL_NAME_TO_CLASS_MAPPING.set(t, e); +class AutoModel extends PretrainedMixin { + static MODEL_CLASS_MAPPINGS = MODEL_CLASS_TYPE_MAPPING.map((e) => e[0]); + static BASE_IF_FAIL = !0; +} +class Seq2SeqLMOutput extends ModelOutput { + constructor({ + logits: e, + past_key_values: o, + encoder_outputs: i, + decoder_attentions: u = null, + cross_attentions: n = null, + }) { + super(), + (this.logits = e), + (this.past_key_values = o), + (this.encoder_outputs = i), + (this.decoder_attentions = u), + (this.cross_attentions = n); + } +} +class SequenceClassifierOutput extends ModelOutput { + constructor({ logits: e }) { + super(), (this.logits = e); + } +} +class XVectorOutput extends ModelOutput { + constructor({ logits: e, embeddings: o }) { + super(), (this.logits = e), (this.embeddings = o); + } +} +class TokenClassifierOutput extends ModelOutput { + constructor({ logits: e }) { + super(), (this.logits = e); + } +} +class MaskedLMOutput extends ModelOutput { + constructor({ logits: e }) { + super(), (this.logits = e); + } +} +class QuestionAnsweringModelOutput extends ModelOutput { + constructor({ start_logits: e, end_logits: o }) { + super(), (this.start_logits = e), (this.end_logits = o); + } +} +class CausalLMOutput extends ModelOutput { + constructor({ logits: e }) { + super(), (this.logits = e); + } +} +class ImageMattingOutput extends ModelOutput { + constructor({ alphas: e }) { + super(), (this.alphas = e); + } +} +class VitsModelOutput extends ModelOutput { + constructor({ waveform: e, spectrogram: o }) { + super(), (this.waveform = e), (this.spectrogram = o); + } +} +const BROWSER_ENV = typeof self < 'u', + WEBWORKER_ENV = BROWSER_ENV && self.constructor.name === 'DedicatedWorkerGlobalScope'; +let createCanvasFunction, ImageDataClass, loadImageFunction; +if (BROWSER_ENV) + (createCanvasFunction = (t, e) => { + if (!self.OffscreenCanvas) throw new Error('OffscreenCanvas not supported by this browser.'); + return new self.OffscreenCanvas(t, e); + }), + (loadImageFunction = self.createImageBitmap), + (ImageDataClass = self.ImageData); +else if (sharp) + loadImageFunction = async (t) => { + const o = (await t.metadata()).channels, + { data: i, info: u } = await t.raw().toBuffer({ resolveWithObject: !0 }), + n = new RawImage(new Uint8ClampedArray(i), u.width, u.height, u.channels); + return o !== void 0 && o !== u.channels && n.convert(o), n; + }; +else throw new Error('Unable to load image processing library.'); +const RESAMPLING_MAPPING = { 0: 'nearest', 1: 'lanczos', 2: 'bilinear', 3: 'bicubic', 4: 'box', 5: 'hamming' }, + CONTENT_TYPE_MAP = new Map([ + ['png', 'image/png'], + ['jpg', 'image/jpeg'], + ['jpeg', 'image/jpeg'], + ['gif', 'image/gif'], + ]); +class RawImage { + constructor(e, o, i, u) { + (this.data = e), (this.width = o), (this.height = i), (this.channels = u); + } + get size() { + return [this.width, this.height]; + } + static async read(e) { + if (e instanceof RawImage) return e; + if (typeof e == 'string' || e instanceof URL) return await this.fromURL(e); + throw new Error(`Unsupported input type: ${typeof e}`); + } + static async fromURL(e) { + const o = await getFile(e); + if (o.status !== 200) throw new Error(`Unable to read image from "${e}" (${o.status} ${o.statusText})`); + const i = await o.blob(); + return this.fromBlob(i); + } + static async fromBlob(e) { + if (BROWSER_ENV) { + const o = await loadImageFunction(e), + i = createCanvasFunction(o.width, o.height).getContext('2d'); + return i.drawImage(o, 0, 0), new this(i.getImageData(0, 0, o.width, o.height).data, o.width, o.height, 4); + } else { + const o = sharp(await e.arrayBuffer()); + return await loadImageFunction(o); + } + } + static fromTensor(e, o = 'CHW') { + if (e.dims.length !== 3) + throw new Error(`Tensor should have 3 dimensions, but has ${e.dims.length} dimensions.`); + if (o === 'CHW') e = e.transpose(1, 2, 0); + else if (o !== 'HWC') throw new Error(`Unsupported channel format: ${o}`); + if (!(e.data instanceof Uint8ClampedArray || e.data instanceof Uint8Array)) + throw new Error(`Unsupported tensor type: ${e.type}`); + switch (e.dims[2]) { + case 1: + case 2: + case 3: + case 4: + return new RawImage(e.data, e.dims[1], e.dims[0], e.dims[2]); + default: + throw new Error(`Unsupported number of channels: ${e.dims[2]}`); + } + } + grayscale() { + if (this.channels === 1) return this; + const e = new Uint8ClampedArray(this.width * this.height * 1); + switch (this.channels) { + case 3: + case 4: + for (let o = 0, i = 0; o < this.data.length; o += this.channels) { + const u = this.data[o], + n = this.data[o + 1], + s = this.data[o + 2]; + e[i++] = Math.round(0.2989 * u + 0.587 * n + 0.114 * s); + } + break; + default: + throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`); + } + return this._update(e, this.width, this.height, 1); + } + rgb() { + if (this.channels === 3) return this; + const e = new Uint8ClampedArray(this.width * this.height * 3); + switch (this.channels) { + case 1: + for (let o = 0, i = 0; o < this.data.length; ++o) + (e[i++] = this.data[o]), (e[i++] = this.data[o]), (e[i++] = this.data[o]); + break; + case 4: + for (let o = 0, i = 0; o < this.data.length; o += 4) + (e[i++] = this.data[o]), (e[i++] = this.data[o + 1]), (e[i++] = this.data[o + 2]); + break; + default: + throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`); + } + return this._update(e, this.width, this.height, 3); + } + rgba() { + if (this.channels === 4) return this; + const e = new Uint8ClampedArray(this.width * this.height * 4); + switch (this.channels) { + case 1: + for (let o = 0, i = 0; o < this.data.length; ++o) + (e[i++] = this.data[o]), (e[i++] = this.data[o]), (e[i++] = this.data[o]), (e[i++] = 255); + break; + case 3: + for (let o = 0, i = 0; o < this.data.length; o += 3) + (e[i++] = this.data[o]), (e[i++] = this.data[o + 1]), (e[i++] = this.data[o + 2]), (e[i++] = 255); + break; + default: + throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`); + } + return this._update(e, this.width, this.height, 4); + } + async resize(e, o, { resample: i = 2 } = {}) { + let u = RESAMPLING_MAPPING[i] ?? i; + if (BROWSER_ENV) { + const n = this.channels, + s = this.toCanvas(), + d = createCanvasFunction(e, o).getContext('2d'); + return d.drawImage(s, 0, 0, e, o), new RawImage(d.getImageData(0, 0, e, o).data, e, o, 4).convert(n); + } else { + let n = this.toSharp(); + switch (u) { + case 'box': + case 'hamming': + (u === 'box' || u === 'hamming') && + (console.warn(`Resampling method ${u} is not yet supported. Using bilinear instead.`), + (u = 'bilinear')); + case 'nearest': + case 'bilinear': + case 'bicubic': + n = n.affine([e / this.width, 0, 0, o / this.height], { interpolator: u }); + break; + case 'lanczos': + n = n.resize({ width: e, height: o, fit: 'fill', kernel: 'lanczos3' }); + break; + default: + throw new Error(`Resampling method ${u} is not supported.`); + } + return await loadImageFunction(n); + } + } + async pad([e, o, i, u]) { + if ( + ((e = Math.max(e, 0)), + (o = Math.max(o, 0)), + (i = Math.max(i, 0)), + (u = Math.max(u, 0)), + e === 0 && o === 0 && i === 0 && u === 0) + ) + return this; + if (BROWSER_ENV) { + const n = this.channels, + s = this.toCanvas(), + d = this.width + e + o, + f = this.height + i + u, + r = createCanvasFunction(d, f).getContext('2d'); + return ( + r.drawImage(s, 0, 0, this.width, this.height, e, i, d, f), + new RawImage(r.getImageData(0, 0, d, f).data, d, f, 4).convert(n) + ); + } else { + const n = this.toSharp().extend({ left: e, right: o, top: i, bottom: u }); + return await loadImageFunction(n); + } + } + async crop([e, o, i, u]) { + if ( + ((e = Math.max(e, 0)), + (o = Math.max(o, 0)), + (i = Math.min(i, this.width - 1)), + (u = Math.min(u, this.height - 1)), + e === 0 && o === 0 && i === this.width - 1 && u === this.height - 1) + ) + return this; + const n = i - e + 1, + s = u - o + 1; + if (BROWSER_ENV) { + const d = this.channels, + f = this.toCanvas(), + r = createCanvasFunction(n, s).getContext('2d'); + return ( + r.drawImage(f, e, o, n, s, 0, 0, n, s), + new RawImage(r.getImageData(0, 0, n, s).data, n, s, 4).convert(d) + ); + } else { + const d = this.toSharp().extract({ left: e, top: o, width: n, height: s }); + return await loadImageFunction(d); + } + } + async center_crop(e, o) { + if (this.width === e && this.height === o) return this; + const i = (this.width - e) / 2, + u = (this.height - o) / 2; + if (BROWSER_ENV) { + const n = this.channels, + s = this.toCanvas(), + d = createCanvasFunction(e, o).getContext('2d'); + let f = 0, + r = 0, + a = 0, + l = 0; + return ( + i >= 0 ? (f = i) : (a = -i), + u >= 0 ? (r = u) : (l = -u), + d.drawImage(s, f, r, e, o, a, l, e, o), + new RawImage(d.getImageData(0, 0, e, o).data, e, o, 4).convert(n) + ); + } else { + let n = this.toSharp(); + if (i >= 0 && u >= 0) n = n.extract({ left: Math.floor(i), top: Math.floor(u), width: e, height: o }); + else if (i <= 0 && u <= 0) { + const s = Math.floor(-u), + d = Math.floor(-i); + n = n.extend({ top: s, left: d, right: e - this.width - d, bottom: o - this.height - s }); + } else { + let s = [0, 0], + d = 0; + u < 0 ? ((s[0] = Math.floor(-u)), (s[1] = o - this.height - s[0])) : (d = Math.floor(u)); + let f = [0, 0], + r = 0; + i < 0 ? ((f[0] = Math.floor(-i)), (f[1] = e - this.width - f[0])) : (r = Math.floor(i)), + (n = n + .extend({ top: s[0], bottom: s[1], left: f[0], right: f[1] }) + .extract({ left: r, top: d, width: e, height: o })); + } + return await loadImageFunction(n); + } + } + async toBlob(e = 'image/png', o = 1) { + if (!BROWSER_ENV) throw new Error('toBlob() is only supported in browser environments.'); + return await this.toCanvas().convertToBlob({ type: e, quality: o }); + } + toCanvas() { + if (!BROWSER_ENV) throw new Error('toCanvas() is only supported in browser environments.'); + const e = this.clone().rgba(), + o = createCanvasFunction(e.width, e.height), + i = new ImageDataClass(e.data, e.width, e.height); + return o.getContext('2d').putImageData(i, 0, 0), o; + } + _update(e, o, i, u = null) { + return (this.data = e), (this.width = o), (this.height = i), u !== null && (this.channels = u), this; + } + clone() { + return new RawImage(this.data.slice(), this.width, this.height, this.channels); + } + convert(e) { + if (this.channels === e) return this; + switch (e) { + case 1: + this.grayscale(); + break; + case 3: + this.rgb(); + break; + case 4: + this.rgba(); + break; + default: + throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`); + } + return this; + } + async save(e) { + if (BROWSER_ENV) { + if (WEBWORKER_ENV) throw new Error('Unable to save an image from a Web Worker.'); + const o = e.split('.').pop().toLowerCase(), + i = CONTENT_TYPE_MAP.get(o) ?? 'image/png', + u = await this.toBlob(i), + n = URL.createObjectURL(u), + s = document.createElement('a'); + (s.href = n), (s.download = e), s.click(), s.remove(); + } else { + if (env.useFS) return await this.toSharp().toFile(e); + throw new Error('Unable to save the image because filesystem is disabled in this environment.'); + } + } + toSharp() { + if (BROWSER_ENV) throw new Error('toSharp() is only supported in server-side environments.'); + return sharp(this.data, { raw: { width: this.width, height: this.height, channels: this.channels } }); + } +} +function hanning(t) { + if (t < 1) return new Float64Array(); + if (t === 1) return new Float64Array([1]); + const e = t - 1, + o = Math.PI / e, + i = new Float64Array(t); + for (let u = 0; u < t; ++u) { + const n = 2 * u - e; + i[u] = 0.5 + 0.5 * Math.cos(o * n); + } + return i; +} +const HERTZ_TO_MEL_MAPPING = { + htk: (t) => 2595 * Math.log10(1 + t / 700), + kaldi: (t) => 1127 * Math.log(1 + t / 700), + slaney: (t, e = 1e3, o = 15, i = 27 / Math.log(6.4)) => (t >= e ? o + Math.log(t / e) * i : (3 * t) / 200), +}; +function hertz_to_mel(t, e = 'htk') { + const o = HERTZ_TO_MEL_MAPPING[e]; + if (!o) throw new Error('mel_scale should be one of "htk", "slaney" or "kaldi".'); + return typeof t == 'number' ? o(t) : t.map((i) => o(i)); +} +const MEL_TO_HERTZ_MAPPING = { + htk: (t) => 700 * (10 ** (t / 2595) - 1), + kaldi: (t) => 700 * (Math.exp(t / 1127) - 1), + slaney: (t, e = 1e3, o = 15, i = Math.log(6.4) / 27) => (t >= o ? e * Math.exp(i * (t - o)) : (200 * t) / 3), +}; +function mel_to_hertz(t, e = 'htk') { + const o = MEL_TO_HERTZ_MAPPING[e]; + if (!o) throw new Error('mel_scale should be one of "htk", "slaney" or "kaldi".'); + return typeof t == 'number' ? o(t) : t.map((i) => o(i)); +} +function _create_triangular_filter_bank(t, e) { + const o = Float64Array.from({ length: e.length - 1 }, (s, d) => e[d + 1] - e[d]), + i = Array.from({ length: t.length }, () => new Array(e.length)); + for (let s = 0; s < t.length; ++s) { + const d = i[s]; + for (let f = 0; f < e.length; ++f) d[f] = e[f] - t[s]; + } + const u = e.length - 2, + n = Array.from({ length: u }, () => new Array(t.length)); + for (let s = 0; s < t.length; ++s) { + const d = i[s]; + for (let f = 0; f < u; ++f) { + const r = -d[f] / o[f], + a = d[f + 2] / o[f + 1]; + n[f][s] = Math.max(0, Math.min(r, a)); + } + } + return n; +} +function linspace(t, e, o) { + const i = (e - t) / (o - 1); + return Float64Array.from({ length: o }, (u, n) => t + i * n); +} +function mel_filter_bank(t, e, o, i, u, n = null, s = 'htk', d = !1) { + if (n !== null && n !== 'slaney') throw new Error('norm must be one of null or "slaney"'); + const f = hertz_to_mel(o, s), + r = hertz_to_mel(i, s), + a = linspace(f, r, e + 2); + let l = mel_to_hertz(a, s), + p; + if (d) { + const y = u / (t * 2); + (p = hertz_to_mel( + Float64Array.from({ length: t }, (T, v) => v * y), + s + )), + (l = a); + } else p = linspace(0, Math.floor(u / 2), t); + const m = _create_triangular_filter_bank(p, l); + if (n !== null && n === 'slaney') + for (let y = 0; y < e; ++y) { + const T = m[y], + v = 2 / (l[y + 2] - l[y]); + for (let S = 0; S < t; ++S) T[S] *= v; + } + return m; +} +function padReflect(t, e, o) { + const i = new t.constructor(t.length + e + o), + u = t.length - 1; + for (let n = 0; n < t.length; ++n) i[e + n] = t[n]; + for (let n = 1; n <= e; ++n) i[e - n] = t[calculateReflectOffset(n, u)]; + for (let n = 1; n <= o; ++n) i[u + e + n] = t[calculateReflectOffset(u - n, u)]; + return i; +} +function _db_conversion_helper(t, e, o, i, u) { + if (o <= 0) throw new Error('reference must be greater than zero'); + if (i <= 0) throw new Error('min_value must be greater than zero'); + o = Math.max(i, o); + const n = Math.log10(o); + for (let s = 0; s < t.length; ++s) t[s] = e * Math.log10(Math.max(i, t[s]) - n); + if (u !== null) { + if (u <= 0) throw new Error('db_range must be greater than zero'); + const s = max(t)[0] - u; + for (let d = 0; d < t.length; ++d) t[d] = Math.max(t[d], s); + } + return t; +} +function amplitude_to_db(t, e = 1, o = 1e-5, i = null) { + return _db_conversion_helper(t, 20, e, o, i); +} +function power_to_db(t, e = 1, o = 1e-10, i = null) { + return _db_conversion_helper(t, 10, e, o, i); +} +function spectrogram( + t, + e, + o, + i, + { + fft_length: u = null, + power: n = 1, + center: s = !0, + pad_mode: d = 'reflect', + onesided: f = !0, + preemphasis: r = null, + mel_filters: a = null, + mel_floor: l = 1e-10, + log_mel: p = null, + reference: m = 1, + min_value: y = 1e-10, + db_range: T = null, + remove_dc_offset: v = null, + max_num_frames: S = null, + do_pad: E = !0, + transpose: A = !1, + } = {} +) { + const F = e.length; + if ((u === null && (u = o), o > u)) throw Error(`frame_length (${o}) may not be larger than fft_length (${u})`); + if (F !== o) throw new Error(`Length of the window (${F}) must equal frame_length (${o})`); + if (i <= 0) throw new Error('hop_length must be greater than zero'); + if (s) { + if (d !== 'reflect') throw new Error(`pad_mode="${d}" not implemented yet.`); + const he = Math.floor((u - 1) / 2) + 1; + t = padReflect(t, he, he); + } + const B = Math.floor(1 + Math.floor((t.length - o) / i)), + J = f ? Math.floor(u / 2) + 1 : u; + let Q = B, + re = B; + S !== null && (S > B ? E && (re = S) : (re = Q = S)); + const V = new FFT(u), + de = new Float64Array(u), + ke = new Float64Array(V.outputBufferSize), + Ne = new Array(Q); + for (let he = 0; he < Q; ++he) { + const ue = he * i; + for (let X = 0; X < o; ++X) de[X] = t[ue + X]; + if (v) { + let X = 0; + for (let we = 0; we < o; ++we) X += de[we]; + const ve = X / o; + for (let we = 0; we < o; ++we) de[we] -= ve; + } + if (r !== null) { + for (let X = o - 1; X >= 1; --X) de[X] -= r * de[X - 1]; + de[0] *= 1 - r; + } + for (let X = 0; X < e.length; ++X) de[X] *= e[X]; + V.realTransform(ke, de); + const pe = new Array(J); + for (let X = 0; X < pe.length; ++X) { + const ve = X << 1; + pe[X] = ke[ve] ** 2 + ke[ve + 1] ** 2; + } + Ne[he] = pe; + } + if (n !== null && n !== 2) { + const he = 2 / n; + for (let ue = 0; ue < Ne.length; ++ue) { + const pe = Ne[ue]; + for (let X = 0; X < pe.length; ++X) pe[X] **= he; + } + } + const Me = a.length, + Y = new Float32Array(Me * re), + _e = A ? [re, Me] : [Me, re]; + for (let he = 0; he < Me; ++he) { + const ue = a[he]; + for (let pe = 0; pe < Q; ++pe) { + const X = Ne[pe]; + let ve = 0; + for (let we = 0; we < J; ++we) ve += ue[we] * X[we]; + Y[A ? pe * Me + he : he * Q + pe] = Math.max(l, ve); + } + } + if (n !== null && p !== null) { + const he = Math.min(Y.length, Q * Me); + switch (p) { + case 'log': + for (let ue = 0; ue < he; ++ue) Y[ue] = Math.log(Y[ue]); + break; + case 'log10': + for (let ue = 0; ue < he; ++ue) Y[ue] = Math.log10(Y[ue]); + break; + case 'dB': + if (n === 1) amplitude_to_db(Y, m, y, T); + else if (n === 2) power_to_db(Y, m, y, T); + else throw new Error(`Cannot use log_mel option '${p}' with power ${n}`); + break; + default: + throw new Error(`log_mel must be one of null, 'log', 'log10' or 'dB'. Got '${p}'`); + } + } + return { data: Y, dims: _e }; +} +function window_function(t, e, { periodic: o = !0, frame_length: i = null, center: u = !0 } = {}) { + const n = o ? t + 1 : t; + let s; + switch (e) { + case 'boxcar': + s = new Float64Array(n).fill(1); + break; + case 'hann': + case 'hann_window': + s = hanning(n); + break; + case 'povey': + s = hanning(n).map((d) => Math.pow(d, 0.85)); + break; + default: + throw new Error(`Unknown window type ${e}.`); + } + if ((o && (s = s.subarray(0, t)), i === null)) return s; + if (t > i) throw new Error(`Length of the window (${t}) may not be larger than frame_length (${i})`); + return s; +} +function center_to_corners_format([t, e, o, i]) { + return [t - o / 2, e - i / 2, t + o / 2, e + i / 2]; +} +function post_process_object_detection(t, e = 0.5, o = null, i = !1) { + const u = t.logits, + n = t.pred_boxes, + [s, d, f] = u.dims; + if (o !== null && o.length !== s) + throw Error('Make sure that you pass in as many target sizes as the batch dimension of the logits'); + let r = []; + for (let a = 0; a < s; ++a) { + let l = o !== null ? o[a] : null, + p = { boxes: [], classes: [], scores: [] }, + m = u[a], + y = n[a]; + for (let T = 0; T < d; ++T) { + let v = m[T], + S = [], + E; + if (i) { + E = v.sigmoid().data; + for (let A = 0; A < E.length; ++A) E[A] > e && S.push(A); + } else { + let A = max(v.data)[1]; + if (A === f - 1) continue; + S.push(A), (E = softmax(v.data)); + } + for (const A of S) { + let F = y[T].data; + (F = center_to_corners_format(F)), + l !== null && (F = F.map((B, J) => B * l[(J + 1) % 2])), + p.boxes.push(F), + p.classes.push(A), + p.scores.push(E[A]); + } + } + r.push(p); + } + return r; +} +function validate_audio_inputs(t, e) { + if (!(t instanceof Float32Array || t instanceof Float64Array)) + throw new Error( + `${e} expects input to be a Float32Array or a Float64Array, but got ${ + t?.constructor?.name ?? typeof t + } instead. If using the feature extractor directly, remember to use \`read_audio(url, sampling_rate)\` to obtain the raw audio data of the file/url.` + ); +} +function constraint_to_multiple_of(t, e, o = 0, i = null) { + let u = Math.round(t / e) * e; + return i !== null && u > i && (u = Math.floor(t / e) * e), u < o && (u = Math.ceil(t / e) * e), u; +} +function enforce_size_divisibility([t, e], o) { + return [Math.floor(t / o) * o, Math.floor(e / o) * o]; +} +class FeatureExtractor extends Callable { + constructor(e) { + super(), (this.config = e); + } +} +class ImageFeatureExtractor extends FeatureExtractor { + constructor(e) { + super(e), + (this.image_mean = this.config.image_mean ?? this.config.mean), + (this.image_std = this.config.image_std ?? this.config.std), + (this.resample = this.config.resample ?? 2), + (this.do_rescale = this.config.do_rescale ?? !0), + (this.rescale_factor = this.config.rescale_factor ?? 1 / 255), + (this.do_normalize = this.config.do_normalize), + (this.do_resize = this.config.do_resize), + (this.do_thumbnail = this.config.do_thumbnail), + (this.size = this.config.size), + (this.size_divisibility = this.config.size_divisibility ?? this.config.size_divisor), + (this.do_center_crop = this.config.do_center_crop), + (this.crop_size = this.config.crop_size), + (this.do_convert_rgb = this.config.do_convert_rgb ?? !0), + (this.do_crop_margin = this.config.do_crop_margin), + (this.pad_size = this.config.pad_size), + (this.do_pad = this.config.do_pad), + this.do_pad && + !this.pad_size && + this.size && + this.size.width !== void 0 && + this.size.height !== void 0 && + (this.pad_size = this.size); + } + async thumbnail(e, o, i = 2) { + const u = e.height, + n = e.width, + s = o.height, + d = o.width; + let f = Math.min(u, s), + r = Math.min(n, d); + return f === u && r === n + ? e + : (u > n ? (r = Math.floor((n * f) / u)) : n > u && (f = Math.floor((u * r) / n)), + await e.resize(r, f, { resample: i })); + } + async crop_margin(e, o = 200) { + const i = e.clone().grayscale(), + u = min(i.data)[0], + s = max(i.data)[0] - u; + if (s === 0) return e; + const d = o / 255; + let f = i.width, + r = i.height, + a = 0, + l = 0; + for (let p = 0; p < i.height; ++p) { + const m = p * i.width; + for (let y = 0; y < i.width; ++y) + (i.data[m + y] - u) / s < d && + ((f = Math.min(f, y)), (r = Math.min(r, p)), (a = Math.max(a, y)), (l = Math.max(l, p))); + } + return (e = await e.crop([f, r, a, l])), e; + } + pad_image(e, o, i, { mode: u = 'constant', center: n = !1, constant_values: s = 0 } = {}) { + const [d, f, r] = o; + let a, l; + if ((typeof i == 'number' ? ((a = i), (l = i)) : ((a = i.width), (l = i.height)), a !== d || l !== f)) { + const p = new Float32Array(a * l * r); + if (Array.isArray(s)) for (let T = 0; T < p.length; ++T) p[T] = s[T % r]; + else s !== 0 && p.fill(s); + const [m, y] = n ? [Math.floor((a - d) / 2), Math.floor((l - f) / 2)] : [0, 0]; + for (let T = 0; T < f; ++T) { + const v = (T + y) * a, + S = T * d; + for (let E = 0; E < d; ++E) { + const A = (v + E + m) * r, + F = (S + E) * r; + for (let B = 0; B < r; ++B) p[A + B] = e[F + B]; + } + } + if (u === 'symmetric') { + if (n) throw new Error('`center` padding is not supported when `mode` is set to `symmetric`.'); + const T = f - 1, + v = d - 1; + for (let S = 0; S < l; ++S) { + const E = S * a, + A = calculateReflectOffset(S, T) * d; + for (let F = 0; F < a; ++F) { + if (S < f && F < d) continue; + const B = (E + F) * r, + J = (A + calculateReflectOffset(F, v)) * r; + for (let Q = 0; Q < r; ++Q) p[B + Q] = e[J + Q]; + } + } + } + (e = p), (o = [l, a, r]); + } + return [e, o]; + } + rescale(e) { + for (let o = 0; o < e.length; ++o) e[o] = this.rescale_factor * e[o]; + } + get_resize_output_image_size(e, o) { + const [i, u] = e.size; + let n, s; + if (this.do_thumbnail) { + const { height: d, width: f } = o; + n = Math.min(d, f); + } else + Number.isInteger(o) + ? ((n = o), (s = this.config.max_size ?? n)) + : o !== void 0 && ((n = o.shortest_edge), (s = o.longest_edge)); + if (n !== void 0 || s !== void 0) { + const d = n === void 0 ? 1 : Math.max(n / i, n / u), + f = i * d, + r = u * d, + a = s === void 0 ? 1 : Math.min(s / f, s / r); + let l = Math.floor(Number((f * a).toFixed(2))), + p = Math.floor(Number((r * a).toFixed(2))); + return ( + this.size_divisibility !== void 0 && + ([l, p] = enforce_size_divisibility([l, p], this.size_divisibility)), + [l, p] + ); + } else if (o !== void 0 && o.width !== void 0 && o.height !== void 0) { + let d = o.width, + f = o.height; + if (this.config.keep_aspect_ratio && this.config.ensure_multiple_of) { + let r = o.height / u, + a = o.width / i; + Math.abs(1 - a) < Math.abs(1 - r) ? (r = a) : (a = r), + (f = constraint_to_multiple_of(r * u, this.config.ensure_multiple_of)), + (d = constraint_to_multiple_of(a * i, this.config.ensure_multiple_of)); + } + return [d, f]; + } else { + if (this.size_divisibility !== void 0) return enforce_size_divisibility([i, u], this.size_divisibility); + throw new Error( + `Could not resize image due to unsupported \`this.size\` option in config: ${JSON.stringify(o)}` + ); + } + } + async resize(e) { + const [o, i] = this.get_resize_output_image_size(e, this.size); + return await e.resize(o, i, { resample: this.resample }); + } + async preprocess( + e, + { do_normalize: o = null, do_pad: i = null, do_convert_rgb: u = null, do_convert_grayscale: n = null } = {} + ) { + this.do_crop_margin && (e = await this.crop_margin(e)); + const [s, d] = e.size; + if ( + (u ?? this.do_convert_rgb ? (e = e.rgb()) : n && (e = e.grayscale()), + this.do_resize && (e = await this.resize(e)), + this.do_thumbnail && (e = await this.thumbnail(e, this.size, this.resample)), + this.do_center_crop) + ) { + let m, y; + Number.isInteger(this.crop_size) + ? ((m = this.crop_size), (y = this.crop_size)) + : ((m = this.crop_size.width), (y = this.crop_size.height)), + (e = await e.center_crop(m, y)); + } + const f = [e.height, e.width]; + let r = Float32Array.from(e.data), + a = [e.height, e.width, e.channels]; + if ((this.do_rescale && this.rescale(r), o ?? this.do_normalize)) { + let m = this.image_mean; + Array.isArray(this.image_mean) || (m = new Array(e.channels).fill(m)); + let y = this.image_std; + if ( + (Array.isArray(this.image_std) || (y = new Array(e.channels).fill(m)), + m.length !== e.channels || y.length !== e.channels) + ) + throw new Error( + `When set to arrays, the length of \`image_mean\` (${m.length}) and \`image_std\` (${y.length}) must match the number of channels in the image (${e.channels}).` + ); + for (let T = 0; T < r.length; T += e.channels) + for (let v = 0; v < e.channels; ++v) r[T + v] = (r[T + v] - this.image_mean[v]) / this.image_std[v]; + } + if (this.do_pad && this.pad_size) { + const m = new Float32Array(this.pad_size.width * this.pad_size.height * e.channels); + for (let y = 0; y < e.height; ++y) { + const T = y * this.pad_size.width, + v = y * e.width; + for (let S = 0; S < e.width; ++S) { + const E = (T + S) * e.channels, + A = (v + S) * e.channels; + for (let F = 0; F < e.channels; ++F) m[E + F] = r[A + F]; + } + } + (r = m), (a = [this.pad_size.height, this.pad_size.width, e.channels]); + } + const l = new Tensor('float32', r, a), + p = transpose(l, [2, 0, 1]); + return { original_size: [d, s], reshaped_input_size: f, pixel_values: p }; + } + async _call(e, ...o) { + Array.isArray(e) || (e = [e]); + const i = await Promise.all(e.map((n) => this.preprocess(n))); + return { + pixel_values: stack( + i.map((n) => n.pixel_values), + 0 + ), + original_sizes: i.map((n) => n.original_size), + reshaped_input_sizes: i.map((n) => n.reshaped_input_size), + }; + } +} +class SegformerFeatureExtractor extends ImageFeatureExtractor { + post_process_semantic_segmentation(e, o = null) { + const i = e.logits, + u = i.dims[0]; + if (o !== null && o.length !== u) + throw Error('Make sure that you pass in as many target sizes as the batch dimension of the logits'); + const n = []; + for (let s = 0; s < u; ++s) { + const d = o !== null ? o[s] : null; + let f = i[s]; + d !== null && (f = interpolate(f, d, 'bilinear', !1)); + const [r, a] = d ?? f.dims.slice(-2), + l = new Tensor('int32', new Int32Array(r * a), [r, a]), + p = f[0].data; + for (let v = 1; v < f.dims[0]; ++v) { + const S = f[v].data; + for (let E = 0; E < S.length; ++E) S[E] > p[E] && ((p[E] = S[E]), (l.data[E] = v)); + } + const m = new Array(f.dims[0]), + y = l.data; + for (let v = 0; v < y.length; ++v) { + const S = y[v]; + m[S] = S; + } + const T = m.filter((v) => v !== void 0); + n.push({ segmentation: l, labels: T }); + } + return n; + } +} +class DPTImageProcessor extends ImageFeatureExtractor {} +class BitImageProcessor extends ImageFeatureExtractor {} +class DPTFeatureExtractor extends ImageFeatureExtractor {} +class GLPNFeatureExtractor extends ImageFeatureExtractor {} +class CLIPFeatureExtractor extends ImageFeatureExtractor {} +class ChineseCLIPFeatureExtractor extends ImageFeatureExtractor {} +class SiglipImageProcessor extends ImageFeatureExtractor {} +class ConvNextFeatureExtractor extends ImageFeatureExtractor { + constructor(e) { + super(e), (this.crop_pct = this.config.crop_pct ?? 224 / 256); + } + async resize(e) { + const o = this.size?.shortest_edge; + if (o === void 0) throw new Error("Size dictionary must contain 'shortest_edge' key."); + if (o < 384) { + const i = Math.floor(o / this.crop_pct), + [u, n] = this.get_resize_output_image_size(e, { shortest_edge: i }); + (e = await e.resize(u, n, { resample: this.resample })), (e = await e.center_crop(o, o)); + } else e = await e.resize(o, o, { resample: this.resample }); + return e; + } +} +class ConvNextImageProcessor extends ConvNextFeatureExtractor {} +class ViTFeatureExtractor extends ImageFeatureExtractor {} +class ViTImageProcessor extends ImageFeatureExtractor {} +class MobileViTFeatureExtractor extends ImageFeatureExtractor {} +class OwlViTFeatureExtractor extends ImageFeatureExtractor { + post_process_object_detection(...e) { + return post_process_object_detection(...e); + } +} +class Owlv2ImageProcessor extends OwlViTFeatureExtractor {} +class DeiTFeatureExtractor extends ImageFeatureExtractor {} +class BeitFeatureExtractor extends ImageFeatureExtractor {} +class DonutFeatureExtractor extends ImageFeatureExtractor { + pad_image(e, o, i, u = {}) { + const [n, s, d] = o; + let f = this.image_mean; + Array.isArray(this.image_mean) || (f = new Array(d).fill(f)); + let r = this.image_std; + Array.isArray(r) || (r = new Array(d).fill(f)); + const a = f.map((l, p) => -l / this.image_std[p]); + return super.pad_image(e, o, i, { center: !0, constant_values: a, ...u }); + } +} +class NougatImageProcessor extends DonutFeatureExtractor {} +class DetrFeatureExtractor extends ImageFeatureExtractor { + async _call(e) { + const o = await super._call(e), + i = [o.pixel_values.dims[0], 64, 64], + u = new Tensor('int64', new BigInt64Array(i.reduce((n, s) => n * s)).fill(1n), i); + return { ...o, pixel_mask: u }; + } + post_process_object_detection(...e) { + return post_process_object_detection(...e); + } + remove_low_and_no_objects(e, o, i, u) { + let n = [], + s = [], + d = []; + for (let f = 0; f < e.dims[0]; ++f) { + let r = e[f], + a = o[f], + l = max(r.data)[1]; + if (l === u) continue; + let m = softmax(r.data)[l]; + m > i && (n.push(a), s.push(m), d.push(l)); + } + return [n, s, d]; + } + check_segment_validity(e, o, i, u = 0.5, n = 0.8) { + let s = [], + d = 0, + f = 0; + for (let a = 0; a < e.length; ++a) e[a] === i && (s.push(a), ++d), o[i].data[a] >= u && ++f; + let r = d > 0 && f > 0; + return r && (r = d / f > n), [r, s]; + } + compute_segments(e, o, i, u, n, s = null, d = null) { + let [f, r] = d ?? e[0].dims, + a = new Tensor('int32', new Int32Array(f * r), [f, r]), + l = []; + if (d !== null) for (let T = 0; T < e.length; ++T) e[T] = interpolate(e[T], d, 'bilinear', !1); + let p = new Int32Array(e[0].data.length), + m = new Float32Array(e[0].data.length); + for (let T = 0; T < e.length; ++T) { + let v = o[T]; + for (let S = 0; S < e[T].data.length; ++S) + (e[T].data[S] *= v), e[T].data[S] > m[S] && ((p[S] = T), (m[S] = e[T].data[S])); + } + let y = 0; + for (let T = 0; T < i.length; ++T) { + let v = i[T], + [S, E] = this.check_segment_validity(p, e, T, u, n); + if (S) { + ++y; + for (let A of E) a.data[A] = y; + l.push({ id: y, label_id: v, score: o[T] }); + } + } + return [a, l]; + } + post_process_panoptic_segmentation(e, o = 0.5, i = 0.5, u = 0.8, n = null, s = null) { + n === null && (console.warn('`label_ids_to_fuse` unset. No instance will be fused.'), (n = new Set())); + const d = e.logits, + r = e.pred_masks.sigmoid(); + let [a, l, p] = d.dims; + if (((p -= 1), s !== null && s.length !== a)) + throw Error('Make sure that you pass in as many target sizes as the batch dimension of the logits'); + let m = []; + for (let y = 0; y < a; ++y) { + let T = s !== null ? s[y] : null, + v = d[y], + S = r[y], + [E, A, F] = this.remove_low_and_no_objects(v, S, o, p); + if (F.length === 0) { + let [Q, re] = T ?? S.dims.slice(-2), + V = new Tensor('int32', new Int32Array(Q * re).fill(-1), [Q, re]); + m.push({ segmentation: V, segments_info: [] }); + continue; + } + let [B, J] = this.compute_segments(E, A, F, i, u, n, T); + m.push({ segmentation: B, segments_info: J }); + } + return m; + } + post_process_instance_segmentation() { + throw Error('Not implemented yet'); + } +} +class YolosFeatureExtractor extends ImageFeatureExtractor { + post_process_object_detection(...e) { + return post_process_object_detection(...e); + } +} +class SamImageProcessor extends ImageFeatureExtractor { + reshape_input_points(e, o, i) { + e = structuredClone(e); + let u = calculateDimensions(e); + if (u.length === 3) (u = [1, ...u]), (e = [e]); + else if (u.length !== 4) + throw Error( + 'The input_points must be a 4D tensor of shape `batch_size`, `point_batch_size`, `nb_points_per_image`, `2`.' + ); + for (let n = 0; n < e.length; ++n) { + let s = o[n], + d = i[n], + f = [d[0] / s[0], d[1] / s[1]]; + for (let r = 0; r < e[n].length; ++r) + for (let a = 0; a < e[n][r].length; ++a) + for (let l = 0; l < e[n][r][a].length; ++l) e[n][r][a][l] *= f[l]; + } + return new Tensor('float32', Float32Array.from(e.flat(1 / 0)), u); + } + add_input_labels(e, o) { + let i = calculateDimensions(e); + if (i.length === 2) (i = [1, ...i]), (e = [e]); + else if (i.length !== 3) + throw Error( + 'The input_points must be a 4D tensor of shape `batch_size`, `point_batch_size`, `nb_points_per_image`, `2`.' + ); + if (i.some((u, n) => u !== o.dims[n])) + throw Error(`The first ${i.length} dimensions of 'input_points' and 'input_labels' must be the same.`); + return new Tensor('int64', e.flat(1 / 0).map(BigInt), i); + } + async _call(e, o = null, i = null) { + const u = await super._call(e); + if ((o && (u.input_points = this.reshape_input_points(o, u.original_sizes, u.reshaped_input_sizes)), i)) { + if (!u.input_points) throw Error('`input_points` must be provided if `input_labels` are provided.'); + u.input_labels = this.add_input_labels(i, u.input_points); + } + return u; + } + post_process_masks(e, o, i, { mask_threshold: u = 0, binarize: n = !0, pad_size: s = null } = {}) { + const d = []; + s = s ?? this.pad_size; + const f = [s.height, s.width]; + for (let r = 0; r < o.length; ++r) { + const a = o[r], + l = i[r], + p = e[r], + m = []; + for (let y = 0; y < p.dims[0]; ++y) { + const T = p[y]; + let v = interpolate(T, f, 'bilinear', !1); + if (((v = v.slice(null, [0, l[0]], [0, l[1]])), (v = interpolate(v, a, 'bilinear', !1)), n)) { + const S = new Uint8Array(v.data.length); + for (let E = 0; E < v.data.length; ++E) v.data[E] > u && (S[E] = 1); + v = new Tensor('bool', S, v.dims); + } + m.push(v); + } + d.push(stack(m)); + } + return d; + } + generate_crop_boxes( + e, + o, + { + crop_n_layers: i = 0, + overlap_ratio: u = 512 / 1500, + points_per_crop: n = 32, + crop_n_points_downscale_factor: s = 1, + } = {} + ) {} +} +class Swin2SRImageProcessor extends ImageFeatureExtractor { + pad_image(e, o, i, u = {}) { + const [n, s, d] = o; + return super.pad_image( + e, + o, + { width: n + ((i - (n % i)) % i), height: s + ((i - (s % i)) % i) }, + { mode: 'symmetric', center: !1, constant_values: -1, ...u } + ); + } +} +class VitMatteImageProcessor extends ImageFeatureExtractor { + async _call(e, o) { + Array.isArray(e) || (e = [e]), Array.isArray(o) || (o = [o]); + const i = await Promise.all(e.map((s) => this.preprocess(s))), + u = await Promise.all( + o.map((s) => this.preprocess(s, { do_normalize: !1, do_convert_rgb: !1, do_convert_grayscale: !0 })) + ); + return { + pixel_values: stack( + i.map((s, d) => cat([s.pixel_values, u[d].pixel_values], 0)), + 0 + ), + original_sizes: i.map((s) => s.original_size), + reshaped_input_sizes: i.map((s) => s.reshaped_input_size), + }; + } +} +class WhisperFeatureExtractor extends FeatureExtractor { + constructor(e) { + super(e), + (this.config.mel_filters ??= mel_filter_bank( + Math.floor(1 + this.config.n_fft / 2), + this.config.feature_size, + 0, + 8e3, + this.config.sampling_rate, + 'slaney', + 'slaney' + )), + (this.window = window_function(this.config.n_fft, 'hann')); + } + _extract_fbank_features(e) { + const { data: o, dims: i } = spectrogram(e, this.window, this.config.n_fft, this.config.hop_length, { + power: 2, + mel_filters: this.config.mel_filters, + log_mel: 'log10', + max_num_frames: this.config.nb_max_frames, + }), + u = max(o)[0]; + for (let n = 0; n < o.length; ++n) o[n] = (Math.max(o[n], u - 8) + 4) / 4; + return { data: o, dims: i }; + } + async _call(e) { + validate_audio_inputs(e, 'WhisperFeatureExtractor'); + let o; + e.length > this.config.n_samples + ? (console.warn( + 'Attempting to extract features for audio longer than 30 seconds. If using a pipeline to extract transcript from a long audio clip, remember to specify `chunk_length_s` and/or `stride_length_s`.' + ), + (o = e.slice(0, this.config.n_samples))) + : ((o = new Float32Array(this.config.n_samples)), o.set(e)); + const { data: i, dims: u } = this._extract_fbank_features(o); + return { input_features: new Tensor('float32', i, [1, ...u]) }; + } +} +class Wav2Vec2FeatureExtractor extends FeatureExtractor { + _zero_mean_unit_var_norm(e) { + const i = e.reduce((n, s) => n + s, 0) / e.length, + u = e.reduce((n, s) => n + (s - i) ** 2, 0) / e.length; + return e.map((n) => (n - i) / Math.sqrt(u + 1e-7)); + } + async _call(e) { + validate_audio_inputs(e, 'Wav2Vec2FeatureExtractor'), e instanceof Float64Array && (e = new Float32Array(e)); + let o = e; + this.config.do_normalize && (o = this._zero_mean_unit_var_norm(o)); + const i = [1, o.length]; + return { + input_values: new Tensor('float32', o, i), + attention_mask: new Tensor('int64', new BigInt64Array(o.length).fill(1n), i), + }; + } +} +class SeamlessM4TFeatureExtractor extends FeatureExtractor { + constructor(e) { + super(e); + const o = this.config.sampling_rate, + i = mel_filter_bank(256, this.config.num_mel_bins, 20, Math.floor(o / 2), o, null, 'kaldi', !0); + for (let u = 0; u < i.length; ++u) i[u].push(0); + (this.mel_filters = i), (this.window = window_function(400, 'povey', { periodic: !1 })); + } + _extract_fbank_features(e, o) { + return ( + (e = e.map((i) => i * 32768)), + spectrogram(e, this.window, 400, 160, { + fft_length: 512, + power: 2, + center: !1, + preemphasis: 0.97, + mel_filters: this.mel_filters, + log_mel: 'log', + mel_floor: 1192092955078125e-22, + remove_dc_offset: !0, + max_num_frames: o, + transpose: !0, + }) + ); + } + async _call( + e, + { + padding: o = !0, + pad_to_multiple_of: i = 2, + do_normalize_per_mel_bins: u = !0, + return_attention_mask: n = !0, + } = {} + ) { + validate_audio_inputs(e, 'SeamlessM4TFeatureExtractor'); + let s = this._extract_fbank_features(e, this.config.max_length); + if (u) { + const [y, T] = s.dims; + for (let v = 0; v < T; ++v) { + let S = 0; + for (let B = 0; B < y; ++B) S += s.data[B * T + v]; + const E = S / y; + let A = 0; + for (let B = 0; B < y; ++B) A += (s.data[B * T + v] - E) ** 2; + A /= y - 1; + const F = Math.sqrt(A + 1e-7); + for (let B = 0; B < y; ++B) { + const J = B * T + v; + s.data[J] = (s.data[J] - E) / F; + } + } + } + let d; + if (o) { + const [y, T] = s.dims, + v = y % i; + if (v > 0) { + const S = new Float32Array(T * (y + v)); + S.set(s.data), S.fill(this.config.padding_value, s.data.length); + const E = y + v; + (s = { data: S, dims: [E, T] }), + n && ((d = new Tensor('int64', new BigInt64Array(E), [1, E])), d.data.fill(1n, 0, y)); + } + } + const [f, r] = s.dims, + a = this.config.stride; + if (f % a !== 0) throw new Error(`The number of frames (${f}) must be a multiple of the stride (${a}).`); + const p = new Tensor('float32', s.data, s.dims).view(1, Math.floor(f / a), r * a), + m = { input_features: p }; + if (n) { + const y = p.dims[1], + T = new Tensor('int64', new BigInt64Array(y), [1, y]); + if (d) for (let v = 1, S = 0; v < f; v += a, ++S) T.data[S] = d.data[v]; + else T.data.fill(1n); + m.attention_mask = T; + } + return m; + } +} +class ASTFeatureExtractor extends FeatureExtractor { + constructor(e) { + super(e); + const o = this.config.sampling_rate, + i = mel_filter_bank(256, this.config.num_mel_bins, 20, Math.floor(o / 2), o, null, 'kaldi', !0); + for (let u = 0; u < i.length; ++u) i[u].push(0); + (this.mel_filters = i), + (this.window = window_function(400, 'hann', { periodic: !1 })), + (this.mean = this.config.mean), + (this.std = this.config.std); + } + _extract_fbank_features(e, o) { + return spectrogram(e, this.window, 400, 160, { + fft_length: 512, + power: 2, + center: !1, + preemphasis: 0.97, + mel_filters: this.mel_filters, + log_mel: 'log', + mel_floor: 1192092955078125e-22, + remove_dc_offset: !0, + max_num_frames: o, + transpose: !0, + }); + } + async _call(e) { + validate_audio_inputs(e, 'ASTFeatureExtractor'); + const o = this._extract_fbank_features(e, this.config.max_length); + if (this.config.do_normalize) { + const i = this.std * 2; + for (let u = 0; u < o.data.length; ++u) o.data[u] = (o.data[u] - this.mean) / i; + } + return { input_values: new Tensor('float32', o.data, [1, ...o.dims]) }; + } +} +class ClapFeatureExtractor extends FeatureExtractor { + constructor(e) { + super(e), + (this.mel_filters = mel_filter_bank( + this.config.nb_frequency_bins, + this.config.feature_size, + this.config.frequency_min, + this.config.frequency_max, + this.config.sampling_rate, + null, + 'htk' + )), + (this.mel_filters_slaney = mel_filter_bank( + this.config.nb_frequency_bins, + this.config.feature_size, + this.config.frequency_min, + this.config.frequency_max, + this.config.sampling_rate, + 'slaney', + 'slaney' + )), + (this.window = window_function(this.config.fft_window_size, 'hann')); + } + _get_input_mel(e, o, i, u) { + let n, + s = !1; + const d = e.length - o; + if (d > 0) + if (i === 'rand_trunc') { + s = !0; + const f = Math.floor(Math.random() * (d + 1)); + (e = e.subarray(f, f + o)), + (n = this._extract_fbank_features(e, this.mel_filters_slaney, this.config.nb_max_samples)), + (n.dims = [1, ...n.dims]); + } else throw new Error(`Truncation strategy "${i}" not implemented`); + else { + if (d < 0) { + let f = new Float64Array(o); + if ((f.set(e), u === 'repeat')) + for (let r = e.length; r < o; r += e.length) f.set(e.subarray(0, Math.min(e.length, o - r)), r); + else if (u === 'repeatpad') for (let r = e.length; r < -d; r += e.length) f.set(e, r); + e = f; + } + if (i === 'fusion') throw new Error(`Truncation strategy "${i}" not implemented`); + (n = this._extract_fbank_features(e, this.mel_filters_slaney, this.config.nb_max_samples)), + (n.dims = [1, ...n.dims]); + } + return { ...n, longer: s }; + } + _extract_fbank_features(e, o, i = null) { + return spectrogram(e, this.window, this.config.fft_window_size, this.config.hop_length, { + power: 2, + mel_filters: o, + log_mel: 'dB', + max_num_frames: i, + do_pad: !1, + transpose: !0, + }); + } + async _call(e, { max_length: o = null } = {}) { + validate_audio_inputs(e, 'ClapFeatureExtractor'); + const i = this._get_input_mel(e, o ?? this.config.nb_max_samples, this.config.truncation, this.config.padding); + return { input_features: new Tensor('float32', i.data, [1, ...i.dims]) }; + } +} +class SpeechT5FeatureExtractor extends FeatureExtractor {} +class Processor extends Callable { + constructor(e) { + super(), (this.feature_extractor = e); + } + async _call(e, ...o) { + return await this.feature_extractor(e, ...o); + } +} +class SamProcessor extends Processor { + async _call(...e) { + return await this.feature_extractor(...e); + } + post_process_masks(...e) { + return this.feature_extractor.post_process_masks(...e); + } + reshape_input_points(...e) { + return this.feature_extractor.reshape_input_points(...e); + } +} +class WhisperProcessor extends Processor { + async _call(e) { + return await this.feature_extractor(e); + } +} +class Wav2Vec2ProcessorWithLM extends Processor { + async _call(e) { + return await this.feature_extractor(e); + } +} +class SpeechT5Processor extends Processor { + async _call(e) { + return await this.feature_extractor(e); + } +} +class OwlViTProcessor extends Processor {} +class AutoProcessor { + static FEATURE_EXTRACTOR_CLASS_MAPPING = { + ImageFeatureExtractor, + WhisperFeatureExtractor, + ViTFeatureExtractor, + MobileViTFeatureExtractor, + OwlViTFeatureExtractor, + Owlv2ImageProcessor, + CLIPFeatureExtractor, + ChineseCLIPFeatureExtractor, + SiglipImageProcessor, + ConvNextFeatureExtractor, + ConvNextImageProcessor, + SegformerFeatureExtractor, + BitImageProcessor, + DPTImageProcessor, + DPTFeatureExtractor, + GLPNFeatureExtractor, + BeitFeatureExtractor, + DeiTFeatureExtractor, + DetrFeatureExtractor, + YolosFeatureExtractor, + DonutFeatureExtractor, + NougatImageProcessor, + ViTImageProcessor, + VitMatteImageProcessor, + SamImageProcessor, + Swin2SRImageProcessor, + Wav2Vec2FeatureExtractor, + SeamlessM4TFeatureExtractor, + SpeechT5FeatureExtractor, + ASTFeatureExtractor, + ClapFeatureExtractor, + }; + static PROCESSOR_CLASS_MAPPING = { + WhisperProcessor, + Wav2Vec2ProcessorWithLM, + SamProcessor, + SpeechT5Processor, + OwlViTProcessor, + }; + static async from_pretrained( + e, + { + progress_callback: o = null, + config: i = null, + cache_dir: u = null, + local_files_only: n = !1, + revision: s = 'main', + } = {} + ) { + let d = + i ?? + (await getModelJSON(e, 'preprocessor_config.json', !0, { + progress_callback: o, + config: i, + cache_dir: u, + local_files_only: n, + revision: s, + })), + f = d.feature_extractor_type ?? d.image_processor_type, + r = this.FEATURE_EXTRACTOR_CLASS_MAPPING[f]; + if (!r) + if (d.size !== void 0) + console.warn( + `Feature extractor type "${f}" not found, assuming ImageFeatureExtractor due to size parameter in config.` + ), + (r = ImageFeatureExtractor); + else throw new Error(`Unknown Feature Extractor type: ${f}`); + let a = this.PROCESSOR_CLASS_MAPPING[d.processor_class] ?? Processor, + l = new r(d); + return new a(l); + } +} +if (!navigator.gpu) { + const t = 'WebGPU is not supported by this browser.'; + throw (alert(t), Error(t)); +} +env.backends.onnx.wasm.proxy = !0; +env.backends.onnx.wasm.wasmPaths = 'https://cdn.jsdelivr.net/npm/onnxruntime-web@1.17.1/dist/'; +env.backends.onnx.wasm.numThreads = 1; +env.experimental.useWebGPU = !0; +const EXAMPLE_URL = + 'https://images.pexels.com/photos/5965592/pexels-photo-5965592.jpeg?auto=compress&cs=tinysrgb&w=1024', + status = document.getElementById('status'), + fileUpload = document.getElementById('upload'), + imageContainer = document.getElementById('container'), + example = document.getElementById('example'); +status.textContent = 'AI 모델 로딩중...'; +let model; +try { + model = await AutoModel.from_pretrained('briaai/RMBG-1.4', { config: { model_type: 'custom' }, quantized: !1 }); +} catch (t) { + throw ((status.textContent = t.message), alert(t.message), t); +} +const processor = await AutoProcessor.from_pretrained('briaai/RMBG-1.4', { + config: { + do_normalize: !0, + do_pad: !1, + do_rescale: !0, + do_resize: !0, + image_mean: [0.5, 0.5, 0.5], + feature_extractor_type: 'ImageFeatureExtractor', + image_std: [1, 1, 1], + resample: 2, + rescale_factor: 0.00392156862745098, + size: { width: 1024, height: 1024 }, + }, +}); +status.textContent = 'AI 모델 설치중...'; +const [b, c, h, w] = [1, 3, 1024, 1024], + dummyData = new Float32Array(b * c * h * w); +await model({ input: new Tensor('float32', dummyData, [b, c, h, w]) }); +status.textContent = '준비 완료!'; +example.addEventListener('click', (t) => { + t.preventDefault(), predict(EXAMPLE_URL); +}); +fileUpload.addEventListener('change', function (t) { + const e = t.target.files[0]; + if (!e) return; + const o = new FileReader(); + (o.onload = (i) => predict(i.target.result)), o.readAsDataURL(e); +}); +async function predict(t) { + const e = await RawImage.fromURL(t); + (imageContainer.innerHTML = ''), (imageContainer.style.backgroundImage = `url(${t})`); + const o = e.width / e.height, + [i, u] = o > 720 / 480 ? [720, 720 / o] : [480 * o, 480]; + (imageContainer.style.width = `${i}px`), + (imageContainer.style.height = `${u}px`), + (status.textContent = 'Analysing...'); + const { pixel_values: n } = await processor(e), + s = performance.now(), + { output: d } = await model({ input: n }), + f = performance.now(), + r = await RawImage.fromTensor(d[0].mul(255).to('uint8')).resize(e.width, e.height), + a = document.createElement('canvas'); + (a.width = e.width), (a.height = e.height); + const l = a.getContext('2d'); + l.drawImage(e.toCanvas(), 0, 0); + const p = l.getImageData(0, 0, e.width, e.height); + for (let m = 0; m < r.data.length; ++m) p.data[4 * m + 3] = r.data[m]; + l.putImageData(p, 0, 0), + imageContainer.append(a), + imageContainer.style.removeProperty('background-image'), + (imageContainer.style.background = + 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAGUExURb+/v////5nD/3QAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAUSURBVBjTYwABQSCglEENMxgYGAAynwRB8BEAgQAAAABJRU5ErkJggg==")'), + (status.textContent = `Done! (Inference took ${Math.round(f - s)}ms)`); +} +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = []; + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]); +}