diff --git a/docs/design/js-superpower/03-module-imports-via-egress.md b/docs/design/js-superpower/03-module-imports-via-egress.md index 6632f948..dd39e787 100644 --- a/docs/design/js-superpower/03-module-imports-via-egress.md +++ b/docs/design/js-superpower/03-module-imports-via-egress.md @@ -2,14 +2,14 @@ Remote module imports are a package policy, not a worker capability. `REMOTE_MODULE_IMPORTS_ENABLED` is generated with the channel configuration. -Supported Preview targets enable it. Store, web, and Firefox packages disable it. +Chrome and Firefox Preview packages enable it. Store and web packages disable it. ## Supported imports Notebook and Script entry code can use literal static imports and re-exports. Relative files, `peerd:std`, `peerd:wasi`, and `peerd:toolbox/` resolve -through the host where the browser loader supports them. Chrome Preview also -accepts literal static HTTP and HTTPS imports. +through the host. Chrome and Firefox Preview also accept literal static HTTP +and HTTPS imports. Dynamic imports, `peerd.self.import`, computed specifiers, import attributes, other URL schemes, and extension-absolute paths are refused with a stable @@ -52,10 +52,12 @@ provider, browser, site, and dweb clients. Host relays refuse forged requests. A remote module cannot import a local toolbox module. Returned values, logs, and errors cross the untrusted-content fence before reaching the model. -Firefox refuses remote imports before fetching because its worker loader cannot -run the generated child module URLs. Native Firefox loading for local and -remote static graphs is tracked separately. The broader policy for executing -code fetched as ordinary data is also tracked separately. +Firefox uses the same resolver and policy, then links the authorized graph into +one strict worker script. A disposable packaged compiler Worker performs the +link and is terminated on Stop or deadline. The code Worker runs inside a +sandboxed, opaque-origin host with no extension APIs, no string compilation, +and `connect-src 'none'`. Store still refuses remote imports before fetching. +Preview enables them under the same compute-only profile as Chrome. ## Authoritative sources @@ -64,6 +66,8 @@ code fetched as ordinary data is also tracked separately. syntax. - `extension/peerd-engine/module-resolver.js` enforces policy and builds static module graphs. +- `extension/peerd-engine/single-module-linker.js` emits the Firefox worker + entry without child module loads. - `extension/engine-tabs/notebook-tab/notebook-tab.js` and `extension/offscreen/job-runner.js` wire the browser hosts. - `packaging/verify-store-artifact.ts`, the packaged page check, and the diff --git a/docs/security/RED-TEAM-RESULTS.md b/docs/security/RED-TEAM-RESULTS.md index c03a7a6e..50514c22 100644 --- a/docs/security/RED-TEAM-RESULTS.md +++ b/docs/security/RED-TEAM-RESULTS.md @@ -147,7 +147,7 @@ _Generated from the current checkout by the command above._ - Claim checked: Across all three sandbox kinds, confinement holds: the Notebook realm exposes only the audited fetch bridge (raw channels throw, native fetch unrecoverable, bridge un-unseatable) and no same-origin durable store; the Cache API and IndexedDB both throw, so the sealed extension-origin worker cannot reach the `peerd` database; a remote module restricts its whole run to compute only and all remote-controlled output is fenced; an App cannot break out of its iframe or impersonate the service worker to issue actor commands; and the WebVM HTTP bridge refuses non-http(s) schemes, scrubs CRLF header injection, drops any smuggled auth field, and confirms body-bearing verbs. - Threat-model invariant: INV-6 - Defenses exercised: applyRealmSeal (raw-channel block + native deletion + bridge pin), resolveRelativePath (OPFS ".." collapse), buildWorkerSource + formatEvalResult (remote graph capability collapse + output fence), composeApp + stripMetaRefresh (App iframe breakout/navigation defense), isServiceWorkerSender (actor-command source pin), normalizeRequest + needsWebWriteConfirm (WebVM bridge scheme/CRLF/auth/confirm) -- Verified in the browser by: `extension/tests/unit/engine-tabs/notebook-tab/notebook-seal.test.js (real worker realm); extension/tests/unit/offscreen/job-runner.test.js (a2a run denied egress + delegation); tests/peerd-engine/module-resolver-toolbox.test.ts (remote-to-local toolbox refusal); tests/engine-tabs/notebook-tab/worker-caps-profile.test.ts (remote whole-run profile); tests/peerd-runtime/tools/remote-import-policy.test.ts (remote output fence); extension/tests/unit/red-team/sandbox-escape.test.js (in-browser red-team framing); scripts/cdp/states.mjs actor-command-sender-pin (live engine-tab forgery); scripts/cdp/states.mjs notebook-remote-restricted (live visible-Notebook host wall)` +- Verified in the browser by: `extension/tests/unit/engine-tabs/notebook-tab/notebook-seal.test.js (real worker realm); extension/tests/unit/offscreen/job-runner.test.js (a2a run denied egress + delegation); tests/peerd-engine/module-resolver-toolbox.test.ts (remote-to-local toolbox refusal); tests/engine-tabs/notebook-tab/worker-caps-profile.test.ts (remote whole-run profile); tests/peerd-runtime/tools/remote-import-policy.test.ts (remote output fence); tests/peerd-engine/single-module-linker.test.ts (seal-first graph with no child loads); extension/tests/unit/red-team/sandbox-escape.test.js (in-browser red-team framing); scripts/firefox/run-runtime-tests.mjs (opaque worker host, string-compilation refusal, cancellable compiler and fetch, local and remote graph parity); scripts/cdp/states.mjs actor-command-sender-pin (live engine-tab forgery); scripts/cdp/states.mjs notebook-remote-restricted (live visible-Notebook host wall)` | Probe (adversary action) | Result | Evidence | |--------------------------|--------|----------| diff --git a/docs/security/THREAT-MODEL.md b/docs/security/THREAT-MODEL.md index 1a891bb8..bb41bdcc 100644 --- a/docs/security/THREAT-MODEL.md +++ b/docs/security/THREAT-MODEL.md @@ -217,8 +217,12 @@ caps, and may carry an optional SHA-256 pin. Any remote module marks the whole resolved graph as untrusted compute. Runtime network and file access, agents, model calls, browser and site clients, and dweb are disabled for that run. A remote module cannot import a local toolbox module. Generated worker shims and -independent host relay checks enforce the same profile. Returned values, -console output, and errors are fenced as untrusted. +independent host relay checks enforce the same profile. Firefox links the +authorized graph and realm seal in a disposable compiler Worker, then runs the +result through a sandboxed opaque-origin host with no extension APIs, string +compilation, or network. Stop terminates the compiler or code Worker and +cancels the host fetch operation. Returned values, console output, and errors +are fenced as untrusted. Pins verify exact bytes and improve reproducibility. They do not grant trust or authority. Dynamic imports are refused in every package. Remote modules run inside a sealed worker. The store build strips diff --git a/extension/background/notebook-client.js b/extension/background/notebook-client.js index 392ec961..026ce33a 100644 --- a/extension/background/notebook-client.js +++ b/extension/background/notebook-client.js @@ -60,8 +60,8 @@ export const createJsClient = ({ registry, tracker }) => { return queue.enqueue(`resolve:${opts.sessionId}`, () => resolveId(opts)); }; - /** @param {string} notebookId @param {{ type: string, [k: string]: unknown }} message */ - const callTab = async (notebookId, message) => { + /** @param {string} notebookId @param {{ type: string, [k: string]: unknown }} message @param {AbortSignal} [abortSignal] */ + const callTab = async (notebookId, message, abortSignal) => { // background: agent-driven Notebook tabs never steal focus (DESIGN-12, // 2026-06-18). sandbox_create already dropped a "go there" card; an auto-create // here opens quietly too. ensureTab early-returns for a live tab. @@ -81,13 +81,24 @@ export const createJsClient = ({ registry, tracker }) => { }); /** @type {JsTabReply} */ let response; + const onAbort = () => { + browser.tabs.sendMessage(tabId, { + type: 'js/abort', notebookId, runId: message.runId, + }).catch(() => {}); + }; + // why dispatch first: an already-aborted signal must not let js/abort race + // ahead of the exact js/eval it terminates in the receiving tab. + const messagePromise = browser.tabs.sendMessage(tabId, { ...message, notebookId }); + if (abortSignal?.aborted) onAbort(); + else abortSignal?.addEventListener('abort', onAbort, { once: true }); try { response = /** @type {JsTabReply} */ (await Promise.race([ - browser.tabs.sendMessage(tabId, { ...message, notebookId }), + messagePromise, timeoutPromise, ])); } finally { clearTimeout(timeoutId); + abortSignal?.removeEventListener('abort', onAbort); } if (!response || response.ok !== true) { const err = new Error(response?.error ?? 'js call returned no response'); @@ -104,14 +115,16 @@ export const createJsClient = ({ registry, tracker }) => { return { resolveId, - /** @param {string} code @param {{ sessionId?: string, notebookId?: string, timeoutMs?: number }} [opts] */ + /** @param {string} code @param {{ sessionId?: string, notebookId?: string, timeoutMs?: number, signal?: AbortSignal }} [opts] */ eval: async (code, opts = {}) => { const id = await resolveIdQueued(opts); + const runId = crypto.randomUUID(); const response = await callTab(id, { type: 'js/eval', + runId, code, timeoutMs: opts.timeoutMs, - }); + }, opts.signal); return response.result; }, diff --git a/extension/background/routes/engine.js b/extension/background/routes/engine.js index 3a04f297..b5bcfa3b 100644 --- a/extension/background/routes/engine.js +++ b/extension/background/routes/engine.js @@ -22,6 +22,21 @@ export const makeEngineRoutes = (deps) => { listOffscreenContexts, scriptRuns, isOffscreenSender, } = deps; + /** @type {Map} */ + const notebookFetchControllers = new Map(); + /** @param {unknown} abortToken @param {unknown} notebookId @param {any} sender */ + const notebookFetchKey = (abortToken, notebookId, sender) => { + if (typeof abortToken !== 'string' || abortToken.length > 128 + || typeof notebookId !== 'string' || notebookId.length > 128) return null; + const notebookRoot = browser.runtime.getURL('engine-tabs/notebook-tab/'); + const senderUrl = sender?.url ?? sender?.tab?.url; + if (!senderUrl?.startsWith(notebookRoot)) return null; + try { + if (new URL(senderUrl).hash.slice(1).split(/[?&]/)[0] !== notebookId) return null; + } catch { return null; } + return `${notebookId}:${abortToken}`; + }; + return { // VM-originated HTTP egress. The VM tab's HTTP-marker dispatcher // calls this when it sees a wrapper script's request marker. webFetch @@ -33,7 +48,7 @@ export const makeEngineRoutes = (deps) => { // an IO-injected factory (vm-net/vm-http-fetch.js) so it's bun-testable — it // layers the revalidating IDB GET cache + host-bound git-auth + body cap + // chunked base64 on top of webFetch's denylist/SSRF/audit chokepoint. - 'sw/web-fetch': async ({ url, method, headers, body, gitAuth, noCache, extract, runId, ownerSessionId, deadlineAt }, sender = undefined) => { + 'sw/web-fetch': async ({ url, method, headers, body, gitAuth, noCache, extract, runId, ownerSessionId, deadlineAt, abortToken, notebookId }, sender = undefined) => { if (typeof url !== 'string' || url.length === 0) { return { ok: false, error: 'url-required' }; } @@ -45,6 +60,7 @@ export const makeEngineRoutes = (deps) => { let onAbort = null; /** @type {ReturnType | null} */ let deadlineTimer = null; + const notebookKey = notebookFetchKey(abortToken, notebookId, sender); const carriesRun = runId !== undefined || ownerSessionId !== undefined; if (carriesRun) { if (typeof runId !== 'string' || typeof ownerSessionId !== 'string' @@ -64,6 +80,17 @@ export const makeEngineRoutes = (deps) => { if (remaining <= 0) runController.abort(); else deadlineTimer = setTimeout(() => runController?.abort(), remaining); } + } else if (notebookKey) { + if (notebookFetchControllers.has(notebookKey)) { + return { ok: false, error: 'duplicate_notebook_fetch_token' }; + } + runController = new AbortController(); + notebookFetchControllers.set(notebookKey, runController); + if (typeof deadlineAt === 'number' && Number.isFinite(deadlineAt)) { + const remaining = deadlineAt - Date.now(); + if (remaining <= 0) runController.abort(); + else deadlineTimer = setTimeout(() => runController?.abort(), remaining); + } } // GET callers (the VM HTTP marker fast path) pass only { url } and behave // exactly as before; the rich VM path + the Notebook code-mode bridge pass @@ -87,8 +114,17 @@ export const makeEngineRoutes = (deps) => { } finally { if (deadlineTimer) clearTimeout(deadlineTimer); if (sourceSignal && onAbort) sourceSignal.removeEventListener('abort', onAbort); + if (notebookKey && notebookFetchControllers.get(notebookKey) === runController) { + notebookFetchControllers.delete(notebookKey); + } } }, + 'sw/web-fetch-abort': async ({ abortToken, notebookId }, sender = undefined) => { + const key = notebookFetchKey(abortToken, notebookId, sender); + const controller = key ? notebookFetchControllers.get(key) : null; + controller?.abort(); + return { ok: true, aborted: controller != null }; + }, // --- App metadata fetch ----------------------------------------------- // app-tab/index.html requests its name + entry filename here at load diff --git a/extension/engine-tabs/notebook-tab/index.html b/extension/engine-tabs/notebook-tab/index.html index 186715c4..adde3537 100644 --- a/extension/engine-tabs/notebook-tab/index.html +++ b/extension/engine-tabs/notebook-tab/index.html @@ -17,8 +17,9 @@ nor any realm that somehow escaped the seal can open a connection-class request to ANY host, ours included. Store and web builds refuse remote URL imports without requesting the module source. Preview resolves permitted - URL imports through the audited SW relay and re-blobs them, so the native - loader never receives a third-party script URL. + URL imports through the audited SW relay. Chrome uses the resolved module + graph directly. Firefox links it into one strict script and runs it in the + opaque sandboxed worker host below, whose CSP also has connect-src 'none'. The SW keeps its own (manifest) CSP with https:, so webFetch still works. --> @@ -28,6 +29,8 @@ +

Starting Notebook…

@@ -57,7 +60,8 @@

Starting Notebook…

- + @@ -67,7 +71,7 @@

Starting Notebook…

-
+

diff --git a/extension/engine-tabs/notebook-tab/linker-worker.js b/extension/engine-tabs/notebook-tab/linker-worker.js new file mode 100644 index 00000000..24f3ffeb --- /dev/null +++ b/extension/engine-tabs/notebook-tab/linker-worker.js @@ -0,0 +1,24 @@ +// @ts-check +// Disposable Firefox Notebook compiler host. + +import { linkSingleModuleWorkerDetailed } from '/peerd-engine/index.js'; + +self.addEventListener('message', async (event) => { + const message = event.data; + if (!message || message.type !== 'link') return; + try { + const linked = await linkSingleModuleWorkerDetailed( + String(message.source), + new Map(Array.isArray(message.cache) ? message.cache : []), + Array.isArray(message.packagedEntryUrls) ? message.packagedEntryUrls : [], + undefined, undefined, Number(message.entryBodyLine), + ); + self.postMessage({ type: 'linked', ...linked }); + } catch (error) { + self.postMessage({ + type: 'link-failed', + error: /** @type {{ message?: string }} */ (error)?.message ?? String(error), + errorCode: /** @type {{ code?: string }} */ (error)?.code, + }); + } +}); diff --git a/extension/engine-tabs/notebook-tab/notebook-neutralizers.js b/extension/engine-tabs/notebook-tab/notebook-neutralizers.js index 8e2c4332..a81d4455 100644 --- a/extension/engine-tabs/notebook-tab/notebook-neutralizers.js +++ b/extension/engine-tabs/notebook-tab/notebook-neutralizers.js @@ -16,11 +16,9 @@ // worker loader, dead in module workers, sealed anyway), and the // nested Worker / SharedWorker constructors — a nested worker is a // FRESH realm with un-sealed natives, so it must not exist at all. -// 3. The seal runs as the worker entry's FIRST static import (notebook-tab.js -// emits `import ""` ahead of the agent's imports). Module -// graphs evaluate depth-first in declaration order, so the seal -// executes before any agent module's top-level body — closing the -// old gap where statically-imported agent code ran pre-stub. +// 3. The seal is the worker graph's first edge. Chrome evaluates that import +// first. Firefox's single-entry linker emits the seal body first. Both +// execute it before any agent module body, closing the old pre-seal gap. // // What this still is NOT: the outermost fence. The host page's CSP // (notebook-tab/index.html, connect-src 'none') backstops the seal in the @@ -32,12 +30,12 @@ // realm itself, not deferred to the page CSP. // Module loads are NOT an open channel. Store and web builds refuse remote // URL imports without requesting the module source. Preview's HOST resolver -// fetches permitted module source through the audited data relay and hands the -// worker a same-realm blob, so the native loader still sees no third-party URL. +// fetches permitted module source through the audited data relay. The worker +// receives only host-resolved code, never a third-party network URL. // import() itself is syntax, not a global, so there is nothing to seal here. // -// One implementation, three callers: realm-seal.js (the worker entry's -// first static import — the production path), the bun unit tests (mock +// One implementation, three callers: realm-seal.js (the worker graph's +// first edge, linked into Firefox's single script), the bun unit tests (mock // globals), and the in-browser tests (real worker realms). All import // applyRealmSeal from here, so production and tests cannot drift. /** diff --git a/extension/engine-tabs/notebook-tab/notebook-tab.js b/extension/engine-tabs/notebook-tab/notebook-tab.js index d8e40532..1b000953 100644 --- a/extension/engine-tabs/notebook-tab/notebook-tab.js +++ b/extension/engine-tabs/notebook-tab/notebook-tab.js @@ -21,9 +21,13 @@ import { import { renderReturnValue } from './output-render.js'; // The sealed worker source (realm seal + peerd.* surface + bridges) is shared // with the headless offscreen job runner so the security surface can't diverge. -import { buildWorkerSource, mapWorkerError, NOTEBOOK_BUILTINS } from './worker-source.js'; +import { + buildWorkerSource, mapWorkerError, NOTEBOOK_BUILTINS, SEAL_MODULE_URL, +} from './worker-source.js'; import { mountPullInPeerd } from '/shared/pull-in-peerd.js'; -import { REMOTE_MODULE_IMPORTS_ENABLED } from '/shared/channel-config.js'; +import { + NOTEBOOK_MODULE_LOADER, REMOTE_MODULE_IMPORTS_ENABLED, +} from '/shared/channel-config.js'; const notebookId = location.hash.slice(1).split(/[?&]/)[0]; if (!notebookId) { @@ -59,6 +63,7 @@ const els = { idChip: byId('notebook-id-chip'), saveStatus: byId('save-status'), runStatus: byId('run-status'), + workerHost: /** @type {HTMLIFrameElement} */ (byId('worker-host')), }; els.idChip.textContent = notebookId; @@ -130,12 +135,6 @@ const clearModuleCache = () => { }; /** @param {string} [url] */ -const shortenBlob = (url) => { - if (!url) return ''; - const m = url.match(/[^/]+$/); - return m ? `blob:…${m[0].slice(-8)}` : url; -}; - // design 06 rot bookkeeping: when a run settles, report which toolbox modules // it imported and whether it succeeded (runCount/failCount on the meta the // agent reads via toolbox_list). Fire-and-forget — bookkeeping never fails a run. @@ -149,10 +148,24 @@ const recordToolboxUse = (ok) => { } }; -/** @param {() => void} [onRemoteFetch] */ -const makeResolverDeps = (onRemoteFetch) => ({ +/** @param {AbortSignal | undefined} signal */ +const throwIfAborted = (signal) => { + if (!signal?.aborted) return; + const deadline = signal.reason === 'deadline'; + const error = new Error(deadline ? 'Notebook run timed out' : 'Notebook run stopped'); + error.name = deadline ? 'TimeoutError' : 'AbortError'; + throw error; +}; + +/** @param {() => void} [onRemoteFetch] @param {AbortSignal} [signal] @param {number} [deadlineAt] */ +const makeResolverDeps = (onRemoteFetch, signal, deadlineAt) => ({ /** @param {string} path */ - readFile: (path) => editor.opfs.read(path), + readFile: async (path) => { + throwIfAborted(signal); + const source = await editor.opfs.read(path); + throwIfAborted(signal); + return source; + }, /** @param {string} source */ makeBlobUrl: (source) => URL.createObjectURL( new Blob([source], { type: 'application/javascript' }), @@ -163,16 +176,31 @@ const makeResolverDeps = (onRemoteFetch) => ({ remoteModulesEnabled: REMOTE_MODULE_IMPORTS_ENABLED, ...(REMOTE_MODULE_IMPORTS_ENABLED ? { fetchRemote: makeFetchRemote( - (req) => { + async (req) => { + throwIfAborted(signal); onRemoteFetch?.(); - return /** @type {Promise} */ (browser.runtime.sendMessage({ type: 'sw/web-fetch', ...req })); + const abortToken = crypto.randomUUID(); + const onAbort = () => browser.runtime.sendMessage({ + type: 'sw/web-fetch-abort', abortToken, notebookId, + }).catch(() => {}); + signal?.addEventListener('abort', onAbort, { once: true }); + try { + const response = await browser.runtime.sendMessage({ + type: 'sw/web-fetch', ...req, abortToken, notebookId, deadlineAt, + }); + throwIfAborted(signal); + return /** @type {any} */ (response); + } finally { + signal?.removeEventListener('abort', onAbort); + } }), } : {}), /** @param {{ type: string, path: string, blobUrl?: string, error?: string, errorCode?: string }} entry */ log: (entry) => { + if (signal?.aborted) return; const label = isRemoteSpecifier(entry.path) ? entry.path : `./${entry.path}`; if (entry.type === 'resolved') { - appendLine('log-info', `[import] ${label} → ${shortenBlob(entry.blobUrl)}`); + appendLine('log-info', `[import] ${label}`); } else if (entry.type === 'resolve-failed' && !moduleImportPolicyMessage(entry.errorCode)) { appendLine('log-error', `[import] FAILED ${label}: ${entry.error}`); @@ -186,7 +214,9 @@ const makeResolverDeps = (onRemoteFetch) => ({ // never inject it). /** @param {string} name */ readToolboxModule: async (name) => { + throwIfAborted(signal); const resp = /** @type {any} */ (await browser.runtime.sendMessage({ type: 'toolbox/read', name })); + throwIfAborted(signal); if (!resp?.ok) throw new Error(resp?.error ?? 'toolbox read failed'); return String(resp.body); }, @@ -214,46 +244,217 @@ const dimPreviousOutput = () => { for (const child of els.output.children) child.classList.add('nb-prev'); }; -/** @param {string} code @param {number} [timeoutMs] @param {string} [entryPath] */ -const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { +let hostedWorkerSequence = 0; +const workerHostPort = new Promise((resolve, reject) => { + const channel = new MessageChannel(); + const timer = setTimeout(() => reject(new Error('Notebook worker host did not start')), 10_000); + channel.port1.addEventListener('message', (event) => { + if (event.data?.type !== 'notebook-worker-host-ready') return; + clearTimeout(timer); + resolve(channel.port1); + }); + channel.port1.start(); + els.workerHost.addEventListener('load', () => { + els.workerHost.contentWindow?.postMessage( + { type: 'notebook-worker-host-init' }, '*', [channel.port2], + ); + }, { once: true }); + els.workerHost.src = 'worker-host.html'; +}); + +/** @param {string} source @param {string} markerNonce */ +const spawnHostedWorker = async (source, markerNonce) => { + const port = /** @type {MessagePort} */ (await workerHostPort); + const runId = `run-${hostedWorkerSequence += 1}`; + /** @type {Record<'message' | 'error', Array<{ listener: (event: any) => void, once: boolean }>>} */ + const listeners = { message: [], error: [] }; + let active = true; + /** @param {MessageEvent} event */ + const onHostMessage = (event) => { + const message = event.data; + if (!active || message?.type !== 'worker-event' || message.runId !== runId) return; + const eventType = /** @type {'message' | 'error'} */ (message.eventType); + const payload = eventType === 'message' + ? { data: message.data, workerUrl: message.workerUrl } + : { + error: null, message: message.message, filename: message.filename, + lineno: message.lineno, colno: message.colno, workerUrl: message.workerUrl, + }; + for (const entry of [...listeners[eventType]]) { + entry.listener(payload); + if (entry.once) listeners[eventType] = listeners[eventType].filter((item) => item !== entry); + } + }; + port.addEventListener('message', onHostMessage); + port.postMessage({ type: 'run', runId, source, markerNonce }); + return { + /** @param {'message' | 'error'} type @param {(event: any) => void} listener @param {{ once?: boolean }} [options] */ + addEventListener: (type, listener, options) => { + listeners[type].push({ listener, once: options?.once === true }); + }, + /** @param {any} data */ + postMessage: (data) => port.postMessage({ type: 'message', runId, data }), + terminate: () => { + if (!active) return; + active = false; + port.removeEventListener('message', onHostMessage); + port.postMessage({ type: 'terminate', runId }); + }, + }; +}; + +/** + * @param {string} source + * @param {Map} cache + * @param {AbortSignal | undefined} signal + * @param {number} deadlineAt + * @param {number} entryBodyLine + */ +const linkWorkerSource = (source, cache, signal, deadlineAt, entryBodyLine) => new Promise((resolve, reject) => { + const compiler = new Worker(new URL('linker-worker.js', import.meta.url), { type: 'module' }); + let settled = false; + /** @param {(value: any) => void} callback @param {any} value */ + const finish = (callback, value) => { + if (settled) return; + settled = true; + clearTimeout(timer); + signal?.removeEventListener('abort', onAbort); + compiler.terminate(); + callback(value); + }; + const onAbort = () => { + const deadline = signal?.reason === 'deadline'; + const error = new Error(deadline ? 'Notebook module linking timed out' : 'Notebook run stopped'); + error.name = deadline ? 'TimeoutError' : 'AbortError'; + finish(reject, error); + }; + const remaining = Math.max(0, deadlineAt - Date.now()); + const timer = setTimeout(() => finish( + reject, new Error('Notebook module linking timed out'), + ), remaining); + compiler.addEventListener('message', (event) => { + if (event.data?.type === 'linked') finish(resolve, { + source: String(event.data.source), markerNonce: String(event.data.markerNonce), + }); + else if (event.data?.type === 'link-failed') { + const error = new Error(String(event.data.error || 'Notebook module linking failed')); + // @ts-ignore stable code is copied from the isolated compiler realm. + error.code = event.data.errorCode; + finish(reject, error); + } + }); + compiler.addEventListener('error', (event) => finish( + reject, new Error(event.message || 'Notebook module compiler crashed'), + )); + if (signal?.aborted) onAbort(); + else { + signal?.addEventListener('abort', onAbort, { once: true }); + compiler.postMessage({ + type: 'link', source, cache: [...cache], + packagedEntryUrls: [SEAL_MODULE_URL, ...Object.values(NOTEBOOK_BUILTINS)], + entryBodyLine, + }); + } +}); + +const stoppedResult = () => ({ + value: undefined, consoleOutput: [], durationMs: 0, + errorCode: 'notebook_run_stopped', stopped: true, usedRemoteModules: false, +}); + +/** @param {number} timeoutMs @param {boolean} [usedRemoteModules] */ +const timedOutResult = (timeoutMs, usedRemoteModules = false) => ({ + value: undefined, consoleOutput: [], durationMs: 0, + error: `eval timed out after ${timeoutMs}ms`, errorCode: 'notebook_run_timeout', + usedRemoteModules, +}); + +/** @param {string} code @param {number} [timeoutMs] @param {string} [entryPath] @param {AbortSignal} [signal] */ +const runEvalInternal = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH, signal) => { dimPreviousOutput(); setRunStatus('Running notebook.', true); + const deadlineAt = Date.now() + timeoutMs; let source; let bodyLine = 1; let usedRemoteModules = false; + let markerNonce = ''; + /** @type {ReturnType | undefined} */ + let pendingBuild; try { // The run deadline covers RESOLUTION too — a remote import graph hits the // network (fetchRemote), so a tarpit CDN must not hang the eval forever // (the worker timer below only starts after the build). /** @type {ReturnType | undefined} */ let buildTimer; - const built = await Promise.race([ - buildWorkerSource(code, { + /** @type {(() => void) | undefined} */ + let onBuildAbort; + const abortBuild = new Promise((_resolve, reject) => { + if (!signal) return; + onBuildAbort = () => { + const deadline = signal?.reason === 'deadline'; + const error = new Error(deadline ? 'Notebook import resolution timed out' : 'Notebook run stopped'); + error.name = deadline ? 'TimeoutError' : 'AbortError'; + reject(error); + }; + if (signal.aborted) onBuildAbort(); + else signal.addEventListener('abort', onBuildAbort, { once: true }); + }); + setRunStatus('Resolving notebook imports.', true); + pendingBuild = buildWorkerSource(code, { entryPath, notebookId, - resolverDeps: makeResolverDeps(() => { usedRemoteModules = true; }), - }), + resolverDeps: makeResolverDeps( + () => { usedRemoteModules = true; }, signal, deadlineAt, + ), + }); + const built = await Promise.race([ + pendingBuild, /** @type {Promise} */ (new Promise((_resolve, reject) => { buildTimer = setTimeout( - () => reject(new Error(`import resolution timed out after ${timeoutMs}ms`)), timeoutMs); + () => reject(new Error(`import resolution timed out after ${timeoutMs}ms`)), + Math.max(0, deadlineAt - Date.now())); })), - ]).finally(() => clearTimeout(buildTimer)); + abortBuild, + ]).finally(() => { + clearTimeout(buildTimer); + if (onBuildAbort) signal?.removeEventListener('abort', onBuildAbort); + }); source = built.source; bodyLine = built.bodyLine; entryCache = built.cache; usedRemoteModules ||= built.usedRemoteModules; + if (/** @type {string} */ (NOTEBOOK_MODULE_LOADER) === 'single-bundle') { + setRunStatus('Linking notebook imports.', true); + const linked = /** @type {{ source: string, markerNonce: string }} */ (await linkWorkerSource( + source, entryCache, signal, deadlineAt, bodyLine, + )); + source = linked.source; + markerNonce = linked.markerNonce; + } if (usedRemoteModules) { setRunStatus('Running remote code with restricted access.', true); appendLine('log-info', `[security] ${REMOTE_MODULE_CAPABILITY_BLOCKED_MESSAGE}`); } if (entryCache.size > 0) appendLine('log-info', `[import] ${entryCache.size} module(s) resolved`); } catch (e) { + pendingBuild?.then((built) => { + for (const entry of built.cache.values()) URL.revokeObjectURL(entry.blobUrl); + }).catch(() => {}); + if (/** @type {{ name?: string }} */ (e)?.name === 'AbortError') { + clearModuleCache(); + setRunStatus('Notebook run stopped.', false); + return stoppedResult(); + } const msg = /** @type {{ message?: string }} */ (e)?.message ?? String(e); - const errorCode = /** @type {{ code?: string }} */ (e)?.code; + const errorCode = /** @type {{ name?: string, code?: string }} */ (e)?.name === 'TimeoutError' + ? 'notebook_run_timeout' + : /** @type {{ code?: string }} */ (e)?.code; const phase = errorCode === MODULE_SYNTAX_ERROR_CODE ? 'syntax check' : 'import resolution'; appendLine('log-error', `${phase} failed: ${msg}`); const policyMessage = moduleImportPolicyMessage(errorCode); if (usedRemoteModules) appendLine('log-info', `[security] ${REMOTE_MODULE_CAPABILITY_BLOCKED_MESSAGE}`); - setRunStatus(policyMessage ?? (usedRemoteModules ? 'Restricted remote code failed.' : 'Notebook run failed.'), false); + setRunStatus(errorCode === 'notebook_run_timeout' + ? 'Notebook run timed out.' + : policyMessage ?? (usedRemoteModules ? 'Restricted remote code failed.' : 'Notebook run failed.'), false); return { value: undefined, consoleOutput: [], durationMs: 0, error: `${phase} failed: ${msg}`, @@ -264,7 +465,11 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { const blob = new Blob([source], { type: 'application/javascript' }); const url = URL.createObjectURL(blob); let worker; - try { worker = new Worker(url, { type: 'module' }); } + try { + worker = /** @type {string} */ (NOTEBOOK_MODULE_LOADER) === 'single-bundle' + ? await spawnHostedWorker(source, markerNonce) + : new Worker(url, { type: 'module' }); + } catch (e) { URL.revokeObjectURL(url); clearModuleCache(); @@ -280,12 +485,25 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { appendLine('log-eval', `> ${oneLineCode.replace(/\n/g, '\n ')}`); try { + /** @type {(() => void) | undefined} */ + let workerAbortListener; return await new Promise((resolve) => { + const onAbort = () => { + clearTimeout(timer); + try { worker.terminate(); } catch {} + recordToolboxUse(false); + resolve(signal?.reason === 'deadline' + ? timedOutResult(timeoutMs, usedRemoteModules) + : stoppedResult()); + }; + workerAbortListener = onAbort; const timer = setTimeout(() => { try { worker.terminate(); } catch {} recordToolboxUse(false); - resolve({ value: undefined, consoleOutput: [], durationMs: 0, error: `eval timed out after ${timeoutMs}ms`, usedRemoteModules }); - }, timeoutMs); + resolve(timedOutResult(timeoutMs, usedRemoteModules)); + }, Math.max(0, deadlineAt - Date.now())); + if (signal?.aborted) onAbort(); + else signal?.addEventListener('abort', onAbort, { once: true }); worker.addEventListener('message', async (ev) => { // why any: a worker postMessage payload is type-erased across the @@ -293,6 +511,18 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { /** @type {any} */ const m = ev.data; if (!m || typeof m !== 'object') return; + if (m.type === 'seal-failed') { + clearTimeout(timer); + try { worker.terminate(); } catch {} + recordToolboxUse(false); + appendLine('log-error', `[realm seal failed] ${m.error}`); + resolve({ + value: undefined, consoleOutput: [], durationMs: 0, + error: `realm seal failed: ${m.error}`, errorCode: undefined, + usedRemoteModules, + }); + return; + } if (m.type === 'log') { appendLine(`log-${m.level}`, m.text); return; } if (m.type === 'display') { // peerd.self.display(value) — render rich output mid-run (same path as @@ -439,7 +669,10 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { } // Map stack frames in the entry blob back to notebook.js: so // the pane (and the agent's tool result) point at the user's code. - const error = m.error ? mapWorkerError(m.error, url, bodyLine, entryPath) : null; + const workerUrl = ev.workerUrl ?? url; + const error = m.error + ? mapWorkerError(m.error, workerUrl, bodyLine, entryPath, entryCache) + : null; recordToolboxUse(!error); if (error) appendLine('log-error', error); resolve({ @@ -458,13 +691,16 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { const err = e.error; let detail = err?.stack || err?.message || e.message || ''; if (!detail) detail = 'worker crashed (no detail available)'; - detail = /** @type {string} */ (mapWorkerError(detail, url, bodyLine, entryPath)); + const workerUrl = e.workerUrl ?? url; + detail = /** @type {string} */ ( + mapWorkerError(detail, workerUrl, bodyLine, entryPath, entryCache)); // A SYNTAX error never reaches the entry's catch — it surfaces here // with the blob filename + line. Map it to the user's file too. - const userLine = e.lineno - bodyLine + 1; - const loc = (e.filename === url && userLine >= 1) - ? ` (${entryPath}:${userLine}:${e.colno})` - : (e.filename ? ` (${e.filename}:${e.lineno}:${e.colno})` : ''); + const rawLocation = e.filename ? `${e.filename}:${e.lineno}:${e.colno}` : ''; + const mappedLocation = rawLocation + ? mapWorkerError(rawLocation, workerUrl, bodyLine, entryPath, entryCache) + : ''; + const loc = mappedLocation ? ` (${mappedLocation})` : ''; appendLine('log-error', `[worker crashed] ${detail}${loc}`); // A crash (e.g. a top-level throw in an imported module body) is a // failed run — record it, matching the timeout path and the headless @@ -476,9 +712,15 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { usedRemoteModules, }); }); + }).finally(() => { + if (workerAbortListener) signal?.removeEventListener('abort', workerAbortListener); }).then((result) => { setRunStatus( - moduleImportPolicyMessage(result.errorCode) + result.stopped + ? 'Notebook run stopped.' + : result.errorCode === 'notebook_run_timeout' + ? 'Notebook run timed out.' + : moduleImportPolicyMessage(result.errorCode) ?? (usedRemoteModules ? (result.error ? 'Restricted remote code failed.' : 'Remote code ran with restricted access.') : (result.error ? 'Notebook run failed.' : 'Notebook run complete.')), @@ -492,12 +734,64 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { } }; +/** @type {{ runId: string, controller: AbortController } | null} */ +let activeEval = null; + +/** @param {boolean} running */ +const setRunControl = (running) => { + els.runBtn.disabled = false; + els.runBtn.textContent = running ? 'Stop notebook run ■' : 'Run notebook.js ▶'; + els.runBtn.title = running + ? 'Stop the current Notebook run' + : 'Runs notebook.js (Cmd-Enter / Ctrl-Enter)'; + els.runBtn.setAttribute('aria-label', running ? 'Stop notebook run' : 'Run notebook.js'); +}; + +/** @param {string} runId */ +const reserveRun = (runId) => { + if (activeEval) return null; + const controller = new AbortController(); + activeEval = { runId, controller }; + setRunControl(true); + return controller; +}; + +const busyResult = () => ({ + value: undefined, consoleOutput: [], durationMs: 0, + error: 'Notebook already has a run in progress', errorCode: 'notebook_run_busy', + usedRemoteModules: false, +}); + +/** @param {string} code @param {number} timeoutMs @param {string} entryPath @param {string} runId @param {AbortController} controller */ +const executeReservedRun = async (code, timeoutMs, entryPath, runId, controller) => { + const deadlineTimer = setTimeout(() => controller.abort('deadline'), timeoutMs); + try { return await runEvalInternal(code, timeoutMs, entryPath, controller.signal); } + finally { + clearTimeout(deadlineTimer); + if (activeEval?.runId === runId) activeEval = null; + setRunControl(false); + } +}; + +/** @param {string} code @param {number} timeoutMs @param {string} entryPath @param {string} runId */ +const executeRun = async (code, timeoutMs, entryPath, runId) => { + const controller = reserveRun(runId); + return controller + ? executeReservedRun(code, timeoutMs, entryPath, runId, controller) + : busyResult(); +}; + // --------------------------------------------------------------------------- // Run from editor (Cmd-Enter or button) — always targets notebook.js // regardless of which tab is active. See git log for the rationale. // --------------------------------------------------------------------------- const runFromEditor = async () => { + if (activeEval) { + setRunStatus('Stopping notebook run.', true); + activeEval.controller.abort(); + return; + } await editor.flushSave(); let code; try { code = await editor.opfs.read(NOTEBOOK_PATH); } @@ -507,14 +801,11 @@ const runFromEditor = async () => { '[notebook.js is empty — nothing to run. Switch to the notebook.js tab to write an entry.]'); return; } - els.runBtn.disabled = true; try { - await runEval(code, 30000, NOTEBOOK_PATH); + await executeRun(code, 30000, NOTEBOOK_PATH, crypto.randomUUID()); await editor.refreshTree(); } catch (e) { appendLine('log-error', `run failed: ${/** @type {{ message?: string }} */ (e)?.message ?? String(e)}`); - } finally { - els.runBtn.disabled = false; } }; @@ -551,7 +842,7 @@ const exportNotebook = async () => { // SW → tab dispatch. // --------------------------------------------------------------------------- -const JS_ROUTES = new Set(['js/eval', 'js/write-file', 'js/read-file', 'js/list-files']); +const JS_ROUTES = new Set(['js/eval', 'js/abort', 'js/write-file', 'js/read-file', 'js/list-files']); // why the cast: the polyfill's OnMessageListenerCallback types the return as the // literal `true` (keep the channel open), so it can't model the legitimate @@ -572,17 +863,52 @@ const onNotebookMessage = (msg, _sender, sendResponse) => { try { switch (msg.type) { case 'js/eval': { + const runId = typeof msg.runId === 'string' ? msg.runId : crypto.randomUUID(); + const controller = reserveRun(runId); + if (!controller) { + sendResponse({ ok: true, result: busyResult() }); + return; + } // Mirror the agent's code into notebook.js with a one-shot // backup of whatever the user had there. - if (editor.getActiveFile() !== NOTEBOOK_PATH) { - await editor.switchToFile(NOTEBOOK_PATH); + let result; + const deadlineTimer = setTimeout( + () => controller.abort('deadline'), msg.timeoutMs ?? 30000, + ); + try { + throwIfAborted(controller.signal); + if (editor.getActiveFile() !== NOTEBOOK_PATH) { + await editor.switchToFile(NOTEBOOK_PATH); + throwIfAborted(controller.signal); + } + await editor.replaceActiveWith(msg.code, { backupTo: BEFORE_AGENT_PATH }); + throwIfAborted(controller.signal); + result = await runEvalInternal( + msg.code, msg.timeoutMs ?? 30000, NOTEBOOK_PATH, controller.signal, + ); + } catch (error) { + const name = /** @type {{ name?: string }} */ (error)?.name; + if (name !== 'AbortError' && name !== 'TimeoutError') throw error; + const timedOut = name === 'TimeoutError'; + setRunStatus(timedOut ? 'Notebook run timed out.' : 'Notebook run stopped.', false); + result = timedOut + ? timedOutResult(msg.timeoutMs ?? 30000) + : stoppedResult(); + } finally { + clearTimeout(deadlineTimer); + if (activeEval?.runId === runId) activeEval = null; + setRunControl(false); } - await editor.replaceActiveWith(msg.code, { backupTo: BEFORE_AGENT_PATH }); - const result = await runEval(msg.code, msg.timeoutMs ?? 30000, NOTEBOOK_PATH); await editor.refreshTree(); sendResponse({ ok: true, result }); return; } + case 'js/abort': + if (activeEval && (!msg.runId || activeEval.runId === msg.runId)) { + activeEval.controller.abort(); + sendResponse({ ok: true, stopped: true }); + } else sendResponse({ ok: true, stopped: false }); + return; case 'js/write-file': await editor.opfs.write(msg.path, msg.content); await editor.refreshTree(); diff --git a/extension/engine-tabs/notebook-tab/realm-seal.js b/extension/engine-tabs/notebook-tab/realm-seal.js index 2d2f2cb2..bf4bf79c 100644 --- a/extension/engine-tabs/notebook-tab/realm-seal.js +++ b/extension/engine-tabs/notebook-tab/realm-seal.js @@ -2,10 +2,10 @@ // realm-seal.js — side-effecting entry for the Notebook realm seal. // // The worker source assembled in notebook-tab.js emits this module's absolute -// URL as the entry's FIRST static import. ES module graphs evaluate -// depth-first in declaration order, so this body — and therefore the -// whole seal — runs BEFORE any agent-authored module's top-level code, -// no matter what the agent imports. Do not add imports above +// URL as the entry's FIRST static import. Chrome evaluates that module graph +// directly. Firefox's linker preserves the same order in one strict script. +// Either way, this body and therefore the whole seal runs BEFORE any +// agent-authored module's top-level code, no matter what the agent imports. Do not add imports above // notebook-neutralizers.js or code before applyRealmSeal(): anything // earlier widens the pre-seal window. // @@ -16,4 +16,17 @@ import { applyRealmSeal } from './notebook-neutralizers.js'; -applyRealmSeal(globalThis); +try { + applyRealmSeal(globalThis); +} catch (error) { + // why report before rethrow: Firefox strips detail from Worker error + // events. This trusted pre-user-code message keeps a seal regression + // actionable without letting the run continue in an unsealed realm. + postMessage({ + type: 'seal-failed', + error: /** @type {{ stack?: string, message?: string }} */ (error)?.stack + || /** @type {{ message?: string }} */ (error)?.message + || String(error), + }); + throw error; +} diff --git a/extension/engine-tabs/notebook-tab/worker-host.html b/extension/engine-tabs/notebook-tab/worker-host.html new file mode 100644 index 00000000..0b75c032 --- /dev/null +++ b/extension/engine-tabs/notebook-tab/worker-host.html @@ -0,0 +1,124 @@ + + + + + + + + + + + diff --git a/extension/engine-tabs/notebook-tab/worker-source.js b/extension/engine-tabs/notebook-tab/worker-source.js index 1ab04746..d6b24b11 100644 --- a/extension/engine-tabs/notebook-tab/worker-source.js +++ b/extension/engine-tabs/notebook-tab/worker-source.js @@ -2,7 +2,7 @@ // notebook-tab/worker-source.js — builds the sealed Notebook worker's source. // // SECURITY-CRITICAL + host-agnostic. This is the ONE place the worker realm is -// assembled: the realm seal as the FIRST import, the peerd.* capability surface, +// assembled: the realm seal as the FIRST graph edge, the peerd.* capability surface, // the postMessage bridges (fetch / opfs / actor / display), and the entry // IIFE. BOTH hosts use it — the visible Notebook tab (notebook-tab.js) and the // headless offscreen job runner (offscreen/job-runner.js) — so the seal + @@ -20,12 +20,11 @@ import { remoteModuleCapabilityBlockedMessage, } from '/peerd-engine/index.js'; -// why absolute URLs: the worker entry is a blob; its FIRST static import must be -// the realm seal (ES module graphs evaluate depth-first in declaration order, so -// this guarantees the seal runs before any agent module body). peerd:std loads -// AFTER the seal and is pure. Both resolve against import.meta.url so they work -// on the extension origin AND the http origin the in-browser harness serves from. -const SEAL_MODULE_URL = new URL('./realm-seal.js', import.meta.url).href; +// why absolute URLs: Chrome loads this graph natively. Firefox's package-selected +// linker consumes the same URLs as trusted virtual entries and emits the seal +// body before any agent module body. peerd:std loads after the seal and is pure. +// The URLs work on the extension origin and the HTTP in-browser harness. +export const SEAL_MODULE_URL = new URL('./realm-seal.js', import.meta.url).href; const STD_MODULE_URL = new URL('./notebook-std.js', import.meta.url).href; const WASI_MODULE_URL = new URL('./notebook-wasi.js', import.meta.url).href; @@ -499,28 +498,39 @@ __PEERD_BODY__})() /** * Map a worker error (a stack whose frames point into the entry blob URL) back * to user-code coordinates: `blob:…::` → `::`. - * Frames outside the body (the injected preamble) and other modules' blob URLs - * are left untouched. Pure — shared by the Notebook tab and the headless + * Frames outside the body (the injected preamble) are left untouched. Resolved + * child-module blob URLs are mapped to their source names when the caller + * supplies the graph cache. This pure helper is shared by the Notebook tab and the headless * job runner so both surfaces report the same mapped location. * * @param {string | null | undefined} raw * @param {string} blobUrl the entry worker's own blob URL * @param {number} bodyLine from buildWorkerSource * @param {string} [entryPath] + * @param {Map} [moduleCache] * @returns {string | null | undefined} */ -export const mapWorkerError = (raw, blobUrl, bodyLine, entryPath = 'notebook.js') => { +export const mapWorkerError = ( + raw, blobUrl, bodyLine, entryPath = 'notebook.js', moduleCache, +) => { if (typeof raw !== 'string' || !raw || !blobUrl) return raw; const parts = raw.split(`${blobUrl}:`); - if (parts.length === 1) return raw; - let out = parts[0]; - for (let i = 1; i < parts.length; i += 1) { - const seg = parts[i]; - const m = /^(\d+):(\d+)/.exec(seg); - const userLine = m ? Number(m[1]) - bodyLine + 1 : 0; - out += (m && userLine >= 1) - ? `${entryPath}:${userLine}:${m[2]}${seg.slice(m[0].length)}` - : `${blobUrl}:${seg}`; + let out = raw; + if (parts.length > 1) { + out = parts[0]; + for (let i = 1; i < parts.length; i += 1) { + const seg = parts[i]; + const m = /^(\d+):(\d+)/.exec(seg); + const userLine = m ? Number(m[1]) - bodyLine + 1 : 0; + out += (m && userLine >= 1) + ? `${entryPath}:${userLine}:${m[2]}${seg.slice(m[0].length)}` + : `${blobUrl}:${seg}`; + } + } + for (const [path, entry] of moduleCache ?? []) { + if (!entry.blobUrl || entry.blobUrl === blobUrl) continue; + const sourceName = /^(?:https?:|peerd:|\/)/.test(path) ? path : `./${path}`; + out = out.split(`${entry.blobUrl}:`).join(`${sourceName}:`); } return out; }; diff --git a/extension/manifest.json b/extension/manifest.json index 77802e6c..6f6ebdd3 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -39,7 +39,8 @@ }, "sandbox": { "pages": [ - "engine-tabs/app-tab/runner.html" + "engine-tabs/app-tab/runner.html", + "engine-tabs/notebook-tab/worker-host.html" ] }, "cross_origin_embedder_policy": { diff --git a/extension/peerd-engine/errors.js b/extension/peerd-engine/errors.js index 9eb3f093..e7b31369 100644 --- a/extension/peerd-engine/errors.js +++ b/extension/peerd-engine/errors.js @@ -108,6 +108,9 @@ export const UNSUPPORTED_NATIVE_MODULE_IMPORT_MESSAGE = /** Stable cross-realm code for parser failures before worker creation. */ export const MODULE_SYNTAX_ERROR_CODE = 'module_syntax_error'; +/** Stable cross-realm code for a host-side static graph linker failure. */ +export const MODULE_LINK_ERROR_CODE = 'module_link_failed'; + /** Stable code and guidance for a capability denied to a remote-module run. */ export const REMOTE_MODULE_CAPABILITY_BLOCKED_CODE = 'remote_module_capability_blocked'; /** Stable status for a remote graph running under the compute-only profile. */ @@ -168,6 +171,18 @@ export class ModuleSyntaxError extends TypedError { } } +/** + * A fully resolved static graph could not be linked into one worker entry. + * This is a loader failure, not an error in the executing Notebook realm. + */ +export class ModuleLinkError extends TypedError { + /** @param {string} detail */ + constructor(detail) { + super(`cannot link Notebook module graph: ${detail}`); + this.code = MODULE_LINK_ERROR_CODE; + } +} + /** * A remote import refused BEFORE any fetch. The default reason is the * no-network lane (no `fetchRemote` injected — page_code / a2a / site-client); diff --git a/extension/peerd-engine/index.js b/extension/peerd-engine/index.js index 0bddfc38..e3afbb26 100644 --- a/extension/peerd-engine/index.js +++ b/extension/peerd-engine/index.js @@ -43,6 +43,7 @@ export { // resolver recognizes; hosts use it to spot toolbox entries in a module cache. TOOLBOX_SPECIFIER_PREFIX, } from './module-resolver.js'; +export { linkSingleModuleWorker, linkSingleModuleWorkerDetailed } from './single-module-linker.js'; // --- Editor (CodeMirror + file tree + OPFS, used by Notebook & App tabs) --- export { createEditor } from './editor.js'; @@ -73,6 +74,7 @@ export { UNSUPPORTED_NATIVE_MODULE_IMPORT_CODE, UNSUPPORTED_NATIVE_MODULE_IMPORT_MESSAGE, MODULE_SYNTAX_ERROR_CODE, + MODULE_LINK_ERROR_CODE, REMOTE_MODULE_CAPABILITY_BLOCKED_CODE, REMOTE_MODULE_RESTRICTED_CODE, REMOTE_MODULE_CAPABILITY_BLOCKED_MESSAGE, @@ -82,6 +84,7 @@ export { RemoteModuleImportsUnavailableError, UnsupportedNativeModuleImportError, ModuleSyntaxError, + ModuleLinkError, RemoteImportBlockedError, RemoteModuleCapError, RemoteModuleIntegrityError, diff --git a/extension/peerd-engine/module-resolver.js b/extension/peerd-engine/module-resolver.js index 389e2bb6..3a96134e 100644 --- a/extension/peerd-engine/module-resolver.js +++ b/extension/peerd-engine/module-resolver.js @@ -18,8 +18,9 @@ // Remote (https:) specifiers do NOT ride the worker's native loader: their // source is fetched HOST-SIDE via the injected `fetchRemote` (the host's // audited sw/web-fetch relay — denylist + SSRF + audit), recursively -// transformed with the module's own URL as the base, and re-blobbed exactly -// like a local file — so no third-party byte ever bypasses peerd-egress. +// transformed with the module's own URL as the base. Chrome receives generated +// module URLs. Firefox's host linker consumes the same resolved cache and emits +// one script, so no third-party byte ever bypasses peerd-egress. // Bare specifiers (`lodash`) still pass through untouched and fail in the // worker's loader: a script wanting a library names a full URL and owns // that choice, or the dependency gets vendored. diff --git a/extension/peerd-engine/single-module-linker.js b/extension/peerd-engine/single-module-linker.js new file mode 100644 index 00000000..7890388c --- /dev/null +++ b/extension/peerd-engine/single-module-linker.js @@ -0,0 +1,172 @@ +// @ts-check +// Links a resolved Notebook graph into one module Worker entry. +// +// Firefox extension Workers can import packaged modules, but not generated +// child module URLs. The normal resolver remains the policy and IO boundary. +// This linker only sees the already-resolved in-memory sources and emits one +// root module. It has no filesystem or network fallback. + +import { ModuleLinkError } from './errors.js'; +import { inspectModuleLoads } from './module-import-policy.js'; + +const ENTRY_ID = '\0peerd:notebook-entry'; + +/** + * @param {LinkerInput} input + */ +const loadRollup = async (input) => { + // why lazy: the engine index is shared by every execution surface. Only + // Firefox Notebooks should pay the parse and WASM startup cost of the linker. + const rollupUrl = new URL('../vendor/rollup/rollup.browser.js', import.meta.url).href; + const { rollup } = await import(rollupUrl); + return rollup(input); +}; + +/** + * @typedef {{ + * input: string, + * treeshake: boolean, + * plugins: Array<{ + * name: string, + * resolveId: (source: string, importer?: string) => string | { id: string, external: true }, + * load: (id: string) => string | Promise, + * transform?: (code: string, id: string) => { code: string, map: null } | null, + * resolveImportMeta?: (property: string | null, context: { moduleId: string }) => string | null, + * }>, + * }} LinkerInput + */ + +/** + * @param {string} source complete worker entry source + * @param {Map} cache resolved graph + * @param {readonly string[]} packagedEntryUrls exact packaged module URLs; seal first + * @param {(input: LinkerInput) => Promise<{ generate: (options: object) => Promise<{ output: Array }>, close: () => Promise }>} [rollupImpl] + * @param {(url: string) => Promise} [readPackagedModule] + * @param {number} [entryBodyLine] + * @returns {Promise<{ source: string, markerNonce: string }>} + */ +export const linkSingleModuleWorkerDetailed = async ( + source, cache, packagedEntryUrls, rollupImpl = /** @type {any} */ (loadRollup), + readPackagedModule = async (url) => { + // why bare fetch is safe here: `url` is either an exact trusted entry or a + // same-extension relative dependency admitted by the virtual loader. User + // and remote specifiers never reach this branch; the response is packaged + // extension code, not egress. + // eslint-disable-next-line no-restricted-globals + const response = await fetch(url); + if (!response.ok) throw new ModuleLinkError(`cannot read packaged module '${url}'`); + return response.text(); + }, entryBodyLine, +) => { + const sealUrl = packagedEntryUrls[0]; + if (!sealUrl) throw new ModuleLinkError('the realm seal URL is missing'); + const packagedEntries = new Set(packagedEntryUrls); + const packagedRoot = new URL('/', sealUrl).href; + const markerNonce = crypto.randomUUID(); + /** + * @param {'module' | 'body'} kind + * @param {string} name + */ + const marker = (kind, name) => + `/*__peerd_module:${markerNonce}:${kind}:${encodeURIComponent(name)}__*/`; + const sources = new Map([[ENTRY_ID, source]]); + const sourceNames = new Map([[ENTRY_ID, 'notebook.js']]); + for (const [path, entry] of cache) { + if (sources.has(entry.blobUrl)) { + throw new ModuleLinkError(`duplicate generated module URL for ${path}`); + } + sources.set(entry.blobUrl, entry.source); + sourceNames.set(entry.blobUrl, path.startsWith('http') ? path : `./${path}`); + } + + let bundle; + try { + bundle = await rollupImpl({ + input: ENTRY_ID, + // why false: provenance is a security input. An apparently unused remote + // edge still makes the whole run compute-only and must not disappear as a + // side effect of optimization. + treeshake: false, + plugins: [{ + name: 'peerd-notebook-virtual-graph', + resolveId: (specifier, importer) => { + if (sources.has(specifier)) return specifier; + if (packagedEntries.has(specifier)) return specifier; + if (importer?.startsWith(packagedRoot)) { + const resolved = new URL(specifier, importer).href; + if (resolved.startsWith(packagedRoot)) return resolved; + } + throw new ModuleLinkError(`unresolved static import '${specifier}'`); + }, + load: async (id) => { + const loaded = sources.get(id); + if (loaded !== undefined) return loaded; + if (id.startsWith(packagedRoot)) { + sourceNames.set(id, new URL(id).pathname); + return readPackagedModule(id); + } + throw new ModuleLinkError(`module '${id}' is outside the resolved graph`); + }, + transform: (code, id) => { + const name = sourceNames.get(id); + if (!name) return null; + let marked = `${marker('module', name)}\n${code}`; + const bodyLine = Number.isInteger(entryBodyLine) ? Number(entryBodyLine) : null; + if (id === ENTRY_ID && bodyLine !== null && bodyLine > 0) { + const lines = marked.split('\n'); + lines.splice(bodyLine, 0, marker('body', name)); + marked = lines.join('\n'); + } + return { code: marked, map: null }; + }, + resolveImportMeta: (property, { moduleId }) => { + const url = sourceNames.get(moduleId) ?? 'notebook.js'; + if (property === 'url') return JSON.stringify(url); + if (property === null) return `Object.freeze({ url: ${JSON.stringify(url)} })`; + return null; + }, + }], + }); + const generated = await bundle.generate({ format: 'es', sourcemap: false }); + const chunks = generated.output.filter((item) => item.type === 'chunk'); + if (chunks.length !== 1) throw new ModuleLinkError(`linker emitted ${chunks.length} worker chunks`); + const linked = String(chunks[0].code); + const loads = inspectModuleLoads(linked); + if (loads.length > 0) { + throw new ModuleLinkError('the linked worker retained a child module edge'); + } + const sealCall = linked.indexOf('applyRealmSeal(globalThis)'); + const workerBody = linked.indexOf('const NOTEBOOK_ID'); + if (sealCall < 0 || workerBody < 0 || sealCall > workerBody) { + throw new ModuleLinkError('the linked worker does not apply the realm seal first'); + } + // The generated graph has no module edges left. Firefox runs it as a blob + // module Worker inside the opaque sandbox host, avoiding the privileged + // extension module-worker loader while preserving top-level ESM syntax. + return { source: `'use strict';\n${linked}`, markerNonce }; + } catch (error) { + if (error instanceof ModuleLinkError) throw error; + let detail = /** @type {{ message?: string }} */ (error)?.message ?? String(error); + // Generated URLs are host plumbing. Keep errors actionable for both the + // person and the model by translating them back to source-facing names. + for (const [id, name] of sourceNames) detail = detail.replaceAll(id, name); + throw new ModuleLinkError(detail); + } finally { + await bundle?.close(); + } +}; + +/** + * Compatibility wrapper for hosts and tests that need only the linked source. + * @param {string} source + * @param {Map} cache + * @param {readonly string[]} packagedEntryUrls + * @param {any} [rollupImpl] + * @param {(url: string) => Promise} [readPackagedModule] + * @param {number} [entryBodyLine] + */ +export const linkSingleModuleWorker = async ( + source, cache, packagedEntryUrls, rollupImpl, readPackagedModule, entryBodyLine, +) => (await linkSingleModuleWorkerDetailed( + source, cache, packagedEntryUrls, rollupImpl, readPackagedModule, entryBodyLine, +)).source; diff --git a/extension/peerd-runtime/tools/defs/js-notebook.js b/extension/peerd-runtime/tools/defs/js-notebook.js index ff300250..5c4e84ab 100644 --- a/extension/peerd-runtime/tools/defs/js-notebook.js +++ b/extension/peerd-runtime/tools/defs/js-notebook.js @@ -29,6 +29,7 @@ const MAX_TIMEOUT_MS = 120_000; * @property {Array<{ level: string, text: string }>} [consoleOutput] * @property {unknown} [value] * @property {boolean} [usedRemoteModules] + * @property {boolean} [stopped] */ /** @type {import('/shared/tool-types.js').Tool} */ @@ -45,8 +46,10 @@ export const jsNotebookTool = { 'npm/native modules. EACH CALL IS A FRESH WORKER — module state does NOT', 'persist; write to OPFS via peerd.self.writeFile and read it back. Inside:', 'peerd.egress.fetch (audited HTTP), peerd.self.readFile/writeFile/listFiles;', - 'literal relative static imports work; dynamic, computed, and attributed', - 'imports do not. No `notebook` arg → the chat\'s', + 'literal relative static imports work across supported packaged browsers.', + 'Literal HTTPS imports work only where the package enables them, always', + 'under compute-only restrictions. Dynamic, computed, and attributed imports', + 'do not. No `notebook` arg → the chat\'s', 'current Notebook. Returns the return value, console output, and any error.', ].join(' '), schema: { @@ -76,13 +79,16 @@ export const jsNotebookTool = { } // why: jsClient / jsRegistry ride the opaque ctx contract (not on the // ToolContext typedef); narrow to the surface this tool touches. - const jsClient = /** @type {{ eval?: (code: string, opts: { timeoutMs: number, sessionId?: string, notebookId?: string }) => Promise } | undefined} */ ( + const jsClient = /** @type {{ eval?: (code: string, opts: { timeoutMs: number, sessionId?: string, notebookId?: string, signal?: AbortSignal }) => Promise } | undefined} */ ( /** @type {any} */ (ctx).jsClient); const jsRegistry = /** @type {{ get: (id: string) => Promise, list: () => Promise>, setDefaultForSession: (sessionId: string, id: string) => Promise } | undefined} */ ( /** @type {any} */ (ctx).jsRegistry); if (!jsClient || typeof jsClient.eval !== 'function') { return { ok: false, error: 'js_not_available' }; } + if (ctx.abortSignal?.aborted) { + return { ok: true, content: '[STOPPED] Notebook run was stopped. Do not retry automatically.' }; + } const timeoutMs = clamp(args.timeoutMs ?? DEFAULT_TIMEOUT_MS, 1000, MAX_TIMEOUT_MS); let targetNotebookId; @@ -110,7 +116,23 @@ export const jsNotebookTool = { timeoutMs, sessionId: ctx.session?.sessionId, notebookId: targetNotebookId, + signal: ctx.abortSignal, }); + if (result.stopped) { + return { ok: true, content: '[STOPPED] Notebook run was stopped. Do not retry automatically.' }; + } + if (result.errorCode === 'notebook_run_busy') { + return { + ok: true, + content: '[BUSY] This Notebook already has a run in progress. The requested code was not run. Do not retry automatically.', + }; + } + if (result.errorCode === 'notebook_run_timeout') { + return { + ok: true, + content: '[TIMEOUT] Notebook run did not finish before its deadline. Reduce the work or increase timeoutMs before retrying. Do not retry the same request automatically.', + }; + } const importPolicyMessage = moduleImportPolicyMessage(result.errorCode); if (importPolicyMessage) { return { diff --git a/extension/shared/channel-config.js b/extension/shared/channel-config.js index ca181de1..5769efdf 100644 --- a/extension/shared/channel-config.js +++ b/extension/shared/channel-config.js @@ -14,6 +14,7 @@ export const CHANNEL = "preview"; export const DWEB_ENABLED = true; export const REMOTE_MODULE_IMPORTS_ENABLED = true; +export const NOTEBOOK_MODULE_LOADER = "blob-graph"; export const CHANNEL_DEFAULTS = Object.freeze({ voiceEnabled: false, diff --git a/extension/vendor/rollup/LICENSE.md b/extension/vendor/rollup/LICENSE.md new file mode 100644 index 00000000..82cd357f --- /dev/null +++ b/extension/vendor/rollup/LICENSE.md @@ -0,0 +1,163 @@ +# Rollup core license +Rollup is released under the MIT license: + +The MIT License (MIT) + +Copyright (c) 2017 [these people](https://github.com/rollup/rollup/graphs/contributors) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# Licenses of bundled dependencies +The published Rollup artifact additionally contains code with the following licenses: +MIT + +# Bundled dependencies: +## @jridgewell/sourcemap-codec +License: MIT +By: Justin Ridgewell +Repository: git+https://github.com/jridgewell/sourcemaps.git + +> Copyright 2024 Justin Ridgewell +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## @rollup/pluginutils +License: MIT +By: Rich Harris +Repository: rollup/plugins + +> The MIT License (MIT) +> +> Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## builtin-modules +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/builtin-modules + +> MIT License +> +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## flru +License: MIT +By: Luke Edwards +Repository: lukeed/flru + +> MIT License +> +> Copyright (c) Luke Edwards (lukeed.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## is-reference +License: MIT +By: Rich Harris +Repository: git+https://github.com/Rich-Harris/is-reference.git + +--------------------------------------- + +## locate-character +License: MIT +By: Rich Harris +Repository: git+https://gitlab.com/Rich-Harris/locate-character.git + +--------------------------------------- + +## magic-string +License: MIT +By: Rich Harris +Repository: git+https://github.com/Rich-Harris/magic-string.git + +> Copyright 2018 Rich Harris +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## picomatch +License: MIT +By: Jon Schlinkert +Repository: micromatch/picomatch + +> The MIT License (MIT) +> +> Copyright (c) 2017-present, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. diff --git a/extension/vendor/rollup/SOURCE.txt b/extension/vendor/rollup/SOURCE.txt new file mode 100644 index 00000000..b68f4e28 --- /dev/null +++ b/extension/vendor/rollup/SOURCE.txt @@ -0,0 +1,38 @@ +Rollup browser build +==================== + +Upstream: https://github.com/rollup/rollup +Package: https://www.npmjs.com/package/@rollup/browser +Version: 4.62.4 +Source URL: https://registry.npmjs.org/@rollup/browser/-/browser-4.62.4.tgz +License: MIT (see LICENSE.md) + +Why vendored +------------ +Firefox extension module Workers cannot load generated child module URLs. +The Notebook host uses Rollup's browser API with a virtual-only loader to link +an already authorized static graph into one worker entry. This preserves ESM +semantics without eval, a runtime npm dependency, or a build step. + +Files committed +--------------- + rollup.browser.js dist/es/rollup.browser.js from the published package + bindings_wasm_bg.wasm dist/es/bindings_wasm_bg.wasm from the package + LICENSE.md LICENSE.md from the package + +SHA-256 +------- + rollup.browser.js 00c7e102025e8ae11193e9f0f30eb6da31a1fcd34350aae94429833d4f4ea7c0 + bindings_wasm_bg.wasm ef41a5a1868f6268a10ce5b1ca4eb92b47683a2375b86c675badf0112a165796 + LICENSE.md 8d218a9c9950dd89c1aede5956f7ab98b45cc41c876a88bbc5df88174fd8a96f + +Modification +------------ +None. + +Update procedure +---------------- +1. Download the published package for the new version. +2. Copy the three files above without modification. +3. Update the version and hashes above. +4. Run `bun packaging/check-vendor.ts --write`. diff --git a/extension/vendor/rollup/bindings_wasm_bg.wasm b/extension/vendor/rollup/bindings_wasm_bg.wasm new file mode 100644 index 00000000..90fc8c2e Binary files /dev/null and b/extension/vendor/rollup/bindings_wasm_bg.wasm differ diff --git a/extension/vendor/rollup/rollup.browser.js b/extension/vendor/rollup/rollup.browser.js new file mode 100644 index 00000000..19ff86d0 --- /dev/null +++ b/extension/vendor/rollup/rollup.browser.js @@ -0,0 +1,10 @@ +/* + @license + Rollup.js v4.62.4 + Sat, 01 Aug 2026 05:20:25 GMT - commit ddc4ffab628944e45dbb8d66d58aae818015440f + + https://github.com/rollup/rollup + + Released under the MIT License. +*/ +var e="4.62.4",t=",".charCodeAt(0),n=";".charCodeAt(0),s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(64),r=new Uint8Array(128);for(let e=0;e<64;e++){const t=s.charCodeAt(e);i[e]=t,r[t]=e}function o(e,t){let n=0,s=0,i=0;do{const t=e.next();i=r[t],n|=(31&i)<>>=1,o&&(n=-2147483648|-n),t+n}function a(e,t,n){let s=t-n;s=s<0?-s<<1|1:s<<1;do{let t=31&s;s>>>=5,s>0&&(t|=32),e.write(i[t])}while(s>0);return t}function l(e,n){return!(e.pos>=n)&&e.peek()!==t}var c="undefined"!=typeof TextDecoder?new TextDecoder:"undefined"!=typeof Buffer?{decode:e=>Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString()}:{decode(e){let t="";for(let n=0;n0?t+c.decode(e.subarray(0,n)):t}},d=class{constructor(e){this.pos=0,this.buffer=e}next(){return this.buffer.charCodeAt(this.pos++)}peek(){return this.buffer.charCodeAt(this.pos)}indexOf(e){const{buffer:t,pos:n}=this,s=t.indexOf(e,n);return-1===s?t.length:s}};function h(e){e.sort(p)}function p(e,t){return e[0]-t[0]}function f(e){const s=new u;let i=0,r=0,o=0,l=0;for(let c=0;c0&&s.write(n),0===u.length)continue;let d=0;for(let e=0;e0&&s.write(t),d=a(s,n[0],d),1!==n.length&&(i=a(s,n[1],i),r=a(s,n[2],r),o=a(s,n[3],o),4!==n.length&&(l=a(s,n[4],l)))}}return s.flush()}var m=class e{constructor(t){this.bits=t instanceof e?t.bits.slice():[]}add(e){this.bits[e>>5]|=1<<(31&e)}has(e){return!!(this.bits[e>>5]&1<<(31&e))}},g=class e{constructor(e,t,n){this.start=e,this.end=t,this.original=n,this.intro="",this.outro="",this.content=n,this.storeName=!1,this.edited=!1,this.previous=null,this.next=null}appendLeft(e){this.outro+=e}appendRight(e){this.intro=this.intro+e}clone(){const t=new e(this.start,this.end,this.original);return t.intro=this.intro,t.outro=this.outro,t.content=this.content,t.storeName=this.storeName,t.edited=this.edited,t}contains(e){return this.startglobalThis.btoa(unescape(encodeURIComponent(e)));const e=globalThis.Buffer;return e?t=>e.from(t,"utf-8").toString("base64"):()=>{throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported.")}}const b=y();var E=class{constructor(e){this.version=3,this.file=e.file,this.sources=e.sources,this.sourcesContent=e.sourcesContent,this.names=e.names,this.mappings=f(e.mappings),void 0!==e.x_google_ignoreList&&(this.x_google_ignoreList=e.x_google_ignoreList),void 0!==e.debugId&&(this.debugId=e.debugId)}toString(){return JSON.stringify(this)}toUrl(){return`data:application/json;charset=utf-8;base64,${b(this.toString())}`}};function x(e){const t=e.split("\n"),n=[];for(let e=0,s=0;e>1;e=0&&i>r;){const i=[this.generatedCodeColumn,e,n.line,n.column];s>=0&&i.push(s),this.rawSegments.push(i),this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,o=r,r=t.indexOf("\n",r+1)}const a=[this.generatedCodeColumn,e,n.line,n.column];s>=0&&a.push(s),this.rawSegments.push(a),this.advance(t.slice(o+1))}else this.pending&&(this.rawSegments.push(this.pending),this.advance(t));this.pending=null}addUneditedChunk(e,t,n,s,i){let r=t.start,o=!0,a=!1;for(;r1){for(let e=0;e{const i=s(e.start);e.intro.length&&n.advance(e.intro),e.edited?n.addEdit(0,e.content,i,e.storeName?t.indexOf(e.original):-1):n.addUneditedChunk(0,e,this.original,i,this.sourcemapLocations),e.outro.length&&n.advance(e.outro)}),this.outro&&n.advance(this.outro),{file:e.file?e.file.split(/[/\\]/).pop():void 0,sources:[e.source?A(e.file||"",e.source):e.file||""],sourcesContent:e.includeContent?[this.original]:void 0,names:t,mappings:n.raw,x_google_ignoreList:this.ignoreList?[0]:void 0}}generateMap(e){return new E(this.generateDecodedMap(e))}_ensureindentStr(){void 0===this.indentStr&&(this.indentStr=function(e){const t=e.split("\n"),n=t.filter(e=>/^\t+/.test(e)),s=t.filter(e=>/^ {2,}/.test(e));if(0===n.length&&0===s.length)return null;if(n.length>=s.length)return"\t";const i=s.reduce((e,t)=>{const n=/^ +/.exec(t)[0].length;return Math.min(n,e)},1/0);return" ".repeat(i)}(this.original))}_getRawIndentString(){return this._ensureindentStr(),this.indentStr}getIndentString(){return this._ensureindentStr(),null===this.indentStr?"\t":this.indentStr}indent(e,t){const n=/^[^\r\n]/gm;if($(e)&&(t=e,e=void 0),void 0===e&&(this._ensureindentStr(),e=this.indentStr||"\t"),""===e)return this;const s=e,i={};(t=t||{}).exclude&&("number"==typeof t.exclude[0]?[t.exclude]:t.exclude).forEach(e=>{for(let t=e[0];tr?`${s}${e}`:(r=!0,e);this.intro=this.intro.replace(n,o);let a=0,l=this.firstChunk;const c=e=>{r=!1,e===l.start||(this._splitChunk(l,e),l=l.next),l.prependRight(s)};for(;l;){const e=l.end;if(l.edited)i[a]||(l.content=l.content.replace(n,o),l.content.length&&(r="\n"===l.content[l.content.length-1]));else if(t.exclude)for(a=l.start;a=e)break;r=!0,a=t+1;continue}const t=this.original.charCodeAt(a);t!==w&&t!==N?(c(a),a+=1):a+=1}a=l.end,l=l.next}return this.outro=this.outro.replace(n,o),this}insert(){throw new Error("magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)")}insertLeft(e,t){return k.insertLeft||(console.warn("magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead"),k.insertLeft=!0),this.appendLeft(e,t)}insertRight(e,t){return k.insertRight||(console.warn("magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead"),k.insertRight=!0),this.prependRight(e,t)}move(e,t,n){if(e+=this.offset,t+=this.offset,n+=this.offset,e===t)return this;if(n>=e&&n<=t)throw new Error("Cannot move a selection inside itself");this._split(e),this._split(t),this._split(n);const s=this.byStart.get(e),i=this.byEnd.get(t),r=s.previous,o=i.next,a=this.byStart.get(n);if(!a&&i===this.lastChunk)return this;const l=a?a.previous:this.lastChunk;return r&&(r.next=o),o&&(o.previous=r),l&&(l.next=s),a&&(a.previous=i),s.previous||(this.firstChunk=i.next),i.next||(this.lastChunk=s.previous,this.lastChunk.next=null),s.previous=l,i.next=a||null,l||(this.firstChunk=s),a||(this.lastChunk=i),this}overwrite(e,t,n,s){const i="object"==typeof s&&s?s:{};return this.update(e,t,n,{...i,overwrite:!i.contentOnly})}update(e,t,n,s){if(e+=this.offset,t+=this.offset,"string"!=typeof n)throw new TypeError("replacement content must be a string");if(0!==this.original.length){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(t>this.original.length)throw new Error("end is out of bounds");if(e===t)throw new Error("Cannot overwrite a zero-length range – use appendLeft or prependRight instead");this._split(e),this._split(t),!0===s&&(k.storeName||(console.warn("The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string"),k.storeName=!0),s={storeName:!0});const i="object"==typeof s&&s?s:{},r=i.storeName||!1,o=i.overwrite||!1;if(r){const n=this.original.slice(e,t);Object.defineProperty(this.storedNames,n,{writable:!0,value:!0,enumerable:!0})}const a=this.byStart.get(e),l=this.byEnd.get(t);if(a){let e=a;for(;e!==l;){if(e.next!==this.byStart.get(e.end))throw new Error("Cannot overwrite across a split point");e=e.next,e.edit("",!1)}a.edit(n,r,!o)}else{const s=new g(e,t,"").edit(n,r);l.next=s,s.previous=l}return this}prepend(e){if("string"!=typeof e)throw new TypeError("outro content must be a string");return this.intro=e+this.intro,this}prependLeft(e,t){if(e+=this.offset,"string"!=typeof t)throw new TypeError("inserted content must be a string");this._split(e);const n=this.byEnd.get(e);return n?n.prependLeft(t):this.intro=t+this.intro,this}prependRight(e,t){if(e+=this.offset,"string"!=typeof t)throw new TypeError("inserted content must be a string");this._split(e);const n=this.byStart.get(e);return n?n.prependRight(t):this.outro=t+this.outro,this}remove(e,t){if(e+=this.offset,t+=this.offset,0!==this.original.length){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(e===t)return this;if(e<0||t>this.original.length)throw new Error("Character is out of bounds");if(e>t)throw new Error("end must be greater than start");this._split(e),this._split(t);let n=this.byStart.get(e);for(;n;)n.intro="",n.outro="",n.edit(""),n=t>n.end?this.byStart.get(n.end):null;return this}reset(e,t){if(e+=this.offset,t+=this.offset,0!==this.original.length){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(e===t)return this;if(e<0||t>this.original.length)throw new Error("Character is out of bounds");if(e>t)throw new Error("end must be greater than start");this._split(e),this._split(t);let n=this.byStart.get(e);for(;n;)n.reset(),n=t>n.end?this.byStart.get(n.end):null;return this}lastChar(){if(this.outro.length)return this.outro[this.outro.length-1];let e=this.lastChunk;for(;e;){if(e.outro.length)return e.outro[e.outro.length-1];if(e.content.length)return e.content[e.content.length-1];if(e.intro.length)return e.intro[e.intro.length-1];e=e.previous}return this.intro.length?this.intro[this.intro.length-1]:""}lastLine(){let e=this.outro.lastIndexOf(I);if(-1!==e)return this.outro.substr(e+1);let t=this.outro,n=this.lastChunk;for(;n;){if(n.outro.length>0){if(e=n.outro.lastIndexOf(I),-1!==e)return n.outro.substr(e+1)+t;t=n.outro+t}if(n.content.length>0){if(e=n.content.lastIndexOf(I),-1!==e)return n.content.substr(e+1)+t;t=n.content+t}if(n.intro.length>0){if(e=n.intro.lastIndexOf(I),-1!==e)return n.intro.substr(e+1)+t;t=n.intro+t}n=n.previous}return e=this.intro.lastIndexOf(I),-1!==e?this.intro.substr(e+1)+t:this.intro+t}slice(e=0,t=this.original.length-this.offset){if(e+=this.offset,t+=this.offset,0!==this.original.length){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}let n="",s=this.firstChunk;for(;s&&(s.start>e||s.end<=e);){if(s.start=t)return n;s=s.next}if(s&&s.edited&&s.start!==e)throw new Error(`Cannot use replaced character ${e} as slice start anchor.`);const i=s;for(;s;){!s.intro||i===s&&s.start!==e||(n+=s.intro);const r=s.start=t;if(r&&s.edited&&s.end!==t)throw new Error(`Cannot use replaced character ${t} as slice end anchor.`);const o=i===s?e-s.start:0,a=r?s.content.length+t-s.end:s.content.length;if(n+=s.content.slice(o,a),!s.outro||r&&s.end!==t||(n+=s.outro),r)break;s=s.next}return n}snip(e,t){const n=this.clone();return n.remove(0,e),n.remove(t,n.original.length),n}_split(e){if(this.byStart.get(e)||this.byEnd.get(e))return;let t=this.lastSearchedChunk,n=t;const s=e>t.end;for(;t;){if(t.contains(e))return this._splitChunk(t,e);if(t=s?this.byStart.get(t.end):this.byEnd.get(t.start),t===n)return;n=t}}_splitChunk(e,t){if(e.edited&&e.content.length){const n=x(this.original)(t);throw new Error(`Cannot split a chunk that has already been edited (${n.line}:${n.column} – "${e.original}")`)}const n=e.split(t);return this.byEnd.set(t,e),this.byStart.set(t,n),this.byEnd.set(n.end,n),e===this.lastChunk&&(this.lastChunk=n),this.lastSearchedChunk=e,!0}toString(){let e=this.intro,t=this.firstChunk;for(;t;)e+=t.toString(),t=t.next;return e+this.outro}isEmpty(){let e=this.firstChunk;for(;e;){if(e.intro.length&&e.intro.trim()||e.content.length&&e.content.trim()||e.outro.length&&e.outro.trim())return!1;e=e.next}return!0}length(){let e=this.firstChunk,t=0;for(;e;)t+=e.intro.length+e.content.length+e.outro.length,e=e.next;return t}trimLines(){return this.trim("[\\r\\n]")}trim(e){return this.trimStart(e).trimEnd(e)}trimEndAborted(e){const t=new RegExp(`${e||"\\s"}+$`);if(this.outro=this.outro.replace(t,""),this.outro.length)return!0;let n=this.lastChunk;do{const e=n.end,s=n.trimEnd(t);if(n.end!==e&&(this.lastChunk===n&&(this.lastChunk=n.next),this.byEnd.set(n.end,n),this.byStart.set(n.next.start,n.next),this.byEnd.set(n.next.end,n.next)),s)return!0;n=n.previous}while(n);return!1}trimEnd(e){return this.trimEndAborted(e),this}trimStartAborted(e){const t=new RegExp(`^${e||"\\s"}+`);if(this.intro=this.intro.replace(t,""),this.intro.length)return!0;let n=this.firstChunk;do{const e=n.end,s=n.trimStart(t);if(n.end!==e&&(n===this.lastChunk&&(this.lastChunk=n.next),this.byEnd.set(n.end,n),this.byStart.set(n.next.start,n.next),this.byEnd.set(n.next.end,n.next)),s)return!0;n=n.next}while(n);return!1}trimStart(e){return this.trimStartAborted(e),this}hasChanged(){return this.original!==this.toString()}_replaceRegexp(e,t){function n(e,n){return"string"==typeof t?t.replace(/\$(\$|&|\d+)/g,(t,n)=>"$"===n?"$":"&"===n?e[0]:+n{if(null!=e.index){const t=n(e,this.original);t!==e[0]&&this.overwrite(e.index,e.index+e[0].length,t)}});else{const t=this.original.match(e);if(t&&null!=t.index){const e=n(t,this.original);e!==t[0]&&this.overwrite(t.index,t.index+t[0].length,e)}}return this}_replaceString(e,t){const{original:n}=this,s=n.indexOf(e);return-1!==s&&("function"==typeof t&&(t=t(e,s,n)),e!==t&&this.overwrite(s,s+e.length,t)),this}replace(e,t){return"string"==typeof e?this._replaceString(e,t):this._replaceRegexp(e,t)}_replaceAllString(e,t){const{original:n}=this,s=e.length;for(let i=n.indexOf(e);-1!==i;i=n.indexOf(e,i+s)){const e=n.slice(i,i+s),r="function"==typeof t?t(e,i,n):t;e!==r&&this.overwrite(i,i+s,r)}return this}replaceAll(e,t){if("string"==typeof e)return this._replaceAllString(e,t);if(!e.global)throw new TypeError("MagicString.prototype.replaceAll called with a non-global RegExp argument");return this._replaceRegexp(e,t)}};const R=Object.prototype.hasOwnProperty;var D=class e{constructor(e={}){this.intro=e.intro||"",this.separator=void 0!==e.separator?e.separator:"\n",this.sources=[],this.uniqueSources=[],this.uniqueSourceIndexByFilename={}}addSource(e){if(e instanceof C)return this.addSource({content:e,filename:e.filename,separator:this.separator});if(!$(e)||!e.content)throw new Error("bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`");if(["filename","ignoreList","indentExclusionRanges","separator"].forEach(t=>{R.call(e,t)||(e[t]=e.content[t])}),void 0===e.separator&&(e.separator=this.separator),e.filename)if(R.call(this.uniqueSourceIndexByFilename,e.filename)){const t=this.uniqueSources[this.uniqueSourceIndexByFilename[e.filename]];if(e.content.original!==t.content)throw new Error(`Illegal source: same filename (${e.filename}), different contents`)}else this.uniqueSourceIndexByFilename[e.filename]=this.uniqueSources.length,this.uniqueSources.push({filename:e.filename,content:e.content.original});return this.sources.push(e),this}append(e,t){return this.addSource({content:new C(e),separator:t&&t.separator||""}),this}clone(){const t=new e({intro:this.intro,separator:this.separator});return this.sources.forEach(e=>{t.addSource({filename:e.filename,content:e.content.clone(),separator:e.separator})}),t}generateDecodedMap(e={}){const t=[];let n;this.sources.forEach(e=>{Object.keys(e.content.storedNames).forEach(e=>{t.includes(e)||t.push(e)})});const s=new P(e.hires);return this.intro&&s.advance(this.intro),this.sources.forEach((e,i)=>{i>0&&s.advance(this.separator);const r=e.filename?this.uniqueSourceIndexByFilename[e.filename]:-1,o=e.content,a=x(o.original);o.intro&&s.advance(o.intro),o.firstChunk.eachNext(n=>{const i=a(n.start);n.intro.length&&s.advance(n.intro),e.filename?n.edited?s.addEdit(r,n.content,i,n.storeName?t.indexOf(n.original):-1):s.addUneditedChunk(r,n,o.original,i,o.sourcemapLocations):s.advance(n.content),n.outro.length&&s.advance(n.outro)}),o.outro&&s.advance(o.outro),e.ignoreList&&-1!==r&&(void 0===n&&(n=[]),n.push(r))}),{file:e.file?e.file.split(/[/\\]/).pop():void 0,sources:this.uniqueSources.map(t=>e.file?A(e.file,t.filename):t.filename),sourcesContent:this.uniqueSources.map(t=>e.includeContent?t.content:null),names:t,mappings:s.raw,x_google_ignoreList:n}}generateMap(e){return new E(this.generateDecodedMap(e))}getIndentString(){const e={};return this.sources.forEach(t=>{const n=t.content._getRawIndentString();null!==n&&(e[n]||(e[n]=0),e[n]+=1)}),Object.keys(e).sort((t,n)=>e[t]-e[n])[0]||"\t"}indent(e){if(arguments.length||(e=this.getIndentString()),""===e)return this;let t=!this.intro||"\n"===this.intro.slice(-1);return this.sources.forEach((n,s)=>{const i=void 0!==n.separator?n.separator:this.separator,r=t||s>0&&/\r?\n$/.test(i);n.content.indent(e,{exclude:n.indentExclusionRanges,indentStart:r}),t="\n"===n.content.lastChar()}),this.intro&&(this.intro=e+this.intro.replace(/^[^\n]/gm,(t,n)=>n>0?e+t:t)),this}prepend(e){return this.intro=e+this.intro,this}toString(){const e=this.sources.map((e,t)=>{const n=void 0!==e.separator?e.separator:this.separator;return(t>0?n:"")+e.content.toString()}).join("");return this.intro+e}isEmpty(){return(!this.intro.length||!this.intro.trim())&&!this.sources.some(e=>!e.content.isEmpty())}length(){return this.sources.reduce((e,t)=>e+t.content.length(),this.intro.length)}trimLines(){return this.trim("[\\r\\n]")}trim(e){return this.trimStart(e).trimEnd(e)}trimStart(e){const t=new RegExp(`^${e||"\\s"}+`);if(this.intro=this.intro.replace(t,""),!this.intro){let t,n=0;do{if(t=this.sources[n++],!t)break}while(!t.content.trimStartAborted(e))}return this}trimEnd(e){const t=new RegExp(`${e||"\\s"}+$`);let n,s=this.sources.length-1;do{if(n=this.sources[s--],!n){this.intro=this.intro.replace(t,"");break}}while(!n.content.trimEndAborted(e));return this}};const O=/^(?:\/|(?:[A-Za-z]:)?[/\\|])/,M=/^\.?\.\//,_=/\\/g,L=/[/\\]/,T=/\.[^.]+$/;function B(e){return O.test(e)}function z(e){return M.test(e)}function V(e){return e.replace(_,"/")}function F(e){return e.split(L).pop()||""}function j(e){const t=/[/\\][^/\\]*$/.exec(e);if(!t)return".";return e.slice(0,-t[0].length)||"/"}function U(e){const t=T.exec(F(e));return t?t[0]:""}function G(e,t=!1){const n=[];for(const s of e)".."===s?n.length>0&&".."!==n[n.length-1]?n.pop():t||n.push(".."):"."!==s&&""!==s&&n.push(s);return n.join("/")}function H(e,t){const n=e.split(L).filter(Boolean),s=t.split(L).filter(Boolean);for("."===n[0]&&n.shift(),"."===s[0]&&s.shift();n[0]&&s[0]&&n[0]===s[0];)n.shift(),s.shift();for(;".."===s[0]&&n.length>0;)s.shift(),n.pop();for(;n.pop();)s.unshift("..");return s.join("/")}function W(...e){let t=[],n=!1;for(const s of e)B(s)?(t=s.split(L),n=!0):t.push(...s.split(L));const s=G(t,n);return n?/^[A-Za-z]:/.test(s)?s:"/"+s:s||"/"}function q(e,t,n,s){t.remove(n,s),e.removeAnnotations(t)}const K={isNoStatement:!0};function X(e,t,n=0){let s,i;for(s=e.indexOf(t,n);;){if(-1===(n=e.indexOf("/",n))||n>=s)return s;i=e.charCodeAt(++n),++n,(n=47===i?e.indexOf("\n",n)+1:e.indexOf("*/",n)+2)>s&&(s=e.indexOf(t,n))}}const J=/\S/g;function Y(e,t){J.lastIndex=t;return J.exec(e).index}const Z=/\s/;function Q(e){let t,n,s=0;for(t=e.indexOf("\n",s);;){if(s=e.indexOf("/",s),-1===s||s>t)return[t,t+1];if(n=e.charCodeAt(s+1),47===n)return[s,t+1];s=e.indexOf("*/",s+2)+2,s>t&&(t=e.indexOf("\n",s))}}function ee(e,t,n,s,i){let r,o,a,l,c=e[0],u=!c.included||c.needsBoundaries;u&&(l=n+Q(t.original.slice(n,c.start))[1]);for(let n=1;n<=e.length;n++)r=c,o=l,a=u,c=e[n],u=void 0!==c&&(!c.included||c.needsBoundaries),a||u?(l=r.end+Q(t.original.slice(r.end,void 0===c?s:c.start))[1],r.included?a?r.render(t,i,{end:l,start:o}):r.render(t,i):q(r,t,o,l)):r.render(t,i)}function te(e,t,n,s){const i=[];let r,o,a,l,c=n-1;for(const s of e){for(void 0!==r&&(c=r.end+X(t.original.slice(r.end,s.start),",")),o=a=c+1+Q(t.original.slice(c+1,s.start))[1];l=t.original.charCodeAt(o),32===l||9===l||10===l||13===l;)o++;void 0!==r&&i.push({contentEnd:a,end:o,node:r,separator:c,start:n}),r=s,n=o}return i.push({contentEnd:s,end:s,node:r,separator:null,start:n}),i}function ne(e,t,n){for(;;){const[s,i]=Q(e.original.slice(t,n));if(-1===s)break;e.remove(t+s,t+=i)}}function se(e,{exportNamesByVariable:t,snippets:{_:n,getObject:s,getPropertyAccess:i}},r=""){if(1===e.length&&1===t.get(e[0]).length){const s=e[0];return`exports(${JSON.stringify(t.get(s)[0])},${n}${s.getName(i)}${r})`}{const n=[];for(const s of e)for(const e of t.get(s))n.push([e,s.getName(i)+r]);return`exports(${s(n,{lineBreakIndent:null})})`}}function ie(e,t,n,s,{exportNamesByVariable:i,snippets:{_:r}}){s.prependRight(t,`exports(${JSON.stringify(i.get(e)[0])},${r}`),s.appendLeft(n,")")}function re(e,t,n,s,i,r){const{_:o,getPropertyAccess:a}=r.snippets;i.appendLeft(n,`,${o}${se([e],r)},${o}${e.getName(a)}`),s&&(i.prependRight(t,"("),i.appendLeft(n,")"))}const oe=Object.freeze(Object.create(null)),ae=Object.freeze({}),le=Object.freeze([]),ce=Object.freeze(new class extends Set{add(){throw new Error("Cannot add to empty set")}});function ue(e,t,n){const s=e.get(t);if(void 0!==s)return s;const i=n();return e.set(t,i),i}function de(){return new Set}function he(){return[]}const pe=Symbol("Unknown Key"),fe=Symbol("Unknown Non-Accessor Key"),me=Symbol("Unknown Integer"),ge=Symbol("Unknown Well-Known"),ye=Symbol("Symbol.toStringTag"),be=Symbol("Symbol.asyncDispose"),Ee=Symbol("Symbol.dispose"),xe=Symbol("Symbol.hasInstance"),Ae=new Set([ye,be,Ee,xe]),Se=e=>Ae.has(e)||e===ge,$e=new Set([xe,be,Ee]),ve=e=>"string"==typeof e||Ae.has(e),Pe=[],Ie=[pe],we=[fe],Ne=[me],ke=[xe],Ce=Symbol("Entities");class Re{constructor(){this.entityPaths=Object.create(null,{[Ce]:{value:new Set}})}trackEntityAtPathAndGetIfTracked(e,t){const n=this.getEntities(e);return!!n.has(t)||(n.add(t),!1)}withTrackedEntityAtPath(e,t,n,s){const i=this.getEntities(e);if(i.has(t))return s;i.add(t);const r=n();return i.delete(t),r}getEntities(e){let t=this.entityPaths;for(const n of e)t=t[n]||=Object.create(null,{[Ce]:{value:new Set}});return t[Ce]}}const De=new Re;class Oe{constructor(){this.entityPaths=Object.create(null,{[Ce]:{value:new Map}})}trackEntityAtPathAndGetIfTracked(e,t,n){let s=this.entityPaths;for(const t of e)s=s[t]||=Object.create(null,{[Ce]:{value:new Map}});const i=ue(s[Ce],t,de);return!!i.has(n)||(i.add(n),!1)}}const Me=Object.freeze({[pe]:ae});class _e{constructor(){this.includedPaths=null}includePathAndGetIfIncluded(e){let t=!0,n=this,s="includedPaths",i=this.includedPaths||=(t=!1,Object.create(null));for(const r of e){if(i[pe])return!0;if(!ve(r))return n[s]=Me,!1;n=i,s=r,i=i[r]||=(t=!1,Object.create(null))}return t}}const Le=Object.freeze({[pe]:!0});class Te{constructor(){this.includedPaths=null}includePathAndGetIfIncluded(e){let t=!0;const n=this.includedPaths||=(t=!1,Object.create(null));if(n[pe])return!0;const[s,i]=e;return s?ve(s)?i?n[s]===pe||(n[s]=pe,!1):!!n[s]||(n[s]=!0,!1):(this.includedPaths=Le,!1):t}includeAllPaths(e,t,n){const{includedPaths:s}=this;if(s)if(s[pe])e.includePath([...n,pe],t);else{const i=Object.entries(s);if(0===i.length)e.includePath(n,t);else for(const[s,r]of i)e.includePath(r===pe?[...n,s,pe]:[...n,s],t)}}}function Be(e,t){if("MemberExpression"===e.type)return!e.computed&&Be(e.object,e);if("Identifier"!==e.type)return!1;switch(t?.type){case"MemberExpression":return t.computed||e===t.object;case"MethodDefinition":return t.computed;case"MetaProperty":return t.meta===e;case"PropertyDefinition":case"Property":return t.computed||e===t.value;case"ExportSpecifier":case"ImportSpecifier":return e===t.local;case"LabeledStatement":case"BreakStatement":case"ContinueStatement":return!1;default:return!0}}function ze(){return{brokenFlow:!1,hasBreak:!1,hasContinue:!1,includedCallArguments:new Set,includedLabels:new Set}}function Ve(){return{accessed:new Re,assigned:new Re,brokenFlow:!1,called:new Oe,hasBreak:!1,hasContinue:!1,ignore:{breaks:!1,continues:!1,labels:new Set,returnYield:!1,this:!1},includedLabels:new Set,instantiated:new Oe,replacedVariableInits:new Map}}function Fe(e,t){return 0!==(e&t)}function je(e,t,n){return e&~t|-n&t}const Ue=Symbol("Unknown Value"),Ge=Symbol("Unknown Truthy Value"),He=Symbol("Unknown Falsy Value");class We{constructor(){this.flags=0}get included(){return Fe(this.flags,1)}set included(e){this.flags=je(this.flags,1,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){Xe(e)}deoptimizePath(e){}getLiteralValueAtPath(e,t,n){return Ue}getReturnExpressionWhenCalledAtPath(e,t,n,s){return Ke}hasEffectsOnInteractionAtPath(e,t,n){return!0}include(e,t,n){this.included||this.includeNode(e)}includeNode(e){this.included=!0}includePath(e,t){this.included||this.includeNode(t)}includeCallArguments(e,t){Je(e,t)}shouldBeIncluded(e){return!0}}const qe=new class extends We{},Ke=[qe,!1],Xe=e=>{for(const t of e.args)t?.deoptimizePath(Ie)},Je=(e,t)=>{e.args[0]?.includePath(Ie,t),Ye(e,t)},Ye=({args:e},t)=>{for(let n=1;n{const n=i+e.length+1,s={start:i,end:n,line:t};return i=n,s});let o=0;return function(t,i){if("string"==typeof t&&(t=e.indexOf(t,i??0)),-1===t)return;let a=r[o];const l=t>=a.end?1:-1;for(;a;){if(lt(a,t))return{line:n+a.line,column:s+t-a.start,character:t};o+=l,a=r[o]}}}(e,n)(t,n&&n.startIndex)}function ut(e){return e.replace(/^\t+/,e=>e.split("\t").join(" "))}const dt="...";function ht(e,t,n){let s=e.split("\n");if(t>s.length)return"";const i=Math.max(ut(s[t-1].slice(0,n)).length+10+3,120),r=Math.max(0,t-3);let o=Math.min(t+2,s.length);for(s=s.slice(r,o);!/\S/.test(s[s.length-1]);)s.pop(),o-=1;const a=String(o).length;return s.map((e,s)=>{const o=r+s+1===t;let l=String(s+r+1);for(;l.lengthi&&(c=`${c.slice(0,i-3)}${dt}`),o){const t=function(e){let t="";for(;e--;)t+=" ";return t}(a+2+ut(e.slice(0,n)).length)+"^";return`${l}: ${c}\n${t}`}return`${l}: ${c}`}).join("\n")}const pt="silent",ft="warn",mt="info",gt="debug",yt={[gt]:0,[mt]:1,[pt]:3,[ft]:2};function bt(e,t){const n=e.length<=1,s=e.map(e=>`"${e}"`);let i=n?s[0]:`${s.slice(0,-1).join(", ")} and ${s.slice(-1)[0]}`;return t&&(i+=` ${n?t[0]:t[1]}`),i}function Et(e){const t=F(e);return t.slice(0,Math.max(0,t.length-U(e).length))}function xt(e){return B(e)?H(W(),e):e}function At(e){return"/"===e[0]||"."===e[0]&&("/"===e[1]||"."===e[1])||B(e)}const St=/^(\.\.\/)*\.\.$/;function $t(e,t,n,s){for(;t.startsWith("../");)t=t.slice(3),e="_/"+e;let i=V(H(j(e),t));if(n&&i.endsWith(".js")&&(i=i.slice(0,-3)),s){if(""===i)return"../"+F(t);if(St.test(i))return[...i.split("/"),"..",F(t)].join("/")}return i?i.startsWith("..")?i:"./"+i:"."}function vt(e){return`https://rollupjs.org/${e}`}const Pt="troubleshooting/#error-name-is-not-exported-by-module",It="configuration-options/#jsx",wt="configuration-options/#output-amd-id",Nt="configuration-options/#output-dir",kt="configuration-options/#output-exports",Ct="configuration-options/#output-format",Rt="configuration-options/#output-inlinedynamicimports",Dt="configuration-options/#output-interop",Ot="configuration-options/#output-manualchunks",Mt="configuration-options/#output-name",_t="configuration-options/#output-sourcemapfile",Lt="es-module-syntax/#source-phase-import",Tt="plugin-development/#generatebundle";function Bt(e){throw e instanceof Error?e:zt(e)}function zt(e){jt(e);const t=Object.assign(new Error(e.message),e);return Object.defineProperty(t,"name",{value:"RollupError",writable:!0}),t}function Vt(e,t,n,s){if("object"==typeof t){const{line:n,column:i}=t;e.loc={column:i,file:s,line:n}}else{e.pos=t;const i=ct(n,t,{offsetLine:1});if(!i)return;const{line:r,column:o}=i;e.loc={column:o,file:s,line:r}}if(void 0===e.frame){const{line:t,column:s}=e.loc;e.frame=ht(n,t,s)}}const Ft=Symbol("augmented");function jt(e){if(!e.plugin&&!e.loc||e[Ft])return;e[Ft]=!0;let t="";e.plugin&&(t+=`[plugin ${e.plugin}] `);const n=e.id||e.loc?.file;if(n){const s=e.loc?` (${e.loc.line}:${e.loc.column})`:"";t+=`${xt(n)}${s}: `}const s=e.message;e.message=t+e.message,pn(e,s)}const Ut="INVALID_EXPORT_OPTION",Gt="INVALID_IMPORT_ATTRIBUTE",Ht="INVALID_PLUGIN_HOOK",Wt="MISSING_EXPORT",qt="MISSING_IMPLICIT_DEPENDANT",Kt="MISSING_NAME_OPTION_FOR_IIFE_EXPORT",Xt="PARSE_ERROR",Jt="SOURCEMAP_BROKEN",Yt="UNEXPECTED_NAMED_IMPORT",Zt="UNRESOLVED_ENTRY",Qt="UNRESOLVED_IMPORT";function en(e){return{code:"ASSET_SOURCE_MISSING",message:`Plugin error creating asset "${e}" - no asset source set.`}}function tn(e){return{code:"CANNOT_CALL_NAMESPACE",message:`Cannot call a namespace ("${e}").`}}function nn({fileName:e,code:t},{pos:n,message:s}){const i={code:"CHUNK_INVALID",message:`Chunk "${e}" is not valid JavaScript: ${s}.`};return Vt(i,n,t,e),i}function sn(e){return{code:"CIRCULAR_DEPENDENCY",ids:e,message:`Circular dependency: ${e.map(xt).join(" -> ")}`}}function rn(e,t,n,s,i){return{code:"CYCLIC_CROSS_CHUNK_REEXPORT",exporter:t,id:s,message:`Export "${e}" of module "${xt(t)}" was reexported through module "${xt(n)}" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.\nEither change the import in "${xt(s)}" to point directly to the exporting module or ${i?'do not use "output.preserveModules"':'reconfigure "output.manualChunks"'} to ensure these modules end up in the same chunk.`,reexporter:n}}function on(e){return{code:"FILE_NAME_OUTSIDE_OUTPUT_DIRECTORY",message:`The output file name "${e}" is not contained in the output directory. Make sure all file names are relative paths without ".." segments.`}}function an(e,t,{line:n,column:s}){return{code:"FIRST_SIDE_EFFECT",message:`First side effect in ${xt(t)} is at (${n}:${s})\n${ht(e,n,s)}`}}function ln(e,t){return{code:"ILLEGAL_REASSIGNMENT",message:`Illegal reassignment of import "${e}" in "${xt(t)}".`}}function cn(e,t,n,s){return{code:"INCONSISTENT_IMPORT_ATTRIBUTES",message:`Module "${xt(s)}" tried to import "${xt(n)}" with ${un(t)} attributes, but it was already imported elsewhere with ${un(e)} attributes. Please ensure that import attributes for the same module are always consistent.`}}const un=e=>{const t=Object.entries(e);return 0===t.length?"no":t.map(([e,t])=>`"${e}": "${t}"`).join(", ")};function dn(e,t,n){return{code:"INVALID_ANNOTATION",id:t,message:`A comment\n\n"${e}"\n\nin "${xt(t)}" contains an annotation that Rollup cannot interpret due to the position of the comment. The comment will be removed to avoid issues.`,url:vt("noSideEffects"===n?"configuration-options/#no-side-effects":"configuration-options/#pure")}}function hn(e,t){return{code:"INPUT_HOOK_IN_OUTPUT_PLUGIN",message:`The "${t}" hook used by the output plugin ${e} is a build time hook and will not be run for that plugin. Either this plugin cannot be used as an output plugin, or it should have an option to configure it as an output plugin.`}}function pn(e,t){return e.stack?(e.stack=e.stack.replace(t,e.message),e):e}function fn(e,t,n){return{code:Ut,message:`"${e}" was specified for "output.exports", but entry module "${xt(n)}" has the following exports: ${bt(t)}`,url:vt(kt)}}function mn(e){return{code:Gt,message:`Rollup could not statically analyze an import attribute of a dynamic import in "${xt(e)}". Import attributes need to have string keys and values.`}}function gn(e,t,n,s){return{code:"INVALID_OPTION",message:`Invalid value ${void 0===s?"":`${JSON.stringify(s)} `}for option "${e}" - ${n}.`,url:vt(t)}}function yn(e,t){return{binding:e,code:Wt,exporter:t,message:`Exported variable "${e}" is not defined in "${xt(t)}".`,url:vt(Pt)}}function bn(e,t,n,s){const i={binding:e,code:Wt,exporter:n,id:t,url:vt(Pt)};if(s)return{...i,message:`Exported variable "${e}" is not defined in "${xt(n)}", but it is imported by "${xt(t)}".`};const r=".json"===U(n);return{...i,message:`"${e}" is not exported by "${xt(n)}", imported by "${xt(t)}".${r?" (Note that you need @rollup/plugin-json to import JSON files)":""}`}}function En(e){const t=[...e.implicitlyLoadedBefore].map(e=>xt(e.id)).sort();return{code:qt,message:`Module "${xt(e.id)}" that should be implicitly loaded before ${bt(t)} is not included in the module graph. Either it was not imported by an included module or only via a tree-shaken dynamic import, or no imported bindings were used and it had otherwise no side-effects.`}}function xn(e,t){return{code:"NON_EXTERNAL_SOURCE_PHASE_IMPORT",message:`Source phase import "${e}" in "${xt(t)}" must be external. Source phase imports are only supported for external modules. Use the "external" option to mark this module as external.`,url:vt(Lt)}}function An(e,t,n){return{code:"OPTIMIZE_CHUNK_STATUS",message:`${n}, there are\n${e} chunks, of which\n${t} are below minChunkSize.`}}function Sn(e,t){return{code:Xt,message:e,pos:t}}function $n(e){return{code:"REDECLARATION_ERROR",message:`Identifier "${e}" has already been declared`}}function vn(e){return{code:"RESERVED_NAMESPACE",message:`You have overridden reserved namespace "${e}"`}}function Pn(e,t){let n=e.message.replace(/ \(\d+:\d+\)$/,"");return t.endsWith(".json")?n+=" (Note that you need @rollup/plugin-json to import JSON files)":t.endsWith(".js")||(n+=" (Note that you need plugins to import files that are not JavaScript)"),pn({cause:e,code:Xt,id:t,message:n,stack:e.stack},e.message)}function In(e,t,{hook:n,id:s}={}){const i=e.code;return e.pluginCode||null==i||"string"==typeof i&&i.startsWith("PLUGIN_")||(e.pluginCode=i),e.code="PLUGIN_ERROR",e.plugin=t,n&&(e.hook=n),s&&(e.id=s),e}function wn(e){return{code:Jt,message:`Multiple conflicting contents for sourcemap source ${e}`}}function Nn(e,t,n){const s=n?"reexport":"import";return{code:Yt,exporter:e,message:`The named export "${t}" was ${s}ed from the external module "${xt(e)}" even though its interop type is "defaultOnly". Either remove or change this ${s} or change the value of the "output.interop" option.`,url:vt(Dt)}}function kn(e){return{code:Yt,exporter:e,message:`There was a namespace "*" reexport from the external module "${xt(e)}" even though its interop type is "defaultOnly". This will be ignored as namespace reexports only reexport named exports. If this is not intended, either remove or change this reexport or change the value of the "output.interop" option.`,url:vt(Dt)}}function Cn(e){return{code:"VALIDATION_ERROR",message:e}}function Rn(e,t,n,s,i){!function(e,t,n,s,i){if(n||i){const n=function(e,t){return{code:"DEPRECATED_FEATURE",message:e,url:vt(t)}}(e,t);if(i)return Bt(n);s(ft,n)}}(e,t,n,s.onLog,s.strictDeprecations)}const Dn=Symbol("PureFunction");class On extends We{markReassigned(){this.isReassigned=!0}constructor(e){super(),this.name=e,this.alwaysRendered=!1,this.forbiddenNames=null,this.globalName=null,this.initReached=!1,this.isId=!1,this.kind=null,this.renderBaseName=null,this.renderName=null,this.isReassigned=!1,this.onlyFunctionCallUsed=!0}addReference(e){}getOnlyFunctionCallUsed(){return this.onlyFunctionCallUsed}addUsedPlace(e){e.parent.type===nt&&e.parent.callee===e||e.parent.type===st||(this.onlyFunctionCallUsed=!1)}forbidName(e){(this.forbiddenNames||=new Set).add(e)}getBaseVariableName(){return this.renderedLikeHoisted?.getBaseVariableName()||this.renderBaseName||this.renderName||this.name}getName(e,t){if(this.globalName)return this.globalName;if(t?.(this))return this.name;if(this.renderedLikeHoisted)return this.renderedLikeHoisted.getName(e,t);const n=this.renderName||this.name;return this.renderBaseName?`${this.renderBaseName}${e(n)}`:n}hasEffectsOnInteractionAtPath(e,{type:t},n){return 0!==t||e.length>0}includePath(e,t){this.included=!0,this.renderedLikeHoisted?.includePath(e,t)}renderLikeHoisted(e){this.renderedLikeHoisted=e}markCalledFromTryStatement(){}setRenderNames(e,t){this.renderBaseName=e,this.renderName=t}}const Mn="*source";class _n extends On{constructor(e,t){super(t),this.referenced=!1,this.module=e,this.isNamespace="*"===t,this.isSourcePhase=t===Mn}addReference(e){this.referenced=!0,"default"!==this.name&&"*"!==this.name||this.module.suggestName(e.name)}hasEffectsOnInteractionAtPath(e,{type:t}){return 0!==t||e.length>(this.isNamespace?1:0)}includePath(e,t){super.includePath(e,t),this.module.used=!0}}function Ln(e,t){for(const n of t){const t=Object.getOwnPropertyDescriptor(e,n).get;Object.defineProperty(e,n,{get(){const s=t.call(e);return Object.defineProperty(e,n,{value:s}),s}})}}const Tn=new Set(["await","break","case","catch","class","const","continue","debugger","default","delete","do","else","enum","eval","export","extends","false","finally","for","function","if","implements","import","in","instanceof","interface","let","NaN","new","null","package","private","protected","public","return","static","super","switch","this","throw","true","try","typeof","undefined","var","void","while","with","yield"]),Bn=/[^\w$]/g,zn=/[^\w$]/,Vn=e=>(e=>/\d/.test(e[0]))(e)||Tn.has(e)||"arguments"===e;function Fn(e){return e=e.replace(/-(\w)/g,(e,t)=>t.toUpperCase()).replace(Bn,"_"),Vn(e)&&(e=`_${e}`),e||"_"}const jn=/^[$_\p{ID_Start}][$\u200C\u200D\p{ID_Continue}]*$/u,Un=/^(?:0|[1-9]\d*)$/;function Gn(e){return jn.test(e)?"__proto__"===e?'["__proto__"]':e:Un.test(e)&&+e<=Number.MAX_SAFE_INTEGER?e:JSON.stringify(e)}function Hn(e){return jn.test(e)?e:JSON.stringify(e)}class Wn{constructor(e,t,n,s,i,r){this.options=e,this.id=t,this.renormalizeRenderPath=i,this.dynamicImporters=[],this.execIndex=1/0,this.exportedVariables=new Map,this.importers=[],this.reexported=!1,this.used=!1,this.declarations=new Map,this.importersByExportedName=new Map,this.mostCommonSuggestion=0,this.nameSuggestions=new Map,this.suggestedVariableName=Fn(t.split(/[/\\]/).pop());const{importers:o,dynamicImporters:a}=this;this.info={ast:null,attributes:r,code:null,dynamicallyImportedIdResolutions:le,dynamicallyImportedIds:le,get dynamicImporters(){return a.sort()},exportedBindings:null,exports:null,hasDefaultExport:null,id:t,implicitlyLoadedAfterOneOf:le,implicitlyLoadedBefore:le,importedIdResolutions:le,importedIds:le,get importers(){return o.sort()},isEntry:!1,isExternal:!0,isIncluded:null,meta:s,moduleSideEffects:n,safeVariableNames:null,syntheticNamedExports:!1}}cacheInfoGetters(){Ln(this.info,["dynamicImporters","importers"])}getVariableForExportName(e,{importChain:t}){const n=this.declarations.get(e);for(const n of t)ue(this.importersByExportedName,e,de).add(n);if(n)return[n];const s=new _n(this,e);return this.declarations.set(e,s),this.exportedVariables.set(s,e),[s]}suggestName(e){const t=(this.nameSuggestions.get(e)??0)+1;this.nameSuggestions.set(e,t),t>this.mostCommonSuggestion&&(this.mostCommonSuggestion=t,this.suggestedVariableName=e)}warnUnusedImports(){const e=[...this.declarations].filter(([e,t])=>"*"!==e&&!t.included&&!this.reexported&&!t.referenced).map(([e])=>e);if(0===e.length)return;const t=new Set;for(const n of e){const e=this.importersByExportedName.get(n);for(const n of this.importers)e?.has(n)&&t.add(n)}const n=[...t];var s,i,r;this.options.onLog(ft,{code:"UNUSED_EXTERNAL_IMPORT",exporter:s=this.id,ids:r=n,message:`${bt(i=e,["is","are"])} imported from external module "${s}" but never used in ${bt(r.map(e=>xt(e)))}.`,names:i})}}function qn(e){e.isExecuted=!0;const t=[e],n=new Set;for(const e of t)for(const s of[...e.dependencies,...e.implicitlyLoadedBefore])s instanceof Wn||s.isExecuted||!s.info.moduleSideEffects&&!e.implicitlyLoadedBefore.has(s)||n.has(s.id)||(s.isExecuted=!0,n.add(s.id),t.push(s))}const Kn=()=>{};var Xn=["var","let","const","init","get","set","constructor","method","-","+","!","~","typeof","void","delete","++","--","==","!=","===","!==","<","<=",">",">=","<<",">>",">>>","+","-","*","/","%","|","^","&","||","&&","in","instanceof","**","??","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","^=","&=","**=","&&=","||=","??=","pure","noSideEffects","sourcemap","using","await using","source","defer"];const Jn="_rollupAnnotations",Yn="_rollupRemoved",Zn=(e,t)=>{if(0===e)return le;const n=t[e++],s=new Array(n);for(let i=0;i{const n=t[e++];return{end:t[e++],start:n,type:Xn[t[e]]}},es={ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],AwaitExpression:["argument"],BinaryExpression:["left","right"],BlockStatement:["body"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["decorators","id","superClass","body"],ClassExpression:["decorators","id","superClass","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],Decorator:["expression"],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["exported","source","attributes"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["specifiers","source","attributes","declaration"],ExportSpecifier:["local","exported"],ExpressionStatement:["expression"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],ForStatement:["init","test","update","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportAttribute:["key","value"],ImportDeclaration:["specifiers","source","attributes"],ImportDefaultSpecifier:["local"],ImportExpression:["source","options"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],JSXAttribute:["name","value"],JSXClosingElement:["name"],JSXClosingFragment:[],JSXElement:["openingElement","children","closingElement"],JSXEmptyExpression:[],JSXExpressionContainer:["expression"],JSXFragment:["openingFragment","children","closingFragment"],JSXIdentifier:[],JSXMemberExpression:["object","property"],JSXNamespacedName:["namespace","name"],JSXOpeningElement:["name","attributes"],JSXOpeningFragment:[],JSXSpreadAttribute:["argument"],JSXSpreadChild:["expression"],JSXText:[],LabeledStatement:["label","body"],Literal:[],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["decorators","key","value"],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PanicError:[],ParseError:[],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["decorators","key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],StaticBlock:["body"],Super:[],SwitchCase:["test","consequent"],SwitchStatement:["discriminant","cases"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],YieldExpression:["argument"]},ts="variables",ns=Symbol("IS_SKIPPED_CHAIN");class ss extends We{get deoptimized(){return Fe(this.flags,2)}set deoptimized(e){this.flags=je(this.flags,2,e)}constructor(e,t){super(),this.parent=e,this.scope=t,this.createScope(t)}addExportedVariables(e,t){}bind(){for(const e of es[this.type]){const t=this[e];if(Array.isArray(t))for(const e of t)e?.bind();else t&&t.bind()}}createScope(e){this.scope=e}hasEffects(e){this.deoptimized||this.applyDeoptimizations();for(const t of es[this.type]){const n=this[t];if(null!==n)if(Array.isArray(n)){for(const t of n)if(t?.hasEffects(e))return!0}else if(n.hasEffects(e))return!0}return!1}hasEffectsAsAssignmentTarget(e,t){return this.hasEffects(e)||this.hasEffectsOnInteractionAtPath(Pe,this.assignmentInteraction,e)}include(e,t,n){this.included||this.includeNode(e);for(const n of es[this.type]){const s=this[n];if(null!==s)if(Array.isArray(s))for(const n of s)n?.include(e,t);else s.include(e,t)}}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations();for(const t of es[this.type]){const n=this[t];if(null!==n)if(Array.isArray(n))for(const t of n)t?.includePath(Ie,e);else n.includePath(Ie,e)}}includeAsAssignmentTarget(e,t,n){this.include(e,t)}initialise(){this.scope.context.magicString.addSourcemapLocation(this.start),this.scope.context.magicString.addSourcemapLocation(this.end)}parseNode(e){for(const[t,n]of Object.entries(e))if(!this.hasOwnProperty(t))if(95===t.charCodeAt(0))t===Jn?this.annotations=n:t===Yn&&(this.invalidAnnotations=n);else if("object"!=typeof n||null===n)this[t]=n;else if(Array.isArray(n)){this[t]=new Array(n.length);let e=0;for(const s of n)this[t][e++]=null===s?null:new(this.scope.context.getNodeConstructor(s.type))(this,this.scope).parseNode(s)}else this[t]=new(this.scope.context.getNodeConstructor(n.type))(this,this.scope).parseNode(n);return es[e.type]||=function(e){return Object.keys(e).filter(t=>"object"==typeof e[t]&&95!==t.charCodeAt(0))}(e),this.initialise(),this}removeAnnotations(e){if(this.annotations)for(const t of this.annotations)e.remove(t.start,t.end)}render(e,t){for(const n of es[this.type]){const s=this[n];if(null!==s)if(Array.isArray(s))for(const n of s)n?.render(e,t);else s.render(e,t)}}setAssignedValue(e){this.assignmentInteraction={args:[null,e],type:1}}shouldBeIncluded(e){return this.included||!e.brokenFlow&&this.hasEffects(Ve())}applyDeoptimizations(){this.deoptimized=!0;for(const e of es[this.type]){const t=this[e];if(null!==t)if(Array.isArray(t))for(const e of t)e?.deoptimizePath(Ie);else t.deoptimizePath(Ie)}this.scope.context.requestTreeshakingPass()}}function is(){this.included=!0,this.deoptimized||this.applyDeoptimizations()}function rs(){this.included=!0}function os(){this.deoptimized=!0}function as(e){return e instanceof ss&&e.type===tt}function ls(e){return e instanceof ss&&"FunctionExpression"===e.type}function cs(e){return e instanceof ss&&e.type===nt}function us(e){return e instanceof ss&&"MemberExpression"===e.type}function ds(e){return e instanceof ss&&e.type===rt}function hs(e){return e instanceof ss&&e.type===it}function ps(e,t=null){return Object.create(t,e)}const fs=new class extends We{getLiteralValueAtPath(e){return e.length>0?Ue:void 0}},ms={value:{hasEffectsWhenCalled:null,returns:qe}},gs=new class extends We{getReturnExpressionWhenCalledAtPath(e){return 1===e.length?ks(vs,e[0]):Ke}hasEffectsOnInteractionAtPath(e,t,n){return 0===t.type?e.length>1:2!==t.type||1!==e.length||Ns(vs,e[0],t,n)}},ys={value:{hasEffectsWhenCalled:null,returns:gs}},bs=new class extends We{getReturnExpressionWhenCalledAtPath(e){return 1===e.length?ks(Ps,e[0]):Ke}hasEffectsOnInteractionAtPath(e,t,n){return 0===t.type?e.length>1:2!==t.type||1!==e.length||Ns(Ps,e[0],t,n)}},Es={value:{hasEffectsWhenCalled:null,returns:bs}},xs=new class extends We{getReturnExpressionWhenCalledAtPath(e){return 1===e.length?ks(ws,e[0]):Ke}hasEffectsOnInteractionAtPath(e,t,n){return 0===t.type?e.length>1:2!==t.type||1!==e.length||Ns(ws,e[0],t,n)}},As={value:{hasEffectsWhenCalled:null,returns:xs}},Ss={value:{hasEffectsWhenCalled({args:e},t){const n=e[2];return e.length<3||"symbol"==typeof n.getLiteralValueAtPath(Pe,De,{deoptimizeCache(){}})&&n.hasEffectsOnInteractionAtPath(Pe,et,t)},returns:xs}},$s=ps({hasOwnProperty:ys,isPrototypeOf:ys,propertyIsEnumerable:ys,toLocaleString:As,toString:As,valueOf:ms}),vs=ps({valueOf:ys},$s),Ps=ps({toExponential:As,toFixed:As,toLocaleString:As,toPrecision:As,valueOf:Es},$s),Is=ps({exec:ms,test:ys},$s),ws=ps({anchor:As,at:ms,big:As,blink:As,bold:As,charAt:As,charCodeAt:Es,codePointAt:ms,concat:As,endsWith:ys,fixed:As,fontcolor:As,fontsize:As,includes:ys,indexOf:Es,italics:As,lastIndexOf:Es,link:As,localeCompare:Es,match:ms,matchAll:ms,normalize:As,padEnd:As,padStart:As,repeat:As,replace:Ss,replaceAll:Ss,search:Es,slice:As,small:As,split:ms,startsWith:ys,strike:As,sub:As,substr:As,substring:As,sup:As,toLocaleLowerCase:As,toLocaleUpperCase:As,toLowerCase:As,toString:As,toUpperCase:As,trim:As,trimEnd:As,trimLeft:As,trimRight:As,trimStart:As,valueOf:As},$s);function Ns(e,t,n,s){return"string"!=typeof t||!e[t]||(e[t].hasEffectsWhenCalled?.(n,s)||!1)}function ks(e,t){return"string"==typeof t&&e[t]?[e[t].returns,!1]:Ke}class Cs extends We{constructor(e){super(),this.description=e}deoptimizeArgumentsOnInteractionAtPath({args:e,type:t},n){if(2===t&&0===n.length&&(this.description.mutatesSelfAsArray&&e[0]?.deoptimizePath(Ne),this.description.mutatesArgs))for(let t=1;t0?Ke:[this.description.returnsPrimitive||("self"===this.description.returns?t[0]||qe:this.description.returns()),!1]}hasEffectsOnInteractionAtPath(e,{args:t,type:n},s){if(e.length>(0===n?1:0))return!0;if(2===n){if(!0===this.description.mutatesSelfAsArray&&t[0]?.hasEffectsOnInteractionAtPath(Ne,Qe,s))return!0;if(this.description.callsArgs)for(const e of this.description.callsArgs)if(t[e+1]?.hasEffectsOnInteractionAtPath(Pe,et,s))return!0}return!1}}const Rs=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!1,returns:null,returnsPrimitive:gs})],Ds=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!1,returns:null,returnsPrimitive:xs})],Os=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!1,returns:null,returnsPrimitive:bs})],Ms=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!1,returns:null,returnsPrimitive:qe})],_s=/^\d+$/;class Ls extends We{get hasLostTrack(){return Fe(this.flags,2048)}set hasLostTrack(e){this.flags=je(this.flags,2048,e)}get hasUnknownDeoptimizedInteger(){return Fe(this.flags,4096)}set hasUnknownDeoptimizedInteger(e){this.flags=je(this.flags,4096,e)}get hasUnknownDeoptimizedProperty(){return Fe(this.flags,8192)}set hasUnknownDeoptimizedProperty(e){this.flags=je(this.flags,8192,e)}constructor(e,t,n=!1){if(super(),this.prototypeExpression=t,this.immutable=n,this.additionalExpressionsToBeDeoptimized=new Set,this.allProperties=[],this.alwaysIncludedProperties=new Set,this.deoptimizedPaths=new Map,this.expressionsToBeDeoptimizedByKey=new Map,this.gettersByKey=new Map,this.propertiesAndGettersByKey=new Map,this.propertiesAndSettersByKey=new Map,this.settersByKey=new Map,this.unknownIntegerProps=[],this.unmatchableGetters=[],this.unmatchablePropertiesAndGetters=[],this.unmatchablePropertiesAndSetters=[],this.unmatchableSetters=[],Array.isArray(e))this.buildPropertyMaps(e);else{this.propertiesAndGettersByKey=this.propertiesAndSettersByKey=e;for(const t of e.values())this.allProperties.push(...t)}}deoptimizeAllProperties(e){const t=this.hasLostTrack||this.hasUnknownDeoptimizedProperty;if(e?this.hasUnknownDeoptimizedProperty=!0:this.hasLostTrack=!0,!t){for(const e of[...this.propertiesAndGettersByKey.values(),...this.settersByKey.values()])for(const t of e)t.deoptimizePath(Ie);this.prototypeExpression?.deoptimizePath([pe,pe]),this.deoptimizeCachedEntities()}}deoptimizeArgumentsOnInteractionAtPath(e,t,n){const[s,...i]=t,{args:r,type:o}=e;if(this.hasLostTrack||(2===o||t.length>1)&&(this.hasUnknownDeoptimizedProperty||ve(s)&&this.deoptimizedPaths.get(s)))return void Xe(e);const[a,l,c]=2===o||t.length>1?[this.propertiesAndGettersByKey,this.propertiesAndGettersByKey,this.unmatchablePropertiesAndGetters]:0===o?[this.propertiesAndGettersByKey,this.gettersByKey,this.unmatchableGetters]:[this.propertiesAndSettersByKey,this.settersByKey,this.unmatchableSetters];if(ve(s)){if(a.get(s)){const t=l.get(s);if(t)for(const s of t)s.deoptimizeArgumentsOnInteractionAtPath(e,i,n);if(!this.immutable)for(const e of r)e&&this.additionalExpressionsToBeDeoptimized.add(e);return}for(const t of c)t.deoptimizeArgumentsOnInteractionAtPath(e,i,n);if("string"==typeof s&&_s.test(s))for(const t of this.unknownIntegerProps)t.deoptimizeArgumentsOnInteractionAtPath(e,i,n)}else{for(const t of[...l.values(),c])for(const s of t)s.deoptimizeArgumentsOnInteractionAtPath(e,i,n);for(const t of this.unknownIntegerProps)t.deoptimizeArgumentsOnInteractionAtPath(e,i,n)}if(!this.immutable)for(const e of r)e&&this.additionalExpressionsToBeDeoptimized.add(e);this.prototypeExpression?.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeIntegerProperties(){if(!(this.hasLostTrack||this.hasUnknownDeoptimizedProperty||this.hasUnknownDeoptimizedInteger)){this.hasUnknownDeoptimizedInteger=!0;for(const[e,t]of this.propertiesAndGettersByKey.entries())if("string"==typeof e&&_s.test(e))for(const e of t)e.deoptimizePath(Ie);this.deoptimizeCachedIntegerEntities()}}deoptimizePath(e){if(this.hasLostTrack||this.immutable)return;const t=e[0];if(1===e.length){if(t===me)return this.deoptimizeIntegerProperties();if(!ve(t))return this.deoptimizeAllProperties(t===fe);if(!this.deoptimizedPaths.get(t)){this.deoptimizedPaths.set(t,!0);const e=this.expressionsToBeDeoptimizedByKey.get(t);if(e)for(const t of e)t.deoptimizeCache()}}const n=1===e.length?Ie:e.slice(1);for(const e of ve(t)?[...this.propertiesAndGettersByKey.get(t)||this.unmatchablePropertiesAndGetters,...this.settersByKey.get(t)||this.unmatchableSetters]:this.allProperties)e.deoptimizePath(n);this.prototypeExpression?.deoptimizePath(1===e.length?[e[0],pe]:e)}getLiteralValueAtPath(e,t,n){if(0===e.length)return Ue;const s=e[0],i=this.getMemberExpressionAndTrackDeopt(s,n);return i?i.getLiteralValueAtPath(e.slice(1),t,n):this.prototypeExpression?this.prototypeExpression.getLiteralValueAtPath(e,t,n):1!==e.length?Ue:void 0}getReturnExpressionWhenCalledAtPath(e,t,n,s){if(0===e.length)return Ke;const[i,...r]=e,o=this.getMemberExpressionAndTrackDeopt(i,s);return o?o.getReturnExpressionWhenCalledAtPath(r,t,n,s):this.prototypeExpression?this.prototypeExpression.getReturnExpressionWhenCalledAtPath(e,t,n,s):Ke}hasEffectsOnInteractionAtPath(e,t,n){const[s,...i]=e;if(i.length>0||2===t.type){const r=this.getMemberExpression(s);return r?r.hasEffectsOnInteractionAtPath(i,t,n):!this.prototypeExpression||this.prototypeExpression.hasEffectsOnInteractionAtPath(e,t,n)}if(s===fe)return!1;if(this.hasLostTrack)return!0;const[r,o,a]=0===t.type?[this.propertiesAndGettersByKey,this.gettersByKey,this.unmatchableGetters]:[this.propertiesAndSettersByKey,this.settersByKey,this.unmatchableSetters];if(ve(s)){if(r.get(s)){const e=o.get(s);if(e)for(const s of e)if(s.hasEffectsOnInteractionAtPath(i,t,n))return!0;return!1}for(const e of a)if(e.hasEffectsOnInteractionAtPath(i,t,n))return!0}else for(const e of[...o.values(),a])for(const s of e)if(s.hasEffectsOnInteractionAtPath(i,t,n))return!0;return!!this.prototypeExpression&&this.prototypeExpression.hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included=!0;for(const n of this.allProperties)(t||n.shouldBeIncluded(e)||this.alwaysIncludedProperties.has(n))&&n.include(e,t);this.prototypeExpression?.include(e,t)}includePath(e,t){this.included=!0;for(const e of this.alwaysIncludedProperties)e.includePath(Ie,t);if(0===e.length)return;const[n,...s]=e,[i,r]=ve(n)?[new Set([...this.propertiesAndGettersByKey.get(n)||this.unmatchablePropertiesAndGetters,...this.propertiesAndSettersByKey.get(n)||this.unmatchablePropertiesAndSetters]),s]:[this.allProperties,Ie];for(const e of i)e.includePath(r,t);this.prototypeExpression?.includePath(e,t)}buildPropertyMaps(e){const{allProperties:t,alwaysIncludedProperties:n,propertiesAndGettersByKey:s,propertiesAndSettersByKey:i,settersByKey:r,gettersByKey:o,unknownIntegerProps:a,unmatchablePropertiesAndGetters:l,unmatchablePropertiesAndSetters:c,unmatchableGetters:u,unmatchableSetters:d}=this;for(let h=e.length-1;h>=0;h--){const{key:p,kind:f,property:m}=e[h];if(t.push(m),!Se(p)||$e.has(p)||(n.add(m),p!==ge))if(ve(p))"set"===f?i.has(p)||(i.set(p,[m,...c]),r.set(p,[m,...d])):"get"===f?s.has(p)||(s.set(p,[m,...l]),o.set(p,[m,...u])):(i.has(p)||i.set(p,[m,...c]),s.has(p)||s.set(p,[m,...l]));else{if(p===me){a.push(m);continue}"set"===f&&d.push(m),"get"===f&&u.push(m),"get"!==f&&c.push(m),"set"!==f&&l.push(m)}}}deoptimizeCachedEntities(){for(const e of this.expressionsToBeDeoptimizedByKey.values())for(const t of e)t.deoptimizeCache();for(const e of this.additionalExpressionsToBeDeoptimized)e.deoptimizePath(Ie)}deoptimizeCachedIntegerEntities(){for(const[e,t]of this.expressionsToBeDeoptimizedByKey.entries())if("string"==typeof e&&_s.test(e))for(const e of t)e.deoptimizeCache();for(const e of this.additionalExpressionsToBeDeoptimized)e.deoptimizePath(Ne)}getMemberExpression(e){if(this.hasLostTrack||this.hasUnknownDeoptimizedProperty||!ve(e)||this.hasUnknownDeoptimizedInteger&&"string"==typeof e&&_s.test(e)||this.deoptimizedPaths.get(e))return qe;const t=this.propertiesAndGettersByKey.get(e);return 1===t?.length?t[0]:t||this.unmatchablePropertiesAndGetters.length>0||this.unknownIntegerProps.length>0&&"string"==typeof e&&_s.test(e)?qe:null}getMemberExpressionAndTrackDeopt(e,t){if(!ve(e))return qe;const n=this.getMemberExpression(e);if(n!==qe&&!this.immutable){let n=this.expressionsToBeDeoptimizedByKey.get(e);n||this.expressionsToBeDeoptimizedByKey.set(e,n=[]),n.push(t)}return n}}const Ts=e=>"string"==typeof e&&/^\d+$/.test(e),Bs=new class extends We{deoptimizeArgumentsOnInteractionAtPath(e,t){2!==e.type||1!==t.length||Ts(t[0])||Xe(e)}getLiteralValueAtPath(e){return 1===e.length&&Ts(e[0])?void 0:Ue}hasEffectsOnInteractionAtPath(e,{type:t}){return e.length>1||2===t}},zs=new Ls(new Map([["hasOwnProperty",Rs],["isPrototypeOf",Rs],["propertyIsEnumerable",Rs],["toLocaleString",Ds],["toString",Ds],["valueOf",Ms]]),Bs,!0),Vs=[{key:me,kind:"init",property:qe},{key:"length",kind:"init",property:bs}],Fs=[new Cs({callsArgs:[0],mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:null,returnsPrimitive:gs})],js=[new Cs({callsArgs:[0],mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:null,returnsPrimitive:bs})],Us=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!0,returns:()=>new Ls(Vs,Zs),returnsPrimitive:null})],Gs=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:()=>new Ls(Vs,Zs),returnsPrimitive:null})],Hs=[new Cs({callsArgs:[0],mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:()=>new Ls(Vs,Zs),returnsPrimitive:null})],Ws=[new Cs({callsArgs:null,mutatesArgs:!0,mutatesSelfAsArray:!0,returns:null,returnsPrimitive:bs})],qs=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!0,returns:null,returnsPrimitive:qe})],Ks=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:null,returnsPrimitive:qe})],Xs=[new Cs({callsArgs:[0],mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:null,returnsPrimitive:qe})],Js=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!0,returns:"self",returnsPrimitive:null})],Ys=[new Cs({callsArgs:[0],mutatesArgs:!1,mutatesSelfAsArray:!0,returns:"self",returnsPrimitive:null})],Zs=new Ls(new Map([["at",Ks],["concat",Gs],["copyWithin",Js],["entries",Gs],["every",Fs],["fill",Js],["filter",Hs],["find",Xs],["findIndex",js],["findLast",Xs],["findLastIndex",js],["flat",Gs],["flatMap",Hs],["forEach",Xs],["includes",Rs],["indexOf",Os],["join",Ds],["keys",Ms],["lastIndexOf",Os],["map",Hs],["pop",qs],["push",Ws],["reduce",Xs],["reduceRight",Xs],["reverse",Js],["shift",qs],["slice",Gs],["some",Fs],["sort",Ys],["splice",Us],["toLocaleString",Ds],["toString",Ds],["unshift",Ws],["values",Ks]]),zs,!0);class Qs extends ss{deoptimizeArgumentsOnInteractionAtPath(e,t,n){t.length>0&&this.argument.deoptimizeArgumentsOnInteractionAtPath(e,Ie,n)}hasEffects(e){this.deoptimized||this.applyDeoptimizations();const{propertyReadSideEffects:t}=this.scope.context.options.treeshake;return this.argument.hasEffects(e)||t&&("always"===t||this.argument.hasEffectsOnInteractionAtPath(Ie,Ze,e))}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.argument.includePath(Ie,e)}applyDeoptimizations(){this.deoptimized=!0,this.argument.deoptimizePath([pe,pe]),this.scope.context.requestTreeshakingPass()}}class ei extends ss{constructor(){super(...arguments),this.objectEntity=null}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.getObjectEntity().deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.getObjectEntity().getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e,t,n,s)}hasEffectsOnInteractionAtPath(e,t,n){return this.getObjectEntity().hasEffectsOnInteractionAtPath(e,t,n)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations();for(const t of this.elements)t&&t?.includePath(Ie,e)}applyDeoptimizations(){this.deoptimized=!0;let e=!1;for(let t=0;tUe,si=()=>!1,ii=()=>!0,ri=e=>({__proto__:null,[ti]:{deoptimizeArgumentsOnCall:Kn,getLiteralValue:()=>e,hasEffectsWhenCalled:ii}}),oi={deoptimizeArgumentsOnCall:Kn,getLiteralValue:ni,hasEffectsWhenCalled:si},ai={deoptimizeArgumentsOnCall:Kn,getLiteralValue:ni,hasEffectsWhenCalled:ii},li={deoptimizeArgumentsOnCall:Kn,getLiteralValue:ni,hasEffectsWhenCalled:({args:e})=>e.length>1&&!(e[1]instanceof ei)},ci={deoptimizeArgumentsOnCall:Kn,getLiteralValue:ni,hasEffectsWhenCalled({args:e},t){const[n,s]=e;return!(s instanceof We)||s.hasEffectsOnInteractionAtPath(Ie,Ze,t)}},ui={__proto__:null,[ti]:ai},di={__proto__:null,[ti]:oi},hi={__proto__:null,[ti]:ci},pi={__proto__:null,[ti]:{deoptimizeArgumentsOnCall({args:[,e]}){e?.deoptimizePath(Ie)},getLiteralValue:ni,hasEffectsWhenCalled:({args:e},t)=>e.length<=1||e[1].hasEffectsOnInteractionAtPath(we,Qe,t)}},fi={__proto__:null,[ti]:ai,prototype:ui},mi={__proto__:null,[ti]:oi,prototype:ui},gi={__proto__:null,[ti]:li,prototype:ui},yi={__proto__:null,[ti]:oi,from:ui,of:di,prototype:ui},bi={__proto__:null,[ti]:oi,supportedLocalesOf:mi},Ei={deoptimizeArgumentsOnCall:Kn,getLiteralValue:()=>ge,hasEffectsWhenCalled:ii},xi={global:ui,globalThis:ui,self:ui,window:ui,__proto__:null,[ti]:ai,Array:{__proto__:null,[ti]:ai,from:ui,isArray:di,of:di,prototype:ui},ArrayBuffer:{__proto__:null,[ti]:oi,isView:di,prototype:ui},AggregateError:gi,Atomics:ui,BigInt:fi,BigInt64Array:fi,BigUint64Array:fi,Boolean:mi,constructor:fi,DataView:mi,Date:{__proto__:null,[ti]:oi,now:di,parse:di,prototype:ui,UTC:di},decodeURI:di,decodeURIComponent:di,encodeURI:di,encodeURIComponent:di,Error:mi,escape:di,eval:ui,EvalError:mi,FinalizationRegistry:fi,Float32Array:yi,Float64Array:yi,Function:fi,hasOwnProperty:ui,Infinity:ui,Int16Array:yi,Int32Array:yi,Int8Array:yi,isFinite:di,isNaN:di,isPrototypeOf:ui,JSON:ui,Map:gi,Math:{__proto__:null,[ti]:ai,abs:di,acos:di,acosh:di,asin:di,asinh:di,atan:di,atan2:di,atanh:di,cbrt:di,ceil:di,clz32:di,cos:di,cosh:di,exp:di,expm1:di,floor:di,fround:di,hypot:di,imul:di,log:di,log10:di,log1p:di,log2:di,max:di,min:di,pow:di,random:di,round:di,sign:di,sin:di,sinh:di,sqrt:di,tan:di,tanh:di,trunc:di},NaN:ui,Number:{__proto__:null,[ti]:oi,isFinite:di,isInteger:di,isNaN:di,isSafeInteger:di,parseFloat:di,parseInt:di,prototype:ui},Object:{__proto__:null,[ti]:oi,create:di,defineProperty:pi,defineProperties:pi,freeze:pi,getOwnPropertyDescriptor:di,getOwnPropertyDescriptors:di,getOwnPropertyNames:di,getOwnPropertySymbols:di,getPrototypeOf:di,hasOwn:di,is:di,isExtensible:di,isFrozen:di,isSealed:di,keys:di,fromEntries:ui,entries:hi,values:hi,prototype:ui},parseFloat:di,parseInt:di,Promise:{__proto__:null,[ti]:ai,all:ui,allSettled:ui,any:ui,prototype:ui,race:ui,reject:ui,resolve:ui},propertyIsEnumerable:ui,Proxy:{__proto__:null,[ti]:{deoptimizeArgumentsOnCall:({args:[,e,t]})=>{if((n=t)instanceof ss&&"ObjectExpression"===n.type){const n=t.properties.some(e=>!function(e){return e instanceof ss&&e.type===at}(e));if(!n){for(const n of t.properties)n.deoptimizeArgumentsOnInteractionAtPath({args:[null,e],type:2,withNew:!1},Pe,De);return}}var n;e.deoptimizePath(Ie)},getLiteralValue:ni,hasEffectsWhenCalled:ii}},RangeError:mi,ReferenceError:mi,Reflect:ui,RegExp:mi,Set:gi,SharedArrayBuffer:fi,String:{__proto__:null,[ti]:oi,fromCharCode:di,fromCodePoint:di,prototype:ui,raw:di},Symbol:{__proto__:null,[ti]:oi,for:di,keyFor:di,prototype:ui,asyncDispose:ri(Ee),dispose:ri(be),hasInstance:ri(xe),toStringTag:ri(ye)},SyntaxError:mi,toLocaleString:ui,toString:ui,TypeError:mi,Uint16Array:yi,Uint32Array:yi,Uint8Array:yi,Uint8ClampedArray:yi,unescape:di,URIError:mi,valueOf:ui,WeakMap:gi,WeakRef:fi,WeakSet:gi,clearInterval:fi,clearTimeout:fi,console:{__proto__:null,[ti]:ai,assert:fi,clear:fi,count:fi,countReset:fi,debug:fi,dir:fi,dirxml:fi,error:fi,exception:fi,group:fi,groupCollapsed:fi,groupEnd:fi,info:fi,log:fi,table:fi,time:fi,timeEnd:fi,timeLog:fi,trace:fi,warn:fi},Intl:{__proto__:null,[ti]:ai,Collator:bi,DateTimeFormat:bi,DisplayNames:bi,ListFormat:bi,Locale:bi,NumberFormat:bi,PluralRules:bi,RelativeTimeFormat:bi,Segmenter:bi},setInterval:fi,setTimeout:fi,TextDecoder:fi,TextEncoder:fi,URL:{__proto__:null,[ti]:ai,prototype:ui,canParse:di},URLSearchParams:fi,AbortController:fi,AbortSignal:fi,addEventListener:ui,alert:ui,AnalyserNode:fi,Animation:fi,AnimationEvent:fi,applicationCache:ui,ApplicationCache:fi,ApplicationCacheErrorEvent:fi,atob:ui,Attr:fi,Audio:fi,AudioBuffer:fi,AudioBufferSourceNode:fi,AudioContext:fi,AudioDestinationNode:fi,AudioListener:fi,AudioNode:fi,AudioParam:fi,AudioProcessingEvent:fi,AudioScheduledSourceNode:fi,AudioWorkletNode:fi,BarProp:fi,BaseAudioContext:fi,BatteryManager:fi,BeforeUnloadEvent:fi,BiquadFilterNode:fi,Blob:fi,BlobEvent:fi,blur:ui,BroadcastChannel:fi,btoa:ui,ByteLengthQueuingStrategy:fi,Cache:fi,caches:ui,CacheStorage:fi,cancelAnimationFrame:ui,cancelIdleCallback:ui,CanvasCaptureMediaStreamTrack:fi,CanvasGradient:fi,CanvasPattern:fi,CanvasRenderingContext2D:fi,ChannelMergerNode:fi,ChannelSplitterNode:fi,CharacterData:fi,clientInformation:ui,ClipboardEvent:fi,close:ui,closed:ui,CloseEvent:fi,Comment:fi,CompositionEvent:fi,confirm:ui,ConstantSourceNode:fi,ConvolverNode:fi,CountQueuingStrategy:fi,createImageBitmap:ui,Credential:fi,CredentialsContainer:fi,crypto:ui,Crypto:fi,CryptoKey:fi,CSS:fi,CSSConditionRule:fi,CSSFontFaceRule:fi,CSSGroupingRule:fi,CSSImportRule:fi,CSSKeyframeRule:fi,CSSKeyframesRule:fi,CSSMediaRule:fi,CSSNamespaceRule:fi,CSSPageRule:fi,CSSRule:fi,CSSRuleList:fi,CSSStyleDeclaration:fi,CSSStyleRule:fi,CSSStyleSheet:fi,CSSSupportsRule:fi,CustomElementRegistry:fi,customElements:ui,CustomEvent:{__proto__:null,[ti]:{deoptimizeArgumentsOnCall({args:e}){e[2]?.deoptimizePath(["detail"])},getLiteralValue:ni,hasEffectsWhenCalled:si},prototype:ui},DataTransfer:fi,DataTransferItem:fi,DataTransferItemList:fi,defaultstatus:ui,defaultStatus:ui,DelayNode:fi,DeviceMotionEvent:fi,DeviceOrientationEvent:fi,devicePixelRatio:ui,dispatchEvent:ui,document:ui,Document:fi,DocumentFragment:fi,DocumentType:fi,DOMError:fi,DOMException:fi,DOMImplementation:fi,DOMMatrix:fi,DOMMatrixReadOnly:fi,DOMParser:fi,DOMPoint:fi,DOMPointReadOnly:fi,DOMQuad:fi,DOMRect:fi,DOMRectReadOnly:fi,DOMStringList:fi,DOMStringMap:fi,DOMTokenList:fi,DragEvent:fi,DynamicsCompressorNode:fi,Element:fi,ErrorEvent:fi,Event:fi,EventSource:fi,EventTarget:fi,external:ui,fetch:ui,File:fi,FileList:fi,FileReader:fi,find:ui,focus:ui,FocusEvent:fi,FontFace:fi,FontFaceSetLoadEvent:fi,FormData:fi,frames:ui,GainNode:fi,Gamepad:fi,GamepadButton:fi,GamepadEvent:fi,getComputedStyle:ui,getSelection:ui,HashChangeEvent:fi,Headers:fi,history:ui,History:fi,HTMLAllCollection:fi,HTMLAnchorElement:fi,HTMLAreaElement:fi,HTMLAudioElement:fi,HTMLBaseElement:fi,HTMLBodyElement:fi,HTMLBRElement:fi,HTMLButtonElement:fi,HTMLCanvasElement:fi,HTMLCollection:fi,HTMLContentElement:fi,HTMLDataElement:fi,HTMLDataListElement:fi,HTMLDetailsElement:fi,HTMLDialogElement:fi,HTMLDirectoryElement:fi,HTMLDivElement:fi,HTMLDListElement:fi,HTMLDocument:fi,HTMLElement:fi,HTMLEmbedElement:fi,HTMLFieldSetElement:fi,HTMLFontElement:fi,HTMLFormControlsCollection:fi,HTMLFormElement:fi,HTMLFrameElement:fi,HTMLFrameSetElement:fi,HTMLHeadElement:fi,HTMLHeadingElement:fi,HTMLHRElement:fi,HTMLHtmlElement:fi,HTMLIFrameElement:fi,HTMLImageElement:fi,HTMLInputElement:fi,HTMLLabelElement:fi,HTMLLegendElement:fi,HTMLLIElement:fi,HTMLLinkElement:fi,HTMLMapElement:fi,HTMLMarqueeElement:fi,HTMLMediaElement:fi,HTMLMenuElement:fi,HTMLMetaElement:fi,HTMLMeterElement:fi,HTMLModElement:fi,HTMLObjectElement:fi,HTMLOListElement:fi,HTMLOptGroupElement:fi,HTMLOptionElement:fi,HTMLOptionsCollection:fi,HTMLOutputElement:fi,HTMLParagraphElement:fi,HTMLParamElement:fi,HTMLPictureElement:fi,HTMLPreElement:fi,HTMLProgressElement:fi,HTMLQuoteElement:fi,HTMLScriptElement:fi,HTMLSelectElement:fi,HTMLShadowElement:fi,HTMLSlotElement:fi,HTMLSourceElement:fi,HTMLSpanElement:fi,HTMLStyleElement:fi,HTMLTableCaptionElement:fi,HTMLTableCellElement:fi,HTMLTableColElement:fi,HTMLTableElement:fi,HTMLTableRowElement:fi,HTMLTableSectionElement:fi,HTMLTemplateElement:fi,HTMLTextAreaElement:fi,HTMLTimeElement:fi,HTMLTitleElement:fi,HTMLTrackElement:fi,HTMLUListElement:fi,HTMLUnknownElement:fi,HTMLVideoElement:fi,IDBCursor:fi,IDBCursorWithValue:fi,IDBDatabase:fi,IDBFactory:fi,IDBIndex:fi,IDBKeyRange:fi,IDBObjectStore:fi,IDBOpenDBRequest:fi,IDBRequest:fi,IDBTransaction:fi,IDBVersionChangeEvent:fi,IdleDeadline:fi,IIRFilterNode:fi,Image:fi,ImageBitmap:fi,ImageBitmapRenderingContext:fi,ImageCapture:fi,ImageData:fi,indexedDB:ui,innerHeight:ui,innerWidth:ui,InputEvent:fi,IntersectionObserver:fi,IntersectionObserverEntry:fi,isSecureContext:ui,KeyboardEvent:fi,KeyframeEffect:fi,length:ui,localStorage:ui,location:ui,Location:fi,locationbar:ui,matchMedia:ui,MediaDeviceInfo:fi,MediaDevices:fi,MediaElementAudioSourceNode:fi,MediaEncryptedEvent:fi,MediaError:fi,MediaKeyMessageEvent:fi,MediaKeySession:fi,MediaKeyStatusMap:fi,MediaKeySystemAccess:fi,MediaList:fi,MediaQueryList:fi,MediaQueryListEvent:fi,MediaRecorder:fi,MediaSettingsRange:fi,MediaSource:fi,MediaStream:fi,MediaStreamAudioDestinationNode:fi,MediaStreamAudioSourceNode:fi,MediaStreamEvent:fi,MediaStreamTrack:fi,MediaStreamTrackEvent:fi,menubar:ui,MessageChannel:fi,MessageEvent:fi,MessagePort:fi,MIDIAccess:fi,MIDIConnectionEvent:fi,MIDIInput:fi,MIDIInputMap:fi,MIDIMessageEvent:fi,MIDIOutput:fi,MIDIOutputMap:fi,MIDIPort:fi,MimeType:fi,MimeTypeArray:fi,MouseEvent:fi,moveBy:ui,moveTo:ui,MutationEvent:fi,MutationObserver:fi,MutationRecord:fi,name:ui,NamedNodeMap:fi,NavigationPreloadManager:fi,navigator:ui,Navigator:fi,NetworkInformation:fi,Node:fi,NodeFilter:ui,NodeIterator:fi,NodeList:fi,Notification:fi,OfflineAudioCompletionEvent:fi,OfflineAudioContext:fi,offscreenBuffering:ui,OffscreenCanvas:fi,open:ui,openDatabase:ui,Option:fi,origin:ui,OscillatorNode:fi,outerHeight:ui,outerWidth:ui,PageTransitionEvent:fi,pageXOffset:ui,pageYOffset:ui,PannerNode:fi,parent:ui,Path2D:fi,PaymentAddress:fi,PaymentRequest:fi,PaymentRequestUpdateEvent:fi,PaymentResponse:fi,performance:ui,Performance:fi,PerformanceEntry:fi,PerformanceLongTaskTiming:fi,PerformanceMark:fi,PerformanceMeasure:fi,PerformanceNavigation:fi,PerformanceNavigationTiming:fi,PerformanceObserver:fi,PerformanceObserverEntryList:fi,PerformancePaintTiming:fi,PerformanceResourceTiming:fi,PerformanceTiming:fi,PeriodicWave:fi,Permissions:fi,PermissionStatus:fi,personalbar:ui,PhotoCapabilities:fi,Plugin:fi,PluginArray:fi,PointerEvent:fi,PopStateEvent:fi,postMessage:ui,Presentation:fi,PresentationAvailability:fi,PresentationConnection:fi,PresentationConnectionAvailableEvent:fi,PresentationConnectionCloseEvent:fi,PresentationConnectionList:fi,PresentationReceiver:fi,PresentationRequest:fi,print:ui,ProcessingInstruction:fi,ProgressEvent:fi,PromiseRejectionEvent:fi,prompt:ui,PushManager:fi,PushSubscription:fi,PushSubscriptionOptions:fi,queueMicrotask:ui,RadioNodeList:fi,Range:fi,ReadableStream:fi,RemotePlayback:fi,removeEventListener:ui,Request:fi,requestAnimationFrame:ui,requestIdleCallback:ui,resizeBy:ui,ResizeObserver:fi,ResizeObserverEntry:fi,resizeTo:ui,Response:fi,RTCCertificate:fi,RTCDataChannel:fi,RTCDataChannelEvent:fi,RTCDtlsTransport:fi,RTCIceCandidate:fi,RTCIceTransport:fi,RTCPeerConnection:fi,RTCPeerConnectionIceEvent:fi,RTCRtpReceiver:fi,RTCRtpSender:fi,RTCSctpTransport:fi,RTCSessionDescription:fi,RTCStatsReport:fi,RTCTrackEvent:fi,screen:ui,Screen:fi,screenLeft:ui,ScreenOrientation:fi,screenTop:ui,screenX:ui,screenY:ui,ScriptProcessorNode:fi,scroll:ui,scrollbars:ui,scrollBy:ui,scrollTo:ui,scrollX:ui,scrollY:ui,SecurityPolicyViolationEvent:fi,Selection:fi,ServiceWorker:fi,ServiceWorkerContainer:fi,ServiceWorkerRegistration:fi,sessionStorage:ui,ShadowRoot:fi,SharedWorker:fi,SourceBuffer:fi,SourceBufferList:fi,speechSynthesis:ui,SpeechSynthesisEvent:fi,SpeechSynthesisUtterance:fi,StaticRange:fi,status:ui,statusbar:ui,StereoPannerNode:fi,stop:ui,Storage:fi,StorageEvent:fi,StorageManager:fi,styleMedia:ui,StyleSheet:fi,StyleSheetList:fi,SubtleCrypto:fi,SVGAElement:fi,SVGAngle:fi,SVGAnimatedAngle:fi,SVGAnimatedBoolean:fi,SVGAnimatedEnumeration:fi,SVGAnimatedInteger:fi,SVGAnimatedLength:fi,SVGAnimatedLengthList:fi,SVGAnimatedNumber:fi,SVGAnimatedNumberList:fi,SVGAnimatedPreserveAspectRatio:fi,SVGAnimatedRect:fi,SVGAnimatedString:fi,SVGAnimatedTransformList:fi,SVGAnimateElement:fi,SVGAnimateMotionElement:fi,SVGAnimateTransformElement:fi,SVGAnimationElement:fi,SVGCircleElement:fi,SVGClipPathElement:fi,SVGComponentTransferFunctionElement:fi,SVGDefsElement:fi,SVGDescElement:fi,SVGDiscardElement:fi,SVGElement:fi,SVGEllipseElement:fi,SVGFEBlendElement:fi,SVGFEColorMatrixElement:fi,SVGFEComponentTransferElement:fi,SVGFECompositeElement:fi,SVGFEConvolveMatrixElement:fi,SVGFEDiffuseLightingElement:fi,SVGFEDisplacementMapElement:fi,SVGFEDistantLightElement:fi,SVGFEDropShadowElement:fi,SVGFEFloodElement:fi,SVGFEFuncAElement:fi,SVGFEFuncBElement:fi,SVGFEFuncGElement:fi,SVGFEFuncRElement:fi,SVGFEGaussianBlurElement:fi,SVGFEImageElement:fi,SVGFEMergeElement:fi,SVGFEMergeNodeElement:fi,SVGFEMorphologyElement:fi,SVGFEOffsetElement:fi,SVGFEPointLightElement:fi,SVGFESpecularLightingElement:fi,SVGFESpotLightElement:fi,SVGFETileElement:fi,SVGFETurbulenceElement:fi,SVGFilterElement:fi,SVGForeignObjectElement:fi,SVGGElement:fi,SVGGeometryElement:fi,SVGGradientElement:fi,SVGGraphicsElement:fi,SVGImageElement:fi,SVGLength:fi,SVGLengthList:fi,SVGLinearGradientElement:fi,SVGLineElement:fi,SVGMarkerElement:fi,SVGMaskElement:fi,SVGMatrix:fi,SVGMetadataElement:fi,SVGMPathElement:fi,SVGNumber:fi,SVGNumberList:fi,SVGPathElement:fi,SVGPatternElement:fi,SVGPoint:fi,SVGPointList:fi,SVGPolygonElement:fi,SVGPolylineElement:fi,SVGPreserveAspectRatio:fi,SVGRadialGradientElement:fi,SVGRect:fi,SVGRectElement:fi,SVGScriptElement:fi,SVGSetElement:fi,SVGStopElement:fi,SVGStringList:fi,SVGStyleElement:fi,SVGSVGElement:fi,SVGSwitchElement:fi,SVGSymbolElement:fi,SVGTextContentElement:fi,SVGTextElement:fi,SVGTextPathElement:fi,SVGTextPositioningElement:fi,SVGTitleElement:fi,SVGTransform:fi,SVGTransformList:fi,SVGTSpanElement:fi,SVGUnitTypes:fi,SVGUseElement:fi,SVGViewElement:fi,TaskAttributionTiming:fi,Text:fi,TextEvent:fi,TextMetrics:fi,TextTrack:fi,TextTrackCue:fi,TextTrackCueList:fi,TextTrackList:fi,TimeRanges:fi,toolbar:ui,top:ui,Touch:fi,TouchEvent:fi,TouchList:fi,TrackEvent:fi,TransitionEvent:fi,TreeWalker:fi,UIEvent:fi,ValidityState:fi,visualViewport:ui,VisualViewport:fi,VTTCue:fi,WaveShaperNode:fi,WebAssembly:ui,WebGL2RenderingContext:fi,WebGLActiveInfo:fi,WebGLBuffer:fi,WebGLContextEvent:fi,WebGLFramebuffer:fi,WebGLProgram:fi,WebGLQuery:fi,WebGLRenderbuffer:fi,WebGLRenderingContext:fi,WebGLSampler:fi,WebGLShader:fi,WebGLShaderPrecisionFormat:fi,WebGLSync:fi,WebGLTexture:fi,WebGLTransformFeedback:fi,WebGLUniformLocation:fi,WebGLVertexArrayObject:fi,WebSocket:fi,WheelEvent:fi,Window:fi,Worker:fi,WritableStream:fi,XMLDocument:fi,XMLHttpRequest:fi,XMLHttpRequestEventTarget:fi,XMLHttpRequestUpload:fi,XMLSerializer:fi,XPathEvaluator:fi,XPathExpression:fi,XPathResult:fi,XSLTProcessor:fi};for(const e of["window","global","self","globalThis"])xi[e]=xi;function Ai(e){let t=xi;for(const n of e){if("string"!=typeof n)return null;if(t=t[n],!t)return"Symbol"===e[0]&&2===e.length?Ei:null}return t[ti]}class Si extends On{constructor(e){super(e),this.markReassigned()}deoptimizeArgumentsOnInteractionAtPath(e,t,n){switch(e.type){case 0:case 1:return void(Ai([this.name,...t].slice(0,-1))||super.deoptimizeArgumentsOnInteractionAtPath(e,t,n));case 2:{const s=Ai([this.name,...t]);return void(s?s.deoptimizeArgumentsOnCall(e):super.deoptimizeArgumentsOnInteractionAtPath(e,t,n))}}}getLiteralValueAtPath(e,t,n){const s=Ai([this.name,...e]);return s?s.getLiteralValue():Ue}hasEffectsOnInteractionAtPath(e,t,n){switch(t.type){case 0:return 0===e.length?"undefined"!==this.name&&!Ai([this.name]):!Ai([this.name,...e].slice(0,-1));case 1:return!0;case 2:{const s=Ai([this.name,...e]);return!s||s.hasEffectsWhenCalled(t,n)}}}}const $i=(e,t)=>{const{length:n}=e,{length:s}=t;return 0===n?t:0===s?e:n+s>6?[...e,...t.slice(0,5-e.length),"UnknownKey"]:[...e,...t]};class vi extends On{constructor(e,t,n,s,i,r){super(e),this.init=n,this.initPath=s,this.kind=r,this.calledFromTryStatement=!1,this.additionalInitializers=null,this.includedPathTracker=new _e,this.expressionsToBeDeoptimized=[],this.declarations=t?[t]:[],this.deoptimizationTracker=i.deoptimizationTracker,this.module=i.module}addDeclaration(e,t){this.declarations.push(e),this.markInitializersForDeoptimization().push(t)}consolidateInitializers(){if(this.additionalInitializers)for(const e of this.additionalInitializers)e.deoptimizePath(Ie)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.isReassigned||t.length+this.initPath.length>6?Xe(e):n.withTrackedEntityAtPath(t,this.init,()=>{this.init.deoptimizeArgumentsOnInteractionAtPath(e,[...this.initPath,...t],n)},void 0)}deoptimizePath(e){if(!this.isReassigned&&!this.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(e,this))if(0===e.length){this.markReassigned();const e=this.expressionsToBeDeoptimized;this.expressionsToBeDeoptimized=le;for(const t of e)t.deoptimizeCache();this.init.deoptimizePath([...this.initPath,pe])}else this.init.deoptimizePath($i(this.initPath,e))}getLiteralValueAtPath(e,t,n){return this.isReassigned||e.length+this.initPath.length>6?Ue:t.withTrackedEntityAtPath(e,this.init,()=>(this.expressionsToBeDeoptimized.push(n),this.init.getLiteralValueAtPath([...this.initPath,...e],t,n)),Ue)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.isReassigned||e.length+this.initPath.length>6?Ke:n.withTrackedEntityAtPath(e,this.init,()=>(this.expressionsToBeDeoptimized.push(s),this.init.getReturnExpressionWhenCalledAtPath([...this.initPath,...e],t,n,s)),Ke)}hasEffectsOnInteractionAtPath(e,t,n){if(e.length+this.initPath.length>6)return!0;switch(t.type){case 0:return!!this.isReassigned||!n.accessed.trackEntityAtPathAndGetIfTracked(e,this)&&this.init.hasEffectsOnInteractionAtPath([...this.initPath,...e],t,n);case 1:return!!this.included||0!==e.length&&(!!this.isReassigned||!n.assigned.trackEntityAtPathAndGetIfTracked(e,this)&&this.init.hasEffectsOnInteractionAtPath([...this.initPath,...e],t,n));case 2:return!!this.isReassigned||!(t.withNew?n.instantiated:n.called).trackEntityAtPathAndGetIfTracked(e,t.args,this)&&this.init.hasEffectsOnInteractionAtPath([...this.initPath,...e],t,n)}}includePath(e,t){if(!this.includedPathTracker.includePathAndGetIfIncluded(e)){this.module.scope.context.requestTreeshakingPass(),this.included||this.module.scope.context.newlyIncludedVariableInits.add(this.init),super.includePath(e,t);for(const e of this.declarations){e.included||e.include(t,!1);let n=e.parent;for(;!n.included&&(n.includeNode(t),n.type!==ot);)n=n.parent}e.length>0&&(this.init.includePath($i(this.initPath,e),t),this.additionalInitializers?.forEach(e=>e.includePath(Ie,t)))}}includeCallArguments(e,t){this.isReassigned||t.includedCallArguments.has(this.init)||this.initPath.length>0?Je(e,t):(t.includedCallArguments.add(this.init),this.init.includeCallArguments(e,t),t.includedCallArguments.delete(this.init))}markCalledFromTryStatement(){this.calledFromTryStatement=!0}markInitializersForDeoptimization(){return null===this.additionalInitializers&&(this.additionalInitializers=[this.init],this.init=qe,this.markReassigned()),this.additionalInitializers}}const Pi=new Set(["class","const","let","var","using","await using"]);class Ii extends ss{constructor(){super(...arguments),this.variable=null,this.isVariableReference=!1}get isTDZAccess(){return Fe(this.flags,4)?Fe(this.flags,8):null}set isTDZAccess(e){this.flags=je(this.flags,4,!0),this.flags=je(this.flags,8,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.variable.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){0!==e.length||this.scope.contains(this.name)||this.disallowImportReassignment(),this.variable?.deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.getVariableRespectingTDZ().getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){const[i,r]=this.getVariableRespectingTDZ().getReturnExpressionWhenCalledAtPath(e,t,n,s);return[i,r||this.isPureFunction(e)]}hasEffects(e){return this.deoptimized||this.applyDeoptimizations(),!(!this.isPossibleTDZ()||"var"===this.variable.kind)||this.scope.context.options.treeshake.unknownGlobalSideEffects&&this.variable instanceof Si&&!this.isPureFunction(Pe)&&this.variable.hasEffectsOnInteractionAtPath(Pe,Ze,e)}hasEffectsOnInteractionAtPath(e,t,n){switch(t.type){case 0:return null!==this.variable&&!this.isPureFunction(e)&&this.getVariableRespectingTDZ().hasEffectsOnInteractionAtPath(e,t,n);case 1:return(e.length>0?this.getVariableRespectingTDZ():this.variable).hasEffectsOnInteractionAtPath(e,t,n);case 2:return!this.isPureFunction(e)&&this.getVariableRespectingTDZ().hasEffectsOnInteractionAtPath(e,t,n)}}include(e,t){this.included||this.includeNode(e),t&&this.variable?.includePath(Ie,e)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),null!==this.variable&&this.scope.context.includeVariableInModule(this.variable,Pe,e)}includePath(e,t){this.included?e.length>0&&this.variable?.includePath(e,t):(this.included=!0,this.deoptimized||this.applyDeoptimizations(),null!==this.variable&&this.scope.context.includeVariableInModule(this.variable,e,t))}includeCallArguments(e,t){this.variable.includeCallArguments(e,t)}isPossibleTDZ(){const e=this.isTDZAccess;if(null!==e)return e;if(!(this.variable instanceof vi&&this.variable.kind&&Pi.has(this.variable.kind)&&this.variable.module.hasTreeShakingPassStarted))return this.isTDZAccess=!1;let t;return this.variable.declarations&&1===this.variable.declarations.length&&(t=this.variable.declarations[0])&&this.start0&&n.hasEffectsOnInteractionAtPath(t,Ze,e)}includeDestructuredIfNecessary(e,t,n){t.length>0&&!this.isDestructuringDeoptimized&&(this.isDestructuringDeoptimized=!0,n.deoptimizeArgumentsOnInteractionAtPath({args:[new Ni(n,t.slice(0,-1))],type:0},t,De));const{propertyReadSideEffects:s}=this.scope.context.options.treeshake;let i=this.included;return(i||=t.length>0&&!e.brokenFlow&&s&&("always"===s||n.hasEffectsOnInteractionAtPath(t,Ze,Ve())))&&(this.variable&&!this.variable.included&&this.scope.context.includeVariableInModule(this.variable,Pe,e),n.includePath(t,e)),!this.included&&i&&this.includeNode(e),this.included}markDeclarationReached(){this.variable.initReached=!0}render(e,{snippets:{getPropertyAccess:t},useOriginalName:n},{renderedParentType:s,isCalleeOfRenderedParent:i,isShorthandProperty:r}=oe){if(this.variable){const o=this.variable.getName(t,n);o!==this.name&&(e.overwrite(this.start,this.end,o,{contentOnly:!0,storeName:!0}),r&&e.prependRight(this.start,`${this.name}: `)),"eval"===o&&s===nt&&i&&e.appendRight(this.start,"0, ")}}}function Ci(e){let t="";do{const n=e%64;e=e/64|0,t="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$"[n]+t}while(0!==e);return t}function Ri(e,t,n){let s=e,i=1;for(;t.has(s)||Tn.has(s)||n?.has(s);)s=`${e}$${Ci(i++)}`;return t.add(s),s}class Di{constructor(){this.children=[],this.variables=new Map}addDeclaration(e,t,n,s,i){const r=e.name,o=this.hoistedVariables?.get(r)||this.variables.get(r);if(o){if("var"===i&&"var"===o.kind)return o.addDeclaration(e,n),o;t.error($n(r),e.start)}const a=new vi(e.name,e,n,s,t,i);return this.variables.set(r,a),a}addHoistedVariable(e,t){(this.hoistedVariables||=new Map).set(e,t)}contains(e){return this.variables.has(e)}findVariable(e){throw new Error("Internal Error: findVariable needs to be implemented by a subclass")}}class Oi extends Di{constructor(e,t){super(),this.parent=e,this.context=t,this.accessedOutsideVariables=new Map,e.children.push(this)}addAccessedDynamicImport(e){(this.accessedDynamicImports||(this.accessedDynamicImports=new Set)).add(e),this.parent instanceof Oi&&this.parent.addAccessedDynamicImport(e)}addAccessedGlobals(e,t){const n=t.get(this)||new Set;for(const t of e)n.add(t);t.set(this,n),this.parent instanceof Oi&&this.parent.addAccessedGlobals(e,t)}addNamespaceMemberAccess(e,t){this.accessedOutsideVariables.set(e,t),this.parent.addNamespaceMemberAccess(e,t)}addReturnExpression(e){this.parent instanceof Oi&&this.parent.addReturnExpression(e)}addUsedOutsideNames(e,t,n,s){for(const s of this.accessedOutsideVariables.values())s.included&&(e.add(s.getBaseVariableName()),"system"===t&&n.has(s)&&e.add("exports"));const i=s.get(this);if(i)for(const t of i)e.add(t)}contains(e){return this.variables.has(e)||this.parent.contains(e)}deconflict(e,t,n){const s=new Set;if(this.addUsedOutsideNames(s,e,t,n),this.accessedDynamicImports)for(const e of this.accessedDynamicImports)e.inlineNamespace&&s.add(e.inlineNamespace.getBaseVariableName());for(const[e,t]of this.variables)(t.included||t.alwaysRendered)&&t.setRenderNames(null,Ri(e,s,t.forbiddenNames));for(const s of this.children)s.deconflict(e,t,n)}findLexicalBoundary(){return this.parent.findLexicalBoundary()}findGlobal(e){const t=this.parent.findVariable(e);return this.accessedOutsideVariables.set(e,t),t}findVariable(e){const t=this.variables.get(e)||this.accessedOutsideVariables.get(e);if(t)return t;const n=this.parent.findVariable(e);return this.accessedOutsideVariables.set(e,n),n}}function Mi(e,t){for(const n of e)if(n.hasEffects(t))return!0;return!1}class _i extends ss{constructor(){super(...arguments),this.accessedValue=null}get computed(){return Fe(this.flags,1024)}set computed(e){this.flags=je(this.flags,1024,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){return 0===e.type&&"get"===this.kind&&0===t.length||1===e.type&&"set"===this.kind&&0===t.length?this.value.deoptimizeArgumentsOnInteractionAtPath({args:e.args,type:2,withNew:!1},Pe,n):void this.getAccessedValue()[0].deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeCache(){}deoptimizePath(e){this.getAccessedValue()[0].deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.getAccessedValue()[0].getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.getAccessedValue()[0].getReturnExpressionWhenCalledAtPath(e,t,n,s)}hasEffects(e){return this.key.hasEffects(e)}hasEffectsOnInteractionAtPath(e,t,n){return"get"===this.kind&&0===t.type&&0===e.length||"set"===this.kind&&1===t.type?this.value.hasEffectsOnInteractionAtPath(Pe,{args:t.args,type:2,withNew:!1},n):this.getAccessedValue()[0].hasEffectsOnInteractionAtPath(e,t,n)}getAccessedValue(){return null===this.accessedValue?"get"===this.kind?(this.accessedValue=Ke,this.accessedValue=this.value.getReturnExpressionWhenCalledAtPath(Pe,et,De,this)):this.accessedValue=[this.value,!1]:this.accessedValue}}_i.prototype.includeNode=rs,_i.prototype.applyDeoptimizations=os;class Li extends _i{hasEffects(e){return super.hasEffects(e)||Mi(this.decorators,e)}}class Ti extends Oi{constructor(e){super(e,e.context)}addDeclaration(e,t,n,s,i){if("var"===i){const r=e.name,o=this.hoistedVariables?.get(r)||this.variables.get(r);if(o)return"var"===o.kind||"var"===i&&"parameter"===o.kind?(o.addDeclaration(e,n),o):t.error($n(r),e.start);const a=this.parent.addDeclaration(e,t,n,s,i);return a.markInitializersForDeoptimization(),this.addHoistedVariable(r,a),a}return super.addDeclaration(e,t,n,s,i)}}class Bi extends ss{createScope(e){this.scope=new Ti(e)}hasEffects(e){for(const t of this.body)if(t.hasEffects(e))return!0;return!1}include(e,t){this.included=!0;for(const n of this.body)(t||n.shouldBeIncluded(e))&&n.include(e,t)}render(e,t){if(this.body.length>0){const n=X(e.original.slice(this.start,this.end),"{")+1;ee(this.body,e,this.start+n,this.end-1,t)}else super.render(e,t)}}function zi(e){return"StaticBlock"===e.type}Bi.prototype.includeNode=rs,Bi.prototype.applyDeoptimizations=os;class Vi extends ss{constructor(){super(...arguments),this.objectEntity=null}createScope(e){this.scope=new Oi(e,e.context)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeCache(){this.getObjectEntity().deoptimizeAllProperties()}deoptimizePath(e){this.getObjectEntity().deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.getObjectEntity().getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e,t,n,s)}hasEffects(e){this.deoptimized||this.applyDeoptimizations();const t=this.superClass?.hasEffects(e)||this.body.hasEffects(e);return this.id?.markDeclarationReached(),t||super.hasEffects(e)||Mi(this.decorators,e)}hasEffectsOnInteractionAtPath(e,t,n){return 2===t.type&&0===e.length?!t.withNew||(null===this.classConstructor?this.superClass?.hasEffectsOnInteractionAtPath(e,t,n):this.classConstructor.hasEffectsOnInteractionAtPath(e,t,n))||!1:this.getObjectEntity().hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included||this.includeNode(e),this.superClass?.include(e,t),this.body.include(e,t);for(const n of this.decorators)n.include(e,t);this.id&&(this.id.markDeclarationReached(),this.id.include(e,t))}initialise(){super.initialise(),this.id?.declare("class",Pe,this);for(const e of this.body.body)if(e instanceof Li&&"constructor"===e.kind)return void(this.classConstructor=e);this.classConstructor=null}applyDeoptimizations(){this.deoptimized=!0;for(const e of this.body.body)zi(e)||e.static||e instanceof Li&&"constructor"===e.kind||e.deoptimizePath(Ie);this.scope.context.requestTreeshakingPass()}getObjectEntity(){if(null!==this.objectEntity)return this.objectEntity;const e=[],t=[];for(const n of this.body.body){if(zi(n))continue;const s=n.static?e:t,i=n.kind;if(s===t&&!i)continue;const r="set"===i||"get"===i?i:"init";let o;if(n.computed){const e=n.key.getLiteralValueAtPath(Pe,De,this);if("symbol"==typeof e){s.push({key:Se(e)?e:pe,kind:r,property:n});continue}o=String(e)}else o=n.key instanceof ki?n.key.name:String(n.key.value);s.push({key:o,kind:r,property:n})}return e.unshift({key:"prototype",kind:"init",property:new Ls(t,this.superClass?new Ni(this.superClass,["prototype"]):zs)}),this.objectEntity=new Ls(e,this.superClass||zs)}}Vi.prototype.includeNode=is;class Fi extends Vi{initialise(){super.initialise(),null!==this.id&&(this.id.variable.isId=!0)}parseNode(e){return null!==e.id&&(this.id=new ki(this,this.scope.parent).parseNode(e.id)),super.parseNode(e)}render(e,t){const{exportNamesByVariable:n,format:s,snippets:{_:i,getPropertyAccess:r}}=t;if(this.id){const{variable:o,name:a}=this.id;"system"===s&&n.has(o)&&e.appendLeft(this.end,`${i}${se([o],t)};`);const l=o.getName(r);if(l!==a)return this.decorators.map(n=>n.render(e,t)),this.superClass?.render(e,t),this.body.render(e,{...t,useOriginalName:e=>e===o}),e.prependRight(this.start,`let ${l}${i}=${i}`),void e.prependLeft(this.end,";")}super.render(e,t)}applyDeoptimizations(){super.applyDeoptimizations();const{id:e,scope:t}=this;if(e){const{name:n,variable:s}=e;for(const e of t.accessedOutsideVariables.values())e!==s&&e.forbidName(n)}}}class ji extends vi{constructor(e){super("arguments",null,qe,Pe,e,"other")}addArgumentToBeDeoptimized(e){}addReference(){this.deoptimizedArguments=[],this.addArgumentToBeDeoptimized=Ui}hasEffectsOnInteractionAtPath(e,{type:t}){return 0!==t||e.length>1}includePath(e,t){super.includePath(e,t);for(const e of this.deoptimizedArguments)e.deoptimizePath(Ie);this.deoptimizedArguments.length=0}}function Ui(e){this.included?e.deoptimizePath(Ie):this.deoptimizedArguments?.push(e)}const Gi=le,Hi=new Set([pe]),Wi=new Re,qi=new Set([qe]);class Ki extends vi{constructor(e,t,n,s){super(e,t,qe,n,s,"parameter"),this.includedPathTracker=new Te,this.argumentsToBeDeoptimized=new Set,this.deoptimizationInteractions=[],this.deoptimizations=new Re,this.deoptimizedFields=new Set,this.expressionsDependingOnKnownValue=[],this.knownValue=null,this.knownValueLiteral=Ue}addArgumentForDeoptimization(e){if(this.updateKnownValue(e),e===qe){if(!this.argumentsToBeDeoptimized.has(qe)){this.argumentsToBeDeoptimized.add(qe);for(const{interaction:e}of this.deoptimizationInteractions)Xe(e);this.deoptimizationInteractions=Gi}}else if(this.deoptimizedFields.has(pe))e.deoptimizePath([...this.initPath,pe]);else if(!this.argumentsToBeDeoptimized.has(e)){this.argumentsToBeDeoptimized.add(e);for(const t of this.deoptimizedFields)e.deoptimizePath([...this.initPath,t]);for(const{interaction:t,path:n}of this.deoptimizationInteractions)e.deoptimizeArgumentsOnInteractionAtPath(t,[...this.initPath,...n],De)}}markReassigned(){if(!this.isReassigned){super.markReassigned();for(const e of this.expressionsDependingOnKnownValue)e.deoptimizeCache();this.expressionsDependingOnKnownValue=le}}deoptimizeCache(){this.markReassigned()}updateKnownValue(e){if(this.isReassigned)return;if(null===this.knownValue)return this.knownValue=e,void(this.knownValueLiteral=e.getLiteralValueAtPath(this.initPath,De,this));if(this.knownValue===e||this.knownValue instanceof ki&&e instanceof ki&&this.knownValue.variable===e.variable)return;const{knownValueLiteral:t}=this;"symbol"!=typeof t&&e.getLiteralValueAtPath(this.initPath,De,this)===t||this.markReassigned()}getKnownValue(){return this.knownValue||qe}getLiteralValueAtPath(e,t,n){if(this.isReassigned||e.length+this.initPath.length>6)return Ue;const s=this.getKnownValue();return this.expressionsDependingOnKnownValue.push(n),t.withTrackedEntityAtPath(e,s,()=>s.getLiteralValueAtPath([...this.initPath,...e],t,n),Ue)}hasEffectsOnInteractionAtPath(e,t,n){const{type:s}=t;return this.isReassigned||1===s||e.length+this.initPath.length>6?super.hasEffectsOnInteractionAtPath(e,t,n):!(2===s?(t.withNew?n.instantiated:n.called).trackEntityAtPathAndGetIfTracked(e,t.args,this):n.accessed.trackEntityAtPathAndGetIfTracked(e,this))&&this.getKnownValue().hasEffectsOnInteractionAtPath([...this.initPath,...e],t,n)}deoptimizeArgumentsOnInteractionAtPath(e,t){if(t.length>=2||this.argumentsToBeDeoptimized.has(qe)||this.deoptimizationInteractions.length>=20||1===t.length&&(this.deoptimizedFields.has(pe)||2===e.type&&this.deoptimizedFields.has(t[0]))||this.initPath.length+t.length>6)Xe(e);else if(!this.deoptimizations.trackEntityAtPathAndGetIfTracked(t,e.args)){for(const n of this.argumentsToBeDeoptimized)n.deoptimizeArgumentsOnInteractionAtPath(e,[...this.initPath,...t],De);this.argumentsToBeDeoptimized.has(qe)||this.deoptimizationInteractions.push({interaction:e,path:t})}}deoptimizePath(e){if(0===e.length)return void this.markReassigned();if(this.deoptimizedFields.has(pe))return;const t=e[0];if(!this.deoptimizedFields.has(t)){this.deoptimizedFields.add(t);for(const e of this.argumentsToBeDeoptimized)e.deoptimizePath([...this.initPath,t]);t===pe&&(this.deoptimizationInteractions=Gi,this.deoptimizations=Wi,this.deoptimizedFields=Hi,this.argumentsToBeDeoptimized=qi)}}getReturnExpressionWhenCalledAtPath(e){return 0===e.length?this.deoptimizePath(Ie):this.deoptimizedFields.has(e[0])||this.deoptimizePath([e[0]]),Ke}includeArgumentPaths(e,t){this.includedPathTracker.includeAllPaths(e,t,this.initPath)}}class Xi extends Ki{constructor(e){super("this",null,Pe,e)}hasEffectsOnInteractionAtPath(e,t,n){return(n.replacedVariableInits.get(this)||qe).hasEffectsOnInteractionAtPath(e,t,n)}}class Ji extends Oi{constructor(e){super(e,e.context),this.parent=e}addDeclaration(e,t,n,s,i){if("var"===i){const r=e.name,o=this.hoistedVariables?.get(r)||this.variables.get(r);if(o){const a=o.kind;if("parameter"===a&&"CatchClause"===o.declarations[0].parent.type){const n=this.parent.parent.addDeclaration(e,t,fs,s,i);return o.renderLikeHoisted(n),this.addHoistedVariable(r,n),n}return"var"===a?(o.addDeclaration(e,n),o):t.error($n(r),e.start)}const a=this.parent.parent.addDeclaration(e,t,n,s,i);return a.markInitializersForDeoptimization(),this.addHoistedVariable(r,a),a}return super.addDeclaration(e,t,n,s,i)}}class Yi extends Oi{constructor(e){super(e,e.context)}addDeclaration(e,t,n,s,i){const r=e.name,o=this.hoistedVariables?.get(r)||this.variables.get(r);if(o){const s=o.kind;if(!("var"!==i&&"function"!==i||"var"!==s&&"function"!==s&&"parameter"!==s))return o.addDeclaration(e,n),o;t.error($n(r),e.start)}const a=new vi(e.name,e,n,s,t,i);return this.variables.set(r,a),a}}class Zi extends Oi{constructor(e,t){super(e,e.context),this.hasRest=!1,this.parameters=[],this.bodyScope=t?new Ji(this):new Yi(this)}addParameterDeclaration(e,t){const{name:n,start:s}=e;if(this.variables.get(n))return this.context.error(function(e){return{code:"DUPLICATE_ARGUMENT_NAME",message:`Duplicate argument name "${e}"`}}(n),s);const i=new Ki(n,e,t,this.context);return this.variables.set(n,i),this.bodyScope.addHoistedVariable(n,i),i}addParameterVariables(e,t){this.parameters=e;for(const t of e)for(const e of t)e.alwaysRendered=!0;this.hasRest=t}includeCallArguments({args:e},t){let n=!1,s=!1;const i=this.hasRest&&this.parameters[this.parameters.length-1];let r=e.length-1;for(let n=1;n=1;o--){const r=this.parameters[o-1]||i,a=e[o];if(r)if(n=!1,0===r.length)s=!0;else for(const e of r)e.calledFromTryStatement&&(n=!0),e.included&&(s=!0,n?a.include(t,!0):(e.includeArgumentPaths(a,t),a.include(t,!1)));(s||a.shouldBeIncluded(t))&&(s=!0,a.include(t,n))}}}class Qi extends Zi{constructor(){super(...arguments),this.returnExpression=null,this.returnExpressions=[]}addReturnExpression(e){this.returnExpressions.push(e)}deoptimizeArgumentsOnCall({args:e}){const{parameters:t}=this;let n=0;for(;n=t.length-1)s.deoptimizePath(Ie);else{const e=t[n];if(e)for(const t of e)t.addArgumentForDeoptimization(s);this.addArgumentToBeDeoptimized(s)}}const s=this.hasRest?t.length-1:t.length;for(;n0?ee(this.body,e,this.start+1,this.end-1,t):super.render(e,t)}}nr.prototype.includeNode=rs,nr.prototype.applyDeoptimizations=os;class sr extends ss{constructor(){super(...arguments),this.declarationInit=null}addExportedVariables(e,t){this.argument.addExportedVariables(e,t)}declare(e,t,n){return this.declarationInit=n,this.argument.declare(e,ir(t),n)}deoptimizeAssignment(e,t){this.argument.deoptimizeAssignment(ir(e),t)}deoptimizePath(e){0===e.length&&this.argument.deoptimizePath(Pe)}hasEffectsOnInteractionAtPath(e,t,n){return e.length>0||this.argument.hasEffectsOnInteractionAtPath(Pe,t,n)}hasEffectsWhenDestructuring(e,t,n){return this.argument.hasEffectsWhenDestructuring(e,ir(t),n)}includeDestructuredIfNecessary(e,t,n){const s=this.argument.includeDestructuredIfNecessary(e,ir(t),n);return!this.included&&s&&this.includeNode(e),this.included}include(e,t){this.included||this.includeNode(e),this.argument.include(e,t)}markDeclarationReached(){this.argument.markDeclarationReached()}applyDeoptimizations(){this.deoptimized=!0,null!==this.declarationInit&&(this.declarationInit.deoptimizePath([pe,pe]),this.scope.context.requestTreeshakingPass())}}sr.prototype.includeNode=is;const ir=e=>e.at(-1)===pe?e:[...e,pe];class rr extends ss{constructor(){super(...arguments),this.parameterVariableValuesDeoptimized=!1,this.includeCallArguments=this.scope.includeCallArguments.bind(this.scope)}get async(){return Fe(this.flags,256)}set async(e){this.flags=je(this.flags,256,e)}get deoptimizedReturn(){return Fe(this.flags,512)}set deoptimizedReturn(e){this.flags=je(this.flags,512,e)}get generator(){return Fe(this.flags,4194304)}set generator(e){this.flags=je(this.flags,4194304,e)}get hasCachedEffects(){return Fe(this.flags,67108864)}set hasCachedEffects(e){this.flags=je(this.flags,67108864,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){2===e.type&&0===t.length?this.scope.deoptimizeArgumentsOnCall(e):this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.getObjectEntity().deoptimizePath(e),1===e.length&&e[0]===pe&&(this.scope.getReturnExpression().deoptimizePath(Ie),this.scope.deoptimizeAllParameters())}getLiteralValueAtPath(e,t,n){return this.getObjectEntity().getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return e.length>0?this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e,t,n,s):this.async?(this.deoptimizedReturn||(this.deoptimizedReturn=!0,this.scope.getReturnExpression().deoptimizePath(Ie),this.scope.context.requestTreeshakingPass()),Ke):[this.scope.getReturnExpression(),!1]}hasEffectsOnInteractionAtPath(e,t,n){if(e.length>0||2!==t.type)return this.getObjectEntity().hasEffectsOnInteractionAtPath(e,t,n);if(this.hasCachedEffects)return!0;if(this.async){const{propertyReadSideEffects:e}=this.scope.context.options.treeshake,t=this.scope.getReturnExpression();if(t.hasEffectsOnInteractionAtPath(["then"],et,n)||e&&("always"===e||t.hasEffectsOnInteractionAtPath(["then"],Ze,n)))return this.hasCachedEffects=!0,!0}const{propertyReadSideEffects:s}=this.scope.context.options.treeshake;for(let e=0;e"noSideEffects"===e.type))}parseNode(e){const{body:t,params:n}=e,{scope:s}=this,{bodyScope:i,context:r}=s,o=this.params=n.map(e=>new(r.getNodeConstructor(e.type))(this,s).parseNode(e));return s.addParameterVariables(o.map(e=>e.declare("parameter",Pe,qe)),o[o.length-1]instanceof sr),this.body=new(r.getNodeConstructor(t.type))(this,i).parseNode(t),super.parseNode(e)}}rr.prototype.preventChildBlockScope=!0,rr.prototype.includeNode=rs,rr.prototype.applyDeoptimizations=os;class or extends rr{constructor(){super(...arguments),this.objectEntity=null}createScope(e){this.scope=new er(e,this),this.constructedEntity=new Ls(new Map,zs),this.scope.thisVariable.addArgumentForDeoptimization(this.constructedEntity)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){super.deoptimizeArgumentsOnInteractionAtPath(e,t,n),2===e.type&&0===t.length&&e.args[0]&&this.scope.thisVariable.addArgumentForDeoptimization(e.args[0])}hasEffects(e){return!this.annotationNoSideEffects&&!!this.id?.hasEffects(e)}hasEffectsOnInteractionAtPath(e,t,n){if(this.annotationNoSideEffects&&0===e.length&&2===t.type)return!1;if(super.hasEffectsOnInteractionAtPath(e,t,n))return!0;if(0===e.length&&2===t.type){const e=n.replacedVariableInits.get(this.scope.thisVariable);n.replacedVariableInits.set(this.scope.thisVariable,t.withNew?this.constructedEntity:qe);const{brokenFlow:s,ignore:i,replacedVariableInits:r}=n;if(n.ignore={breaks:!1,continues:!1,labels:new Set,returnYield:!0,this:t.withNew},this.body.hasEffects(n))return this.hasCachedEffects=!0,!0;n.brokenFlow=s,e?r.set(this.scope.thisVariable,e):r.delete(this.scope.thisVariable),n.ignore=i}return!1}include(e,t){super.include(e,t),this.id?.include(e,t);const n=this.scope.argumentsVariable.included;for(const s of this.params)s instanceof ki&&!n||s.include(e,t)}includeNode(e){this.included=!0;const t=this.scope.argumentsVariable.included;for(const n of this.params)n instanceof ki&&!t||n.includePath(Ie,e)}initialise(){super.initialise(),this.id?.declare("function",Pe,this)}getObjectEntity(){return null!==this.objectEntity?this.objectEntity:this.objectEntity=new Ls([{key:"prototype",kind:"init",property:new Ls([],zs)}],zs)}}class ar extends or{initialise(){super.initialise(),null!==this.id&&(this.id.variable.isId=!0)}onlyFunctionCallUsed(){return this.id?.variable.getOnlyFunctionCallUsed()??super.onlyFunctionCallUsed()}parseNode(e){return null!==e.id&&(this.id=new ki(this,this.scope.parent).parseNode(e.id)),super.parseNode(e)}}class lr extends ss{bind(){super.bind();const e=this.declarationName||this.scope.context.getModuleName();this.variable.name=this.scope.variables.get(e)?`${e}_default`:e}include(e,t){this.included=!0,this.declaration.include(e,t),t&&this.scope.context.includeVariableInModule(this.variable,Ie,e)}includePath(e,t){this.included=!0,this.declaration.includePath(e,t)}initialise(){super.initialise();const e=this.declaration;this.declarationName=e.id&&e.id.name||this.declaration.name,this.variable=this.scope.addExportDefaultDeclaration(this,this.scope.context),this.scope.context.addExport(this)}removeAnnotations(e){this.declaration.removeAnnotations(e)}render(e,t,n){const{start:s,end:i}=n,r=function(e,t){return Y(e,X(e,"default",t)+7)}(e.original,this.start);if(this.declaration instanceof ar)this.renderNamedDeclaration(e,r,null===this.declaration.id?function(e,t){const n=X(e,"function",t)+8;e=e.slice(n,X(e,"(",n));const s=X(e,"*");return-1===s?n:n+s+1}(e.original,r):null,t);else if(this.declaration instanceof Fi)this.renderNamedDeclaration(e,r,null===this.declaration.id?X(e.original,"class",s)+5:null,t);else{if(this.variable.getOriginalVariable()!==this.variable)return void q(this,e,s,i);if(!this.variable.included)return e.remove(this.start,r),this.declaration.render(e,t,{renderedSurroundingElement:it}),void(";"!==e.original[this.end-1]&&e.appendLeft(this.end,";"));this.renderVariableDeclaration(e,r,t)}this.declaration.render(e,t)}renderNamedDeclaration(e,t,n,s){const{exportNamesByVariable:i,format:r,snippets:{getPropertyAccess:o}}=s,a=this.variable.getName(o);e.remove(this.start,t),null!==n&&e.appendLeft(n,` ${a}`),"system"===r&&this.declaration instanceof Fi&&i.has(this.variable)&&e.appendLeft(this.end,` ${se([this.variable],s)};`)}renderVariableDeclaration(e,t,{format:n,exportNamesByVariable:s,snippets:{cnst:i,getPropertyAccess:r}}){const o=59===e.original.charCodeAt(this.end-1),a="system"===n&&s.get(this.variable);a?(e.overwrite(this.start,t,`${i} ${this.variable.getName(r)} = exports(${JSON.stringify(a[0])}, `),e.appendRight(o?this.end-1:this.end,")"+(o?"":";"))):(e.overwrite(this.start,t,`${i} ${this.variable.getName(r)} = `),o||e.appendLeft(this.end,";"))}}lr.prototype.needsBoundaries=!0,lr.prototype.includeNode=rs,lr.prototype.applyDeoptimizations=os;const cr=/[\n\r'\\\u2028\u2029]/,ur=/([\n\r'\u2028\u2029])/g,dr=/\\/g;function hr(e){return cr.test(e)?e.replace(dr,"\\\\").replace(ur,"\\$1"):e}const pr="_interopDefault",fr="_interopDefaultCompat",mr="_interopNamespace",gr="_interopNamespaceCompat",yr="_interopNamespaceDefault",br="_interopNamespaceDefaultOnly",Er="_mergeNamespaces",xr="_documentCurrentScript",Ar={auto:pr,compat:fr,default:null,defaultOnly:null,esModule:null},Sr=(e,t)=>"esModule"===e||t&&("auto"===e||"compat"===e),$r={auto:mr,compat:gr,default:yr,defaultOnly:br,esModule:null},vr=(e,t)=>"esModule"!==e&&Sr(e,t),Pr=(e,t,n,s,i,r,o)=>{const a=new Set(e);for(const e of zr)t.has(e)&&a.add(e);return zr.map(e=>a.has(e)?Ir[e](n,s,i,r,o,a):"").join("")},Ir={[xr]:(e,{_:t,n:n})=>`var ${xr}${t}=${t}typeof document${t}!==${t}'undefined'${t}?${t}document.currentScript${t}:${t}null;${n}`,[fr](e,t,n){const{_:s,getDirectReturnFunction:i,n:r}=t,[o,a]=i(["e"],{functionReturn:!0,lineBreakIndent:null,name:fr});return`${o}${kr(t)}${s}?${s}${n?wr(t):Nr(t)}${a}${r}${r}`},[pr](e,t,n){const{_:s,getDirectReturnFunction:i,n:r}=t,[o,a]=i(["e"],{functionReturn:!0,lineBreakIndent:null,name:pr});return`${o}e${s}&&${s}e.__esModule${s}?${s}${n?wr(t):Nr(t)}${a}${r}${r}`},[gr](e,t,n,s,i,r){const{_:o,getDirectReturnFunction:a,n:l}=t;if(r.has(yr)){const[e,n]=a(["e"],{functionReturn:!0,lineBreakIndent:null,name:gr});return`${e}${kr(t)}${o}?${o}e${o}:${o}${yr}(e)${n}${l}${l}`}return`function ${gr}(e)${o}{${l}${e}if${o}(${kr(t)})${o}return e;${l}`+Cr(e,e,t,n,s,i)+`}${l}${l}`},[br](e,t,n,s,i){const{getDirectReturnFunction:r,getObject:o,n:a,_:l}=t,[c,u]=r(["e"],{functionReturn:!0,lineBreakIndent:null,name:br});return`${c}${Tr(s,Br(i,o([[null,`__proto__:${l}null`],["default","e"]],{lineBreakIndent:null}),t))}${u}${a}${a}`},[yr](e,t,n,s,i){const{_:r,n:o}=t;return`function ${yr}(e)${r}{${o}`+Cr(e,e,t,n,s,i)+`}${o}${o}`},[mr](e,t,n,s,i,r){const{_:o,getDirectReturnFunction:a,n:l}=t;if(r.has(yr)){const[e,t]=a(["e"],{functionReturn:!0,lineBreakIndent:null,name:mr});return`${e}e${o}&&${o}e.__esModule${o}?${o}e${o}:${o}${yr}(e)${t}${l}${l}`}return`function ${mr}(e)${o}{${l}${e}if${o}(e${o}&&${o}e.__esModule)${o}return e;${l}`+Cr(e,e,t,n,s,i)+`}${l}${l}`},[Er](e,t,n,s,i){const{_:r,cnst:o,n:a}=t,l="var"===o&&n;return`function ${Er}(n, m)${r}{${a}${e}${Dr(`{${a}${e}${e}${e}if${r}(k${r}!==${r}'default'${r}&&${r}!(k in n))${r}{${a}`+(n?l?Mr:_r:Lr)(e,e+e+e+e,t)+`${e}${e}${e}}${a}`+`${e}${e}}`,l,e,t)}${a}${e}return ${Tr(s,Br(i,"n",t))};${a}}${a}${a}`}},wr=({_:e,getObject:t})=>`e${e}:${e}${t([["default","e"]],{lineBreakIndent:null})}`,Nr=({_:e,getPropertyAccess:t})=>`e${t("default")}${e}:${e}e`,kr=({_:e})=>`e${e}&&${e}typeof e${e}===${e}'object'${e}&&${e}'default'${e}in e`,Cr=(e,t,n,s,i,r)=>{const{_:o,cnst:a,getObject:l,getPropertyAccess:c,n:u,s:d}=n,h=`{${u}`+(s?Or:Lr)(e,t+e+e,n)+`${t}${e}}`;return`${t}${a} n${o}=${o}Object.create(null${r?`,${o}{${o}[Symbol.toStringTag]:${o}${Vr(l)}${o}}`:""});${u}${t}if${o}(e)${o}{${u}${t}${e}${Rr(h,!s,n)}${u}${t}}${u}${t}n${c("default")}${o}=${o}e;${u}${t}return ${Tr(i,"n")}${d}${u}`},Rr=(e,t,{_:n,cnst:s,getFunctionIntro:i,s:r})=>"var"!==s||t?`for${n}(${s} k in e)${n}${e}`:`Object.keys(e).forEach(${i(["k"],{isAsync:!1,name:null})}${e})${r}`,Dr=(e,t,n,{_:s,cnst:i,getDirectReturnFunction:r,getFunctionIntro:o,n:a})=>{if(t){const[t,i]=r(["e"],{functionReturn:!1,lineBreakIndent:{base:n,t:n},name:null});return`m.forEach(${t}e${s}&&${s}typeof e${s}!==${s}'string'${s}&&${s}!Array.isArray(e)${s}&&${s}Object.keys(e).forEach(${o(["k"],{isAsync:!1,name:null})}${e})${i});`}return`for${s}(var i${s}=${s}0;${s}i${s}<${s}m.length;${s}i++)${s}{${a}${n}${n}${i} e${s}=${s}m[i];${a}${n}${n}if${s}(typeof e${s}!==${s}'string'${s}&&${s}!Array.isArray(e))${s}{${s}for${s}(${i} k in e)${s}${e}${s}}${a}${n}}`},Or=(e,t,n)=>{const{_:s,n:i}=n;return`${t}if${s}(k${s}!==${s}'default')${s}{${i}`+Mr(e,t+e,n)+`${t}}${i}`},Mr=(e,t,{_:n,cnst:s,getDirectReturnFunction:i,n:r})=>{const[o,a]=i([],{functionReturn:!0,lineBreakIndent:null,name:null});return`${t}${s} d${n}=${n}Object.getOwnPropertyDescriptor(e,${n}k);${r}${t}Object.defineProperty(n,${n}k,${n}d.get${n}?${n}d${n}:${n}{${r}${t}${e}enumerable:${n}true,${r}${t}${e}get:${n}${o}e[k]${a}${r}${t}});${r}`},_r=(e,t,{_:n,cnst:s,getDirectReturnFunction:i,n:r})=>{const[o,a]=i([],{functionReturn:!0,lineBreakIndent:null,name:null});return`${t}${s} d${n}=${n}Object.getOwnPropertyDescriptor(e,${n}k);${r}${t}if${n}(d)${n}{${r}${t}${e}Object.defineProperty(n,${n}k,${n}d.get${n}?${n}d${n}:${n}{${r}${t}${e}${e}enumerable:${n}true,${r}${t}${e}${e}get:${n}${o}e[k]${a}${r}${t}${e}});${r}${t}}${r}`},Lr=(e,t,{_:n,n:s})=>`${t}n[k]${n}=${n}e[k];${s}`,Tr=(e,t)=>e?`Object.freeze(${t})`:t,Br=(e,t,{_:n,getObject:s})=>e?`Object.defineProperty(${t},${n}Symbol.toStringTag,${n}${Vr(s)})`:t,zr=Object.keys(Ir);function Vr(e){return e([["value","'Module'"]],{lineBreakIndent:null})}class Fr extends ss{deoptimizeArgumentsOnInteractionAtPath(){}getLiteralValueAtPath(e){return e.length>0||null===this.value&&110!==this.scope.context.code.charCodeAt(this.start)||"bigint"==typeof this.value||47===this.scope.context.code.charCodeAt(this.start)?Ue:this.value}getReturnExpressionWhenCalledAtPath(e){return 1!==e.length?Ke:ks(this.members,e[0])}hasEffectsOnInteractionAtPath(e,t,n){switch(t.type){case 0:return e.length>(null===this.value?0:1);case 1:return!0;case 2:return!!(this.included&&this.value instanceof RegExp&&(this.value.global||this.value.sticky))||(1!==e.length||Ns(this.members,e[0],t,n))}}initialise(){super.initialise(),this.members=function(e){if(e instanceof RegExp)return Is;switch(typeof e){case"boolean":return vs;case"number":return Ps;case"string":return ws}return Object.create(null)}(this.value)}parseNode(e){return this.value=e.value,this.regex=e.regex,super.parseNode(e)}render(e){"string"==typeof this.value&&e.indentExclusionRanges.push([this.start+1,this.end-1])}}function jr(e,t,n,s,i){if("getLiteralValueAtPathAsChainElement"in t){const n=t.getLiteralValueAtPathAsChainElement(Pe,De,i);if(n===ns||e.optional&&null==n)return ns}else if(e.optional&&null==t.getLiteralValueAtPath(Pe,De,i))return ns;return e.getLiteralValueAtPath(n,s,i)}function Ur(e){return e.computed?function(e){if(e instanceof Fr)return String(e.value);return null}(e.property):e.property.name}function Gr(e){const t=e.propertyKey,n=e.object;if("string"==typeof t){if(n instanceof ki)return[{key:n.name,pos:n.start},{key:t,pos:e.property.start}];if(n instanceof Hr){const s=Gr(n);return s&&[...s,{key:t,pos:e.property.start}]}}return null}Fr.prototype.includeNode=is;class Hr extends ss{constructor(){super(...arguments),this.promiseHandler=null,this.variable=null,this.expressionsToBeDeoptimized=[]}get computed(){return Fe(this.flags,1024)}set computed(e){this.flags=je(this.flags,1024,e)}get optional(){return Fe(this.flags,128)}set optional(e){this.flags=je(this.flags,128,e)}get assignmentDeoptimized(){return Fe(this.flags,16)}set assignmentDeoptimized(e){this.flags=je(this.flags,16,e)}get bound(){return Fe(this.flags,32)}set bound(e){this.flags=je(this.flags,32,e)}get isUndefined(){return Fe(this.flags,64)}set isUndefined(e){this.flags=je(this.flags,64,e)}bind(){this.bound=!0;const e=Gr(this),t=e&&this.scope.findVariable(e[0].key);if(t?.isNamespace){const n=Wr(t,e.slice(1),this.scope.context);n?"undefined"===n?this.isUndefined=!0:(this.variable=n,this.scope.addNamespaceMemberAccess(function(e){let t=e[0].key;for(let n=1;n0&&n.hasEffectsOnInteractionAtPath(t,Ze,e)}include(e,t){this.included||this.includeNode(e),this.object.include(e,t),this.property.include(e,t),t&&this.variable?.includePath(Ie,e)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.variable?this.scope.context.includeVariableInModule(this.variable,Pe,e):this.isUndefined||this.object.includePath([this.propertyKey],e)}includeNodeAsAssignmentTarget(e){this.included=!0,this.assignmentDeoptimized||this.applyAssignmentDeoptimization(),this.variable?this.scope.context.includeVariableInModule(this.variable,Pe,e):this.isUndefined||this.object.includePath([this.propertyKey],e)}includePath(e,t){this.included||this.includeNode(t),this.variable?this.variable?.includePath(e,t):this.isUndefined||this.object.includePath([this.propertyKey,...e.length<6?e:[...e.slice(0,6),pe]],t)}includeAsAssignmentTarget(e,t,n){this.included||this.includeNodeAsAssignmentTarget(e),n&&!this.deoptimized&&this.applyDeoptimizations(),this.object.include(e,t),this.property.include(e,t)}includeCallArguments(e,t){this.promiseHandler?this.promiseHandler.includeCallArguments(e,t):this.variable?this.variable.includeCallArguments(e,t):Je(e,t)}includeDestructuredIfNecessary(){this.scope.context.error({message:"includeDestructuredIfNecessary is currently not supported for MemberExpressions"},this.start)}initialise(){super.initialise(),this.dynamicPropertyKey=Ur(this),this.propertyKey=null===this.dynamicPropertyKey?pe:this.dynamicPropertyKey,this.accessInteraction={args:[this.object],type:0}}render(e,t,{renderedParentType:n,isCalleeOfRenderedParent:s,renderedSurroundingElement:i}=oe){if(this.variable||this.isUndefined){const{snippets:{getPropertyAccess:i}}=t;let r=this.variable?this.variable.getName(i):"undefined";n&&s&&(r="0, "+r),e.overwrite(this.start,this.end,r,{contentOnly:!0,storeName:!0})}else n&&s&&e.appendRight(this.start,"0, "),this.object.render(e,t,{renderedSurroundingElement:i}),this.property.render(e,t)}setAssignedValue(e){this.assignmentInteraction={args:[this.object,e],type:1}}applyDeoptimizations(){this.deoptimized=!0;const{propertyReadSideEffects:e}=this.scope.context.options.treeshake;this.bound&&e&&!(this.variable||this.isUndefined||this.promiseHandler)&&(this.object.deoptimizeArgumentsOnInteractionAtPath(this.accessInteraction,[this.propertyKey],De),this.scope.context.requestTreeshakingPass()),this.variable&&(this.variable.addUsedPlace(this),this.scope.context.requestTreeshakingPass())}applyAssignmentDeoptimization(){this.assignmentDeoptimized=!0;const{propertyReadSideEffects:e}=this.scope.context.options.treeshake;this.bound&&e&&!this.variable&&!this.isUndefined&&(this.object.deoptimizeArgumentsOnInteractionAtPath(this.assignmentInteraction,[this.propertyKey],De),this.scope.context.requestTreeshakingPass())}disallowNamespaceReassignment(){if(this.object instanceof ki){this.scope.findVariable(this.object.name).isNamespace&&(this.variable&&this.scope.context.includeVariableInModule(this.variable,Ie,ze()),this.scope.context.log(ft,ln(this.object.name,this.scope.context.module.id),this.start))}}getDynamicPropertyKey(){if(null===this.dynamicPropertyKey){this.dynamicPropertyKey=this.propertyKey;const e=this.property.getLiteralValueAtPath(Pe,De,this);return this.dynamicPropertyKey="symbol"==typeof e?Ae.has(e)?e:pe:String(e)}return this.dynamicPropertyKey}hasAccessEffect(e){const{propertyReadSideEffects:t}=this.scope.context.options.treeshake;return!(this.variable||this.isUndefined)&&t&&("always"===t||this.object.hasEffectsOnInteractionAtPath([this.getDynamicPropertyKey()],this.accessInteraction,e))}}function Wr(e,t,n){if(0===t.length)return e;if(!e.isNamespace||e instanceof _n)return null;const s=t[0].key,[i,r]=e.context.traceExport(s);if(!i){if(1===t.length){const i=e.context.fileName;return n.log(ft,bn(s,n.module.id,i,!!r?.missingButExportExists),t[0].pos),"undefined"}return null}return Wr(i,t.slice(1),n)}const qr="ROLLUP_FILE_URL_",Kr="ROLLUP_FILE_URL_OBJ_",Xr="import";class Jr extends ss{constructor(){super(...arguments),this.metaProperty=null,this.preliminaryChunkId=null,this.referenceId=null}getReferencedFileName(e){const{meta:{name:t},metaProperty:n}=this;if(t===Xr){if(n?.startsWith(Kr))return e.getFileName(n.slice(20));if(n?.startsWith(qr))return e.getFileName(n.slice(16))}return null}hasEffects(){return!1}hasEffectsOnInteractionAtPath(e,{type:t}){return e.length>1||0!==t}include(){this.included||this.includeNode()}includeNode(){if(this.included=!0,this.meta.name===Xr){this.scope.context.addImportMeta(this);const e=this.parent,t=this.metaProperty=e instanceof Hr&&"string"==typeof e.propertyKey?e.propertyKey:null;t?.startsWith(Kr)?this.referenceId=t.slice(20):t?.startsWith(qr)&&(this.referenceId=t.slice(16))}}render(e,t){const{format:n,pluginDriver:s,snippets:i}=t,{scope:{context:{module:r}},meta:{name:o},metaProperty:a,parent:l,preliminaryChunkId:c,referenceId:u,start:d,end:h}=this,{id:p,info:{attributes:f}}=r;if(o!==Xr)return;const m=c;if(u){const t=s.getFileName(u),i=V(H(j(m),t)),r=!!a?.startsWith(Kr),o=s.hookFirstSync("resolveFileUrl",[{attributes:f,chunkId:m,fileName:t,format:n,moduleId:p,referenceId:u,relativePath:i}])||oo[n](i,r);return void e.overwrite(l.start,l.end,o,{contentOnly:!0})}let g=s.hookFirstSync("resolveImportMeta",[a,{attributes:f,chunkId:m,format:n,moduleId:p}]);g||(g=ao[n]?.(a,{chunkId:m,snippets:i}),t.accessedDocumentCurrentScript||=Yr.includes(n)&&"undefined"!==g),"string"==typeof g&&(l instanceof Hr?e.overwrite(l.start,l.end,g,{contentOnly:!0}):e.overwrite(d,h,g,{contentOnly:!0}))}setResolution(e,t,n){this.preliminaryChunkId=n;const s=(this.metaProperty?.startsWith(qr)||this.metaProperty?.startsWith(Kr)?Qr:Zr)[e];s.length>0&&this.scope.addAccessedGlobals(s,t)}}const Yr=["cjs","iife","umd"],Zr={amd:["document","module","URL"],cjs:["document","require","URL",xr],es:[],iife:["document","URL",xr],system:["module"],umd:["document","require","URL",xr]},Qr={amd:["document","require","URL"],cjs:["document","require","URL"],es:[],iife:["document","URL"],system:["module","URL"],umd:["document","require","URL"]},eo=(e,t,n="URL")=>`new ${n}(${e})${t?"":".href"}`,to=(e,t,n=!1)=>eo(`'${hr(e)}', ${n?"typeof document === 'undefined' ? location.href : ":""}document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT' && document.currentScript.src || document.baseURI`,t),no=e=>(t,{chunkId:n})=>{const s=e(n);return null===t?`({ url: ${s} })`:"url"===t?s:"undefined"},so=(e,t)=>`require('u' + 'rl').pathToFileURL(${e})${t?"":".href"}`,io=(e,t)=>so(`__dirname + '/${hr(e)}'`,t),ro=(e,t=!1)=>`${t?"typeof document === 'undefined' ? location.href : ":""}(${xr} && ${xr}.tagName.toUpperCase() === 'SCRIPT' && ${xr}.src || new URL('${hr(e)}', document.baseURI).href)`,oo={amd:(e,t)=>("."!==e[0]&&(e="./"+e),eo(`require.toUrl('${hr(e)}'), document.baseURI`,t)),cjs:(e,t)=>`(typeof document === 'undefined' ? ${io(e,t)} : ${to(e,t)})`,es:(e,t)=>eo(`'${hr(e)}', import.meta.url`,t),iife:(e,t)=>to(e,t),system:(e,t)=>eo(`'${hr(e)}', module.meta.url`,t),umd:(e,t)=>`(typeof document === 'undefined' && typeof location === 'undefined' ? ${io(e,t)} : ${to(e,t,!0)})`},ao={amd:no(()=>eo("module.uri, document.baseURI",!1)),cjs:no(e=>`(typeof document === 'undefined' ? ${so("__filename",!1)} : ${ro(e)})`),iife:no(e=>ro(e)),system:(e,{snippets:{getPropertyAccess:t}})=>null===e?"module.meta":`module.meta${t(e)}`,umd:no(e=>`(typeof document === 'undefined' && typeof location === 'undefined' ? ${so("__filename",!1)} : ${ro(e,!0)})`)};class lo extends On{constructor(){super("undefined")}getLiteralValueAtPath(){}}class co extends vi{constructor(e,t){super("default",e,e.declaration,Pe,t,"other"),this.hasId=!1,this.originalId=null,this.originalVariable=null;const n=e.declaration;(n instanceof ar||n instanceof Fi)&&n.id?(this.hasId=!0,this.originalId=n.id):n instanceof ki&&(this.originalId=n)}addReference(e){this.hasId||(this.name=e.name)}addUsedPlace(e){const t=this.getOriginalVariable();t===this?super.addUsedPlace(e):t.addUsedPlace(e)}forbidName(e){const t=this.getOriginalVariable();t===this?super.forbidName(e):t.forbidName(e)}getAssignedVariableName(){return this.originalId&&this.originalId.name||null}getBaseVariableName(){const e=this.getOriginalVariable();return e===this?super.getBaseVariableName():e.getBaseVariableName()}getDirectOriginalVariable(){return!this.originalId||!this.hasId&&(this.originalId.isPossibleTDZ()||this.originalId.variable.isReassigned||this.originalId.variable instanceof lo||"syntheticNamespace"in this.originalId.variable)?null:this.originalId.variable}getName(e){const t=this.getOriginalVariable();return t===this?super.getName(e):t.getName(e)}getOriginalVariable(){if(this.originalVariable)return this.originalVariable;let e,t=this;const n=new Set;do{n.add(t),e=t,t=e.getDirectOriginalVariable()}while(t instanceof co&&!n.has(t));return this.originalVariable=t||e}}class uo extends On{constructor(e){super(e.getModuleName()),this.areAllMembersDeoptimized=!1,this.mergedNamespaces=[],this.nonExplicitNamespacesIncluded=!1,this.referencedEarly=!1,this.references=[],this.context=e,this.module=e.module}addReference(e){this.references.push(e),this.name=e.name}deoptimizeArgumentsOnInteractionAtPath(e,t,n){if(t.length>1||1===t.length&&2===e.type){const s=t[0];"string"==typeof s?this.module.getExportedVariablesByName().get(s)?.deoptimizeArgumentsOnInteractionAtPath(e,t.slice(1),n):Xe(e)}}deoptimizePath(e){if(e.length>1){const t=e[0];if("string"==typeof t)this.module.getExportedVariablesByName().get(t)?.deoptimizePath(e.slice(1));else if(!this.areAllMembersDeoptimized){this.areAllMembersDeoptimized=!0;for(const e of this.module.getExportedVariablesByName().values())e.deoptimizePath(Ie)}}}getLiteralValueAtPath(e){return e[0]===ye?"Module":Ue}hasEffectsOnInteractionAtPath(e,t,n){const{type:s}=t;if(0===e.length)return!0;if(1===e.length&&2!==s)return 1===s;const i=e[0];if("string"!=typeof i)return!0;const r=this.module.getExportedVariablesByName().get(i);return!r||r.hasEffectsOnInteractionAtPath(e.slice(1),t,n)}includePath(e,t){super.includePath(e,t),this.includeMemberPath(e,t)}includeMemberPath(e,t){if(e.length>0){const[n,...s]=e;if("string"==typeof n){const e=this.module.getExportedVariablesByName().get(n);e?this.context.includeVariableInModule(e,s,t):this.includeNonExplicitNamespaces()}else n&&(this.module.includeAllExports(),this.includeNonExplicitNamespaces())}}prepare(e){this.mergedNamespaces.length>0&&this.module.scope.addAccessedGlobals([Er],e)}renderBlock(e){const{exportNamesByVariable:t,format:n,freeze:s,indent:i,symbols:r,snippets:{_:o,cnst:a,getObject:l,getPropertyAccess:c,n:u,s:d}}=e,h=[...this.module.getExportedVariablesByName().entries()].filter(([e,t])=>!e.startsWith("*")&&t.included).map(([e,t])=>this.referencedEarly||t.isReassigned||t===this?[null,`get ${Gn(e)}${o}()${o}{${o}return ${t.getName(c)}${d}${o}}`]:[e,t.getName(c)]);h.unshift([null,`__proto__:${o}null`]);let p=l(h,{lineBreakIndent:{base:"",t:i}});if(this.mergedNamespaces.length>0){const e=this.mergedNamespaces.map(e=>e.getName(c));p=`/*#__PURE__*/${Er}(${p},${o}[${e.join(`,${o}`)}])`}else r&&(p=`/*#__PURE__*/Object.defineProperty(${p},${o}Symbol.toStringTag,${o}${Vr(l)})`),s&&(p=`/*#__PURE__*/Object.freeze(${p})`);return p=`${a} ${this.getName(c)}${o}=${o}${p};`,"system"===n&&t.has(this)&&(p+=`${u}${se([this],e)};`),p}renderFirst(){return this.referencedEarly}setMergedNamespaces(e){this.mergedNamespaces=e;const t=this.context.getModuleExecIndex();for(const e of this.references){const{context:n}=e.scope;if(n.getModuleExecIndex()<=t){this.referencedEarly=!0;break}}}includeNonExplicitNamespaces(){this.nonExplicitNamespacesIncluded||(this.nonExplicitNamespacesIncluded=!0,this.setMergedNamespaces(this.module.includeAndGetAdditionalMergedNamespaces()))}}uo.prototype.isNamespace=!0;const ho=e=>Object.create(e,{includePath:{value(t,n){e.includeMemberPath(t,n)}}});class po extends On{constructor(e,t,n){super(t),this.baseVariable=null,this.context=e,this.module=e.module,this.syntheticNamespace=n}getBaseVariable(){if(this.baseVariable)return this.baseVariable;let e=this.syntheticNamespace;for(;e instanceof co||e instanceof po;){if(e instanceof co){const t=e.getOriginalVariable();if(t===e)break;e=t}e instanceof po&&(e=e.syntheticNamespace)}return this.baseVariable=e}getBaseVariableName(){return this.syntheticNamespace.getBaseVariableName()}getName(e){return`${this.syntheticNamespace.getName(e)}${e(this.name)}`}includePath(e,t){super.includePath(e,t),this.context.includeVariableInModule(this.syntheticNamespace,[this.name,...e],t)}setRenderNames(e,t){super.setRenderNames(e,t)}}class fo{constructor(e,t,n){this.options=t,this.inputBase=n,this.defaultVariableName="",this.namespaceVariableName="",this.variableName="",this.fileName=null,this.importAttributes=null,this.id=e.id,this.moduleInfo=e.info,this.renormalizeRenderPath=e.renormalizeRenderPath,this.suggestedVariableName=e.suggestedVariableName}get moduleSideEffects(){return this.moduleInfo.moduleSideEffects}getFileName(){if(this.fileName)return this.fileName;const{paths:e}=this.options;return this.fileName=("function"==typeof e?e(this.id):e[this.id])||(this.renormalizeRenderPath?V(H(this.inputBase,this.id)):this.id)}getImportAttributes(e){return this.importAttributes||=mo(["es","cjs"].includes(this.options.format)&&this.options.externalImportAttributes&&this.moduleInfo.attributes,e)}getImportPath(e){return hr(this.renormalizeRenderPath?$t(e,this.getFileName(),"amd"===this.options.format,!1):this.getFileName())}}function mo(e,{getObject:t}){if(!e)return null;const n=Object.entries(e).map(([e,t])=>[e,`'${t}'`]);return n.length>0?t(n,{lineBreakIndent:null}):null}function go(e){return e.endsWith(".js")?e.slice(0,-3):e}function yo(e,t){return e.autoId?`${e.basePath?e.basePath+"/":""}${go(t)}`:e.id??""}function bo(e,t,n,s,i,r,o,a,l="return "){const{_:c,getDirectReturnFunction:u,getFunctionIntro:d,getPropertyAccess:h,n:p,s:f}=i;if(!n)return`${p}${p}${l}${function(e,t,n,s,i){if(e.length>0)return e[0].local;for(const{defaultVariableName:e,importPath:r,isChunk:o,name:a,namedExportsMode:l,namespaceVariableName:c,reexports:u}of t)if(u)return Eo(a,u[0].imported,l,o,e,c,n,r,s,i)}(e,t,s,o,h)};`;let m="";if(n)for(const{defaultVariableName:e,importPath:n,isChunk:i,name:a,namedExportsMode:l,namespaceVariableName:d,reexports:f}of t)if(f)for(const t of f)if("*"!==t.reexported){const f=Eo(a,t.imported,l,i,e,d,s,n,o,h);if(m&&(m+=p),"*"!==t.imported&&t.needsLiveBinding){const[e,n]=u([],{functionReturn:!0,lineBreakIndent:null,name:null});m+=`Object.defineProperty(exports,${c}${JSON.stringify(t.reexported)},${c}{${p}${r}enumerable:${c}true,${p}${r}get:${c}${e}${f}${n}${p}});`}else"__proto__"===t.reexported?m+=`Object.defineProperty(exports,${c}"__proto__",${c}{${p}${r}enumerable:${c}true,${p}${r}value:${c}${f}${p}});`:m+=`exports${h(t.reexported)}${c}=${c}${f};`}for(const{exported:t,local:n}of e){const e=`exports${h(t)}`;e!==n&&(m&&(m+=p),m+="__proto__"===t?`Object.defineProperty(exports,${c}"__proto__",${c}{${p}${r}enumerable:${c}true,${p}${r}value:${c}${n}${p}});`:`${e}${c}=${c}${n};`)}if(n)for(const{name:e,reexports:n}of t)if(n)for(const t of n)if("*"===t.reexported){if(m&&(m+=p),!t.needsLiveBinding&&a){const t="'__proto__'";m+=`Object.prototype.hasOwnProperty.call(${e},${c}${t})${c}&&${p}${r}!Object.prototype.hasOwnProperty.call(exports,${c}${t})${c}&&${p}${r}Object.defineProperty(exports,${c}${t},${c}{${p}${r}${r}enumerable:${c}true,${p}${r}${r}value:${c}${e}[${t}]${p}${r}});${p}${p}`}const n=`{${p}${r}if${c}(k${c}!==${c}'default'${c}&&${c}!Object.prototype.hasOwnProperty.call(exports,${c}k))${c}${So(e,t.needsLiveBinding,r,i)}${f}${p}}`;m+=`Object.keys(${e}).forEach(${d(["k"],{isAsync:!1,name:null})}${n});`}return m?`${p}${p}${m}`:""}function Eo(e,t,n,s,i,r,o,a,l,c){if("default"===t){if(!s){const t=o(a),n=Ar[t]?i:e;return Sr(t,l)?`${n}${c("default")}`:n}return n?`${e}${c("default")}`:e}return"*"===t?(s?!n:$r[o(a)])?r:e:`${e}${c(t)}`}function xo(e){return e([["value","true"]],{lineBreakIndent:null})}function Ao(e,t,n,{_:s,getObject:i}){if(e){if(t)return n?`Object.defineProperties(exports,${s}${i([["__esModule",xo(i)],[null,`[Symbol.toStringTag]:${s}${Vr(i)}`]],{lineBreakIndent:null})});`:`Object.defineProperty(exports,${s}'__esModule',${s}${xo(i)});`;if(n)return`Object.defineProperty(exports,${s}Symbol.toStringTag,${s}${Vr(i)});`}return""}const So=(e,t,n,{_:s,getDirectReturnFunction:i,n:r})=>{if(t){const[t,o]=i([],{functionReturn:!0,lineBreakIndent:null,name:null});return`Object.defineProperty(exports,${s}k,${s}{${r}${n}${n}enumerable:${s}true,${r}${n}${n}get:${s}${t}${e}[k]${o}${r}${n}})`}return`exports[k]${s}=${s}${e}[k]`};function $o(e,t,n,s,i,r,o,a){const{_:l,cnst:c,n:u}=a,d=new Set,h=[],p=(e,t,n)=>{d.add(t),h.push(`${c} ${e}${l}=${l}/*#__PURE__*/${t}(${n});`)};for(const{defaultVariableName:n,imports:s,importPath:i,isChunk:r,name:o,namedExportsMode:a,namespaceVariableName:l,reexports:c}of e)if(r){for(const{imported:e,reexported:t}of[...s||[],...c||[]])if("*"===e&&"*"!==t){a||p(l,br,o);break}}else{const e=t(i);let r=!1,a=!1;for(const{imported:t,reexported:i}of[...s||[],...c||[]]){let s,c;"default"===t?r||(r=!0,n!==l&&(c=n,s=Ar[e])):"*"!==t||"*"===i||a||(a=!0,s=$r[e],c=l),s&&p(c,s,o)}}return`${Pr(d,r,o,a,n,s,i)}${h.length>0?`${h.join(u)}${u}${u}`:""}`}function vo(e,t,n){const s=n.find(e=>e.sourcePhaseImport);s&&Bt(function(e,t,n){return{code:"SOURCE_PHASE_FORMAT_UNSUPPORTED",message:`Source phase imports are not supported for the "${e}" output format, importing "${n}" in "${t}". Use the "es" output format to support source phase imports.`,url:vt(Lt)}}(e,t,s.importPath))}function Po(e,t){return"."!==e[0]?e:t?(n=e).endsWith(".js")?n:n+".js":go(e);var n}const Io=new Set(["node:assert","assert","node:assert/strict","assert/strict","node:async_hooks","async_hooks","node:buffer","buffer","node:child_process","child_process","node:cluster","cluster","node:console","console","node:constants","constants","node:crypto","crypto","node:dgram","dgram","node:diagnostics_channel","diagnostics_channel","node:dns","dns","node:dns/promises","dns/promises","node:domain","domain","node:events","events","node:ffi","node:fs","fs","node:fs/promises","fs/promises","node:http","http","node:http2","http2","node:https","https","node:inspector","inspector","node:inspector/promises","inspector/promises","node:module","module","node:net","net","node:os","os","node:path","path","node:path/posix","path/posix","node:path/win32","path/win32","node:perf_hooks","perf_hooks","node:process","process","node:querystring","querystring","node:quic","node:readline","readline","node:readline/promises","readline/promises","node:repl","repl","node:sea","node:sqlite","node:stream","stream","node:stream/consumers","stream/consumers","node:stream/iter","stream/iter","node:stream/promises","stream/promises","node:stream/web","stream/web","node:string_decoder","string_decoder","node:test","node:test/reporters","node:timers","timers","node:timers/promises","timers/promises","node:tls","tls","node:trace_events","trace_events","node:tty","tty","node:url","url","node:util","util","node:util/types","util/types","node:v8","v8","node:vfs","node:vm","vm","node:wasi","wasi","node:worker_threads","worker_threads","node:zlib","zlib","node:zlib/iter","zlib/iter"]);function wo(e,t){const n=t.map(({importPath:e})=>e).filter(e=>Io.has(e)||e.startsWith("node:"));0!==n.length&&e(ft,function(e){return{code:"MISSING_NODE_BUILTINS",ids:e,message:`Creating a browser bundle that depends on Node.js built-in modules (${bt(e)}). You might need to include https://github.com/FredKSchott/rollup-plugin-polyfill-node`}}(n))}const No=(e,t)=>e.split(".").map(t).join("");function ko(e,t,n,s,{_:i,getPropertyAccess:r},o){const a=e.split("."),l=a[0]in Object.prototype;o&&l&&o(ft,vn(a[0])),a[0]=("function"==typeof n?n(a[0]):l?a[0]:n[a[0]])||a[0];const c=a.pop();let u=t,d=[...a.map(e=>(u+=r(e),`${u}${i}=${i}${u}${i}||${i}{}`)),`${u}${r(c)}`].join(`,${i}`)+`${i}=${i}${s}`;return a.length>0&&(d=`(${d})`),d}function Co(e){let t=e.length;for(;t--;){const{imports:n,reexports:s}=e[t];if(n||s)return e.slice(0,t+1)}return[]}const Ro="_missingExportShim";const Do=({dependencies:e,exports:t})=>{const n=new Set(t.map(e=>e.exported));n.add("default");for(const{reexports:t}of e)if(t)for(const e of t)"*"!==e.reexported&&n.add(e.reexported);return n},Oo=(e,t,{_:n,cnst:s,getObject:i,n:r})=>{if(e){const o=[...e].map(e=>[e,"1"]);return o.unshift([null,`__proto__:${n}null`]),`${r}${t}${s} _starExcludes${n}=${n}${i(o,{lineBreakIndent:{base:t,t:t}})};`}return""},Mo=(e,t,{_:n,n:s})=>e.length>0?`${s}${t}var ${e.join(`,${n}`)};`:"",_o=(e,t,n)=>Lo(e.filter(e=>e.hoisted).map(e=>({name:e.exported,value:e.local})),t,n);function Lo(e,t,{_:n,n:s}){return 0===e.length?"":1===e.length?`exports(${JSON.stringify(e[0].name)},${n}${e[0].value});${s}${s}`:`exports({${s}`+e.map(({name:e,value:s})=>`${t}${Gn(e)}:${n}${s}`).join(`,${s}`)+`${s}});${s}${s}`}const To=(e,t,n)=>Lo(e.filter(e=>e.expression).map(e=>({name:e.exported,value:e.local})),t,n),Bo=(e,t,n)=>Lo(e.filter(e=>e.local===Ro).map(e=>({name:e.exported,value:Ro})),t,n);function zo(e,t,n){return e?`${t}${No(e,n)}`:"null"}var Vo={amd:function(e,{accessedGlobals:t,dependencies:n,exports:s,hasDefaultExport:i,hasExports:r,id:o,indent:a,intro:l,isEntryFacade:c,isModuleFacade:u,namedExportsMode:d,log:h,outro:p,snippets:f},{amd:m,esModule:g,externalLiveBindings:y,freeze:b,generatedCode:{symbols:E},interop:x,reexportProtoFromExternal:A,strict:S}){wo(h,n),vo("amd",o,n);const $=n.map(e=>`'${Po(e.importPath,m.forceJsExtensionForImports)}'`),v=n.map(e=>e.name),{n:P,getNonArrowFunctionIntro:I,_:w}=f;r&&(d||"exports.default"===s[0]?.local)&&(v.unshift("exports"),$.unshift("'exports'")),t.has("require")&&(v.unshift("require"),$.unshift("'require'")),t.has("module")&&(v.unshift("module"),$.unshift("'module'"));const N=yo(m,o),k=(N?`'${N}',${w}`:"")+($.length>0?`[${$.join(`,${w}`)}],${w}`:""),C=S?`${w}'use strict';`:"";e.prepend(`${l}${$o(n,x,y,b,E,t,a,f)}`);const R=bo(s,n,d,x,f,a,y,A);let D=Ao(d&&r,c&&(!0===g||"if-default-prop"===g&&i),u&&E,f);D&&(D=P+P+D),e.append(`${R}${D}${p}`).indent(a).prepend(`${m.define}(${k}(${I(v,{isAsync:!1,name:null})}{${C}${P}${P}`).append(`${P}${P}}));`)},cjs:function(e,{accessedGlobals:t,dependencies:n,exports:s,hasDefaultExport:i,hasExports:r,id:o,indent:a,intro:l,isEntryFacade:c,isModuleFacade:u,namedExportsMode:d,outro:h,snippets:p},{compact:f,esModule:m,externalLiveBindings:g,freeze:y,interop:b,generatedCode:{symbols:E},reexportProtoFromExternal:x,strict:A}){vo("cjs",o,n);const{_:S,n:$}=p,v=A?`'use strict';${$}${$}`:"";let P=Ao(d&&r,c&&(!0===m||"if-default-prop"===m&&i),u&&E,p);P&&(P+=$+$);const I=function(e,{_:t,cnst:n,n:s},i){let r="",o=!1;for(const{importPath:a,name:l,reexports:c,imports:u}of e)c||u?(r+=i&&o?",":`${r?`;${s}`:""}${n} `,o=!0,r+=`${l}${t}=${t}require('${a}')`):(r&&(r+=i&&!o?",":`;${s}`),o=!1,r+=`require('${a}')`);if(r)return`${r};${s}${s}`;return""}(n,p,f),w=$o(n,b,g,y,E,t,a,p);e.prepend(`${v}${l}${P}${I}${w}`);const N=bo(s,n,d,b,p,a,g,x,`module.exports${S}=${S}`);e.append(`${N}${h}`)},es:function(e,{accessedGlobals:t,indent:n,intro:s,outro:i,dependencies:r,exports:o,snippets:a},{externalLiveBindings:l,freeze:c,generatedCode:{symbols:u},importAttributesKey:d}){const{n:h}=a,p=function(e,t,{_:n}){const s=[];for(const{importPath:i,reexports:r,imports:o,name:a,attributes:l,sourcePhaseImport:c}of e){const e=`'${i}'${l?`${n}${t}${n}${l}`:""};`;if(c&&s.push(`import source ${c} from${n}${e}`),r||o){if(o){let t=null,i=null;const r=[];for(const e of o)"default"===e.imported?t=e:"*"===e.imported?i=e:r.push(e);i&&s.push(`import${n}*${n}as ${i.local} from${n}${e}`),t&&0===r.length?s.push(`import ${t.local} from${n}${e}`):r.length>0&&s.push(`import ${t?`${t.local},${n}`:""}{${n}${r.map(e=>e.imported===e.local?e.imported:`${Hn(e.imported)} as ${e.local}`).join(`,${n}`)}${n}}${n}from${n}${e}`)}if(r){let t=null;const i=[],l=[];for(const e of r)"*"===e.reexported?t=e:"*"===e.imported?i.push(e):l.push(e);if(t&&s.push(`export${n}*${n}from${n}${e}`),i.length>0){o&&o.some(e=>"*"===e.imported&&e.local===a)||s.push(`import${n}*${n}as ${a} from${n}${e}`);for(const e of i)s.push(`export${n}{${n}${a===e.reexported?a:`${a} as ${Hn(e.reexported)}`} };`)}l.length>0&&s.push(`export${n}{${n}${l.map(e=>e.imported===e.reexported?Hn(e.imported):`${Hn(e.imported)} as ${Hn(e.reexported)}`).join(`,${n}`)}${n}}${n}from${n}${e}`)}}else c||s.push(`import${n}${e}`)}return s}(r,d,a);p.length>0&&(s+=p.join(h)+h+h),(s+=Pr(null,t,n,a,l,c,u))&&e.prepend(s);const f=function(e,{_:t,cnst:n}){const s=[],i=new Array(e.length);let r=0;for(const o of e)o.expression&&s.push(`${n} ${o.local}${t}=${t}${o.expression};`),i[r++]=o.exported===o.local?o.local:`${o.local} as ${Hn(o.exported)}`;i.length>0&&s.push(`export${t}{${t}${i.join(`,${t}`)}${t}};`);return s}(o,a);f.length>0&&e.append(h+h+f.join(h).trim()),i&&e.append(i),e.trim()},iife:function(e,{accessedGlobals:t,dependencies:n,exports:s,hasDefaultExport:i,hasExports:r,id:o,indent:a,intro:l,namedExportsMode:c,log:u,outro:d,snippets:h},{compact:p,esModule:f,extend:m,freeze:g,externalLiveBindings:y,reexportProtoFromExternal:b,globals:E,interop:x,name:A,generatedCode:{symbols:S},strict:$}){vo("iife",o,n);const{_:v,getNonArrowFunctionIntro:P,getPropertyAccess:I,n:w}=h,N=A&&A.includes("."),k=!m&&!N;if(A&&k&&(Vn(C=A)||zn.test(C)))return Bt(function(e){return{code:"ILLEGAL_IDENTIFIER_AS_NAME",message:`Given name "${e}" is not a legal JS identifier. If you need this, you can try "output.extend: true".`,url:vt("configuration-options/#output-extend")}}(A));var C;wo(u,n);const R=Co(n),D=R.map(e=>e.globalName||"null"),O=R.map(e=>e.name);r&&!A&&u(ft,{code:Kt,message:'If you do not supply "output.name", you may not be able to access the exports of an IIFE bundle.',url:vt(Mt)}),r&&(c||"exports.default"===s[0]?.local)&&(m?(D.unshift(`this${No(A,I)}${v}=${v}this${No(A,I)}${v}||${v}{}`),O.unshift("exports")):(D.unshift("{}"),O.unshift("exports")));const M=$?`${a}'use strict';${w}`:"",_=$o(n,x,y,g,S,t,a,h);e.prepend(`${l}${_}`);let L=`(${P(O,{isAsync:!1,name:null})}{${w}${M}${w}`;r&&(!A||m&&c||(L=(k?`var ${A}`:`this${No(A,I)}`)+`${v}=${v}${L}`),N&&(L=function(e,t,n,{_:s,getPropertyAccess:i,s:r},o,a){const l=e.split("."),c=l[0]in Object.prototype;a&&c&&a(ft,vn(l[0])),l[0]=("function"==typeof n?n(l[0]):c?l[0]:n[l[0]])||l[0],l.pop();let u=t;return l.map(e=>(u+=i(e),`${u}${s}=${s}${u}${s}||${s}{}${r}`)).join(o?",":"\n")+(o&&l.length>0?";":"\n")}(A,"this",E,h,p,u)+L));let T=`${w}${w}})(${D.join(`,${v}`)});`;r&&!m&&c&&(T=`${w}${w}${a}return exports;${T}`);const B=bo(s,n,c,x,h,a,y,b);let z=Ao(c&&r,!0===f||"if-default-prop"===f&&i,S,h);z&&(z=w+w+z),e.append(`${B}${z}${d}`).indent(a).prepend(L).append(T)},system:function(e,{accessedGlobals:t,dependencies:n,exports:s,hasExports:i,id:r,indent:o,intro:a,snippets:l,outro:c,usesTopLevelAwait:u},{externalLiveBindings:d,freeze:h,name:p,generatedCode:{symbols:f},strict:m,systemNullSetters:g}){vo("system",r,n);const{_:y,getFunctionIntro:b,getNonArrowFunctionIntro:E,n:x,s:A}=l,{importBindings:S,setters:$,starExcludes:v}=function(e,t,n,{_:s,cnst:i,getObject:r,getPropertyAccess:o,n:a}){const l=[],c=[];let u=null;for(const{imports:d,reexports:h}of e){const p=[];if(d)for(const e of d)l.push(e.local),"*"===e.imported?p.push(`${e.local}${s}=${s}module;`):p.push(`${e.local}${s}=${s}module${o(e.imported)};`);if(h){const a=[];let l=!1;for(const{imported:e,reexported:t}of h)"*"===t?l=!0:a.push([t,"*"===e?"module":`module${o(e)}`]);if(a.length>1||l)if(l){u||(u=Do({dependencies:e,exports:t})),a.unshift([null,`__proto__:${s}null`]);const o=r(a,{lineBreakIndent:null});p.push(`${i} setter${s}=${s}${o};`,`for${s}(${i} name in module)${s}{`,`${n}if${s}(!_starExcludes[name])${s}setter[name]${s}=${s}module[name];`,"}","exports(setter);")}else{const e=r(a,{lineBreakIndent:null});p.push(`exports(${e});`)}else{const[e,t]=a[0];p.push(`exports(${JSON.stringify(e)},${s}${t});`)}}c.push(p.join(`${a}${n}${n}${n}`))}return{importBindings:l,setters:c,starExcludes:u}}(n,s,o,l),P=p?`'${p}',${y}`:"",I=t.has("module")?["exports","module"]:i?["exports"]:[];let w=`System.register(${P}[`+n.map(({importPath:e})=>`'${e}'`).join(`,${y}`)+`],${y}(${E(I,{isAsync:!1,name:null})}{${x}${o}${m?"'use strict';":""}`+Oo(v,o,l)+Mo(S,o,l)+`${x}${o}return${y}{${$.length>0?`${x}${o}${o}setters:${y}[${$.map(e=>e?`${b(["module"],{isAsync:!1,name:null})}{${x}${o}${o}${o}${e}${x}${o}${o}}`:g?"null":`${b([],{isAsync:!1,name:null})}{}`).join(`,${y}`)}],`:""}${x}`;w+=`${o}${o}execute:${y}(${E([],{isAsync:u,name:null})}{${x}${x}`;const N=`${o}${o}})${x}${o}}${A}${x}}));`;e.prepend(a+Pr(null,t,o,l,d,h,f)+_o(s,o,l)).append(`${c}${x}${x}`+To(s,o,l)+Bo(s,o,l)).indent(`${o}${o}${o}`).append(N).prepend(w)},umd:function(e,{accessedGlobals:t,dependencies:n,exports:s,hasDefaultExport:i,hasExports:r,id:o,indent:a,intro:l,namedExportsMode:c,log:u,outro:d,snippets:h},{amd:p,compact:f,esModule:m,extend:g,externalLiveBindings:y,freeze:b,interop:E,name:x,generatedCode:{symbols:A},globals:S,noConflict:$,reexportProtoFromExternal:v,strict:P}){const{_:I,cnst:w,getFunctionIntro:N,getNonArrowFunctionIntro:k,getPropertyAccess:C,n:R,s:D}=h,O=f?"f":"factory",M=f?"g":"global";if(r&&!x)return Bt({code:Kt,message:'You must supply "output.name" for UMD bundles that have exports so that the exports are accessible in environments without a module loader.',url:vt(Mt)});vo("umd",o,n),wo(u,n);const _=n.map(e=>`'${Po(e.importPath,p.forceJsExtensionForImports)}'`),L=n.map(e=>`require('${e.importPath}')`),T=Co(n),B=T.map(e=>zo(e.globalName,M,C)),z=T.map(e=>e.name);(r||$)&&(c||r&&"exports.default"===s[0]?.local)&&(_.unshift("'exports'"),L.unshift("exports"),B.unshift(ko(x,M,S,(g?`${zo(x,M,C)}${I}||${I}`:"")+"{}",h,u)),z.unshift("exports"));const V=yo(p,o),F=(V?`'${V}',${I}`:"")+(_.length>0?`[${_.join(`,${I}`)}],${I}`:""),j=p.define,U=!c&&r?`module.exports${I}=${I}`:"",G=P?`${I}'use strict';${R}`:"";let H;if($){const e=f?"e":"exports";let t;if(!c&&r)t=`${w} ${e}${I}=${I}${ko(x,M,S,`${O}(${B.join(`,${I}`)})`,h,u)};`;else{t=`${w} ${e}${I}=${I}${B.shift()};${R}${a}${a}${O}(${[e,...B].join(`,${I}`)});`}H=`(${N([],{isAsync:!1,name:null})}{${R}${a}${a}${w} current${I}=${I}${function(e,t,{_:n,getPropertyAccess:s}){let i=t;return e.split(".").map(e=>i+=s(e)).join(`${n}&&${n}`)}(x,M,h)};${R}${a}${a}${t}${R}${a}${a}${e}.noConflict${I}=${I}${N([],{isAsync:!1,name:null})}{${I}${zo(x,M,C)}${I}=${I}current;${I}return ${e}${D}${I}};${R}${a}})()`}else H=`${O}(${B.join(`,${I}`)})`,!c&&r&&(H=ko(x,M,S,H,h,u));const W=r||$&&c||B.length>0,q=[O];W&&q.unshift(M);const K=W?`this,${I}`:"",X=W?`(${M}${I}=${I}typeof globalThis${I}!==${I}'undefined'${I}?${I}globalThis${I}:${I}${M}${I}||${I}self,${I}`:"",J=W?")":"",Y=W?`${a}typeof exports${I}===${I}'object'${I}&&${I}typeof module${I}!==${I}'undefined'${I}?${I}${U}${O}(${L.join(`,${I}`)})${I}:${R}`:"",Z=`(${k(q,{isAsync:!1,name:null})}{${R}`+Y+`${a}typeof ${j}${I}===${I}'function'${I}&&${I}${j}.amd${I}?${I}${j}(${F}${O})${I}:${R}`+`${a}${X}${H}${J};${R}`+`})(${K}(${k(z,{isAsync:!1,name:null})}{${G}${R}`,Q=R+R+"}));";e.prepend(`${l}${$o(n,E,y,b,A,t,a,h)}`);const ee=bo(s,n,c,E,h,a,y,v);let te=Ao(c&&r,!0===m||"if-default-prop"===m&&i,A,h);te&&(te=R+R+te),e.append(`${ee}${te}${d}`).trim().indent(a).append(Q).prepend(Z)}};function Fo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var jo,Uo,Go,Ho,Wo,qo,Ko,Xo,Jo,Yo,Zo,Qo={};function ea(){if(Uo)return jo;Uo=1;const e="\\\\/",t=`[^${e}]`,n="\\.",s="\\/",i="[^/]",r=`(?:${s}|$)`,o=`(?:^|${s})`,a=`${n}{1,2}${r}`,l={DOT_LITERAL:n,PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:s,ONE_CHAR:"(?=.)",QMARK:i,END_ANCHOR:r,DOTS_SLASH:a,NO_DOT:`(?!${n})`,NO_DOTS:`(?!${o}${a})`,NO_DOT_SLASH:`(?!${n}{0,1}${r})`,NO_DOTS_SLASH:`(?!${a})`,QMARK_NO_DOT:`[^.${s}]`,STAR:`${i}*?`,START_ANCHOR:o,SEP:"/"},c={...l,SLASH_LITERAL:`[${e}]`,QMARK:t,STAR:`${t}*?`,DOTS_SLASH:`${n}{1,2}(?:[${e}]|$)`,NO_DOT:`(?!${n})`,NO_DOTS:`(?!(?:^|[${e}])${n}{1,2}(?:[${e}]|$))`,NO_DOT_SLASH:`(?!${n}{0,1}(?:[${e}]|$))`,NO_DOTS_SLASH:`(?!${n}{1,2}(?:[${e}]|$))`,QMARK_NO_DOT:`[^.${e}]`,START_ANCHOR:`(?:^|[${e}])`,END_ANCHOR:`(?:[${e}]|$)`,SEP:"\\"};return jo={DEFAULT_MAX_EXTGLOB_RECURSION:0,MAX_LENGTH:65536,POSIX_REGEX_SOURCE:{__proto__:null,alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"},REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{__proto__:null,"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,extglobChars:e=>({"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}),globChars:e=>!0===e?c:l},jo}function ta(){return Go||(Go=1,function(e){const{REGEX_BACKSLASH:t,REGEX_REMOVE_BACKSLASH:n,REGEX_SPECIAL_CHARS:s,REGEX_SPECIAL_CHARS_GLOBAL:i}=ea();e.isObject=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),e.hasRegexChars=e=>s.test(e),e.isRegexChar=t=>1===t.length&&e.hasRegexChars(t),e.escapeRegex=e=>e.replace(i,"\\$1"),e.toPosixSlashes=e=>e.replace(t,"/"),e.isWindows=()=>{if("undefined"!=typeof navigator&&navigator.platform){const e=navigator.platform.toLowerCase();return"win32"===e||"windows"===e}return!("undefined"==typeof process||!process.platform)&&"win32"===process.platform},e.removeBackslashes=e=>e.replace(n,e=>"\\"===e?"":e),e.escapeLast=(t,n,s)=>{const i=t.lastIndexOf(n,s);return-1===i?t:"\\"===t[i-1]?e.escapeLast(t,n,i-1):`${t.slice(0,i)}\\${t.slice(i)}`},e.removePrefix=(e,t={})=>{let n=e;return n.startsWith("./")&&(n=n.slice(2),t.prefix="./"),n},e.wrapOutput=(e,t={},n={})=>{let s=`${n.contains?"":"^"}(?:${e})${n.contains?"":"$"}`;return!0===t.negated&&(s=`(?:^(?!${s}).*$)`),s},e.basename=(e,{windows:t}={})=>{const n=e.split(t?/[\\/]/:"/"),s=n[n.length-1];return""===s?n[n.length-2]:s}}(Qo)),Qo}function na(){if(Wo)return Ho;Wo=1;const e=ta(),{CHAR_ASTERISK:t,CHAR_AT:n,CHAR_BACKWARD_SLASH:s,CHAR_COMMA:i,CHAR_DOT:r,CHAR_EXCLAMATION_MARK:o,CHAR_FORWARD_SLASH:a,CHAR_LEFT_CURLY_BRACE:l,CHAR_LEFT_PARENTHESES:c,CHAR_LEFT_SQUARE_BRACKET:u,CHAR_PLUS:d,CHAR_QUESTION_MARK:h,CHAR_RIGHT_CURLY_BRACE:p,CHAR_RIGHT_PARENTHESES:f,CHAR_RIGHT_SQUARE_BRACKET:m}=ea(),g=e=>e===a||e===s,y=e=>{!0!==e.isPrefix&&(e.depth=e.isGlobstar?1/0:1)};return Ho=(b,E)=>{const x=E||{},A=b.length-1,S=!0===x.parts||!0===x.scanToEnd,$=[],v=[],P=[];let I,w,N=b,k=-1,C=0,R=0,D=!1,O=!1,M=!1,_=!1,L=!1,T=!1,B=!1,z=!1,V=!1,F=!1,j=0,U={value:"",depth:0,isGlob:!1};const G=()=>k>=A,H=()=>N.charCodeAt(k+1),W=()=>(I=w,N.charCodeAt(++k));for(;k0&&(K=N.slice(0,C),N=N.slice(C),R-=C),q&&!0===M&&R>0?(q=N.slice(0,R),X=N.slice(R)):!0===M?(q="",X=N):q=N,q&&""!==q&&"/"!==q&&q!==N&&g(q.charCodeAt(q.length-1))&&(q=q.slice(0,-1)),!0===x.unescape&&(X&&(X=e.removeBackslashes(X)),q&&!0===B&&(q=e.removeBackslashes(q)));const J={prefix:K,input:b,start:C,base:q,glob:X,isBrace:D,isBracket:O,isGlob:M,isExtglob:_,isGlobstar:L,negated:z,negatedExtglob:V};if(!0===x.tokens&&(J.maxDepth=0,g(w)||v.push(U),J.tokens=v),!0===x.parts||!0===x.tokens){let e;for(let t=0;t<$.length;t++){const n=e?e+1:C,s=$[t],i=b.slice(n,s);x.tokens&&(0===t&&0!==C?(v[t].isPrefix=!0,v[t].value=K):v[t].value=i,y(v[t]),J.maxDepth+=v[t].depth),0===t&&""===i||P.push(i),e=s}if(e&&e+1{if("function"==typeof t.expandRange)return t.expandRange(...e,t);e.sort();return`[${e.join("-")}]`},l=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,c=e=>{const t=[];let n=0,s=0,i=0,r="",o=!1;for(const a of e)if(!0!==o)if("\\"!==a)if('"'!==a){if(0===i)if("["===a)n++;else if("]"===a&&n>0)n--;else if(0===n)if("("===a)s++;else if(")"===a&&s>0)s--;else if("|"===a&&0===s){t.push(r),r="";continue}r+=a}else i=1===i?0:1,r+=a;else r+=a,o=!0;else r+=a,o=!1;return t.push(r),t},u=e=>{let t=e.trim(),n=!0;for(;!0===n;)n=!1,/^@\([^\\()[\]{}|]+\)$/.test(t)&&(t=t.slice(2,-1),n=!0);if((e=>{let t=!1;for(const n of e)if(!0!==t)if("\\"!==n){if(/[?*+@!()[\]{}]/.test(n))return!1}else t=!0;else t=!1;return!0})(t))return t.replace(/\\(.)/g,"$1")},d=(e,t=!0)=>{if("+"!==e[0]&&"*"!==e[0]||"("!==e[1])return;let n=0,s=0,i=0,r=!1;for(let o=1;o0)n--;else if(!(n>0))if("("!==a){if(")"===a&&(s--,0===s)){if(!0===t&&o!==e.length-1)return;return{type:e[0],body:e.slice(2,o),end:o}}}else s++}else n++}else i=1===i?0:1;else r=!0;else r=!1}},h=e=>`${1===e.length?t.escapeRegex(e[0]):`[${e.map(e=>t.escapeRegex(e)).join("")}]`}*`,p=e=>{let t=0;const n=[];for(;te.trim());if(1!==i.length)return;const r=u(i[0]);if(!r||1!==r.length)return;n.push(r),t+=s.end+1}if(!(n.length<1))return n},f=e=>{let t=0,n=e.trim(),s=d(n);for(;s;)t++,n=s.body.trim(),s=d(n);return t},m=(t,n)=>{if(!1===n.maxExtglobRecursion)return{risky:!1};const s="number"==typeof n.maxExtglobRecursion?n.maxExtglobRecursion:e.DEFAULT_MAX_EXTGLOB_RECURSION,i=c(t).map(e=>e.trim());if(i.length>1&&(i.some(e=>""===e)||i.some(e=>/^[*?]+$/.test(e))||(e=>{const t=e.map(u).filter(Boolean);for(let e=0;es)return{risky:!0}}return o?a?{risky:!0,safeOutput:h([...new Set(r)])}:{risky:!0}:{risky:!1}},g=(c,u)=>{if("string"!=typeof c)throw new TypeError("Expected a string");c=o[c]||c;const d={...u},h="number"==typeof d.maxLength?Math.min(n,d.maxLength):n;let p=c.length;if(p>h)throw new SyntaxError(`Input length: ${p}, exceeds maximum allowed length: ${h}`);const f={type:"bos",value:"",output:d.prepend||""},y=[f],b=d.capture?"":"?:",E=e.globChars(d.windows),x=e.extglobChars(E),{DOT_LITERAL:A,PLUS_LITERAL:S,SLASH_LITERAL:$,ONE_CHAR:v,DOTS_SLASH:P,NO_DOT:I,NO_DOT_SLASH:w,NO_DOTS_SLASH:N,QMARK:k,QMARK_NO_DOT:C,STAR:R,START_ANCHOR:D}=E,O=e=>`(${b}(?:(?!${D}${e.dot?P:A}).)*?)`,M=d.dot?"":I,_=d.dot?k:C;let L=!0===d.bash?O(d):R;d.capture&&(L=`(${L})`),"boolean"==typeof d.noext&&(d.noextglob=d.noext);const T={input:c,index:-1,start:0,dot:!0===d.dot,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:y};c=t.removePrefix(c,T),p=c.length;const B=[],z=[],V=[];let F,j=f;const U=()=>T.index===p-1,G=T.peek=(e=1)=>c[T.index+e],H=T.advance=()=>c[++T.index]||"",W=()=>c.slice(T.index+1),q=(e="",t=0)=>{T.consumed+=e,T.index+=t},K=e=>{T.output+=null!=e.output?e.output:e.value,q(e.value)},X=()=>{let e=1;for(;"!"===G()&&("("!==G(2)||"?"===G(3));)H(),T.start++,e++;return e%2!=0&&(T.negated=!0,T.start++,!0)},J=e=>{T[e]++,V.push(e)},Y=e=>{T[e]--,V.pop()},Z=e=>{if("globstar"===j.type){const t=T.braces>0&&("comma"===e.type||"brace"===e.type),n=!0===e.extglob||B.length&&("pipe"===e.type||"paren"===e.type);"slash"===e.type||"paren"===e.type||t||n||(T.output=T.output.slice(0,-j.output.length),j.type="star",j.value="*",j.output=L,T.output+=j.output)}if(B.length&&"paren"!==e.type&&(B[B.length-1].inner+=e.value),(e.value||e.output)&&K(e),j&&"text"===j.type&&"text"===e.type)return j.output=(j.output||j.value)+e.value,void(j.value+=e.value);e.prev=j,y.push(e),j=e},Q=(e,t)=>{const n={...x[t],conditions:1,inner:""};n.prev=j,n.parens=T.parens,n.output=T.output,n.startIndex=T.index,n.tokensIndex=y.length;const s=(d.capture?"(":"")+n.open;J("parens"),Z({type:e,value:t,output:T.output?"":v}),Z({type:"paren",extglob:!0,value:H(),output:s}),B.push(n)},ee=e=>{const n=c.slice(e.startIndex,T.index+1),s=c.slice(e.startIndex+2,T.index),i=m(s,d);if(("plus"===e.type||"star"===e.type)&&i.risky){const s=i.safeOutput?(e.output?"":v)+(d.capture?`(${i.safeOutput})`:i.safeOutput):void 0,r=y[e.tokensIndex];r.type="text",r.value=n,r.output=s||t.escapeRegex(n);for(let t=e.tokensIndex+1;t1&&e.inner.includes("/")&&(t=O(d)),(t!==L||U()||/^\)+$/.test(W()))&&(o=e.close=`)$))${t}`),e.inner.includes("*")&&(r=W())&&/^\.[^\\/.]+$/.test(r)){const n=g(r,{...u,fastpaths:!1}).output;o=e.close=`)${n})${t})`}"bos"===e.prev.type&&(T.negatedExtglob=!0)}Z({type:"paren",extglob:!0,value:F,output:o}),Y("parens")};if(!1!==d.fastpaths&&!/(^[*!]|[/()[\]{}"])/.test(c)){let e=!1,n=c.replace(r,(t,n,s,i,r,o)=>"\\"===i?(e=!0,t):"?"===i?n?n+i+(r?k.repeat(r.length):""):0===o?_+(r?k.repeat(r.length):""):k.repeat(s.length):"."===i?A.repeat(s.length):"*"===i?n?n+i+(r?L:""):L:n?t:`\\${t}`);return!0===e&&(n=!0===d.unescape?n.replace(/\\/g,""):n.replace(/\\+/g,e=>e.length%2==0?"\\\\":e?"\\":"")),n===c&&!0===d.contains?(T.output=c,T):(T.output=t.wrapOutput(n,T,u),T)}for(;!U();){if(F=H(),"\0"===F)continue;if("\\"===F){const e=G();if("/"===e&&!0!==d.bash)continue;if("."===e||";"===e)continue;if(!e){F+="\\",Z({type:"text",value:F});continue}const t=/^\\+/.exec(W());let n=0;if(t&&t[0].length>2&&(n=t[0].length,T.index+=n,n%2!=0&&(F+="\\")),!0===d.unescape?F=H():F+=H(),0===T.brackets){Z({type:"text",value:F});continue}}if(T.brackets>0&&("]"!==F||"["===j.value||"[^"===j.value)){if(!1!==d.posix&&":"===F){const e=j.value.slice(1);if(e.includes("[")&&(j.posix=!0,e.includes(":"))){const e=j.value.lastIndexOf("["),t=j.value.slice(0,e),n=j.value.slice(e+2),i=s[n];if(i){j.value=t+i,T.backtrack=!0,H(),f.output||1!==y.indexOf(j)||(f.output=v);continue}}}("["===F&&":"!==G()||"-"===F&&"]"===G())&&(F=`\\${F}`),"]"!==F||"["!==j.value&&"[^"!==j.value||(F=`\\${F}`),!0===d.posix&&"!"===F&&"["===j.value&&(F="^"),j.value+=F,K({value:F});continue}if(1===T.quotes&&'"'!==F){F=t.escapeRegex(F),j.value+=F,K({value:F});continue}if('"'===F){T.quotes=1===T.quotes?0:1,!0===d.keepQuotes&&Z({type:"text",value:F});continue}if("("===F){J("parens"),Z({type:"paren",value:F});continue}if(")"===F){if(0===T.parens&&!0===d.strictBrackets)throw new SyntaxError(l("opening","("));const e=B[B.length-1];if(e&&T.parens===e.parens+1){ee(B.pop());continue}Z({type:"paren",value:F,output:T.parens?")":"\\)"}),Y("parens");continue}if("["===F){if(!0!==d.nobracket&&W().includes("]"))J("brackets");else{if(!0!==d.nobracket&&!0===d.strictBrackets)throw new SyntaxError(l("closing","]"));F=`\\${F}`}Z({type:"bracket",value:F});continue}if("]"===F){if(!0===d.nobracket||j&&"bracket"===j.type&&1===j.value.length){Z({type:"text",value:F,output:`\\${F}`});continue}if(0===T.brackets){if(!0===d.strictBrackets)throw new SyntaxError(l("opening","["));Z({type:"text",value:F,output:`\\${F}`});continue}Y("brackets");const e=j.value.slice(1);if(!0===j.posix||"^"!==e[0]||e.includes("/")||(F=`/${F}`),j.value+=F,K({value:F}),!1===d.literalBrackets||t.hasRegexChars(e))continue;const n=t.escapeRegex(j.value);if(T.output=T.output.slice(0,-j.value.length),!0===d.literalBrackets){T.output+=n,j.value=n;continue}j.value=`(${b}${n}|${j.value})`,T.output+=j.value;continue}if("{"===F&&!0!==d.nobrace){J("braces");const e={type:"brace",value:F,output:"(",outputIndex:T.output.length,tokensIndex:T.tokens.length};z.push(e),Z(e);continue}if("}"===F){const e=z[z.length-1];if(!0===d.nobrace||!e){Z({type:"text",value:F,output:F});continue}let t=")";if(!0===e.dots){const e=y.slice(),n=[];for(let t=e.length-1;t>=0&&(y.pop(),"brace"!==e[t].type);t--)"dots"!==e[t].type&&n.unshift(e[t].value);t=a(n,d),T.backtrack=!0}if(!0!==e.comma&&!0!==e.dots){const n=T.output.slice(0,e.outputIndex),s=T.tokens.slice(e.tokensIndex);e.value=e.output="\\{",F=t="\\}",T.output=n;for(const e of s)T.output+=e.output||e.value}Z({type:"brace",value:F,output:t}),Y("braces"),z.pop();continue}if("|"===F){B.length>0&&B[B.length-1].conditions++,Z({type:"text",value:F});continue}if(","===F){let e=F;const t=z[z.length-1];t&&"braces"===V[V.length-1]&&(t.comma=!0,e="|"),Z({type:"comma",value:F,output:e});continue}if("/"===F){if("dot"===j.type&&T.index===T.start+1){T.start=T.index+1,T.consumed="",T.output="",y.pop(),j=f;continue}Z({type:"slash",value:F,output:$});continue}if("."===F){if(T.braces>0&&"dot"===j.type){"."===j.value&&(j.output=A);const e=z[z.length-1];j.type="dots",j.output+=F,j.value+=F,e.dots=!0;continue}if(T.braces+T.parens===0&&"bos"!==j.type&&"slash"!==j.type){Z({type:"text",value:F,output:A});continue}Z({type:"dot",value:F,output:A});continue}if("?"===F){if(!(j&&"("===j.value)&&!0!==d.noextglob&&"("===G()&&"?"!==G(2)){Q("qmark",F);continue}if(j&&"paren"===j.type){const e=G();let t=F;("("===j.value&&!/[!=<:]/.test(e)||"<"===e&&!/<([!=]|\w+>)/.test(W()))&&(t=`\\${F}`),Z({type:"text",value:F,output:t});continue}if(!0!==d.dot&&("slash"===j.type||"bos"===j.type)){Z({type:"qmark",value:F,output:C});continue}Z({type:"qmark",value:F,output:k});continue}if("!"===F){if(!0!==d.noextglob&&"("===G()&&("?"!==G(2)||!/[!=<:]/.test(G(3)))){Q("negate",F);continue}if(!0!==d.nonegate&&0===T.index){X();continue}}if("+"===F){if(!0!==d.noextglob&&"("===G()&&"?"!==G(2)){Q("plus",F);continue}if(j&&"("===j.value||!1===d.regex){Z({type:"plus",value:F,output:S});continue}if(j&&("bracket"===j.type||"paren"===j.type||"brace"===j.type)||T.parens>0){Z({type:"plus",value:F});continue}Z({type:"plus",value:S});continue}if("@"===F){if(!0!==d.noextglob&&"("===G()&&"?"!==G(2)){Z({type:"at",extglob:!0,value:F,output:""});continue}Z({type:"text",value:F});continue}if("*"!==F){"$"!==F&&"^"!==F||(F=`\\${F}`);const e=i.exec(W());e&&(F+=e[0],T.index+=e[0].length),Z({type:"text",value:F});continue}if(j&&("globstar"===j.type||!0===j.star)){j.type="star",j.star=!0,j.value+=F,j.output=L,T.backtrack=!0,T.globstar=!0,q(F);continue}let e=W();if(!0!==d.noextglob&&/^\([^?]/.test(e)){Q("star",F);continue}if("star"===j.type){if(!0===d.noglobstar){q(F);continue}const t=j.prev,n=t.prev,s="slash"===t.type||"bos"===t.type,i=n&&("star"===n.type||"globstar"===n.type);if(!0===d.bash&&(!s||e[0]&&"/"!==e[0])){Z({type:"star",value:F,output:""});continue}const r=T.braces>0&&("comma"===t.type||"brace"===t.type),o=B.length&&("pipe"===t.type||"paren"===t.type);if(!s&&"paren"!==t.type&&!r&&!o){Z({type:"star",value:F,output:""});continue}for(;"/**"===e.slice(0,3);){const t=c[T.index+4];if(t&&"/"!==t)break;e=e.slice(3),q("/**",3)}if("bos"===t.type&&U()){j.type="globstar",j.value+=F,j.output=O(d),T.output=j.output,T.globstar=!0,q(F);continue}if("slash"===t.type&&"bos"!==t.prev.type&&!i&&U()){T.output=T.output.slice(0,-(t.output+j.output).length),t.output=`(?:${t.output}`,j.type="globstar",j.output=O(d)+(d.strictSlashes?")":"|$)"),j.value+=F,T.globstar=!0,T.output+=t.output+j.output,q(F);continue}if("slash"===t.type&&"bos"!==t.prev.type&&"/"===e[0]){const n=void 0!==e[1]?"|$":"";T.output=T.output.slice(0,-(t.output+j.output).length),t.output=`(?:${t.output}`,j.type="globstar",j.output=`${O(d)}${$}|${$}${n})`,j.value+=F,T.output+=t.output+j.output,T.globstar=!0,q(F+H()),Z({type:"slash",value:"/",output:""});continue}if("bos"===t.type&&"/"===e[0]){j.type="globstar",j.value+=F,j.output=`(?:^|${$}|${O(d)}${$})`,T.output=j.output,T.globstar=!0,q(F+H()),Z({type:"slash",value:"/",output:""});continue}T.output=T.output.slice(0,-j.output.length),j.type="globstar",j.output=O(d),j.value+=F,T.output+=j.output,T.globstar=!0,q(F);continue}const n={type:"star",value:F,output:L};!0!==d.bash?!j||"bracket"!==j.type&&"paren"!==j.type||!0!==d.regex?(T.index!==T.start&&"slash"!==j.type&&"dot"!==j.type||("dot"===j.type?(T.output+=w,j.output+=w):!0===d.dot?(T.output+=N,j.output+=N):(T.output+=M,j.output+=M),"*"!==G()&&(T.output+=v,j.output+=v)),Z(n)):(n.output=F,Z(n)):(n.output=".*?","bos"!==j.type&&"slash"!==j.type||(n.output=M+n.output),Z(n))}for(;T.brackets>0;){if(!0===d.strictBrackets)throw new SyntaxError(l("closing","]"));T.output=t.escapeLast(T.output,"["),Y("brackets")}for(;T.parens>0;){if(!0===d.strictBrackets)throw new SyntaxError(l("closing",")"));T.output=t.escapeLast(T.output,"("),Y("parens")}for(;T.braces>0;){if(!0===d.strictBrackets)throw new SyntaxError(l("closing","}"));T.output=t.escapeLast(T.output,"{"),Y("braces")}if(!0===d.strictSlashes||"star"!==j.type&&"bracket"!==j.type||Z({type:"maybe_slash",value:"",output:`${$}?`}),!0===T.backtrack){T.output="";for(const e of T.tokens)T.output+=null!=e.output?e.output:e.value,e.suffix&&(T.output+=e.suffix)}return T};return g.fastpaths=(s,i)=>{const r={...i},a="number"==typeof r.maxLength?Math.min(n,r.maxLength):n,l=s.length;if(l>a)throw new SyntaxError(`Input length: ${l}, exceeds maximum allowed length: ${a}`);s=o[s]||s;const{DOT_LITERAL:c,SLASH_LITERAL:u,ONE_CHAR:d,DOTS_SLASH:h,NO_DOT:p,NO_DOTS:f,NO_DOTS_SLASH:m,STAR:g,START_ANCHOR:y}=e.globChars(r.windows),b=r.dot?f:p,E=r.dot?m:p,x=r.capture?"":"?:";let A=!0===r.bash?".*?":g;r.capture&&(A=`(${A})`);const S=e=>!0===e.noglobstar?A:`(${x}(?:(?!${y}${e.dot?h:c}).)*?)`,$=e=>{switch(e){case"*":return`${b}${d}${A}`;case".*":return`${c}${d}${A}`;case"*.*":return`${b}${A}${c}${d}${A}`;case"*/*":return`${b}${A}${u}${d}${E}${A}`;case"**":return b+S(r);case"**/*":return`(?:${b}${S(r)}${u})?${E}${d}${A}`;case"**/*.*":return`(?:${b}${S(r)}${u})?${E}${A}${c}${d}${A}`;case"**/.*":return`(?:${b}${S(r)}${u})?${c}${d}${A}`;default:{const t=/^(.*?)\.(\w+)$/.exec(e);if(!t)return;const n=$(t[1]);if(!n)return;return n+c+t[2]}}},v=t.removePrefix(s,{negated:!1,prefix:""});let P=$(v);return P&&!0!==r.strictSlashes&&(P+=`${u}?`),P},qo=g}function ia(){if(Jo)return Xo;Jo=1;const e=na(),t=sa(),n=ta(),s=ea(),i=(e,t,n=!1)=>{if(Array.isArray(e)){const s=e.map(e=>i(e,t,n)),r=e=>{for(const t of s){const n=t(e);if(n)return n}return!1};return r}const s=(r=e)&&"object"==typeof r&&!Array.isArray(r)&&e.tokens&&e.input;var r;if(""===e||"string"!=typeof e&&!s)throw new TypeError("Expected pattern to be a non-empty string");const o=t||{},a=o.windows,l=s?i.compileRe(e,t):i.makeRe(e,t,!1,!0),c=l.state;delete l.state;let u=()=>!1;if(o.ignore){const e={...t,ignore:null,onMatch:null,onResult:null};u=i(o.ignore,e,n)}const d=(n,s=!1)=>{const{isMatch:r,match:d,output:h}=i.test(n,l,t,{glob:e,posix:a}),p={glob:e,state:c,regex:l,posix:a,input:n,output:h,match:d,isMatch:r};return"function"==typeof o.onResult&&o.onResult(p),!1===r?(p.isMatch=!1,!!s&&p):u(n)?("function"==typeof o.onIgnore&&o.onIgnore(p),p.isMatch=!1,!!s&&p):("function"==typeof o.onMatch&&o.onMatch(p),!s||p)};return n&&(d.state=c),d};return i.test=(e,t,s,{glob:r,posix:o}={})=>{if("string"!=typeof e)throw new TypeError("Expected input to be a string");if(""===e)return{isMatch:!1,output:""};const a=s||{},l=a.format||(o?n.toPosixSlashes:null);let c=e===r,u=c&&l?l(e):e;return!1===c&&(u=l?l(e):e,c=u===r),!1!==c&&!0!==a.capture||(c=!0===a.matchBase||!0===a.basename?i.matchBase(e,t,s,o):t.exec(u)),{isMatch:Boolean(c),match:c,output:u}},i.matchBase=(e,t,s,r=s&&s.windows)=>(t instanceof RegExp?t:i.makeRe(t,s)).test(n.basename(e,{windows:r})),i.isMatch=(e,t,n)=>i(t,n)(e),i.parse=(e,n)=>Array.isArray(e)?e.map(e=>i.parse(e,n)):t(e,{...n,fastpaths:!1}),i.scan=(t,n)=>e(t,n),i.compileRe=(e,t,n=!1,s=!1)=>{if(!0===n)return e.output;const r=t||{},o=r.contains?"":"^",a=r.contains?"":"$";let l=`${o}(?:${e.output})${a}`;e&&!0===e.negated&&(l=`^(?!${l}).*$`);const c=i.toRegex(l,t);return!0===s&&(c.state=e),c},i.makeRe=(e,n={},s=!1,r=!1)=>{if(!e||"string"!=typeof e)throw new TypeError("Expected a non-empty string");let o={negated:!1,fastpaths:!0};return!1===n.fastpaths||"."!==e[0]&&"*"!==e[0]||(o.output=t.fastpaths(e,n)),o.output||(o=t(e,n)),i.compileRe(o,n,s,r)},i.toRegex=(e,t)=>{try{const n=t||{};return new RegExp(e,n.flags||(n.nocase?"i":""))}catch(e){if(t&&!0===t.debug)throw e;return/$^/}},i.constants=s,Xo=i}function ra(){if(Zo)return Yo;Zo=1;const e=ia(),t=ta();function n(n,s,i=!1){return!s||null!==s.windows&&void 0!==s.windows||(s={...s,windows:t.isWindows()}),e(n,s,i)}return Object.assign(n,e),Yo=n}var oa=Fo(ra());const aa={ArrayPattern(e,t){for(const n of t.elements)n&&aa[n.type](e,n)},AssignmentPattern(e,t){aa[t.left.type](e,t.left)},Identifier(e,t){e.push(t.name)},MemberExpression(){},ObjectPattern(e,t){for(const n of t.properties)"RestElement"===n.type?aa.RestElement(e,n):aa[n.value.type](e,n.value)},RestElement(e,t){aa[t.argument.type](e,t.argument)}},la=function(e){const t=[];return aa[e.type](t,e),t};function ca(e,t,n){try{const o=Ia.__wbindgen_add_to_stack_pointer(-16),a=Aa(e,Ia.__wbindgen_export2,Ia.__wbindgen_export3),l=wa;Ia.parse(o,a,l,t,n);var s=fa().getInt32(o+0,!0),i=fa().getInt32(o+4,!0),r=ha(s,i).slice();return Ia.__wbindgen_export(s,1*i,1),r}finally{Ia.__wbindgen_add_to_stack_pointer(16)}}function ua(){return{__proto__:null,"./bindings_wasm_bg.js":{__proto__:null,__wbg___wbindgen_throw_344f42d3211c4765:function(e,t){throw new Error(ma(e,t))},__wbg_error_a6fa202b58aa1cd3:function(e,t){let n,s;try{n=e,s=t,console.error(ma(e,t))}finally{Ia.__wbindgen_export(n,s,1)}},__wbg_length_1f0964f4a5e2c6d8:function(e){return ba(e).length},__wbg_new_227d7c05414eb861:function(){return da(new Error)},__wbg_prototypesetcall_4770620bbe4688a0:function(e,t,n){Uint8Array.prototype.set.call(ha(e,t),ba(n))},__wbg_stack_3b0d974bbf31e44f:function(e,t){const n=Aa(ba(t).stack,Ia.__wbindgen_export2,Ia.__wbindgen_export3),s=wa;fa().setInt32(e+4,s,!0),fa().setInt32(e+0,n,!0)},__wbindgen_object_drop_ref:function(e){!function(e){const t=ba(e);(function(e){if(e<1028)return;Ea[e]=xa,xa=e})(e)}(e)}}}}function da(e){xa===Ea.length&&Ea.push(Ea.length+1);const t=xa;return xa=Ea[t],Ea[t]=e,t}function ha(e,t){return e>>>=0,ya().subarray(e/1,e/1+t)}new Set("break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl".split(" ")).add("");let pa=null;function fa(){return(null===pa||!0===pa.buffer.detached||void 0===pa.buffer.detached&&pa.buffer!==Ia.memory.buffer)&&(pa=new DataView(Ia.memory.buffer)),pa}function ma(e,t){return function(e,t){va+=t,va>=$a&&(Sa=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Sa.decode(),va=t);return Sa.decode(ya().subarray(e,e+t))}(e>>>0,t)}let ga=null;function ya(){return null!==ga&&0!==ga.byteLength||(ga=new Uint8Array(Ia.memory.buffer)),ga}function ba(e){return Ea[e]}let Ea=new Array(1024).fill(void 0);Ea.push(void 0,null,!0,!1);let xa=Ea.length;function Aa(e,t,n){if(void 0===n){const n=Pa.encode(e),s=t(n.length,1)>>>0;return ya().subarray(s,s+n.length).set(n),wa=n.length,s}let s=e.length,i=t(s,1)>>>0;const r=ya();let o=0;for(;o127)break;r[i+o]=t}if(o!==s){0!==o&&(e=e.slice(o)),i=n(i,s,s=o+3*e.length,1)>>>0;const t=ya().subarray(i+o,i+s);o+=Pa.encodeInto(e,t).written,i=n(i,s,o,1)>>>0}return wa=o,i}let Sa=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Sa.decode();const $a=2146435072;let va=0;const Pa=new TextEncoder;"encodeInto"in Pa||(Pa.encodeInto=function(e,t){const n=Pa.encode(e);return t.set(n),{read:e.length,written:n.length}});let Ia,wa=0;async function Na(e){if(void 0!==Ia)return Ia;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?({module_or_path:e}=e):console.warn("using deprecated parameters for the initialization function; pass a single object instead")),void 0===e&&(e=new URL("bindings_wasm_bg.wasm",import.meta.url));const t=ua();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e));const{instance:n}=await async function(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if(!e.ok||!function(e){switch(e){case"basic":case"cors":case"default":return!0}return!1}(e.type)||"application/wasm"===e.headers.get("Content-Type"))throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}const n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{const n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}(await e,t);return function(e){return Ia=e.exports,pa=null,ga=null,Ia}(n)}const ka=[function(e,t){return{type:"PanicError",start:t[e],end:t[e+1],message:t.convertString(t[e+2])}},function(e,t){return{type:"ParseError",start:t[e],end:t[e+1],message:t.convertString(t[e+2])}},function(e,t){return{type:"ArrayExpression",start:t[e],end:t[e+1],elements:Ra(t[e+2],t)}},function(e,t){return{type:"ArrayPattern",start:t[e],end:t[e+1],elements:Ra(t[e+2],t)}},function(e,t){const n=t[e+2],s=Zn(t[e+3],t);return{type:"ArrowFunctionExpression",start:t[e],end:t[e+1],async:!(1&~n),expression:!(2&~n),generator:!(4&~n),...s.length>0?{[Jn]:s}:{},params:Ra(t[e+4],t),body:Ca(t[e+5],t),id:null}},function(e,t){return{type:"AssignmentExpression",start:t[e],end:t[e+1],operator:Xn[t[e+2]],left:Ca(t[e+3],t),right:Ca(t[e+4],t)}},function(e,t){return{type:"AssignmentPattern",start:t[e],end:t[e+1],left:Ca(t[e+2],t),right:Ca(t[e+3],t)}},function(e,t){return{type:"AwaitExpression",start:t[e],end:t[e+1],argument:Ca(t[e+2],t)}},function(e,t){return{type:"BinaryExpression",start:t[e],end:t[e+1],operator:Xn[t[e+2]],left:Ca(t[e+3],t),right:Ca(t[e+4],t)}},function(e,t){return{type:"BlockStatement",start:t[e],end:t[e+1],body:Ra(t[e+2],t)}},function(e,t){const n=t[e+2];return{type:"BreakStatement",start:t[e],end:t[e+1],label:0===n?null:Ca(n,t)}},function(e,t){const n=t[e+2],s=Zn(t[e+3],t);return{type:"CallExpression",start:t[e],end:t[e+1],optional:!(1&~n),...s.length>0?{[Jn]:s}:{},callee:Ca(t[e+4],t),arguments:Ra(t[e+5],t)}},function(e,t){const n=t[e+2];return{type:"CatchClause",start:t[e],end:t[e+1],param:0===n?null:Ca(n,t),body:Ca(t[e+3],t)}},function(e,t){return{type:"ChainExpression",start:t[e],end:t[e+1],expression:Ca(t[e+2],t)}},function(e,t){return{type:"ClassBody",start:t[e],end:t[e+1],body:Ra(t[e+2],t)}},function(e,t){const n=t[e+3],s=t[e+4];return{type:"ClassDeclaration",start:t[e],end:t[e+1],decorators:Ra(t[e+2],t),id:0===n?null:Ca(n,t),superClass:0===s?null:Ca(s,t),body:Ca(t[e+5],t)}},function(e,t){const n=t[e+3],s=t[e+4];return{type:"ClassExpression",start:t[e],end:t[e+1],decorators:Ra(t[e+2],t),id:0===n?null:Ca(n,t),superClass:0===s?null:Ca(s,t),body:Ca(t[e+5],t)}},function(e,t){return{type:"ConditionalExpression",start:t[e],end:t[e+1],test:Ca(t[e+2],t),consequent:Ca(t[e+3],t),alternate:Ca(t[e+4],t)}},function(e,t){const n=t[e+2];return{type:"ContinueStatement",start:t[e],end:t[e+1],label:0===n?null:Ca(n,t)}},function(e,t){return{type:"DebuggerStatement",start:t[e],end:t[e+1]}},function(e,t){return{type:"Decorator",start:t[e],end:t[e+1],expression:Ca(t[e+2],t)}},function(e,t){return{type:"ExpressionStatement",start:t[e],end:t[e+1],directive:t.convertString(t[e+2]),expression:Ca(t[e+3],t)}},function(e,t){return{type:"DoWhileStatement",start:t[e],end:t[e+1],body:Ca(t[e+2],t),test:Ca(t[e+3],t)}},function(e,t){return{type:"EmptyStatement",start:t[e],end:t[e+1]}},function(e,t){const n=t[e+2];return{type:"ExportAllDeclaration",start:t[e],end:t[e+1],exported:0===n?null:Ca(n,t),source:Ca(t[e+3],t),attributes:Ra(t[e+4],t)}},function(e,t){return{type:"ExportDefaultDeclaration",start:t[e],end:t[e+1],declaration:Ca(t[e+2],t)}},function(e,t){const n=t[e+3],s=t[e+5];return{type:"ExportNamedDeclaration",start:t[e],end:t[e+1],specifiers:Ra(t[e+2],t),source:0===n?null:Ca(n,t),attributes:Ra(t[e+4],t),declaration:0===s?null:Ca(s,t)}},function(e,t){const n=Ca(t[e+2],t),s=t[e+3];return{type:"ExportSpecifier",start:t[e],end:t[e+1],local:n,exported:0===s?{...n}:Ca(s,t)}},function(e,t){return{type:"ExpressionStatement",start:t[e],end:t[e+1],expression:Ca(t[e+2],t)}},function(e,t){return{type:"ForInStatement",start:t[e],end:t[e+1],left:Ca(t[e+2],t),right:Ca(t[e+3],t),body:Ca(t[e+4],t)}},function(e,t){const n=t[e+2];return{type:"ForOfStatement",start:t[e],end:t[e+1],await:!(1&~n),left:Ca(t[e+3],t),right:Ca(t[e+4],t),body:Ca(t[e+5],t)}},function(e,t){const n=t[e+2],s=t[e+3],i=t[e+4];return{type:"ForStatement",start:t[e],end:t[e+1],init:0===n?null:Ca(n,t),test:0===s?null:Ca(s,t),update:0===i?null:Ca(i,t),body:Ca(t[e+5],t)}},function(e,t){const n=t[e+2],s=Zn(t[e+3],t),i=t[e+4];return{type:"FunctionDeclaration",start:t[e],end:t[e+1],async:!(1&~n),generator:!(2&~n),...s.length>0?{[Jn]:s}:{},id:0===i?null:Ca(i,t),params:Ra(t[e+5],t),body:Ca(t[e+6],t),expression:!1}},function(e,t){const n=t[e+2],s=Zn(t[e+3],t),i=t[e+4];return{type:"FunctionExpression",start:t[e],end:t[e+1],async:!(1&~n),generator:!(2&~n),...s.length>0?{[Jn]:s}:{},id:0===i?null:Ca(i,t),params:Ra(t[e+5],t),body:Ca(t[e+6],t),expression:!1}},function(e,t){return{type:"Identifier",start:t[e],end:t[e+1],name:t.convertString(t[e+2])}},function(e,t){const n=t[e+4];return{type:"IfStatement",start:t[e],end:t[e+1],test:Ca(t[e+2],t),consequent:Ca(t[e+3],t),alternate:0===n?null:Ca(n,t)}},function(e,t){return{type:"ImportAttribute",start:t[e],end:t[e+1],key:Ca(t[e+2],t),value:Ca(t[e+3],t)}},function(e,t){const n=t[e+5];return{type:"ImportDeclaration",start:t[e],end:t[e+1],specifiers:Ra(t[e+2],t),source:Ca(t[e+3],t),attributes:Ra(t[e+4],t),...0===n?{}:{phase:Xn[n]}}},function(e,t){return{type:"ImportDefaultSpecifier",start:t[e],end:t[e+1],local:Ca(t[e+2],t)}},function(e,t){const n=t[e+3],s=t[e+4];return{type:"ImportExpression",start:t[e],end:t[e+1],source:Ca(t[e+2],t),options:0===n?null:Ca(n,t),...0===s?{}:{phase:Xn[s]}}},function(e,t){return{type:"ImportNamespaceSpecifier",start:t[e],end:t[e+1],local:Ca(t[e+2],t)}},function(e,t){const n=t[e+2],s=Ca(t[e+3],t);return{type:"ImportSpecifier",start:t[e],end:t[e+1],imported:0===n?{...s}:Ca(n,t),local:s}},function(e,t){const n=t[e+3];return{type:"JSXAttribute",start:t[e],end:t[e+1],name:Ca(t[e+2],t),value:0===n?null:Ca(n,t)}},function(e,t){return{type:"JSXClosingElement",start:t[e],end:t[e+1],name:Ca(t[e+2],t)}},function(e,t){return{type:"JSXClosingFragment",start:t[e],end:t[e+1]}},function(e,t){const n=t[e+4];return{type:"JSXElement",start:t[e],end:t[e+1],openingElement:Ca(t[e+2],t),children:Ra(t[e+3],t),closingElement:0===n?null:Ca(n,t)}},function(e,t){return{type:"JSXEmptyExpression",start:t[e],end:t[e+1]}},function(e,t){return{type:"JSXExpressionContainer",start:t[e],end:t[e+1],expression:Ca(t[e+2],t)}},function(e,t){return{type:"JSXFragment",start:t[e],end:t[e+1],openingFragment:Ca(t[e+2],t),children:Ra(t[e+3],t),closingFragment:Ca(t[e+4],t)}},function(e,t){return{type:"JSXIdentifier",start:t[e],end:t[e+1],name:t.convertString(t[e+2])}},function(e,t){return{type:"JSXMemberExpression",start:t[e],end:t[e+1],object:Ca(t[e+2],t),property:Ca(t[e+3],t)}},function(e,t){return{type:"JSXNamespacedName",start:t[e],end:t[e+1],namespace:Ca(t[e+2],t),name:Ca(t[e+3],t)}},function(e,t){const n=t[e+2];return{type:"JSXOpeningElement",start:t[e],end:t[e+1],selfClosing:!(1&~n),name:Ca(t[e+3],t),attributes:Ra(t[e+4],t)}},function(e,t){return{type:"JSXOpeningFragment",start:t[e],end:t[e+1],attributes:[],selfClosing:!1}},function(e,t){return{type:"JSXSpreadAttribute",start:t[e],end:t[e+1],argument:Ca(t[e+2],t)}},function(e,t){return{type:"JSXSpreadChild",start:t[e],end:t[e+1],expression:Ca(t[e+2],t)}},function(e,t){return{type:"JSXText",start:t[e],end:t[e+1],value:t.convertString(t[e+2]),raw:t.convertString(t[e+3])}},function(e,t){return{type:"LabeledStatement",start:t[e],end:t[e+1],label:Ca(t[e+2],t),body:Ca(t[e+3],t)}},function(e,t){const n=t.convertString(t[e+2]);return{type:"Literal",start:t[e],end:t[e+1],bigint:n,raw:t.convertString(t[e+3]),value:BigInt(n)}},function(e,t){const n=!(1&~t[e+2]);return{type:"Literal",start:t[e],end:t[e+1],value:n,raw:n?"true":"false"}},function(e,t){return{type:"Literal",start:t[e],end:t[e+1],raw:"null",value:null}},function(e,t){const n=t[e+2];return{type:"Literal",start:t[e],end:t[e+1],raw:0===n?void 0:t.convertString(n),value:new DataView(t.buffer).getFloat64(e+3<<2,!0)}},function(e,t){const n=t.convertString(t[e+2]),s=t.convertString(t[e+3]);return{type:"Literal",start:t[e],end:t[e+1],raw:`/${s}/${n}`,regex:{flags:n,pattern:s},value:new RegExp(s,n)}},function(e,t){const n=t[e+3];return{type:"Literal",start:t[e],end:t[e+1],value:t.convertString(t[e+2]),raw:0===n?void 0:t.convertString(n)}},function(e,t){return{type:"LogicalExpression",start:t[e],end:t[e+1],operator:Xn[t[e+2]],left:Ca(t[e+3],t),right:Ca(t[e+4],t)}},function(e,t){const n=t[e+2];return{type:"MemberExpression",start:t[e],end:t[e+1],computed:!(1&~n),optional:!(2&~n),object:Ca(t[e+3],t),property:Ca(t[e+4],t)}},function(e,t){return{type:"MetaProperty",start:t[e],end:t[e+1],meta:Ca(t[e+2],t),property:Ca(t[e+3],t)}},function(e,t){const n=t[e+2];return{type:"MethodDefinition",start:t[e],end:t[e+1],static:!(1&~n),computed:!(2&~n),decorators:Ra(t[e+3],t),key:Ca(t[e+4],t),value:Ca(t[e+5],t),kind:Xn[t[e+6]]}},function(e,t){const n=Zn(t[e+2],t);return{type:"NewExpression",start:t[e],end:t[e+1],...n.length>0?{[Jn]:n}:{},callee:Ca(t[e+3],t),arguments:Ra(t[e+4],t)}},function(e,t){return{type:"ObjectExpression",start:t[e],end:t[e+1],properties:Ra(t[e+2],t)}},function(e,t){return{type:"ObjectPattern",start:t[e],end:t[e+1],properties:Ra(t[e+2],t)}},function(e,t){return{type:"PrivateIdentifier",start:t[e],end:t[e+1],name:t.convertString(t[e+2])}},function(e,t){const n=Zn(t[e+3],t);return{type:"Program",start:t[e],end:t[e+1],body:Ra(t[e+2],t),...n.length>0?{[Yn]:n}:{},sourceType:"module"}},function(e,t){const n=t[e+2],s=t[e+3],i=Ca(t[e+4],t);return{type:"Property",start:t[e],end:t[e+1],method:!(1&~n),shorthand:!(2&~n),computed:!(4&~n),key:0===s?{...i}:Ca(s,t),value:i,kind:Xn[t[e+5]]}},function(e,t){const n=t[e+2],s=t[e+5];return{type:"PropertyDefinition",start:t[e],end:t[e+1],static:!(1&~n),computed:!(2&~n),decorators:Ra(t[e+3],t),key:Ca(t[e+4],t),value:0===s?null:Ca(s,t)}},function(e,t){return{type:"RestElement",start:t[e],end:t[e+1],argument:Ca(t[e+2],t)}},function(e,t){const n=t[e+2];return{type:"ReturnStatement",start:t[e],end:t[e+1],argument:0===n?null:Ca(n,t)}},function(e,t){return{type:"SequenceExpression",start:t[e],end:t[e+1],expressions:Ra(t[e+2],t)}},function(e,t){return{type:"SpreadElement",start:t[e],end:t[e+1],argument:Ca(t[e+2],t)}},function(e,t){return{type:"StaticBlock",start:t[e],end:t[e+1],body:Ra(t[e+2],t)}},function(e,t){return{type:"Super",start:t[e],end:t[e+1]}},function(e,t){const n=t[e+2];return{type:"SwitchCase",start:t[e],end:t[e+1],test:0===n?null:Ca(n,t),consequent:Ra(t[e+3],t)}},function(e,t){return{type:"SwitchStatement",start:t[e],end:t[e+1],discriminant:Ca(t[e+2],t),cases:Ra(t[e+3],t)}},function(e,t){return{type:"TaggedTemplateExpression",start:t[e],end:t[e+1],tag:Ca(t[e+2],t),quasi:Ca(t[e+3],t)}},function(e,t){const n=t[e+2],s=t[e+3],i=0===s?null:t.convertString(s),r=t.convertString(t[e+4]);return{type:"TemplateElement",start:t[e],end:t[e+1],tail:!(1&~n),value:{cooked:i,raw:r}}},function(e,t){return{type:"TemplateLiteral",start:t[e],end:t[e+1],quasis:Ra(t[e+2],t),expressions:Ra(t[e+3],t)}},function(e,t){return{type:"ThisExpression",start:t[e],end:t[e+1]}},function(e,t){return{type:"ThrowStatement",start:t[e],end:t[e+1],argument:Ca(t[e+2],t)}},function(e,t){const n=t[e+3],s=t[e+4];return{type:"TryStatement",start:t[e],end:t[e+1],block:Ca(t[e+2],t),handler:0===n?null:Ca(n,t),finalizer:0===s?null:Ca(s,t)}},function(e,t){return{type:"UnaryExpression",start:t[e],end:t[e+1],operator:Xn[t[e+2]],argument:Ca(t[e+3],t),prefix:!0}},function(e,t){const n=t[e+2];return{type:"UpdateExpression",start:t[e],end:t[e+1],prefix:!(1&~n),operator:Xn[t[e+3]],argument:Ca(t[e+4],t)}},function(e,t){return{type:"VariableDeclaration",start:t[e],end:t[e+1],kind:Xn[t[e+2]],declarations:Ra(t[e+3],t)}},function(e,t){const n=t[e+3];return{type:"VariableDeclarator",start:t[e],end:t[e+1],id:Ca(t[e+2],t),init:0===n?null:Ca(n,t)}},function(e,t){return{type:"WhileStatement",start:t[e],end:t[e+1],test:Ca(t[e+2],t),body:Ca(t[e+3],t)}},function(e,t){const n=t[e+2],s=t[e+3];return{type:"YieldExpression",start:t[e],end:t[e+1],delegate:!(1&~n),argument:0===s?null:Ca(s,t)}}];function Ca(e,t){const n=t[e],s=ka[n];if(!s)throw console.trace(),new Error(`Unknown node type: ${n}`);return s(e+1,t)}function Ra(e,t){if(0===e)return le;const n=t[e++],s=new Array(n);for(let i=0;i{const s=t[n++],i=n<<2;return e.toString("utf8",i,i+s)};else{const s=new TextDecoder;n=n=>{const i=t[n++],r=n<<2;return s.decode(e.subarray(r,r+i))}}return Object.assign(t,{convertString:n})}class Oa extends ss{addExportedVariables(e,t){for(const n of this.elements)n?.addExportedVariables(e,t)}declare(e,t,n){const s=[],i=Ma(t);for(const t of this.elements)null!==t&&s.push(...t.declare(e,i,n));return s}deoptimizeAssignment(e,t){const n=Ma(e);for(const e of this.elements)e?.deoptimizeAssignment(n,t)}deoptimizePath(){for(const e of this.elements)e?.deoptimizePath(Pe)}hasEffectsWhenDestructuring(e,t,n){const s=Ma(t);for(const t of this.elements)if(t?.hasEffectsWhenDestructuring(e,s,n))return!0;return!1}hasEffectsOnInteractionAtPath(e,t,n){for(const e of this.elements)if(e?.hasEffectsOnInteractionAtPath(Pe,t,n))return!0;return!1}includeDestructuredIfNecessary(e,t,n){let s=!1;const i=Ma(t);for(const t of[...this.elements].reverse())t&&(s&&!t.included&&t.includeNode(e),s=t.includeDestructuredIfNecessary(e,i,n)||s);return!this.included&&s&&this.includeNode(e),this.included}render(e,t){let n=this.start+1;for(const s of this.elements)if(s){if(!s.included){e.remove(n,this.end-1);break}s.render(e,t),n=s.end}}markDeclarationReached(){for(const e of this.elements)e?.markDeclarationReached()}}Oa.prototype.includeNode=is;const Ma=e=>e.at(-1)===pe?e:[...e,me];class _a extends rr{constructor(){super(...arguments),this.objectEntity=null}get expression(){return Fe(this.flags,8388608)}set expression(e){this.flags=je(this.flags,8388608,e)}createScope(e){this.scope=new Qi(e,!1)}hasEffects(){return!1}hasEffectsOnInteractionAtPath(e,t,n){if(this.annotationNoSideEffects&&0===e.length&&2===t.type)return!1;if(super.hasEffectsOnInteractionAtPath(e,t,n))return!0;if(2===t.type){const{ignore:e,brokenFlow:t}=n;if(n.ignore={breaks:!1,continues:!1,labels:new Set,returnYield:!0,this:!1},this.body.hasEffects(n))return!0;n.ignore=e,n.brokenFlow=t}return!1}onlyFunctionCallUsed(){return this.parent.type===nt&&this.parent.callee===this||super.onlyFunctionCallUsed()}include(e,t){super.include(e,t);for(const n of this.params)n instanceof ki||n.include(e,t)}includeNode(e){this.included=!0,this.body.includePath(Ie,e);for(const t of this.params)t instanceof ki||t.includePath(Ie,e)}getObjectEntity(){return null!==this.objectEntity?this.objectEntity:this.objectEntity=new Ls([],zs)}}class La extends ss{addExportedVariables(e,t){for(const n of this.properties)n.type===at?n.value.addExportedVariables(e,t):n.argument.addExportedVariables(e,t)}declare(e,t,n){const s=[];for(const i of this.properties)s.push(...i.declare(e,t,n));return s}deoptimizeAssignment(e,t){for(const n of this.properties)n.deoptimizeAssignment(e,t)}deoptimizePath(e){if(0===e.length)for(const t of this.properties)t.deoptimizePath(e)}hasEffectsOnInteractionAtPath(e,t,n){for(const e of this.properties)if(e.hasEffectsOnInteractionAtPath(Pe,t,n))return!0;return!1}hasEffectsWhenDestructuring(e,t,n){for(const s of this.properties)if(s.hasEffectsWhenDestructuring(e,t,n))return!0;return!1}includeDestructuredIfNecessary(e,t,n){if(!this.properties.length)return this.included;const s=this.properties.at(-1);let i=s.includeDestructuredIfNecessary(e,t,n);const r="RestElement"===s.type;for(const s of this.properties.slice(0,-1))r&&i&&!s.included&&s.includeNode(e),i=s.includeDestructuredIfNecessary(e,t,n)||i;return!this.included&&i&&this.includeNode(e),this.included}markDeclarationReached(){for(const e of this.properties)e.markDeclarationReached()}render(e,t){if(this.properties.length>0){const n=te(this.properties,e,this.start+1,this.end-1);let s=null;for(const{node:i,separator:r,start:o,end:a}of n)i.included?(s=r,i.render(e,t)):q(i,e,o,a);s&&e.remove(s,this.end-1)}}}La.prototype.includeNode=rs,La.prototype.applyDeoptimizations=os;class Ta extends ss{constructor(){super(...arguments),this.isConstReassignment=!1}hasEffects(e){const{deoptimized:t,isConstReassignment:n,left:s,operator:i,right:r}=this;return t||this.applyDeoptimizations(),n||r.hasEffects(e)||s.hasEffectsAsAssignmentTarget(e,"="!==i)||this.left.hasEffectsWhenDestructuring?.(e,Pe,r)}hasEffectsOnInteractionAtPath(e,t,n){return 1===t.type&&this.left.included||this.right.hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){const{deoptimized:n,isConstReassignment:s,left:i,right:r,operator:o}=this;n||this.applyDeoptimizations(),this.included||this.includeNode(e);const a=Ve();(t||s||"="!==o||i.included||i.hasEffectsAsAssignmentTarget(a,!1)||i.hasEffectsWhenDestructuring?.(a,Pe,r))&&i.includeAsAssignmentTarget(e,t,"="!==o),r.include(e,t)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.right.includePath(Ie,e)}initialise(){if(super.initialise(),this.left instanceof ki){const e=this.scope.variables.get(this.left.name);"const"===e?.kind&&(this.isConstReassignment=!0,this.scope.context.log(ft,{code:"CONST_REASSIGN",message:"Cannot reassign a variable declared with `const`"},this.left.start))}this.left.setAssignedValue(this.right)}render(e,t,{preventASI:n,renderedParentType:s,renderedSurroundingElement:i}=oe){const{left:r,right:o,start:a,end:l,parent:c}=this;if(r.included)r.render(e,t),o.render(e,t);else{const l=Y(e.original,X(e.original,"=",r.end)+1);e.remove(a,l),n&&ne(e,l,o.start),o.render(e,t,{renderedParentType:s||c.type,renderedSurroundingElement:i||c.type})}if("system"===t.format)if(r instanceof ki){const n=r.variable,s=t.exportNamesByVariable.get(n);if(s)return void(1===s.length?ie(n,a,l,e,t):re(n,a,l,c.type!==it,e,t))}else{const n=[];if(r.addExportedVariables(n,t.exportNamesByVariable),n.length>0)return void function(e,t,n,s,i,r){const{_:o,getDirectReturnIifeLeft:a}=r.snippets;i.prependRight(t,a(["v"],`${se(e,r)},${o}v`,{needsArrowReturnParens:!0,needsWrappedFunction:s})),i.appendLeft(n,")")}(n,a,l,i===it,e,t)}r.included&&r instanceof La&&(i===it||i===tt)&&(e.appendRight(a,"("),e.prependLeft(l,")"))}applyDeoptimizations(){this.deoptimized=!0,this.left.deoptimizeAssignment(Pe,this.right),this.scope.context.requestTreeshakingPass()}}class Ba extends ss{addExportedVariables(e,t){this.left.addExportedVariables(e,t)}declare(e,t,n){return this.left.declare(e,t,n)}deoptimizeAssignment(e,t){this.left.deoptimizeAssignment(e,t)}deoptimizePath(e){0===e.length&&this.left.deoptimizePath(e)}hasEffectsOnInteractionAtPath(e,t,n){return e.length>0||this.left.hasEffectsOnInteractionAtPath(Pe,t,n)}hasEffectsWhenDestructuring(e,t,n){return this.left.hasEffectsWhenDestructuring(e,t,n)}includeDestructuredIfNecessary(e,t,n){let s=this.left.includeDestructuredIfNecessary(e,t,n)||this.included;return(s||=this.right.shouldBeIncluded(e))&&(this.right.include(e,!1),this.left.included||(this.left.includeNode(e),this.left.includeDestructuredIfNecessary(e,t,n))),!this.included&&s&&this.includeNode(e),this.included}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.right.includePath(Ie,e)}markDeclarationReached(){this.left.markDeclarationReached()}render(e,t,{isShorthandProperty:n}=oe){this.left.render(e,t,{isShorthandProperty:n}),this.right.render(e,t)}applyDeoptimizations(){this.deoptimized=!0,this.left.deoptimizePath(Pe),this.right.deoptimizePath(Ie),this.scope.context.requestTreeshakingPass()}}class za extends ss{deoptimizePath(e){this.argument.deoptimizePath(e)}hasEffects(){return this.deoptimized||this.applyDeoptimizations(),!0}initialise(){super.initialise();let e=this.parent;do{if(e instanceof or||e instanceof _a)return}while(e=e.parent);this.scope.context.usesTopLevelAwait=!0}include(e,t){this.included||this.includeNode(e),this.argument.include(e,t)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.argument.includePath(Va,e)}includePath(e,t){this.deoptimized||this.applyDeoptimizations(),this.included||this.includeNode(t),this.argument.includePath(e,t)}}const Va=["then"];function Fa(e){return void 0===e?"void 0":"boolean"==typeof e?String(e):"string"==typeof e?JSON.stringify(e):"number"==typeof e?function(e){if(Object.is(-0,e))return"-0";const t=e.toExponential(),[n,s]=t.split("e"),i=n.split(".")[1]?.length||0,r=`${n.replace(".","")}e${parseInt(s)-i}`,o=String(e).replace("+","");return r.lengthe!=t,"!==":(e,t)=>e!==t,"%":(e,t)=>e%t,"&":(e,t)=>e&t,"*":(e,t)=>e*t,"**":(e,t)=>e**t,"+":(e,t)=>e+t,"-":(e,t)=>e-t,"/":(e,t)=>e/t,"<":(e,t)=>ee<e<=t,"==":(e,t)=>e==t,"===":(e,t)=>e===t,">":(e,t)=>e>t,">=":(e,t)=>e>=t,">>":(e,t)=>e>>t,">>>":(e,t)=>e>>>t,"^":(e,t)=>e^t,"|":(e,t)=>e|t},Ua=Symbol("Unassigned");class Ga extends ss{constructor(){super(...arguments),this.renderedLiteralValue=Ua}deoptimizeCache(){this.renderedLiteralValue=Ue}getLiteralValueAtPath(e,t,n){if(e.length>0)return Ue;const s=this.left.getLiteralValueAtPath(Pe,t,n);if("symbol"==typeof s)return Ue;if("in"===this.operator&&this.right.variable instanceof uo){const[e]=this.right.variable.context.traceExport(String(s));return e instanceof _n||e instanceof po?Ue:!!e}const i=this.right.getLiteralValueAtPath(Pe,t,n);if("symbol"==typeof i)return Ue;const r=ja[this.operator];return r?r(s,i):Ue}getRenderedLiteralValue(){return"in"===this.operator&&this.right.variable instanceof uo?this.renderedLiteralValue!==Ua?this.renderedLiteralValue:this.renderedLiteralValue=Fa(this.getLiteralValueAtPath(Pe,De,this)):Ue}hasEffects(e){return"+"===this.operator&&this.parent instanceof tr&&""===this.left.getLiteralValueAtPath(Pe,De,this)||super.hasEffects(e)}hasEffectsOnInteractionAtPath(e,{type:t}){return 0!==t||e.length>1}include(e,t,n){this.included||this.includeNode(e),"symbol"==typeof this.getRenderedLiteralValue()&&(this.left.include(e,t,n),this.right.include(e,t,n),"instanceof"===this.operator&&this.right.includePath(ke,e))}includeNode(e){this.included=!0,"in"===this.operator&&"symbol"==typeof this.getRenderedLiteralValue()&&this.right.includePath(Ie,e)}removeAnnotations(e){this.left.removeAnnotations(e)}render(e,t,{renderedSurroundingElement:n}=oe){const s=this.getRenderedLiteralValue();"symbol"!=typeof s?e.overwrite(this.start,this.end,s):(this.left.render(e,t,{renderedSurroundingElement:n}),this.right.render(e,t))}}Ga.prototype.applyDeoptimizations=os;class Ha extends ss{hasEffects(e){if(this.label){if(!e.ignore.labels.has(this.label.name))return!0;e.includedLabels.add(this.label.name)}else{if(!e.ignore.breaks)return!0;e.hasBreak=!0}return e.brokenFlow=!0,!1}include(e,t){this.included=!0,this.label?(this.label.include(e,t),e.includedLabels.add(this.label.name)):e.hasBreak=!0,e.brokenFlow=!0}}function Wa(e,t,n){if(n.arguments.length>0)if(n.arguments[n.arguments.length-1].included)for(const s of n.arguments)s.render(e,t);else{let s=n.arguments.length-2;for(;s>=0&&!n.arguments[s].included;)s--;if(s>=0){for(let i=0;i<=s;i++)n.arguments[i].render(e,t);e.remove(X(e.original,",",n.arguments[s].end),n.end-1)}else e.remove(X(e.original,"(",n.callee.end)+1,n.end-1)}}Ha.prototype.includeNode=rs,Ha.prototype.applyDeoptimizations=os;class qa extends ss{constructor(){super(...arguments),this.returnExpression=null,this.deoptimizableDependentExpressions=[],this.expressionsToBeDeoptimized=new Set}deoptimizeArgumentsOnInteractionAtPath(e,t,n){const{args:s}=e,[i,r]=this.getReturnExpression(n);if(r)return;const o=s.filter(e=>!!e&&e!==qe);if(0!==o.length)if(i===qe)for(const e of o)e.deoptimizePath(Ie);else n.withTrackedEntityAtPath(t,i,()=>{for(const e of o)this.expressionsToBeDeoptimized.add(e);i.deoptimizeArgumentsOnInteractionAtPath(e,t,n)},null)}deoptimizeCache(){if(this.returnExpression?.[0]!==qe){this.returnExpression=Ke;const{deoptimizableDependentExpressions:e,expressionsToBeDeoptimized:t}=this;this.expressionsToBeDeoptimized=ce,this.deoptimizableDependentExpressions=le;for(const t of e)t.deoptimizeCache();for(const e of t)e.deoptimizePath(Ie)}}deoptimizePath(e){if(0===e.length||this.scope.context.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(e,this))return;const[t]=this.getReturnExpression();t!==qe&&t.deoptimizePath(e)}getLiteralValueAtPath(e,t,n){const[s]=this.getReturnExpression(t);return s===qe?Ue:t.withTrackedEntityAtPath(e,s,()=>(this.deoptimizableDependentExpressions.push(n),s.getLiteralValueAtPath(e,t,n)),Ue)}getReturnExpressionWhenCalledAtPath(e,t,n,s){const i=this.getReturnExpression(n);return i[0]===qe?i:n.withTrackedEntityAtPath(e,i,()=>{this.deoptimizableDependentExpressions.push(s);const[r,o]=i[0].getReturnExpressionWhenCalledAtPath(e,t,n,s);return[r,o||i[1]]},Ke)}hasEffectsOnInteractionAtPath(e,t,n){const{type:s}=t;if(2===s){const{args:s,withNew:i}=t;if((i?n.instantiated:n.called).trackEntityAtPathAndGetIfTracked(e,s,this))return!1}else if((1===s?n.assigned:n.accessed).trackEntityAtPathAndGetIfTracked(e,this))return!1;const[i,r]=this.getReturnExpression();return(1===s||!r)&&i.hasEffectsOnInteractionAtPath(e,t,n)}}class Ka extends qa{get hasCheckedForWarnings(){return Fe(this.flags,134217728)}set hasCheckedForWarnings(e){this.flags=je(this.flags,134217728,e)}get optional(){return Fe(this.flags,128)}set optional(e){this.flags=je(this.flags,128,e)}bind(){super.bind(),this.interaction={args:[this.callee instanceof Hr&&!this.callee.variable?this.callee.object:null,...this.arguments],type:2,withNew:!1}}getLiteralValueAtPathAsChainElement(e,t,n){return jr(this,this.callee,e,t,n)}hasEffects(e){this.deoptimized||this.applyDeoptimizations();for(const t of this.arguments)if(t.hasEffects(e))return!0;return!this.annotationPure&&(this.callee.hasEffects(e)||this.callee.hasEffectsOnInteractionAtPath(Pe,this.interaction,e))}hasEffectsAsChainElement(e){const t="hasEffectsAsChainElement"in this.callee?this.callee.hasEffectsAsChainElement(e):this.callee.hasEffects(e);if(t===ns)return ns;if(this.optional&&null==this.callee.getLiteralValueAtPath(Pe,De,this))return!this.annotationPure&&t||ns;this.deoptimized||this.applyDeoptimizations();for(const t of this.arguments)if(t.hasEffects(e))return!0;return!this.annotationPure&&(t||this.callee.hasEffectsOnInteractionAtPath(Pe,this.interaction,e))}include(e,t){this.included||this.includeNode(e),t?(super.include(e,!0),t===ts&&this.callee instanceof ki&&this.callee.variable&&this.callee.variable.markCalledFromTryStatement()):(this.callee.include(e,!1),this.callee.includeCallArguments(this.interaction,e))}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations()}initialise(){super.initialise(),this.annotations&&this.scope.context.options.treeshake.annotations&&(this.annotationPure=this.annotations.some(e=>"pure"===e.type))}render(e,t,{renderedSurroundingElement:n}=oe){if(this.callee.render(e,t,{isCalleeOfRenderedParent:!0,renderedSurroundingElement:n}),Wa(e,t,this),this.callee instanceof ki&&!this.hasCheckedForWarnings){this.hasCheckedForWarnings=!0;this.scope.findVariable(this.callee.name).isNamespace&&this.scope.context.log(ft,tn(this.callee.name),this.start),"eval"===this.callee.name&&this.scope.context.log(ft,{code:"EVAL",id:s=this.scope.context.module.id,message:`Use of eval in "${xt(s)}" is strongly discouraged as it poses security risks and may cause issues with minification.`,url:vt("troubleshooting/#avoiding-eval")},this.start)}var s}applyDeoptimizations(){this.deoptimized=!0,this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction,Pe,De),this.scope.context.requestTreeshakingPass()}getReturnExpression(e=De){return null===this.returnExpression?(this.returnExpression=Ke,this.returnExpression=this.callee.getReturnExpressionWhenCalledAtPath(Pe,this.interaction,e,this)):this.returnExpression}}class Xa extends ss{createScope(e){this.scope=new Zi(e,!0)}parseNode(e){const{body:t,param:n,type:s}=e;return this.type=s,n&&(this.param=new(this.scope.context.getNodeConstructor(n.type))(this,this.scope).parseNode(n),this.param.declare("parameter",Pe,qe)),this.body=new nr(this,this.scope.bodyScope).parseNode(t),super.parseNode(e)}}Xa.prototype.preventChildBlockScope=!0,Xa.prototype.includeNode=is;class Ja extends ss{deoptimizeCache(){}getLiteralValueAtPath(e,t,n){const s=this.expression.getLiteralValueAtPathAsChainElement(e,t,n);return s===ns?void 0:s}hasEffects(e){return!0===this.expression.hasEffectsAsChainElement(e)}includePath(e,t){this.included=!0,this.expression.includePath(e,t)}removeAnnotations(e){this.expression.removeAnnotations(e)}}Ja.prototype.includeNode=rs,Ja.prototype.applyDeoptimizations=os;class Ya extends Oi{constructor(e,t){const{context:n}=e;super(e,n),this.variables.set("this",this.thisVariable=new vi("this",null,t,Pe,n,"other")),this.instanceScope=new Oi(this,n),this.instanceScope.variables.set("this",new Xi(n))}findLexicalBoundary(){return this}}class Za extends ss{createScope(e){this.scope=new Ya(e,this.parent)}include(e,t){this.included=!0,this.scope.context.includeVariableInModule(this.scope.thisVariable,Ie,e);for(const n of this.body)n.include(e,t)}parseNode(e){const t=this.body=new Array(e.body.length);let n=0;for(const s of e.body)t[n++]=new(this.scope.context.getNodeConstructor(s.type))(this,s.static?this.scope:this.scope.instanceScope).parseNode(s);return super.parseNode(e)}}Za.prototype.includeNode=rs,Za.prototype.applyDeoptimizations=os;class Qa extends Vi{render(e,t,{renderedSurroundingElement:n}=oe){super.render(e,t),n===it&&(e.appendRight(this.start,"("),e.prependLeft(this.end,")"))}}function el(e){return"symbol"==typeof e?e!==He&&(e===Ge||Ue):!!e}class tl extends We{constructor(e){super(),this.expressions=e}deoptimizePath(e){for(const t of this.expressions)t.deoptimizePath(e)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return[new tl(this.expressions.map(i=>i.getReturnExpressionWhenCalledAtPath(e,t,n,s)[0])),!1]}hasEffectsOnInteractionAtPath(e,t,n){for(const s of this.expressions)if(s.hasEffectsOnInteractionAtPath(e,t,n))return!0;return!1}}class nl extends ss{constructor(){super(...arguments),this.expressionsToBeDeoptimized=[],this.usedBranch=null}get isBranchResolutionAnalysed(){return Fe(this.flags,65536)}set isBranchResolutionAnalysed(e){this.flags=je(this.flags,65536,e)}get hasDeoptimizedCache(){return Fe(this.flags,33554432)}set hasDeoptimizedCache(e){this.flags=je(this.flags,33554432,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.consequent.deoptimizeArgumentsOnInteractionAtPath(e,t,n),this.alternate.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeCache(){if(!this.hasDeoptimizedCache&&(this.hasDeoptimizedCache=!0,null!==this.usedBranch)){const e=this.usedBranch===this.consequent?this.alternate:this.consequent;this.usedBranch=null,e.deoptimizePath(Ie),this.included&&e.includePath(Ie,ze());const{expressionsToBeDeoptimized:t}=this;this.expressionsToBeDeoptimized=le;for(const e of t)e.deoptimizeCache()}}deoptimizePath(e){const t=this.getUsedBranch();t?t.deoptimizePath(e):(this.consequent.deoptimizePath(e),this.alternate.deoptimizePath(e))}getLiteralValueAtPath(e,t,n){const s=this.getUsedBranch();if(!s){if(this.hasDeoptimizedCache)return Ue;const s=this.consequent.getLiteralValueAtPath(e,t,n),i=el(s);if(i===Ue)return Ue;const r=this.alternate.getLiteralValueAtPath(e,t,n);return i!==el(r)?Ue:(this.expressionsToBeDeoptimized.push(n),s!==r?i?Ge:He:s)}return this.expressionsToBeDeoptimized.push(n),s.getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){const i=this.getUsedBranch();return i?(this.expressionsToBeDeoptimized.push(s),i.getReturnExpressionWhenCalledAtPath(e,t,n,s)):[new tl([this.consequent.getReturnExpressionWhenCalledAtPath(e,t,n,s)[0],this.alternate.getReturnExpressionWhenCalledAtPath(e,t,n,s)[0]]),!1]}hasEffects(e){if(this.test.hasEffects(e))return!0;const t=this.getUsedBranch();return t?t.hasEffects(e):this.consequent.hasEffects(e)||this.alternate.hasEffects(e)}hasEffectsOnInteractionAtPath(e,t,n){const s=this.getUsedBranch();return s?s.hasEffectsOnInteractionAtPath(e,t,n):this.consequent.hasEffectsOnInteractionAtPath(e,t,n)||this.alternate.hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included=!0;const n=this.getUsedBranch();null===n||t||this.test.shouldBeIncluded(e)?(this.test.include(e,t),this.consequent.include(e,t),this.alternate.include(e,t)):n.include(e,t)}includePath(e,t){this.included=!0;const n=this.getUsedBranch();null===n||this.test.shouldBeIncluded(t)?(this.consequent.includePath(e,t),this.alternate.includePath(e,t)):n.includePath(e,t)}includeCallArguments(e,t){const n=this.getUsedBranch();n?n.includeCallArguments(e,t):(this.consequent.includeCallArguments(e,t),this.alternate.includeCallArguments(e,t))}removeAnnotations(e){this.test.removeAnnotations(e)}render(e,t,{isCalleeOfRenderedParent:n,preventASI:s,renderedParentType:i,renderedSurroundingElement:r}=oe){if(this.test.included)this.test.render(e,t,{renderedSurroundingElement:r}),this.consequent.render(e,t),this.alternate.render(e,t);else{const o=this.getUsedBranch(),a=X(e.original,":",this.consequent.end),l=Y(e.original,(this.consequent.included?X(e.original,"?",this.test.end):a)+1);s&&ne(e,l,o.start),e.remove(this.start,l),this.consequent.included&&e.remove(a,this.end),this.test.removeAnnotations(e),o.render(e,t,{isCalleeOfRenderedParent:n,preventASI:!0,renderedParentType:i||this.parent.type,renderedSurroundingElement:r||this.parent.type})}}getUsedBranch(){if(this.isBranchResolutionAnalysed)return this.usedBranch;this.isBranchResolutionAnalysed=!0;const e=el(this.test.getLiteralValueAtPath(Pe,De,this));return"symbol"==typeof e?null:this.usedBranch=e?this.consequent:this.alternate}}nl.prototype.includeNode=rs,nl.prototype.applyDeoptimizations=os;class sl extends ss{hasEffects(e){if(this.label){if(!e.ignore.labels.has(this.label.name))return!0;e.includedLabels.add(this.label.name)}else{if(!e.ignore.continues)return!0;e.hasContinue=!0}return e.brokenFlow=!0,!1}include(e,t){this.included=!0,this.label?(this.label.include(e,t),e.includedLabels.add(this.label.name)):e.hasContinue=!0,e.brokenFlow=!0}}sl.prototype.includeNode=rs,sl.prototype.applyDeoptimizations=os;class il extends ss{hasEffects(){return!0}}il.prototype.includeNode=is;class rl extends ss{hasEffects(e){return this.expression.hasEffects(e)||this.expression.hasEffectsOnInteractionAtPath(Pe,et,e)}}function ol(e,t){const{brokenFlow:n,hasBreak:s,hasContinue:i,ignore:r}=e,{breaks:o,continues:a}=r;return r.breaks=!0,r.continues=!0,e.hasBreak=!1,e.hasContinue=!1,!!t.hasEffects(e)||(r.breaks=o,r.continues=a,e.hasBreak=s,e.hasContinue=i,e.brokenFlow=n,!1)}function al(e,t,n){const{brokenFlow:s,hasBreak:i,hasContinue:r}=e;e.hasBreak=!1,e.hasContinue=!1,t.include(e,n,{asSingleStatement:!0}),e.hasBreak=i,e.hasContinue=r,e.brokenFlow=s}rl.prototype.includeNode=is;class ll extends ss{hasEffects(e){return!!this.test.hasEffects(e)||ol(e,this.body)}include(e,t){this.included=!0,this.test.include(e,t),al(e,this.body,t)}}ll.prototype.includeNode=rs,ll.prototype.applyDeoptimizations=os;class cl extends ss{hasEffects(){return!1}}cl.prototype.includeNode=is;class ul extends ss{hasEffects(){return!1}initialise(){super.initialise(),this.scope.context.addExport(this)}render(e,t,n){e.remove(n.start,n.end)}}ul.prototype.needsBoundaries=!0,ul.prototype.includeNode=rs,ul.prototype.applyDeoptimizations=os;class dl extends ss{bind(){this.declaration?.bind()}hasEffects(e){return!!this.declaration?.hasEffects(e)}initialise(){super.initialise(),this.scope.context.addExport(this)}removeAnnotations(e){this.declaration?.removeAnnotations(e)}render(e,t,n){const{start:s,end:i}=n;if(null===this.declaration)e.remove(s,i);else{let n=this.declaration.start;if(this.declaration instanceof Fi){const e=this.declaration.decorators;for(const t of e)n=Math.min(n,t.start);n<=this.start&&(n=this.declaration.start)}e.remove(this.start,n),this.declaration.render(e,t,{end:i,start:s})}}}dl.prototype.needsBoundaries=!0,dl.prototype.includeNode=rs,dl.prototype.applyDeoptimizations=os;class hl extends ss{}hl.prototype.includeNode=rs,hl.prototype.applyDeoptimizations=os;class pl extends ss{createScope(e){this.scope=new Ti(e)}hasEffects(e){const{body:t,deoptimized:n,left:s,right:i}=this;return n||this.applyDeoptimizations(),!(!s.hasEffectsAsAssignmentTarget(e,!1)&&!i.hasEffects(e))||ol(e,t)}include(e,t){const{body:n,deoptimized:s,left:i,right:r}=this;s||this.applyDeoptimizations(),this.included||this.includeNode(e),i.includeAsAssignmentTarget(e,t||!0,!1),r.include(e,t),al(e,n,t)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.right.includePath(Ie,e)}initialise(){super.initialise(),this.left.setAssignedValue(qe)}render(e,t){this.left.render(e,t,K),this.right.render(e,t,K),110===e.original.charCodeAt(this.right.start-1)&&e.prependLeft(this.right.start," "),this.body.render(e,t)}applyDeoptimizations(){this.deoptimized=!0,this.left.deoptimizePath(Pe),this.scope.context.requestTreeshakingPass()}}class fl extends ss{get await(){return Fe(this.flags,131072)}set await(e){this.flags=je(this.flags,131072,e)}createScope(e){this.scope=new Ti(e)}hasEffects(){return this.deoptimized||this.applyDeoptimizations(),!0}include(e,t){const{body:n,deoptimized:s,left:i,right:r}=this;s||this.applyDeoptimizations(),this.included||this.includeNode(e),i.includeAsAssignmentTarget(e,t||!0,!1),r.include(e,t),al(e,n,t)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.right.includePath(Ie,e)}initialise(){super.initialise(),this.left.setAssignedValue(qe)}render(e,t){this.left.render(e,t,K),this.right.render(e,t,K),102===e.original.charCodeAt(this.right.start-1)&&e.prependLeft(this.right.start," "),this.body.render(e,t)}applyDeoptimizations(){this.deoptimized=!0,this.left.deoptimizePath(Pe),this.right.deoptimizePath(Ie),this.scope.context.requestTreeshakingPass()}}class ml extends ss{createScope(e){this.scope=new Ti(e)}hasEffects(e){return!!(this.init?.hasEffects(e)||this.test?.hasEffects(e)||this.update?.hasEffects(e))||ol(e,this.body)}include(e,t){this.included=!0,this.init?.include(e,t,{asSingleStatement:!0}),this.test?.include(e,t),this.update?.include(e,t),al(e,this.body,t)}render(e,t){this.init?.render(e,t,K),this.test?.render(e,t,K),this.update?.render(e,t,K),this.body.render(e,t)}}ml.prototype.includeNode=rs,ml.prototype.applyDeoptimizations=os;class gl extends or{createScope(e){super.createScope(this.idScope=new Oi(e,e.context))}parseNode(e){return null!==e.id&&(this.id=new ki(this,this.idScope).parseNode(e.id)),super.parseNode(e)}onlyFunctionCallUsed(){return this.parent.type===nt&&this.parent.callee===this&&(null===this.id||this.id.variable.getOnlyFunctionCallUsed())||super.onlyFunctionCallUsed()}render(e,t,{renderedSurroundingElement:n}=oe){super.render(e,t),n===it&&(e.appendRight(this.start,"("),e.prependLeft(this.end,")"))}}class yl extends Ti{constructor(){super(...arguments),this.hoistedDeclarations=[]}addDeclaration(e,t,n,s,i){return this.hoistedDeclarations.push(e),super.addDeclaration(e,t,n,s,i)}}const bl=Symbol("unset");class El extends ss{constructor(){super(...arguments),this.testValue=bl}deoptimizeCache(){this.testValue=Ue}hasEffects(e){if(this.test.hasEffects(e))return!0;const t=this.getTestValue();if("symbol"==typeof t){const{brokenFlow:t}=e;if(this.consequent.hasEffects(e))return!0;const n=e.brokenFlow;return e.brokenFlow=t,null===this.alternate?!1:!!this.alternate.hasEffects(e)||(e.brokenFlow=e.brokenFlow&&n,!1)}return t?this.consequent.hasEffects(e):!!this.alternate?.hasEffects(e)}include(e,t){if(this.included=!0,t)this.includeRecursively(t,e);else{const t=this.getTestValue();"symbol"==typeof t?this.includeUnknownTest(e):this.includeKnownTest(e,t)}}parseNode(e){return this.consequent=new(this.scope.context.getNodeConstructor(e.consequent.type))(this,this.consequentScope=new yl(this.scope)).parseNode(e.consequent),e.alternate&&(this.alternate=new(this.scope.context.getNodeConstructor(e.alternate.type))(this,this.alternateScope=new yl(this.scope)).parseNode(e.alternate)),super.parseNode(e)}render(e,t){const{snippets:{getPropertyAccess:n}}=t,s=this.getTestValue(),i=[],r=this.test.included,o=!this.scope.context.options.treeshake;r?this.test.render(e,t):e.remove(this.start,this.consequent.start),this.consequent.included&&(o||"symbol"==typeof s||s)?this.consequent.render(e,t):(e.overwrite(this.consequent.start,this.consequent.end,r?";":""),i.push(...this.consequentScope.hoistedDeclarations)),this.alternate&&(!this.alternate.included||!o&&"symbol"!=typeof s&&s?(r&&this.shouldKeepAlternateBranch()?e.overwrite(this.alternate.start,this.end,";"):e.remove(this.consequent.end,this.end),i.push(...this.alternateScope.hoistedDeclarations)):(r?101===e.original.charCodeAt(this.alternate.start-1)&&e.prependLeft(this.alternate.start," "):e.remove(this.consequent.end,this.alternate.start),this.alternate.render(e,t))),this.renderHoistedDeclarations(i,e,n)}getTestValue(){return this.testValue===bl?this.testValue=el(this.test.getLiteralValueAtPath(Pe,De,this)):this.testValue}includeKnownTest(e,t){this.test.shouldBeIncluded(e)&&this.test.include(e,!1),t&&this.consequent.shouldBeIncluded(e)&&this.consequent.include(e,!1,{asSingleStatement:!0}),!t&&this.alternate?.shouldBeIncluded(e)&&this.alternate.include(e,!1,{asSingleStatement:!0})}includeRecursively(e,t){this.test.include(t,e),this.consequent.include(t,e),this.alternate?.include(t,e)}includeUnknownTest(e){this.test.include(e,!1);const{brokenFlow:t}=e;let n=!1;this.consequent.shouldBeIncluded(e)&&(this.consequent.include(e,!1,{asSingleStatement:!0}),n=e.brokenFlow,e.brokenFlow=t),this.alternate?.shouldBeIncluded(e)&&(this.alternate.include(e,!1,{asSingleStatement:!0}),e.brokenFlow=e.brokenFlow&&n)}renderHoistedDeclarations(e,t,n){const s=[...new Set(e.map(e=>{const t=e.variable;return t.included?t.getName(n):""}))].filter(Boolean).join(", ");if(s){const e=this.parent.type,n=e!==ot&&"BlockStatement"!==e;t.prependRight(this.start,`${n?"{ ":""}var ${s}; `),n&&t.appendLeft(this.end," }")}}shouldKeepAlternateBranch(){let e=this.parent;do{if(e instanceof El&&e.alternate)return!0;if(e instanceof nr)return!1;e=e.parent}while(e);return!1}}El.prototype.includeNode=rs,El.prototype.applyDeoptimizations=os;class xl extends ss{}class Al extends ss{bind(){}hasEffects(){return!1}initialise(){super.initialise(),this.scope.context.addImport(this)}render(e,t,n){e.remove(n.start,n.end)}}Al.prototype.needsBoundaries=!0,Al.prototype.includeNode=rs,Al.prototype.applyDeoptimizations=os;class Sl extends ss{}Sl.prototype.includeNode=rs,Sl.prototype.applyDeoptimizations=os;class $l{constructor(e){this.interaction={args:[null,e],type:2,withNew:!1}}deoptimizeArgumentsOnInteractionAtPath(e,t,n){Xe(e),2===e.type&&0===t.length&&(ls(e.args[1])||as(e.args[1]))&&e.args[1].deoptimizeArgumentsOnInteractionAtPath(this.interaction,[],n)}includeCallArguments(e,t){Ye(e,t),2===e.type&&(ls(e.args[1])||as(e.args[1]))&&e.args[1].includeCallArguments(this.interaction,t)}}class vl{deoptimizeArgumentsOnInteractionAtPath(e){Xe(e)}includeCallArguments(e,t){Ye(e,t)}}function Pl(e){return{fileName:e.getFileName(),...e.getPreRenderedChunkInfo()}}class Il extends ss{constructor(){super(...arguments),this.inlineNamespace=null,this.resolution=null,this.attributes=null,this.mechanism=null,this.namespaceExportName=void 0,this.localResolution=null,this.resolutionString=null}get shouldIncludeDynamicAttributes(){return Fe(this.flags,268435456)}set shouldIncludeDynamicAttributes(e){this.flags=je(this.flags,268435456,e)}bind(){const{options:e,parent:t,resolution:n,source:s}=this;if(s.bind(),e?.bind(),"object"!=typeof n||!n||!("namespace"in n))return;if(hs(t)||(i=t)instanceof ss&&"AwaitExpression"===i.type)return void(this.localResolution={resolution:n,tracked:!0});var i;if(!us(t))return void(this.localResolution={resolution:n,tracked:!1});let r=t,o=this;for(;!r.computed&&r.object===o&&ds(r.property)&&cs(r.parent);){const e=r.property.name;if(o=r.parent,"then"===e){const e=o.arguments[0];if(void 0===e||ls(e)||as(e))return r.promiseHandler=new $l(ho(n.namespace)),void(this.localResolution={resolution:n,tracked:!0})}else if("catch"===e||"finally"===e){if(us(o.parent)){r.promiseHandler=new vl,r=o.parent;continue}if(hs(o.parent))return r.promiseHandler=new vl,void(this.localResolution={resolution:n,tracked:!0})}break}this.localResolution={resolution:n,tracked:!1}}deoptimizePath(e){this.localResolution?.resolution?.namespace.deoptimizePath(e)}hasEffects(){return!0}include(e,t){this.included||this.includeNode(e),this.source.include(e,t),this.shouldIncludeDynamicAttributes&&this.options?.include(e,t),t&&this.localResolution?.resolution.includeAllExports()}includeNode(e){this.included=!0;const{localResolution:t,scope:n,shouldIncludeDynamicAttributes:s}=this;s&&this.options?.includePath(Ie,e),n.context.includeDynamicImport(this),n.addAccessedDynamicImport(this),t&&(t.tracked?t.resolution.includeModuleInExecution():t.resolution.includeAllExports())}includePath(e,t){this.included||this.includeNode(t),this.localResolution?.resolution?.namespace.includeMemberPath(e,t)}initialise(){super.initialise(),this.scope.context.addDynamicImport(this)}parseNode(e){return this.sourceAstNode=e.source,super.parseNode(e)}render(e,t){const{snippets:{_:n,getDirectReturnFunction:s,getObject:i,getPropertyAccess:r},importAttributesKey:o}=t;if(this.inlineNamespace){const[t,n]=s([],{functionReturn:!0,lineBreakIndent:null,name:null});return void e.overwrite(this.start,this.end,`Promise.resolve().then(${t}${this.inlineNamespace.getName(r)}${n})`)}if(this.mechanism&&(e.overwrite(this.start,X(e.original,"(",this.start+6)+1,this.mechanism.left),e.overwrite(this.end-1,this.end,this.mechanism.right)),this.resolutionString){if(e.overwrite(this.source.start,this.source.end,this.resolutionString),this.namespaceExportName){const[t,n]=s(["n"],{functionReturn:!0,lineBreakIndent:null,name:null});e.prependLeft(this.end,`.then(${t}n.${this.namespaceExportName}${n})`)}}else this.source.render(e,t);!0!==this.attributes&&(this.options&&e.overwrite(this.source.end,this.end-1,"",{contentOnly:!0}),this.attributes&&e.appendLeft(this.end-1,`,${n}${i([[o,this.attributes]],{lineBreakIndent:null})}`))}setExternalResolution(e,t,n,s,i,r,o,a,l,c){const{format:u}=t;this.inlineNamespace=null,this.resolutionString=r,this.namespaceExportName=o,this.attributes=a;const d=[...Nl[u]||[]];let h;({helper:h,mechanism:this.mechanism}=this.getDynamicImportMechanismAndHelper(e,t,n,s,l,c)),h&&d.push(h),d.length>0&&this.scope.addAccessedGlobals(d,i)}setInternalResolution(e){this.inlineNamespace=e}getDynamicImportMechanismAndHelper(e,{compact:t,dynamicImportInCjs:n,format:s,generatedCode:{arrowFunctions:i},interop:r},{_:o,getDirectReturnFunction:a,getDirectReturnIifeLeft:l},c,u,d){const{resolution:h,scope:p}=this,f=c.hookFirstSync("renderDynamicImport",[{chunk:Pl(u),customResolution:"string"==typeof h?h:null,format:s,getTargetChunkImports(){if(null===d)return null;const e=[],t=u.getFileName();for(const n of d.dependencies){const s=`'${n.getImportPath(t)}'`;n instanceof fo?e.push({fileName:n.getFileName(),resolvedImportPath:s,type:"external"}):e.push({chunk:n.getPreRenderedChunkInfo(),fileName:n.getFileName(),resolvedImportPath:s,type:"internal"})}return e},moduleId:p.context.module.id,targetChunk:d?Pl(d):null,targetModuleAttributes:h&&"string"!=typeof h?h.info.attributes:{},targetModuleId:h&&"string"!=typeof h?h.id:null}]);if(f)return{helper:null,mechanism:f};const m=!h||"string"==typeof h;switch(s){case"cjs":{if(n&&(!h||"string"==typeof h||h instanceof Wn))return{helper:null,mechanism:null};const t=wl(h,e,r);let s="require(",o=")";t&&(s=`/*#__PURE__*/${t}(${s}`,o+=")");const[c,u]=a([],{functionReturn:!0,lineBreakIndent:null,name:null});return s=`Promise.resolve().then(${c}${s}`,o+=`${u})`,!i&&m&&(s=l(["t"],`${s}t${o}`,{needsArrowReturnParens:!1,needsWrappedFunction:!0}),o=")"),{helper:t,mechanism:{left:s,right:o}}}case"amd":{const n=t?"c":"resolve",s=t?"e":"reject",c=wl(h,e,r),[u,d]=a(["m"],{functionReturn:!1,lineBreakIndent:null,name:null}),p=c?`${u}${n}(/*#__PURE__*/${c}(m))${d}`:n,[f,g]=a([n,s],{functionReturn:!1,lineBreakIndent:null,name:null});let y=`new Promise(${f}require([`,b=`],${o}${p},${o}${s})${g})`;return!i&&m&&(y=l(["t"],`${y}t${b}`,{needsArrowReturnParens:!1,needsWrappedFunction:!0}),b=")"),{helper:c,mechanism:{left:y,right:b}}}case"system":return{helper:null,mechanism:{left:"module.import(",right:")"}}}return{helper:null,mechanism:null}}}function wl(e,t,n){return"external"===t?$r[n(e instanceof Wn?e.id:null)]:"default"===t?br:null}Il.prototype.applyDeoptimizations=os;const Nl={amd:["require"],cjs:["require"],system:["module"]};class kl extends ss{}kl.prototype.includeNode=rs,kl.prototype.applyDeoptimizations=os;class Cl extends ss{}Cl.prototype.includeNode=rs,Cl.prototype.applyDeoptimizations=os;class Rl extends Ii{constructor(){super(...arguments),this.isNativeElement=!1}bind(){const e=this.getType();0===e?(this.variable=this.scope.findVariable(this.name),this.variable.addReference(this)):1===e&&(this.isNativeElement=!0)}include(e){this.included||this.includeNode(e)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),null!==this.variable&&this.scope.context.includeVariableInModule(this.variable,Pe,e)}includePath(e,t){this.included?e.length>0&&this.variable?.includePath(e,t):(this.included=!0,null!==this.variable&&this.scope.context.includeVariableInModule(this.variable,e,t))}render(e,{snippets:{getPropertyAccess:t},useOriginalName:n}){if(this.variable){const s=this.variable.getName(t,n);s!==this.name&&e.overwrite(this.start,this.end,s,{contentOnly:!0,storeName:!0})}else this.isNativeElement&&"preserve"!==this.scope.context.options.jsx.mode&&e.update(this.start,this.end,JSON.stringify(this.name))}getType(){switch(this.parent.type){case"JSXOpeningElement":case"JSXClosingElement":return this.name.startsWith(this.name.charAt(0).toUpperCase())?0:1;case"JSXMemberExpression":return this.parent.object===this?0:2;case"JSXAttribute":case"JSXNamespacedName":return 2;default:throw new Error(`Unexpected parent node type for JSXIdentifier: ${this.parent.type}`)}}}class Dl extends ss{render(e,t,{jsxMode:n}=oe){if(super.render(e,t),["classic","automatic"].includes(n)){const{name:t,value:s}=this,i=t instanceof Rl?t.name:`${t.namespace.name}:${t.name.name}`;if("automatic"!==n||"key"!==i){const n=Gn(i);i!==n&&e.overwrite(t.start,t.end,n,{contentOnly:!0}),s?(e.overwrite(t.end,s.start,": ",{contentOnly:!0}),s instanceof Fr&&"string"==typeof s.value&&s.value.includes("\n")&&e.overwrite(s.start,s.end,JSON.stringify(s.value),{contentOnly:!0})):e.appendLeft(t.end,": true")}}}}Dl.prototype.includeNode=is;class Ol extends ss{render(e,t){const{mode:n}=this.scope.context.options.jsx;"preserve"!==n?e.overwrite(this.start,this.end,")",{contentOnly:!0}):super.render(e,t)}}Ol.prototype.includeNode=is;class Ml extends Ol{}class _l extends Ol{}class Ll extends ss{render(e,t){this.argument.render(e,t);const{mode:n}=this.scope.context.options.jsx;"preserve"!==n&&(e.overwrite(this.start,this.argument.start,"",{contentOnly:!0}),e.overwrite(this.argument.end,this.end,"",{contentOnly:!0}))}}class Tl extends ss{}Tl.prototype.includeNode=is;class Bl extends ss{includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.expression.includePath(Ie,e)}render(e,t){const{mode:n}=this.scope.context.options.jsx;"preserve"!==n&&(e.remove(this.start,this.expression.start),e.remove(this.expression.end,this.end)),this.expression.render(e,t)}}const zl=/^[ \t]*\r?\n[ \t\r\n]*|[ \t]*\r?\n[ \t\r\n]*$/g,Vl=/[ \t]*\r?\n[ \t\r\n]*/g;class Fl extends ss{shouldRender(){return!!this.getRenderedText()}render(e){const{mode:t}=this.scope.context.options.jsx;"preserve"!==t&&e.overwrite(this.start,this.end,JSON.stringify(this.getRenderedText()),{contentOnly:!0})}getRenderedText(){return void 0===this.renderedText&&(this.renderedText=this.value.replace(zl,"").replace(Vl," ")),this.renderedText}}function jl(e){let t=0;for(const n of e)n instanceof Bl&&n.expression instanceof Tl||n instanceof Fl&&!n.shouldRender()||t++;return t}function Ul(e,t,n,s,i){const[r,o]=e.split(".");let a;if(n){if(a=s.scope.context.getImportedJsxFactoryVariable(o?"default":r,s.start,n),t){s.scope.findGlobal(r).includePath(Ie,i),a.globalName=r}}else a=s.scope.findGlobal(r);return s.scope.context.includeVariableInModule(a,Ie,i),a instanceof vi&&(a.consolidateInitializers(),a.addUsedPlace(s),s.scope.context.requestTreeshakingPass()),a}Fl.prototype.includeNode=is;class Gl extends ss{constructor(){super(...arguments),this.factoryVariable=null,this.factory=null}initialise(){super.initialise();const{importSource:e}=this.jsxMode=this.getRenderingMode();e&&this.scope.context.addImportSource(e)}include(e,t){this.included||this.includeNode(e);for(const n of this.children)n.include(e,t)}includeNode(e){this.included=!0;const{factory:t,importSource:n,mode:s}=this.jsxMode;t&&(this.factory=t,this.factoryVariable=Ul(t,"preserve"===s,n,this,e))}getRenderingMode(){const e=this.scope.context.options.jsx,{mode:t,factory:n,importSource:s}=e;return"automatic"===t?{factory:jl(this.children)>1?"jsxs":"jsx",importSource:e.jsxImportSource,mode:t}:{factory:n,importSource:s,mode:t}}renderChildren(e,t,n){const{children:s}=this;let i=!1,r=n,o=null;for(const n of s)n instanceof Bl&&n.expression instanceof Tl||n instanceof Fl&&!n.shouldRender()?e.remove(r,n.end):(e.appendLeft(r,", "),n.render(e,t),o?i=!0:o=n),r=n.end;return{childrenEnd:r,firstChild:o,hasMultipleChildren:i}}}Gl.prototype.applyDeoptimizations=os;class Hl extends Gl{include(e,t){super.include(e,t),this.openingElement.include(e,t),this.closingElement?.include(e,t)}render(e,t){switch(this.jsxMode.mode){case"classic":this.renderClassicMode(e,t);break;case"automatic":this.renderAutomaticMode(e,t);break;default:super.render(e,t)}}getRenderingMode(){const e=this.scope.context.options.jsx,{mode:t,factory:n,importSource:s}=e;if("automatic"===t){let e=!1;for(const t of this.openingElement.attributes)if(t instanceof Ll)e=!0;else if(e&&"key"===t.name.name)return{factory:n,importSource:s,mode:"classic"}}return super.getRenderingMode()}renderClassicMode(e,t){const{snippets:{getPropertyAccess:n},useOriginalName:s}=t,{closingElement:i,end:r,factory:o,factoryVariable:a,openingElement:{end:l,selfClosing:c}}=this,[,...u]=o.split("."),{firstAttribute:d,hasAttributes:h,hasSpread:p,inObject:f,previousEnd:m}=this.renderAttributes(e,t,[a.getName(n,s),...u].join("."),!1);this.wrapAttributes(e,f,h,p,d,"null",m),this.renderChildren(e,t,l),c?e.appendLeft(r,")"):i.render(e,t)}renderAutomaticMode(e,t){const{snippets:{getPropertyAccess:n},useOriginalName:s}=t,{closingElement:i,end:r,factoryVariable:o,openingElement:{end:a,selfClosing:l}}=this;let{firstAttribute:c,hasAttributes:u,hasSpread:d,inObject:h,keyAttribute:p,previousEnd:f}=this.renderAttributes(e,t,o.getName(n,s),!0);const{firstChild:m,hasMultipleChildren:g,childrenEnd:y}=this.renderChildren(e,t,a);m&&(e.prependRight(m.start,"children: "+(g?"[":"")),h||(e.prependRight(m.start,"{ "),h=!0),f=i.start,g&&e.appendLeft(f,"]"));const b=m?y:f;if(this.wrapAttributes(e,h,u||!!m,d,c||m,"{}",b),p){const{value:t}=p;e.appendLeft(b,", "),t?e.move(t.start,t.end,b):e.appendLeft(b,"true")}l?e.appendLeft(p?.value?.end||r,")"):i.render(e,t)}renderAttributes(e,t,n,s){const{jsxMode:{mode:i},openingElement:r}=this,{attributes:o,end:a,start:l,name:{start:c,end:u}}=r;e.update(l,c,`/*#__PURE__*/${n}(`),r.render(e,t,{jsxMode:i});let d=null,h=!1,p=!1,f=u,m=!1,g=null;for(const t of o){if(t instanceof Dl){if(s&&"key"===t.name.name){d=t,e.remove(f,t.value?.start||t.end);continue}e.appendLeft(f,","),p||(e.prependRight(t.start,"{ "),p=!0),m=!0}else p?(m&&e.appendLeft(f," "),e.appendLeft(f,"},"),p=!1):e.appendLeft(f,","),h=!0;f=t.end,g??=t}return e.remove(o.at(-1)?.end||f,a),{firstAttribute:g,hasAttributes:m,hasSpread:h,inObject:p,keyAttribute:d,previousEnd:f}}wrapAttributes(e,t,n,s,i,r,o){if(t&&e.appendLeft(o," }"),s){if(n){const{start:t}=i;i instanceof Ll&&e.prependRight(t,"{}, "),e.prependRight(t,"Object.assign("),e.appendLeft(o,")")}}else n||e.appendLeft(o,`, ${r}`)}}class Wl extends Gl{include(e,t){super.include(e,t),this.openingFragment.include(e,t),this.closingFragment.include(e,t)}render(e,t){switch(this.jsxMode.mode){case"classic":this.renderClassicMode(e,t);break;case"automatic":this.renderAutomaticMode(e,t);break;default:super.render(e,t)}}renderClassicMode(e,t){const{snippets:{getPropertyAccess:n},useOriginalName:s}=t,{closingFragment:i,factory:r,factoryVariable:o,openingFragment:a,start:l}=this,[,...c]=r.split(".");a.render(e,t),e.prependRight(l,`/*#__PURE__*/${[o.getName(n,s),...c].join(".")}(`),e.appendLeft(a.end,", null"),this.renderChildren(e,t,a.end),i.render(e,t)}renderAutomaticMode(e,t){const{snippets:{getPropertyAccess:n},useOriginalName:s}=t,{closingFragment:i,factoryVariable:r,openingFragment:o,start:a}=this;o.render(e,t),e.prependRight(a,`/*#__PURE__*/${r.getName(n,s)}(`);const{firstChild:l,hasMultipleChildren:c,childrenEnd:u}=this.renderChildren(e,t,o.end);l?(e.prependRight(l.start,"{ children: "+(c?"[":"")),c&&e.appendLeft(i.start,"]"),e.appendLeft(u," }")):e.appendLeft(o.end,", {}"),i.render(e,t)}}class ql extends ss{includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.object.includePath([this.property.name],e)}includePath(e,t){this.included||this.includeNode(t),this.object.includePath([this.property.name,...e],t)}}class Kl extends ss{}Kl.prototype.includeNode=is;class Xl extends ss{render(e,t,{jsxMode:n=this.scope.context.options.jsx.mode}={}){this.name.render(e,t);for(const s of this.attributes)s.render(e,t,{jsxMode:n})}}Xl.prototype.includeNode=is;class Jl extends ss{constructor(){super(...arguments),this.fragment=null,this.fragmentVariable=null}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations();const t=this.scope.context.options.jsx;if("automatic"===t.mode)this.fragment="Fragment",this.fragmentVariable=Ul("Fragment",!1,t.jsxImportSource,this,e);else{const{fragment:n,importSource:s,mode:i}=t;null!=n&&(this.fragment=n,this.fragmentVariable=Ul(n,"preserve"===i,s,this,e))}}render(e,t){const{mode:n}=this.scope.context.options.jsx;if("preserve"!==n){const{snippets:{getPropertyAccess:n},useOriginalName:s}=t,[,...i]=this.fragment.split("."),r=[this.fragmentVariable.getName(n,s),...i].join(".");e.update(this.start,this.end,r)}}}class Yl extends ss{render(e,t){super.render(e,t);const{mode:n}=this.scope.context.options.jsx;"preserve"!==n&&(e.overwrite(this.start,this.expression.start,"...",{contentOnly:!0}),e.overwrite(this.expression.end,this.end,"",{contentOnly:!0}))}}class Zl extends ss{hasEffects(e){const{brokenFlow:t,includedLabels:n}=e;e.ignore.labels.add(this.label.name),e.includedLabels=new Set;let s=!1;return this.body.hasEffects(e)?s=!0:(e.ignore.labels.delete(this.label.name),e.includedLabels.has(this.label.name)&&(e.includedLabels.delete(this.label.name),e.brokenFlow=t)),e.includedLabels=new Set([...n,...e.includedLabels]),s}include(e,t){this.included||this.includeNode(e);const{brokenFlow:n,includedLabels:s}=e;e.includedLabels=new Set,this.body.include(e,t),(t||e.includedLabels.has(this.label.name))&&(this.label.include(e,t),e.includedLabels.delete(this.label.name),e.brokenFlow=n),e.includedLabels=new Set([...s,...e.includedLabels])}includeNode(e){this.included=!0,this.body.includePath(Ie,e)}render(e,t){this.label.included?this.label.render(e,t):e.remove(this.start,Y(e.original,X(e.original,":",this.label.end)+1)),this.body.render(e,t)}}Zl.prototype.applyDeoptimizations=os;class Ql extends ss{constructor(){super(...arguments),this.expressionsToBeDeoptimized=[],this.usedBranch=null}get isBranchResolutionAnalysed(){return Fe(this.flags,65536)}set isBranchResolutionAnalysed(e){this.flags=je(this.flags,65536,e)}get hasDeoptimizedCache(){return Fe(this.flags,33554432)}set hasDeoptimizedCache(e){this.flags=je(this.flags,33554432,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.left.deoptimizeArgumentsOnInteractionAtPath(e,t,n),this.right.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeCache(){if(this.hasDeoptimizedCache)return;if(this.hasDeoptimizedCache=!0,this.usedBranch){const e=this.usedBranch===this.left?this.right:this.left;this.usedBranch=null,e.deoptimizePath(Ie),this.included&&e.includePath(Ie,ze())}const{scope:{context:e},expressionsToBeDeoptimized:t}=this;this.expressionsToBeDeoptimized=le;for(const e of t)e.deoptimizeCache();e.requestTreeshakingPass()}deoptimizePath(e){const t=this.getUsedBranch();t?t.deoptimizePath(e):(this.left.deoptimizePath(e),this.right.deoptimizePath(e))}getLiteralValueAtPath(e,t,n){if(n===this)return Ue;const s=this.getUsedBranch();if(s)return this.expressionsToBeDeoptimized.push(n),s.getLiteralValueAtPath(e,t,n);if(!this.hasDeoptimizedCache&&!e.length){const s=el(this.right.getLiteralValueAtPath(e,t,n));if("symbol"!=typeof s){if(!s&&"&&"===this.operator)return this.expressionsToBeDeoptimized.push(n),He;if(s&&"||"===this.operator)return this.expressionsToBeDeoptimized.push(n),Ge}}return Ue}getReturnExpressionWhenCalledAtPath(e,t,n,s){const i=this.getUsedBranch();return i?(this.expressionsToBeDeoptimized.push(s),i.getReturnExpressionWhenCalledAtPath(e,t,n,s)):[new tl([this.left.getReturnExpressionWhenCalledAtPath(e,t,n,s)[0],this.right.getReturnExpressionWhenCalledAtPath(e,t,n,s)[0]]),!1]}hasEffects(e){return!!this.left.hasEffects(e)||this.getUsedBranch()!==this.left&&this.right.hasEffects(e)}hasEffectsOnInteractionAtPath(e,t,n){const s=this.getUsedBranch();return s?s.hasEffectsOnInteractionAtPath(e,t,n):this.left.hasEffectsOnInteractionAtPath(e,t,n)||this.right.hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included=!0;const n=this.getUsedBranch();t||!n||n===this.right&&this.left.shouldBeIncluded(e)?(this.left.include(e,t),this.right.include(e,t)):n.include(e,t)}includePath(e,t){this.included=!0;const n=this.getUsedBranch();!n||n===this.right&&this.left.shouldBeIncluded(t)?(this.left.includePath(e,t),this.right.includePath(e,t)):n.includePath(e,t)}removeAnnotations(e){this.left.removeAnnotations(e)}render(e,t,{isCalleeOfRenderedParent:n,preventASI:s,renderedParentType:i,renderedSurroundingElement:r}=oe){if(this.left.included&&this.right.included)this.left.render(e,t,{preventASI:s,renderedSurroundingElement:r}),this.right.render(e,t);else{const o=X(e.original,this.operator,this.left.end);if(this.right.included){const t=Y(e.original,o+2);e.remove(this.start,t),s&&ne(e,t,this.right.start),this.left.removeAnnotations(e)}else e.remove(function(e,t,n){for(;;){if(t>=n)return n;if(!Z.test(e[n-1]))return n;n--}}(e.original,this.left.end,o),this.end);this.getUsedBranch().render(e,t,{isCalleeOfRenderedParent:n,preventASI:s,renderedParentType:i||this.parent.type,renderedSurroundingElement:r||this.parent.type})}}getUsedBranch(){if(!this.isBranchResolutionAnalysed){this.isBranchResolutionAnalysed=!0;const e=this.left.getLiteralValueAtPath(Pe,De,this),t=el(e);if("symbol"==typeof t||"??"===this.operator&&"symbol"==typeof e)return null;this.usedBranch="||"===this.operator&&t||"&&"===this.operator&&!t||"??"===this.operator&&null!=e?this.left:this.right}return this.usedBranch}}Ql.prototype.includeNode=rs,Ql.prototype.applyDeoptimizations=os;class ec extends ss{hasEffects(e){this.deoptimized||this.applyDeoptimizations();for(const t of this.arguments)if(t.hasEffects(e))return!0;return!this.annotationPure&&(this.callee.hasEffects(e)||this.callee.hasEffectsOnInteractionAtPath(Pe,this.interaction,e))}hasEffectsOnInteractionAtPath(e,{type:t}){return e.length>0||0!==t}include(e,t){this.included||this.includeNode(e),t?super.include(e,!0):(this.callee.include(e,!1),this.callee.includeCallArguments(this.interaction,e))}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.callee.includePath(Ie,e)}initialise(){super.initialise(),this.interaction={args:[null,...this.arguments],type:2,withNew:!0},this.annotations&&this.scope.context.options.treeshake.annotations&&(this.annotationPure=this.annotations.some(e=>"pure"===e.type))}render(e,t){this.callee.render(e,t),Wa(e,t,this)}applyDeoptimizations(){this.deoptimized=!0,this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction,Pe,De),this.scope.context.requestTreeshakingPass()}}class tc extends ss{constructor(){super(...arguments),this.objectEntity=null,this.protoProp=null}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeCache(){this.getObjectEntity().deoptimizeAllProperties()}deoptimizePath(e){this.getObjectEntity().deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.getObjectEntity().getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e,t,n,s)}hasEffectsOnInteractionAtPath(e,t,n){return this.getObjectEntity().hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included||this.includeNode(e),this.getObjectEntity().include(e,t),this.protoProp?.include(e,t)}includeNode(e){this.included=!0,this.protoProp?.includePath(Ie,e)}includePath(e,t){this.included||this.includeNode(t),this.getObjectEntity().includePath(e,t)}render(e,t,{renderedSurroundingElement:n}=oe){if(n!==it&&n!==tt||(e.appendRight(this.start,"("),e.prependLeft(this.end,")")),this.properties.length>0){const n=te(this.properties,e,this.start+1,this.end-1);let s=null;for(const{node:i,separator:r,start:o,end:a}of n)i.included?(s=r,i.render(e,t)):q(i,e,o,a);s&&e.remove(s,this.end-1)}}getObjectEntity(){if(null!==this.objectEntity)return this.objectEntity;let e=zs;const t=[];for(const n of this.properties){if(n instanceof Qs){t.push({key:pe,kind:"init",property:n});continue}let s;if(n.computed){const e=n.key.getLiteralValueAtPath(Pe,De,this);if("symbol"==typeof e){t.push({key:Se(e)?e:pe,kind:n.kind,property:n});continue}s=String(e)}else if(s=n.key instanceof ki?n.key.name:String(n.key.value),"__proto__"===s&&"init"===n.kind){this.protoProp=n,e=n.value instanceof Fr&&null===n.value.value?null:n.value;continue}t.push({key:s,kind:n.kind,property:n})}return this.objectEntity=new Ls(t,e)}}tc.prototype.applyDeoptimizations=os;class nc extends ss{initialise(){const{id:e}=this.scope.context.module;return Bt(Pn(zt(Sn(this.message)),e))}}class sc extends ss{initialise(){const e=this.start,{id:t}=this.scope.context.module,n=Pn(zt(Sn(this.message,e)),t);this.scope.context.error(n,e)}}class ic extends ss{}ic.prototype.includeNode=is;class rc extends ss{constructor(){super(...arguments),this.hasCachedEffect=null,this.hasLoggedEffect=!1}hasCachedEffects(){return!!this.included&&(null===this.hasCachedEffect?this.hasCachedEffect=this.hasEffects(Ve()):this.hasCachedEffect)}hasEffects(e){for(const t of this.body)if(t.hasEffects(e)){if(this.scope.context.options.experimentalLogSideEffects&&!this.hasLoggedEffect){this.hasLoggedEffect=!0;const{code:e,log:n,module:s}=this.scope.context;n(mt,an(e,s.id,ct(e,t.start,{offsetLine:1})),t.start)}return this.hasCachedEffect=!0}return!1}include(e,t){this.included=!0;for(const n of this.body)(t||n.shouldBeIncluded(e))&&n.include(e,t)}initialise(){if(super.initialise(),this.invalidAnnotations)for(const{start:e,end:t,type:n}of this.invalidAnnotations)this.scope.context.magicString.remove(e,t),"pure"!==n&&"noSideEffects"!==n||this.scope.context.log(ft,dn(this.scope.context.code.slice(e,t),this.scope.context.module.id,n),e)}render(e,t){let n=this.start;if(e.original.startsWith("#!")&&(n=Math.min(e.original.indexOf("\n")+1,this.end),e.remove(0,n)),this.body.length>0){for(;"/"===e.original[n]&&/[*/]/.test(e.original[n+1]);){const t=Q(e.original.slice(n,this.body[0].start));if(-1===t[0])break;n+=t[1]}ee(this.body,e,n,this.end,t)}else super.render(e,t)}}rc.prototype.includeNode=rs,rc.prototype.applyDeoptimizations=os;class oc extends _i{get method(){return Fe(this.flags,262144)}set method(e){this.flags=je(this.flags,262144,e)}get shorthand(){return Fe(this.flags,524288)}set shorthand(e){this.flags=je(this.flags,524288,e)}declare(e,t,n){return this.value.declare(e,this.getPathInProperty(t),n)}deoptimizeAssignment(e,t){this.value.deoptimizeAssignment?.(this.getPathInProperty(e),t)}hasEffects(e){return this.key.hasEffects(e)||this.value.hasEffects(e)}hasEffectsWhenDestructuring(e,t,n){return this.value.hasEffectsWhenDestructuring?.(e,this.getPathInProperty(t),n)}includeDestructuredIfNecessary(e,t,n){const s=this.getPathInProperty(t);let i=this.value.includeDestructuredIfNecessary(e,s,n)||this.included;return(i||=this.key.hasEffects(Ve()))&&(this.key.include(e,!1),this.value.included||(this.value.includeNode(e),this.value.includeDestructuredIfNecessary(e,s,n))),!this.included&&i&&this.includeNode(e),this.included}include(e,t){this.included=!0,this.key.include(e,t),this.value.include(e,t)}includePath(e,t){this.included=!0,this.value.includePath(e,t)}markDeclarationReached(){this.value.markDeclarationReached()}render(e,t){this.shorthand||this.key.render(e,t),this.value.render(e,t,{isShorthandProperty:this.shorthand})}getPathInProperty(e){return e.at(-1)===pe?e:this.computed?[...e,pe]:this.key instanceof ki?[...e,this.key.name]:[...e,String(this.key.value)]}}oc.prototype.includeNode=rs,oc.prototype.applyDeoptimizations=os;class ac extends ss{get computed(){return Fe(this.flags,1024)}set computed(e){this.flags=je(this.flags,1024,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.value?.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.value?.deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.value?this.value.getLiteralValueAtPath(e,t,n):Ue}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.value?this.value.getReturnExpressionWhenCalledAtPath(e,t,n,s):Ke}hasEffects(e){return this.key.hasEffects(e)||this.static&&!!this.value?.hasEffects(e)||Mi(this.decorators,e)}hasEffectsOnInteractionAtPath(e,t,n){return!this.value||this.value.hasEffectsOnInteractionAtPath(e,t,n)}includeNode(e){this.included=!0,this.value?.includePath(Ie,e);for(const t of this.decorators)t.includePath(Ie,e)}}ac.prototype.applyDeoptimizations=os;class lc extends ss{hasEffects(e){return!(e.ignore.returnYield&&!this.argument?.hasEffects(e))||(e.brokenFlow=!0,!1)}include(e,t){this.included||this.includeNode(e),this.argument?.include(e,t),e.brokenFlow=!0}includeNode(e){this.included=!0,this.argument?.includePath(Ie,e)}initialise(){super.initialise(),this.scope.addReturnExpression(this.argument||qe)}render(e,t){this.argument&&(this.argument.render(e,t,{preventASI:!0}),this.argument.start===this.start+6&&e.prependLeft(this.start+6," "))}}lc.prototype.applyDeoptimizations=os;class cc extends ss{deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.expressions[this.expressions.length-1].deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.expressions[this.expressions.length-1].deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.expressions[this.expressions.length-1].getLiteralValueAtPath(e,t,n)}hasEffects(e){for(const t of this.expressions)if(t.hasEffects(e))return!0;return!1}hasEffectsOnInteractionAtPath(e,t,n){return this.expressions[this.expressions.length-1].hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included=!0;const n=this.expressions[this.expressions.length-1];for(const s of this.expressions)(t||s===n&&!(this.parent instanceof tr)||s.shouldBeIncluded(e))&&s.include(e,t)}includePath(e,t){this.included=!0,this.expressions[this.expressions.length-1].includePath(e,t)}removeAnnotations(e){this.expressions[0].removeAnnotations(e)}render(e,t,{renderedParentType:n,isCalleeOfRenderedParent:s,preventASI:i}=oe){let r=0,o=null;const a=this.expressions[this.expressions.length-1];for(const{node:l,separator:c,start:u,end:d}of te(this.expressions,e,this.start,this.end))if(l.included)if(r++,o=c,1===r&&i&&ne(e,u,l.start),1===r){const i=n||this.parent.type;l.render(e,t,{isCalleeOfRenderedParent:s&&l===a,renderedParentType:i,renderedSurroundingElement:i})}else l.render(e,t);else q(l,e,u,d);o&&e.remove(o,this.end)}}cc.prototype.includeNode=rs,cc.prototype.applyDeoptimizations=os;class uc extends ss{bind(){this.variable=this.scope.findVariable("this")}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.variable.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.variable.deoptimizePath(e)}include(e){this.included||this.includeNode(e)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.scope.context.includeVariableInModule(this.variable,Pe,e)}}class dc extends ss{hasEffects(e){if(this.test?.hasEffects(e))return!0;for(const t of this.consequent){if(e.brokenFlow)break;if(t.hasEffects(e))return!0}return!1}include(e,t){this.included=!0,this.test?.include(e,t);for(const n of this.consequent)(t||n.shouldBeIncluded(e))&&n.include(e,t)}render(e,t,n){if(this.test&&(this.test.render(e,t),this.test.start===this.start+4&&e.prependLeft(this.test.start," ")),this.consequent.length>0){const s=this.test?this.test.end:X(e.original,"default",this.start)+7,i=X(e.original,":",s)+1;ee(this.consequent,e,i,n.end,t)}}}dc.prototype.needsBoundaries=!0,dc.prototype.includeNode=rs,dc.prototype.applyDeoptimizations=os;class hc extends ss{createScope(e){this.parentScope=e,this.scope=new Ti(e)}hasEffects(e){if(this.discriminant.hasEffects(e))return!0;const{brokenFlow:t,hasBreak:n,ignore:s}=e,{breaks:i}=s;s.breaks=!0,e.hasBreak=!1;let r=!0;for(const n of this.cases){if(n.hasEffects(e))return!0;r&&=e.brokenFlow&&!e.hasBreak,e.hasBreak=!1,e.brokenFlow=t}return null!==this.defaultCase&&(e.brokenFlow=r),s.breaks=i,e.hasBreak=n,!1}include(e,t){this.included=!0,this.discriminant.include(e,t);const{brokenFlow:n,hasBreak:s}=e;e.hasBreak=!1;let i=!0,r=t||null!==this.defaultCase&&this.defaultCase=0;s--){const o=this.cases[s];if(o.included&&(r=!0),!r){const e=Ve();e.ignore.breaks=!0,r=o.hasEffects(e)}r?(o.include(e,t),i&&=e.brokenFlow&&!e.hasBreak,e.hasBreak=!1,e.brokenFlow=n):i=n}r&&null!==this.defaultCase&&(e.brokenFlow=i),e.hasBreak=s}initialise(){super.initialise();for(let e=0;e0&&ee(this.cases,e,this.cases[0].start,this.end-1,t)}}hc.prototype.includeNode=rs,hc.prototype.applyDeoptimizations=os;class pc extends qa{get hasCheckedForWarnings(){return Fe(this.flags,134217728)}set hasCheckedForWarnings(e){this.flags=je(this.flags,134217728,e)}hasEffects(e){this.deoptimized||this.applyDeoptimizations();for(const t of this.quasi.expressions)if(t.hasEffects(e))return!0;return this.tag.hasEffects(e)||this.tag.hasEffectsOnInteractionAtPath(Pe,this.interaction,e)}include(e,t){this.included||this.includeNode(e),t?super.include(e,!0):(this.quasi.include(e,!1),this.tag.include(e,!1),this.tag.includeCallArguments(this.interaction,e))}initialise(){super.initialise(),this.args=[qe,...this.quasi.expressions],this.interaction={args:[this.tag instanceof Hr&&!this.tag.variable?this.tag.object:null,...this.args],type:2,withNew:!1}}render(e,t){if(this.tag.render(e,t,{isCalleeOfRenderedParent:!0}),this.quasi.render(e,t),!this.hasCheckedForWarnings&&this.tag.type===rt){this.hasCheckedForWarnings=!0;const e=this.tag.name;this.scope.findVariable(e).isNamespace&&this.scope.context.log(ft,tn(e),this.start)}}applyDeoptimizations(){this.deoptimized=!0,this.tag.deoptimizeArgumentsOnInteractionAtPath(this.interaction,Pe,De),this.scope.context.requestTreeshakingPass()}getReturnExpression(e=De){return null===this.returnExpression?(this.returnExpression=Ke,this.returnExpression=this.tag.getReturnExpressionWhenCalledAtPath(Pe,this.interaction,e,this)):this.returnExpression}}pc.prototype.includeNode=is;class fc extends ss{get tail(){return Fe(this.flags,1048576)}set tail(e){this.flags=je(this.flags,1048576,e)}bind(){}hasEffects(){return!1}parseNode(e){return this.value=e.value,super.parseNode(e)}render(){}}fc.prototype.includeNode=is;class mc extends ss{deoptimizeArgumentsOnInteractionAtPath(){}getLiteralValueAtPath(e){return e.length>0||1!==this.quasis.length?Ue:this.quasis[0].value.cooked}getReturnExpressionWhenCalledAtPath(e){return 1!==e.length?Ke:ks(ws,e[0])}hasEffectsOnInteractionAtPath(e,t,n){return 0===t.type?e.length>1:2!==t.type||1!==e.length||Ns(ws,e[0],t,n)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations();for(const t of this.expressions)t.includePath(Ie,e)}render(e,t){e.indentExclusionRanges.push([this.start,this.end]),super.render(e,t)}}class gc extends Oi{constructor(e,t,n){super(e,t),this.importDescriptions=n,this.variables.set("this",new vi("this",null,fs,Pe,t,"other"))}addDeclaration(e,t,n,s,i){return this.importDescriptions.has(e.name)&&t.error($n(e.name),e.start),super.addDeclaration(e,t,n,s,i)}addExportDefaultDeclaration(e,t){const n=new co(e,t);return this.variables.set("default",n),n}addNamespaceMemberAccess(){}deconflict(e,t,n){for(const s of this.children)s.deconflict(e,t,n)}findLexicalBoundary(){return this}findVariable(e){const t=this.variables.get(e)||this.accessedOutsideVariables.get(e);if(t)return t;const n=this.context.traceVariable(e)||this.parent.findVariable(e);return n instanceof Si&&this.accessedOutsideVariables.set(e,n),n}}class yc extends ss{bind(){this.variable=this.scope.findVariable("this")}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.variable.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.variable.deoptimizePath(e)}hasEffectsOnInteractionAtPath(e,t,n){return 0===e.length?0!==t.type:this.variable.hasEffectsOnInteractionAtPath(e,t,n)}include(e){this.included||this.includeNode(e)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.scope.context.includeVariableInModule(this.variable,Pe,e)}includePath(e,t){this.included?e.length>0&&this.variable.includePath(e,t):(this.included=!0,this.scope.context.includeVariableInModule(this.variable,e,t));const n=function(e,t){for(;!(e instanceof er&&e.thisVariable===t);){if(!(e instanceof Oi))return null;e=e.parent}return e}(this.scope,this.variable);n&&n.functionNode.parent instanceof oc&&n.functionNode.parent.parent instanceof tc&&n.functionNode.parent.parent.includePath(e,t)}initialise(){super.initialise(),this.alias=this.scope.findLexicalBoundary()instanceof gc?this.scope.context.moduleContext:null,"undefined"===this.alias&&this.scope.context.log(ft,{code:"THIS_IS_UNDEFINED",message:"The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten",url:vt("troubleshooting/#error-this-is-undefined")},this.start)}render(e){null!==this.alias&&e.overwrite(this.start,this.end,this.alias,{contentOnly:!1,storeName:!0})}}class bc extends ss{hasEffects(){return!0}include(e,t){this.included||this.includeNode(e),this.argument.include(e,t),e.brokenFlow=!0}includeNode(e){this.included||(this.included=!0,this.argument.includePath(Ie,e))}render(e,t){this.argument.render(e,t,{preventASI:!0}),this.argument.start===this.start+5&&e.prependLeft(this.start+5," ")}}class Ec extends ss{constructor(){super(...arguments),this.directlyIncluded=!1,this.includedLabelsAfterBlock=null}hasEffects(e){return(this.scope.context.options.treeshake.tryCatchDeoptimization?this.block.body.length>0:this.block.hasEffects(e))||!!this.finalizer?.hasEffects(e)}include(e,t){const n=this.scope.context.options.treeshake?.tryCatchDeoptimization,{brokenFlow:s,includedLabels:i}=e;if(this.directlyIncluded&&n){if(this.includedLabelsAfterBlock)for(const e of this.includedLabelsAfterBlock)i.add(e)}else this.included=!0,this.directlyIncluded=!0,this.block.include(e,n?ts:t),i.size>0&&(this.includedLabelsAfterBlock=[...i]),e.brokenFlow=s;null!==this.handler&&(this.handler.include(e,t),e.brokenFlow=s),this.finalizer?.include(e,t)}}Ec.prototype.includeNode=rs,Ec.prototype.applyDeoptimizations=os;const xc={"!":e=>!e,"+":e=>+e,"-":e=>-e,delete:()=>Ue,typeof:e=>typeof e,void:()=>{},"~":e=>~e},Ac=Symbol("Unassigned");class Sc extends ss{constructor(){super(...arguments),this.renderedLiteralValue=Ac}get prefix(){return Fe(this.flags,2097152)}set prefix(e){this.flags=je(this.flags,2097152,e)}deoptimizeCache(){this.renderedLiteralValue=Ue}getLiteralValueAtPath(e,t,n){if(e.length>0)return Ue;const s=this.argument.getLiteralValueAtPath(Pe,t,n);if("symbol"==typeof s){if("void"===this.operator)return;if("!"===this.operator){if(s===He)return!0;if(s===Ge)return!1}return Ue}return xc[this.operator](s)}hasEffects(e){return this.deoptimized||this.applyDeoptimizations(),!("typeof"===this.operator&&this.argument instanceof ki)&&(this.argument.hasEffects(e)||"delete"===this.operator&&this.argument.hasEffectsOnInteractionAtPath(Pe,Qe,e))}hasEffectsOnInteractionAtPath(e,{type:t}){return 0!==t||e.length>("void"===this.operator?0:1)}applyDeoptimizations(){this.deoptimized=!0,"delete"===this.operator&&(this.argument.deoptimizePath(Pe),this.scope.context.requestTreeshakingPass())}getRenderedLiteralValue(e){return this.renderedLiteralValue!==Ac?this.renderedLiteralValue:this.renderedLiteralValue=e?Ue:Fa(this.getLiteralValueAtPath(Pe,De,this))}include(e,t,n){this.deoptimized||this.applyDeoptimizations(),this.included=!0;const s=this.argument instanceof ki&&this.argument.variable?.included;("symbol"==typeof this.getRenderedLiteralValue(t)||this.argument.shouldBeIncluded(e)||s)&&(this.argument.include(e,t),this.renderedLiteralValue=Ue)}render(e,t){if("symbol"==typeof this.renderedLiteralValue)super.render(e,t);else{let t=this.renderedLiteralValue;$c.test(e.original[this.start-1])||(t=` ${t}`),e.overwrite(this.start,this.end,t)}}}const $c=/[\s([=%&*+-/<>^|,?:;]/;Sc.prototype.includeNode=is;class vc extends ss{hasEffects(e){return this.deoptimized||this.applyDeoptimizations(),this.argument.hasEffectsAsAssignmentTarget(e,!0)}hasEffectsOnInteractionAtPath(e,{type:t}){return e.length>1||0!==t}include(e,t){this.included||this.includeNode(e),this.argument.includeAsAssignmentTarget(e,t,!0)}initialise(){super.initialise(),this.argument.setAssignedValue(qe)}render(e,t){const{exportNamesByVariable:n,format:s,snippets:{_:i}}=t;if(this.argument.render(e,t),"system"===s){const s=this.argument.variable,r=n.get(s);if(r)if(this.prefix)1===r.length?ie(s,this.start,this.end,e,t):re(s,this.start,this.end,this.parent.type!==it,e,t);else{const n=this.operator[0];!function(e,t,n,s,i,r,o){const{_:a}=r.snippets;i.prependRight(t,`${se([e],r,o)},${a}`),s&&(i.prependRight(t,"("),i.appendLeft(n,")"))}(s,this.start,this.end,this.parent.type!==it,e,t,`${i}${n}${i}1`)}}}applyDeoptimizations(){if(this.deoptimized=!0,this.argument.deoptimizePath(Pe),this.argument instanceof ki){this.scope.findVariable(this.argument.name).markReassigned()}this.scope.context.requestTreeshakingPass()}}function Pc(e,t){return null!==e.renderBaseName&&t.has(e)&&e.isReassigned}vc.prototype.includeNode=is;class Ic extends ss{deoptimizePath(){for(const e of this.declarations)e.deoptimizePath(Pe)}hasEffectsOnInteractionAtPath(){return!1}include(e,t,{asSingleStatement:n}=oe){this.included=!0;for(const s of this.declarations){(t||s.shouldBeIncluded(e))&&s.include(e,t);const{id:i,init:r}=s;n&&i.include(e,t),r&&i.included&&!r.included&&(i instanceof La||i instanceof Oa)&&r.include(e,t)}}initialise(){super.initialise();for(const e of this.declarations)e.declareDeclarator(this.kind)}removeAnnotations(e){this.declarations[0].removeAnnotations(e)}render(e,t,n=oe){if(this.areAllDeclarationsIncludedAndNotExported(t.exportNamesByVariable)){for(const n of this.declarations)n.render(e,t);n.isNoStatement||59===e.original.charCodeAt(this.end-1)||e.appendLeft(this.end,";")}else this.renderReplacedDeclarations(e,t)}renderDeclarationEnd(e,t,n,s,i,r,o){59===e.original.charCodeAt(this.end-1)&&e.remove(this.end-1,this.end),t+=";",null===n?e.appendLeft(i,t):(10!==e.original.charCodeAt(s-1)||10!==e.original.charCodeAt(this.end)&&13!==e.original.charCodeAt(this.end)||(s--,13===e.original.charCodeAt(s)&&s--),s===n+1?e.overwrite(n,i,t):(e.overwrite(n,n+1,t),e.remove(s,i))),r.length>0&&e.appendLeft(i,` ${se(r,o)};`)}renderReplacedDeclarations(e,t){const n=te(this.declarations,e,this.start+this.kind.length,this.end-(59===e.original.charCodeAt(this.end-1)?1:0));let s,i;i=Y(e.original,this.start+this.kind.length);let r=i-1;e.remove(this.start,r);let o,a,l=!1,c=!1,u="";const d=[],h=function(e,t,n){let s=null;if("system"===t.format){for(const{node:i}of e)i.id instanceof ki&&i.init&&0===n.length&&1===t.exportNamesByVariable.get(i.id.variable)?.length?(s=i.id.variable,n.push(s)):i.id.addExportedVariables(n,t.exportNamesByVariable);n.length>1?s=null:s&&(n.length=0)}return s}(n,t,d);for(const{node:d,start:p,separator:f,contentEnd:m,end:g}of n)if(d.included){if(d.render(e,t),o="",a="",!d.id.included||d.id instanceof ki&&Pc(d.id.variable,t.exportNamesByVariable))c&&(u+=";"),l=!1;else{if(h&&h===d.id.variable){const n=X(e.original,"=",d.id.end);ie(h,Y(e.original,n+1),null===f?m:f,e,t)}l?u+=",":(c&&(u+=";"),o+=`${this.kind} `,l=!0)}i===r+1?e.overwrite(r,i,u+o):(e.overwrite(r,r+1,u),e.appendLeft(i,o)),s=m,i=g,c=!0,r=f,u=""}else q(d,e,p,g);this.renderDeclarationEnd(e,u,r,s,i,d,t)}areAllDeclarationsIncludedAndNotExported(e){if("await using"===this.kind||"using"===this.kind)return!0;for(const t of this.declarations){if(!t.id.included)return!1;if(t.id.type===rt){if(e.has(t.id.variable))return!1}else{const n=[];if(t.id.addExportedVariables(n,e),n.length>0)return!1}}return!0}}Ic.prototype.includeNode=rs,Ic.prototype.applyDeoptimizations=os;class wc extends ss{declareDeclarator(e){this.isUsingDeclaration="using"===e,this.isAsyncUsingDeclaration="await using"===e,this.id.declare(e,Pe,this.init||fs)}deoptimizePath(e){this.id.deoptimizePath(e)}hasEffects(e){const t=this.init?.hasEffects(e);return this.id.markDeclarationReached(),t||this.isUsingDeclaration||this.isAsyncUsingDeclaration||this.id.hasEffects(e)||this.scope.context.options.treeshake.propertyReadSideEffects&&this.id.hasEffectsWhenDestructuring(e,Pe,this.init||fs)}include(e,t){const{id:n,init:s}=this;this.included||this.includeNode(e),s?.include(e,t),n.markDeclarationReached(),t?n.include(e,t):n.includeDestructuredIfNecessary(e,Pe,s||fs)}removeAnnotations(e){this.init?.removeAnnotations(e)}render(e,t){const{exportNamesByVariable:n,snippets:{_:s,getPropertyAccess:i}}=t,{end:r,id:o,init:a,start:l}=this,c=o.included||this.isUsingDeclaration||this.isAsyncUsingDeclaration;if(c)o.render(e,t);else{const t=X(e.original,"=",o.end);e.remove(l,Y(e.original,t+1))}if(a){if(o instanceof ki&&a instanceof Qa&&!a.id){o.variable.getName(i)!==o.name&&e.appendLeft(a.start+5,` ${o.name}`)}a.render(e,t,c?oe:{renderedSurroundingElement:it})}else o instanceof ki&&Pc(o.variable,n)&&e.appendLeft(r,`${s}=${s}void 0`)}includeNode(e){this.included=!0;const{id:t,init:n}=this;if(n&&(this.isUsingDeclaration?n.includePath(Nc,e):this.isAsyncUsingDeclaration&&n.includePath(kc,e),t instanceof ki&&n instanceof Qa&&!n.id)){const{name:e,variable:s}=t;for(const t of n.scope.accessedOutsideVariables.values())t!==s&&t.forbidName(e)}}}wc.prototype.applyDeoptimizations=os;const Nc=[be],kc=[Ee];class Cc extends ss{hasEffects(e){return!!this.test.hasEffects(e)||ol(e,this.body)}include(e,t){this.included=!0,this.test.include(e,t),al(e,this.body,t)}}Cc.prototype.includeNode=rs,Cc.prototype.applyDeoptimizations=os;class Rc extends ss{applyDeoptimizations(){this.deoptimized=!0,this.argument?.deoptimizePath(Ie)}hasEffects(e){return this.deoptimized||this.applyDeoptimizations(),!(e.ignore.returnYield&&!this.argument?.hasEffects(e))}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.argument?.includePath(Ie,e)}render(e,t){this.argument&&(this.argument.render(e,t,{preventASI:!0}),this.argument.start===this.start+5&&e.prependLeft(this.start+5," "))}}const Dc=["PanicError","ParseError","ArrayExpression","ArrayPattern","ArrowFunctionExpression","AssignmentExpression","AssignmentPattern","AwaitExpression","BinaryExpression","BlockStatement","BreakStatement","CallExpression","CatchClause","ChainExpression","ClassBody","ClassDeclaration","ClassExpression","ConditionalExpression","ContinueStatement","DebuggerStatement","Decorator","ExpressionStatement","DoWhileStatement","EmptyStatement","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ExpressionStatement","ForInStatement","ForOfStatement","ForStatement","FunctionDeclaration","FunctionExpression","Identifier","IfStatement","ImportAttribute","ImportDeclaration","ImportDefaultSpecifier","ImportExpression","ImportNamespaceSpecifier","ImportSpecifier","JSXAttribute","JSXClosingElement","JSXClosingFragment","JSXElement","JSXEmptyExpression","JSXExpressionContainer","JSXFragment","JSXIdentifier","JSXMemberExpression","JSXNamespacedName","JSXOpeningElement","JSXOpeningFragment","JSXSpreadAttribute","JSXSpreadChild","JSXText","LabeledStatement","Literal","Literal","Literal","Literal","Literal","Literal","LogicalExpression","MemberExpression","MetaProperty","MethodDefinition","NewExpression","ObjectExpression","ObjectPattern","PrivateIdentifier","Program","Property","PropertyDefinition","RestElement","ReturnStatement","SequenceExpression","SpreadElement","StaticBlock","Super","SwitchCase","SwitchStatement","TaggedTemplateExpression","TemplateElement","TemplateLiteral","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","YieldExpression"],Oc=[nc,sc,ei,Oa,_a,Ta,Ba,za,Ga,nr,Ha,Ka,Xa,Ja,Za,Fi,Qa,nl,sl,il,rl,tr,ll,cl,ul,lr,dl,hl,tr,pl,fl,ml,ar,gl,ki,El,xl,Al,Sl,Il,kl,Cl,Dl,Ml,_l,Hl,Tl,Bl,Wl,Rl,ql,Kl,Xl,Jl,Ll,Yl,Fl,Zl,Fr,Fr,Fr,Fr,Fr,Fr,Ql,Hr,Jr,Li,ec,tc,La,ic,rc,oc,ac,sr,lc,cc,Qs,Bi,uc,dc,hc,pc,fc,mc,yc,bc,Ec,Sc,vc,Ic,wc,Cc,Rc],Mc=[function(e,t,n){e.message=n.convertString(n[t])},function(e,t,n){e.message=n.convertString(n[t])},function(e,t,n){const{scope:s}=e;e.elements=Lc(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.elements=Lc(e,s,n[t],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.async=!(1&~i),e.expression=!(2&~i),e.generator=!(4&~i);const r=e.annotations=Zn(n[t+1],n);e.annotationNoSideEffects=r.some(e=>"noSideEffects"===e.type);const o=e.params=Lc(e,s,n[t+2],n);s.addParameterVariables(o.map(e=>e.declare("parameter",Pe,qe)),o[o.length-1]instanceof sr),e.body=_c(e,s.bodyScope,n[t+3],n)},function(e,t,n){const{scope:s}=e;e.operator=Xn[n[t]],e.left=_c(e,s,n[t+1],n),e.right=_c(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e;e.left=_c(e,s,n[t],n),e.right=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.argument=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.operator=Xn[n[t]],e.left=_c(e,s,n[t+1],n),e.right=_c(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e;e.body=Lc(e,s,n[t],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.label=0===i?null:_c(e,s,i,n)},function(e,t,n){const{scope:s}=e,i=n[t];e.optional=!(1&~i),e.annotations=Zn(n[t+1],n),e.callee=_c(e,s,n[t+2],n),e.arguments=Lc(e,s,n[t+3],n)},function(e,t,n){const{scope:s}=e,i=n[t],r=e.param=0===i?null:_c(e,s,i,n);r?.declare("parameter",Pe,qe),e.body=_c(e,s.bodyScope,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.expression=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e,i=n[t];if(i){const t=n[i],r=e.body=new Array(t);for(let o=0;o"noSideEffects"===e.type);const o=n[t+2];e.id=0===o?null:_c(e,s.parent,o,n);const a=e.params=Lc(e,s,n[t+3],n);s.addParameterVariables(a.map(e=>e.declare("parameter",Pe,qe)),a[a.length-1]instanceof sr),e.body=_c(e,s.bodyScope,n[t+4],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.async=!(1&~i),e.generator=!(2&~i);const r=e.annotations=Zn(n[t+1],n);e.annotationNoSideEffects=r.some(e=>"noSideEffects"===e.type);const o=n[t+2];e.id=0===o?null:_c(e,e.idScope,o,n);const a=e.params=Lc(e,s,n[t+3],n);s.addParameterVariables(a.map(e=>e.declare("parameter",Pe,qe)),a[a.length-1]instanceof sr),e.body=_c(e,s.bodyScope,n[t+4],n)},function(e,t,n){e.name=n.convertString(n[t])},function(e,t,n){const{scope:s}=e;e.test=_c(e,s,n[t],n),e.consequent=_c(e,e.consequentScope=new yl(s),n[t+1],n);const i=n[t+2];e.alternate=0===i?null:_c(e,e.alternateScope=new yl(s),i,n)},function(e,t,n){const{scope:s}=e;e.key=_c(e,s,n[t],n),e.value=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.specifiers=Lc(e,s,n[t],n),e.source=_c(e,s,n[t+1],n),e.attributes=Lc(e,s,n[t+2],n);const i=n[t+3];e.phase=0===i?void 0:Xn[i]},function(e,t,n){const{scope:s}=e;e.local=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.source=_c(e,s,n[t],n),e.sourceAstNode=Ca(n[t],n);const i=n[t+1];e.options=0===i?null:_c(e,s,i,n);const r=n[t+2];e.phase=0===r?void 0:Xn[r]},function(e,t,n){const{scope:s}=e;e.local=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.local=_c(e,s,n[t+1],n),e.imported=0===i?e.local:_c(e,s,i,n)},function(e,t,n){const{scope:s}=e;e.name=_c(e,s,n[t],n);const i=n[t+1];e.value=0===i?null:_c(e,s,i,n)},function(e,t,n){const{scope:s}=e;e.name=_c(e,s,n[t],n)},function(){},function(e,t,n){const{scope:s}=e;e.openingElement=_c(e,s,n[t],n),e.children=Lc(e,s,n[t+1],n);const i=n[t+2];e.closingElement=0===i?null:_c(e,s,i,n)},function(){},function(e,t,n){const{scope:s}=e;e.expression=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.openingFragment=_c(e,s,n[t],n),e.children=Lc(e,s,n[t+1],n),e.closingFragment=_c(e,s,n[t+2],n)},function(e,t,n){e.name=n.convertString(n[t])},function(e,t,n){const{scope:s}=e;e.object=_c(e,s,n[t],n),e.property=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.namespace=_c(e,s,n[t],n),e.name=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.selfClosing=!(1&~i),e.name=_c(e,s,n[t+1],n),e.attributes=Lc(e,s,n[t+2],n)},function(e){e.attributes=[],e.selfClosing=!1},function(e,t,n){const{scope:s}=e;e.argument=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.expression=_c(e,s,n[t],n)},function(e,t,n){e.value=n.convertString(n[t]),e.raw=n.convertString(n[t+1])},function(e,t,n){const{scope:s}=e;e.label=_c(e,s,n[t],n),e.body=_c(e,s,n[t+1],n)},function(e,t,n){const s=e.bigint=n.convertString(n[t]);e.raw=n.convertString(n[t+1]),e.value=BigInt(s)},function(e,t,n){const s=n[t],i=e.value=!(1&~s);e.raw=i?"true":"false"},function(e){e.value=null},function(e,t,n){const s=n[t];e.raw=0===s?void 0:n.convertString(s),e.value=new DataView(n.buffer).getFloat64(t+1<<2,!0)},function(e,t,n){const s=n.convertString(n[t]),i=n.convertString(n[t+1]);e.raw=`/${i}/${s}`,e.regex={flags:s,pattern:i},e.value=new RegExp(i,s)},function(e,t,n){e.value=n.convertString(n[t]);const s=n[t+1];e.raw=0===s?void 0:n.convertString(s)},function(e,t,n){const{scope:s}=e;e.operator=Xn[n[t]],e.left=_c(e,s,n[t+1],n),e.right=_c(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.computed=!(1&~i),e.optional=!(2&~i),e.object=_c(e,s,n[t+1],n),e.property=_c(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e;e.meta=_c(e,s,n[t],n),e.property=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.static=!(1&~i),e.computed=!(2&~i),e.decorators=Lc(e,s,n[t+1],n),e.key=_c(e,s,n[t+2],n),e.value=_c(e,s,n[t+3],n),e.kind=Xn[n[t+4]]},function(e,t,n){const{scope:s}=e;e.annotations=Zn(n[t],n),e.callee=_c(e,s,n[t+1],n),e.arguments=Lc(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e;e.properties=Lc(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.properties=Lc(e,s,n[t],n)},function(e,t,n){e.name=n.convertString(n[t])},function(e,t,n){const{scope:s}=e;e.body=Lc(e,s,n[t],n),e.invalidAnnotations=Zn(n[t+1],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.method=!(1&~i),e.shorthand=!(2&~i),e.computed=!(4&~i);const r=n[t+1];e.value=_c(e,s,n[t+2],n),e.kind=Xn[n[t+3]],e.key=0===r?e.value:_c(e,s,r,n)},function(e,t,n){const{scope:s}=e,i=n[t];e.static=!(1&~i),e.computed=!(2&~i),e.decorators=Lc(e,s,n[t+1],n),e.key=_c(e,s,n[t+2],n);const r=n[t+3];e.value=0===r?null:_c(e,s,r,n)},function(e,t,n){const{scope:s}=e;e.argument=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.argument=0===i?null:_c(e,s,i,n)},function(e,t,n){const{scope:s}=e;e.expressions=Lc(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.argument=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.body=Lc(e,s,n[t],n)},function(){},function(e,t,n){const{scope:s}=e,i=n[t];e.test=0===i?null:_c(e,s,i,n),e.consequent=Lc(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.discriminant=_c(e,e.parentScope,n[t],n),e.cases=Lc(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.tag=_c(e,s,n[t],n),e.quasi=_c(e,s,n[t+1],n)},function(e,t,n){const s=n[t];e.tail=!(1&~s);const i=n[t+1],r=0===i?null:n.convertString(i),o=n.convertString(n[t+2]);e.value={cooked:r,raw:o}},function(e,t,n){const{scope:s}=e;e.quasis=Lc(e,s,n[t],n),e.expressions=Lc(e,s,n[t+1],n)},function(){},function(e,t,n){const{scope:s}=e;e.argument=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.block=_c(e,s,n[t],n);const i=n[t+1];e.handler=0===i?null:_c(e,s,i,n);const r=n[t+2];e.finalizer=0===r?null:_c(e,s,r,n)},function(e,t,n){const{scope:s}=e;e.operator=Xn[n[t]],e.argument=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.prefix=!(1&~i),e.operator=Xn[n[t+1]],e.argument=_c(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e;e.kind=Xn[n[t]],e.declarations=Lc(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.id=_c(e,s,n[t],n);const i=n[t+1];e.init=0===i?null:_c(e,s,i,n)},function(e,t,n){const{scope:s}=e;e.test=_c(e,s,n[t],n),e.body=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.delegate=!(1&~i);const r=n[t+1];e.argument=0===r?null:_c(e,s,r,n)}];function _c(e,t,n,s){const i=s[n],r=Oc[i];if(!r)throw console.trace(),new Error(`Unknown node type: ${i}`);const o=new r(e,t);return o.type=Dc[i],o.start=s[n+1],o.end=s[n+2],Mc[i](o,n+3,s),o.initialise(),o}function Lc(e,t,n,s){if(0===n)return le;const i=s[n++],r=new Array(i);for(let o=0;ofunction(e){const t=Ca(0,e);switch(t.type){case"PanicError":return Bt(zt(Sn(t.message)));case"ParseError":return Bt(zt(Sn(t.message,t.start)));default:return t}}(Da(ca(e,t,n))),Hc=new Set(["assert","with"]);function Wc(e){const{scope:{context:t},options:n,start:s}=e;if(!(n instanceof tc))return n&&t.module.log(ft,mn(t.module.id),s),ae;const i=n.properties.find(e=>Hc.has(qc(e)))?.value;if(!i)return ae;if(!(i instanceof tc))return t.module.log(ft,(r=t.module.id,{code:Gt,message:`Rollup could not statically analyze the options argument of a dynamic import in "${xt(r)}". Dynamic import options need to be an object with a nested attributes object.`}),s),ae;var r;const o=i.properties.map(e=>{const n=qc(e);return"string"==typeof n&&"string"==typeof e.value.value?[n,e.value.value]:(t.module.log(ft,mn(t.module.id),e.start),null)}).filter(e=>!!e);return o.length>0?Object.fromEntries(o):ae}const qc=e=>{const t=e.key;return t&&!e.computed&&(t.name||t.value)};function Kc(e,t){const n=Object.keys(e);return n.length!==Object.keys(t).length||n.some(n=>e[n]!==t[n])}var Xc="performance"in("undefined"==typeof globalThis?"undefined"==typeof window?{}:window:globalThis)?performance:{now:()=>0},Jc={memoryUsage:()=>({heapUsed:0})};let Yc=new Map;function Zc(e,t){switch(t){case 1:return`# ${e}`;case 2:return`## ${e}`;case 3:return e;default:return`- ${e}`}}function Qc(e,t=3){e=Zc(e,t);const n=Jc.memoryUsage().heapUsed,s=Xc.now(),i=Yc.get(e);void 0===i?Yc.set(e,{memory:0,startMemory:n,startTime:s,time:0,totalMemory:0}):(i.startMemory=n,i.startTime=s)}function eu(e,t=3){e=Zc(e,t);const n=Yc.get(e);if(void 0!==n){const e=Jc.memoryUsage().heapUsed;n.memory+=e-n.startMemory,n.time+=Xc.now()-n.startTime,n.totalMemory=Math.max(n.totalMemory,e)}}function tu(){const e={};for(const[t,{memory:n,time:s,totalMemory:i}]of Yc)e[t]=[s,n,i];return e}let nu=Kn,su=Kn;const iu=["augmentChunkHash","buildEnd","buildStart","generateBundle","load","moduleParsed","options","outputOptions","renderChunk","renderDynamicImport","renderStart","resolveDynamicImport","resolveFileUrl","resolveId","resolveImportMeta","shouldTransformCachedModule","transform","writeBundle"];function ru(e,t){if(e._hasTimer)return e;e._hasTimer=!0;for(const n of iu)if(n in e){let s=`plugin ${t}`;e.name&&(s+=` (${e.name})`),s+=` - ${n}`;const i=function(...e){nu(s,4);const t=r.apply(this,e);return su(s,4),t};let r;"function"==typeof e[n].handler?(r=e[n].handler,e[n].handler=i):(r=e[n],e[n]=i)}return e}const ou={identifier:null,localName:Ro};function au(e,t,n,s,i=new Map,r,o,a){const l=i.get(t);if(l){if(l.has(e))return s?[null]:Bt((c=t,{code:"CIRCULAR_REEXPORT",exporter:u=e.id,message:`"${c}" cannot be exported from "${xt(u)}" as it is a reexport that references itself.`}));l.add(e)}else i.set(t,new Set([e]));var c,u;return e.getVariableForExportName(t,{exportOrReexportModules:a,importChain:r,importerForSideEffects:n,isExportAllSearch:s,searchedNamesAndModules:i,sideEffectModules:o})}function lu(e,t){const n=ue(t.sideEffectDependenciesByVariable,e,de);let s=e;const i=new Set([s]);for(;;){const e=s.module;if(s=s instanceof co?s.getDirectOriginalVariable():s instanceof po?s.syntheticNamespace:null,!s||i.has(s))break;i.add(s),n.add(e);const t=e.sideEffectDependenciesByVariable.get(s);if(t)for(const e of t)n.add(e)}return n}class cu{constructor(e,t,n,s,i,r,o,a){this.graph=e,this.id=t,this.options=n,this.alternativeReexportModules=new Map,this.chunkFileNames=new Set,this.chunkNames=[],this.cycles=new Set,this.dependencies=new Set,this.dynamicDependencies=new Set,this.dynamicImporters=[],this.dynamicImports=[],this.execIndex=1/0,this.hasTreeShakingPassStarted=!1,this.implicitlyLoadedAfter=new Set,this.implicitlyLoadedBefore=new Set,this.importDescriptions=new Map,this.importMetas=[],this.importedFromNotTreeshaken=!1,this.importers=[],this.includedDynamicImporters=[],this.includedTopLevelAwaitingDynamicImporters=new Set,this.includedImports=new Set,this.isExecuted=!1,this.isUserDefinedEntryPoint=!1,this.needsExportShim=!1,this.sideEffectDependenciesByVariable=new Map,this.sourcePhaseSources=new Set,this.sourcesWithAttributes=new Map,this.allExportsIncluded=!1,this.ast=null,this.exportAllModules=[],this.exportAllSources=new Set,this.exportDescriptions=new Map,this.exportedVariablesByName=null,this.exportNamesByVariable=null,this.exportShimVariable=new Bc(this),this.namespaceReexportsByName=new Map,this.reexportDescriptions=new Map,this.relevantDependencies=null,this.syntheticExports=new Map,this.syntheticNamespace=null,this.transformDependencies=[],this.excludeFromSourcemap=/\0/.test(t),this.context=n.moduleContext(t),this.preserveSignature=this.options.preserveEntrySignatures;const l=this,{dynamicImports:c,dynamicImporters:u,exportAllSources:d,exportDescriptions:h,implicitlyLoadedAfter:p,implicitlyLoadedBefore:f,importers:m,reexportDescriptions:g,sourcesWithAttributes:y}=this;this.info={ast:null,attributes:a,code:null,get dynamicallyImportedIdResolutions(){return c.map(({argument:e})=>"string"==typeof e&&l.resolvedIds[e]).filter(Boolean)},get dynamicallyImportedIds(){return c.map(({id:e})=>e).filter(e=>null!=e)},get dynamicImporters(){return u.sort()},get exportedBindings(){const e={".":[...h.keys()]};for(const[t,{source:n}]of g)(e[n]??=[]).push(t);for(const t of d)(e[t]??=[]).push("*");return e},get exports(){return[...h.keys(),...g.keys(),...[...d].map(()=>"*")]},get hasDefaultExport(){return l.ast?l.exportDescriptions.has("default")||g.has("default"):null},id:t,get implicitlyLoadedAfterOneOf(){return Array.from(p,Uc).sort()},get implicitlyLoadedBefore(){return Array.from(f,Uc).sort()},get importedIdResolutions(){return Array.from(y.keys(),e=>l.resolvedIds[e]).filter(Boolean)},get importedIds(){return Array.from(y.keys(),e=>l.resolvedIds[e]?.id).filter(Boolean)},get importers(){return m.sort()},isEntry:s,isExternal:!1,get isIncluded(){return e.phase!==zc.GENERATE?null:l.isIncluded()},meta:{...o},moduleSideEffects:i,safeVariableNames:null,syntheticNamedExports:r}}basename(){const e=F(this.id),t=U(this.id);return Fn(t?e.slice(0,-t.length):e)}bindReferences(){this.ast.bind()}cacheInfoGetters(){Ln(this.info,["dynamicallyImportedIdResolutions","dynamicallyImportedIds","dynamicImporters","exportedBindings","exports","hasDefaultExport","implicitlyLoadedAfterOneOf","implicitlyLoadedBefore","importedIdResolutions","importedIds","importers"])}error(e,t){return void 0!==t&&this.addLocationToLogProps(e,t),Bt(e)}estimateSize(){let e=0;for(const t of this.ast.body)t.included&&(e+=t.end-t.start);return e}getDependenciesToBeIncluded(){if(this.relevantDependencies)return this.relevantDependencies;this.relevantDependencies=new Set;const e=new Set,t=new Set,n=new Set(this.includedImports);if(this.info.isEntry||this.includedDynamicImporters.length>0||this.namespace.included||this.implicitlyLoadedAfter.size>0)for(const e of this.getExportedVariablesByName().values())e.included&&n.add(e);for(let s of n){const n=this.sideEffectDependenciesByVariable.get(s);if(n)for(const e of n)t.add(e);s instanceof po?s=s.getBaseVariable():s instanceof co&&(s=s.getOriginalVariable()),e.add(s.module)}if(this.options.treeshake&&"no-treeshake"!==this.info.moduleSideEffects)this.addRelevantSideEffectDependencies(this.relevantDependencies,e,t);else for(const e of this.dependencies)this.relevantDependencies.add(e);for(const t of e)this.relevantDependencies.add(t);return this.relevantDependencies}getExportedVariablesByName(){if(this.exportedVariablesByName)return this.exportedVariablesByName;const e=this.exportedVariablesByName=new Map;for(const t of this.exportDescriptions.keys())if(t!==this.info.syntheticNamedExports){const[n]=this.getVariableForExportName(t);if(!n)return Bt(yn(t,this.id));e.set(t,n)}for(const t of this.reexportDescriptions.keys()){const[n]=this.getVariableForExportName(t);n&&e.set(t,n)}for(const t of this.exportAllModules)if(t instanceof Wn)e.set(`*${t.id}`,t.getVariableForExportName("*",{importChain:[this.id]})[0]);else for(const n of t.getExportedVariablesByName().keys())if("default"!==n&&!e.has(n)){const[t]=this.getVariableForExportName(n);t&&e.set(n,t)}return this.exportedVariablesByName=new Map([...e].sort(hu))}getExportNamesByVariable(){if(this.exportNamesByVariable)return this.exportNamesByVariable;const e=new Map;for(const[t,n]of this.getExportedVariablesByName().entries()){const s=n instanceof co?n.getOriginalVariable():n;if(!n||!(n.included||n instanceof _n))continue;const i=e.get(s);i?i.push(t):e.set(s,[t])}return this.exportNamesByVariable=e}getRenderedExports(){const e=[],t=[];for(const n of this.exportDescriptions.keys())(this.getExportedVariablesByName().get(n)?.included?e:t).push(n);return{removedExports:t,renderedExports:e}}getSyntheticNamespace(){return null===this.syntheticNamespace&&(this.syntheticNamespace=void 0,[this.syntheticNamespace]=this.getVariableForExportName("string"==typeof this.info.syntheticNamedExports?this.info.syntheticNamedExports:"default",{onlyExplicit:!0})),this.syntheticNamespace?this.syntheticNamespace:Bt((e=this.id,t=this.info.syntheticNamedExports,{code:"SYNTHETIC_NAMED_EXPORTS_NEED_NAMESPACE_EXPORT",exporter:e,message:`Module "${xt(e)}" that is marked with \`syntheticNamedExports: ${JSON.stringify(t)}\` needs ${"string"==typeof t&&"default"!==t?`an explicit export named "${t}"`:"a default export"} that does not reexport an unresolved named export of the same module.`}));var e,t}getVariableForExportName(e,{importerForSideEffects:t,importChain:n=[],isExportAllSearch:s,onlyExplicit:i,searchedNamesAndModules:r,sideEffectModules:o,exportOrReexportModules:a}=ae){if("*"===e[0]){if(1===e.length)return[this.namespace];return this.graph.modulesById.get(e.slice(1)).getVariableForExportName("*",{importChain:[...n,this.id]})}const l=this.reexportDescriptions.get(e);if(l){const[e,s]=au(l.module,l.localName,t,!1,r,[...n,this.id],o,a);return e?(t&&(uu(e,t,this),this.info.moduleSideEffects&&ue(t.sideEffectDependenciesByVariable,e,de).add(this)),this.info.moduleSideEffects&&o?.add(this),a?.add(this),[e]):this.error(bn(l.localName,this.id,l.module.id,!!s?.missingButExportExists),l.start)}const c=this.exportDescriptions.get(e);if(c){if(c===ou)return[this.exportShimVariable];const e=c.localName,n=this.traceVariable(e,{exportOrReexportModules:a,importerForSideEffects:t,searchedNamesAndModules:r,sideEffectModules:o});return n?(t&&(uu(n,t,this),ue(t.sideEffectDependenciesByVariable,n,de).add(this)),o?.add(this),a?.add(this),[n]):[null,{missingButExportExists:!0}]}if(i)return[null];if("default"!==e){const s=this.namespaceReexportsByName.get(e)??this.getVariableFromNamespaceReexports(e,t,r,[...n,this.id]);if(this.namespaceReexportsByName.set(e,s),s[0]){const[e,n]=s;if(t){const{exportOrReexportModules:s,sideEffectModules:i}=n;for(const n of s)t.alternativeReexportModules.has(e)||uu(e,t,n);for(const n of i)ue(t.sideEffectDependenciesByVariable,e,de).add(n)}return s}}return this.info.syntheticNamedExports?[ue(this.syntheticExports,e,()=>new po(this.astContext,e,this.getSyntheticNamespace()))]:!s&&this.options.shimMissingExports?(this.shimMissingExport(e),[this.exportShimVariable]):[null]}hasEffects(){return"no-treeshake"===this.info.moduleSideEffects||this.ast.hasCachedEffects()}include(){const e=ze();this.ast.shouldBeIncluded(e)&&this.ast.include(e,!1)}includeAllExports(){if(this.allExportsIncluded)return;this.allExportsIncluded=!0,this.includeModuleInExecution();const e=ze();for(const t of this.getExportedVariablesByName().values())this.includeVariable(t,Ie,e),t.deoptimizePath(Ie),t instanceof _n&&(t.module.reexported=!0)}includeAllInBundle(){this.ast.include(ze(),!0),this.includeAllExports()}includeModuleInExecution(){this.isExecuted||(qn(this),this.graph.needsTreeshakingPass=!0)}isIncluded(){return this.ast&&(this.ast.included||this.namespace.included||this.importedFromNotTreeshaken||this.exportShimVariable.included)}linkImports(){this.addModulesToImportDescriptions(this.importDescriptions),this.addModulesToImportDescriptions(this.reexportDescriptions);const e=[];for(const t of this.exportAllSources){const n=this.graph.modulesById.get(this.resolvedIds[t].id);n instanceof Wn?e.push(n):this.exportAllModules.push(n)}this.exportAllModules.push(...e)}log(e,t,n){this.addLocationToLogProps(t,n),this.options.onLog(e,t)}render(e){const t=this.magicString.clone();this.ast.render(t,e),t.trim();const{usesTopLevelAwait:n}=this.astContext;return n&&"es"!==e.format&&"system"!==e.format?Bt((s=this.id,i=e.format,{code:"INVALID_TLA_FORMAT",id:s,message:`Module format "${i}" does not support top-level await. Use the "es" or "system" output formats rather.`})):{source:t,usesTopLevelAwait:n};var s,i}async setSource({ast:e,code:t,customTransformCache:n,originalCode:s,originalSourcemap:i,resolvedIds:r,sourcemapChain:o,transformDependencies:a,transformFiles:l,safeVariableNames:c,...u}){if(nu("generate ast",3),t.startsWith("#!")){const e=t.indexOf("\n");this.shebang=t.slice(2,e)}this.info.code=t,this.info.safeVariableNames=c,this.originalCode=s,this.originalSourcemap=jc(i),this.sourcemapChain=o.map(e=>e.missing?e:jc(e)),Fc(this.originalSourcemap,this.sourcemapChain),l&&(this.transformFiles=l),this.transformDependencies=a,this.customTransformCache=n,this.updateOptions(u),this.resolvedIds=r??Object.create(null);const d=this.id;this.magicString=new C(t,{filename:this.excludeFromSourcemap?null:d,indentExclusionRanges:[]}),this.astContext={addDynamicImport:this.addDynamicImport.bind(this),addExport:this.addExport.bind(this),addImport:this.addImport.bind(this),addImportMeta:this.addImportMeta.bind(this),addImportSource:this.addImportSource.bind(this),code:t,deoptimizationTracker:this.graph.deoptimizationTracker,error:this.error.bind(this),fileName:d,getImportedJsxFactoryVariable:this.getImportedJsxFactoryVariable.bind(this),getModuleExecIndex:()=>this.execIndex,getModuleName:this.basename.bind(this),getNodeConstructor:e=>Tc[e]||Tc.UnknownNode,importDescriptions:this.importDescriptions,includeDynamicImport:this.includeDynamicImport.bind(this),includeVariableInModule:this.includeVariableInModule.bind(this),log:this.log.bind(this),magicString:this.magicString,manualPureFunctions:this.graph.pureFunctions,module:this,moduleContext:this.context,newlyIncludedVariableInits:this.graph.newlyIncludedVariableInits,options:this.options,requestTreeshakingPass:()=>this.graph.needsTreeshakingPass=!0,traceExport:e=>this.getVariableForExportName(e),traceVariable:this.traceVariable.bind(this),usesTopLevelAwait:!1},this.scope=new gc(this.graph.scope,this.astContext,this.importDescriptions),this.namespace=new uo(this.astContext);const h={context:this.astContext,type:"Module"};if(e)this.ast=new Tc[e.type](h,this.scope).parseNode(e),this.info.ast=e;else{su("generate ast",3);const e=await async function(e,t,n){return ca(e,t,n)}(t,!1,!1!==this.options.jsx);nu("generate ast",3),this.ast=(p=e,f=h,m=this.scope,_c(f,m,0,Da(p))),Object.defineProperty(this.info,"ast",{get:()=>{if(this.graph.astLru.has(d))return this.graph.astLru.get(d);{const e=this.tryParse();return!1!==this.options.cache?(Object.defineProperty(this.info,"ast",{value:e}),e):(this.graph.astLru.set(d,e),e)}}})}var p,f,m;su("generate ast",3)}toJSON(){return{ast:this.info.ast,attributes:this.info.attributes,code:this.info.code,customTransformCache:this.customTransformCache,dependencies:Array.from(this.dependencies,Uc),id:this.id,meta:this.info.meta,moduleSideEffects:this.info.moduleSideEffects,originalCode:this.originalCode,originalSourcemap:this.originalSourcemap,resolvedIds:this.resolvedIds,safeVariableNames:this.info.safeVariableNames,sourcemapChain:this.sourcemapChain,syntheticNamedExports:this.info.syntheticNamedExports,transformDependencies:this.transformDependencies,transformFiles:this.transformFiles}}traceVariable(e,{importerForSideEffects:t,isExportAllSearch:n,searchedNamesAndModules:s,sideEffectModules:i,exportOrReexportModules:r}=ae){const o=this.scope.variables.get(e);if(o)return o;const a=this.importDescriptions.get(e);if(a){const e=a.module;if(e instanceof cu&&"*"===a.name)return e.namespace;const[o,l]=au(e,a.name,t||this,n,s,[this.id],i,r);return o||this.error(bn(a.name,this.id,e.id,!!l?.missingButExportExists),a.start)}return null}updateOptions({meta:e,moduleSideEffects:t,syntheticNamedExports:n}){null!=t&&(this.info.moduleSideEffects=t),null!=n&&(this.info.syntheticNamedExports=n),null!=e&&Object.assign(this.info.meta,e)}addDynamicImport(e){let t=e.sourceAstNode;"TemplateLiteral"===t.type?1===t.quasis.length&&"string"==typeof t.quasis[0].value.cooked&&(t=t.quasis[0].value.cooked):"Literal"===t.type&&"string"==typeof t.value&&(t=t.value),this.dynamicImports.push({argument:t,id:null,node:e})}assertUniqueExportName(e,t){(this.exportDescriptions.has(e)||this.reexportDescriptions.has(e))&&this.error(function(e){return{code:"DUPLICATE_EXPORT",message:`Duplicate export "${e}"`}}(e),t)}addExport(e){if(e instanceof lr)this.assertUniqueExportName("default",e.start),this.exportDescriptions.set("default",{identifier:e.variable.getAssignedVariableName(),localName:"default"});else if(e instanceof ul){const t=e.source.value;if(this.addSource(t,e),e.exported){const n=e.exported instanceof Fr?e.exported.value:e.exported.name;this.assertUniqueExportName(n,e.exported.start),this.reexportDescriptions.set(n,{localName:"*",module:null,source:t,start:e.start})}else this.exportAllSources.add(t)}else if(e.source instanceof Fr){const t=e.source.value;this.addSource(t,e);for(const{exported:n,local:s,start:i}of e.specifiers){const e=n instanceof Fr?n.value:n.name;this.assertUniqueExportName(e,i),this.reexportDescriptions.set(e,{localName:s instanceof Fr?s.value:s.name,module:null,source:t,start:i})}}else if(e.declaration){const t=e.declaration;if(t instanceof Ic)for(const e of t.declarations)for(const t of la(e.id))this.assertUniqueExportName(t,e.id.start),this.exportDescriptions.set(t,{identifier:null,localName:t});else{const e=t.id.name;this.assertUniqueExportName(e,t.id.start),this.exportDescriptions.set(e,{identifier:null,localName:e})}}else for(const{local:t,exported:n}of e.specifiers){const e=t.name,s=n instanceof ki?n.name:n.value;this.assertUniqueExportName(s,n.start),this.exportDescriptions.set(s,{identifier:null,localName:e})}}addImport(e){const t=e.source.value;this.addSource(t,e);for(const n of e.specifiers){const s=n.local.name;(this.scope.variables.has(s)||this.importDescriptions.has(s))&&this.error($n(s),n.local.start);const i="source"===e.phase?Mn:n instanceof Sl?"default":n instanceof kl?"*":n.imported instanceof ki?n.imported.name:n.imported.value;this.importDescriptions.set(s,{module:null,name:i,phase:"source"===e.phase?"source":"instance",source:t,start:n.start})}}addImportSource(e){e&&!this.sourcesWithAttributes.has(e)&&this.sourcesWithAttributes.set(e,ae)}addImportMeta(e){this.importMetas.push(e)}addLocationToLogProps(e,t){e.id=this.id,e.pos=t;let n=this.info.code;const s=ct(n,t,{offsetLine:1});if(s){let{column:i,line:r}=s;try{({column:i,line:r}=function(e,t){const n=e.filter(e=>!e.missing);e:for(;n.length>0;){const e=n.pop().mappings[t.line-1];if(e){const n=e.filter(e=>e.length>1),s=n[n.length-1];let i=n[0];for(let e of n){if(e[0]>=t.column||e===s){e=e[0]!==t.column?i:e,t={column:e[3],line:e[2]+1};continue e}i=e}}throw new Error("Can't resolve original location of error.")}return t}(this.sourcemapChain,{column:i,line:r})),n=this.originalCode}catch(e){this.options.onLog(ft,function(e,t,n,s,i){return{cause:e,code:"SOURCEMAP_ERROR",id:t,loc:{column:n,file:t,line:s},message:`Error when using sourcemap for reporting an error: ${e.message}`,pos:i}}(e,this.id,i,r,t))}Vt(e,{column:i,line:r},n,this.id)}}addModulesToImportDescriptions(e){for(const t of e.values()){const{id:e}=this.resolvedIds[t.source];t.module=this.graph.modulesById.get(e)}}addRelevantSideEffectDependencies(e,t,n){const s=new Set,i=r=>{for(const o of r)s.has(o)||(s.add(o),t.has(o)?e.add(o):(o.info.moduleSideEffects||n.has(o))&&(o instanceof Wn||o.hasEffects()?e.add(o):i(o.dependencies)))};i(this.dependencies),i(n)}addSource(e,t){const n=(s=t.attributes,s?.length?Object.fromEntries(s.map(e=>[qc(e),e.value.value])):ae);var s;const i=this.sourcesWithAttributes.get(e);i?Kc(i,n)&&this.log(ft,cn(i,n,e,this.id),t.start):this.sourcesWithAttributes.set(e,n),"source"===t.phase&&this.sourcePhaseSources.add(e)}getImportedJsxFactoryVariable(e,t,n){const{id:s}=this.resolvedIds[n],i=this.graph.modulesById.get(s),[r]=i.getVariableForExportName(e,{importChain:[this.id]});return r||this.error((o=e,a=s,l=this.id,{code:"MISSING_JSX_EXPORT",exporter:a,id:l,message:`Export "${o}" is not defined in module "${xt(a)}" even though it is needed in "${xt(l)}" to provide JSX syntax. Please check your "jsx" option.`,names:[o],url:vt(It)}),t);var o,a,l}getVariableFromNamespaceReexports(e,t,n,s){let i=null;const r=new Map,o=new Set,a=new Set,l=new Set;for(const c of this.exportAllModules){if(c.info.syntheticNamedExports===e)continue;const[u,d]=au(c,e,t,!0,du(n),s,a,l);c instanceof Wn||d?.indirectExternal?o.add(u):u instanceof po?i||(i=u):u&&r.set(u,c)}if(r.size>0){const t=[...r],n=t[0][0];return 1===t.length?[n,{exportOrReexportModules:l,sideEffectModules:a}]:(this.options.onLog(ft,(c=e,u=this.id,d=t.map(([,e])=>e.id),{binding:c,code:"NAMESPACE_CONFLICT",ids:d,message:`Conflicting namespaces: "${xt(u)}" re-exports "${c}" from one of the modules ${bt(d.map(e=>xt(e)))} (will be ignored).`,reexporter:u})),[null])}var c,u,d;if(o.size>0){const t=[...o],n=t[0];return t.length>1&&this.options.onLog(ft,function(e,t,n,s){return{binding:e,code:"AMBIGUOUS_EXTERNAL_NAMESPACES",ids:s,message:`Ambiguous external namespace resolution: "${xt(t)}" re-exports "${e}" from one of the external modules ${bt(s.map(e=>xt(e)))}, guessing "${xt(n)}".`,reexporter:t}}(e,this.id,n.module.id,t.map(e=>e.module.id))),[n,{exportOrReexportModules:l,indirectExternal:!0,sideEffectModules:a}]}return i?[i,{exportOrReexportModules:l,sideEffectModules:a}]:[null]}includeAndGetAdditionalMergedNamespaces(){const e=new Set,t=new Set;for(const n of[this,...this.exportAllModules])if(n instanceof Wn){const[t]=n.getVariableForExportName("*",{importChain:[this.id]});t.includePath(Ie,ze()),this.includedImports.add(t),e.add(t)}else if(n.info.syntheticNamedExports){const e=n.getSyntheticNamespace();e.includePath(Ie,ze()),this.includedImports.add(e),t.add(e)}return[...t,...e]}includeDynamicImport(e){const{resolution:t}=e;t instanceof cu&&(t.includedDynamicImporters.includes(this)||(t.includedDynamicImporters.push(this),this.astContext.usesTopLevelAwait&&t.includedTopLevelAwaitingDynamicImporters.add(this)))}includeVariable(e,t,n){const{included:s,module:i}=e;if(e.includePath(t,n),s)i instanceof cu&&i!==this&&lu(e,this);else if(this.graph.needsTreeshakingPass=!0,i instanceof cu&&(i.includeModuleInExecution(),i!==this)){const t=lu(e,this);for(const e of t)e.includeModuleInExecution()}}includeVariableInModule(e,t,n){this.includeVariable(e,t,n);const s=e.module;s&&s!==this&&this.includedImports.add(e)}shimMissingExport(e){var t,n;this.options.onLog(ft,(t=this.id,{binding:n=e,code:"SHIMMED_EXPORT",exporter:t,message:`Missing export "${n}" has been shimmed in module "${xt(t)}".`})),this.exportDescriptions.set(e,ou)}tryParse(){try{return Gc(this.info.code,{jsx:!1!==this.options.jsx})}catch(e){return this.error(Pn(e,this.id),e.pos)}}}function uu(e,t,n){if(e.module instanceof cu&&e.module!==n){const s=e.module.cycles;if(s.size>0){const i=n.cycles;for(const r of i)if(s.has(r)){t.alternativeReexportModules.set(e,n);break}}}}const du=e=>e&&new Map(Array.from(e,([e,t])=>[e,new Set(t)])),hu=([e],[t])=>et?1:0,pu=(e,t)=>[e,t].filter(Boolean).join("\n"),fu=(e,t)=>[e,t].filter(Boolean).join("\n\n");const mu={amd:bu,cjs:bu,es:yu,iife:bu,system:yu,umd:bu};function gu(e,t,n,s,i,r,o,a,l,c,u,d,h,p){const f=[...e].reverse();for(const e of f)e.scope.addUsedOutsideNames(s,i,d,h);!function(e,t,n){for(const s of t){s.info.safeVariableNames||={};for(const t of s.scope.variables.values())if(t.included&&!(t.renderBaseName||t instanceof co&&t.getOriginalVariable()!==t)){const n=Object.getOwnPropertyDescriptor(s.info.safeVariableNames,t.name)?.value;if(n&&!e.has(n)){e.add(n),t.setRenderNames(null,n);continue}t.setRenderNames(null,Ri(t.name,e,t.forbiddenNames)),s.info.safeVariableNames[t.name]=t.renderName}if(n.has(s)){const t=s.namespace;t.setRenderNames(null,Ri(t.name,e,t.forbiddenNames))}}}(s,f,p),mu[i](s,n,t,r,o,a,l,c,u);for(const e of f)e.scope.deconflict(i,d,h)}function yu(e,t,n,s,i,r,o,a,l){for(const t of n.dependencies)(i||t instanceof fo)&&(t.variableName=Ri(t.suggestedVariableName,e,null));for(const n of t){const t=n.module,s=n.name;n.isNamespace&&(i||t instanceof Wn)?n.setRenderNames(null,(t instanceof Wn?a.get(t):o.get(t)).variableName):t instanceof Wn&&n.isSourcePhase?n.setRenderNames(null,Ri(t.suggestedVariableName+"__source",e,n.forbiddenNames)):t instanceof Wn&&"default"===s?n.setRenderNames(null,Ri([...t.exportedVariables].some(([e,t])=>"*"===t&&e.included)?t.suggestedVariableName+"__default":t.suggestedVariableName,e,n.forbiddenNames)):n.setRenderNames(null,Ri(Fn(s),e,n.forbiddenNames))}for(const t of l)t.setRenderNames(null,Ri(t.name,e,t.forbiddenNames))}function bu(e,t,{deconflictedDefault:n,deconflictedNamespace:s,dependencies:i},r,o,a,l,c){for(const t of i)t.variableName=Ri(t.suggestedVariableName,e,null);for(const t of s)t.namespaceVariableName=Ri(`${t.suggestedVariableName}__namespace`,e,null);for(const t of n)t.defaultVariableName=s.has(t)&&vr(r(t.id),a)?t.namespaceVariableName:Ri(`${t.suggestedVariableName}__default`,e,null);for(const e of t){const t=e.module;if(t instanceof Wn){const n=c.get(t),s=e.name;if("default"===s){const s=r(t.id),i=Ar[s]?n.defaultVariableName:n.variableName;Sr(s,a)?e.setRenderNames(i,"default"):e.setRenderNames(null,i)}else"*"===s?e.setRenderNames(null,$r[r(t.id)]?n.namespaceVariableName:n.variableName):e.setRenderNames(n.variableName,null)}else{const n=l.get(t);o&&e.isNamespace?e.setRenderNames(null,"default"===n.exportMode?n.namespaceVariableName:n.variableName):"default"===n.exportMode?e.setRenderNames(null,n.variableName):e.setRenderNames(n.variableName,n.getVariableExportName(e))}}}function Eu(e,{exports:t,name:n,format:s},i,r){const o=e.getExportNames();if("default"===t){if(1!==o.length||"default"!==o[0])return Bt(fn("default",o,i))}else if("none"===t&&o.length>0)return Bt(fn("none",o,i));return"auto"===t&&(0===o.length?t="none":1===o.length&&"default"===o[0]?t="default":("es"!==s&&"system"!==s&&o.includes("default")&&r(ft,function(e,t){return{code:"MIXED_EXPORTS",id:e,message:`Entry module "${xt(e)}" is using named and default exports together. Consumers of your bundle will have to use \`${t||"chunk"}.default\` to access the default export, which may not be what you want. Use \`output.exports: "named"\` to disable this warning.`,url:vt(kt)}}(i,n)),t="named")),t}function xu(e){const t=e.split("\n"),n=t.filter(e=>/^\t+/.test(e)),s=t.filter(e=>/^ {2,}/.test(e));if(0===n.length&&0===s.length)return null;if(n.length>=s.length)return"\t";const i=s.reduce((e,t)=>{const n=/^ +/.exec(t)[0].length;return Math.min(n,e)},1/0);return" ".repeat(i)}function Au(e,t,n,s,i,r){const o=e.getDependenciesToBeIncluded();for(const e of o){if(e instanceof Wn){t.push(r.get(e));continue}const o=i.get(e);o===s?n.has(e)||(n.add(e),Au(e,t,n,s,i,r)):t.push(o)}}const Su="!~{",$u="}~",vu=new RegExp(`${Su}[0-9a-zA-Z_$]{1,16}${$u}`,"g"),Pu=(e,t)=>e.replace(vu,e=>t.get(e)||e),Iu=(e,t,n)=>e.replace(vu,e=>e===t?n:e),wu=Symbol("bundleKeys"),Nu={type:"placeholder"};function ku(e,t,n){return At(e)?Bt(Cn(`Invalid pattern "${e}" for "${t}", patterns can be neither absolute nor relative paths. If you want your files to be stored in a subdirectory, write its name without a leading slash like this: subdirectory/pattern.`)):e.replace(/\[(\w+)(:\d+)?]/g,(e,s,i)=>{if(!n.hasOwnProperty(s)||i&&"hash"!==s)return Bt(Cn(`"[${s}${i||""}]" is not a valid placeholder in the "${t}" pattern.`));const r=n[s](i&&Number.parseInt(i.slice(1)));return At(r)?Bt(Cn(`Invalid substitution "${r}" for placeholder "[${s}]" in "${t}" pattern, can be neither absolute nor relative path.`)):r})}function Cu(e,{[wu]:t}){if(!t.has(e.toLowerCase()))return e;const n=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\")),s=e.slice(0,n+1),i=e.slice(n+1),r=i.indexOf(".",1),o=s+(-1===r?i:i.slice(0,r)),a=-1===r?"":i.slice(r);let l,c=1;for(;t.has((l=o+ ++c+a).toLowerCase()););return l}const Ru=["Object","Promise","module","exports","require","__filename","__dirname",...zr],Du=new Set([".js",".jsx",".ts",".tsx",".mjs",".mts",".cjs",".cts"]);function Ou(e,t,n,s){const i="function"==typeof t?t(e.id):t[e.id];return i||(n?(s(ft,(r=e.id,o=e.variableName,{code:"MISSING_GLOBAL_NAME",id:r,message:`No name was provided for external module "${r}" in "output.globals" – guessing "${o}".`,names:[o],url:vt("configuration-options/#output-globals")})),e.variableName):void 0);var r,o}class Mu{constructor(e,t,n,s,i,r,o,a,l,c,u,d,h,p,f){this.orderedModules=e,this.inputOptions=t,this.outputOptions=n,this.unsetOptions=s,this.pluginDriver=i,this.modulesById=r,this.chunkByModule=o,this.externalChunkByModule=a,this.facadeChunkByModule=l,this.includedNamespaces=c,this.manualChunkAlias=u,this.getPlaceholder=d,this.bundle=h,this.inputBase=p,this.snippets=f,this.dependencies=new Set,this.entryModules=[],this.exportMode="named",this.facadeModule=null,this.namespaceVariableName="",this.variableName="",this.isManualChunk=!1,this.accessedGlobalsByScope=new Map,this.dynamicEntryModules=[],this.dynamicName=null,this.exportNamesByVariable=new Map,this.exports=new Set,this.exportsByName=new Map,this.fileName=null,this.implicitEntryModules=[],this.implicitlyLoadedBefore=new Set,this.imports=new Set,this.includedDynamicImports=null,this.includedReexportsByModule=new Map,this.isEmpty=!0,this.name=null,this.needsExportsShim=!1,this.preRenderedChunkInfo=null,this.preliminaryFileName=null,this.preliminarySourcemapFileName=null,this.renderedChunkInfo=null,this.renderedDependencies=null,this.renderedModules=Object.create(null),this.sortedExportNames=null,this.strictFacade=!1,this.allowExtensionModules=new Set,this.execIndex=e.length>0?e[0].execIndex:1/0;const m=new Set(e);for(const t of e){o.set(t,this),t.namespace.included&&!n.preserveModules&&c.add(t),this.isEmpty&&t.isIncluded()&&(this.isEmpty=!1),(t.info.isEntry||n.preserveModules)&&this.entryModules.push(t);for(const e of t.includedDynamicImporters)if(!m.has(e)){this.dynamicEntryModules.push(t),t.info.syntheticNamedExports&&(c.add(t),this.exports.add(t.namespace));break}t.implicitlyLoadedAfter.size>0&&this.implicitEntryModules.push(t)}this.suggestedVariableName=Fn(this.generateVariableName()),this.isManualChunk=null!==u}static generateFacade(e,t,n,s,i,r,o,a,l,c,u,d,h,p,f){const m=new Mu([],e,t,n,s,i,r,o,a,l,null,d,h,p,f);m.assignFacadeName(u,c),a.has(c)||a.set(c,m);for(const e of c.getDependenciesToBeIncluded())m.dependencies.add(e instanceof cu?r.get(e):o.get(e));return!m.dependencies.has(r.get(c))&&c.info.moduleSideEffects&&c.hasEffects()&&m.dependencies.add(r.get(c)),m.ensureReexportsAreAvailableForModule(c),m.facadeModule=c,m.strictFacade=!0,m}canModuleBeFacade(e,t){const n=e.getExportNamesByVariable();for(const e of this.exports)if(!n.has(e))return!1;for(const s of t)if(!(s.module===e||n.has(s)||s instanceof po&&n.has(s.getBaseVariable())))return!1;return!0}finalizeChunk(e,t,n,s){const i=this.getRenderedChunkInfo(),r=e=>Pu(e,s),o=i.fileName,a=this.fileName=r(o);return{...i,code:e,dynamicImports:i.dynamicImports.map(r),fileName:a,implicitlyLoadedBefore:i.implicitlyLoadedBefore.map(r),importedBindings:Object.fromEntries(Object.entries(i.importedBindings).map(([e,t])=>[r(e),t])),imports:i.imports.map(r),map:t,preliminaryFileName:o,referencedFiles:i.referencedFiles.map(r),sourcemapFileName:n}}generateExports(){this.sortedExportNames=null;const e=new Set(this.exports);if(null!==this.facadeModule&&(!1!==this.facadeModule.preserveSignature||this.strictFacade)){const t=this.facadeModule.getExportNamesByVariable();for(const[n,s]of t){this.exportNamesByVariable.set(n,[...s]);for(const e of s)this.exportsByName.set(e,n);e.delete(n)}}for(const t of this.allowExtensionModules){const n=t.getExportNamesByVariable();for(const[t,s]of n){this.exportNamesByVariable.set(t,[...s]);for(const e of s)this.exportsByName.set(e,t);e.delete(t)}}this.outputOptions.minifyInternalExports?function(e,t,n){let s=0;for(const i of e){let[e]=i.name;if(t.has(e))do{e=Ci(++s),49===e.charCodeAt(0)&&(s+=9*64**(e.length-1),e=Ci(s))}while(Tn.has(e)||t.has(e));t.set(e,i),n.set(i,[e])}}(e,this.exportsByName,this.exportNamesByVariable):function(e,t,n){for(const s of e){let e=0,i=s.name;for(;t.has(i);)i=s.name+"$"+ ++e;t.set(i,s),n.set(s,[i])}}(e,this.exportsByName,this.exportNamesByVariable),(this.outputOptions.preserveModules||this.facadeModule&&this.facadeModule.info.isEntry)&&(this.exportMode=Eu(this,this.outputOptions,this.facadeModule.id,this.inputOptions.onLog))}generateFacades(){const e=[],t=new Set([...this.entryModules,...this.implicitEntryModules]),n=new Set(this.dynamicEntryModules.map(({namespace:e})=>e));for(const s of t){if("allow-extension"===s.preserveSignature){if(this.canPreserveModuleExports(s)&&!s.chunkFileNames.size&&s.chunkNames.every(({isUserDefined:e})=>!e)){this.allowExtensionModules.add(s),this.facadeModule||(this.facadeModule=s,this.strictFacade=!1,this.assignFacadeName({},s,this.outputOptions.preserveModules)),this.facadeChunkByModule.set(s,this);continue}}const t=Array.from(new Set(s.chunkNames.filter(({isUserDefined:e})=>e).map(({name:e})=>e)),e=>({name:e}));if(0===t.length&&s.isUserDefinedEntryPoint&&t.push({}),t.push(...Array.from(s.chunkFileNames,e=>({fileName:e}))),0===t.length&&t.push({}),!this.facadeModule){const e=!this.outputOptions.preserveModules&&("strict"===s.preserveSignature||"exports-only"===s.preserveSignature&&s.getExportNamesByVariable().size>0);e&&!this.canModuleBeFacade(s,n)||(this.facadeModule=s,this.facadeChunkByModule.set(s,this),s.preserveSignature&&(this.strictFacade=e),this.assignFacadeName(t.shift(),s,this.outputOptions.preserveModules))}for(const n of t)e.push(Mu.generateFacade(this.inputOptions,this.outputOptions,this.unsetOptions,this.pluginDriver,this.modulesById,this.chunkByModule,this.externalChunkByModule,this.facadeChunkByModule,this.includedNamespaces,s,n,this.getPlaceholder,this.bundle,this.inputBase,this.snippets))}for(const e of this.dynamicEntryModules)e.info.syntheticNamedExports||(!this.facadeModule&&this.canModuleBeFacade(e,n)?(this.facadeModule=e,this.facadeChunkByModule.set(e,this),this.strictFacade=!0,this.dynamicName=_u(e)):this.facadeModule===e&&!this.strictFacade&&this.canModuleBeFacade(e,n)?this.strictFacade=!0:this.facadeChunkByModule.get(e)?.strictFacade||(this.includedNamespaces.add(e),this.exports.add(e.namespace)));return this.outputOptions.preserveModules||this.addNecessaryImportsForFacades(),e}canPreserveModuleExports(e){const t=e.getExportNamesByVariable();for(const[e,n]of t)for(const t of n){const n=this.exportsByName.get(t);if(n&&n!==e)return!1}for(const[e,n]of t)for(const t of n)this.exportsByName.set(t,e);return!0}getChunkName(){return this.name??=this.outputOptions.sanitizeFileName(this.getFallbackChunkName())}getExportNames(){return this.sortedExportNames??=[...this.exportsByName.keys()].sort()}getFileName(){return this.fileName||this.getPreliminaryFileName().fileName}getImportPath(e){return hr($t(e,this.getFileName(),"amd"===this.outputOptions.format&&!this.outputOptions.amd.forceJsExtensionForImports,!0))}getPreliminaryFileName(){if(this.preliminaryFileName)return this.preliminaryFileName;let e,t=null;const{chunkFileNames:n,entryFileNames:s,file:i,format:r,preserveModules:o}=this.outputOptions;if(i)e=F(i);else if(null===this.fileName){const[i,a]=o||this.facadeModule?.isUserDefinedEntryPoint?[s,"output.entryFileNames"]:[n,"output.chunkFileNames"];e=ku("function"==typeof i?i(this.getPreRenderedChunkInfo()):i,a,{format:()=>r,hash:e=>t||(t=this.getPlaceholder(a,e||8)),name:()=>this.getChunkName()}),t||(e=Cu(e,this.bundle))}else e=this.fileName;return t||(this.bundle[e]=Nu),this.preliminaryFileName={fileName:e,hashPlaceholder:t}}getPreliminarySourcemapFileName(){if(this.preliminarySourcemapFileName)return this.preliminarySourcemapFileName;const{sourcemapFileNames:e,format:t}=this.outputOptions;if(!e)return null;let n=null;const[s,i]=[e,"output.sourcemapFileNames"];let r=ku("function"==typeof s?s(this.getPreRenderedChunkInfo()):s,i,{chunkhash:()=>this.getPreliminaryFileName().hashPlaceholder||"",format:()=>t,hash:e=>n||(n=this.getPlaceholder(i,e||8)),name:()=>this.getChunkName()});return n||(r=Cu(r,this.bundle)),this.preliminarySourcemapFileName={fileName:r,hashPlaceholder:n}}getRenderedChunkInfo(){if(this.renderedChunkInfo)return this.renderedChunkInfo;const e=this.getRenderedDependencies();return this.renderedChunkInfo={...this.getPreRenderedChunkInfo(),dynamicImports:this.getDynamicDependencies().map(zu),fileName:this.getFileName(),implicitlyLoadedBefore:Array.from(this.implicitlyLoadedBefore,zu),importedBindings:Tu(e,zu),imports:Array.from(e.keys(),zu),modules:this.renderedModules,referencedFiles:this.getReferencedFiles()}}getVariableExportName(e){return this.outputOptions.preserveModules&&e instanceof uo?"*":this.exportNamesByVariable.get(e)[0]}link(){this.dependencies=function(e,t,n,s){const i=[],r=new Set;for(let o=t.length-1;o>=0;o--){const a=t[o];if(!r.has(a)){const t=[];Au(a,t,r,e,n,s),i.unshift(t)}}const o=new Set;for(const e of i)for(const t of e)o.add(t);return o}(this,this.orderedModules,this.chunkByModule,this.externalChunkByModule);for(const e of this.orderedModules)this.addImplicitlyLoadedBeforeFromModule(e),this.setUpChunkImportsAndExportsForModule(e)}inlineTransitiveImports(){const{facadeModule:e,dependencies:t,outputOptions:n}=this,{hoistTransitiveImports:s,preserveModules:i}=n;if(s&&!i&&null!==e)for(const e of t)e instanceof Mu&&this.inlineChunkDependencies(e)}async render(){const{exportMode:e,facadeModule:t,inputOptions:{onLog:n},outputOptions:s,pluginDriver:i,snippets:r}=this,{format:o,preserveModules:a}=s,l=this.getPreliminaryFileName(),c=this.getPreliminarySourcemapFileName(),{accessedGlobals:u,indent:d,magicString:h,renderedSource:p,usedModules:f,usesTopLevelAwait:m}=this.renderModules(l.fileName),g=[...this.getRenderedDependencies().values()],y="none"===e?[]:this.getChunkExportDeclarations(o);let b=y.length>0,E=!1;for(const e of g){const{reexports:t}=e;t?.length&&(b=!0,!E&&t.some(e=>"default"===e.reexported)&&(E=!0),"es"===o&&(e.reexports=t.filter(({reexported:e})=>!y.find(({exported:t})=>t===e))))}if(!E)for(const{exported:e}of y)if("default"===e){E=!0;break}const{intro:x,outro:A,banner:S,footer:$}=await async function(e,t,n){try{let[s,i,r,o]=await Promise.all([t.hookReduceValue("banner",e.banner(n),[n],pu),t.hookReduceValue("footer",e.footer(n),[n],pu),t.hookReduceValue("intro",e.intro(n),[n],fu),t.hookReduceValue("outro",e.outro(n),[n],fu)]);return r&&(r+="\n\n"),o&&(o=`\n\n${o}`),s&&(s+="\n"),i&&(i="\n"+i),{banner:s,footer:i,intro:r,outro:o}}catch(e){return Bt((s=e.message,{code:"ADDON_ERROR",message:`Could not retrieve "${e.hook}". Check configuration of plugin "${e.plugin}".\n\tError Message: ${s}`}))}var s}(s,i,this.getRenderedChunkInfo());if(Vo[o](p,{accessedGlobals:u,dependencies:g,exports:y,hasDefaultExport:E,hasExports:b,id:l.fileName,indent:d,intro:x,isEntryFacade:a||null!==t&&t.info.isEntry,isModuleFacade:null!==t,log:n,namedExportsMode:"default"!==e,outro:A,snippets:r,usesTopLevelAwait:m},s),S&&h.prepend(S),"es"===o||"cjs"===o){const e=null!==t&&t.info.isEntry&&t.shebang;e&&h.prepend(`#!${e}\n`)}return $&&h.append($),{chunk:this,magicString:h,preliminaryFileName:l,preliminarySourcemapFileName:c,usedModules:f}}addImplicitlyLoadedBeforeFromModule(e){const{chunkByModule:t,implicitlyLoadedBefore:n}=this;for(const s of e.implicitlyLoadedBefore){const e=t.get(s);e&&e!==this&&n.add(e)}}addNecessaryImportsForFacades(){for(const[e,t]of this.includedReexportsByModule)if(this.includedNamespaces.has(e))for(const e of t)this.imports.add(e)}assignFacadeName({fileName:e,name:t},n,s){e?this.fileName=e:this.name=this.outputOptions.sanitizeFileName(t||(s?this.getPreserveModulesChunkNameFromModule(n):_u(n)))}checkCircularDependencyImport(e,t){const n=e.module;if(n instanceof cu){const s=this.chunkByModule.get(n);let i;do{if(i=t.alternativeReexportModules.get(e),i){this.chunkByModule.get(i)!==s&&this.inputOptions.onLog(ft,rn(n.getExportNamesByVariable().get(e)?.[0]||"*",n.id,i.id,t.id,this.outputOptions.preserveModules)),t=i}}while(i)}}ensureReexportsAreAvailableForModule(e){const t=[],n=e.getExportNamesByVariable();for(const s of n.keys()){const n=s instanceof po,i=n?s.getBaseVariable():s;if(this.checkCircularDependencyImport(i,e),!(i instanceof uo&&this.outputOptions.preserveModules)){const e=i.module;if(e instanceof cu){const s=this.chunkByModule.get(e);s&&s!==this&&(s.exports.add(i),t.push(i),n&&this.imports.add(i))}}}t.length>0&&this.includedReexportsByModule.set(e,t)}generateVariableName(){if(this.manualChunkAlias)return this.manualChunkAlias;const e=this.entryModules[0]||this.implicitEntryModules[0]||this.dynamicEntryModules[0]||this.orderedModules[this.orderedModules.length-1];return e?_u(e):"chunk"}getChunkExportDeclarations(e){const t=[];for(const n of this.getExportNames()){if("*"===n[0])continue;const s=this.exportsByName.get(n);if(!(s instanceof po)){const t=s.module;if(t){const s=this.chunkByModule.get(t);if(s!==this){if(!s||"es"!==e)continue;const t=this.renderedDependencies.get(s);if(!t)continue;const{imports:i,reexports:r}=t,o=r?.find(({reexported:e})=>e===n),a=i?.find(({imported:e})=>e===o?.imported);if(!a)continue}}}let i=null,r=!1,o=s.getName(this.snippets.getPropertyAccess);if(s instanceof vi){for(const e of s.declarations)if(e.parent instanceof ar||e instanceof lr&&e.declaration instanceof ar){r=!0;break}}else s instanceof po&&(i=o,"es"===e&&(o=s.renderName));t.push({exported:n,expression:i,hoisted:r,local:o})}return t}getDependenciesToBeDeconflicted(e,t,n){const s=new Set,i=new Set,r=new Set;for(const t of[...this.exportNamesByVariable.keys(),...this.imports])if(e||t.isNamespace){const o=t.module;if(o instanceof Wn){const a=this.externalChunkByModule.get(o);s.add(a),e&&("default"===t.name?Ar[n(o.id)]&&i.add(a):t.isNamespace&&$r[n(o.id)]&&(this.imports.has(t)||!this.exportNamesByVariable.get(t)?.every(e=>"*"===e[0]))&&r.add(a))}else{const n=this.chunkByModule.get(o);n!==this&&(s.add(n),e&&"default"===n.exportMode&&t.isNamespace&&r.add(n))}}if(t)for(const e of this.dependencies)s.add(e);return{deconflictedDefault:i,deconflictedNamespace:r,dependencies:s}}getDynamicDependencies(){return this.getIncludedDynamicImports().map(e=>e.facadeChunk||e.chunk||e.externalChunk||e.resolution).filter(e=>e!==this&&(e instanceof Mu||e instanceof fo))}getDynamicImportStringAndAttributes(e,t,n){const{externalImportAttributes:s}=this.outputOptions,i=["es","cjs"].includes(this.outputOptions.format)&&s;if(e instanceof Wn){const n=this.externalChunkByModule.get(e),s=n.getImportAttributes(this.snippets);return[`'${n.getImportPath(t)}'`,s||!!i||null]}let r=null;if(i){const e=Wc(n);r=e===ae||mo(e,this.snippets)}return[e||"",r]}getFallbackChunkName(){return this.manualChunkAlias?this.manualChunkAlias:this.dynamicName?this.dynamicName:this.fileName?Et(this.fileName):Et(this.orderedModules[this.orderedModules.length-1].id)}getImportSpecifiers(){const{interop:e}=this.outputOptions,t=new Map;for(const n of this.imports){const s=n.module;let i,r;const o=s instanceof Wn&&n.isSourcePhase;if(s instanceof Wn){if(i=this.externalChunkByModule.get(s),r=n.name,!o&&"default"!==r&&"*"!==r&&"defaultOnly"===e(s.id))return Bt(Nn(s.id,r,!1))}else i=this.chunkByModule.get(s),r=i.getVariableExportName(n);ue(t,i,he).push({imported:r,local:n.getName(this.snippets.getPropertyAccess),phase:o?"source":"instance"})}return t}getIncludedDynamicImports(){if(this.includedDynamicImports)return this.includedDynamicImports;const e=[];for(const t of this.orderedModules)for(const{node:n}of t.dynamicImports){if(!n.included)continue;const{resolution:t}=n;e.push(t instanceof cu?{chunk:this.chunkByModule.get(t),externalChunk:null,facadeChunk:this.facadeChunkByModule.get(t),node:n,resolution:t}:t instanceof Wn?{chunk:null,externalChunk:this.externalChunkByModule.get(t),facadeChunk:null,node:n,resolution:t}:{chunk:null,externalChunk:null,facadeChunk:null,node:n,resolution:t})}return this.includedDynamicImports=e}getPreRenderedChunkInfo(){if(this.preRenderedChunkInfo)return this.preRenderedChunkInfo;const{dynamicEntryModules:e,facadeModule:t,implicitEntryModules:n,orderedModules:s}=this;return this.preRenderedChunkInfo={exports:this.getExportNames(),facadeModuleId:t&&t.id,isDynamicEntry:e.length>0,isEntry:!!t?.info.isEntry,isImplicitEntry:n.length>0,moduleIds:s.map(({id:e})=>e),name:this.getChunkName(),type:"chunk"}}getPreserveModulesChunkNameFromModule(e){const t=Lu(e);if(t)return t;const{preserveModulesRoot:n,sanitizeFileName:s}=this.outputOptions,i=s(V(e.id.split(Bu,1)[0])),r=s(this.inputBase),o=U(i),a=Du.has(o)?i.slice(0,-o.length):i;return B(a)?n&&W(a).startsWith(n)?a.slice(n.length).replace(/^[/\\]/,""):"/"===r&&"/"!==a[0]?H(r,a.replace(/^[a-zA-Z]:[/\\]/,"/")):H(r,a):this.outputOptions.virtualDirname.replace(/\/$/,"")+"/"+F(a)}getReexportSpecifiers(){const{externalLiveBindings:e,interop:t}=this.outputOptions,n=new Map;for(let s of this.getExportNames()){let i,r,o;if("*"===s[0]){const n=s.slice(1);"defaultOnly"===t(n)&&this.inputOptions.onLog(ft,kn(n)),o=e,i=this.externalChunkByModule.get(this.modulesById.get(n)),r=s="*"}else{const n=this.exportsByName.get(s);if(n instanceof po)continue;const a=n.module;if(a instanceof cu){if(i=this.chunkByModule.get(a),i===this)continue;r=i.getVariableExportName(n),o=n.isReassigned}else{if(i=this.externalChunkByModule.get(a),r=n.name,"default"!==r&&"*"!==r&&"defaultOnly"===t(a.id))return Bt(Nn(a.id,r,!0));o=e&&("default"!==r||Sr(t(a.id),!0))}}ue(n,i,he).push({imported:r,needsLiveBinding:o,reexported:s})}return n}getReferencedFiles(){const e=new Set;for(const t of this.orderedModules)for(const n of t.importMetas){const t=n.getReferencedFileName(this.pluginDriver);t&&e.add(t)}return[...e]}getRenderedDependencies(){if(this.renderedDependencies)return this.renderedDependencies;const e=this.getImportSpecifiers(),t=this.getReexportSpecifiers(),n=new Map,s=this.getFileName();for(const i of this.dependencies){const r=e.get(i)||null,o=t.get(i)||null;if(null===r&&null===o&&i instanceof fo&&!i.moduleSideEffects&&!this.outputOptions.hoistTransitiveImports)continue;const a=i instanceof fo||"default"!==i.exportMode,l=i.getImportPath(s),c=r?.find(e=>"source"===e.phase),u=r?.filter(e=>"source"!==e.phase)??null;n.set(i,{attributes:i instanceof fo?i.getImportAttributes(this.snippets):null,defaultVariableName:i.defaultVariableName,globalName:i instanceof fo&&("umd"===this.outputOptions.format||"iife"===this.outputOptions.format)&&Ou(i,this.outputOptions.globals,null!==(r||o),this.inputOptions.onLog),importPath:l,imports:u&&u.length>0?u:null,isChunk:i instanceof Mu,name:i.variableName,namedExportsMode:a,namespaceVariableName:i.namespaceVariableName,reexports:o,sourcePhaseImport:c?.local})}return this.renderedDependencies=n}inlineChunkDependencies(e){for(const t of e.dependencies)this.dependencies.has(t)||(this.dependencies.add(t),t instanceof Mu&&this.inlineChunkDependencies(t))}renderModules(e){const{accessedGlobalsByScope:t,dependencies:n,exportNamesByVariable:s,includedNamespaces:i,inputOptions:{onLog:r},isEmpty:o,orderedModules:a,outputOptions:l,pluginDriver:c,renderedModules:u,snippets:d}=this,{compact:h,format:p,freeze:f,generatedCode:{symbols:m},importAttributesKey:g}=l,{_:y,cnst:b,n:E}=d;this.setDynamicImportResolutions(e),this.setImportMetaResolutions(e),this.setIdentifierRenderResolutions();const x=new D({separator:`${E}${E}`}),A=function(e,t){if(!0!==t.indent)return t.indent;for(const t of e){const e=xu(t.originalCode);if(null!==e)return e}return"\t"}(a,l),S=[];let $="";const v=new Set,P=new Map,I={accessedDocumentCurrentScript:!1,exportNamesByVariable:s,format:p,freeze:f,importAttributesKey:g,indent:A,pluginDriver:c,snippets:d,symbols:m,useOriginalName:null};let w=!1;for(const e of a){let n,s=0;if(e.isIncluded()||i.has(e)){const r=e.render(I);!I.accessedDocumentCurrentScript&&Yr.includes(p)&&this.accessedGlobalsByScope.get(e.scope)?.delete(xr),I.accessedDocumentCurrentScript=!1,({source:n}=r),w||=r.usesTopLevelAwait,s=n.length(),s&&(h&&n.lastLine().includes("//")&&n.append("\n"),P.set(e,n),x.addSource(n),S.push(e));const o=e.namespace;if(i.has(e)){const e=o.renderBlock(I);o.renderFirst()?$+=E+e:x.addSource(new C(e))}const a=t.get(e.scope);if(a)for(const e of a)v.add(e)}const{renderedExports:r,removedExports:o}=e.getRenderedExports();u[e.id]={get code(){return n?.toString()??null},originalLength:e.originalCode.length,removedExports:o,renderedExports:r,renderedLength:s}}$&&x.prepend($+E+E),this.needsExportsShim&&x.prepend(`${E}${b} ${Ro}${y}=${y}void 0;${E}${E}`);const N=h?x:x.trim();var k;return o&&0===this.getExportNames().length&&0===n.size&&r(ft,{code:"EMPTY_BUNDLE",message:`Generated an empty chunk: "${k=this.getChunkName()}".`,names:[k]}),{accessedGlobals:v,indent:A,magicString:x,renderedSource:N,usedModules:S,usesTopLevelAwait:w}}setDynamicImportResolutions(e){const{accessedGlobalsByScope:t,outputOptions:n,pluginDriver:s,snippets:i}=this;for(const r of this.getIncludedDynamicImports())if(r.chunk){const{chunk:o,facadeChunk:a,node:l,resolution:c}=r;o===this?l.setInternalResolution(c.namespace):l.setExternalResolution((a||o).exportMode,n,i,s,t,`'${(a||o).getImportPath(e)}'`,!a?.strictFacade&&o.exportNamesByVariable.get(c.namespace)[0],null,this,a||o)}else{const{node:o,resolution:a}=r,[l,c]=this.getDynamicImportStringAndAttributes(a,e,o);o.setExternalResolution("external",n,i,s,t,l,!1,c,this,null)}}setIdentifierRenderResolutions(){const{format:e,generatedCode:{symbols:t},interop:n,preserveModules:s,externalLiveBindings:i}=this.outputOptions;for(const e of this.orderedModules)for(const t of e.scope.variables.values())t.setRenderNames(null,null);const r=new Set;for(const t of this.getExportNames()){const n=this.exportsByName.get(t);"es"!==e&&"system"!==e&&n.isReassigned&&!n.isId?n.setRenderNames("exports",t):n instanceof po?r.add(n):n.setRenderNames(null,null)}for(const e of this.orderedModules)if(e.needsExportShim){this.needsExportsShim=!0;break}const o=new Set(Ru);this.needsExportsShim&&o.add(Ro),t&&o.add("Symbol"),gu(this.orderedModules,this.getDependenciesToBeDeconflicted("es"!==e&&"system"!==e,"amd"===e||"umd"===e||"iife"===e,n),this.imports,o,e,n,s,i,this.chunkByModule,this.externalChunkByModule,r,this.exportNamesByVariable,this.accessedGlobalsByScope,this.includedNamespaces)}setImportMetaResolutions(e){const{accessedGlobalsByScope:t,includedNamespaces:n,orderedModules:s,outputOptions:{format:i}}=this;for(const r of s){for(const n of r.importMetas)n.setResolution(i,t,e);n.has(r)&&r.namespace.prepare(t)}}setUpChunkImportsAndExportsForModule(e){const t=new Set(e.includedImports);if(!this.outputOptions.preserveModules&&this.includedNamespaces.has(e))for(const n of e.getExportedVariablesByName().values())n.included&&t.add(n);for(let n of t){n instanceof co&&(n=n.getOriginalVariable()),n instanceof po&&(n=n.getBaseVariable());const t=this.chunkByModule.get(n.module);t!==this&&(this.imports.add(n),n.module instanceof cu&&(this.checkCircularDependencyImport(n,e),n instanceof uo&&this.outputOptions.preserveModules||t.exports.add(n)))}(this.includedNamespaces.has(e)||e.info.isEntry&&!1!==e.preserveSignature||e.includedDynamicImporters.some(e=>this.chunkByModule.get(e)!==this))&&this.ensureReexportsAreAvailableForModule(e);for(const{node:{included:t,resolution:n}}of e.dynamicImports)t&&n instanceof cu&&this.chunkByModule.get(n)===this&&!this.includedNamespaces.has(n)&&(this.includedNamespaces.add(n),this.ensureReexportsAreAvailableForModule(n))}}function _u(e){return Lu(e)??Et(e.id)}function Lu(e){return e.chunkNames.find(({isUserDefined:e})=>e)?.name??e.chunkNames[0]?.name}function Tu(e,t){const n={};for(const[s,i]of e){const e=new Set;if(i.imports)for(const{imported:t}of i.imports)e.add(t);if(i.reexports)for(const{imported:t}of i.reexports)e.add(t);n[t(s)]=[...e]}return n}const Bu=/[#?]/,zu=e=>e.getFileName();function*Vu(e){for(const t of e)yield*t}function Fu(e,t,n,s,i,r){const{chunkDefinitions:o,manualChunkModules:a,manualChunkModulesByModule:l}=function(e,t,n){const s=new Set(e.keys()),i=Object.create(null),r=[...e].sort(([e],[t])=>e.execIndex-t.execIndex);for(const[e,o]of r){const r=i[o]||=[];t&&n?r.push(e):ju(e,r,s)}const o=Object.entries(i),a=new Array(o.length),l=new Array(o.length),c=new Map;let u=0;for(const[e,t]of o){l[u]={alias:e,modules:t},a[u]=t;for(const e of t)c.set(e,t);u++}return{chunkDefinitions:l,manualChunkModules:a,manualChunkModulesByModule:c}}(t,i,r),{entriesAndManualChunksCount:c,dependentEntriesByModule:u,dynamicallyDependentEntriesByDynamicEntry:d,dynamicImportsByEntry:h,dynamicallyDependentEntriesByAwaitedDynamicEntry:p,awaitedDynamicImportsByEntry:f}=function(e,t,n){const s=new Set,i=new Set,r=new Map,o=new Set(e),a=e.map(e=>[e]).concat(t),l=new Array(a.length),c=new Array(a.length);let u=0;for(const e of a){const t=new Set,d=new Set;l[u]=t,c[u]=d;const h=new Set(e),p=new Set;for(const e of h){ue(r,e,de).add(u);const l=n.get(e);if(l&&!p.has(l)){p.add(l);for(const e of l)h.add(e)}for(const t of e.getDependenciesToBeIncluded())t instanceof Wn||h.add(t);for(const{node:{resolution:n}}of e.dynamicImports)if(n instanceof cu&&n.includedDynamicImporters.length>0&&!o.has(n)){s.add(n),o.add(n),a.push([n]),t.add(n);for(const e of n.includedTopLevelAwaitingDynamicImporters)if(h.has(e)){i.add(n),d.add(n);break}}for(const t of e.implicitlyLoadedBefore)o.has(t)||(s.add(t),o.add(t),a.push([t]))}u++}const{awaitedDynamicEntries:d,awaitedDynamicImportsByEntry:h,dynamicEntries:p,dynamicImportsByEntry:f}=function(e,t,n,s,i){const r=new Map,o=new Set,a=new Set;for(const[n,i]of e.entries())for(const e of i)r.set(e,n),t.has(e)&&o.add(n),s.has(e)&&a.add(n);const l=Uu(n,r),c=Uu(i,r);return{awaitedDynamicEntries:a,awaitedDynamicImportsByEntry:c,dynamicEntries:o,dynamicImportsByEntry:l}}(a,s,l,i,c);return{awaitedDynamicImportsByEntry:h,dependentEntriesByModule:r,dynamicallyDependentEntriesByAwaitedDynamicEntry:Gu(r,d,a,e=>e.includedTopLevelAwaitingDynamicImporters),dynamicallyDependentEntriesByDynamicEntry:Gu(r,p,a,e=>e.includedDynamicImporters),dynamicImportsByEntry:f,entriesAndManualChunksCount:a.length}}(e,a,l),m=function(e){const t=Object.create(null);for(const{dependentEntries:n,module:s}of e){let e=0n;for(const t of n)e|=1n<0&&s.includedTopLevelAwaitingDynamicImporters.size>0){n.push({alias:null,modules:[s]});continue}yield{dependentEntries:i,module:s}}}(u,l,o)),g=function(e,t){const n=new Array(e).fill(0n);let s=1n;for(const{dependentEntries:e}of t){for(const t of e)n[t]|=s;s<<=1n}return n}(c,m),y=Hu(g,d,h,c);!function(e,t,n){let s=1n;for(const{dependentEntries:i}of e){for(const e of i)(t[e]&s)===s&&0n===(n[e]&s)&&i.delete(e);s<<=1n}}(m,y,Hu(g,p,f,c));const{chunks:b,sideEffectAtoms:E,sizeByAtom:x}=function(e,t,n,s){const i=Object.create(null),r=new Map,o=new Array(e.length);let a=0n,l=1n,c=0;for(const{dependentEntries:u,modules:d}of e){let e=0n,h=-1n;for(const s of u)e|=1n<1?e.estimateSize():1);m||(a|=l),o[c++]=f,p.containedAtoms|=l,p.modules.push(...d),p.pure&&=m,p.size+=f,l<<=1n}const u=Object.values(i);return a|=function(e,t,n){const s=new Map;let i=0n;for(const r of e){const{dependencies:e,modules:o}=r;for(const a of o)for(const o of a.getDependenciesToBeIncluded())if(o instanceof Wn){if(o.info.moduleSideEffects){const e=ue(s,o,()=>{const e=n;return n<<=1n,i|=e,e});r.containedAtoms|=e,r.correlatedAtoms|=e}}else{const n=t.get(o);n&&n!==r&&(e.add(n),n.dependentChunks.add(r))}}return i}(u,r,l),{chunks:u,sideEffectAtoms:a,sizeByAtom:o}}(m,g,y,n);return o.push(...function(e,t,n,s,i){nu("optimize chunks",3);const r=function(e,t){const n=[],s=[];for(const i of e)(i.size1&&i("info",An(e.length,r.small.size,"Initially"));(function(e,t,n,s){const{small:i}=e;for(const r of i){const o=qu(r,e,n,s,t<=1?1:1/0);if(o){const{containedAtoms:n,correlatedAtoms:s,modules:a,pure:l,size:c}=r;i.delete(r),Ju(o,t,e).delete(o),o.modules.push(...a),o.size+=c,o.pure&&=l;const{dependencies:u,dependentChunks:d,dependentEntries:h}=o;o.correlatedAtoms&=s,o.containedAtoms|=n;for(const e of r.dependentEntries)h.add(e);for(const e of r.dependencies)u.add(e),e.dependentChunks.delete(r),e.dependentChunks.add(o);for(const e of r.dependentChunks)d.add(e),e.dependencies.delete(r),e.dependencies.add(o);u.delete(o),d.delete(o),Ju(o,t,e).add(o)}}})(r,t,n,s),t>1&&i("info",An(r.small.size+r.big.size,r.small.size,"After merging chunks"));return su("optimize chunks",3),[...r.small,...r.big]}(b,n,E,x,s).map(({modules:e})=>({alias:null,modules:e}))),o}function ju(e,t,n){const s=new Set([e]);for(const e of s){n.add(e),t.push(e);for(const t of e.dependencies)t instanceof Wn||n.has(t)||s.add(t)}}function Uu(e,t){const n=new Array(e.length);let s=0;for(const i of e){const e=new Set;for(const n of i)e.add(t.get(n));n[s++]=e}return n}function Gu(e,t,n,s){const i=new Map;for(const r of t){const t=ue(i,r,de),o=n[r];for(const n of o)for(const i of Vu([s(n),n.implicitlyLoadedAfter])){const n=e.get(i);if(n)for(const e of n)t.add(e)}}return i}function Hu(e,t,n,s){const i=Array.from({length:s},(e,n)=>t.has(n)?-1n:0n);for(const[s,r]of t){t.delete(s);const o=i[s];let a=o;for(const t of r)a&=e[t]|i[t];if(a!==o){i[s]=a;for(const e of n[s])ue(t,e,de).add(s)}}return i}function Wu({size:e},{size:t}){return e-t}function qu(e,{big:t,small:n},s,i,r){let o=null;for(const a of Vu([n,t])){if(e===a)continue;const t=Ku(e,a,r,s,i);if(t=t)return 1/0;return s}(o&~r,n,i)}function Ju(e,t,n){return e.sizee.execIndex>t.execIndex?1:-1;function Zu(e){e.sort(Yu)}function Qu(e){let t=0;const n=[],s=new Set,i=new Set,r=new Map,o=[],a=(e,t)=>{r.has(e)?s.has(e)||n.push(function(e,t,n){const s=Symbol(e.id),i=[e.id];let r=t;e.cycles.add(s);for(;r!==e;)r.cycles.add(s),i.push(r.id),r=n.get(r);return i.push(i[0]),i.reverse(),i}(e,t,r)):(r.set(e,t),l(e))},l=e=>{if(e instanceof cu){for(const t of e.dependencies)a(t,e);for(const t of e.implicitlyLoadedBefore)i.add(t);for(const{node:{resolution:t,scope:n}}of e.dynamicImports)t instanceof cu&&(n.context.usesTopLevelAwait?a(t,e):i.add(t));o.push(e)}e.execIndex=t++,s.add(e)};for(const t of e)r.has(t)||(r.set(t,null),l(t));for(const e of i)r.has(e)||(r.set(e,null),l(e));return{cyclePaths:n,orderedModules:o}}const ed=(e,t)=>t?`(${e})`:e;class td{constructor(e,t){this.isOriginal=!0,this.filename=e,this.content=t}traceSegment(e,t,n){return{column:t,line:e,name:n,source:this}}}class nd{constructor(e,t){this.sources=t,this.names=e.names,this.mappings=e.mappings}traceMappings(){const e=[],t=new Map,n=[],s=[],i=new Map,r=[];for(const o of this.mappings){const a=[];for(const r of o){if(1===r.length)continue;const o=this.sources[r[1]];if(!o)continue;const l=o.traceSegment(r[2],r[3],5===r.length?this.names[r[4]]:"");if(l){const{column:o,line:c,name:u,source:{content:d,filename:h}}=l;let p=t.get(h);if(void 0===p)p=e.length,e.push(h),t.set(h,p),n[p]=d;else if(null==n[p])n[p]=d;else if(null!=d&&n[p]!==d)return Bt(wn(h));const f=[r[0],p,c,o];if(u){let e=i.get(u);void 0===e&&(e=s.length,s.push(u),i.set(u,e)),f[4]=e}a.push(f)}}r.push(a)}return{mappings:r,names:s,sources:e,sourcesContent:n}}traceSegment(e,t,n){const s=this.mappings[e];if(!s)return null;let i=0;let r=s.length-1;for(;i<=r;){const e=i+r>>1;let o=s[e];if(o[0]!==t&&i===r){o=s[s[i][0]>t?Math.max(0,i-1):i]}if(o[0]===t||i===r){if(1==o.length)return null;const e=this.sources[o[1]];return e?e.traceSegment(o[2],o[3],5===o.length?this.names[o[4]]:n):null}o[0]>t?r=e-1:i=e+1}return null}}function sd(e){return function(t,n){return n.missing?(e(ft,(s=n.plugin,{code:Jt,message:`Sourcemap is likely to be incorrect: a plugin (${s}) was used to transform files, but didn't generate a sourcemap for the transformation. Consult the plugin documentation for help`,plugin:s,url:vt("troubleshooting/#warning-sourcemap-is-likely-to-be-incorrect")})),new nd({mappings:[],names:[]},[t])):new nd(n,[t]);var s}}function id(e,t,n,s,i){let r;if(n){const t=n.sources,s=n.sourcesContent||[],i=j(e)||".",o=n.sourceRoot||".",a=t.map((e,t)=>new td(W(i,o,e),s[t]));r=new nd(n,a)}else r=new td(e,t);return s.reduce(i,r)}let rd;const od=e=>function(e){let t,n;try{const r=Ia.__wbindgen_add_to_stack_pointer(-16);Ia.xxhashBase64Url(r,da(e));var s=fa().getInt32(r+0,!0),i=fa().getInt32(r+4,!0);return t=s,n=i,ma(s,i)}finally{Ia.__wbindgen_add_to_stack_pointer(16),Ia.__wbindgen_export(t,n,1)}}(ld(e)),ad={base36:e=>function(e){let t,n;try{const r=Ia.__wbindgen_add_to_stack_pointer(-16);Ia.xxhashBase36(r,da(e));var s=fa().getInt32(r+0,!0),i=fa().getInt32(r+4,!0);return t=s,n=i,ma(s,i)}finally{Ia.__wbindgen_add_to_stack_pointer(16),Ia.__wbindgen_export(t,n,1)}}(ld(e)),base64:od,hex:e=>function(e){let t,n;try{const r=Ia.__wbindgen_add_to_stack_pointer(-16);Ia.xxhashBase16(r,da(e));var s=fa().getInt32(r+0,!0),i=fa().getInt32(r+4,!0);return t=s,n=i,ma(s,i)}finally{Ia.__wbindgen_add_to_stack_pointer(16),Ia.__wbindgen_export(t,n,1)}}(ld(e))};function ld(e){return"string"==typeof e?"undefined"==typeof Buffer?(rd??=new TextEncoder,rd.encode(e)):Buffer.from(e):e}let cd="sourceMa";async function ud(e,t,n,s,i){nu("render chunks",2),function(e){for(const t of e)t.facadeModule&&t.facadeModule.isUserDefinedEntryPoint&&t.getPreliminaryFileName()}(e);const r=await Promise.all(e.map(e=>e.render()));su("render chunks",2),nu("transform chunks",2);const o=ad[s.hashCharacters],a=function(e){return Object.fromEntries(e.map(e=>{const t=e.getRenderedChunkInfo();return[t.fileName,t]}))}(e),{hashDependenciesByPlaceholder:l,initialHashesByPlaceholder:c,nonHashedChunksWithPlaceholders:u,placeholders:d,renderedChunksByPlaceholder:h}=await async function(e,t,n,s,i,r){const o=[],a=new Map,l=new Map,c=new Map,u=new Set;for(const{preliminaryFileName:{hashPlaceholder:t}}of e)t&&u.add(t);return await Promise.all(e.map(async({chunk:e,preliminaryFileName:{fileName:d,hashPlaceholder:h},preliminarySourcemapFileName:p,magicString:f,usedModules:m})=>{const g={chunk:e,fileName:d,sourcemapFileName:p?.fileName??null,...await dd(f,d,m,t,n,s,r)},{code:y,map:b}=g;if(h){const{containedPlaceholders:t,transformedCode:n}=((e,t)=>{const n=new Set,s=e.replace(vu,e=>t.has(e)?(n.add(e),`${Su}${"0".repeat(e.length-5)}${$u}`):e);return{containedPlaceholders:n,transformedCode:s}})(y,u);let r=n;const o=s.hookReduceValueSync("augmentChunkHash","",[e.getRenderedChunkInfo()],(e,t)=>(t&&(e+=t),e));o&&(r+=o),a.set(h,g),l.set(h,{containedPlaceholders:t,contentHash:i(r)})}else o.push(g);const E=p?.hashPlaceholder;b&&E&&c.set(p.hashPlaceholder,i(b.toString()).slice(0,p.hashPlaceholder.length))})),{hashDependenciesByPlaceholder:l,initialHashesByPlaceholder:c,nonHashedChunksWithPlaceholders:o,placeholders:u,renderedChunksByPlaceholder:a}}(r,a,s,n,o,i),p=function(e,t,n,s,i,r){const o=new Map(n);for(const n of s){const{fileName:s}=e.get(n);let a="";const l=new Set([n]);for(const e of l){const{containedPlaceholders:n,contentHash:s}=t.get(e);a+=s;for(const e of n)l.add(e)}let c,u;do{u&&(a=u),u=r(a).slice(0,n.length),c=Iu(s,n,u)}while(i[wu].has(c.toLowerCase()));i[c]=Nu,o.set(n,u)}return o}(h,l,c,d,t,o);!function(e,t,n,s,i,r){for(const{chunk:s,code:o,fileName:a,sourcemapFileName:l,map:c}of e.values()){let e=Pu(o,t);const u=Pu(a,t);let d=null;c&&(r.sourcemapDebugIds&&(e+=pd(e,c)),d=l?Pu(l,t):`${u}.map`,c.file=Pu(c.file??"",t),e+=hd(d,c,i,r)),n[u]=s.finalizeChunk(e,c,d,t)}for(const{chunk:e,code:o,fileName:a,sourcemapFileName:l,map:c}of s){let s=t.size>0?Pu(o,t):o,u=null;c&&(r.sourcemapDebugIds&&(s+=pd(s,c)),u=l?Pu(l,t):`${a}.map`,s+=hd(u,c,i,r)),n[a]=e.finalizeChunk(s,c,u,t)}}(h,p,t,u,n,s),su("transform chunks",2)}async function dd(e,t,n,s,i,r,o){let a=null;const l=[];let c=await r.hookReduceArg0("renderChunk",[e.toString(),s[t],i,{chunks:s}],(e,t,n)=>{if(null==t)return e;if("string"==typeof t&&(t={code:t,map:void 0}),null!==t.map){const e=jc(t.map);l.push(e||{missing:!0,plugin:n.name})}return t.code});const{compact:u,dir:d,file:h,sourcemap:p,sourcemapExcludeSources:f,sourcemapFile:m,sourcemapPathTransform:g,sourcemapIgnoreList:y}=i;if(u||"\n"===c[c.length-1]||(c+="\n"),p){let s;nu("sourcemaps",3),s=h?W(m||h):d?W(d,t):W(t);a=function(e,t,n,s,i,r){const o=sd(r),a=n.filter(e=>!e.excludeFromSourcemap).map(e=>id(e.id,e.originalCode,e.originalSourcemap,e.sourcemapChain,o)),l=new nd(t,a),c=s.reduce(o,l);let{sources:u,sourcesContent:d,names:h,mappings:p}=c.traceMappings();if(e){const t=j(e);u=u.map(e=>H(t,e)),e=F(e)}for(const e of n)Fc(e.originalSourcemap,e.sourcemapChain);return new E({file:e,mappings:p,names:h,sources:u,sourcesContent:i?void 0:d})}(s,e.generateDecodedMap({}),n,l,f,o);for(let e=0;e{const t=new Set;return new Proxy(e,{deleteProperty:(e,n)=>("string"==typeof n&&t.delete(n.toLowerCase()),Reflect.deleteProperty(e,n)),get:(e,n)=>n===wu?t:Reflect.get(e,n),set:(e,n,s)=>("string"==typeof n&&t.add(n.toLowerCase()),Reflect.set(e,n,s))})})(t);this.pluginDriver.setOutputBundle(n,this.outputOptions);try{nu("initialize render",2),await this.pluginDriver.hookParallel("renderStart",[this.outputOptions,this.inputOptions]),su("initialize render",2),nu("generate chunks",2);const e=(()=>{let e=0;return(t,n)=>{if(n>21)return Bt(Cn(`Hashes cannot be longer than 21 characters, received ${n}. Check the "${t}" option.`));const s=`${Su}${Ci(++e).padStart(n-5,"0")}${$u}`;return s.length>n?Bt(Cn(`To generate hashes for this number of chunks (currently ${e}), you need a minimum hash size of ${s.length}, received ${n}. Check the "${t}" option.`)):s}})(),t=await this.generateChunks(n,e);t.length>1&&function(e,t){if("umd"===e.format||"iife"===e.format)return Bt(gn("output.format",Ct,"UMD and IIFE output formats are not supported for code-splitting builds",e.format));if("string"==typeof e.file)return Bt(gn("output.file",Nt,'when building multiple chunks, the "output.dir" option must be used, not "output.file". To inline dynamic imports, set the "inlineDynamicImports" option'));if(e.sourcemapFile)return Bt(gn("output.sourcemapFile",_t,'"output.sourcemapFile" is only supported for single-file builds'));!e.amd.autoId&&e.amd.id&&t(ft,gn("output.amd.id",wt,'this option is only properly supported for single-file builds. Use "output.amd.autoId" and "output.amd.basePath" instead'))}(this.outputOptions,this.inputOptions.onLog),this.pluginDriver.setChunkInformation(this.facadeChunkByModule);for(const e of t)e.generateExports(),e.inlineTransitiveImports();su("generate chunks",2),await ud(t,n,this.pluginDriver,this.outputOptions,this.inputOptions.onLog)}catch(e){throw await this.pluginDriver.hookParallel("renderError",[e]),e}return(e=>{const t=new Set,n=Object.values(e);for(const e of n)"asset"===e.type&&e.needsCodeReference&&t.add(e.fileName);for(const e of n)if("chunk"===e.type)for(const n of e.referencedFiles)t.has(n)&&t.delete(n);for(const n of t)delete e[n]})(n),nu("generate bundle",2),await this.pluginDriver.hookSeq("generateBundle",[this.outputOptions,n,e]),this.finaliseAssets(n),function(e){for(const[t,n]of Object.entries(e)){if(gd(t))return Bt(on(t));if("placeholder"!==n.type){const{fileName:e}=n;if(e!==t&&gd(e))return Bt(on(e))}}}(n),su("generate bundle",2),su("GENERATE",1),t}async addManualChunks(e){const t=new Map,n=await Promise.all(Object.entries(e).map(async([e,t])=>({alias:e,entries:await this.graph.moduleLoader.addAdditionalModules(t,!0)})));for(const{alias:e,entries:s}of n)for(const n of s)md(e,n,t);return t}assignManualChunks(e){const t=new Map,n={getModuleIds:()=>this.graph.modulesById.keys(),getModuleInfo:this.graph.getModuleInfo};for(const s of this.graph.modulesById.values())if(s instanceof cu){const i=e(s.id,n);"string"==typeof i&&md(i,s,t)}return t}finaliseAssets(e){if(this.outputOptions.validate)for(const t of Object.values(e))if("code"in t)try{Gc(t.code,{jsx:!1!==this.inputOptions.jsx})}catch(e){this.inputOptions.onLog(ft,nn(t,e))}this.pluginDriver.finaliseAssets()}async generateChunks(e,t){const{experimentalMinChunkSize:n,inlineDynamicImports:s,manualChunks:i,preserveModules:r,onlyExplicitManualChunks:o}=this.outputOptions,a="object"==typeof i?await this.addManualChunks(i):this.assignManualChunks(i),l=function({compact:e,generatedCode:{arrowFunctions:t,constBindings:n,objectShorthand:s,reservedNamesAsProps:i}}){const{_:r,n:o,s:a}=e?{_:"",n:"",s:""}:{_:" ",n:"\n",s:";"},l=n?"const":"var",c=(e,{isAsync:t,name:n})=>`${t?"async ":""}function${n?` ${n}`:""}${r}(${e.join(`,${r}`)})${r}`,u=t?(e,{isAsync:t,name:n})=>{const s=1===e.length;return`${n?`${l} ${n}${r}=${r}`:""}${t?`async${s?" ":r}`:""}${s?e[0]:`(${e.join(`,${r}`)})`}${r}=>${r}`}:c,d=(e,{functionReturn:n,lineBreakIndent:s,name:i})=>[`${u(e,{isAsync:!1,name:i})}${t?s?`${o}${s.base}${s.t}`:"":`{${s?`${o}${s.base}${s.t}`:r}${n?"return ":""}`}`,t?`${i?";":""}${s?`${o}${s.base}`:""}`:`${a}${s?`${o}${s.base}`:r}}`],h=i?e=>jn.test(e):e=>!Tn.has(e)&&jn.test(e);return{_:r,cnst:l,getDirectReturnFunction:d,getDirectReturnIifeLeft:(e,n,{needsArrowReturnParens:s,needsWrappedFunction:i})=>{const[r,o]=d(e,{functionReturn:!0,lineBreakIndent:null,name:null});return`${ed(`${r}${ed(n,t&&s)}${o}`,t||i)}(`},getFunctionIntro:u,getNonArrowFunctionIntro:c,getObject(e,{lineBreakIndent:t}){const n=t?`${o}${t.base}${t.t}`:r;return`{${e.map(([e,t])=>{if(null===e)return`${n}${t}`;const i=Gn(e);return e===t&&s&&e===i?n+e:`${n}${i}:${r}${t}`}).join(",")}${0===e.length?"":t?`${o}${t.base}`:r}}`},getPropertyAccess:e=>h(e)?`.${e}`:`[${JSON.stringify(e)}]`,n:o,s:a}}(this.outputOptions),c=function(e){const t=[];for(const n of e.values())n instanceof cu&&(n.isIncluded()||n.info.isEntry||n.includedDynamicImporters.length>0)&&t.push(n);return t}(this.graph.modulesById),u=function(e){if(0===e.length)return"/";if(1===e.length)return j(e[0]);const t=e.slice(1).reduce((e,t)=>{const n=t.split(/\/+|\\+/);let s;for(s=0;e[s]===n[s]&&s1?t.join("/"):"/"}(function(e,t){const n=[];for(const s of e)(s.info.isEntry||t)&&B(s.id)&&n.push(s.id);return n}(c,r)),d=function(e,t,n){const s=new Map;for(const i of e.values())i instanceof Wn&&s.set(i,new fo(i,t,n));return s}(this.graph.modulesById,this.outputOptions,u),h=s?[{alias:null,modules:c}]:r?c.map(e=>({alias:null,modules:[e]})):Fu(this.graph.entryModules,a,n,this.inputOptions.onLog,"function"==typeof i,o),p=new Array(h.length),f=new Map;let m=0;for(const{alias:n,modules:s}of h){Zu(s);const i=new Mu(s,this.inputOptions,this.outputOptions,this.unsetOptions,this.pluginDriver,this.graph.modulesById,f,d,this.facadeChunkByModule,this.includedNamespaces,n,t,e,u,l);p[m++]=i}for(const e of p)e.link();s||r||this.checkCircularChunks(p);const g=[];for(const e of p)g.push(...e.generateFacades());return[...p,...g]}checkCircularChunks(e){const t=new Set,n=new Map,s=(e,s)=>{if(n.has(e)){if(!t.has(e)){const t=[e.getChunkName()];let i=e.isManualChunk,r=s;for(;r!==e&&r;)t.push(r.getChunkName()),i&&=r.isManualChunk,r=n.get(r);t.push(t[0]),t.reverse(),this.inputOptions.onLog(ft,function(e,t){return{code:"CIRCULAR_CHUNK",ids:e,message:`Circular chunk: ${e.join(" -> ")}. ${t?"Please adjust the manual chunk logic for these chunks.":`Please consider disabling the "output.onlyExplicitManualChunks" option, as enabling it causes modules located between the modules included in the manual chunk "${e.at(-2)}" to be extracted into the separate chunk "${e.at(-1)}".`}`}}(t,i))}}else n.set(e,s),i(e)},i=e=>{for(const t of e.dependencies)t instanceof Mu&&s(t,e);t.add(e)};for(const t of e)n.has(t)||i(t)}}function md(e,t,n){const s=n.get(t);if("string"==typeof s&&s!==e)return Bt((i=t.id,r=e,o=s,{code:"INVALID_CHUNK",message:`Cannot assign "${xt(i)}" to the "${r}" chunk as it is already in the "${o}" chunk.`}));var i,r,o;n.set(t,e)}function gd(e){const t=function(...e){const t=e.join("/"),n=L.test(t[0]);return(n?"/":"")+(G(t.split(L),n)||(n?"":"."))}(e).replaceAll("\\","/");return".."===t||t.startsWith("../")||"."===t||B(t)}class yd extends Di{constructor(){super(),this.parent=null,this.variables.set("undefined",new lo)}findVariable(e){let t=this.variables.get(e);return t||(t=new Si(e),this.variables.set(e,t)),t}}async function bd(e,t,n,s,i,r,o,a,l,c,u){const d=await function(e,t,n,s,i,r,o,a,l){let c=null,u=null;if(i){c=new Set;for(const n of i)e===n.source&&t===n.importer&&c.add(n.plugin);u=(e,t)=>({...e,resolve:(e,n,{attributes:r,custom:o,isEntry:a,skipSelf:l,importerAttributes:c}=oe)=>(l??=!0,l&&-1!==i.findIndex(s=>s.plugin===t&&s.source===e&&s.importer===n)?Promise.resolve(null):s(e,n,o,a,r||ae,c,l?[...i,{importer:n,plugin:t,source:e}]:i))})}return n.hookFirstAndGetPlugin("resolveId",[e,t,{attributes:a,custom:r,importerAttributes:l,isEntry:o}],u,c)}(e,t,s,i,r,o,a,l,c);if(null!=d){const[e,t]=d;return"object"!=typeof e||e.resolvedBy?"string"==typeof e?{id:e,resolvedBy:t.name}:e:{...e,resolvedBy:t.name}}return void 0===t||B(e)||"."===e[0]?async function(e,t,n){return await Ed(e,t,n)??await Ed(e+".mjs",t,n)??await Ed(e+".js",t,n)}(t?W(j(t),e):W(e),n,u):null}async function Ed(e,t,n){try{const s=await n.lstat(e);if(!t&&s.isSymbolicLink())return await Ed(await n.realpath(e),t,n);if(t&&s.isSymbolicLink()||s.isFile()){const t=F(e);if((await n.readdir(j(e))).includes(t))return e}}catch{}}function xd(e){return 65279===e.charCodeAt(0)?xd(e.slice(1)):e}const Ad=(e,t,n=Pd)=>{const{onwarn:s,onLog:i}=e,r=Sd(n,s);if(i){const e=yt[t];return(t,n)=>i(t,$d(n),(t,n)=>{if("error"===t)return Bt(vd(n));yt[t]>=e&&r(t,vd(n))})}return r},Sd=(e,t)=>t?(n,s)=>{n===ft?t($d(s),t=>e(ft,vd(t))):e(n,s)}:e,$d=e=>(Object.defineProperty(e,"toString",{value:()=>e.message,writable:!0}),e),vd=e=>"string"==typeof e?{message:e}:"function"==typeof e?vd(e()):e,Pd=(e,{message:t})=>{switch(e){case ft:return console.warn(t);case gt:return console.debug(t);default:return console.info(t)}};function Id(e,t,n,s,i=/$./){const r=new Set(t),o=Object.keys(e).filter(e=>!(r.has(e)||i.test(e)));o.length>0&&s(ft,function(e,t,n){return{code:"UNKNOWN_OPTION",message:`Unknown ${e}: ${t.join(", ")}. Allowed options: ${n.join(", ")}`}}(n,o,[...r].sort()))}const wd={recommended:{annotations:!0,correctVarValueBeforeDeclaration:!1,manualPureFunctions:le,moduleSideEffects:()=>!0,propertyReadSideEffects:!0,tryCatchDeoptimization:!0,unknownGlobalSideEffects:!1},safest:{annotations:!0,correctVarValueBeforeDeclaration:!0,manualPureFunctions:le,moduleSideEffects:()=>!0,propertyReadSideEffects:!0,tryCatchDeoptimization:!0,unknownGlobalSideEffects:!0},smallest:{annotations:!0,correctVarValueBeforeDeclaration:!1,manualPureFunctions:le,moduleSideEffects:()=>!1,propertyReadSideEffects:!1,tryCatchDeoptimization:!1,unknownGlobalSideEffects:!1}},Nd={preserve:{factory:null,fragment:null,importSource:null,mode:"preserve"},"preserve-react":{factory:"React.createElement",fragment:"React.Fragment",importSource:"react",mode:"preserve"},react:{factory:"React.createElement",fragment:"React.Fragment",importSource:"react",mode:"classic"},"react-jsx":{factory:"React.createElement",importSource:"react",jsxImportSource:"react/jsx-runtime",mode:"automatic"}},kd={es2015:{arrowFunctions:!0,constBindings:!0,objectShorthand:!0,reservedNamesAsProps:!0,symbols:!0},es5:{arrowFunctions:!1,constBindings:!1,objectShorthand:!1,reservedNamesAsProps:!0,symbols:!1}},Cd=(e,t,n,s,i)=>{const r=e?.preset;if(r){const i=t[r];if(i)return{...i,...e};Bt(gn(`${n}.preset`,s,`valid values are ${bt(Object.keys(t))}`,r))}return((e,t,n,s)=>i=>{if("string"==typeof i){const r=e[i];if(r)return r;Bt(gn(t,n,`valid values are ${s}${bt(Object.keys(e))}. You can also supply an object for more fine-grained control`,i))}return(e=>e&&"object"==typeof e?e:{})(i)})(t,n,s,i)(e)},Rd=async e=>(await async function(e){do{e=(await Promise.all(e)).flat(1/0)}while(e.some(e=>e?.then));return e}([e])).filter(Boolean),Dd="at position ",Od="at output position ";const Md={delete:()=>!1,get(){},has:()=>!1,set(){}};function _d(e){return e.startsWith(Dd)||e.startsWith(Od)?Bt({code:"ANONYMOUS_PLUGIN_CACHE",message:"A plugin is trying to use the Rollup cache but is not declaring a plugin name or cacheKey."}):Bt({code:"DUPLICATE_PLUGIN_NAME",message:`The plugin name ${e} is being used twice in the same build. Plugin names must be distinct or provide a cacheKey (please post an issue to the plugin if you are a plugin user).`})}async function Ld(e,t,n,s){const i=t.id,r=[];let o=null===e.map?null:jc(e.map);const a=e.code;let l=e.ast;const c=[],u=[];let d=!1;const h=()=>d=!0;let p="",f=e.code;const m=e=>(t,n)=>{t=vd(t),n&&Vt(t,n,f,i),t.id=i,t.hook="transform",e(t)};let g;try{g=await n.hookReduceArg0("transform",[f,i,{attributes:t.info.attributes}],function(e,n,i){let o,a;if("string"==typeof n)o=n;else{if(!n||"object"!=typeof n)return e;if(t.updateOptions(n),null==n.code)return(n.map||n.ast)&&s.onLog(ft,function(e){return{code:"NO_TRANSFORM_MAP_OR_AST_WITHOUT_CODE",message:`The plugin "${e}" returned a "map" or "ast" without returning a "code". This will be ignored.`}}(i.name)),e;n.attributes&&Rn('Returning attributes from the "transform" hook is forbidden.',"plugin-development/#transform",!1,s),({code:o,map:a,ast:l}=n)}return null!==a&&r.push(jc("string"==typeof a?JSON.parse(a):a)||{missing:!0,plugin:i.name}),f=o,o},(e,t)=>{return p=t.name,{...e,addWatchFile(t){c.push(t),e.addWatchFile(t)},cache:d?e.cache:(l=e.cache,g=h,{delete:e=>(g(),l.delete(e)),get:e=>(g(),l.get(e)),has:e=>(g(),l.has(e)),set:(e,t)=>(g(),l.set(e,t))}),debug:m(e.debug),emitFile:e=>(u.push(e),n.emitFile(e)),error:(t,n)=>("string"==typeof t&&(t={message:t}),n&&Vt(t,n,f,i),t.id=i,t.hook="transform",e.error(t)),getCombinedSourcemap(){const e=function(e,t,n,s,i){return 0===s.length?n:jc({version:3,...id(e,t,n,s,sd(i)).traceMappings()})}(i,a,o,r,s.onLog);if(!e){return new C(a).generateMap({hires:!0,includeContent:!0,source:i})}return o!==e&&(o=e,r.length=0),new E({...e,sourcesContent:e.sourcesContent})},info:m(e.info),setAssetSource(){return this.error({code:"INVALID_SETASSETSOURCE",message:"setAssetSource cannot be called in transform for caching reasons. Use emitFile with a source, or call setAssetSource in another hook."})},warn:m(e.warn)};var l,g})}catch(e){return Bt(In(e,p,{hook:"transform",id:i}))}return!d&&u.length>0&&(t.transformFiles=u),{ast:l,code:g,customTransformCache:d,originalCode:a,originalSourcemap:o,safeVariableNames:null,sourcemapChain:r,transformDependencies:c}}const Td="resolveDependencies";class Bd{constructor(e,t,n,s){this.graph=e,this.modulesById=t,this.options=n,this.pluginDriver=s,this.implicitEntryModules=new Set,this.sortedEntryModules=[],this.entryModules=new Set,this.latestLoadModulesPromise=Promise.resolve(),this.moduleLoadPromises=new Map,this.modulesWithLoadedDependencies=new Set,this.resolveId=async(e,t,n,s,i,r,o=null)=>this.getResolvedIdWithDefaults(this.getNormalizedResolvedIdWithoutDefaults(!this.options.external(e,t,!1)&&await bd(e,t,this.options.preserveSymlinks,this.pluginDriver,this.resolveId,o,n,"boolean"==typeof s?s:!t,i,r,this.options.fs),t,e),i),this.hasModuleSideEffects=n.treeshake?n.treeshake.moduleSideEffects:()=>!0}async addAdditionalModules(e,t){const n=this.extendLoadModulesPromise(Promise.all(e.map(e=>this.loadEntryModule(e,!1,void 0,null,t,void 0))));return await this.awaitLoadModulesPromise(),n}async addEntryModules(e,t){const n=await this.extendLoadModulesPromise(Promise.all(e.map(({id:e,importer:t})=>this.loadEntryModule(e,!0,t,null,void 0,void 0))).then(n=>{let s=!1;for(const[i,r]of n.entries())r.isUserDefinedEntryPoint=r.isUserDefinedEntryPoint||t,Vd(r,e[i],t),this.entryModules.has(r)||(this.sortedEntryModules.push(r),this.entryModules.add(r),s=!0);return s&&this.sortedEntryModules.sort((e,t)=>e.id>t.id?1:-1),n}));return await this.awaitLoadModulesPromise(),{entryModules:this.sortedEntryModules,implicitEntryModules:[...this.implicitEntryModules],newEntryModules:n}}async emitChunk({fileName:e,id:t,importer:n,name:s,implicitlyLoadedAfterOneOf:i,preserveSignature:r}){const o={fileName:e||null,id:t,importer:n,name:s||null},a=i?await this.addEntryWithImplicitDependants(o,i):(await this.addEntryModules([o],!1)).newEntryModules[0];return null!=r&&(a.preserveSignature=r),a}async preloadModule(e){return(await this.fetchModule(this.getResolvedIdWithDefaults(e,ae),void 0,!1,!e.resolveDependencies||Td)).info}addEntryWithImplicitDependants(e,t){return this.extendLoadModulesPromise(this.loadEntryModule(e.id,!1,e.importer,null,void 0,void 0).then(async n=>{if(Vd(n,e,!1),!n.info.isEntry){const s=await Promise.all(t.map(t=>this.loadEntryModule(t,!1,e.importer,n.id,void 0,void 0)));if(!n.info.isEntry){this.implicitEntryModules.add(n);for(const e of s)n.implicitlyLoadedAfter.add(e);for(const e of n.implicitlyLoadedAfter)e.implicitlyLoadedBefore.add(n)}}return n}))}async addModuleSource(e,t,n){let s;try{s=await this.graph.fileOperationQueue.run(async()=>{const t=await this.pluginDriver.hookFirst("load",[e,{attributes:n.info.attributes}]);return null!==t?("object"==typeof t&&t.attributes&&Rn('Returning attributes from the "load" hook is forbidden.',"plugin-development/#load",!1,this.options),t):(this.graph.watchFiles[e]=!0,await this.options.fs.readFile(e,{encoding:"utf8"}))})}catch(n){let s=`Could not load ${e}`;throw t&&(s+=` (imported by ${xt(t)})`),s+=`: ${n.message}`,n.message=s,n}const i="string"==typeof s?{code:s}:null!=s&&"object"==typeof s&&"string"==typeof s.code?s:Bt(function(e){return{code:"BAD_LOADER",message:`Error loading "${xt(e)}": plugin load hook should return a string, a { code, map } object, or nothing/null.`}}(e));i.code=xd(i.code);const r=this.graph.cachedModules.get(e);if(!r||r.customTransformCache||r.originalCode!==i.code||await this.pluginDriver.hookFirst("shouldTransformCachedModule",[{ast:r.ast,attributes:r.attributes,code:r.code,id:r.id,meta:r.meta,moduleSideEffects:r.moduleSideEffects,resolvedSources:r.resolvedIds,syntheticNamedExports:r.syntheticNamedExports}]))n.updateOptions(i),await n.setSource(await Ld(i,n,this.pluginDriver,this.options));else{if(r.transformFiles)for(const e of r.transformFiles)this.pluginDriver.emitFile(e);await n.setSource(r)}}async awaitLoadModulesPromise(){let e;do{e=this.latestLoadModulesPromise,await e}while(e!==this.latestLoadModulesPromise)}extendLoadModulesPromise(e){return this.latestLoadModulesPromise=Promise.all([e,this.latestLoadModulesPromise]),this.latestLoadModulesPromise.catch(()=>{}),e}async fetchDynamicDependencies(e,t){const n=await Promise.all(t.map(t=>t.then(async([{argument:t,node:n},s])=>null===s?null:"string"==typeof s?(n.resolution=s,null):"source"!==n.phase||s.external?n.resolution=await this.fetchResolvedDependency(xt(s.id),e.id,s):Bt(xn("string"==typeof t?t:xt(s.id),e.id)))));for(const t of n)t&&(e.dynamicDependencies.add(t),t.dynamicImporters.push(e.id))}async fetchModule({attributes:e,id:t,meta:n,moduleSideEffects:s,syntheticNamedExports:i},r,o,a){const l=this.modulesById.get(t);if(l instanceof cu)return r&&Kc(e,l.info.attributes)&&this.options.onLog(ft,cn(l.info.attributes,e,t,r)),await this.handleExistingModule(l,o,a),l;if(l instanceof Wn)return Bt({code:"EXTERNAL_MODULES_CANNOT_BE_TRANSFORMED_TO_MODULES",message:`${l.id} is resolved as a module now, but it was an external module before. Please check whether there are conflicts in your Rollup options "external" and "manualChunks", manualChunks cannot include external modules.`});const c=new cu(this.graph,t,this.options,o,s,i,n,e);this.modulesById.set(t,c);const u=this.addModuleSource(t,r,c).then(()=>[this.getResolveStaticDependencyPromises(c),this.getResolveDynamicImportPromises(c),d]),d=jd(u).then(()=>this.pluginDriver.hookParallel("moduleParsed",[c.info]));d.catch(()=>{}),this.moduleLoadPromises.set(c,u);const h=await u;return a?a===Td&&await d:await this.fetchModuleDependencies(c,...h),c}async fetchModuleDependencies(e,t,n,s){this.modulesWithLoadedDependencies.has(e)||(this.modulesWithLoadedDependencies.add(e),await Promise.all([this.fetchStaticDependencies(e,t),this.fetchDynamicDependencies(e,n)]),e.linkImports(),await s)}fetchResolvedDependency(e,t,n){if(n.external){const{attributes:s,external:i,id:r,moduleSideEffects:o,meta:a}=n;let l=this.modulesById.get(r);if(l){if(!(l instanceof Wn))return Bt(function(e,t){return{code:"INVALID_EXTERNAL_ID",message:`"${e}" is imported as an external by "${xt(t)}", but is already an existing non-external module id.`}}(e,t));Kc(l.info.attributes,s)&&this.options.onLog(ft,cn(l.info.attributes,s,e,t))}else l=new Wn(this.options,r,o,a,"absolute"!==i&&B(r),s),this.modulesById.set(r,l);return Promise.resolve(l)}return this.fetchModule(n,t,!1,!1)}async fetchStaticDependencies(e,t){for(const n of await Promise.all(t.map(t=>t.then(([t,n])=>e.sourcePhaseSources.has(t)&&!n.external?Bt(xn(t,e.id)):this.fetchResolvedDependency(t,e.id,n)))))e.dependencies.add(n),n.importers.push(e.id);if(!this.options.treeshake||"no-treeshake"===e.info.moduleSideEffects)for(const t of e.dependencies)t instanceof cu&&(t.importedFromNotTreeshaken=!0)}getNormalizedResolvedIdWithoutDefaults(e,t,n){const{makeAbsoluteExternalsRelative:s}=this.options;if(e){if("object"==typeof e){const i=e.external||this.options.external(e.id,t,!0);return{...e,external:i&&("relative"===i||!B(e.id)||!0===i&&Fd(e.id,n,s)||"absolute")}}const i=this.options.external(e,t,!0);return{external:i&&(Fd(e,n,s)||"absolute"),id:i&&s?zd(e,t):e}}const i=s?zd(n,t):n;return!1===e||this.options.external(i,t,!0)?{external:Fd(i,n,s)||"absolute",id:i}:null}getResolveDynamicImportPromises(e){return e.dynamicImports.map(async t=>{const n=await this.resolveDynamicImport(e,t.argument,e.id,Wc(t.node));return n&&"string"!=typeof n?(t.node.shouldIncludeDynamicAttributes=!!n.external,t.id=n.id):t.node.shouldIncludeDynamicAttributes=!0,[t,n]})}getResolveStaticDependencyPromises(e){return Array.from(e.sourcesWithAttributes,async([t,n])=>[t,e.resolvedIds[t]=e.resolvedIds[t]||this.handleInvalidResolvedId(await this.resolveId(t,e.id,ae,!1,n,e.info.attributes),t,e.id,n)])}getResolvedIdWithDefaults(e,t){if(!e)return null;const n=e.external||!1;return{attributes:e.attributes||t,external:n,id:e.id,meta:e.meta||{},moduleSideEffects:e.moduleSideEffects??this.hasModuleSideEffects(e.id,!!n),resolvedBy:e.resolvedBy??"rollup",syntheticNamedExports:e.syntheticNamedExports??!1}}async handleExistingModule(e,t,n){const s=this.moduleLoadPromises.get(e);if(n)return n===Td?jd(s):s;if(t){e.info.isEntry=!0,this.implicitEntryModules.delete(e);for(const t of e.implicitlyLoadedAfter)t.implicitlyLoadedBefore.delete(e);e.implicitlyLoadedAfter.clear()}return this.fetchModuleDependencies(e,...await s)}handleInvalidResolvedId(e,t,n,s){return null===e?z(t)?Bt(function(e,t){return{code:Qt,exporter:e,id:t,message:`Could not resolve "${e}" from "${xt(t)}"`}}(t,n)):(this.options.onLog(ft,function(e,t){return{code:Qt,exporter:e,id:t,message:`"${e}" is imported by "${xt(t)}", but could not be resolved – treating it as an external dependency.`,url:vt("troubleshooting/#warning-treating-module-as-external-dependency")}}(t,n)),{attributes:s,external:!0,id:t,meta:{},moduleSideEffects:this.hasModuleSideEffects(t,!0),resolvedBy:"rollup",syntheticNamedExports:!1}):(e.external&&e.syntheticNamedExports&&this.options.onLog(ft,function(e,t){return{code:"EXTERNAL_SYNTHETIC_EXPORTS",exporter:e,message:`External "${e}" cannot have "syntheticNamedExports" enabled (imported by "${xt(t)}").`}}(t,n)),e)}async loadEntryModule(e,t,n,s,i=!1,r){const o=await bd(e,n,this.options.preserveSymlinks,this.pluginDriver,this.resolveId,null,ae,!0,ae,r,this.options.fs);if(null==o)return Bt(null===s?function(e){return{code:Zt,message:`Could not resolve entry module "${xt(e)}".`}}(e):function(e,t){return{code:qt,message:`Module "${xt(e)}" that should be implicitly loaded before "${xt(t)}" could not be resolved.`}}(e,s));const a="object"==typeof o&&o.external;return!1===o||a?Bt(null===s?a&&i?{code:"EXTERNAL_MODULES_CANNOT_BE_INCLUDED_IN_MANUAL_CHUNKS",message:`"${e}" cannot be included in manualChunks because it is resolved as an external module by the "external" option or plugins.`}:function(e){return{code:Zt,message:`Entry module "${xt(e)}" cannot be external.`}}(e):function(e,t){return{code:qt,message:`Module "${xt(e)}" that should be implicitly loaded before "${xt(t)}" cannot be external.`}}(e,s)):this.fetchModule(this.getResolvedIdWithDefaults("object"==typeof o?o:{id:o},ae),void 0,t,!1)}async resolveDynamicImport(e,t,n,s){const i=await this.pluginDriver.hookFirst("resolveDynamicImport",[t,n,{attributes:s,importerAttributes:e.info.attributes}]);if("string"!=typeof t)return"string"==typeof i?i:i?this.getResolvedIdWithDefaults(i,s):null;if(null==i){const i=e.resolvedIds[t];return i?(Kc(i.attributes,s)&&this.options.onLog(ft,cn(i.attributes,s,t,n)),i):e.resolvedIds[t]=this.handleInvalidResolvedId(await this.resolveId(t,e.id,ae,!1,s,e.info.attributes),t,e.id,s)}return this.handleInvalidResolvedId(this.getResolvedIdWithDefaults(this.getNormalizedResolvedIdWithoutDefaults(i,n,t),s),t,n,s)}}function zd(e,t){return z(e)?t?W(t,"..",e):W(e):e}function Vd(e,{fileName:t,name:n},s){null!==t?e.chunkFileNames.add(t):null!==n&&(e.chunkNames.push({isUserDefined:s,name:n}),e.chunkNames.sort((e,t)=>e.name>t.name?1:-1))}function Fd(e,t,n){return!0===n||"ifRelativeSource"===n&&z(t)||!B(e)}async function jd(e){const[t,n]=await e;return Promise.all([...t,...n])}function Ud(e,t,n,s,i,r,o,a,l){const c=o.sanitizeFileName(e||"asset");return Cu(ku("function"==typeof o.assetFileNames?o.assetFileNames({get name(){return Rn('Accessing the "name" property of emitted assets when generating the file name is deprecated. Use the "names" property instead.',Tt,!1,l),e},names:t,get originalFileName(){return Rn('Accessing the "originalFileName" property of emitted assets when generating the file name is deprecated. Use the "originalFileNames" property instead.',Tt,!1,l),s},originalFileNames:i,source:n,type:"asset"}):o.assetFileNames,"output.assetFileNames",{ext:()=>U(c).slice(1),extname:()=>U(c),hash:e=>r.slice(0,Math.min(Math.max(0,e||8),21)),name:()=>c.slice(0,Math.max(0,c.length-U(c).length))}),a)}function Gd(e,{bundle:t},n){t[wu].has(e.toLowerCase())?n(ft,function(e){return{code:"FILE_NAME_CONFLICT",message:`The emitted file "${e}" overwrites a previously emitted file of the same name.`}}(e)):t[e]=Nu}const Hd=new Set(["chunk","asset","prebuilt-chunk"]);function Wd(e,t,n){if(!("string"==typeof e||e instanceof Uint8Array)){const e=t.fileName||t.name||n;return Bt(Cn(`Could not set source for ${"string"==typeof e?`asset "${e}"`:"unnamed asset"}, asset source needs to be a string, Uint8Array or Buffer.`))}return e}class qd{constructor(e,t,n){this.graph=e,this.options=t,this.facadeChunkByModule=null,this.nextIdBase=1,this.output=null,this.outputFileEmitters=[],this.emitFile=e=>function(e){return Boolean(e&&Hd.has(e.type))}(e)?"prebuilt-chunk"===e.type?this.emitPrebuiltChunk(e):function(e){const t=e.fileName||e.name;return!t||"string"==typeof t&&!At(t)}(e)?"chunk"===e.type?this.emitChunk(e):this.emitAsset(e):Bt(Cn(`The "fileName" or "name" properties of emitted chunks and assets must be strings that are neither absolute nor relative paths, received "${e.fileName||e.name}".`)):Bt(Cn(`Emitted files must be of type "asset", "chunk" or "prebuilt-chunk", received "${e&&e.type}".`)),this.finaliseAssets=()=>{for(const[e,t]of this.filesByReferenceId)if("asset"===t.type&&"string"!=typeof t.fileName)return Bt(en(t.name||e))},this.getFileName=e=>{const t=this.filesByReferenceId.get(e);return t?"chunk"===t.type?(n=t,s=this.facadeChunkByModule,n.fileName?n.fileName:s?s.get(n.module).getFileName():Bt({code:"CHUNK_NOT_GENERATED",message:`Plugin error - Unable to get file name for emitted chunk "${n.fileName||n.name}". You can only get file names once chunks have been generated after the "renderStart" hook.`})):"prebuilt-chunk"===t.type?t.fileName:function(e,t){return"string"!=typeof e.fileName?Bt({code:"ASSET_NOT_FINALISED",message:`Plugin error - Unable to get file name for asset "${e.name||t}". Ensure that the source is set and that generate is called first. If you reference assets via import.meta.ROLLUP_FILE_URL_, you need to either have set their source after "renderStart" or need to provide an explicit "fileName" when emitting them.`}):e.fileName}(t,e):Bt({code:"FILE_NOT_FOUND",message:`Plugin error - Unable to get file name for unknown file "${e}".`});var n,s},this.setAssetSource=(e,t)=>{const n=this.filesByReferenceId.get(e);if(!n)return Bt({code:"ASSET_NOT_FOUND",message:`Plugin error - Unable to set the source for unknown asset "${e}".`});if("asset"!==n.type)return Bt(Cn(`Asset sources can only be set for emitted assets but "${e}" is an emitted chunk.`));if(void 0!==n.source)return Bt({code:"ASSET_SOURCE_ALREADY_SET",message:`Unable to set the source for asset "${n.name||e}", source already set.`});const s=Wd(t,n,e);if(this.output)this.finalizeAdditionalAsset(n,s,this.output);else{n.source=s;for(const e of this.outputFileEmitters)e.finalizeAdditionalAsset(n,s,e.output)}},this.setChunkInformation=e=>{this.facadeChunkByModule=e},this.setOutputBundle=(e,t)=>{const n=ad[t.hashCharacters],s=this.output={bundle:e,fileNamesBySourceHash:new Map,getHash:n,outputOptions:t};for(const e of this.filesByReferenceId.values())e.fileName&&Gd(e.fileName,s,this.options.onLog);const i=new Map;for(const e of this.filesByReferenceId.values())if("asset"===e.type&&void 0!==e.source)if(e.fileName)this.finalizeAdditionalAsset(e,e.source,s);else{ue(i,n(e.source),he).push(e)}else"prebuilt-chunk"===e.type&&(this.output.bundle[e.fileName]=this.createPrebuiltChunk(e));for(const[e,t]of i)this.finalizeAssetsWithSameSource(t,e,s)},this.filesByReferenceId=n?new Map(n.filesByReferenceId):new Map,n?.addOutputFileEmitter(this)}addOutputFileEmitter(e){this.outputFileEmitters.push(e)}assignReferenceId(e,t){let n=t;do{n=od(n).slice(0,8).replaceAll("-","$")}while(this.filesByReferenceId.has(n)||this.outputFileEmitters.some(({filesByReferenceId:e})=>e.has(n)));e.referenceId=n,this.filesByReferenceId.set(n,e);for(const{filesByReferenceId:t}of this.outputFileEmitters)t.set(n,e);return n}createPrebuiltChunk(e){return{code:e.code,dynamicImports:[],exports:e.exports||[],facadeModuleId:null,fileName:e.fileName,implicitlyLoadedBefore:[],importedBindings:{},imports:[],isDynamicEntry:!1,isEntry:!1,isImplicitEntry:!1,map:e.map||null,moduleIds:[],modules:{},name:e.fileName,preliminaryFileName:e.fileName,referencedFiles:[],sourcemapFileName:e.sourcemapFileName||null,type:"chunk"}}emitAsset(e){const t=void 0===e.source?void 0:Wd(e.source,e,null),n=e.originalFileName||null;"string"==typeof n&&(this.graph.watchFiles[n]=!0);const s={fileName:e.fileName,name:e.name,needsCodeReference:!!e.needsCodeReference,originalFileName:n,referenceId:"",source:t,type:"asset"},i=this.assignReferenceId(s,e.fileName||e.name||String(this.nextIdBase++));if(this.output)this.emitAssetWithReferenceId(s,this.output);else for(const e of this.outputFileEmitters)e.emitAssetWithReferenceId(s,e.output);return i}emitAssetWithReferenceId(e,t){const{fileName:n,source:s}=e;n&&Gd(n,t,this.options.onLog),void 0!==s&&this.finalizeAdditionalAsset(e,s,t)}emitChunk(e){if(this.graph.phase>zc.LOAD_AND_PARSE)return Bt({code:"INVALID_ROLLUP_PHASE",message:"Cannot emit chunks after module loading has finished."});if("string"!=typeof e.id)return Bt(Cn(`Emitted chunks need to have a valid string id, received "${e.id}"`));const t={fileName:e.fileName,module:null,name:e.name||e.id,referenceId:"",type:"chunk"};return this.graph.moduleLoader.emitChunk(e).then(e=>t.module=e).catch(()=>{}),this.assignReferenceId(t,e.id)}emitPrebuiltChunk(e){if("string"!=typeof e.code)return Bt(Cn(`Emitted prebuilt chunks need to have a valid string code, received "${e.code}".`));if("string"!=typeof e.fileName||At(e.fileName))return Bt(Cn(`The "fileName" property of emitted prebuilt chunks must be strings that are neither absolute nor relative paths, received "${e.fileName}".`));const t={code:e.code,exports:e.exports,fileName:e.fileName,map:e.map,referenceId:"",type:"prebuilt-chunk"},n=this.assignReferenceId(t,t.fileName);return this.output&&(this.output.bundle[t.fileName]=this.createPrebuiltChunk(t)),n}finalizeAdditionalAsset(e,t,{bundle:n,fileNamesBySourceHash:s,getHash:i,outputOptions:r}){let{fileName:o,name:a,needsCodeReference:l,originalFileName:c,referenceId:u}=e;if(!o){const e=i(t);o=s.get(e),o||(o=Ud(a,a?[a]:[],t,c,c?[c]:[],e,r,n,this.options),s.set(e,o))}const d={...e,fileName:o,source:t};this.filesByReferenceId.set(u,d);const h=n[o];if("asset"===h?.type)h.needsCodeReference&&=l,a&&h.names.push(a),c&&h.originalFileNames.push(c);else{const{options:e}=this;n[o]={fileName:o,get name(){return Rn('Accessing the "name" property of emitted assets in the bundle is deprecated. Use the "names" property instead.',Tt,!1,e),a},names:a?[a]:[],needsCodeReference:l,get originalFileName(){return Rn('Accessing the "originalFileName" property of emitted assets in the bundle is deprecated. Use the "originalFileNames" property instead.',Tt,!1,e),c},originalFileNames:c?[c]:[],source:t,type:"asset"}}}finalizeAssetsWithSameSource(e,t,{bundle:n,fileNamesBySourceHash:s,outputOptions:i}){const{names:r,originalFileNames:o}=function(e){const t=[],n=[];for(const{name:s,originalFileName:i}of e)"string"==typeof s&&t.push(s),i&&n.push(i);return n.sort(),t.sort((e,t)=>e.length-t.length||(e>t?1:e===t?0:-1)),{names:t,originalFileNames:n}}(e);let a,l="",c=!0;for(const s of e){c&&=s.needsCodeReference;const e=Ud(s.name,r,s.source,s.originalFileName,o,t,i,n,this.options);(!l||e.length{null!=r&&n(ft,{code:"INVALID_LOG_POSITION",message:`Plugin "${s}" tried to add a file position to a log or warning. This is only supported in the "transform" hook at the moment and will be ignored.`}),(i=vd(i)).code&&!i.pluginCode&&(i.pluginCode=i.code),i.code=t,i.plugin=s,n(e,i)}}const Xd=e;function Jd(e,t,n,s,i,r){const{logLevel:o,onLog:a}=s;let l,c=!0;if("string"!=typeof e.cacheKey&&(e.name.startsWith(Dd)||e.name.startsWith(Od)||r.has(e.name)?c=!1:r.add(e.name)),t)if(c){const n=e.cacheKey||e.name;d=t[n]||(t[n]=Object.create(null)),l={delete:e=>delete d[e],get(e){const t=d[e];if(t)return t[0]=0,t[1]},has(e){const t=d[e];return!!t&&(t[0]=0,!0)},set(e,t){d[e]=[0,t]}}}else u=e.name,l={delete:()=>_d(u),get:()=>_d(u),has:()=>_d(u),set:()=>_d(u)};else l=Md;var u,d;return{addWatchFile(e){n.watchFiles[e]=!0},cache:l,debug:Kd(gt,"PLUGIN_LOG",a,e.name,o),emitFile:i.emitFile.bind(i),error:t=>Bt(In(vd(t),e.name)),fs:s.fs,getFileName:i.getFileName,getModuleIds:()=>n.modulesById.keys(),getModuleInfo:n.getModuleInfo,getWatchFiles:()=>Object.keys(n.watchFiles),info:Kd(mt,"PLUGIN_LOG",a,e.name,o),load:e=>n.moduleLoader.preloadModule(e),meta:{rollupVersion:Xd,watchMode:n.watchMode},parse:Gc,resolve:(t,s,{attributes:i,custom:r,isEntry:o,skipSelf:a,importerAttributes:l}=oe)=>(a??=!0,n.moduleLoader.resolveId(t,s,r,o,i||ae,l,a?[{importer:s,plugin:e,source:t}]:null)),setAssetSource:i.setAssetSource,warn:Kd(ft,"PLUGIN_WARNING",a,e.name,o)}}function Yd(e){return Array.isArray(e)?e.filter(Boolean):e?[e]:[]}function Zd(e){if(e instanceof RegExp)return t=>{const n=V(t),s=e.test(n);return e.lastIndex=0,s};const t=process.cwd(),n=function(e,t){return e.startsWith("**")||B(e)?V(e):V(W(t,e))}(e,t),s=oa(n,{dot:!0});return e=>{const t=V(e);return s(t)}}function Qd(e){return e instanceof RegExp?t=>{const n=e.test(t);return e.lastIndex=0,n}:t=>t.includes(e)}function eh(e,t){if(e||t)return n=>!e?.some(e=>e(n))&&(!!t?.some(e=>e(n))||!(t&&t.length>0))}function th(e){return"string"==typeof e||e instanceof RegExp?{include:[e]}:Array.isArray(e)?{include:e}:{exclude:e.exclude?Yd(e.exclude):void 0,include:e.include?Yd(e.include):void 0}}function nh(e){if(!e)return;const{exclude:t,include:n}=th(e),s=t?.map(Zd),i=n?.map(Zd);return eh(s,i)}function sh(e,t){if(!e&&!t)return;const n=nh(e),s=function(e){if(!e)return;const{exclude:t,include:n}=th(e),s=t?.map(Qd),i=n?.map(Qd);return eh(s,i)}(t);return(e,t)=>{let i=!0;return n&&(i&&=n(e)),!!i&&(s&&(i&&=s(t)),i)}}const ih=Object.keys({buildEnd:1,buildStart:1,closeBundle:1,closeWatcher:1,load:1,moduleParsed:1,onLog:1,options:1,resolveDynamicImport:1,resolveId:1,shouldTransformCachedModule:1,transform:1,watchChange:1});class rh{constructor(e,t,n,s,i){this.graph=e,this.options=t,this.pluginCache=s,this.sortedPlugins=new Map,this.unfulfilledActions=new Set,this.compiledPluginFilters={idOnlyFilter:new WeakMap,transformFilter:new WeakMap},this.fileEmitter=new qd(e,t,i&&i.fileEmitter),this.emitFile=this.fileEmitter.emitFile.bind(this.fileEmitter),this.getFileName=this.fileEmitter.getFileName.bind(this.fileEmitter),this.finaliseAssets=this.fileEmitter.finaliseAssets.bind(this.fileEmitter),this.setChunkInformation=this.fileEmitter.setChunkInformation.bind(this.fileEmitter),this.setOutputBundle=this.fileEmitter.setOutputBundle.bind(this.fileEmitter),this.plugins=[...i?i.plugins:[],...n];const r=new Set;if(this.pluginContexts=new Map(this.plugins.map(n=>[n,Jd(n,s,e,t,this.fileEmitter,r)])),i)for(const e of n)for(const n of ih)n in e&&t.onLog(ft,hn(e.name,n))}createOutputPluginDriver(e){return new rh(this.graph,this.options,e,this.pluginCache,this)}getUnfulfilledHookActions(){return this.unfulfilledActions}hookFirst(e,t,n,s){return this.hookFirstAndGetPlugin(e,t,n,s).then(e=>e&&e[0])}async hookFirstAndGetPlugin(e,t,n,s){for(const i of this.getSortedPlugins(e)){if(s?.has(i))continue;const r=await this.runHook(e,t,i,n);if(null!=r)return[r,i]}return null}hookFirstSync(e,t,n){for(const s of this.getSortedPlugins(e)){const i=this.runHookSync(e,t,s,n);if(null!=i)return i}return null}async hookParallel(e,t,n){const s=[];for(const i of this.getSortedPlugins(e))i[e].sequential?(await Promise.all(s),s.length=0,await this.runHook(e,t,i,n)):s.push(this.runHook(e,t,i,n));await Promise.all(s)}hookReduceArg0(e,[t,...n],s,i){let r=Promise.resolve(t);for(const t of this.getSortedPlugins(e))r=r.then(r=>this.runHook(e,[r,...n],t,i).then(e=>s.call(this.pluginContexts.get(t),r,e,t)));return r}hookReduceArg0Sync(e,[t,...n],s,i){for(const r of this.getSortedPlugins(e)){const o=[t,...n],a=this.runHookSync(e,o,r,i);t=s.call(this.pluginContexts.get(r),t,a,r)}return t}async hookReduceValue(e,t,n,s){const i=[],r=[];for(const t of this.getSortedPlugins(e,lh))t[e].sequential?(i.push(...await Promise.all(r)),r.length=0,i.push(await this.runHook(e,n,t))):r.push(this.runHook(e,n,t));return i.push(...await Promise.all(r)),i.reduce(s,await t)}hookReduceValueSync(e,t,n,s,i){let r=t;for(const t of this.getSortedPlugins(e)){const o=this.runHookSync(e,n,t,i);r=s.call(this.pluginContexts.get(t),r,o,t)}return r}hookSeq(e,t,n){let s=Promise.resolve();for(const i of this.getSortedPlugins(e))s=s.then(()=>this.runHook(e,t,i,n));return s.then(ch)}getSortedPlugins(e,t){return ue(this.sortedPlugins,e,()=>oh(e,this.plugins,t))}runHook(e,t,n,s){const i=n[e],r="object"==typeof i?i.handler:i;if("object"==typeof i&&"filter"in i&&i.filter)if("transform"===e){const e=i.filter,n=t,s=ue(this.compiledPluginFilters.transformFilter,e,()=>sh(e.id,e.code));if(s&&!s(n[1],n[0]))return Promise.resolve()}else if("resolveId"===e||"load"===e){const e=i.filter,n=t,s=ue(this.compiledPluginFilters.idOnlyFilter,e,()=>function(e){const t=nh(e);return t?e=>!!t(e):void 0}(e.id));if(s&&!s(n[0]))return Promise.resolve()}let o=this.pluginContexts.get(n);s&&(o=s(o,n));let a=null;return Promise.resolve().then(()=>{if("function"!=typeof r)return r;const s=r.apply(o,t);return s?.then?(a=[n.name,e,t],this.unfulfilledActions.add(a),Promise.resolve(s).then(e=>(this.unfulfilledActions.delete(a),e))):s}).catch(t=>(null!==a&&this.unfulfilledActions.delete(a),Bt(In(t,n.name,{hook:e}))))}runHookSync(e,t,n,s){const i=n[e],r="object"==typeof i?i.handler:i;let o=this.pluginContexts.get(n);s&&(o=s(o,n));try{return r.apply(o,t)}catch(t){return Bt(In(t,n.name,{hook:e}))}}}function oh(e,t,n=ah){const s=[],i=[],r=[];for(const o of t){const t=o[e];if(t){if("object"==typeof t){if(n(t.handler,e,o),"pre"===t.order){s.push(o);continue}if("post"===t.order){r.push(o);continue}}else n(t,e,o);i.push(o)}}return[...s,...i,...r]}function ah(e,t,n){"function"!=typeof e&&Bt(function(e,t){return{code:Ht,hook:e,message:`Error running plugin hook "${e}" for plugin "${t}", expected a function hook or an object with a "handler" function.`,plugin:t}}(t,n.name))}function lh(e,t,n){if("string"!=typeof e&&"function"!=typeof e)return Bt(function(e,t){return{code:Ht,hook:e,message:`Error running plugin hook "${e}" for plugin "${t}", expected a string, a function hook or an object with a "handler" string or function.`,plugin:t}}(t,n.name))}function ch(){}class uh{constructor(e){this.maxParallel=e,this.queue=[],this.workerCount=0}run(e){return new Promise((t,n)=>{this.queue.push({reject:n,resolve:t,task:e}),this.work()})}async work(){if(this.workerCount>=this.maxParallel)return;let e;for(this.workerCount++;e=this.queue.shift();){const{reject:t,resolve:n,task:s}=e;try{n(await s())}catch(e){t(e)}}this.workerCount--}}class dh{constructor(e,t){if(this.options=e,this.astLru=function(e){var t,n,s,i=e;function r(e,r){++t>i&&(s=n,o(1),++t),n[e]=r}function o(e){t=0,n=Object.create(null),e||(s=Object.create(null))}return o(),{clear:o,has:function(e){return void 0!==n[e]||void 0!==s[e]},get:function(e){var t=n[e];return void 0!==t?t:void 0!==(t=s[e])?(r(e,t),t):void 0},set:function(e,t){void 0!==n[e]?n[e]=t:r(e,t)}}}(5),this.cachedModules=new Map,this.deoptimizationTracker=new Re,this.entryModules=[],this.modulesById=new Map,this.needsTreeshakingPass=!1,this.newlyIncludedVariableInits=new Set,this.phase=zc.LOAD_AND_PARSE,this.scope=new yd,this.watchFiles=Object.create(null),this.watchMode=!1,this.externalModules=[],this.implicitEntryModules=[],this.modules=[],this.getModuleInfo=e=>{const t=this.modulesById.get(e);return t?t.info:null},!1!==e.cache){if(e.cache?.modules)for(const t of e.cache.modules)this.cachedModules.set(t.id,t);this.pluginCache=e.cache?.plugins||Object.create(null);for(const e in this.pluginCache){const t=this.pluginCache[e];for(const e of Object.values(t))e[0]++}}if(t){this.watchMode=!0;const e=(...e)=>this.pluginDriver.hookParallel("watchChange",e),n=()=>this.pluginDriver.hookParallel("closeWatcher",[]);t.onCurrentRun("change",e),t.onCurrentRun("close",n)}this.pluginDriver=new rh(this,e,e.plugins,this.pluginCache),this.moduleLoader=new Bd(this,this.modulesById,this.options,this.pluginDriver),this.fileOperationQueue=new uh(e.maxParallelFileOps),this.pureFunctions=(({treeshake:e})=>{const t=Object.create(null);for(const n of e?e.manualPureFunctions:[]){let e=t;for(const t of n.split("."))e=e[t]||=Object.create(null);e[Dn]=!0}return t})(e)}async build(){nu("generate module graph",2),await this.generateModuleGraph(),su("generate module graph",2),nu("sort and bind modules",2),this.phase=zc.ANALYSE,this.sortAndBindModules(),su("sort and bind modules",2),nu("mark included statements",2),this.includeStatements(),su("mark included statements",2),this.phase=zc.GENERATE}getCache(){for(const e in this.pluginCache){const t=this.pluginCache[e];let n=!0;for(const[e,s]of Object.entries(t))s[0]>=this.options.experimentalCacheExpiry?delete t[e]:n=!1;n&&delete this.pluginCache[e]}return{modules:this.modules.map(e=>e.toJSON()),plugins:this.pluginCache}}async generateModuleGraph(){var e;if(({entryModules:this.entryModules,implicitEntryModules:this.implicitEntryModules}=await this.moduleLoader.addEntryModules((e=this.options.input,Array.isArray(e)?e.map(e=>({fileName:null,id:e,implicitlyLoadedAfter:[],importer:void 0,name:null})):Object.entries(e).map(([e,t])=>({fileName:null,id:t,implicitlyLoadedAfter:[],importer:void 0,name:e}))),!0)),0===this.entryModules.length)throw new Error("You must supply options.input to rollup");for(const e of this.modulesById.values())e.cacheInfoGetters(),e instanceof cu?this.modules.push(e):this.externalModules.push(e)}includeStatements(){const e=[...this.entryModules,...this.implicitEntryModules];for(const t of e)qn(t);if(this.options.treeshake){let t=1;this.newlyIncludedVariableInits.clear();do{nu(`treeshaking pass ${t}`,3),this.needsTreeshakingPass=!1;for(const e of this.modules)if(e.isExecuted){e.hasTreeShakingPassStarted=!0,"no-treeshake"===e.info.moduleSideEffects?e.includeAllInBundle():e.include();for(const e of this.newlyIncludedVariableInits)this.newlyIncludedVariableInits.delete(e),e.include(ze(),!1)}if(1===t)for(const t of e)!1!==t.preserveSignature&&(t.includeAllExports(),this.needsTreeshakingPass=!0);su("treeshaking pass "+t++,3)}while(this.needsTreeshakingPass)}else for(const e of this.modules)e.includeAllInBundle();for(const e of this.externalModules)e.warnUnusedImports();for(const e of this.implicitEntryModules)for(const t of e.implicitlyLoadedAfter)t.info.isEntry||t.isIncluded()||Bt(En(t))}sortAndBindModules(){const{orderedModules:e,cyclePaths:t}=Qu(this.entryModules);for(const e of t)this.options.onLog(ft,sn(e));this.modules=e;for(const e of this.modules)e.bindReferences();this.warnForMissingExports()}warnForMissingExports(){for(const e of this.modules)for(const t of e.importDescriptions.values())if("*"!==t.name&&"source"!==t.phase){const[n,s]=t.module.getVariableForExportName(t.name,{importChain:[e.id]});n||e.log(ft,bn(t.name,e.id,t.module.id,!!s?.missingButExportExists),t.start)}}}function hh(e,t){return t()}const ph=e;function fh(e,t,n,s){e=oh("onLog",e);const i=yt[s],r=(s,o,a=ce)=>{jt(o);if(!(yt[s]yt[e]r(e,vd(n),new Set(a).add(t));if(!1===("handler"in e?e.handler:e).call({debug:l(gt),error:e=>Bt(vd(e)),info:l(mt),meta:{rollupVersion:ph,watchMode:n},warn:l(ft)},s,o))return}t(s,o)}};return r}const mh=e=>()=>Bt(function(e){return{code:"NO_FS_IN_BROWSER",message:`Cannot access the file system (via "${e}") when using the browser build of Rollup. Make sure you supply a plugin with custom resolveId and load hooks to Rollup.`,url:vt("plugin-development/#a-simple-example")}}(e)),gh=mh("fs.appendFile"),yh=mh("fs.copyFile"),bh=mh("fs.mkdir"),Eh=mh("fs.mkdtemp"),xh=mh("fs.readdir"),Ah=mh("fs.readFile"),Sh=mh("fs.realpath"),$h=mh("fs.rename"),vh=mh("fs.rmdir"),Ph=mh("fs.stat"),Ih=mh("fs.lstat"),wh=mh("fs.unlink"),Nh=mh("fs.writeFile");var kh=Object.freeze({__proto__:null,appendFile:gh,copyFile:yh,lstat:Ih,mkdir:bh,mkdtemp:Eh,readFile:Ah,readdir:xh,realpath:Sh,rename:$h,rmdir:vh,stat:Ph,unlink:wh,writeFile:Nh});const Ch=e=>!0===e.cache?void 0:e.cache?.cache||e.cache,Rh=e=>{if(!0===e)return()=>!0;if("function"==typeof e)return(t,...n)=>"\0"!==t[0]&&e(t,...n)||!1;if(e){const t=new Set,n=[];for(const s of Yd(e))s instanceof RegExp?n.push(s):t.add(s);return(e,...s)=>t.has(e)||n.some(t=>t.test(e))}return()=>!1},Dh=e=>{const t=e.input;return null==t?[]:"string"==typeof t?[t]:t},Oh=e=>{const t=e.jsx;if(!t)return!1;const n=Cd(t,Nd,"jsx",It,"false, "),{factory:s,importSource:i,mode:r}=n;switch(r){case"automatic":return{factory:s||"React.createElement",importSource:i||"react",jsxImportSource:n.jsxImportSource||"react/jsx-runtime",mode:"automatic"};case"preserve":return!i||s||n.fragment||Bt(gn("jsx",It,"when preserving JSX and specifying an importSource, you also need to specify a factory or fragment")),{factory:s||null,fragment:n.fragment||null,importSource:i||null,mode:"preserve"};default:return r&&"classic"!==r&&Bt(gn("jsx.mode",It,'mode must be "automatic", "classic" or "preserve"',r)),{factory:s||"React.createElement",fragment:n.fragment||"React.Fragment",importSource:i||null,mode:"classic"}}},Mh=e=>{const t=e.maxParallelFileOps;return"number"==typeof t?t<=0?1/0:t:1e3},_h=(e,t)=>{const n=e.moduleContext;if("function"==typeof n)return e=>n(e)??t;if(n){const e=Object.create(null);for(const[t,s]of Object.entries(n))e[W(t)]=s;return n=>e[n]??t}return()=>t},Lh=e=>{if(!1===e.treeshake)return!1;const t=Cd(e.treeshake,wd,"treeshake","configuration-options/#treeshake","false, true, ");return{annotations:!1!==t.annotations,correctVarValueBeforeDeclaration:!0===t.correctVarValueBeforeDeclaration,manualPureFunctions:t.manualPureFunctions??le,moduleSideEffects:Th(t.moduleSideEffects),propertyReadSideEffects:"always"===t.propertyReadSideEffects?"always":!1!==t.propertyReadSideEffects,tryCatchDeoptimization:!1!==t.tryCatchDeoptimization,unknownGlobalSideEffects:!1!==t.unknownGlobalSideEffects}},Th=e=>{if("boolean"==typeof e)return()=>e;if("no-external"===e)return(e,t)=>!t;if("function"==typeof e)return(t,n)=>"\0"===t[0]||!1!==e(t,n);if(Array.isArray(e)){const t=new Set(e);return e=>t.has(e)}return e&&Bt(gn("treeshake.moduleSideEffects","configuration-options/#treeshake-modulesideeffects",'please use one of false, "no-external", a function or an array')),()=>!0},Bh=/[\u0000-\u001F"#$%&*+,:;<=>?[\]^`{|}\u007F]/g,zh=/^[a-z]:/i;function Vh(e){const t=zh.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Bh,"_")}const Fh=(e,t,n)=>{const{file:s}=e;if("string"==typeof s){if(t)return Bt(gn("output.file",Nt,'you must set "output.dir" instead of "output.file" when using the "output.preserveModules" option'));if(!Array.isArray(n.input))return Bt(gn("output.file",Nt,'you must set "output.dir" instead of "output.file" when providing named inputs'))}return s},jh=e=>{const t=e.format;switch(t){case void 0:case"es":case"esm":case"module":return"es";case"cjs":case"commonjs":return"cjs";case"system":case"systemjs":return"system";case"amd":case"iife":case"umd":return t;default:return Bt(gn("output.format",Ct,'Valid values are "amd", "cjs", "system", "es", "iife" or "umd"',t))}},Uh=(e,t)=>{const n=e.inlineDynamicImports||!1,{input:s}=t;return n&&(Array.isArray(s)?s:Object.keys(s)).length>1?Bt(gn("output.inlineDynamicImports",Rt,'multiple inputs are not supported when "output.inlineDynamicImports" is true')):n},Gh=(e,t,n)=>{const s=e.preserveModules||!1;if(s){if(t)return Bt(gn("output.inlineDynamicImports",Rt,'this option is not supported for "output.preserveModules"'));if(!1===n.preserveEntrySignatures)return Bt(gn("preserveEntrySignatures","configuration-options/#preserveentrysignatures",'setting this option to false is not supported for "output.preserveModules"'))}return s},Hh=e=>{const{preserveModulesRoot:t}=e;if(null!=t)return W(t)},Wh=e=>{const t={autoId:!1,basePath:"",define:"define",forceJsExtensionForImports:!1,...e.amd};return(t.autoId||t.basePath)&&t.id?Bt(gn("output.amd.id",wt,'this option cannot be used together with "output.amd.autoId"/"output.amd.basePath"')):t.basePath&&!t.autoId?Bt(gn("output.amd.basePath","configuration-options/#output-amd-basepath",'this option only works with "output.amd.autoId"')):t.autoId?{autoId:!0,basePath:t.basePath,define:t.define,forceJsExtensionForImports:t.forceJsExtensionForImports}:{autoId:!1,define:t.define,forceJsExtensionForImports:t.forceJsExtensionForImports,id:t.id}},qh=(e,t)=>{const n=e[t];return"function"==typeof n?n:()=>n||""},Kh=(e,t)=>{const{dir:n}=e;return"string"==typeof n&&"string"==typeof t?Bt(gn("output.dir",Nt,'you must set either "output.file" for a single-file build or "output.dir" when generating multiple chunks')):n},Xh=(e,t)=>{const n=e.entryFileNames;return null==n&&t.add("entryFileNames"),n??"[name].js"};function Jh(e,t){const n=e.exports;if(null==n)t.add("exports");else if(!["default","named","none","auto"].includes(n))return Bt({code:Ut,message:`"output.exports" must be "default", "named", "none", "auto", or left unspecified (defaults to "auto"), received "${n}".`,url:vt(kt)});return n||"auto"}const Yh=(e,t)=>(null!=e.externalImportAssertions&&Rn('The "output.externalImportAssertions" option is deprecated. Use the "output.externalImportAttributes" option instead.',"configuration-options/#output-externalimportattributes",!0,t),e.externalImportAttributes??e.externalImportAssertions??!0),Zh=e=>{const t=Cd(e.generatedCode,kd,"output.generatedCode","configuration-options/#output-generatedcode","");return{arrowFunctions:!0===t.arrowFunctions,constBindings:!0===t.constBindings,objectShorthand:!0===t.objectShorthand,reservedNamesAsProps:!1!==t.reservedNamesAsProps,symbols:!0===t.symbols}},Qh=(e,t)=>{if(t)return"";const n=e.indent;return!1===n?"":n??!0},ep=new Set(["compat","auto","esModule","default","defaultOnly"]),tp=e=>{const t=e.interop;if("function"==typeof t){const e=Object.create(null);let n=null;return s=>null===s?n||np(n=t(s)):s in e?e[s]:np(e[s]=t(s))}return void 0===t?()=>"default":()=>np(t)},np=e=>ep.has(e)?e:Bt(gn("output.interop",Dt,`use one of ${Array.from(ep,e=>JSON.stringify(e)).join(", ")}`,e)),sp=(e,t,n)=>{const s=e.manualChunks;if(s){if(t)return Bt(gn("output.manualChunks",Ot,'this option is not supported for "output.inlineDynamicImports"'));if(n)return Bt(gn("output.manualChunks",Ot,'this option is not supported for "output.preserveModules"'))}return s||{}},ip=(e,t,n)=>e.minifyInternalExports??(n||"es"===t||"system"===t),rp=(e,t)=>{const n=e.sourcemapFileNames;return null==n&&t.add("sourcemapFileNames"),n},op=e=>{const{sourcemapBaseUrl:t}=e;if(t)return function(e){try{new URL(e)}catch{return!1}return!0}(t)?(n=t).endsWith("/")?n:n+"/":Bt(gn("output.sourcemapBaseUrl","configuration-options/#output-sourcemapbaseurl",`must be a valid URL, received ${JSON.stringify(t)}`));var n},ap=e;function lp(e){return async function(e,t){const{options:n,unsetOptions:s}=await async function(e,t){if(!e)throw new Error("You must supply an options object to rollup");const n=await async function(e,t){const n=oh("options",await Rd(e.plugins)),s=e.logLevel||mt,i=fh(n,Ad(e,s),t,s);for(const r of n){const{name:n,options:o}=r,a="handler"in o?o.handler:o,l=await a.call({debug:Kd(gt,"PLUGIN_LOG",i,n,s),error:e=>Bt(In(vd(e),n,{hook:"onLog"})),info:Kd(mt,"PLUGIN_LOG",i,n,s),meta:{rollupVersion:ap,watchMode:t},warn:Kd(ft,"PLUGIN_WARNING",i,n,s)},e);l&&(e=l)}return e}(e,t),{options:s,unsetOptions:i}=await async function(e,t){const n=new Set,s=e.context??"undefined",i=await Rd(e.plugins),r=e.logLevel||mt,o=fh(i,Ad(e,r),t,r),a=e.strictDeprecations||!1,l=Mh(e),c={cache:Ch(e),context:s,experimentalCacheExpiry:e.experimentalCacheExpiry??10,experimentalLogSideEffects:e.experimentalLogSideEffects||!1,external:Rh(e.external),fs:e.fs??kh,input:Dh(e),jsx:Oh(e),logLevel:r,makeAbsoluteExternalsRelative:e.makeAbsoluteExternalsRelative??"ifRelativeSource",maxParallelFileOps:l,moduleContext:_h(e,s),onLog:o,perf:e.perf||!1,plugins:i,preserveEntrySignatures:e.preserveEntrySignatures??"exports-only",preserveSymlinks:e.preserveSymlinks||!1,shimMissingExports:e.shimMissingExports||!1,strictDeprecations:a,treeshake:Lh(e)};return Id(e,[...Object.keys(c),"onwarn","watch"],"input options",o,/^(output)$/),{options:c,unsetOptions:n}}(n,t);return cp(s.plugins,Dd),{options:s,unsetOptions:i}}(e,null!==t);(function(e){e.perf?(Yc=new Map,nu=Qc,su=eu,e.plugins=e.plugins.map(ru)):(nu=Kn,su=Kn)})(n),await async function(){await Na()}();const i=new dh(n,t),r=!1!==e.cache;e.cache&&(n.cache=void 0,e.cache=void 0);nu("BUILD",1),await hh(i.pluginDriver,async()=>{try{nu("initialize",2),await i.pluginDriver.hookParallel("buildStart",[n]),su("initialize",2),await i.build()}catch(e){const t=Object.keys(i.watchFiles);t.length>0&&(e.watchFiles=t);try{await i.pluginDriver.hookParallel("buildEnd",[e])}catch(t){const n=zt({...e,message:`There was an error during the build:\n ${e.message}\nAdditionally, handling the error in the 'buildEnd' hook caused the following error:\n ${t.message}`});throw await i.pluginDriver.hookParallel("closeBundle",[n]),n}throw await i.pluginDriver.hookParallel("closeBundle",[e]),e}try{await i.pluginDriver.hookParallel("buildEnd",[])}catch(e){throw await i.pluginDriver.hookParallel("closeBundle",[e]),e}}),su("BUILD",1);const o={get cache(){return r?i.getCache():void 0},async close(){o.closed||(o.closed=!0,await i.pluginDriver.hookParallel("closeBundle",[]))},closed:!1,async[Symbol.asyncDispose](){await this.close()},generate:async e=>o.closed?Bt({code:"ALREADY_CLOSED",message:'Bundle is already closed, no more calls to "generate" or "write" are allowed.'}):up(!1,n,s,e,i),get watchFiles(){return Object.keys(i.watchFiles)},write:async e=>o.closed?Bt({code:"ALREADY_CLOSED",message:'Bundle is already closed, no more calls to "generate" or "write" are allowed.'}):up(!0,n,s,e,i)};n.perf&&(o.getTimings=tu);return o}(e,null)}function cp(e,t){for(const[n,s]of e.entries())s.name||(s.name=`${t}${n+1}`)}async function up(e,t,n,s,i){const{options:r,outputPluginDriver:o,unsetOptions:a}=await async function(e,t,n,s){if(!e)throw new Error("You must supply an options object");const i=await Rd(e.plugins);cp(i,Od);const r=t.createOutputPluginDriver(i);return{...await dp(n,s,e,r),outputPluginDriver:r}}(s,i.pluginDriver,t,n);return hh(0,async()=>{const n=new fd(r,a,t,o,i),s=await n.generate(e);if(e){if(nu("WRITE",1),!r.dir&&!r.file)return Bt({code:"MISSING_OPTION",message:'You must specify "output.file" or "output.dir" for the build.',url:vt(Nt)});await Promise.all(Object.values(s).map(e=>i.fileOperationQueue.run(()=>async function(e,t,{fs:{mkdir:n,writeFile:s}}){const i=W(t.dir||j(t.file),e.fileName);return await n(j(i),{recursive:!0}),s(i,"asset"===e.type?e.source:e.code)}(e,r,t)))),await o.hookParallel("writeBundle",[r,s]),su("WRITE",1)}return l=s,{output:Object.values(l).filter(e=>Object.keys(e).length>0).sort((e,t)=>pp(e)-pp(t))};var l})}function dp(e,t,n,s){return async function(e,t,n){const s=new Set(n),i=e.compact||!1,r=jh(e),o=Uh(e,t),a=Gh(e,o,t),l=Fh(e,a,t),c=Zh(e),u=Yh(e,t),d={amd:Wh(e),assetFileNames:e.assetFileNames??"assets/[name]-[hash][extname]",banner:qh(e,"banner"),chunkFileNames:e.chunkFileNames??"[name]-[hash].js",compact:i,dir:Kh(e,l),dynamicImportInCjs:e.dynamicImportInCjs??!0,entryFileNames:Xh(e,s),esModule:e.esModule??"if-default-prop",experimentalMinChunkSize:e.experimentalMinChunkSize??1,exports:Jh(e,s),extend:e.extend||!1,externalImportAssertions:u,externalImportAttributes:u,externalLiveBindings:e.externalLiveBindings??!0,file:l,footer:qh(e,"footer"),format:r,freeze:e.freeze??!0,generatedCode:c,globals:e.globals||{},hashCharacters:e.hashCharacters??"base64",hoistTransitiveImports:e.hoistTransitiveImports??!0,importAttributesKey:e.importAttributesKey??"assert",indent:Qh(e,i),inlineDynamicImports:o,interop:tp(e),intro:qh(e,"intro"),manualChunks:sp(e,o,a),minifyInternalExports:ip(e,r,i),name:e.name,noConflict:e.noConflict||!1,onlyExplicitManualChunks:e.onlyExplicitManualChunks||!1,outro:qh(e,"outro"),paths:e.paths||{},plugins:await Rd(e.plugins),preserveModules:a,preserveModulesRoot:Hh(e),reexportProtoFromExternal:e.reexportProtoFromExternal??!0,sanitizeFileName:"function"==typeof e.sanitizeFileName?e.sanitizeFileName:!1===e.sanitizeFileName?e=>e:Vh,sourcemap:e.sourcemap||!1,sourcemapBaseUrl:op(e),sourcemapDebugIds:e.sourcemapDebugIds||!1,sourcemapExcludeSources:e.sourcemapExcludeSources||!1,sourcemapFile:e.sourcemapFile,sourcemapFileNames:rp(e,s),sourcemapIgnoreList:"function"==typeof e.sourcemapIgnoreList?e.sourcemapIgnoreList:!1===e.sourcemapIgnoreList?()=>!1:e=>e.includes("node_modules"),sourcemapPathTransform:e.sourcemapPathTransform,strict:e.strict??!0,systemNullSetters:e.systemNullSetters??!0,validate:e.validate||!1,virtualDirname:e.virtualDirname||"_virtual"};return Id(e,Object.keys(d),"output options",t.onLog),{options:d,unsetOptions:s}}(s.hookReduceArg0Sync("outputOptions",[n],(e,t)=>t||e,e=>{const t=()=>e.error({code:"CANNOT_EMIT_FROM_OPTIONS_HOOK",message:'Cannot emit files or set asset sources in the "outputOptions" hook, use the "renderStart" hook instead.'});return{...e,emitFile:t,setAssetSource:t}}),e,t)}var hp;function pp(e){return"asset"===e.type?hp.ASSET:e.isEntry?hp.ENTRY_CHUNK:hp.SECONDARY_CHUNK}function fp(e){return e}Symbol.asyncDispose??=Symbol("Symbol.asyncDispose"),function(e){e[e.ENTRY_CHUNK=0]="ENTRY_CHUNK",e[e.SECONDARY_CHUNK=1]="SECONDARY_CHUNK",e[e.ASSET=2]="ASSET"}(hp||(hp={}));const mp=e;export{mp as VERSION,fp as defineConfig,lp as rollup}; diff --git a/extension/vendor/vendor.lock.json b/extension/vendor/vendor.lock.json index 171fca90..7baf7209 100644 --- a/extension/vendor/vendor.lock.json +++ b/extension/vendor/vendor.lock.json @@ -66,6 +66,10 @@ "readability/Readability-readerable.js": "5a8fc32e70171edc4fd27a31c614874df9d7d7cc8becfd7920ecff6a149c5819", "readability/Readability.js": "66abf753559cf89baacf516115a3259a98825399ebc159255cf0065b3b9a899a", "readability/SOURCE.txt": "b199beec47461f3fd3e01d3d3736d384278d123611e283f097fa68e70363ffe1", + "rollup/LICENSE.md": "8d218a9c9950dd89c1aede5956f7ab98b45cc41c876a88bbc5df88174fd8a96f", + "rollup/SOURCE.txt": "32d2c16201e78c1b5f717eada29f70e03e0091f918a0387999545046ca2b2514", + "rollup/bindings_wasm_bg.wasm": "ef41a5a1868f6268a10ce5b1ca4eb92b47683a2375b86c675badf0112a165796", + "rollup/rollup.browser.js": "00c7e102025e8ae11193e9f0f30eb6da31a1fcd34350aae94429833d4f4ea7c0", "simple-icons/SOURCE.txt": "8fcdd2cd8f63fb7fd4aaa9bfa66cde83d453677f964470f419185b2d39151f89", "simple-icons/brand-paths.js": "dc0c3573feb28c31aa7d0786d0af584c8a43706f51e91cf46fe52ee94d541ded", "tesseract/SOURCE.txt": "c0b0c2c9a7380264c2608c5ea3b79983f3623ef010d51d4f91cc170658a1a0b4", diff --git a/manifests/base.json b/manifests/base.json index d923fbd4..8bf837d6 100644 --- a/manifests/base.json +++ b/manifests/base.json @@ -45,7 +45,7 @@ }, "sandbox": { - "pages": ["engine-tabs/app-tab/runner.html"] + "pages": ["engine-tabs/app-tab/runner.html", "engine-tabs/notebook-tab/worker-host.html"] }, "cross_origin_embedder_policy": { "value": "require-corp" }, diff --git a/packaging/check-tscheck.ts b/packaging/check-tscheck.ts index c0379de4..81431fc3 100644 --- a/packaging/check-tscheck.ts +++ b/packaging/check-tscheck.ts @@ -158,7 +158,7 @@ import { computeCoverage } from './tscheck-coverage.ts'; // route, Options surface, and rendered side-panel coverage. // 673 → 676: the Actor Fabric adds its pure topology model, SW live projection, // and rendered browser contract while replacing the checked async-task bar. -const COVERED_FLOOR = 694; +const COVERED_FLOOR = 698; // The scan (walk + // @ts-check detection + the ES5-injected exemption set) // lives in tscheck-coverage.ts so the badge generator reports the same number. diff --git a/packaging/gen-channel-config.ts b/packaging/gen-channel-config.ts index cea63317..328cf08e 100644 --- a/packaging/gen-channel-config.ts +++ b/packaging/gen-channel-config.ts @@ -27,10 +27,14 @@ const DEV_OUT = join(EXTENSION_DIR, 'shared', 'channel-config.js'); export const dwebEnabledForTarget = (channel: ConfigChannel, browser?: Browser): boolean => channel === 'preview' && browser !== 'firefox'; -// Firefox rejects nested generated module URLs inside extension Workers. Keep -// the target fail-closed until the Notebook resolver has a native Gecko loader. export const remoteModuleImportsEnabledForTarget = (channel: ConfigChannel, browser?: Browser): boolean => - channel === 'preview' && browser !== 'firefox'; + channel === 'preview'; + +// Firefox extension module Workers cannot load generated child module URLs. +// The packaged target selects a single linked entry there; Chrome keeps the +// native module graph until the shared path has equivalent field coverage. +export const notebookModuleLoaderForTarget = (browser?: Browser): 'blob-graph' | 'single-bundle' => + browser === 'firefox' ? 'single-bundle' : 'blob-graph'; export const flattenDefaults = (channel: ConfigChannel, browser?: Browser): Record => { const out: Record = {}; @@ -78,6 +82,7 @@ export const genChannelConfigSource = (channel: ConfigChannel, browser?: Browser export const CHANNEL = ${JSON.stringify(channel)}; export const DWEB_ENABLED = ${JSON.stringify(dwebEnabledForTarget(channel, browser))}; export const REMOTE_MODULE_IMPORTS_ENABLED = ${JSON.stringify(remoteModuleImportsEnabledForTarget(channel, browser))}; +export const NOTEBOOK_MODULE_LOADER = ${JSON.stringify(notebookModuleLoaderForTarget(browser))}; export const CHANNEL_DEFAULTS = Object.freeze(${'{'} ${entries} diff --git a/packaging/security-baseline.json b/packaging/security-baseline.json index dc609608..ff3db51b 100644 --- a/packaging/security-baseline.json +++ b/packaging/security-baseline.json @@ -67,7 +67,8 @@ ], "sandbox": { "pages": [ - "engine-tabs/app-tab/runner.html" + "engine-tabs/app-tab/runner.html", + "engine-tabs/notebook-tab/worker-host.html" ] }, "side_panel": { @@ -216,7 +217,8 @@ ], "sandbox": { "pages": [ - "engine-tabs/app-tab/runner.html" + "engine-tabs/app-tab/runner.html", + "engine-tabs/notebook-tab/worker-host.html" ] }, "side_panel": { @@ -367,7 +369,8 @@ ], "sandbox": { "pages": [ - "engine-tabs/app-tab/runner.html" + "engine-tabs/app-tab/runner.html", + "engine-tabs/notebook-tab/worker-host.html" ] }, "side_panel": { diff --git a/scripts/cdp/states.mjs b/scripts/cdp/states.mjs index 972bcfc0..d20f2c98 100644 --- a/scripts/cdp/states.mjs +++ b/scripts/cdp/states.mjs @@ -3141,6 +3141,104 @@ export const STATES = [ } finally { try { page.close(); } catch { /* */ } } }, }, + { + name: 'notebook-stop-control', kind: 'functional', phase: 'post-unlock', + responder: () => ({ sse: sseText('noted') }), + async run(ctx, rec) { + const notebookId = 'e2e-stop-control'; + const page = await openWidePage( + ctx, `engine-tabs/notebook-tab/index.html#${notebookId}`, + { ready: '#notebook-app:not([hidden])' }, + ); + try { + const dispatched = await evalIn(ctx.page, `(async () => { + const browser = (await import('/vendor/browser-polyfill.js')).default; + const tabs = await browser.tabs.query({}); + const tab = tabs.find((candidate) => candidate.url?.includes(${JSON.stringify(`#${notebookId}`)})); + if (!tab?.id) return false; + globalThis.__peerdE2eNotebookEvaluation = browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: ${JSON.stringify(notebookId)}, + runId: 'e2e-stop-control-run', code: 'while (true) {}', timeoutMs: 20_000, + }); + return true; + })()`, true); + rec.check('the infinite Notebook run is dispatched', dispatched === true); + const started = await evalIn(page, `(async () => { + for (let attempt = 0; attempt < 100; attempt += 1) { + const button = document.getElementById('run-btn'); + if (button?.getAttribute('aria-label') === 'Stop notebook run') { + button.focus(); + return { + label: button.getAttribute('aria-label'), + text: button.textContent, + focused: document.activeElement === button, + }; + } + await new Promise((resolveWait) => setTimeout(resolveWait, 20)); + } + return null; + })()`, true); + rec.check('the Notebook exposes one focused Stop control while code runs', + started?.label === 'Stop notebook run' + && /Stop notebook run/.test(started?.text ?? '') + && started?.focused === true, + JSON.stringify(started)); + await rec.shotPage('notebook-stop-control', page); + + await evalIn(page, `document.getElementById('run-btn')?.click()`); + const stopped = await evalIn(ctx.page, + 'globalThis.__peerdE2eNotebookEvaluation', true); + const outcome = await evalIn(page, `(async () => { + for (let attempt = 0; attempt < 100; attempt += 1) { + const button = document.getElementById('run-btn'); + if (button?.getAttribute('aria-label') === 'Run notebook.js') { + return { + idleLabel: button.getAttribute('aria-label'), + focused: document.activeElement === button, + status: document.getElementById('run-status')?.textContent ?? '', + }; + } + await new Promise((resolveWait) => setTimeout(resolveWait, 20)); + } + return {}; + })()`, true); + rec.check('Stop terminates the exact run and restores the focused Run control', + stopped?.result?.stopped === true + && outcome?.idleLabel === 'Run notebook.js' + && outcome?.focused === true + && outcome?.status === 'Notebook run stopped.', + JSON.stringify({ stopped, outcome })); + + const importedFailure = await evalIn(ctx.page, `(async () => { + const browser = (await import('/vendor/browser-polyfill.js')).default; + const tabs = await browser.tabs.query({}); + const tab = tabs.find((candidate) => candidate.url?.includes(${JSON.stringify(`#${notebookId}`)})); + if (!tab?.id) return null; + await browser.tabs.sendMessage(tab.id, { + type: 'js/write-file', path: 'lib/failure.js', + content: 'throw new Error("imported failure canary");', + }); + return browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: ${JSON.stringify(notebookId)}, + runId: 'e2e-imported-failure', + code: 'import "./lib/failure.js"; return true;', timeoutMs: 10_000, + }); + })()`, true); + const failureView = await evalIn(page, `({ + status: document.getElementById('run-status')?.textContent ?? '', + output: document.getElementById('console-output')?.textContent ?? '', + })`, true); + rec.check('Chrome maps an imported-module failure to its source without a generated URL', + importedFailure?.result?.error?.includes('./lib/failure.js:1') + && !/blob:|data:/.test(importedFailure?.result?.error ?? '') + && failureView?.status === 'Notebook run failed.' + && failureView?.output?.includes('./lib/failure.js:1') + && !/blob:|data:/.test(failureView?.output ?? ''), + JSON.stringify({ importedFailure, failureView })); + await rec.shotPage('notebook-imported-failure', page); + } finally { try { page.close(); } catch { /* */ } } + }, + }, { name: 'notebook-tab-failed', kind: 'visual', phase: 'post-unlock', responder: () => ({ sse: sseText('noted') }), diff --git a/scripts/firefox/run-runtime-tests.mjs b/scripts/firefox/run-runtime-tests.mjs index 2f40aac4..2532a0f5 100644 --- a/scripts/firefox/run-runtime-tests.mjs +++ b/scripts/firefox/run-runtime-tests.mjs @@ -41,6 +41,9 @@ const PREVIEW_EXTENSION_ORIGIN = `moz-extension://${PREVIEW_TEST_UUID}`; const FIXTURE_PATH = '/__firefox-runtime-fixture'; const WORKER_PROBE_PATH = '/__firefox-worker-startup-probe'; const MODULE_IMPORT_PROBE_PATH = '/__firefox-module-import-probe.js'; +const REMOTE_MODULE_ROOT_PATH = '/__firefox-remote-module.js'; +const REMOTE_MODULE_CHILD_PATH = '/__firefox-remote-child.js'; +const REMOTE_MODULE_SLOW_PATH = '/__firefox-remote-slow.js'; const DNR_PUBLIC_HOST = 'guard.peerd.test'; const DNR_FRAME_HOST = 'frame.peerd.test'; const DNR_FIXTURE_PATH = '/__firefox-dnr-fixture'; @@ -359,6 +362,8 @@ const startProviderServer = async () => { const connections = []; const tlsErrors = []; let workerStartupProbes = 0; + let remoteModuleRequests = 0; + let slowModuleRequests = 0; let lifetimeActorResponses = 0; let lifetimeActorResponseAt = 0; let lifetimeActorAborts = 0; @@ -391,6 +396,31 @@ const startProviderServer = async () => { const providerRequestHandler = (request, response) => { const host = String(request.headers.host ?? '').split(':')[0].toLowerCase(); const requestUrl = new URL(request.url ?? '/', `https://${host || 'localhost'}`); + if (host === DNR_PUBLIC_HOST && request.method === 'GET' + && requestUrl.pathname === REMOTE_MODULE_SLOW_PATH) { + slowModuleRequests += 1; + const timer = setTimeout(() => { + response.writeHead(200, { 'content-type': 'text/javascript; charset=utf-8' }); + response.end('export const slow = true;'); + }, 2_000); + response.once('close', () => { + clearTimeout(timer); + }); + return; + } + if (host === DNR_PUBLIC_HOST && request.method === 'GET' + && [REMOTE_MODULE_ROOT_PATH, REMOTE_MODULE_CHILD_PATH].includes(requestUrl.pathname)) { + remoteModuleRequests += 1; + response.writeHead(200, { + 'content-type': 'text/javascript; charset=utf-8', + 'cache-control': 'no-store', + 'access-control-allow-origin': '*', + }); + response.end(requestUrl.pathname === REMOTE_MODULE_ROOT_PATH + ? `import { child } from './${REMOTE_MODULE_CHILD_PATH.slice(1)}'; export const remoteValue = child + 1;` + : 'export const child = 41;'); + return; + } if ([DNR_PUBLIC_HOST, DNR_FRAME_HOST].includes(host) && request.method === 'GET' && requestUrl.pathname === DNR_SERVICE_WORKER_FIXTURE_PATH) { response.writeHead(200, { @@ -881,6 +911,8 @@ const startProviderServer = async () => { return routeId; }, get workerStartupProbes() { return workerStartupProbes; }, + get remoteModuleRequests() { return remoteModuleRequests; }, + get slowModuleRequests() { return slowModuleRequests; }, get lifetimeActorResponses() { return lifetimeActorResponses; }, get lifetimeActorResponseAt() { return lifetimeActorResponseAt; }, get lifetimeActorAborts() { return lifetimeActorAborts; }, @@ -3037,9 +3069,344 @@ return 'REACHED';`; } }; -const runPreviewRemoteModuleSmoke = async (driver) => { - console.log('Firefox Preview remote module smoke: fail closed before request'); - const notebookId = 'firefox-preview-remote-refused'; +const runLocalModuleGraphSmoke = async (driver) => { + console.log('Firefox Notebook module graph smoke: link local modules into one sealed worker entry'); + const notebookId = 'firefox-local-module-graph'; + const notebookUrl = `${EXTENSION_ORIGIN}/engine-tabs/notebook-tab/index.html#${notebookId}`; + let notebookTabId = null; + try { + const opened = await driver.executeAsync(` + const [url] = arguments; + const done = arguments[arguments.length - 1]; + browser.tabs.create({ url, active: false }) + .then((tab) => done({ ok: true, tabId: tab.id }), + (error) => done({ ok: false, error: error?.message || String(error) })); + `, [notebookUrl]); + assert(opened?.ok === true && Number.isInteger(opened.tabId), + 'the local-module Notebook host opens', JSON.stringify(opened)); + notebookTabId = opened.tabId; + const ready = await waitFor(() => driver.executeAsync(` + const [tabId, id] = arguments; + const done = arguments[arguments.length - 1]; + Promise.all([ + browser.tabs.get(tabId), + browser.tabs.sendMessage(tabId, { type: 'js/list-files', notebookId: id }), + ]).then(([tab, reply]) => done(tab.status === 'complete' && reply?.ok === true), + () => done(false)); + `, [notebookTabId, notebookId]), { budgetMs: 30_000, pollMs: 200 }); + assert(ready === true, 'the local-module Notebook host is ready for RPC'); + await driver.navigate(notebookUrl); + const workerMatrix = await driver.executeAsync(` + const done = arguments[arguments.length - 1]; + const probe = (options) => new Promise((resolve) => { + const url = URL.createObjectURL(new Blob([ + "postMessage({ type: 'probe-ready' });", + ], { type: 'application/javascript' })); + let worker; + try { worker = options ? new Worker(url, options) : new Worker(url); } + catch (error) { + URL.revokeObjectURL(url); + resolve({ state: 'constructor-error', detail: error?.message || String(error) }); + return; + } + const timer = setTimeout(() => { + worker.terminate(); URL.revokeObjectURL(url); resolve({ state: 'timeout' }); + }, 5_000); + worker.addEventListener('message', () => { + clearTimeout(timer); worker.terminate(); URL.revokeObjectURL(url); resolve({ state: 'ready' }); + }, { once: true }); + worker.addEventListener('error', (event) => { + clearTimeout(timer); worker.terminate(); URL.revokeObjectURL(url); + resolve({ state: 'error', detail: event.message || '' }); + }, { once: true }); + }); + Promise.all([probe(null), probe({ type: 'module' })]) + .then(([classic, module]) => done({ classic, module }), + (error) => done({ error: error?.message || String(error) })); + `); + assert(workerMatrix?.classic?.state === 'error' && workerMatrix?.module?.state === 'error', + 'Firefox MV3 refuses generated Worker roots in a privileged extension page', + JSON.stringify(workerMatrix)); + await driver.navigate(`${EXTENSION_ORIGIN}/sidepanel/sidepanel.html`); + + const write = async (path, content) => driver.executeAsync(` + const [tabId, id, modulePath, source] = arguments; + const done = arguments[arguments.length - 1]; + browser.tabs.sendMessage(tabId, { + type: 'js/write-file', notebookId: id, path: modulePath, content: source, + }).then(done, (error) => done({ ok: false, error: error?.message || String(error) })); + `, [notebookTabId, notebookId, path, content]); + assert((await write('lib/value.js', 'export const value = 42;'))?.ok === true, + 'Firefox writes the shared local dependency'); + assert((await write('lib/index.js', "export { value } from './value.js';"))?.ok === true, + 'Firefox writes the local re-export'); + assert((await write('lib/module-semantics.js', ` + await Promise.resolve(); + export const sourceUrl = import.meta.url; + export const tlaValue = 43; + `))?.ok === true, 'Firefox writes the module-semantics fixture'); + assert((await write('lib/failure.js', ` + /*__peerd_module:00000000-0000-4000-8000-000000000000:module:%__*/ + throw new Error('imported-source-path-probe'); + `))?.ok === true, + 'Firefox writes the imported failure fixture'); + + const run = async (source) => driver.executeAsync(` + const [tabId, id, code] = arguments; + const done = arguments[arguments.length - 1]; + browser.tabs.sendMessage(tabId, { + type: 'js/eval', notebookId: id, code, timeoutMs: 20_000, + }).then(done, (error) => done({ ok: false, error: error?.message || String(error) })); + `, [notebookTabId, notebookId, source]); + const inline = await run("return 'INLINE-OK';"); + assert(inline?.ok === true && inline.result?.error == null + && inline.result?.value === 'INLINE-OK', + 'the Firefox Notebook runs an inline worker entry before the import graph probe', + JSON.stringify(inline)); + const failedInline = await run("throw new Error('source-path-probe');"); + assert(failedInline?.ok === true + && /source-path-probe/.test(failedInline.result?.error ?? '') + && /notebook\.js:1(?::|\b)/.test(failedInline.result?.error ?? '') + && !/blob:|data:/.test(failedInline.result?.error ?? ''), + 'Firefox maps worker failures to the Notebook source without generated URLs', + JSON.stringify(failedInline)); + const graph = await run(`import { value } from './lib/index.js'; +return value;`); + assert(graph?.ok === true && graph.result?.error == null + && graph.result?.value === 42, + 'current Firefox runs a nested local import and re-export', + JSON.stringify(graph)); + const moduleSemantics = await run(`import { sourceUrl, tlaValue } from './lib/module-semantics.js'; +return { sourceUrl, tlaValue };`); + assert(moduleSemantics?.ok === true && moduleSemantics.result?.error == null + && moduleSemantics.result?.value?.tlaValue === 43 + && moduleSemantics.result?.value?.sourceUrl === './lib/module-semantics.js', + 'Firefox preserves imported top-level await and stable import.meta.url', + JSON.stringify(moduleSemantics)); + const importedFailure = await run("import './lib/failure.js'; return false;"); + assert(importedFailure?.ok === true + && /imported-source-path-probe/.test(importedFailure.result?.error ?? '') + && /\.\/lib\/failure\.js/.test(importedFailure.result?.error ?? '') + && !/blob:|data:/.test(importedFailure.result?.error ?? ''), + 'Firefox maps imported-module failures to their source file', + JSON.stringify(importedFailure)); + const stringCompilation = await run(` + const probes = [ + () => eval('1'), + () => Function('return 1')(), + () => (async () => {}).constructor('return 1')(), + () => (function* () {}).constructor('return 1')(), + ]; + return probes.map((probe) => { + try { probe(); return 'unexpected success'; } + catch (error) { return error.name; } + }); + `); + assert(stringCompilation?.ok === true && stringCompilation.result?.error == null + && stringCompilation.result?.value?.length === 4 + && stringCompilation.result.value.every((value) => value !== 'unexpected success'), + 'Firefox blocks eval and function-constructor string compilation', + JSON.stringify(stringCompilation)); + const wasm = await run(` + const bytes = new Uint8Array([0,97,115,109,1,0,0,0]); + const module = await WebAssembly.compile(bytes); + return module instanceof WebAssembly.Module; + `); + assert(wasm?.ok === true && wasm.result?.error == null && wasm.result?.value === true, + 'Firefox keeps WebAssembly compilation without enabling JavaScript string compilation', + JSON.stringify(wasm)); + + const immediateStop = await driver.executeAsync(` + const [tabId, id] = arguments; + const done = arguments[arguments.length - 1]; + const runId = 'firefox-immediate-stop-probe'; + const evaluation = browser.tabs.sendMessage(tabId, { + type: 'js/eval', notebookId: id, runId, + code: 'while (true) {}', timeoutMs: 20_000, + }); + const abort = browser.tabs.sendMessage(tabId, { + type: 'js/abort', notebookId: id, runId, + }); + Promise.all([evaluation, abort]).then(([runResult, abortResult]) => + done({ runResult, abortResult }), + (error) => done({ error: error?.message || String(error) })); + `, [notebookTabId, notebookId]); + assert(immediateStop?.abortResult?.stopped === true + && immediateStop?.runResult?.result?.stopped === true, + 'an immediate Firefox abort cannot race ahead of run registration', + JSON.stringify(immediateStop)); + + const stopped = await driver.executeAsync(` + const [tabId, id] = arguments; + const done = arguments[arguments.length - 1]; + const runId = 'firefox-stop-probe'; + const evaluation = browser.tabs.sendMessage(tabId, { + type: 'js/eval', notebookId: id, runId, + code: 'while (true) {}', timeoutMs: 20_000, + }); + setTimeout(() => { + browser.tabs.sendMessage(tabId, { + type: 'js/abort', notebookId: id, runId, + }).then((abort) => evaluation.then((run) => done({ abort, run })), + (error) => done({ error: error?.message || String(error) })); + }, 250); + `, [notebookTabId, notebookId]); + assert(stopped?.abort?.ok === true && stopped.abort.stopped === true + && stopped?.run?.ok === true && stopped.run.result?.stopped === true + && stopped.run.result?.error == null, + 'Firefox Stop terminates the exact infinite run with a structured stopped result', + JSON.stringify(stopped)); + + assert((await write('cycle-a.js', "import './cycle-b.js'; export const a = 1;"))?.ok === true + && (await write('cycle-b.js', "import './cycle-a.js'; export const b = 2;"))?.ok === true, + 'Firefox writes the cyclic graph fixture'); + const cycle = await run("import './cycle-a.js'; return 'unreachable';"); + assert(cycle?.ok === true && /circular import/.test(cycle.result?.error ?? ''), + 'Firefox preserves Chrome resolver semantics by refusing a cycle before execution', + JSON.stringify(cycle)); + + const recovered = await run("return 'RECOVERED';"); + assert(recovered?.ok === true && recovered.result?.error == null + && recovered.result?.value === 'RECOVERED', + 'the same Firefox Notebook recovers after a graph failure', JSON.stringify(recovered)); + const originalHandle = await driver.windowHandle(); + let notebookHandle = null; + for (const handle of await driver.windowHandles()) { + await driver.switchToWindow(handle); + if ((await driver.execute('return location.href;')) === notebookUrl) { + notebookHandle = handle; + break; + } + } + assert(notebookHandle !== null, 'WebDriver finds the visible Notebook tab'); + const linkingStop = await driver.executeAsync(` + const [id] = arguments; + const done = arguments[arguments.length - 1]; + (async () => { + const tab = await browser.tabs.getCurrent(); + const values = Array.from({ length: 180_000 }, (_, index) => String(index)).join(','); + await browser.tabs.sendMessage(tab.id, { + type: 'js/write-file', notebookId: id, path: 'lib/linker-load.js', + content: 'export const values = [' + values + '];', + }); + const runId = 'firefox-linker-stop-probe'; + const startedAt = Date.now(); + const evaluation = browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId, + code: "import { values } from './lib/linker-load.js'; return values.length;", + timeoutMs: 20_000, + }); + let sawLinking = false; + for (let attempt = 0; attempt < 400; attempt += 1) { + if (document.getElementById('run-status')?.textContent === 'Linking notebook imports.') { + sawLinking = true; + break; + } + await new Promise((resolveWait) => setTimeout(resolveWait, 5)); + } + const abort = await browser.tabs.sendMessage(tab.id, { + type: 'js/abort', notebookId: id, runId, + }); + done({ + sawLinking, abort, run: await evaluation, + elapsedMs: Date.now() - startedAt, + }); + })().catch((error) => done({ error: error?.message || String(error) })); + `, [notebookId]); + assert(linkingStop?.sawLinking === true + && linkingStop?.abort?.stopped === true + && linkingStop?.run?.result?.stopped === true + && linkingStop.elapsedMs < 3_000, + 'Stop terminates the disposable Firefox compiler during module linking', + JSON.stringify(linkingStop)); + const control = await driver.executeAsync(` + const [id] = arguments; + const done = arguments[arguments.length - 1]; + (async () => { + const tab = await browser.tabs.getCurrent(); + const runId = 'firefox-control-stop-probe'; + const evaluation = browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId, + code: 'while (true) {}', timeoutMs: 20_000, + }); + let running = null; + for (let attempt = 0; attempt < 50; attempt += 1) { + const button = document.getElementById('run-btn'); + if (button?.getAttribute('aria-label') === 'Stop notebook run') { + button.focus(); + const concurrent = await browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId: 'firefox-concurrent-probe', + code: "return 'MUST-NOT-REPLACE';", timeoutMs: 20_000, + }); + const notebookFile = await browser.tabs.sendMessage(tab.id, { + type: 'js/read-file', notebookId: id, path: 'notebook.js', + }); + running = { + label: button.getAttribute('aria-label'), + text: button.textContent, + focused: document.activeElement === button, + concurrent, + notebookFile, + }; + button.click(); + break; + } + await new Promise((resolveWait) => setTimeout(resolveWait, 20)); + } + const stoppedRun = await evaluation; + let idle = null; + for (let attempt = 0; attempt < 50; attempt += 1) { + const button = document.getElementById('run-btn'); + if (button?.getAttribute('aria-label') === 'Run notebook.js') { + idle = { + label: button.getAttribute('aria-label'), + focused: document.activeElement === button, + }; + break; + } + await new Promise((resolveWait) => setTimeout(resolveWait, 20)); + } + const recoveredRun = await browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId: 'firefox-control-recovery', + code: "return 'CONTROL-RECOVERED';", timeoutMs: 20_000, + }); + done({ running, idle, stoppedRun, recoveredRun }); + })().catch((error) => done({ error: error?.message || String(error) })); + `, [notebookId]); + assert(control?.running?.label === 'Stop notebook run' + && /Stop notebook run/.test(control.running.text ?? '') + && control.running.focused === true + && control.running.concurrent?.result?.errorCode === 'notebook_run_busy' + && control.running.notebookFile?.content === 'while (true) {}' + && control?.idle?.label === 'Run notebook.js' + && control.idle.focused === true + && control?.stoppedRun?.result?.stopped === true + && control?.recoveredRun?.result?.value === 'CONTROL-RECOVERED', + 'the accessible Run control becomes Stop, keeps focus, terminates, and recovers', + JSON.stringify(control)); + const visible = await driver.execute(` + return { + status: document.getElementById('run-status')?.textContent ?? '', + output: document.getElementById('console-output')?.textContent ?? '', + }; + `); + await driver.switchToWindow(originalHandle); + assert(visible?.status === 'Notebook run complete.' && !/blob:|data:/.test(visible?.output ?? ''), + 'visible recovery completes without exposing generated module URLs', JSON.stringify(visible)); + } finally { + if (notebookTabId != null) { + await driver.executeAsync(` + const [tabId] = arguments; + const done = arguments[arguments.length - 1]; + browser.tabs.remove(tabId).then(() => done(true), () => done(false)); + `, [notebookTabId]).catch(() => {}); + } + } +}; + +const runPreviewRemoteModuleSmoke = async (driver, providerServer) => { + console.log('Firefox Preview remote module smoke: audited nested graph under compute-only policy'); + const notebookId = 'firefox-preview-remote-graph'; await driver.setWindowRect({ width: 1280, height: 900, x: 0, y: 0 }); await driver.navigate(`${PREVIEW_EXTENSION_ORIGIN}/engine-tabs/notebook-tab/index.html#${notebookId}`); const mounted = await waitFor(() => driver.execute( @@ -3047,48 +3414,155 @@ const runPreviewRemoteModuleSmoke = async (driver) => { ), { budgetMs: 30_000 }); assert(mounted === true, 'Firefox Preview Notebook host mounts for the remote-module probe'); + const remoteUrl = `https://${DNR_PUBLIC_HOST}:${providerServer.tlsPort}${REMOTE_MODULE_ROOT_PATH}`; + const remoteCode = `import { remoteValue } from ${JSON.stringify(remoteUrl)}; +let fileBlocked = false; +let networkBlocked = false; +let subagentBlocked = false; +let dwebBlocked = false; +let providerBlocked = false; +let pageBlocked = false; +let siteBlocked = false; +try { await peerd.self.writeFile('remote.txt', 'no'); } catch { fileBlocked = true; } +try { await peerd.egress.fetch('https://example.com'); } catch { networkBlocked = true; } +try { await peerd.runtime.runAgent({ task: 'no' }); } catch { subagentBlocked = true; } +try { await peerd.distributed.peers(); } catch { dwebBlocked = true; } +try { await peerd.provider.call({ prompt: 'no' }); } catch { providerBlocked = true; } +try { await peerd.page.goto('https://example.com'); } catch { pageBlocked = true; } +try { await peerd.site.fetch('/private'); } catch { siteBlocked = true; } +for (const envelope of [ + { type: 'actor-request', rid: 'forged-actor', args: { task: 'leak' } }, + { type: 'fetch-request', rid: 'forged-fetch', url: 'https://example.com', method: 'GET' }, + { type: 'opfs-request', rid: 'forged-opfs', op: 'write', args: { path: 'remote.txt', content: 'no' } }, + { type: 'distributed-request', rid: 'forged-dweb', method: 'peers' }, + { type: 'provider-request', rid: 'forged-provider', args: { prompt: 'leak' } }, +]) postMessage(envelope); +return { + remoteValue, fileBlocked, networkBlocked, subagentBlocked, dwebBlocked, + providerBlocked, pageBlocked, siteBlocked, +};`; const outcome = await driver.executeAsync(` - const [id] = arguments; + const [id, code] = arguments; const done = arguments[arguments.length - 1]; (async () => { const browser = (await import('/vendor/browser-polyfill.js')).default; const config = await import('/shared/channel-config.js'); + const tab = await browser.tabs.getCurrent(); const original = browser.runtime.sendMessage.bind(browser.runtime); const calls = []; browser.runtime.sendMessage = (message) => { calls.push(message?.type ?? 'unknown'); return original(message); }; - const tab = await browser.tabs.getCurrent(); const run = await browser.tabs.sendMessage(tab.id, { type: 'js/eval', notebookId: id, - code: "import { remoteValue } from 'https://modules.example/probe.js'; return remoteValue;", - timeoutMs: 10_000, + code, + timeoutMs: 20_000, }); done({ remoteModulesEnabled: config.REMOTE_MODULE_IMPORTS_ENABLED, errorCode: run?.result?.errorCode ?? null, resultError: run?.result?.error ?? null, + value: run?.result?.value ?? null, + usedRemoteModules: run?.result?.usedRemoteModules === true, durationMs: run?.result?.durationMs ?? null, - callsJson: JSON.stringify(calls), + status: document.getElementById('run-status')?.textContent ?? '', + output: document.getElementById('console-output')?.textContent ?? '', + calls, + }); + })().catch((error) => done({ error: error?.message || String(error) })); + `, [notebookId, remoteCode]); + assert(outcome?.remoteModulesEnabled === true, + 'Firefox Preview packages the single-entry remote module loader', JSON.stringify(outcome)); + assert(outcome?.resultError == null && outcome?.errorCode == null + && outcome?.usedRemoteModules === true + && outcome?.value?.remoteValue === 42 + && outcome?.value?.fileBlocked === true + && outcome?.value?.networkBlocked === true + && outcome?.value?.subagentBlocked === true + && outcome?.value?.dwebBlocked === true + && outcome?.value?.providerBlocked === true + && outcome?.value?.pageBlocked === true + && outcome?.value?.siteBlocked === true, + 'Firefox Preview runs the nested graph with every host capability blocked', JSON.stringify(outcome)); + assert(Array.isArray(outcome?.calls) + && outcome.calls.filter((type) => type === 'sw/web-fetch').length === 2 + && !outcome.calls.some((type) => [ + 'actor/spawn', 'dweb/distributed/info', 'provider/call', 'page/call', 'site/call', + ].includes(type)), + 'forged remote bridge envelopes do not leave the Firefox Notebook host', + JSON.stringify(outcome?.calls)); + assert(providerServer.remoteModuleRequests === 2, + 'the audited host fetches exactly the root and nested remote modules', + String(providerServer.remoteModuleRequests)); + assert(outcome.status === 'Remote code ran with restricted access.' + && /Remote imports run with compute only/.test(outcome.output) + && !/blob:|data:/.test(outcome.output), + 'Firefox Preview shows the compute-only receipt without generated URLs', JSON.stringify(outcome)); + + const slowUrl = `https://${DNR_PUBLIC_HOST}:${providerServer.tlsPort}${REMOTE_MODULE_SLOW_PATH}`; + const stoppedFetch = await driver.executeAsync(` + const [id, url] = arguments; + const done = arguments[arguments.length - 1]; + (async () => { + const browser = (await import('/vendor/browser-polyfill.js')).default; + const tab = await browser.tabs.getCurrent(); + const runId = 'firefox-remote-fetch-stop'; + const startedAt = Date.now(); + const evaluation = browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId, + code: 'import ' + JSON.stringify(url) + '; return false;', timeoutMs: 20_000, + }); + await new Promise((resolveWait) => setTimeout(resolveWait, 150)); + const abort = await browser.tabs.sendMessage(tab.id, { + type: 'js/abort', notebookId: id, runId, + }); + const run = await evaluation; + await new Promise((resolveWait) => setTimeout(resolveWait, 300)); + done({ + abort, run, elapsedMs: Date.now() - startedAt, status: document.getElementById('run-status')?.textContent ?? '', output: document.getElementById('console-output')?.textContent ?? '', }); })().catch((error) => done({ error: error?.message || String(error) })); - `, [notebookId]); - assert(outcome?.remoteModulesEnabled === false, - 'Firefox Preview packages remote imports as unavailable', JSON.stringify(outcome)); - assert(outcome?.errorCode === 'remote_module_imports_unavailable' - && outcome?.durationMs === 0 - && outcome?.resultError?.startsWith('import resolution failed:'), - 'Firefox Preview refuses the remote graph before worker creation', JSON.stringify(outcome)); - const calls = JSON.parse(outcome?.callsJson ?? '[]'); - assert(!calls.includes('sw/web-fetch'), - 'Firefox Preview refusal makes no module request', outcome?.callsJson); - assert(/does not allow remote module imports/.test(outcome.status) - && /inline reviewed source directly in the code you run/.test(outcome.status), - 'Firefox Preview shows actionable import recovery', JSON.stringify(outcome)); - writeFileSync(join(OUTPUT, 'preview-notebook-remote-refused.png'), + `, [notebookId, slowUrl]); + assert(stoppedFetch?.abort?.stopped === true + && stoppedFetch?.run?.result?.stopped === true + && stoppedFetch.elapsedMs < 3_000 + && providerServer.slowModuleRequests === 1 + && stoppedFetch.status === 'Notebook run stopped.' + && !stoppedFetch.output.includes(REMOTE_MODULE_SLOW_PATH), + 'Stop cancels the Firefox host fetch operation without late resolver output', + JSON.stringify({ stoppedFetch, requests: providerServer.slowModuleRequests })); + const timedOutFetch = await driver.executeAsync(` + const [id, url] = arguments; + const done = arguments[arguments.length - 1]; + (async () => { + const browser = (await import('/vendor/browser-polyfill.js')).default; + const tab = await browser.tabs.getCurrent(); + const startedAt = Date.now(); + const run = await browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId: 'firefox-remote-fetch-timeout', + code: 'import ' + JSON.stringify(url) + '; return false;', timeoutMs: 400, + }); + await new Promise((resolveWait) => setTimeout(resolveWait, 300)); + done({ + run, elapsedMs: Date.now() - startedAt, + status: document.getElementById('run-status')?.textContent ?? '', + output: document.getElementById('console-output')?.textContent ?? '', + }); + })().catch((error) => done({ error: error?.message || String(error) })); + `, [notebookId, slowUrl]); + assert(/timed out/.test(timedOutFetch?.run?.result?.error ?? '') + && timedOutFetch?.run?.result?.errorCode === 'notebook_run_timeout' + && timedOutFetch?.run?.result?.stopped !== true + && timedOutFetch.elapsedMs < 3_000 + && timedOutFetch.status === 'Notebook run timed out.' + && providerServer.slowModuleRequests === 2 + && !timedOutFetch.output.includes(REMOTE_MODULE_SLOW_PATH), + 'the Firefox import deadline cancels host work and recovers without late output', + JSON.stringify({ timedOutFetch, requests: providerServer.slowModuleRequests })); + writeFileSync(join(OUTPUT, 'preview-notebook-remote-restricted.png'), Buffer.from(await driver.screenshot(), 'base64')); }; @@ -3950,8 +4424,20 @@ const main = async () => { assert(unsupportedVoiceNudge === false, 'Firefox hides voice setup when no transcription engine can run'); + if (process.env.FIREFOX_RUNTIME_ONLY === 'notebook-modules') { + await runModuleImportPolicySmoke(driver, server); + await runLocalModuleGraphSmoke(driver); + const installedPreviewId = await driver.installAddon(resolve(previewArtifact)); + assert(installedPreviewId === PREVIEW_ADDON_ID, + 'the targeted Notebook run installs the Firefox Preview package'); + await runPreviewRemoteModuleSmoke(driver, providerServer); + console.log('Firefox Notebook module smoke OK'); + return; + } + await runPrivateNetworkDnrSmoke(driver, providerServer); await runModuleImportPolicySmoke(driver, server); + await runLocalModuleGraphSmoke(driver); await runBoundActorSmoke(driver, providerServer); await runNumericTabAuthoritySmoke(driver, providerServer); await runActorLifetimeSmoke({ providerServer }); @@ -4124,7 +4610,7 @@ const main = async () => { && previewPosture?.dwebAvailable === false, 'installed Firefox Preview omits the dweb surface until it has a mesh host', JSON.stringify(previewPosture)); - await runPreviewRemoteModuleSmoke(driver); + await runPreviewRemoteModuleSmoke(driver, providerServer); await driver.setWindowRect({ width: 400, height: 900, x: 0, y: 0 }); diff --git a/tests/background/notebook-resolve-lane.test.ts b/tests/background/notebook-resolve-lane.test.ts index 64bceeca..ab04e30c 100644 --- a/tests/background/notebook-resolve-lane.test.ts +++ b/tests/background/notebook-resolve-lane.test.ts @@ -40,3 +40,11 @@ describe('notebook-client — re-inflates the OPFS not-found signal (edit_file 3 expect(src).toMatch(/err\.name = 'NotFoundError'/); }); }); + +describe('notebook-client: Stop reaches the exact Notebook run', () => { + test('eval mints a run id and relays abort through js/abort', () => { + expect(src).toMatch(/const runId = crypto\.randomUUID\(\)/); + expect(src).toMatch(/type: 'js\/abort', notebookId, runId: message\.runId/); + expect(src).toMatch(/opts\.signal/); + }); +}); diff --git a/tests/background/routes-engine.test.ts b/tests/background/routes-engine.test.ts index c0ec7963..c3e9d5b7 100644 --- a/tests/background/routes-engine.test.ts +++ b/tests/background/routes-engine.test.ts @@ -162,6 +162,53 @@ describe('sw/web-fetch', () => { expect(await pending).toEqual({ ok: false, error: 'aborted' }); expect(seenSignal?.aborted).toBe(true); }); + + test('a Notebook can cancel only its own token-bound module fetch', async () => { + let seenSignal: AbortSignal | undefined; + const notebookUrl = 'moz-extension://test/engine-tabs/notebook-tab/index.html#n1'; + const routes = makeEngineRoutes(baseDeps({ + browser: { + runtime: { + getURL: (path: string) => `moz-extension://test/${path}`, + getContexts: async () => [], sendMessage: async () => ({ ok: true }), + }, + storage: { local: { get: async () => ({}), set: async () => {} } }, + }, + vmHttpFetch: async ({ signal }: any) => { + seenSignal = signal; + return await new Promise((_resolve, reject) => { + signal.addEventListener('abort', () => reject(new Error('aborted')), { once: true }); + }); + }, + })); + const sender = { tab: { id: 41, url: notebookUrl }, url: notebookUrl }; + const pending = (routes['sw/web-fetch'] as any)({ + url: 'https://modules.example/a.js', noCache: true, + abortToken: 'token-1', notebookId: 'n1', + }, sender); + await Promise.resolve(); + expect(await (routes['sw/web-fetch-abort'] as any)( + { abortToken: 'token-1', notebookId: 'n2' }, { + tab: { id: 99, url: 'moz-extension://test/engine-tabs/notebook-tab/index.html#n2' }, + url: 'moz-extension://test/engine-tabs/notebook-tab/index.html#n2', + }, + )).toEqual({ ok: true, aborted: false }); + expect(await (routes['sw/web-fetch-abort'] as any)( + { abortToken: 'token-1', notebookId: 'n1' }, sender, + )).toEqual({ ok: true, aborted: true }); + expect(await pending).toEqual({ ok: false, error: 'aborted' }); + expect(seenSignal?.aborted).toBe(true); + + const deadlinePending = (routes['sw/web-fetch'] as any)({ + url: 'https://modules.example/slow.js', noCache: true, + abortToken: 'token-2', notebookId: 'n1', deadlineAt: Date.now() + 10, + }, sender); + expect(await deadlinePending).toEqual({ ok: false, error: 'aborted' }); + expect(seenSignal?.aborted).toBe(true); + expect(await (routes['sw/web-fetch-abort'] as any)( + { abortToken: 'token-2', notebookId: 'n1' }, sender, + )).toEqual({ ok: true, aborted: false }); + }); }); describe('app/vm meta + apps Library', () => { diff --git a/tests/engine-tabs/notebook-tab/worker-source.test.ts b/tests/engine-tabs/notebook-tab/worker-source.test.ts index edbf8bdb..097bc16a 100644 --- a/tests/engine-tabs/notebook-tab/worker-source.test.ts +++ b/tests/engine-tabs/notebook-tab/worker-source.test.ts @@ -47,7 +47,7 @@ describe('buildWorkerSource — bodyLine + mapWorkerError', () => { expect(lines[bodyLine + 1]).toBe('mean([A]);'); }); - test('mapWorkerError rewrites entry-blob frames to entryPath:userLine and leaves others alone', () => { + test('mapWorkerError rewrites entry and imported-module blob frames to source paths', () => { const blobUrl = 'blob:chrome-extension://abc/uuid-1'; const raw = [ 'ReferenceError: nope is not defined', @@ -55,10 +55,13 @@ describe('buildWorkerSource — bodyLine + mapWorkerError', () => { ` at ${blobUrl}:12:1`, // preamble frame (before body) → untouched ' at blob:chrome-extension://abc/other-module:7:3', // another module → untouched ].join('\n'); - const out = mapWorkerError(raw, blobUrl, 213, 'notebook.js'); + const out = mapWorkerError(raw, blobUrl, 213, 'notebook.js', new Map([ + ['lib/failure.js', { blobUrl: 'blob:chrome-extension://abc/other-module' }], + ])); expect(out).toContain('at notebook.js:2:9'); expect(out).toContain(`at ${blobUrl}:12:1`); - expect(out).toContain('at blob:chrome-extension://abc/other-module:7:3'); + expect(out).toContain('at ./lib/failure.js:7:3'); + expect(out).not.toContain('blob:chrome-extension://abc/other-module'); expect(out).not.toContain(`${blobUrl}:214:9`); }); diff --git a/tests/peerd-engine/single-module-linker.test.ts b/tests/peerd-engine/single-module-linker.test.ts new file mode 100644 index 00000000..c98c1e39 --- /dev/null +++ b/tests/peerd-engine/single-module-linker.test.ts @@ -0,0 +1,56 @@ +import { describe, expect, test } from 'bun:test'; +import { readFile } from 'node:fs/promises'; +import { buildWorkerSource, NOTEBOOK_BUILTINS, SEAL_MODULE_URL } from '../../extension/engine-tabs/notebook-tab/worker-source.js'; +import { linkSingleModuleWorker } from '../../extension/peerd-engine/single-module-linker.js'; + +const withFileFetch = async (run: () => Promise): Promise => { + const original = globalThis.fetch; + globalThis.fetch = (async (input: RequestInfo | URL, init?: RequestInit) => { + const url = input instanceof Request ? input.url : String(input); + if (url.startsWith('file:')) { + return new Response(await readFile(new URL(url)), { + headers: { 'content-type': 'application/wasm' }, + }); + } + return original(input, init); + }) as typeof fetch; + try { return await run(); } + finally { globalThis.fetch = original; } +}; + +describe('single-module Notebook linker', () => { + test('emits one seal-first worker module with local ESM semantics intact', async () => { + const files: Record = { + 'lib/value.js': `await Promise.resolve(); +export let value = 40; +export const sourceUrl = import.meta.url; +export const add = (n) => { value += n; };`, + 'lib/index.js': "export { value, sourceUrl, add } from './value.js';", + 'side.js': "import { add } from './lib/index.js'; add(2); globalThis.sideOrder = ['side'];", + }; + let sequence = 0; + const built = await buildWorkerSource(`import './side.js'; +import * as values from './lib/index.js'; +await Promise.resolve(); +return { value: values.value, order: globalThis.sideOrder };`, { + notebookId: 'linker-test', + resolverDeps: { + readFile: async (path) => files[path], + makeBlobUrl: () => `blob:peerd-test/${sequence += 1}`, + }, + }); + const linked = await withFileFetch(() => linkSingleModuleWorker( + built.source, built.cache, [SEAL_MODULE_URL, ...Object.values(NOTEBOOK_BUILTINS)], + )); + expect(linked.startsWith("'use strict';\n")).toBe(true); + expect(linked).not.toContain(`import '${SEAL_MODULE_URL}'`); + expect(linked).not.toContain('import.meta'); + expect(linked).toContain('"./lib/value.js"'); + expect(linked).toMatch(/\/\*__peerd_module:[0-9a-f-]+:module:.%2Flib%2Fvalue\.js__\*\//); + expect(linked.indexOf('applyRealmSeal(globalThis)')) + .toBeLessThan(linked.indexOf('let value = 40')); + expect(linked).not.toContain('blob:peerd-test'); + expect(linked).toContain('value += n'); + expect(linked).toContain('await Promise.resolve()'); + }); +}); diff --git a/tests/peerd-runtime/tools/remote-import-policy.test.ts b/tests/peerd-runtime/tools/remote-import-policy.test.ts index dfa78bbc..b9643a61 100644 --- a/tests/peerd-runtime/tools/remote-import-policy.test.ts +++ b/tests/peerd-runtime/tools/remote-import-policy.test.ts @@ -56,6 +56,49 @@ describe('remote module package policy reaches the model as a tool failure', () if (!result.ok) expect(result.error).toBe(policyError); }); + test('Notebook Stop is structured and does not look like a code error to retry', async () => { + const controller = new AbortController(); + const result = await jsNotebookTool.execute({ code: 'while (true) {}' }, { + session: { sessionId: 'session-1', kind: 'chat' }, + abortSignal: controller.signal, + jsClient: { + eval: async (_code: string, options: { signal?: AbortSignal }) => { + expect(options.signal).toBe(controller.signal); + return { durationMs: 0, stopped: true }; + }, + }, + } as any); + expect(result).toEqual({ + ok: true, + content: '[STOPPED] Notebook run was stopped. Do not retry automatically.', + }); + expect((result as any).evalError).toBeUndefined(); + }); + + test('Notebook busy is a non-code result and does not invite an automatic retry', async () => { + const result = await jsNotebookTool.execute({ code: 'return 1;' }, { + session: { sessionId: 'session-1', kind: 'chat' }, + jsClient: { eval: async () => ({ errorCode: 'notebook_run_busy' }) }, + } as any); + expect(result.ok).toBe(true); + expect(result.content).toContain('[BUSY]'); + expect(result.content).toContain('was not run'); + expect(result.content).toContain('Do not retry automatically'); + expect((result as any).evalError).toBeUndefined(); + }); + + test('Notebook timeout is a non-code result with explicit retry guidance', async () => { + const result = await jsNotebookTool.execute({ code: 'while (true) {}' }, { + session: { sessionId: 'session-1', kind: 'chat' }, + jsClient: { eval: async () => ({ errorCode: 'notebook_run_timeout' }) }, + } as any); + expect(result.ok).toBe(true); + expect(result.content).toContain('[TIMEOUT]'); + expect(result.content).toContain('increase timeoutMs'); + expect(result.content).toContain('Do not retry the same request automatically'); + expect((result as any).evalError).toBeUndefined(); + }); + test.each([ ['script', scriptTool], ['Notebook', jsNotebookTool], diff --git a/tests/red-team/scenarios/06-sandbox-escape.ts b/tests/red-team/scenarios/06-sandbox-escape.ts index 049b44c0..b3cc8e56 100644 --- a/tests/red-team/scenarios/06-sandbox-escape.ts +++ b/tests/red-team/scenarios/06-sandbox-escape.ts @@ -271,7 +271,9 @@ export const scenario: Scenario = { 'tests/peerd-engine/module-resolver-toolbox.test.ts (remote-to-local toolbox refusal)', 'tests/engine-tabs/notebook-tab/worker-caps-profile.test.ts (remote whole-run profile)', 'tests/peerd-runtime/tools/remote-import-policy.test.ts (remote output fence)', + 'tests/peerd-engine/single-module-linker.test.ts (seal-first graph with no child loads)', 'extension/tests/unit/red-team/sandbox-escape.test.js (in-browser red-team framing)', + 'scripts/firefox/run-runtime-tests.mjs (opaque worker host, string-compilation refusal, cancellable compiler and fetch, local and remote graph parity)', 'scripts/cdp/states.mjs actor-command-sender-pin (live engine-tab forgery)', 'scripts/cdp/states.mjs notebook-remote-restricted (live visible-Notebook host wall)', ].join('; '); diff --git a/tests/store/store-posture.test.ts b/tests/store/store-posture.test.ts index 49cfedcf..a7116082 100644 --- a/tests/store/store-posture.test.ts +++ b/tests/store/store-posture.test.ts @@ -150,10 +150,10 @@ describe('store feature flags', () => { .toContain('export const REMOTE_MODULE_IMPORTS_ENABLED = true'); }); - test('Firefox preview disables unavailable browser facilities', () => { + test('Firefox preview disables unavailable dweb facilities and keeps remote modules', () => { const source = genChannelConfigSource('preview', 'firefox'); expect(source).toContain('export const DWEB_ENABLED = false'); - expect(source).toContain('export const REMOTE_MODULE_IMPORTS_ENABLED = false'); + expect(source).toContain('export const REMOTE_MODULE_IMPORTS_ENABLED = true'); expect(source).not.toContain('dwebEnabled:'); expect(source).not.toContain('dwebAgentEnabled:'); expect(genChannelConfigSource('preview', 'chrome'))