From ed9c33c9d32b16b26eaa1f5e82daeba63ba461fc Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Tue, 29 Sep 2026 11:25:57 -0700 Subject: [PATCH 01/10] refactor(overlay): share the collectors between platforms The component tree, signal graph, injector tree and NgRx collectors walk the host tree through a HostTree adapter (roots, children, parent, tag, selector, lookup) instead of the DOM directly, so an overlay for a platform without a DOM only has to describe its hosts. `domTree()` keeps the DOM walk, the CSS selector paths and the router-outlet lookup the browser overlay had, and stays the default, so its callers and payloads are unchanged. Host ids and the id lookup now take any object with a connected check supplied by the tree, and `installSignalWriteHook` moves to signal-history so another overlay can record signal writes without loading the browser overlay; the overlay still re-exports it. --- .../src/__tests__/ngrx-collector.test.ts | 10 +- .../src/__tests__/signal-history.test.ts | 2 +- packages/ng-devtools/src/component-tree.ts | 116 ++++++--------- packages/ng-devtools/src/element-id.ts | 18 ++- packages/ng-devtools/src/host-tree.ts | 139 ++++++++++++++++++ packages/ng-devtools/src/injector-tree.ts | 133 ++++++++--------- packages/ng-devtools/src/ngrx-collector.ts | 39 +++-- packages/ng-devtools/src/ngrx-overlay.ts | 25 +++- packages/ng-devtools/src/overlay.ts | 38 +---- packages/ng-devtools/src/signal-graph.ts | 89 ++++------- packages/ng-devtools/src/signal-history.ts | 34 +++++ 11 files changed, 372 insertions(+), 271 deletions(-) create mode 100644 packages/ng-devtools/src/host-tree.ts diff --git a/packages/ng-devtools/src/__tests__/ngrx-collector.test.ts b/packages/ng-devtools/src/__tests__/ngrx-collector.test.ts index 2017df2..62a9732 100644 --- a/packages/ng-devtools/src/__tests__/ngrx-collector.test.ts +++ b/packages/ng-devtools/src/__tests__/ngrx-collector.test.ts @@ -1,5 +1,6 @@ // @vitest-environment jsdom import { describe, expect, it, vi } from 'vitest'; +import { domTree } from '../host-tree.ts'; import { createNgrxCollector } from '../ngrx-collector.ts'; import { diff, serialize } from '../ngrx-shared.ts'; import { mergeNgrxReport, nameStore, ngrxStateOf, type NgrxPages } from '../rpc/ngrx-tools.ts'; @@ -53,7 +54,7 @@ class App { } } -function setup() { +function setup(tree = domTree()) { document.body.innerHTML = ''; const root = document.querySelector('app-root')!; const store = new SignalStore(); @@ -76,7 +77,7 @@ function setup() { ɵgetInjectorProviders: () => [], }; const onChange = vi.fn(); - const collector = createNgrxCollector(() => ng as any, onChange); + const collector = createNgrxCollector(() => ng as any, onChange, tree); return { store, app, rootEnv, collector, onChange }; } @@ -214,8 +215,9 @@ describe('ngrx collector', () => { }); it('only rescans the page when asked to rediscover stores', () => { - const { store, collector } = setup(); - const spy = vi.spyOn(document, 'createTreeWalker'); + const tree = domTree(); + const { store, collector } = setup(tree); + const spy = vi.spyOn(tree, 'roots'); collector.collect(); expect(spy).toHaveBeenCalledTimes(1); store.setQuery('a'); diff --git a/packages/ng-devtools/src/__tests__/signal-history.test.ts b/packages/ng-devtools/src/__tests__/signal-history.test.ts index 714891c..e032c89 100644 --- a/packages/ng-devtools/src/__tests__/signal-history.test.ts +++ b/packages/ng-devtools/src/__tests__/signal-history.test.ts @@ -1,10 +1,10 @@ // @vitest-environment jsdom import { describe, expect, it, vi } from 'vitest'; -import { installSignalWriteHook } from '../overlay.ts'; import { MAX_CHANGES, MAX_NODES, createSignalHistory, + installSignalWriteHook, type RawSignalNode, } from '../signal-history.ts'; import type { SignalGraphNode } from '../types.ts'; diff --git a/packages/ng-devtools/src/component-tree.ts b/packages/ng-devtools/src/component-tree.ts index 3abc5bd..69b4ce5 100644 --- a/packages/ng-devtools/src/component-tree.ts +++ b/packages/ng-devtools/src/component-tree.ts @@ -1,4 +1,5 @@ import { elementById, elementId, pruneElementIds } from './element-id.ts'; +import { documentTree, type HostTree } from './host-tree.ts'; import { className, dependenciesOf, type DebugNg } from './injector-tree.ts'; import { isSecretName, serializeNamed } from './serialize.ts'; import type { @@ -8,16 +9,16 @@ import type { LiveComponentNode, } from './types.ts'; -export interface ComponentDebugNg extends DebugNg { - getComponent?(el: Element): unknown; - getDirectives?(el: Element): unknown[]; +export interface ComponentDebugNg extends DebugNg { + getComponent?(el: H): unknown; + getDirectives?(el: H): unknown[]; getDirectiveMetadata?(instance: unknown): { inputs?: Record; outputs?: Record; changeDetection?: number; encapsulation?: number; } | null; - getListeners?(el: Element): { name: string; type?: string }[]; + getListeners?(el: H): { name: string; type?: string }[]; isSignal?(value: unknown): boolean; } @@ -47,76 +48,48 @@ function nameOf(instance: unknown): string { return typeof ctor === 'function' ? className(ctor) : 'Anonymous'; } -function componentAt(ng: ComponentDebugNg, el: Element): object | null { +function componentAt(ng: ComponentDebugNg, el: H): object | null { const found = read(() => ng.getComponent?.(el) ?? null, null); return found && typeof found === 'object' ? found : null; } -function directivesAt(ng: ComponentDebugNg, el: Element): object[] { +function directivesAt(ng: ComponentDebugNg, el: H): object[] { const found = read(() => ng.getDirectives?.(el) ?? [], [] as unknown[]); return found.filter((d): d is object => !!d && typeof d === 'object'); } -export function childElements(el: Element): Element[] { - const children = Array.from(el.children); - const shadow = (el as Element & { shadowRoot?: ShadowRoot | null }).shadowRoot; - if (shadow) children.push(...Array.from(shadow.children)); - return children; -} - -function parentOf(el: Element): Element | null { - if (el.parentElement) return el.parentElement; - const root = el.parentNode; - return root && 'host' in root ? ((root as ShadowRoot).host ?? null) : null; -} - -export function angularRoots(doc: Document = document): Element[] { - const tagged = Array.from(doc.querySelectorAll('[ng-version]')); - const roots = tagged.filter((root) => !tagged.some((o) => o !== root && o.contains(root))); - if (!doc.body) return roots; - if (!roots.length) return [doc.body]; - const outside: Element[] = []; - const collect = (el: Element) => { - for (const child of childElements(el)) { - if (roots.includes(child)) continue; - if (roots.some((root) => child.contains(root))) collect(child); - else outside.push(child); - } - }; - collect(doc.body); - return [...roots, ...outside]; -} - -export function componentHosts( - ng: ComponentDebugNg, - doc: Document = document, +export function componentHosts( + ng: ComponentDebugNg, + tree: HostTree = documentTree(), limit = MAX_COMPONENTS, -): Element[] { - const out: Element[] = []; - const visit = (el: Element, depth: number) => { +): H[] { + const out: H[] = []; + const visit = (el: H, depth: number) => { if (out.length >= limit || depth > MAX_DEPTH) return; if (componentAt(ng, el)) out.push(el); - for (const child of childElements(el)) visit(child, depth + 1); + for (const child of tree.children(el)) visit(child, depth + 1); }; - for (const root of angularRoots(doc)) visit(root, 0); + for (const root of tree.roots()) visit(root, 0); return out; } -export function hostPath(ng: ComponentDebugNg, el: Element): string { +export function hostPath( + ng: ComponentDebugNg, + el: H, + tree: HostTree = documentTree(), +): string { const parts: string[] = []; - for (let node: Element | null = el; node; node = parentOf(node)) { + for (let node: H | null = el; node; node = tree.parent(node)) { if (!componentAt(ng, node)) continue; - const tag = node.tagName.toLowerCase(); - const parent = node.parentNode; - const twins = parent - ? Array.from(parent.children).filter((c) => c.tagName === node!.tagName) - : []; + const tag = tree.tag(node); + const parent = tree.parent(node); + const twins = parent ? tree.children(parent).filter((c) => tree.tag(c) === tag) : []; parts.unshift(twins.length > 1 ? `${tag}[${twins.indexOf(node) + 1}]` : tag); } return parts.join(' > '); } -function unwrap(ng: ComponentDebugNg, value: unknown): unknown { +function unwrap(ng: ComponentDebugNg, value: unknown): unknown { if (typeof value !== 'function') return value; const signal = read(() => !!ng.isSignal?.(value), false); return signal ? read(() => (value as () => unknown)(), undefined) : value; @@ -128,8 +101,8 @@ function propName(entry: unknown, fallback: string): string { return fallback; } -function readInputs( - ng: ComponentDebugNg, +function readInputs( + ng: ComponentDebugNg, instance: object, inputs: Record | undefined, ): ComponentProp[] { @@ -152,7 +125,11 @@ function readOutputs( .map(([name, entry]) => ({ name, prop: propName(entry, name), listened: listened.has(name) })); } -export function componentDetail(ng: ComponentDebugNg, el: Element): ComponentDetail | null { +export function componentDetail( + ng: ComponentDebugNg, + el: H, + tree: HostTree = documentTree(), +): ComponentDetail | null { const instance = componentAt(ng, el); if (!instance) return null; const meta = read(() => ng.getDirectiveMetadata?.(instance) ?? null, null); @@ -167,8 +144,8 @@ export function componentDetail(ng: ComponentDebugNg, el: Element): ComponentDet const detail: ComponentDetail = { id: elementId(el), name: nameOf(instance), - tag: el.tagName.toLowerCase(), - path: hostPath(ng, el), + tag: tree.tag(el), + path: hostPath(ng, el, tree), inputs: readInputs(ng, instance, meta?.inputs), outputs: readOutputs(meta?.outputs, listened), listeners: dom.slice(0, MAX_PROPS), @@ -189,20 +166,20 @@ export function componentDetail(ng: ComponentDebugNg, el: Element): ComponentDet const injector = read(() => ng.getInjector?.(el) ?? null, null); if (injector) { - detail.dependencies = dependenciesOf(ng, injector, [instance.constructor], true); + detail.dependencies = dependenciesOf(ng, injector, [instance.constructor], true, tree); } return detail; } -export function collectComponentTree( - ng: ComponentDebugNg | undefined, - options: { doc?: Document; selectedId?: string | null } = {}, +export function collectComponentTree( + ng: ComponentDebugNg | undefined, + options: { tree?: HostTree; selectedId?: string | null } = {}, ): Omit { - const doc = options.doc ?? document; + const tree = options.tree ?? documentTree(); const report: Omit = { roots: [], count: 0, detail: null }; if (!ng?.getComponent) return report; - const visit = (el: Element, out: LiveComponentNode[], depth: number) => { + const visit = (el: H, out: LiveComponentNode[], depth: number) => { if (depth > MAX_DEPTH) { report.truncated = true; return; @@ -218,7 +195,7 @@ export function collectComponentTree( const node: LiveComponentNode = { id: elementId(el), name: nameOf(instance), - tag: el.tagName.toLowerCase(), + tag: tree.tag(el), children: [], }; const directives = directivesAt(ng, el) @@ -228,12 +205,13 @@ export function collectComponentTree( out.push(node); target = node.children; } - for (const child of childElements(el)) visit(child, target, depth + 1); + for (const child of tree.children(el)) visit(child, target, depth + 1); }; - for (const root of angularRoots(doc)) visit(root, report.roots, 0); + for (const root of tree.roots()) visit(root, report.roots, 0); - pruneElementIds(); - const selected = options.selectedId ? elementById(options.selectedId) : null; - if (selected) report.detail = componentDetail(ng, selected); + const connected = (host: object) => tree.isHost(host) && tree.connected(host); + pruneElementIds(connected); + const selected = options.selectedId ? elementById(options.selectedId, connected) : null; + if (selected && tree.isHost(selected)) report.detail = componentDetail(ng, selected, tree); return report; } diff --git a/packages/ng-devtools/src/element-id.ts b/packages/ng-devtools/src/element-id.ts index 3ed993c..ff6694a 100644 --- a/packages/ng-devtools/src/element-id.ts +++ b/packages/ng-devtools/src/element-id.ts @@ -1,9 +1,13 @@ -const ids = new WeakMap(); -const byId = new Map>(); +const ids = new WeakMap(); +const byId = new Map>(); const load = Math.random().toString(36).slice(2, 6).padEnd(4, '0'); let nextId = 0; -export function elementId(el: Element): string { +type Connected = (host: object) => boolean; + +const isConnected: Connected = (host) => (host as { isConnected?: unknown }).isConnected === true; + +export function elementId(el: object): string { let id = ids.get(el); if (!id) { id = `c${load}-${++nextId}`; @@ -13,18 +17,18 @@ export function elementId(el: Element): string { return id; } -export function elementById(id: string): Element | null { +export function elementById(id: string, connected: Connected = isConnected): object | null { const el = byId.get(id)?.deref(); if (!el) { byId.delete(id); return null; } - return el.isConnected ? el : null; + return connected(el) ? el : null; } -export function pruneElementIds() { +export function pruneElementIds(connected: Connected = isConnected) { for (const [id, ref] of byId) { const el = ref.deref(); - if (!el || !el.isConnected) byId.delete(id); + if (!el || !connected(el)) byId.delete(id); } } diff --git a/packages/ng-devtools/src/host-tree.ts b/packages/ng-devtools/src/host-tree.ts new file mode 100644 index 0000000..8c03f6c --- /dev/null +++ b/packages/ng-devtools/src/host-tree.ts @@ -0,0 +1,139 @@ +/** + * The tree Angular rendered into, as the collectors walk it. The browser + * overlay walks the DOM; a platform without one, such as NativeScript, + * describes its own views instead. + */ +export interface HostTree { + /** Where a walk of the app starts, in render order. */ + roots(): H[]; + /** Direct children, in render order. */ + children(host: H): H[]; + parent(host: H): H | null; + /** What the host is called in a component path: a tag name or a view type. */ + tag(host: H): string; + /** Whether the host is still part of the rendered tree. */ + connected(host: H): boolean; + /** Whether a value, such as an element injector's source, is a host of this tree. */ + isHost(value: unknown): value is H; + /** A string that `find()` resolves back to the host. */ + selector(host: H): string; + /** The host a selector names, or null when it names none or is not valid. */ + find(selector: string): H | null; + /** The component the router rendered deepest in the primary outlet chain. */ + routed?(isComponentHost: (host: H) => boolean): H | null; +} + +export function childElements(el: Element): Element[] { + const children = Array.from(el.children); + const shadow = (el as Element & { shadowRoot?: ShadowRoot | null }).shadowRoot; + if (shadow) children.push(...Array.from(shadow.children)); + return children; +} + +function parentOf(el: Element): Element | null { + if (el.parentElement) return el.parentElement; + const root = el.parentNode; + return root && 'host' in root ? ((root as ShadowRoot).host ?? null) : null; +} + +export function angularRoots(doc: Document = document): Element[] { + const tagged = Array.from(doc.querySelectorAll('[ng-version]')); + const roots = tagged.filter((root) => !tagged.some((o) => o !== root && o.contains(root))); + if (!doc.body) return roots; + if (!roots.length) return [doc.body]; + const outside: Element[] = []; + const collect = (el: Element) => { + for (const child of childElements(el)) { + if (roots.includes(child)) continue; + if (roots.some((root) => child.contains(root))) collect(child); + else outside.push(child); + } + }; + collect(doc.body); + return [...roots, ...outside]; +} + +function isPrimaryOutlet(outlet: Element): boolean { + const name = outlet.getAttribute('name'); + return !name || name === 'primary'; +} + +function outletBefore(el: Element): Element | null { + const prev = el.previousElementSibling; + return prev && prev.tagName === 'ROUTER-OUTLET' ? prev : null; +} + +function routedElement(doc: Document, isComponentHost: (el: Element) => boolean): Element | null { + let best: Element | null = null; + let bestDepth = -1; + for (const outlet of Array.from(doc.querySelectorAll('router-outlet'))) { + if (!isPrimaryOutlet(outlet)) continue; + const el = outlet.nextElementSibling; + if (!el || !isComponentHost(el)) continue; + let depth = 0; + let primary = true; + for (let node: Element | null = el; node; node = node.parentElement) { + const before = outletBefore(node); + if (!before || !isComponentHost(node)) continue; + if (!isPrimaryOutlet(before)) { + primary = false; + break; + } + depth++; + } + if (primary && depth > bestDepth) { + best = el; + bestDepth = depth; + } + } + return best; +} + +/** The DOM of `doc`. Selectors are cached, so take a fresh tree for each collection. */ +export function domTree(doc: Document = document): HostTree { + const selectors = new Map(); + const positions = new Map(); + const top = doc.documentElement; + const selector = (el: Element): string => { + if (el === top) return ''; + const known = selectors.get(el); + if (known !== undefined) return known; + const parent = el.parentElement; + const tag = el.tagName.toLowerCase(); + let out = tag; + if (parent) { + if (!positions.has(el)) { + let index = 0; + for (const child of Array.from(parent.children)) positions.set(child, ++index); + } + const prefix = selector(parent); + const part = `${tag}:nth-child(${positions.get(el)})`; + out = prefix ? `${prefix} > ${part}` : part; + } + selectors.set(el, out); + return out; + }; + + return { + roots: () => angularRoots(doc), + children: childElements, + parent: parentOf, + tag: (el) => el.tagName.toLowerCase(), + connected: (el) => el.isConnected, + isHost: (value): value is Element => typeof Element !== 'undefined' && value instanceof Element, + selector, + find: (query) => { + try { + return doc.querySelector(query); + } catch { + return null; + } + }, + routed: (isComponentHost) => routedElement(doc, isComponentHost), + }; +} + +/** The DOM tree, for a collector whose host type is a parameter that defaults to Element. */ +export function documentTree(): HostTree { + return domTree() as unknown as HostTree; +} diff --git a/packages/ng-devtools/src/injector-tree.ts b/packages/ng-devtools/src/injector-tree.ts index 8086f05..9994df4 100644 --- a/packages/ng-devtools/src/injector-tree.ts +++ b/packages/ng-devtools/src/injector-tree.ts @@ -5,6 +5,7 @@ import type { InjectorTreeReport, ProviderInfo, } from './types.ts'; +import { documentTree, type HostTree } from './host-tree.ts'; interface ProviderRecord { token: unknown; @@ -13,10 +14,10 @@ interface ProviderRecord { importPath?: unknown[]; } -export interface DebugNg { - getInjector?(el: Element): unknown; - getComponent?(el: Element): unknown; - getDirectives?(el: Element): unknown[]; +export interface DebugNg { + getInjector?(el: H): unknown; + getComponent?(el: H): unknown; + getDirectives?(el: H): unknown[]; ɵgetInjectorMetadata?(injector: unknown): { type: string; source: unknown } | null; ɵgetInjectorProviders?(injector: unknown): ProviderRecord[]; ɵgetInjectorResolutionPath?(injector: unknown): unknown[]; @@ -76,7 +77,7 @@ function isBuiltInElementToken(record: ProviderRecord): boolean { return record.provider === record.token && !!token && '__NG_ELEMENT_ID__' in token; } -function toProviders(ng: DebugNg, injector: unknown): ProviderInfo[] { +function toProviders(ng: DebugNg, injector: unknown): ProviderInfo[] { let records: ProviderRecord[]; try { records = ng.ɵgetInjectorProviders?.(injector) ?? []; @@ -98,32 +99,6 @@ function toProviders(ng: DebugNg, injector: unknown): ProviderInfo[] { }); } -function selectorCache(doc: Document) { - const selectors = new Map(); - const positions = new Map(); - const top = doc.documentElement; - const selectorOf = (el: Element): string => { - if (el === top) return ''; - const known = selectors.get(el); - if (known !== undefined) return known; - const parent = el.parentElement; - const tag = el.tagName.toLowerCase(); - let out = tag; - if (parent) { - if (!positions.has(el)) { - let index = 0; - for (const child of Array.from(parent.children)) positions.set(child, ++index); - } - const prefix = selectorOf(parent); - const part = `${tag}:nth-child(${positions.get(el)})`; - out = prefix ? `${prefix} > ${part}` : part; - } - selectors.set(el, out); - return out; - }; - return selectorOf; -} - function environmentName(injector: unknown, source: unknown): string { const scopes = (injector as { scopes?: Set } | null)?.scopes; if (scopes?.has('platform')) return 'Platform'; @@ -134,7 +109,11 @@ function environmentName(injector: unknown, source: unknown): string { export const NULL_INJECTOR_ID = 'inj-null'; -export function injectorRef(ng: DebugNg, injector: unknown): { id: string; name: string } | null { +export function injectorRef( + ng: DebugNg, + injector: unknown, + tree: HostTree = documentTree(), +): { id: string; name: string } | null { if (!injector || typeof injector !== 'object') return null; let meta: { type: string; source: unknown } | null = null; try { @@ -143,19 +122,20 @@ export function injectorRef(ng: DebugNg, injector: unknown): { id: string; name: return null; } if (meta?.type === 'element') { - return meta.source instanceof Element - ? { id: idFor(meta.source), name: `<${meta.source.tagName.toLowerCase()}>` } + return tree.isHost(meta.source) + ? { id: idFor(meta.source), name: `<${tree.tag(meta.source)}>` } : null; } if (meta?.type === 'null') return { id: NULL_INJECTOR_ID, name: 'Null injector' }; return { id: idFor(injector), name: environmentName(injector, meta?.source) }; } -export function dependenciesOf( - ng: DebugNg, +export function dependenciesOf( + ng: DebugNg, injector: unknown, owners: Iterable, withNames = false, + tree: HostTree = documentTree(), ): DependencyInfo[] { const out: DependencyInfo[] = []; for (const ctor of owners) { @@ -167,7 +147,7 @@ export function dependenciesOf( const flags = Object.entries(dep.flags ?? {}) .filter(([, on]) => on) .map(([flag]) => flag); - const by = dep.providedIn ? injectorRef(ng, dep.providedIn) : null; + const by = dep.providedIn ? injectorRef(ng, dep.providedIn, tree) : null; const info: DependencyInfo = { from: className(ctor), token: tokenName(dep.token), @@ -198,9 +178,9 @@ interface ElementEntry { export const MAX_INJECTOR_NODES = 2000; -const elementEntries = new WeakMap(); +const elementEntries = new WeakMap(); -function environmentsOf(ng: DebugNg, path: unknown[]): object[] { +function environmentsOf(ng: DebugNg, path: unknown[]): object[] { return path.filter((injector) => { try { return ng.ɵgetInjectorMetadata!(injector)?.type === 'environment'; @@ -210,7 +190,11 @@ function environmentsOf(ng: DebugNg, path: unknown[]): object[] { }) as object[]; } -function readElement(ng: DebugNg, el: Element): ElementEntry | null { +function readElement( + ng: DebugNg, + el: H, + tree: HostTree, +): ElementEntry | null { const cached = elementEntries.get(el); if (cached) return cached; let component: unknown = null; @@ -248,27 +232,27 @@ function readElement(ng: DebugNg, el: Element): ElementEntry | null { const info: Omit = { id: idFor(el), type: 'element', - name: el.tagName.toLowerCase(), + name: tree.tag(el), providerCount: providers.length, directives: [...owners].map(className), path: path - .map((entry) => injectorRef(ng, entry)?.id ?? null) + .map((entry) => injectorRef(ng, entry, tree)?.id ?? null) .filter((id): id is string => !!id), }; if (typeof componentCtor === 'function') info.component = className(componentCtor); const entry: ElementEntry = { info, providers, - dependencies: dependenciesOf(ng, injector, owners), + dependencies: dependenciesOf(ng, injector, owners, false, tree), environments: environmentsOf(ng, path), }; elementEntries.set(el, entry); return entry; } -export function collectInjectorTree( - ng: DebugNg | undefined, - doc: Document = document, +export function collectInjectorTree( + ng: DebugNg | undefined, + tree: HostTree = documentTree(), ): InjectorTreeReport & { truncated?: boolean } { const empty: InjectorTreeReport = { roots: [], environment: [] }; if (!ng?.getInjector || !ng.ɵgetInjectorMetadata) return empty; @@ -300,37 +284,40 @@ export function collectInjectorTree( }); }; - const selectorOf = selectorCache(doc); - const elementNodes = new Map(); const roots: InjectorTreeNode[] = []; + let count = 0; let truncated = false; - const walker = doc.createTreeWalker(doc.body ?? doc.documentElement, 1); + // Depth first in render order; each entry carries the list its nearest + // injector-bearing ancestor collects children into. + const stack: { el: H; into: InjectorTreeNode[] }[] = tree + .roots() + .map((el) => ({ el, into: roots })) + .reverse(); - for ( - let el = walker.currentNode as Element | null; - el; - el = walker.nextNode() as Element | null - ) { - const entry = readElement(ng, el); - if (!entry) continue; - if (elementNodes.size >= MAX_INJECTOR_NODES) { - truncated = true; - break; + while (stack.length) { + const { el, into } = stack.pop()!; + let childrenInto = into; + const entry = readElement(ng, el, tree); + if (entry) { + if (count >= MAX_INJECTOR_NODES) { + truncated = true; + break; + } + count++; + noteEnvironment(entry.environments); + const node: InjectorTreeNode = { + injector: { ...entry.info, selector: tree.selector(el) }, + providers: entry.providers, + children: [], + dependencies: entry.dependencies, + }; + into.push(node); + childrenInto = node.children; + } + const children = tree.children(el); + for (let i = children.length - 1; i >= 0; i--) { + stack.push({ el: children[i], into: childrenInto }); } - noteEnvironment(entry.environments); - - const node: InjectorTreeNode = { - injector: { ...entry.info, selector: selectorOf(el) }, - providers: entry.providers, - children: [], - dependencies: entry.dependencies, - }; - elementNodes.set(el, node); - - let parent: Element | null = el.parentElement; - while (parent && !elementNodes.has(parent)) parent = parent.parentElement; - if (parent) elementNodes.get(parent)!.children.push(node); - else roots.push(node); } const environment: InjectorTreeNode[] = []; diff --git a/packages/ng-devtools/src/ngrx-collector.ts b/packages/ng-devtools/src/ngrx-collector.ts index ae7ce28..879dac6 100644 --- a/packages/ng-devtools/src/ngrx-collector.ts +++ b/packages/ng-devtools/src/ngrx-collector.ts @@ -1,4 +1,5 @@ import { untracked } from '@angular/core'; +import { documentTree, type HostTree } from './host-tree.ts'; import { className, tokenName } from './injector-tree.ts'; import { diff, @@ -16,9 +17,9 @@ import { registeredPatchState } from './ngrx-register.ts'; type AnyRecord = Record; -export interface NgrxDebugNg { - getInjector?(el: Element): unknown; - getComponent?(el: Element): unknown; +export interface NgrxDebugNg { + getInjector?(el: H): unknown; + getComponent?(el: H): unknown; ɵgetInjectorMetadata?(injector: unknown): { type: string; source: unknown } | null; ɵgetInjectorProviders?(injector: unknown): { token: unknown; isViewProvider?: boolean }[]; ɵgetInjectorResolutionPath?(injector: unknown): unknown[]; @@ -98,20 +99,18 @@ function stripped(token: unknown): string { return tokenName(token).replace(/^_+/, ''); } -function componentElements(ng: NgrxDebugNg, doc: Document): Element[] { - const out: Element[] = []; - const walker = doc.createTreeWalker(doc.body ?? doc.documentElement, 1); - for ( - let el = walker.currentNode as Element | null; - el; - el = walker.nextNode() as Element | null - ) { +function componentElements(ng: NgrxDebugNg, tree: HostTree): H[] { + const out: H[] = []; + const stack = tree.roots().reverse(); + while (stack.length) { + const el = stack.pop()!; if (read(() => !!ng.getComponent?.(el), false)) out.push(el); + stack.push(...tree.children(el).reverse()); } return out; } -function envScope(ng: NgrxDebugNg, injector: AnyRecord): string { +function envScope(ng: NgrxDebugNg, injector: AnyRecord): string { if (read(() => injector['scopes']?.has?.('root'), false)) return 'root'; if (read(() => injector['scopes']?.has?.('platform'), false)) return 'platform'; const source = read(() => ng.ɵgetInjectorMetadata?.(injector)?.source, undefined); @@ -172,10 +171,10 @@ export interface NgrxCollector { stop(): void; } -export function createNgrxCollector( - getNg: () => NgrxDebugNg | undefined, +export function createNgrxCollector( + getNg: () => NgrxDebugNg | undefined, onChange: () => void, - doc: Document = document, + tree: HostTree = documentTree(), ): NgrxCollector { const ids = new WeakMap(); let nextId = 0; @@ -334,7 +333,7 @@ export function createNgrxCollector( return t; }; - const findClassic = (ng: NgrxDebugNg, envs: Map, rootInjector: unknown) => { + const findClassic = (ng: NgrxDebugNg, envs: Map, rootInjector: unknown) => { const want: Record boolean> = { Store: (v) => typeof v['dispatch'] === 'function' && typeof v['select'] === 'function', ScannedActionsSubject: (v) => typeof v['subscribe'] === 'function', @@ -432,13 +431,13 @@ export function createNgrxCollector( }; let discovered = false; - const discover = (ng: NgrxDebugNg) => { + const discover = (ng: NgrxDebugNg) => { const found = new Set(); const envs = new Map(); - const elements = componentElements(ng, doc); + const elements = componentElements(ng, tree); let rootInjector: unknown = null; - const perElement: { el: Element; injector: unknown; component: AnyRecord | null }[] = []; + const perElement: { el: H; injector: unknown; component: AnyRecord | null }[] = []; for (const el of elements) { const injector = read(() => ng.getInjector!(el), null); if (!injector) continue; @@ -468,7 +467,7 @@ export function createNgrxCollector( } for (const { el, injector, component } of perElement) { - const owner = component ? className(component.constructor) : el.tagName.toLowerCase(); + const owner = component ? className(component.constructor) : tree.tag(el); for (const p of read(() => ng.ɵgetInjectorProviders?.(injector) ?? [], [])) { if (!/^SignalStore\d*$/.test(stripped(p.token))) continue; const value = read( diff --git a/packages/ng-devtools/src/ngrx-overlay.ts b/packages/ng-devtools/src/ngrx-overlay.ts index 782452b..4767a17 100644 --- a/packages/ng-devtools/src/ngrx-overlay.ts +++ b/packages/ng-devtools/src/ngrx-overlay.ts @@ -1,3 +1,4 @@ +import { documentTree, type HostTree } from './host-tree.ts'; import { createNgrxCollector, type NgrxDebugNg } from './ngrx-collector.ts'; import type { NgrxPageReport, NgrxRequest } from './ngrx-shared.ts'; @@ -16,7 +17,24 @@ interface RpcScope { const HEARTBEAT_MS = 5000; -export function attachNgrx(my: RpcScope, pageId: string, getNg: () => NgrxDebugNg | undefined) { +export interface NgrxPageOptions { + tree?: HostTree; + /** Where the app is, for the page list. */ + describe?: () => { url: string; title: string }; +} + +const describeDocument = () => ({ + url: location.pathname + location.search, + title: document.title, +}); + +export function attachNgrx( + my: RpcScope, + pageId: string, + getNg: () => NgrxDebugNg | undefined, + options: NgrxPageOptions = {}, +) { + const describe = options.describe ?? describeDocument; const session = Math.random().toString(36).slice(2, 10); let sentSeq = 0; let lastBody = ''; @@ -35,7 +53,7 @@ export function attachNgrx(my: RpcScope, pageId: string, getNg: () => NgrxDebugN }, 50); }; - const collector = createNgrxCollector(getNg, () => schedule()); + const collector = createNgrxCollector(getNg, () => schedule(), options.tree ?? documentTree()); const push = async (rediscover = true) => { if (pushing) return schedule(rediscover); @@ -51,8 +69,7 @@ export function attachNgrx(my: RpcScope, pageId: string, getNg: () => NgrxDebugN const report: NgrxPageReport = { pageId, session, - url: location.pathname + location.search, - title: document.title, + ...describe(), stores, classic, log, diff --git a/packages/ng-devtools/src/overlay.ts b/packages/ng-devtools/src/overlay.ts index c9355b2..9f2322a 100644 --- a/packages/ng-devtools/src/overlay.ts +++ b/packages/ng-devtools/src/overlay.ts @@ -1,5 +1,6 @@ import { connectDevframe } from 'devframe/client'; export { registerNgrxSignals } from './ngrx-register.ts'; +export { installSignalWriteHook } from './signal-history.ts'; import { attachAnalog } from './analog-runtime.ts'; import { attachForms } from './forms-collector.ts'; import { attachPipes } from './pipes-collector.ts'; @@ -29,7 +30,7 @@ import { storedInstrumented, type PreloadRecord, } from './router-actions.ts'; -import { createSignalHistory, type RawSignalNode } from './signal-history.ts'; +import { createSignalHistory, installSignalWriteHook } from './signal-history.ts'; import { collectComponentTree } from './component-tree.ts'; import { elementById } from './element-id.ts'; import { collectSignalGraph, graphKey, toSignalTarget, type SignalTarget } from './signal-graph.ts'; @@ -458,41 +459,6 @@ function clearHighlight() { highlightEl = null; } -// --- Signal Graph collection using Angular's debug API --- -type SignalSetHook = ((node: RawSignalNode) => void) | null; - -export async function installSignalWriteHook( - onWrite: (node: RawSignalNode) => void, - load: () => Promise<{ setPostSignalSetFn: (fn: SignalSetHook) => SignalSetHook }> = () => - import('@angular/core/primitives/signals') as never, -): Promise<() => void> { - let setHook: (fn: SignalSetHook) => SignalSetHook; - try { - ({ setPostSignalSetFn: setHook } = await load()); - } catch { - // Without the hook, history falls back to poll samples only. - return () => {}; - } - let prev: SignalSetHook = null; - let active = true; - const hook = (node: RawSignalNode) => { - prev?.(node); - if (!active) return; - try { - onWrite(node); - } catch { - return; - } - }; - prev = setHook(hook); - return () => { - active = false; - const current = setHook(prev); - // Someone chained after us; keep theirs, our hook now just forwards. - if (current !== hook) setHook(current); - }; -} - function read(fn: () => T, fallback: T): T { try { return fn(); diff --git a/packages/ng-devtools/src/signal-graph.ts b/packages/ng-devtools/src/signal-graph.ts index a3a7ce2..fb441a1 100644 --- a/packages/ng-devtools/src/signal-graph.ts +++ b/packages/ng-devtools/src/signal-graph.ts @@ -1,10 +1,11 @@ import { componentHosts, hostPath, type ComponentDebugNg } from './component-tree.ts'; import { elementById, elementId } from './element-id.ts'; +import { documentTree, type HostTree } from './host-tree.ts'; import { className } from './injector-tree.ts'; import { serializeNamed } from './serialize.ts'; import type { SignalGraph, SignalGraphEdge, SignalGraphNode, SignalNodeKind } from './types.ts'; -export interface SignalDebugNg extends ComponentDebugNg { +export interface SignalDebugNg extends ComponentDebugNg { ɵgetSignalGraph?(injector: unknown): { nodes: { id: string; kind?: string; label?: string; epoch?: number; value?: unknown }[]; edges?: SignalGraphEdge[]; @@ -25,7 +26,7 @@ function read(fn: () => T, fallback: T): T { } } -function isComponentHost(ng: SignalDebugNg, el: Element | null): el is Element { +function isComponentHost(ng: SignalDebugNg, el: H | null): el is H { return !!el && !!read(() => ng.getComponent?.(el), null); } @@ -40,50 +41,20 @@ export function toSignalTarget(request: unknown, pageId: string): SignalTarget | return typeof id === 'string' && id ? { id } : null; } -function resolveTarget(target: SignalTarget, doc: Document): Element | null { +function resolveTarget(target: SignalTarget, tree: HostTree): H | null { if (!target) return null; - if ('id' in target) return elementById(target.id); - try { - return doc.querySelector(target.selector); - } catch { - return null; + if ('id' in target) { + const host = elementById(target.id, (h) => tree.isHost(h) && tree.connected(h)); + return host && tree.isHost(host) ? host : null; } + return tree.find(target.selector); } -function isPrimaryOutlet(outlet: Element): boolean { - const name = outlet.getAttribute('name'); - return !name || name === 'primary'; -} - -function outletBefore(el: Element): Element | null { - const prev = el.previousElementSibling; - return prev && prev.tagName === 'ROUTER-OUTLET' ? prev : null; -} - -export function routedComponent(ng: SignalDebugNg, doc: Document = document): Element | null { - let best: Element | null = null; - let bestDepth = -1; - for (const outlet of Array.from(doc.querySelectorAll('router-outlet'))) { - if (!isPrimaryOutlet(outlet)) continue; - const el = outlet.nextElementSibling; - if (!isComponentHost(ng, el)) continue; - let depth = 0; - let primary = true; - for (let node: Element | null = el; node; node = node.parentElement) { - const before = outletBefore(node); - if (!before || !isComponentHost(ng, node)) continue; - if (!isPrimaryOutlet(before)) { - primary = false; - break; - } - depth++; - } - if (primary && depth > bestDepth) { - best = el; - bestDepth = depth; - } - } - return best; +export function routedComponent( + ng: SignalDebugNg, + tree: HostTree = documentTree(), +): H | null { + return tree.routed?.((host) => isComponentHost(ng, host)) ?? null; } function signalNodeOf(value: unknown): { kind?: string; debugName?: string } | null { @@ -96,7 +67,10 @@ function signalNodeOf(value: unknown): { kind?: string; debugName?: string } | n return null; } -function linkedSignalReaders(ng: SignalDebugNg, instance: object): Map unknown> { +function linkedSignalReaders( + ng: SignalDebugNg, + instance: object, +): Map unknown> { const readers = new Map unknown>(); for (const key of read(() => Object.keys(instance), [] as string[])) { const value = read(() => (instance as Record)[key], undefined); @@ -111,9 +85,10 @@ function linkedSignalReaders(ng: SignalDebugNg, instance: object): Map( + ng: SignalDebugNg, + el: H, + tree: HostTree, source: NonNullable, ): SignalGraph | null { const instance = read(() => ng.getComponent?.(el), null); @@ -144,7 +119,7 @@ function graphFor( const edges = (raw.edges ?? []).filter( (e) => e.consumer < kept.length && e.producer < kept.length, ); - const tag = el.tagName.toLowerCase(); + const tag = tree.tag(el); return { nodes, edges, @@ -153,31 +128,31 @@ function graphFor( id: elementId(el), name: className((instance as { constructor: new () => unknown }).constructor), tag, - path: hostPath(ng, el), + path: hostPath(ng, el, tree), }, source, }; } -export function collectSignalGraph( - ng: SignalDebugNg | undefined, +export function collectSignalGraph( + ng: SignalDebugNg | undefined, target: SignalTarget = null, - doc: Document = document, + tree: HostTree = documentTree(), ): SignalGraph | null { if (!ng?.ɵgetSignalGraph || !ng.getInjector || !ng.getComponent) return null; - const picked = resolveTarget(target, doc); + const picked = resolveTarget(target, tree); if (isComponentHost(ng, picked)) { - const graph = graphFor(ng, picked, 'selected'); + const graph = graphFor(ng, picked, tree, 'selected'); if (graph) return graph; } - const routed = routedComponent(ng, doc); + const routed = routedComponent(ng, tree); if (routed) { - const graph = graphFor(ng, routed, 'routed'); + const graph = graphFor(ng, routed, tree, 'routed'); if (graph) return graph; } let empty: SignalGraph | null = null; - for (const host of componentHosts(ng, doc, MAX_FALLBACK_HOSTS)) { - const graph = graphFor(ng, host, 'root'); + for (const host of componentHosts(ng, tree, MAX_FALLBACK_HOSTS)) { + const graph = graphFor(ng, host, tree, 'root'); if (graph?.nodes.length) return graph; empty ??= graph; } diff --git a/packages/ng-devtools/src/signal-history.ts b/packages/ng-devtools/src/signal-history.ts index f7f6ed3..67f617f 100644 --- a/packages/ng-devtools/src/signal-history.ts +++ b/packages/ng-devtools/src/signal-history.ts @@ -143,3 +143,37 @@ export function createSignalHistory( return { onWrite, collect, collectDelta }; } + +type SignalSetHook = ((node: RawSignalNode) => void) | null; + +export async function installSignalWriteHook( + onWrite: (node: RawSignalNode) => void, + load: () => Promise<{ setPostSignalSetFn: (fn: SignalSetHook) => SignalSetHook }> = () => + import('@angular/core/primitives/signals') as never, +): Promise<() => void> { + let setHook: (fn: SignalSetHook) => SignalSetHook; + try { + ({ setPostSignalSetFn: setHook } = await load()); + } catch { + // Without the hook, history falls back to poll samples only. + return () => {}; + } + let prev: SignalSetHook = null; + let active = true; + const hook = (node: RawSignalNode) => { + prev?.(node); + if (!active) return; + try { + onWrite(node); + } catch { + return; + } + }; + prev = setHook(hook); + return () => { + active = false; + const current = setHook(prev); + // Someone chained after us; keep theirs, our hook now just forwards. + if (current !== hook) setHook(current); + }; +} From 154cabff885f7d1a42fd4ac3ad5b302016a97d8d Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Tue, 29 Sep 2026 11:29:28 -0700 Subject: [PATCH 02/10] feat(overlay): add a NativeScript overlay A NativeScript Angular app has no DOM, so the browser overlay cannot run in it. The new `@santoshyadavdev/ng-devtools/overlay-nativescript` entry walks the native view tree from the root component host through the shared collectors and reports over a WebSocket to a devtools server on the developer's machine, with the same page reports the browser overlay sends: the component tree and the selected component's detail, the signal graph of the selected or first signal-bearing component with its write history, the injector tree with the environment injectors above it, NgRx stores, and the highlight event, which outlines the native view. The runtime needs a few things a browser has for free. A WebSocket global must come from the app (for example @valor/nativescript-websockets), and `location` and `navigator` are shimmed for devframe's client. Angular only wires its injector profiler, which backs the DI panel, when `window` exists as the platform is created, so a `window` is defined until core publishes `getComponent` and removed then; the sentinel is that property rather than the `ng` object itself because provideRouter() publishes its own utilities onto that object earlier. The devframe client has no reconnect, and the server and the app restart independently, so a failed or dropped session is replaced after a pause. @nativescript/core is an optional peer dependency and stays external to the build, like Angular. --- README.md | 57 +++ packages/ng-devtools/package.json | 10 +- .../__tests__/overlay-nativescript.test.ts | 174 ++++++++ .../src/overlay-nativescript-views.ts | 154 +++++++ .../ng-devtools/src/overlay-nativescript.ts | 395 ++++++++++++++++++ packages/ng-devtools/tsdown.config.ts | 3 +- pnpm-lock.yaml | 75 ++++ 7 files changed, 866 insertions(+), 2 deletions(-) create mode 100644 packages/ng-devtools/src/__tests__/overlay-nativescript.test.ts create mode 100644 packages/ng-devtools/src/overlay-nativescript-views.ts create mode 100644 packages/ng-devtools/src/overlay-nativescript.ts diff --git a/README.md b/README.md index de8669f..3fdb9ab 100644 --- a/README.md +++ b/README.md @@ -322,6 +322,63 @@ createDevtoolsPopup(); This adds a floating button (bottom-right) that opens the full devtools UI in an iframe. Supports three dock modes (float, bottom, right), dragging, resizing, and persists position via localStorage. The popup is automatically loaded in development when using the demo app. +## NativeScript + +The same devtools work inside a NativeScript Angular app. The app has no DOM, so a +separate overlay walks the native view tree through Angular's debug API and reports +over a WebSocket to a devtools server running on your machine. The component tree, +signal graph, injector tree (including environment injectors and their providers), +the highlight tool and the MCP surface all work; the source scanners run against +the app's `src/`. + +### Set up an app + +```sh +npm install @santoshyadavdev/ng-devtools @valor/nativescript-websockets +``` + +```ts +// src/polyfills.ts — first import, so the runtime has a WebSocket global +import '@valor/nativescript-websockets'; +``` + +```ts +// src/main.ts — before runNativeScriptAngularApp() +import { initNativeScriptOverlay } from '@santoshyadavdev/ng-devtools/overlay-nativescript'; + +if (__DEV__) { + initNativeScriptOverlay(); +} +``` + +`initNativeScriptOverlay()` must run before Angular bootstraps: the DI inspector +relies on Angular's injector profiler, which Angular only wires while it creates +the platform. The overlay connects to `http://localhost:9999/` on the iOS +simulator and `http://10.0.2.2:9999/` on the Android emulator; pass +`{ baseURL }` for a physical device, and allow plain HTTP to that address in +`Info.plist` / `AndroidManifest.xml`. + +### Run the devtools server + +```sh +cd my-nativescript-app +npx @santoshyadavdev/ng-devtools dev --host 0.0.0.0 --no-auth +``` + +Then open `http://localhost:9999/` for the UI, or point an MCP client at +`http://localhost:9999/__mcp`. + +### Example app + +`app-nativescript/` is a `ns create --ng` project wired up this way, with a small +showcase component (signals, a computed, an effect and a component-level +provider). Tested on the iOS simulator; Android has not been verified yet. + +```sh +pnpm devtools:nativescript # devtools server scanning app-nativescript/src +cd app-nativescript && ns debug ios --no-hmr +``` + ## Demo App The repository includes a demo app, **Angular Travel** (`src/`), that looks and behaves like a real booking site so every inspector has something to show: diff --git a/packages/ng-devtools/package.json b/packages/ng-devtools/package.json index 7e0357c..2acac4b 100644 --- a/packages/ng-devtools/package.json +++ b/packages/ng-devtools/package.json @@ -18,6 +18,7 @@ "./devframe": "./src/devframe.ts", "./overlay": "./src/overlay.ts", "./popup": "./src/popup.ts", + "./overlay-nativescript": "./src/overlay-nativescript.ts", "./http": "./src/http.ts", "./hub": "./src/hub.ts", "./package.json": "./package.json", @@ -29,6 +30,7 @@ "./devframe": "./dist/devframe.mjs", "./overlay": "./dist/overlay.mjs", "./popup": "./dist/popup.mjs", + "./overlay-nativescript": "./dist/overlay-nativescript.mjs", "./http": "./dist/http.mjs", "./hub": "./dist/hub.mjs", "./package.json": "./package.json", @@ -60,7 +62,8 @@ "devframe", "signals", "dependency-injection", - "mcp" + "mcp", + "nativescript" ], "dependencies": { "@devframes/agentic": "^1.1.0", @@ -73,12 +76,16 @@ "valibot": "^1.5.0" }, "peerDependencies": { + "@nativescript/core": ">=8", "@angular/common": ">=20", "@angular/core": ">=20", "rxjs": ">=7", "vite": ">=5" }, "peerDependenciesMeta": { + "@nativescript/core": { + "optional": true + }, "@angular/common": { "optional": true }, @@ -95,6 +102,7 @@ "devDependencies": { "@angular/common": "^22.1.0", "@angular/core": "^22.1.0", + "@nativescript/core": "^9.1.0", "rxjs": "~7.8.0", "tsdown": "^0.23.0" }, diff --git a/packages/ng-devtools/src/__tests__/overlay-nativescript.test.ts b/packages/ng-devtools/src/__tests__/overlay-nativescript.test.ts new file mode 100644 index 0000000..a33d2f9 --- /dev/null +++ b/packages/ng-devtools/src/__tests__/overlay-nativescript.test.ts @@ -0,0 +1,174 @@ +import { describe, expect, it } from 'vitest'; +import { collectComponentTree, componentHosts } from '../component-tree.ts'; +import { collectInjectorTree } from '../injector-tree.ts'; +import { + angularRootHost, + nativeScriptRoot, + nativeScriptTree, + renderedView, + selectorOf, + topmostView, + type NativeView, +} from '../overlay-nativescript-views.ts'; +import { collectSignalGraph, type SignalDebugNg } from '../signal-graph.ts'; + +/** A stand-in for a `@nativescript/core` view: children come from `eachChildView`. */ +function view(typeName: string, children: NativeView[] = [], extra: Partial = {}) { + const v: NativeView = { + typeName, + parent: null, + isLoaded: true, + eachChildView: (callback) => { + for (const child of children) if (callback(child) === false) break; + }, + ...extra, + }; + for (const child of children) child.parent = v; + return v; +} + +function component(selector: string, name: string, fields: Record = {}) { + const Cmp = { [name]: class {} }[name] as new () => object; + Object.assign(Cmp, { ɵcmp: { selectors: [[selector]] } }); + return Object.assign(new Cmp(), fields); +} + +type Ng = SignalDebugNg & { + getRootComponents?(host: unknown): unknown[]; + getHostElement?(component: unknown): NativeView | null; +}; + +describe('NativeScript host tree', () => { + // AppHostView(ns-app) > GridLayout > ProxyViewContainer(page-router-outlet) > Frame > Page + // > ProxyViewContainer(ns-person) > StackLayout > Label + const label = view('Label'); + const personHost = view('ProxyViewContainer', [view('StackLayout', [label])], { + customCSSName: 'ns-person', + }); + const page = view('Page', [personHost]); + const frame = view('Frame', [page]); + const outlet = view('ProxyViewContainer', [frame], { customCSSName: 'page-router-outlet' }); + const grid = view('GridLayout', [outlet]); + const appHost = view('AppHostView', [grid]); + // NativeScript hands out the root component's content as the root view, with + // no parent link back up to the host. + grid.parent = null; + + const app = component('ns-app', 'AppComponent'); + const person = component('ns-person', 'PersonComponent', { name: 'Ada' }); + const components = new Map([ + [appHost, app], + [personHost, person], + ]); + const ng: Ng = { + getComponent: (host) => components.get(host) ?? null, + getRootComponents: () => [app], + getHostElement: (c) => (c === app ? appHost : null), + }; + const tree = nativeScriptTree( + () => ng, + () => grid, + ); + + it('nests components through layouts, frames and pages', () => { + const report = collectComponentTree(ng, { tree }); + expect(report.count).toBe(2); + expect(report.roots).toHaveLength(1); + expect(report.roots[0]).toMatchObject({ name: 'AppComponent', tag: 'ns-app' }); + expect(report.roots[0].children).toHaveLength(1); + expect(report.roots[0].children[0]).toMatchObject({ + name: 'PersonComponent', + tag: 'ns-person', + }); + }); + + it('keeps ids stable across collections and resolves a selected id', () => { + const first = collectComponentTree(ng, { tree }); + const id = first.roots[0].children[0].id; + const second = collectComponentTree(ng, { tree, selectedId: id }); + expect(second.roots[0].children[0].id).toBe(id); + expect(second.detail).toMatchObject({ name: 'PersonComponent', path: 'ns-app > ns-person' }); + }); + + it('lists component hosts parents first and finds a host by selector', () => { + expect(componentHosts(ng, tree)).toEqual([appHost, personHost]); + expect(tree.find('ns-person')).toBe(personHost); + expect(tree.find('ns-missing')).toBeNull(); + }); + + it('links the root content back to the root component host', () => { + tree.roots(); + expect(tree.parent(grid)).toBe(appHost); + expect(tree.parent(appHost)).toBeNull(); + }); + + it('climbs to the top of the parent chain when Angular names no root', () => { + expect(topmostView(label)).toBe(grid); + const detached = view('GridLayout', [view('Label')]); + expect(angularRootHost(ng, detached)).toBe(appHost); + expect(nativeScriptRoot({ getComponent: () => null }, detached)).toBe(detached); + }); + + it('draws highlights on the first view below a proxy container', () => { + expect(renderedView(personHost).typeName).toBe('StackLayout'); + expect(renderedView(label)).toBe(label); + }); + + it('names a host by its component selector, then by the template element name', () => { + expect(selectorOf(personHost, component('ns-x', 'X'))).toBe('ns-x'); + expect(selectorOf(personHost, {})).toBe('ns-person'); + expect(selectorOf(label, null)).toBe('label'); + // An attribute selector has no element name to report. + const attr = { constructor: { ɵcmp: { selectors: [['', 'nsHighlight', '']] } } }; + expect(selectorOf(label, attr)).toBe('label'); + }); + + it('reports element injectors under their environment injectors', () => { + const root = { scopes: new Set(['root']) }; + const platform = { scopes: new Set(['platform']) }; + const injectors = new Map([ + [appHost, { host: appHost }], + [personHost, { host: personHost }], + ]); + const withInjectors: Ng = { + ...ng, + getInjector: (host) => injectors.get(host) ?? null, + ɵgetInjectorMetadata: (injector) => + injector === root || injector === platform + ? { type: 'environment', source: null } + : { type: 'element', source: (injector as { host: NativeView }).host }, + ɵgetInjectorProviders: (injector) => + injector === root ? [{ token: class PersonService {}, provider: class {} }] : [], + ɵgetInjectorResolutionPath: (injector) => [injector, root, platform], + }; + const first = collectInjectorTree(withInjectors, tree); + const again = collectInjectorTree(withInjectors, tree); + expect(first.roots[0].injector).toMatchObject({ name: 'ns-app', component: 'AppComponent' }); + expect(first.roots[0].children[0].injector).toMatchObject({ name: 'ns-person' }); + expect(again.roots[0].children[0].injector.id).toBe(first.roots[0].children[0].injector.id); + expect(first.environment[0].injector.name).toBe('Platform'); + expect(first.environment[0].children[0].injector).toMatchObject({ + name: 'Root', + providerCount: 1, + }); + }); + + it('reports the signal graph of a selected host', () => { + const withSignals: Ng = { + ...ng, + getInjector: (host) => host, + ɵgetSignalGraph: (injector) => + injector === personHost + ? { nodes: [{ id: '1', kind: 'signal', label: 'name', epoch: 1, value: 'Ada' }] } + : { nodes: [] }, + }; + const graph = collectSignalGraph(withSignals, { selector: 'ns-person' }, tree); + expect(graph).toMatchObject({ + source: 'selected', + componentSelector: 'ns-person', + component: { name: 'PersonComponent', path: 'ns-app > ns-person' }, + }); + expect(graph!.nodes[0]).toMatchObject({ label: 'name', value: 'Ada' }); + expect(collectSignalGraph(withSignals, null, tree)?.component?.name).toBe('PersonComponent'); + }); +}); diff --git a/packages/ng-devtools/src/overlay-nativescript-views.ts b/packages/ng-devtools/src/overlay-nativescript-views.ts new file mode 100644 index 0000000..7319440 --- /dev/null +++ b/packages/ng-devtools/src/overlay-nativescript-views.ts @@ -0,0 +1,154 @@ +// The NativeScript side of the overlay that needs no NativeScript import: +// Angular renders into `@nativescript/core` views instead of DOM elements, and +// the host tree here lets the shared collectors walk those views. + +import type { HostTree } from './host-tree.ts'; + +/** + * The part of a `@nativescript/core` View the overlay touches. Structural, so + * this file compiles and tests without the framework installed. + */ +export interface NativeView { + readonly typeName: string; + parent?: NativeView | null; + eachChildView?(callback: (child: NativeView) => boolean): void; + /** The element name a template used when it is not a registered view. */ + customCSSName?: string; + isLoaded?: boolean; + borderWidth?: unknown; + borderColor?: unknown; +} + +/** The subset of the `ng` global the NativeScript tree reads. */ +export interface NativeScriptDebugNg { + getComponent?(host: NativeView): unknown; + getRootComponents?(hostOrDirective: unknown): unknown[]; + getHostElement?(componentOrDirective: unknown): NativeView | null; +} + +export function viewChildren(view: NativeView): NativeView[] { + const out: NativeView[] = []; + view.eachChildView?.((child) => { + out.push(child); + return true; + }); + return out; +} + +/** The view at the top of the parent chain. */ +export function topmostView(view: NativeView): NativeView { + let current = view; + while (current.parent) current = current.parent; + return current; +} + +/** + * The host of the root component of the application that rendered `view`. + * NativeScript makes the root component's template content the app's root + * view and leaves the host above it without a parent link, so the host is + * asked for through Angular rather than found by climbing. + */ +export function angularRootHost(ng: NativeScriptDebugNg, view: NativeView): NativeView | null { + try { + for (const component of ng.getRootComponents?.(view) ?? []) { + const host = ng.getHostElement?.(component); + if (host) return host; + } + } catch { + // the view was not rendered by Angular + } + return null; +} + +/** Where a walk of the app should start, given the view NativeScript reports as root. */ +export function nativeScriptRoot(ng: NativeScriptDebugNg, view: NativeView): NativeView { + return angularRootHost(ng, view) ?? topmostView(view); +} + +/** + * The selector of a component from its definition, so a host reports + * `ns-person` whether the renderer gave it a proxy container or a real view. + */ +export function selectorOf(view: NativeView, component: unknown): string { + const definition = (component as { constructor?: { ɵcmp?: { selectors?: unknown[][] } } } | null) + ?.constructor?.ɵcmp; + const first = definition?.selectors?.[0]?.[0]; + if (typeof first === 'string' && first) return first; + return view.customCSSName ?? view.typeName.toLowerCase(); +} + +export function isNativeView(value: unknown): value is NativeView { + const view = value as Partial | null; + return ( + !!view && + typeof view === 'object' && + typeof view.typeName === 'string' && + typeof view.eachChildView === 'function' + ); +} + +/** + * The views under the root component of the app. The root is looked up again + * on every walk, since NativeScript replaces the root view on some navigations. + * A host is named by its component's selector, which is also what `find()` + * matches. + */ +export function nativeScriptTree( + getNg: () => NativeScriptDebugNg | undefined, + getRootView: () => NativeView | undefined, +): HostTree { + let root: NativeView | null = null; + let rootChildren: NativeView[] = []; + const refresh = () => { + const ng = getNg(); + const view = getRootView(); + root = ng && view ? nativeScriptRoot(ng, view) : null; + rootChildren = root ? viewChildren(root) : []; + return root; + }; + const tag = (view: NativeView) => { + let component: unknown = null; + try { + component = getNg()?.getComponent?.(view) ?? null; + } catch { + // not Angular's + } + return selectorOf(view, component); + }; + return { + roots: () => { + const top = refresh(); + return top ? [top] : []; + }, + children: viewChildren, + parent: (view) => view.parent ?? (view !== root && rootChildren.includes(view) ? root : null), + tag, + connected: (view) => view.isLoaded !== false, + isHost: isNativeView, + selector: tag, + find: (selector) => { + const top = refresh(); + const stack = top ? [top] : []; + while (stack.length) { + const view = stack.pop()!; + if (tag(view) === selector) return view; + stack.push(...viewChildren(view).reverse()); + } + return null; + }, + }; +} + +/** + * The first view under `view` that draws something. A component host is + * usually a ProxyViewContainer, which has no native view of its own. + */ +export function renderedView(view: NativeView): NativeView { + let current = view; + while (current.typeName === 'ProxyViewContainer') { + const [first] = viewChildren(current); + if (!first) break; + current = first; + } + return current; +} diff --git a/packages/ng-devtools/src/overlay-nativescript.ts b/packages/ng-devtools/src/overlay-nativescript.ts new file mode 100644 index 0000000..f0f6c64 --- /dev/null +++ b/packages/ng-devtools/src/overlay-nativescript.ts @@ -0,0 +1,395 @@ +// The overlay for a NativeScript Angular app. It reports the same live data as +// the browser overlay, over the app's network connection to a devtools server +// running on the developer's machine. +// +// Call `initNativeScriptOverlay()` before `runNativeScriptAngularApp()`, and +// give the runtime a `WebSocket` global first (for example by importing +// `@valor/nativescript-websockets` in `polyfills.ts`). + +import { Application, isAndroid } from '@nativescript/core'; +import { connectDevframe } from 'devframe/client'; +import { collectComponentTree, type ComponentDebugNg } from './component-tree.ts'; +import { elementById } from './element-id.ts'; +import { collectInjectorTree } from './injector-tree.ts'; +import { attachNgrx } from './ngrx-overlay.ts'; +import { + collectSignalGraph, + graphKey, + toSignalTarget, + type SignalDebugNg, + type SignalTarget, +} from './signal-graph.ts'; +import { createSignalHistory, installSignalWriteHook } from './signal-history.ts'; +import { serializeNamed } from './serialize.ts'; +import { + nativeScriptTree, + renderedView, + type NativeScriptDebugNg, + type NativeView, +} from './overlay-nativescript-views.ts'; + +type DebugNg = SignalDebugNg & ComponentDebugNg & NativeScriptDebugNg; + +export interface NativeScriptOverlayOptions { + /** Absolute URL of the devtools server. Defaults to `defaultDevtoolsBaseURL()`. */ + baseURL?: string; + /** How often the app reports, in milliseconds. */ + intervalMs?: number; + /** How long to wait before trying the server again after a failure, in milliseconds. */ + retryMs?: number; +} + +/** + * Where a simulator or emulator finds a devtools server on the machine that + * runs it. A physical device needs the machine's LAN address instead. + */ +export function defaultDevtoolsBaseURL(port = 9999): string { + // The Android emulator reaches its host at 10.0.2.2; the iOS simulator shares + // the host's loopback interface. + return `http://${isAndroid ? '10.0.2.2' : 'localhost'}:${port}/`; +} + +export function initNativeScriptOverlay(options: NativeScriptOverlayOptions = {}): () => void { + const baseURL = options.baseURL ?? defaultDevtoolsBaseURL(); + gateInjectorProfiler(); + installWebShims(baseURL); + + if (typeof WebSocket === 'undefined') { + console.warn( + '[ng-devtools] No WebSocket global. Import @valor/nativescript-websockets in polyfills.ts before starting the overlay.', + ); + return () => {}; + } + ensureWebSocketStates(); + + // The server and the app restart independently of each other, and the + // devframe client has no reconnect of its own, so a session that fails or + // drops is replaced after a pause for as long as the overlay is alive. + const intervalMs = options.intervalMs ?? 3000; + const retryMs = options.retryMs ?? 5000; + let disposed = false; + let session: (() => void) | undefined; + let retry: ReturnType | undefined; + let unreachable = false; + + const again = () => { + session?.(); + session = undefined; + if (disposed || retry) return; + retry = setTimeout(() => { + retry = undefined; + start(); + }, retryMs); + }; + const start = () => { + connect(baseURL, intervalMs, again).then( + (dispose) => { + if (disposed) { + dispose(); + return; + } + session = dispose; + unreachable = false; + console.log(`[ng-devtools] Connected to the devtools server at ${baseURL}`); + }, + () => { + if (!unreachable) { + console.warn( + `[ng-devtools] Could not reach the devtools server at ${baseURL}; retrying every ${retryMs}ms.`, + ); + } + unreachable = true; + again(); + }, + ); + }; + start(); + + return () => { + disposed = true; + clearTimeout(retry); + session?.(); + session = undefined; + }; +} + +async function connect(baseURL: string, intervalMs: number, onDisconnected: () => void) { + // SSE is out: the NativeScript fetch has no streaming body. + // Closing the socket on purpose also fires the close event. + let closing = false; + const rpc = await connectDevframe({ + baseURL, + transport: 'websocket', + simpleAuth: false, + otpParam: false, + webmcp: false, + wsOptions: { + onDisconnected: () => { + if (!closing) onDisconnected(); + }, + }, + }); + const my = rpc.scope('ng-devtools'); + const pageId = Math.random().toString(36).slice(2, 6); + + const tree = nativeScriptTree(angularDebugApi, () => Application.getRootView() as NativeView); + + let componentTarget: string | null = null; + let lastTreeJson = ''; + let treeSkips = 0; + async function pushTree(force = false) { + const ng = angularDebugApi(); + if (!ng) return; + const report = collectComponentTree(ng, { tree, selectedId: componentTarget }); + const json = JSON.stringify(report); + if (!force && json === lastTreeJson && ++treeSkips < 4) return; + lastTreeJson = json; + treeSkips = 0; + await my.rpc.call('push-component-tree', { ...report, pageId }); + } + + const signalHistory = createSignalHistory((value, name) => + serializeNamed(name, value, { budget: 1000 }), + ); + const restoreSignalHook = await installSignalWriteHook(signalHistory.onWrite); + + let signalTarget: SignalTarget = null; + let lastSignalKey = ''; + let signalSkips = 0; + let historyDelta = false; + let historyFor = ''; + async function pushSignalGraph(force = false) { + const graph = collectSignalGraph(angularDebugApi(), signalTarget, tree); + if (!graph) return; + const key = graphKey(graph); + if (!force && key === lastSignalKey && ++signalSkips < 4) return; + lastSignalKey = key; + signalSkips = 0; + const owner = graph.component?.id ?? ''; + const full = force || !historyDelta || owner !== historyFor; + historyFor = owner; + const history = signalHistory.collectDelta(graph.nodes, full); + const answer = (await my.rpc.call('push-signal-graph', { + ...graph, + pageId, + ...(full ? { history } : { historyDelta: history }), + })) as { delta?: boolean } | undefined; + historyDelta = answer?.delta === true; + } + + let lastInjectorJson = ''; + let injectorSkips = 0; + async function pushInjectorTree() { + const ng = angularDebugApi(); + if (!ng) return; + const report = collectInjectorTree(ng, tree); + const json = JSON.stringify(report); + if (json === lastInjectorJson && ++injectorSkips < 4) return; + lastInjectorJson = json; + injectorSkips = 0; + await my.rpc.call('push-injector-tree', { ...report, pageId }); + } + + const ngrx = attachNgrx(my, pageId, angularDebugApi, { + tree, + describe: () => ({ url: '/', title: `NativeScript (${isAndroid ? 'Android' : 'iOS'})` }), + }); + + const report = async () => { + await pushTree(); + await pushSignalGraph(); + await pushInjectorTree(); + await ngrx.push(); + }; + const tick = () => { + if (rpc.status !== 'connected' && rpc.status !== 'connecting') return; + report().catch((error) => console.warn('[ng-devtools] report failed', error)); + }; + tick(); + const interval = setInterval(tick, intervalMs); + + my.rpc.register({ + name: 'highlight-in-page', + type: 'event', + jsonSerializable: true, + handler: (selector: string | { pageId?: string; id?: string } | null) => { + if (selector && typeof selector === 'object') { + if (selector.pageId && selector.pageId !== pageId) return; + const host = + typeof selector.id === 'string' + ? elementById(selector.id, (h) => tree.isHost(h) && tree.connected(h)) + : null; + if (tree.isHost(host)) flash(renderedView(host)); + return; + } + if (typeof selector !== 'string' || !selector) return; + const host = tree.find(selector); + if (host) flash(renderedView(host)); + }, + }); + + my.rpc.register({ + name: 'select-signal-component', + type: 'event', + jsonSerializable: true, + handler: (request: unknown) => { + const next = toSignalTarget(request, pageId); + if (next === undefined) return; + signalTarget = next; + void pushSignalGraph(true); + }, + }); + + my.rpc.register({ + name: 'inspect-component-in-page', + type: 'event', + jsonSerializable: true, + handler: (request: { pageId?: string; id?: string | null } | null) => { + if (request?.pageId && request.pageId !== pageId) return; + componentTarget = typeof request?.id === 'string' ? request.id : null; + void pushTree(true); + }, + }); + + return () => { + closing = true; + clearInterval(interval); + restoreSignalHook(); + ngrx.stop(); + void Promise.allSettled([ + my.rpc.call('forget-component-page', pageId), + my.rpc.call('forget-injector-page', pageId), + my.rpc.call('forget-ngrx-page', pageId), + ]).finally(() => rpc.close?.()); + }; +} + +function angularDebugApi(): DebugNg | undefined { + const ng = (globalThis as { ng?: DebugNg }).ng; + if (typeof ng?.getComponent !== 'function') return undefined; + const getDirectives = ng.getDirectives; + if (!getDirectives) return ng; + return { ...ng, getDirectives: (host) => withTextGlobal(() => getDirectives(host)) }; +} + +/** + * Angular's `getDirectives()` starts with `node instanceof Text`, a DOM global + * a NativeScript runtime lacks, so a stand-in exists for the length of the call. + */ +function withTextGlobal(fn: () => T): T { + const g = globalThis as Record; + if ('Text' in g) return fn(); + g['Text'] = class Text {}; + try { + return fn(); + } finally { + delete g['Text']; + } +} + +const flashing = new WeakMap< + NativeView, + { borderWidth: unknown; borderColor: unknown; timer: ReturnType } +>(); + +/** Outline a view for two seconds, keeping the border it had for when that ends. */ +function flash(view: NativeView) { + const active = flashing.get(view); + if (active) clearTimeout(active.timer); + const { borderWidth, borderColor } = active ?? view; + view.borderWidth = 2; + view.borderColor = '#68b6ff'; + const timer = setTimeout(() => { + flashing.delete(view); + view.borderWidth = borderWidth; + view.borderColor = borderColor; + }, 2000); + flashing.set(view, { borderWidth, borderColor, timer }); +} + +/** + * Angular wires its injector profiler, which backs the provider lists the DI + * inspector shows, only when `window` exists as the platform is created, so a + * `window` is defined here and removed once the profiler is in place. The + * moment is read off the `ng` global: core publishes `getComponent` right + * after wiring the profiler, and `getComponent` is the sentinel rather than + * the `ng` object itself because the router publishes its own utilities onto + * that object earlier, while `provideRouter()` evaluates. + */ +function gateInjectorProfiler() { + const g = globalThis as Record; + if ('window' in g || 'ng' in g) return; + Object.defineProperty(g, 'window', { configurable: true, get: () => g }); + const removeWindow = () => { + if (Object.getOwnPropertyDescriptor(g, 'window')?.get) delete g['window']; + }; + Object.defineProperty(g, 'ng', { + configurable: true, + enumerable: true, + get: () => undefined, + set(value: unknown) { + Object.defineProperty(g, 'ng', { + configurable: true, + enumerable: true, + writable: true, + value, + }); + if (!value || typeof value !== 'object') { + removeWindow(); + return; + } + Object.defineProperty(value, 'getComponent', { + configurable: true, + enumerable: true, + get: () => undefined, + set(fn: unknown) { + Object.defineProperty(value, 'getComponent', { + configurable: true, + enumerable: true, + writable: true, + value: fn, + }); + removeWindow(); + }, + }); + }, + }); +} + +/** + * `devframe/client` reads `location` and `navigator` as bare globals when it + * resolves the socket URL and identifies the client. A NativeScript runtime has + * neither, so the server's address stands in for the page's. + */ +function installWebShims(baseURL: string) { + const g = globalThis as Record; + if (typeof g['location'] === 'undefined') { + const url = new URL(baseURL); + g['location'] = { + href: url.href, + origin: url.origin, + protocol: url.protocol, + host: url.host, + hostname: url.hostname, + port: url.port, + pathname: url.pathname, + search: '', + hash: '', + }; + } + if (typeof g['navigator'] === 'undefined') { + g['navigator'] = { userAgent: `NativeScript/${isAndroid ? 'android' : 'ios'}` }; + } +} + +/** + * The transport compares `readyState` with the constants on the `WebSocket` + * constructor, which a polyfill may only define on its instances. + */ +function ensureWebSocketStates() { + const states = WebSocket as unknown as Record; + states['CONNECTING'] ??= 0; + states['OPEN'] ??= 1; + states['CLOSING'] ??= 2; + states['CLOSED'] ??= 3; +} diff --git a/packages/ng-devtools/tsdown.config.ts b/packages/ng-devtools/tsdown.config.ts index 6035077..2d3186b 100644 --- a/packages/ng-devtools/tsdown.config.ts +++ b/packages/ng-devtools/tsdown.config.ts @@ -5,11 +5,12 @@ export default defineConfig({ 'src/devframe.ts', 'src/popup.ts', 'src/overlay.ts', + 'src/overlay-nativescript.ts', 'src/vite.ts', 'src/http.ts', 'src/hub.ts', ], - external: [/^@angular\//, /^rxjs/], + external: [/^@angular\//, /^@nativescript\//, /^rxjs/], format: 'esm', platform: 'node', dts: true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f2b53e..7a8ce20 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -232,6 +232,9 @@ importers: '@angular/core': specifier: ^22.1.0 version: 22.1.7(@angular/compiler@22.1.7)(rxjs@7.8.2)(zone.js@0.16.3) + '@nativescript/core': + specifier: ^9.1.0 + version: 9.1.2 rxjs: specifier: ~7.8.0 version: 7.8.2 @@ -1148,10 +1151,21 @@ packages: resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} engines: {node: '>=18.0.0'} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} + engines: {node: '>=18'} + '@csstools/color-helpers@6.1.1': resolution: {integrity: sha512-gLNsunvwf3mCi5u5o46/Z/JcJMnhbHSaZ69rkgPzNM3J4s8hWwpPUQB6/tt0EDFyCiWzxANlx+2LJwpYj4zS1w==} engines: {node: '>=20.19.0'} + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-calc@3.4.0': resolution: {integrity: sha512-XQKj5B7QiZcHiegCOCAzcAOJdhGgWOHbbu62h5e5mkHnn8lWcfiJhllkqWmxu5zWR9jucPHuo1iTB56P033hcg==} engines: {node: '>=20.19.0'} @@ -1159,6 +1173,13 @@ packages: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-color-parser@4.2.3': resolution: {integrity: sha512-y4LpL+lmpuyKDiEFq2PnZUVFdAjsoB/qQJod79yLNokXyW7jewi+/WJ69EfItj8A2unWtxXnGjw6LYXgXu5ZjA==} engines: {node: '>=20.19.0'} @@ -1166,6 +1187,12 @@ packages: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms@4.0.0': resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} engines: {node: '>=20.19.0'} @@ -1180,6 +1207,10 @@ packages: css-tree: optional: true + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + '@csstools/css-tokenizer@4.0.1': resolution: {integrity: sha512-bPlN9S9O1A0euCpEWE4qnvB5YDuyYVsUTrxSgmAM1Is0j4tICHoVyOVAXfWMP/kS9ZrjvyIXWV2PmomiAXXqOw==} engines: {node: '>=20.19.0'} @@ -2054,6 +2085,12 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + '@nativescript/core@9.1.2': + resolution: {integrity: sha512-zL/dgfuLmcVu9nR47UEFOaPHXoaRKuWMBnDwiaMAwXmf4WKd6yr1gIXcNHheKgBNGrls06LgbBpkB841fI+HcA==} + + '@nativescript/hook@3.0.5': + resolution: {integrity: sha512-MzL7R/nPZU2qnvDWWuJ8RB7H3luEwANgFX/d/ILdg7bSYxl6uANCfzlueHnWgrQmBxu6dTkvPsFW2WNVUxlhUg==} + '@ngrx/signals@22.0.1': resolution: {integrity: sha512-R62VsPrnH54LgA3LAqw+GWA9FHii526CH1aqah8aiK1RZocp+3N9rS3g5wrrXU655eVH65jhN4k/k+EFyxO/RA==} peerDependencies: @@ -7739,13 +7776,27 @@ snapshots: '@cloudflare/kv-asset-handler@0.4.2': {} + '@csstools/color-helpers@5.1.0': {} + '@csstools/color-helpers@6.1.1': {} + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-calc@3.4.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.1))(@csstools/css-tokenizer@4.0.1)': dependencies: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.1) '@csstools/css-tokenizer': 4.0.1 + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-color-parser@4.2.3(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.1))(@csstools/css-tokenizer@4.0.1)': dependencies: '@csstools/color-helpers': 6.1.1 @@ -7753,6 +7804,10 @@ snapshots: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.1) '@csstools/css-tokenizer': 4.0.1 + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.1)': dependencies: '@csstools/css-tokenizer': 4.0.1 @@ -7761,6 +7816,8 @@ snapshots: optionalDependencies: css-tree: 3.2.1 + '@csstools/css-tokenizer@3.0.4': {} + '@csstools/css-tokenizer@4.0.1': {} '@devframes/agentic@1.1.0(crossws@0.4.12(srvx@1.0.5))(devframe@1.1.0)': @@ -8436,6 +8493,24 @@ snapshots: '@tybys/wasm-util': 0.10.4 optional: true + '@nativescript/core@9.1.2': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@nativescript/hook': 3.0.5 + acorn: 8.18.0 + css-tree: 3.2.1 + css-what: 7.0.0 + emoji-regex: 10.6.0 + semver: 7.8.5 + source-map: 0.7.6 + source-map-js: 1.2.1 + tslib: 2.8.1 + + '@nativescript/hook@3.0.5': {} + '@ngrx/signals@22.0.1(@angular/core@22.1.7(@angular/compiler@22.1.7)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2)': dependencies: '@angular/core': 22.1.7(@angular/compiler@22.1.7)(rxjs@7.8.2)(zone.js@0.16.3) From 52127c396df50dc610c93df4bf4f14e5afbf8151 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Tue, 29 Sep 2026 11:30:45 -0700 Subject: [PATCH 03/10] fix(ui): connect from the page's own base `ng-devtools dev` served the UI at / with its connection beside the page, at /__connection.json, while the UI only looked for it at /__ng-devtools/, which is where the Vite bridge and the Express mount put it, so the standalone UI never connected. The UI now tries its own base first and falls back to /__ng-devtools/. --- app/src/app.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/app.ts b/app/src/app.ts index 90914b5..fce1cc0 100644 --- a/app/src/app.ts +++ b/app/src/app.ts @@ -803,7 +803,9 @@ export class App implements OnInit, OnDestroy { } } -// Chrome extension passes ?baseURL=...; embedded uses /__ng-devtools/; standalone uses default +// Chrome extension passes ?baseURL=...; the Vite bridge mounts the connection +// at /__ng-devtools/ beside a page served from /; the standalone server and the +// Express mount serve it next to the page. function sameOrigin(value: string): boolean { try { return new URL(value, location.href).origin === location.origin; @@ -827,7 +829,7 @@ function loopbackFromExtension(value: string): boolean { } } -function detectBaseURL(): string | undefined { +function detectBaseURL(): string | string[] | undefined { const params = new URLSearchParams(location.search); const fromQuery = params.get('baseURL'); // Same origin only: any page can open this URL, and this value decides where @@ -841,5 +843,5 @@ function detectBaseURL(): string | undefined { if (location.pathname.includes('__ng-devtools') || location.pathname.includes('__devframes/')) { return undefined; } - return '/__ng-devtools/'; + return ['./', '/__ng-devtools/']; } From eb6725c634c3b628e4dd06f32ecc82db923301f1 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Tue, 29 Sep 2026 11:38:39 -0700 Subject: [PATCH 04/10] feat: add a NativeScript example app `app-nativescript/` is an `ns create --ng` project wired to the NativeScript overlay: the WebSocket polyfill in polyfills.ts, the overlay started in main.ts before the app runs, plain-HTTP allowances for the simulator and emulator, and a showcase component with a signal, two computeds, an effect, an input and a component-level provider so every panel has something to show. The app maps the devtools package through tsconfig `paths` to its build output in packages/ng-devtools/dist, which is what the published package serves, rather than to its TypeScript sources. The sources import each other with `.ts` extensions, which the app's compiler rejects, and TypeScript never emits `.ts` sources it resolved through node_modules, so a linked package compiles to an empty module under @nativescript/webpack. `pnpm devtools:nativescript` starts the devtools server scanning the app's sources. Generated directories are left out of the Prettier check. --- .prettierignore | 4 + README.md | 6 +- app-nativescript/.editorconfig | 19 + app-nativescript/.gitignore | 28 + app-nativescript/.vscode/extensions.json | 3 + .../App_Resources/Android/app.gradle | 25 + .../Android/before-plugins.gradle | 15 + .../Android/src/main/AndroidManifest.xml | 44 + .../src/main/res/drawable-hdpi/background.png | Bin 0 -> 3661 bytes .../src/main/res/drawable-hdpi/logo.png | Bin 0 -> 5165 bytes .../src/main/res/drawable-ldpi/background.png | Bin 0 -> 1609 bytes .../src/main/res/drawable-ldpi/logo.png | Bin 0 -> 2511 bytes .../src/main/res/drawable-mdpi/background.png | Bin 0 -> 2218 bytes .../src/main/res/drawable-mdpi/logo.png | Bin 0 -> 3432 bytes .../main/res/drawable-nodpi/splash_screen.xml | 8 + .../main/res/drawable-xhdpi/background.png | Bin 0 -> 5473 bytes .../src/main/res/drawable-xhdpi/logo.png | Bin 0 -> 6904 bytes .../main/res/drawable-xxhdpi/background.png | Bin 0 -> 9949 bytes .../src/main/res/drawable-xxhdpi/logo.png | Bin 0 -> 10319 bytes .../main/res/drawable-xxxhdpi/background.png | Bin 0 -> 15701 bytes .../src/main/res/drawable-xxxhdpi/logo.png | Bin 0 -> 13941 bytes .../res/drawable/ic_launcher_foreground.xml | 15 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3092 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1956 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4484 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7184 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10378 bytes .../src/main/res/values-v21/colors.xml | 5 + .../src/main/res/values-v21/styles.xml | 34 + .../src/main/res/values-v29/styles.xml | 18 + .../Android/src/main/res/values/colors.xml | 14 + .../res/values/ic_launcher_background.xml | 4 + .../Android/src/main/res/values/styles.xml | 42 + .../src/main/res/xml/network_security.xml | 16 + .../AppIcon.appiconset/Contents.json | 122 + .../AppIcon.appiconset/icon-1024.png | Bin 0 -> 17868 bytes .../AppIcon.appiconset/icon-20.png | Bin 0 -> 745 bytes .../AppIcon.appiconset/icon-20@2x.png | Bin 0 -> 995 bytes .../AppIcon.appiconset/icon-20@3x.png | Bin 0 -> 1258 bytes .../AppIcon.appiconset/icon-29.png | Bin 0 -> 851 bytes .../AppIcon.appiconset/icon-29@2x.png | Bin 0 -> 1232 bytes .../AppIcon.appiconset/icon-29@3x.png | Bin 0 -> 1668 bytes .../AppIcon.appiconset/icon-40.png | Bin 0 -> 995 bytes .../AppIcon.appiconset/icon-40@2x.png | Bin 0 -> 1504 bytes .../AppIcon.appiconset/icon-40@3x.png | Bin 0 -> 2121 bytes .../AppIcon.appiconset/icon-60@2x.png | Bin 0 -> 2121 bytes .../AppIcon.appiconset/icon-60@3x.png | Bin 0 -> 3018 bytes .../AppIcon.appiconset/icon-76.png | Bin 0 -> 1482 bytes .../AppIcon.appiconset/icon-76@2x.png | Bin 0 -> 2633 bytes .../AppIcon.appiconset/icon-83.5@2x.png | Bin 0 -> 2831 bytes .../iOS/Assets.xcassets/Contents.json | 6 + .../Contents.json | 23 + .../LaunchScreen-AspectFill.png | Bin 0 -> 4920 bytes .../LaunchScreen-AspectFill@2x.png | Bin 0 -> 14165 bytes .../LaunchScreen-AspectFill@3x.png | Bin 0 -> 27892 bytes .../Contents.json | 23 + .../LaunchScreen-Center.png | Bin 0 -> 6808 bytes .../LaunchScreen-Center@2x.png | Bin 0 -> 13502 bytes .../LaunchScreen-Center@3x.png | Bin 0 -> 20794 bytes app-nativescript/App_Resources/iOS/Info.plist | 59 + .../App_Resources/iOS/LaunchScreen.storyboard | 53 + .../App_Resources/iOS/build.xcconfig | 7 + app-nativescript/nativescript.config.ts | 11 + app-nativescript/package-lock.json | 14083 ++++++++++++++++ app-nativescript/package.json | 33 + app-nativescript/references.d.ts | 1 + app-nativescript/src/app.css | 3 + app-nativescript/src/app/app.component.html | 3 + app-nativescript/src/app/app.component.ts | 10 + app-nativescript/src/app/app.routes.ts | 9 + .../src/app/devtools-showcase.component.ts | 43 + .../app/people/person-detail.component.html | 39 + .../src/app/people/person-detail.component.ts | 44 + .../src/app/people/person.component.html | 12 + .../src/app/people/person.component.ts | 15 + .../src/app/people/person.service.ts | 119 + app-nativescript/src/app/people/person.ts | 6 + app-nativescript/src/main.ts | 27 + app-nativescript/src/polyfills.ts | 11 + app-nativescript/tailwind.config.js | 13 + app-nativescript/tsconfig.json | 24 + app-nativescript/webpack.config.js | 10 + package.json | 1 + 84 files changed, 15114 insertions(+), 1 deletion(-) create mode 100644 app-nativescript/.editorconfig create mode 100644 app-nativescript/.gitignore create mode 100644 app-nativescript/.vscode/extensions.json create mode 100644 app-nativescript/App_Resources/Android/app.gradle create mode 100644 app-nativescript/App_Resources/Android/before-plugins.gradle create mode 100644 app-nativescript/App_Resources/Android/src/main/AndroidManifest.xml create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-hdpi/background.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-hdpi/logo.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-ldpi/background.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-ldpi/logo.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-mdpi/background.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-mdpi/logo.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/background.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app-nativescript/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app-nativescript/App_Resources/Android/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app-nativescript/App_Resources/Android/src/main/res/values-v21/colors.xml create mode 100644 app-nativescript/App_Resources/Android/src/main/res/values-v21/styles.xml create mode 100644 app-nativescript/App_Resources/Android/src/main/res/values-v29/styles.xml create mode 100644 app-nativescript/App_Resources/Android/src/main/res/values/colors.xml create mode 100644 app-nativescript/App_Resources/Android/src/main/res/values/ic_launcher_background.xml create mode 100644 app-nativescript/App_Resources/Android/src/main/res/values/styles.xml create mode 100644 app-nativescript/App_Resources/Android/src/main/res/xml/network_security.xml create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/Contents.json create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@3x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png create mode 100644 app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png create mode 100644 app-nativescript/App_Resources/iOS/Info.plist create mode 100644 app-nativescript/App_Resources/iOS/LaunchScreen.storyboard create mode 100644 app-nativescript/App_Resources/iOS/build.xcconfig create mode 100644 app-nativescript/nativescript.config.ts create mode 100644 app-nativescript/package-lock.json create mode 100644 app-nativescript/package.json create mode 100644 app-nativescript/references.d.ts create mode 100644 app-nativescript/src/app.css create mode 100644 app-nativescript/src/app/app.component.html create mode 100644 app-nativescript/src/app/app.component.ts create mode 100644 app-nativescript/src/app/app.routes.ts create mode 100644 app-nativescript/src/app/devtools-showcase.component.ts create mode 100644 app-nativescript/src/app/people/person-detail.component.html create mode 100644 app-nativescript/src/app/people/person-detail.component.ts create mode 100644 app-nativescript/src/app/people/person.component.html create mode 100644 app-nativescript/src/app/people/person.component.ts create mode 100644 app-nativescript/src/app/people/person.service.ts create mode 100644 app-nativescript/src/app/people/person.ts create mode 100644 app-nativescript/src/main.ts create mode 100644 app-nativescript/src/polyfills.ts create mode 100644 app-nativescript/tailwind.config.js create mode 100644 app-nativescript/tsconfig.json create mode 100644 app-nativescript/webpack.config.js diff --git a/.prettierignore b/.prettierignore index 00b7438..d037d1c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,3 +4,7 @@ dist pnpm-lock.yaml extension/ui docs/privacy-policy.html +app-nativescript/platforms +app-nativescript/hooks +app-nativescript/App_Resources +app-nativescript/package-lock.json diff --git a/README.md b/README.md index 3fdb9ab..2f453b0 100644 --- a/README.md +++ b/README.md @@ -374,9 +374,13 @@ Then open `http://localhost:9999/` for the UI, or point an MCP client at showcase component (signals, a computed, an effect and a component-level provider). Tested on the iOS simulator; Android has not been verified yet. +The app maps `@santoshyadavdev/ng-devtools/*` to the package's build output in +`packages/ng-devtools/dist`, so build the package first. + ```sh +pnpm devtools:build-pkg # builds packages/ng-devtools/dist, UI included pnpm devtools:nativescript # devtools server scanning app-nativescript/src -cd app-nativescript && ns debug ios --no-hmr +cd app-nativescript && npm install && ns debug ios --no-hmr ``` ## Demo App diff --git a/app-nativescript/.editorconfig b/app-nativescript/.editorconfig new file mode 100644 index 0000000..84ba4fa --- /dev/null +++ b/app-nativescript/.editorconfig @@ -0,0 +1,19 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 + +[*.json] +indent_style = space +indent_size = 2 + +[*.js] +indent_style = space +indent_size = 2 + +[*.ts] +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/app-nativescript/.gitignore b/app-nativescript/.gitignore new file mode 100644 index 0000000..1cb1231 --- /dev/null +++ b/app-nativescript/.gitignore @@ -0,0 +1,28 @@ +# NativeScript +hooks/ +node_modules/ +platforms/ + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# General +.DS_Store +.AppleDouble +.LSOverride +.idea +.cloud +.project +tmp/ +typings/ + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json diff --git a/app-nativescript/.vscode/extensions.json b/app-nativescript/.vscode/extensions.json new file mode 100644 index 0000000..2a163b8 --- /dev/null +++ b/app-nativescript/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["nativescript.nativescript"] +} diff --git a/app-nativescript/App_Resources/Android/app.gradle b/app-nativescript/App_Resources/Android/app.gradle new file mode 100644 index 0000000..7f4f14a --- /dev/null +++ b/app-nativescript/App_Resources/Android/app.gradle @@ -0,0 +1,25 @@ +// You can add your native dependencies here +dependencies { +// implementation 'androidx.multidex:multidex:2.0.1' +} + +android { + compileSdkVersion 36 + buildToolsVersion "36" + // ndkVersion "" + + defaultConfig { + minSdkVersion 24 + targetSdkVersion 36 + + // Version Information + versionCode 1 + versionName "1.0.0" + + generatedDensities = [] + } + + aaptOptions { + additionalParameters "--no-version-vectors" + } +} diff --git a/app-nativescript/App_Resources/Android/before-plugins.gradle b/app-nativescript/App_Resources/Android/before-plugins.gradle new file mode 100644 index 0000000..9faffb8 --- /dev/null +++ b/app-nativescript/App_Resources/Android/before-plugins.gradle @@ -0,0 +1,15 @@ +// this configurations is loaded before building plugins, as well as before building +// the app - this is where you can apply global settings and overrides + +project.ext { + // androidXAppCompat = "1.4.1" + // androidXExifInterface = "1.3.3" + // androidXFragment = "1.4.1" + // androidXMaterial = "1.5.0" + // androidXMultidex = "2.0.1" + // androidXTransition = "1.4.1" + // androidXViewPager = "1.0.0" + + // useKotlin = true + // kotlinVersion = "1.6.0" +} diff --git a/app-nativescript/App_Resources/Android/src/main/AndroidManifest.xml b/app-nativescript/App_Resources/Android/src/main/AndroidManifest.xml new file mode 100644 index 0000000..f1773d8 --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/AndroidManifest.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-hdpi/background.png b/app-nativescript/App_Resources/Android/src/main/res/drawable-hdpi/background.png new file mode 100644 index 0000000000000000000000000000000000000000..bbefbf42a4b53283de502b924cf2ed3c9ff03aec GIT binary patch literal 3661 zcmeAS@N?(olHy`uVBq!ia0y~yV3J{AV6Na`0*bKrExXLXz-X80>>Lp0ZfI$2P@c=c zpfNEyA>q>r&vUwINeKxj&T4CN6_p2dbo2xz>_2(n*nz_bjvqLwFndN!%me8+VoV{2 z9z1{l{8R(uzS!ghmW$I%9n%s|J!Xy3TzT}Q!!Le;a1ln`^n?T*#!ar56yNX(SaTkl z$DAbI%3{fUQ@SB%UkS%=hK{)`iSY~@PkVDUq#4*Ttn}B@VA{B!;U?e7PD=-~$($ZC zS^69WZ9Ao-q@<@jKO}SXq`+AF-VGW0- zAGF-RV3UTi?P8b2rA-qX8<#poq-9kW)WxN3YAUV^bgT3ItnpqvFBk;M!Q!8{<$=zH~-00RThR!tU_%@`!w30gOb*9F7*5RKVvr1GR7lohNbzB9=vm1y z!BCXJXjF1E5JpqNXm%Ja6GjWh(b{3OiX3exj5d}=8-=4SW7>2N&aht&;`p4bYqbs7 Pt6}hT^>bP0l+XkK#s4G) literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-hdpi/logo.png b/app-nativescript/App_Resources/Android/src/main/res/drawable-hdpi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e788deb314f1c7493977876f02dd0f261830b30c GIT binary patch literal 5165 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%0D4l9w_KO(atKw51I&5^GF zhQghmi^zAP!#X)4yH84PsHE2ea(@Wa`E)=o(<~rqB}q#H<+4_0H7GcL&u8dzV5H2!DY;mOb!yh{lay^mhjnd6{auotij@0GL_S1ahgHPpG6XmT*k01; zJU@{dPLed!%r1`!nAt`0kx8(}?m^Oaz%4Y9GN#p-*)8(8y7UTRO9Q0kZ}7G8)uqjW z4+DqMfv~EAT#wt5(t3@-V}EdyR$%%YMi8#YO)!G4A9GfU!{(vog#ZUBKZ_0Rv)lp@nAME zThc`Q#j`u^uE#A3?*h^CFDsQZV zoEJIX3e>@L$9XA+V&C(FeQC7W4y&1R9|CSvhT-1KmbRhYwqj=Y6CN3kz&EIE2uTxg z_k&Ci?Sz@YqDJfPAiu`LhtiA#ko#rTt$Gsf=<@D`q7?CE>V=uTYi8G***JXU6?+&D zs`-CR|GGtp0ZQKYi21OE?vIA)bPnfT@KmhFcevel^L=0+JeI03lC}n7SzMRmj+4`I z2hEvgwm`lB&}YZSR$^vv%3T@KM&)t1zf@>CxR|irB^Hx+HF3YMEEe?qN1o8|$bigU zW;P?M5;J>7(iylqA=b72x0_XbOXfxp&>N~7mC9O$#I(W00y%jhf>#(}b?6%0cMtPTT z@b4IWN}fk7pZkgo4rcb2q_^-en_4!IG(2)mk+eGD&h+knwhzD#WOrDxmv?&VUx>19 z`U{m4oI21jv!`f2Ml!TFHtJWjhT!(NJp=N=(UO@h!e0Ps zc2T}>-*9Dwvm}`yUI?7pOF3>k2{CW-^fLVPfJ_%~LQdU33w&ZDma;fW@u2??5MLO1 zv_Knm_h(rh)-c?jmAP^=0J#`9m=|Su;MmI17AxYOjfziC!FMPG4bakv~aamGBRI5nbV5(@Rh^R((iyI z>0pimg2Vj`Lczm3DIAuwH}KPf^~aXF$H>D$c9is~CC| zH@*c}Ew>W3Wvva|FX?be8%kOwSz){#2<273%goxjy4Wl~k?&Qxhdj(~e_#smrHK4* zl96*S5?78;_KcN)3nYz|N5rhtY(A{0(OmVO?s@#8(O*ZNd#WgH@pR8A|M?u9(xEwL zMdX%9nl8_^bh@P5bLtIxx+iTkl1J)esWJ_Fx~Iwwk&kTh*u8<@^4N^>OC-&f^q}JL zYf>P_Qa)O`v;iF(CHPFpUj%uib62JLRG{9Fr+a9W64I#^p6;P&f-DwG+AKq-8ycwN z=w?S)(T1DgOOircP=(0!gzqny*$rfP0tdK?uqX2{+%feW+-tbUDRUlhe?hgPp%gVV zliH?^#4+-hIb!pON9osc3GvN6hv8F`9f&U=JxE{*nT&=fQ2cic@tbX_nBmu$H<+eIb&LgeVh{3)U&(7!~I|&uB1;W9xy9O zPb!I!mvmL&d~`~flo>ARYVSQoqCQ+zdY)!+luB;2|x;@R8bs_)g7AW|r$*8M&`8vs||U`9fF7 zyz)je+OL(Jf{#MeY+`25B{IYC%}PFwFLFGGCu4l9nQNTXwO#s=lN3=A3* zlM@m?o$x%To0gQ2aN?}CCRb5;P)A2kP{RI`2aX*$eBk(jlM1tE#Kb(1ej~;da_GVH z_s>r?Fz$;@PGGq>z0@%+@zi717|oSOPdfbK7YG+&)J;!F&|%!mg>L(-_=Xn>3+ hhS7{bzmnl3_w8oZYK8hZ5nzeN;OXk;vd$@?2>{eFH1Plc literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-ldpi/logo.png b/app-nativescript/App_Resources/Android/src/main/res/drawable-ldpi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e4cac1adb9d183933b367930c6a241c211bd9874 GIT binary patch literal 2511 zcmV;=2{87FP)8 zGcb2;001bFV_;zN$VtvEW@2Dq$jvJ$3UYT+h=`0*V86-0#=yhC$H2)To0wc&;2Z1~ z0#w4_=kMprfC0W;V_*c)mvupAVanqLTq&u=$w2xK5LXldEoWe0ECI4b(jn{)5IYIN zo&#bRg#jkxf@y<8U!rK>Z>>I;A8N9304L1OVfl zRDt`MN!kDa010qNS#tmYDTV+5DTVMmUJP|1 zAYVvu)C?W7Gz%R@qu4NL=!F{5(J8IbiXx8wf|*rbh1mV{$2kx8w`ZSo_i}glUd#KPd1mkZo$vXbm*;!W`JLbMfKvou zu%r=^j*)a!TwWsfN!lXmHA$~J=P1)p4gc!^1_Cz$ZS*Xb0jE@Zd^J=7z+m9T9u}0v zUf`3}9%l^|1~9)DMU~;-z_4nMwT21-XsCdwGR&*?cx$K(>LiV?V0#x-u&o-Zh&o9h z=z_Cd(q>6-6ydZ5&MRH`8VU?7y?fOG;Huq+N}<=r3T#YlTmJz*Wq2cjZ3*rxhBq2m zS7bZPjk5p;oFA^!5}d(Zak@Dd!+}-6KY(+4+J6^q9|@cXd@1}rvI1@X0%!$h_J;G# z2?0Ej!~JLwTvAwpH?xSah9~;r3}-iRat>#_;Vdk3yaRxbhign!c9HRaOF90_=ubWH zKw_>I0!Q>xyMuxD(9XJU_;F@F&$k6BVLg;^G$V%_3u|h^CzK{EfMTmk$Q7}QJce+PI5_-r?P*!%V`TX0Ci3Uz)RaeG5p0N;-| zy(+9q1GvKUWi|eUJ{0&w5LAXK)$C_6kPuc~nf|VnREe813plG3B5)i&K3RZ|8=u5K zNf>H4(HEE= z&Tou;0B|+%C*XPDM&LxlohoU$X>wSo_h7LV>+YzN$41{r09yh#Ua=-6d_w6fR<{4Y zKsZT~Sh0XHz|KT_TYxhI?|8E#GqE7V&RZ0*4JfN}U=XNJbWJsbG8v2Ow{111&` z)@Wl}X8L=)v9B@XUK4ElfjfcE;X{Y)hce&zh?CQ8z!Ll_aZ=74^}(+m8D7G#g!dcU z<2l00uoh?pCR3WQ03HKo1G|iEN#LG_U;Q$?j-SuZr-U_|DBlF!fIpg^6xqK@B&=Yc z2)vQwyHsKIqaYZ7kC88|I=o;e0u6~9zuDM}1@E1N73@~H!-DNf!@WA##u!^;-z)O z;#Y+y4XwLJ_H31LDm*=~@zH|t_Z(w81;70?0Zo#!Sg&5v!4s!*?jcDZ41VvCf88j< zIg*|R&dBlK;+$&>K9F>t{A*4_B<;uuTQ@oq3> z4@ByB5%;28j~*qhSjIlx*f*NbHpaRf*b%j}i^BHPYPjXBSR;(D1^A$LcliFa;WZW+ zx5b4;?nfPdb+)V6+)(yYWBXdlhw*iA#mXrwWyKm2)w$P{P06`$C7lY3rTRZDY1Tnv z=U+lkJ|>teDT^CM#f8ATB;6^$Ds7cCL(&=YzuY}N(E;b&t17I36Xc(-W~~3Pi&ZQ) z-5^QV0+YK@za%*4+9iEaQfq?Jpn{NZa?ai2oLeowy>vCfhw_GOwjI_>x-NWflXRcq zJZnCWbo5CK78II>E#^$AhM)3>8@#X(Qbu@;ZJNC?guW->Gzzd{UK33fJY+EVfZ&@GdzPowcSc#D}9YZ z;5#eww+(+PY>n(+Fmtrn*mvT$-{+03+4QHoTOs)HyECTM3e`RJ= zg7+Rt_uz9)PSUxOiajkqP^2t7UG7ViPm@3K)Ja+;NzS>w;bt|+$A0yao|4okf4V(R zonx)(@>^Sjq%&1G?W{L_Sfl4behX}s-=-R!bK4EKUD9QE z5nn3l1W8BB|09$QlJ0WOy%hQ115A)KPJSCbEA)G%r1{Rd-G)9-=@apOGuEvM&TL7~ zN&1YWK9U}l)a;y#=kv#smV_~nk+enlQ%zw;1{z?8Xd%3NakfpETt&N|l@RZ=qV#JaF zTtnyMbWfoLpUAA??Fiug!0&-QJs_qwd?0v5wZ~OM<&k{!fCdsQ^=tQ z&)+{k)xfwfHaUUi;`CC-w8T@7Sz|O;9zE&si(epIgi$v=Awh?6lj|kLH+%xtoQLKy zCyBSRSTf&~ZphhJ!ttA-V=hZ#Jj2G*-dqi726hZ9{q;1MHtuJ*$#=5T(!p#pr-w|I zK1V^@PU$Eq=_$_-$s9c?aO}akgcAuT6V4f z!(JX9Z8e6u*INaGW7wYjPfoaTdVWk)2%Bl!#FH}`8wKPOk3H8bkTLA~I(jINJ)9U07-Bon>tK?v{R7F@u z=0qk7!{a$2jlXAl-U0?FXMsm#F$05nEC@47Hn;&9>_VO{jv*Cu-d=I!J)ppFz~O-Q zCxQ0n%op7{JA*HTKesDq5P4n7@WK8VW6CHR4S~@R7!85Z5Eu=CVH^VTUw5)Cu4m(Y R39K?1JYD@<);T3K0RUrsV7dSR literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-mdpi/logo.png b/app-nativescript/App_Resources/Android/src/main/res/drawable-mdpi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ce3c3a4b4fe24e68242245b6ad1beabb16f31410 GIT binary patch literal 3432 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 KMNUMnLSTZ1B6j%z literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml b/app-nativescript/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml new file mode 100644 index 0000000..ada77f9 --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/background.png b/app-nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/background.png new file mode 100644 index 0000000000000000000000000000000000000000..3541570c1cee0feb7ae07c98e84563d237c4582e GIT binary patch literal 5473 zcmeAS@N?(olHy`uVBq!ia0y~yV7kD-z_NgY2`CbG{DlDn1EXE0vvWY0yP>7AL3u6% zgT}<u>a(NV+Rf&IDX)y!t5C_F%P8Qh%tp6 zdhq=H^HU9s`(l$5ST0U4bxcb<^_VqAbLG*K4!`&X!bKQ$(-RVO7&p0IQhdWFV9j}G z9&?g-D~l!bP3eZ5eI*>f89L^&B*rsrJnhZZkY-@Vu+m>ogK6V_hMRmRJ1rf|CUbho zWa)DhwC$9Rl9HbC{E*DilLE&coJ%;7a5CXc!hwKu6HYtWGH}IntX|jAcyJ}di*249 z8#nCb;n7xOn0vidAUKBY$^Ybp8>i>TM1`=KwoN=aqp?vyKJnOdy#g7-uCLRVgf$$R ze$aCNf=wF6wu@a7mo`moY+ULTk(O0iP#2fBsj0Xw(6KHs$uq4^?$BLDhrdb=R!dcc zWn@ldvM@ZJ6Vmv5rspkSfN~aiL>4nJpY(Kb45^s&_L?K_0R@Hw z4hOV93A8t_%u6{1-oD!M6| literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png b/app-nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..88267df0231a5e016a67e4cd783f5a64cc5b1570 GIT binary patch literal 6904 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 literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png b/app-nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png new file mode 100644 index 0000000000000000000000000000000000000000..abb0fc704741cbf206833a86b43ce14b5ff991a1 GIT binary patch literal 9949 zcmeAS@N?(olHy`uVBq!ia0y~yV6k9eVEe$q1Qg*6E7M?LV6@A0b`A)0H?%Z1D9>eJ z(3qHuY}__L&sc}#CV2{r@grv(hTevR{HB{Fm2q=aFg$3r=^40WKIv6 zEPalGww=;ZQqohNACftGQsCHwa|tIBP9~g5I1q4d!f6Lv2CjIH)$2MM53Xc*vCWfX zOwuvWaG&TyzCmwsQS0H29^>zA^u!cj^ z4_fYDut~$%cCkz1(x!=xjZ2*((y}TG>f+KiH5JzdI@Sdyd8XCL9lERN@K?#fYN?8_ zjLeBl7KX=jLK=V1^t=TM&;pOhVg`m~5+KZ2S9-FSfkA=6)5S5QV$PfEhKvUk7!GVO zTz|q@hVO@=L%)mT{l1;w*cliCKJDiNYTqF#3RHi51(0d!#>&8O!cdEW!J#jZk%6J8 z2N;DDl0z668e|p&=)78&qol`;+0Mgm%5&!@I literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png b/app-nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..55800c9ab9ea2cad920ce68dccb14fe60418232b GIT binary patch literal 10319 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 S`Af#N0iXtE`n9^S$Nvw3wEU(3 literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png b/app-nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png new file mode 100644 index 0000000000000000000000000000000000000000..108977520c8929349df397242f1ef0d7b8c80374 GIT binary patch literal 15701 zcmeHNUr1A76hE6&x1npG6u4_?h)qn>R?#YD(}`XLojR;!2yVPLQx22oTGjdYff= zBiURqxxni-w<(Wjii+9^*(;iOU@_x%oR#)zrTTCej`v&=8mrJ?JvKTA2 zGo@F*4ox&WLqkDrV0=ccDZ6K|_}qgom#^Z4t@D!IaoRTH?s7Ef9Sv=)&9O7Io~!%5 zTX)2lm%%XM4hd|Gm|Tfl>{|+`%wBV{3t+ulI7APx%zFTGfHmk%7f0f&`gAS_IIi?j zxROyQgPsGkO)q+u%!wrWq&m@>N>A`^|6y94$2`Ktum%^10qz6*7O)>+PefioIz&l; zvIwOi%44($=#0=Ap)*2fgw6<^5jrDuM(B*t8KE=!3uhFawx;IMJp=9^fpgX48VQ{T zNrV~1^qybZx-2N7i?~cdE2+2B3YXo2-dN3GXywMDwBjR(7;YH+Ucia%f_6jfmJ|de z3xODa;XY}NH@2hWV<3p6lN&QaP)(dFC6^g+!M#Xlo&C+ryyW@PeH)+ c{{K$zMZQm&p4$6&ztDFLY*n3Ms)D$G0x>!>?f?J) literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png b/app-nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0703f90f437fb831ea98b3ee99c783e1934992e2 GIT binary patch literal 13941 zcmYkjXIN9)^ERA95oro4y-5?KO7BfHp-S%%L_kU?(tA)5ksf+i2^}d45kiZgARQw} zi4+e41_(tUba-?0{Ql4TA^XaewfAJ^UbEL)GjmVEJ)^ty7uhcY004R@YCbq^h#dzN>lm1Lws-~hmlbQc)x_h;ycxZ8ag?DOzVk&BN)OrJkb zGKF>ZV|%eZ*gkAOZ$YlT{Q}4OHIRAt!pi2#00P+Q-~yxgk`tum<~*=SX)jXssbBMm z@siaQptw5>CI)<~i{o2oxTHeUT@1d@5=Wr~p5{P!cLrWK20SmKaCQPT4(eY-xJju4 zs*ELWfEv31(+vFyN}BQ+G!RZt$qRnZS~+alIWkweIY0GZ>RlLteTMbJhG5uxBWZ)0 zYJiJQ7i#LB$9|{+{6a%7G&Xe5(cKgR6ivomGP9@pdF}$68Z5E5HK&q$mfoKm8+(bz zxpzgvk5l@^UJl9<(Vg=_sq5w28!~F8x1Gx#r^m*YX&u&+N==J{RlP~?ZO_m9Lw}X(Kj@+6+4ZEV*8PG zaD~D@e<#HymyMW;=4_yC5O3gof+T$h`qGD7DkgzQ~(I?1{knHkM(CN zh`fJs@LLthYv_>oV`#Yj?#ENU#!}Sgd#>Am%}_TJ;zj3x&n^sks~1WMECVEScKgua zzX%-=tKa^8`6xsa5B!VWM#MPXbD{+# zLgV#YlS&tTXa)K|Gk?`lx@)RK1$bU{p5hsJ|J)vk?{e3yE`RbKtdC|fVg-)o1Uloj z{z~#;R{{UlyMB1#&~ZK(@W&fowevAG*H{=DyUr$uMGlY0rUOVyEw4a<&N*#^N}U~iVYMX$SQYCl8}bs=#&#neNfI^i{--g`~^g5Y$qmZ;~B zDlTZ$0s9Fnh}`gzZb};@Ma(+v{XxC^@V?;@=cPbCyl%+U+{>|m z?^A@qRxk4F<5E1yjy@kFW#nRc^iGJ{7huN(^yun#M@Shl2hA05fp6S7LIgig+}_zR z!u!HimdCo-%!e6m}zJLRj_r>qy!D5TKU&tUOfhyRN%@Fhv zsz39vRcI@?MD-=^L67W>e)MG1=|z0~+f#e|pptkQjkBpy2O$LzyuO_#47`hvwg@nZ z6AElT@0&xO**?;Q#!p29x6sH%v>|R5Jx_VkM6|{Xkp{3cats}oxU#ZELOhWLXj~U| z(1RSg!Dh_b@+4O7Samr8D~(n_jt@q+UJ7?RPQbchZz8gw5oeZwY?pu5UWB22!9GBr zI&ODR1q9Qv{j#Salx3@2J@xVy7k&+bDT~e3X7=8kSd^W7c`_#g_W7q(eS~xvM3AjeQ6ni1b ztaF~kCeelpD<;lQogs*MaE;M1ZhRs>ns>1|&>BC=w_BHJ_If_^rw~=0=*M;->!&tx z>SiwNbK7eN&p7m6=;U@M+NrA>xELuA)xD1+7s40rEm&kas7ZsTE*#wQDX^@Yw3Sp`SN_UjSu&U;^&DFbxt7H)-{-8#)`)WSL`XATKYAbD)?WA7k@MPd)t}) ztvKEeoCBf;tTAluN&-4B*n1ymfmMAUI&G{>*rIuy1dwAbb%MMB2n~fOCTJH(9k&}s z1;wc@bfXtpo#Ped_nv*QYg}6Fk#&i<=3)E;iaMi(=TV+?llHyuy5I?X`#YX|3nGFb zn&Gt>q1{A*VXlt}0$e|vM55xg3Vk(4s9&GB$z+34nodQbsZCr451$d^`t3klnn5xz zGd0phXO}p6x--2cfsvdCybX}SA4$#NhE`$}qP}ls6Eb+(j$v+jb({BVmf6H7OzQ`J zWVmC(*Jg^Jb-AN#p~Y{1_N}*Qmpm*EYZdE`KdUb%B|Q7)8Z-CFiytqIa$O0s*R<81&ZrarzrOBU}~Q~>+m6i?!@>8|`24f9Df7Z4~X0FReSij=G)q}{O_0a4~U&@PET zO)~Ge@zmeqxTurSdoEZ^j?**Z_+J@N40|Z!*r;iBO>9Wt@0uS>G!R`}EVdEecllXw zU(IzYKDzEch)lDYcwfFw_11e`?{D;G2NxUQc&%}Pg@-3wcvyy-1speSgW^;NmM`q9 zIv>Vrgmwb0e+%Z!yGErx9en8(8#3B>Rb$6_fdxD3a<-F&;^>vk*j0z_H(k2_dAwQF z`VDdyL4+eTK!Z(O#=qL#!6lUH zlvk3lLTJh`yq;eq9G1)rWlYaEjsAj0WW~nZ>6T`{PxSyeanwVMweGwW-dI6QChrvn z8pvfmj65=RtOAZ`rcK$u_gP=+!f$mOxq2Bm7o_d=xAY0&^ey}o>+c;h`5*>z~iB`;E9|QCp?69r3YrAs8`O@ zP{#req6Ar}Q%)152=Iv8wc5C|pR`KZOT$NZPk@&>ZI^O^`rn!9_QYzDok;saM&l{n zK<4)%`k~C-%h2;*`!Fbre)vr(+Lr4w*ML03ocvFvVCe`0ANPe(@&nJhCD8A^Ri0nc z&i(j|vbTk5s`~cCE6@HNFX*xEqjn*M>`UD+UC=EW=svif`gObAuTKhajk14tVQ0|j zkm{MwLJ+cClzLVMI+;d_|DGc~q=(KCyJC958Swhzw<`h;t`XF@-d4y|_k(QePM>4L zFPCU~&BeoRHOMxY?~Urlsvz*asvF7kHmt!GHXC^pE`qq>8V*Dk_p+z{niQeW(7Gnf9ac6cloghQ<2 zDt<66Tf3H4wd-glBV6^w89xc?qKc+DvBkmZKZQ|jeWW?t`JLCZ>3f{Q9ldcKT9UUK zUoCfh8mz_Rr2%CzxOEnfU~x}6kAON2DMp*3_o<7sq(8DD86>ZcMp}GH5J&7C8h1-) z1ZqjAQ^U`T0{MdJxA+$Vp^P~xzD%t&pQm+Sv(7WJAt_LLvW_5cy&15g#*a`@0@dK{ z<(ba7%%qdcirk7`mspn2UD|pt)~3vG^chJV*Q$gEg$x{n!|I4-f@)Iz*23dSmlqVF zYMZmo9ZXex?hb8+dupx`9Gx@r}d0@1&|dmhB75B(D9BpbCC-eRu7GSaGLa^ zqp$+ zCqE3SJmroWV93`F=|Mb8!FLmJGFc6`94T@Sg4Ak>~JvA(xteB3=>e zXF5f8_7%SkPvmk;J63*}k{o^RKTOjbnN8fBjz*<6a%<=oDye^2*?eHRd}vwpU|m@G z)FGggW%SWev^WXVaQbX$#eU#hBdStk6CeRsc|I1V51tRUeJqPCl<1u^wzYk9z3M&o zLCD#vHOB$(77PAv>yN||kJZ}?A4Fn2?+>QCVe+^1VChMVn;@f6`q$xax{`ONW9SGz z%lBIsEwjNS3W-3ymi?yFr`j$WFTT>b*2^H7J$9c_`911wOwRhJxg+)~Jx&9(3APkd zJo!D5+XX!Hi3m~19M5@h+<{WrQ%Ms|r^Ml0@OWTO`dOXQd?E)@y|ljJ)CsL0(}%9! zk^C)@9?0Wib~Fp`V^ZFnK$Y9^_mRr6y4Y7(UisNkUOA<<@1!4SD>kfBMO<~&q_IqV zUSPIh&vIVhdBZBozTj)od}3^Azum=eiOtZZcF7=_t9yEZ0;4u{lZo{J%cY#vq z9P}x8Aq3^=U}y(Ch{5JbsP5PyiNx3*M6a9oGn1gN+nTuK7vGoKUDS%2RJYyH0lwD* z?+EZlAp->)_`is#84wfE1)UGsSn-Kd>U0NeTZPxOt#ik36EEWJn*7d8_D+Wu1DNCb zDmy<1Fc;LWxJGc8b|t#I_kO9jK$sO~pGY|PeaF)#ZR0>L29=(+q443pVL_KFCd4$B zLq7#ynge2)p6l~ieB?egSD2aBSKG%rQ9Ch-V3Z5ZPmT?^>nf)yz$*ti5^3UUjzS&aBCgJp$89tgU`{jp|m2X>fSdZv{t} zP#0=mkzyac%Qm#X$d27ClFwjlPCw`M7;}eO7-;7XQDNip4AJj$%O&6pYjx|`fRv|&AATEUDkZsr&Veq|R zMmfgHLgw+^dv#K}_1CC7*Px>QK@Mas5-+B{zv71^-YNegc$(29((&-0%pd=t!50>7 zDGpMIS}~egeo|FTcXPNN9>pe{dAE)~%TAc@anXRUhj-m=`iN$Tf@D~n;0#HhOxT5a_SVh;M6 z65g<(70|pV%pM@%pmikW)7B%7Etz3}J&mGoQC~c0{X%OqdeuU70SebTZ0OqHdK-lH1lEYUudu_Y^X z2|Z_8*oc-AYUYCdq!U!;wqQqYllwoOcyf$1AvH@^X$gsp|IylZ-i5Ye-BOByhLAo6 z_B#hI?*Cr$tY5xI*5fx3=em2Xp^GTA=@*s1%l939N(RIndL-uoH6`*P&b_L?SUanv zXGi_SJU3U~cf}guFcX5%f?x8LBLUH|JDQtUA!l;^{58I}gH9eSj>i0yJ@*>e{9Ld! zI7e+N9ycTA@|;$1uU)bpbMH*TRsP!?xKKA=d^W2|%*6~Qxo{3qkbZQ&kqGXaJf*90 zdqx^ga=u;zJf|!Kes?<##kb8kzFW+C*9n>CmP}3ap(v&;q_WqVetVh-Ja_PGcU1Mk zu5jp{ziuVb52l6x+P%-65u>owJ2kjJ--QU9nj0jxeWI7OYCLVH90`agR%EG<=I)5Q z9=}yD-j85^u7w^I{cY9%b&`F(e0olL=WyLL`CSXK>p@D8b;-Zcn|)M>1iB-QxF%Dw z7>0IQC{w4)}sb6A%XcGl^J zfyc=2M50e6D;So|=Cs~-6q?1P+Lw$TaEf|78;rpk3#+ThwI;$tAi!J`4Fw4V5FI@Dh7-4MPLMG^=C5Y zY~`v~873oQsb^j|XF~IJY<=_0jAN|uN+DqdXkZnatwR@39vK)e>9sAWcAa2NK1TdV z+R;{_XSxgZk*oba8MN`cW-*VucE>5g~T^pwqU;u429cu|UWKZM zV$5+JNHLE(6o=sH9ozu9xjOnmJ7+R=g%LRm-N}7LW2GGLUUc-ZnA= zin(H4;*)iOn+;-)YBkO+~}cB0Ayn4RNT>{V?;c$*5Z+^jk?oixq8&vHCJ8 zqYlrqG7yD=RV9KCe1$hvw#-nsj|ZX|GXqscY|iwD10?C&YnB@!${FSpmEy*{7KO^7 zmVOc?T4PZbEMGaiUQhWbql6k^C=lgnYOGKu;Gh#;M0S<$=dAzM(}PDl}p5en72sg#XBZ;`v(?M>4#H zDKrk{K%P@mI)?y>2A$yo-!7Da+{9I=F5k0mUgk>~<@3SR#XbSxQSjeRGFBqd!HUMd0z$ZD{{s3@&x6u1oj(BrIrWWd0X#+ zG5?-bOUky>U19yBfRV!*S_~#6j?Ya~?=w_0oA)Yb#bCdYo@Yy=+wZt?JAOCxYy>5Eq})#~C3Vg+0`u zHPCR-Rwzz)j27y3u5aPiDzG>O(Yyu4ya*J=)L{l29%VZf@exSs(dsK3`#wmY0mW#o z5Xc*2INRy)xYM^w<@bgIiQ1x-_a@yQc;Da>oWN|t zZ#}baF&F##eS3VqK&qy9xQre$JHD0+F8tm%>U#%M`KGkWRhVT`)d$Stc_d7@h}-{d zq}k6_Y>Ea-G@i~BY8B=mEQxh>f)D(S=x7ga?zv;Xu`dkQ$PhXvKL-95hqg{|^eLmT ztaeveOa0-S*-lIcokT~D=WUXtW^agIuWNQ&s(&teziccP{-Ggo3Z4=V$bC{Y z-E)7+!U?4UF0w(&J6O~c3KNOZ?pps&|MjX8o8>}^{r7BrM$51B`)F=_yV@q25G5;> z*d)9D%+!VDEyypQXzZTUC>S=W-Ul6kTOavO7}lCW3TBR@REs}EIda=%`7xvhNA`aZ zaDeEM9?8CKe%VA`Jr5cD+`u&;hNcexCyOzKO*CC5M)bugyc0hdz@}LfLpJEQ6jl1+ zETp^inPwSv$q*jQythj6mamdNknB9W$DK9DOD7iyy++LBRBKI`_crZVHKN}gqR*}% zV6k4q;l!-&)8@mIG;wRR=-tm?dn75d>EUo+a@k^@=By3IBsd*~d1sYDsIl2r%)ZH_ z+k<&)?+nFJfBz=l+aTrFPGpfcDbmOBqeCdpAn(ewH9)HGKWz7WoMZI9?I~g2_Y6hl zOnoh}lD}H+tR{V|$>NJI-#aQ!7^33O3L*sBKZ1N+RXCJdZK#WhVhKPLrOYHZ_YvRz}D;l5M1v#6mV_-M7NnA>IrA2`;0 znS_K168KHP$Y<8&cWC25ad-SPPnrq66X90Y<51<4bTvxtM~ z!VQAPy1UF)?&L!*<5wSq&}>vVXuGIdG?m{o;w;29!^s#!!1X?wXT$oVog@g4)l&uy zHD|ne#)i>+QD@Kv;j#p+chtIw00hgu%GV!4tEpmD6r|C_3X_-s*BhER zNl4b*s_m5nqpIXG!?zvJi8=VQLgF+w3OgU`lwN%lnbySSb1glRuBOm6uEX--fKBwo z=B>su$RO9X_iIqu45Zx;=lx=lSJA>aoj3Hf>kbK$7QMyil0 z@2A!Cngo{KqukuqGURVR`|?Osq_K7}$SjJ+GJ#a%l@cSfRiK{A_6bD&Mnf1nsdv;R z%4d_DnYM1A2Mdrug*V=+67jBo6z%lYp9D57Yu&Oo6v8XL<4wHRRlR@>6bFVmlB=-W zf_O<^zms#|h^VUD`sptKlrgRI(uynHjx?U*%0-a^qAt8EG1HpMaP>N;n(H0=JzMpv z#_rt(88)3EKni+x zb$%S}-IXzZxL|g8iHMU;~xS=|yEJyD@~3umw4VsceV4EBJ<{*2wm?O>HJz z&P}quZ0h{7p6Bnqv;st6CzB;PSgW&1A!p*Z$w_e?4-M0acbH;b%xBNC@{pjr+k+^H zk23h@e1Y9;sAaDpgCG;@_Zj;Z;}O1DtEgE)o#qN%+*M>Szs0BH>w7r|;t%V&qnG>h zR(@5?8?Z(($|?qLc)|Oxo5BOpyqq*X+ z6r)l3xLB`8hb|jlZ}g)gdau$zeCM41WXgN);+9ZzVmhU^!l%rzHm#EU@vlGH!0Nua zwzHnrw7>$Rt@%d-o8KI+1)KFM>42*{?Fs;s*I0d;Mb08N<~7_N_gEX&8CeS|*|Qo0 z09U^J%LUjuuuHuCnR-~)i7ef$?fEvA-By*da zfrCmYrokYCCc2u9v(!X^iP<4e8VEHMlal%Lr-X+M{Kd`?pT%a)&HdL>N!dcoY2P2b z-=TqwFK^CX$I_skcnQ7aDteF3ze^m|nL(fa;(h~RoBRGZQ7u%#_5FJ%_5CJk2tF84JQp|o_`_T|7nri-csV08U)3B zBPoqb4$_&8A~eJ4#moXuvfz^DrAM}`hRFiFXqM}~G~c2uD0_?&DNq`NV2!4ZFTCn$ zJ-^ZdONsmGlT+|ZX9c%7f;NR5ZWPlLidSvS?u>B-F{dp-)n1J7?3}~t#>F@My@wZh zJ0w=dRrk#x(14NRI(adM6TZa*dc<_x{k(yC4|QPcW$T*d1KRX&r+q6nh-Ej;Y~jtL z_MLY;m-HJ}LoaVlkSiACxs=BG!~3K!;|Is=1oQg8Q$})H8{&=yxH$UzKDVUF23Yhx zo~T=u=u)n*tuxba_V3sbdk)DWJky(KRdFx(uXdCWJQdnGa2$BLBGHrRYVF)v&Xo3j za!OqH^+W3+#Q3{J;*LO62T`+oER3g0#ERwka{EPV(Zz$oSbD)F%X}Ixf&PhGwZ;>Q zCqdW>zP;>M(IC_NRNF$UR@ru3EiIaKPe>sP({ia%K)(kctc7HJJ~gTDzLgbK0NOAg zI4rZK-apP8ufMR5w;q_u&zXvTjcTJ!Z3|l7){zF23oubmjZq1x05bQ1ju9GSnS5&G ztCH>iGxNBEEfoIhCx3;R|3k}JiU(2nK|Kt8u5QQVjOuC*nER&t9iKhWif<47xUnYs z-KiE-kb~Oj!Q#+j1XSWIJ1j*3eD^_0S0z3Ldn3;=pxKWYsug;;d!=0fWpH z8i?43YTvW+U5UAV1}-6jJ8Hn%A>-@PNe{A4{7N4tu9qebieXZ$A9;oKs)?yrIrhJk zh5e~4zBq+p*@h27F~xN4ugrPPrUc0NGNqXz;$=p*_3$?zaGu|=NJmVLtDb~I_p@IJ zj=zm3A{BPt^LIHfZ|YOvnjo6LYc=(>ufbK)qyp7J_T(B6?dLq8(tGPGTiuUc;(o76 zJPDr#ov&LN?bS3!-#%S_X=gBQ-MIK@^C;#^aH&iN+8vo4v6OoYm>wt`2K`0%@_|!B za^-yU5%RJB({M|{nEoqUn@d%#!!bO-XnWqmUR@A!^Aq;fzjcvB)G^cn*JeJ_=tF)< zT$R~e$c17V{iF#bp&@cz(UdVKx}*H)*vEWvN(l>^KpTV|2P0>YJe0`?ljL zv1CTQpOlVfe0xfRkC=+CAr8a4K9b(S>+j9VZQh+-QJEjWDpdb|`Dr@(;#PoZRuyMQ z_UF-A{at6gl1#5lhseK2dW`d^_M-QN+6<*$n>e=@YrocxC7IH0&AF(A3_Iq!2@F$_ zyi^zt_KR{bSqjVM6LES|onwmduse95tRc>DyvA}Dwc4WV$r<7KqfBUiP?1!M*0<6= zx=~3F9g#kC=t&U60GF_tPinkYwiw)O zcIlqiq-tH@d0~l37eDD1cDpQlZYElE@2EyK#oW+$fSYUL_&8o}r12#jF^!(Lzc2rh z6aej?2%k>>FdA-XS|bE+W$`QkQ(Gwb9=S!hF0`ReO@bUU{k?Cjsh}t817LgX%8$pF z`K&h9lvh;z_>OK^aMM7P5|Q~=>ZZsg!%#?gZqpSnBYb08w&{e$+LI7gUG6y5#3E2x-Q_tw1p1jt$=_T?L_enRNRjX+BQJvkcZ4wK1f^wuo!7qgH;fJGgKkh`&f@pS)w!tB4|8jH+V z8Id?pC&=NOOegBOb#ble7=yWhQ1vY<{9UB_zGRJ?T%SeMp$}a<$5eLsvGa0)4$o41 z%^hSL*xkJ_Ky}b$15{ntQK9Mo_1c zNywb%yIEzdyNAM$a60IY_j$s}qnByf)v6(d=NewEw(%#dp@7iHCo3(K2SMbR3=k?8 zrhk47G-sj4{Wgki%N-YS=!tXqVo}{km3h!3JB=#R{0M(s#raEFL zGnh(E8t%HqH5nsC)8tMSZZ2K>ox?~z;Y(~KYr7Otf7gnZ`Pg5}IJ7aNtJzPeM2p|C zMIs%zDjDBVh1QKFZJL(b8qSjwR<;?A-AI(&h)ViELiA(VrFP|6BlVYC&sO|v9rt=z zDU-!g*-HcWYPLDC3#50MZ{3?2D}0d~yj{~aR)u0BUb7L+4|d<6q68fFFEj+`M7-8M zC-FPfzW0#Wa)hR4vexF?9NQ!`3N@++Zfe6UEiS{%YYnOk)GG}Mf_iMvu2~dZ3=y1N z^3-8DLfS*xCLG){NItS2=5sX~712ugDtjG9LAL-488Ljuys*nXhV;M(BLHLya89S= z8PdUDVvEEChGHlVN|;>aycwZ}^Sm@2ZLFa&gVLP5gweP@)#|NK+SLc3TThy*d^6kW z6k7-xQ;rGdaX0Cdpzkv#3q|`v{+qbjf%#1;qlnf-{Dgt)cHVd?ECl|2EF}#{2SjB|G`!ajg}4mh@8& zxGeFah}sh5#)g6`xhk(`#sUX-u+}<;NS3$B@Ku0)#ae~$;7m|UcXhLU=|20$4hxAs zGO-F;`~k;W>8IFzuENHXHx^aPy`n?)0rS+=KAzZQfhGCTqR;UNAzH55Nix%^3obbk ze2HFhD42gxq8gWSEGr%Sa3UVzSdetp%y7l0XJPU-&)o=)EuOL?(`mMcqHN(Nv*b-F z@LCm<2{Z?Cr2j*@LV%!*n=1>TirNr~WSe?BZ~CqyZ8r+0V>(eM5%F|4BD4r~oUf?W zoD$85>)ovzqT{0V=CP>9)XZocb^?oko5M0z+mkDgGCC5M=cw00q=7bZKrtK75BISN z=z^(-T{nju|O zecP-LUGS1rBuP2PU)P{3Ag70f?-j_6B>6DmBWF|4X`O^+aC#s=;eJy>HE$_7qzRO( z#nBi#2@Gd7X?Pgl=Xl3Q)k&#ZGgI?L5z454#I)s&>nxTK8$1%;x(ri;#&G^j5G*oW zwc3(1EqkR!rVpi{n5iS@(q4tvcP6-HON|QdwM{qo7hI-A22yx9EyLsDqrcE$w)td= z7ri&-wFj>(<1Z*ye$+%O2*UN&|3NnAN=UdnnYvcSX6#bK985)KaUoCY`QA9Iwd>39 z&{pSn!0)Vvm^>PY$Ye^Rh0NyZD_Y^2<9Y|K6HHC{(yh|igXH1dTg(fT$T>m6GO%#R z}2B2m>1viflQF%cf0*-YS4M{2TNIl-z$ zO=25XY&~oT%tVRJ8`VdqVsf;&K;QIE^O$2Na)GDGfS@@bXt(2_DSFoM79}olTD5f$ zl@aJ7M=P6{`7|o=_h>|CE6UaKI9;7ZK09!iH#=`v8`q2s7VJ3JFwncA*NPZVIQ2j} za=zp4F~-dcz-hdV^vc)1|LTfuVhp?r<*D*{+I$CBgq+h|U25h@V;Q1waU(U{ET9gtN$V#Y^11ms;r^tzosm>qvbY@^mZ{6u?X6=k6!lEMW_5*I%0&;_ z1jJ-`%AbjTB7H>&9;tdeHs{qo;G_jgvh9RQH>^`=L{k%)mbw&>@iZ0Z8mS{@W*w#W3a0^{>v7N~}d6zv`X}KgZCEzosY2&kk>OMj2_LJ%( z_lR#4{(Jv$LlrWU+^?f22NX}fMa#Qcb!8M*hv1>gb@4l5wBEXy zj?m_Owy3vY1s^`ydyQcTz3h?q&&eis>0oq!{yuhA_2_sr+;lT@hy0!q4L`RPuyluZ z@_KBNqv9vd5z;u_&lymC&?ew)E=whsk4|szQ@g4No6X~%Ja+*6RJ=%d3~WTdE&4J>VaH zB?EpKWCLZj+5W-thqKM?LPZX6^QGaNh`*fegyBm08|YbYk)&el$5;QmCz`)o-!}Pr zQa&}?E2h%FRPn+?n$IF{?p(ezELnPF@|S2odP4E@r)BAdQXxm{e1m**Gjf^ImYQ8zyPRisx=9;j5+e53nD!sK6RxnollKgAYO&>$Lq zey0EW3SPws^CFjl^B&UKQYX>Egx_SO|Hzz`bBR4aRa%&nC*S^~6i)rOVE{ukAs=w? zv0&R5f^_fA1d7O;&|m%W*9w6^Mb;LNvDl}th{*TzMCIn311vG3f=+Nk_L!dEa zj?y1tV^NF42tXvqbJ~HiL~4Zb|A_aj42wd%7P_^JjEdP(g$$Wj^htkk(>4~$2WsJr z5vNqF`mE{|;1ZAjBuS~tPRBHfFWkj`dqN{jmp&NF0>xDP*L85@9B~;Im&CVGNivLQ z7c$fYcxwO^Swekw$bAj|EFy<3Z~tF^f*;MdNaO|>4f63Kw>D5L1AP;I^8ew|k4w9P zK)eLog=B0`@*U=9AE*V3zWisrv*KPR0sv8F4wdnX3Hb4pL1xPz>g4gi=8g99@8Gw* zcrUOpxF(xXIB@(Fix(^+hh=}~v}Lad0hn^Urg(X(!CUdwlR9cNGSKAzHE`@O)iw&u zQne$;rPY$^0uX!T9)mwmmW}Ia0tD0qJXm1H3$GsW#ib~M$OTBd|20+o+fwp564^;t z3ydsjGEt&?|1LHM68;_q5!3l2!K9glF!)HqU|A4WS)2-VADv=51dDM0Q!J3&>$3c= zLqz1VO+~`Cj)?-Wgd!zVw*G&;G7r53fWQWEm_E!7MhnX;AGvxYPpt@6q*1iQfyMin z|IAu>LN8NVqqihQJ6)(+gIvQ5?+6F?lF@>>DQ-Ie`sLoOKj_kZ*JMhgv>2vyq93BL zWZ$vAY~7Tcd*`F-!nFk+RGEbWxo5&1=>CbR=CA9ZEt%5#&Gp|eYiMtBr(d!7{MSSN k;_?Ta|NrI7?m4h{=82<7j!qW2`w0NmHM(7=4SW3m0c2R=VE_OC literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml b/app-nativescript/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..fd826a3 --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app-nativescript/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app-nativescript/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..7353dbd --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app-nativescript/App_Resources/Android/src/main/res/mipmap-hdpi/ic_launcher.png b/app-nativescript/App_Resources/Android/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..69948d224f4d018068dfed3c884394cc3d178524 GIT binary patch literal 3092 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 Q{bLAFSJqbgq5up2AGbo6Bme*a literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/Android/src/main/res/values-v21/colors.xml b/app-nativescript/App_Resources/Android/src/main/res/values-v21/colors.xml new file mode 100644 index 0000000..da5ca2f --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/res/values-v21/colors.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app-nativescript/App_Resources/Android/src/main/res/values-v21/styles.xml b/app-nativescript/App_Resources/Android/src/main/res/values-v21/styles.xml new file mode 100644 index 0000000..04d8a06 --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/res/values-v21/styles.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + diff --git a/app-nativescript/App_Resources/Android/src/main/res/values-v29/styles.xml b/app-nativescript/App_Resources/Android/src/main/res/values-v29/styles.xml new file mode 100644 index 0000000..9a2a79d --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/res/values-v29/styles.xml @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-nativescript/App_Resources/Android/src/main/res/values/colors.xml b/app-nativescript/App_Resources/Android/src/main/res/values/colors.xml new file mode 100644 index 0000000..78c4a51 --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/res/values/colors.xml @@ -0,0 +1,14 @@ + + + + #F5F5F5 + + + #757575 + + + #65ADF1 + + + + diff --git a/app-nativescript/App_Resources/Android/src/main/res/values/ic_launcher_background.xml b/app-nativescript/App_Resources/Android/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..c5d5899 --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/app-nativescript/App_Resources/Android/src/main/res/values/styles.xml b/app-nativescript/App_Resources/Android/src/main/res/values/styles.xml new file mode 100644 index 0000000..4f91b61 --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/res/values/styles.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + diff --git a/app-nativescript/App_Resources/Android/src/main/res/xml/network_security.xml b/app-nativescript/App_Resources/Android/src/main/res/xml/network_security.xml new file mode 100644 index 0000000..f7b522e --- /dev/null +++ b/app-nativescript/App_Resources/Android/src/main/res/xml/network_security.xml @@ -0,0 +1,16 @@ + + + + + + + + + + localhost + 127.0.0.1 + 10.0.2.2 + + + + diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..1a8b0e6 --- /dev/null +++ b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "icon-20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "icon-20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "icon-29.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "icon-29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "icon-29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "icon-40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "icon-40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "icon-60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "icon-60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "icon-20.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "icon-20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "icon-29.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "icon-29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "icon-40.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "icon-40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "icon-76.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "icon-76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "icon-83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "icon-1024.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..b46c8bb2f70abf9fa2d5f91cb6987dfda64ba1fe GIT binary patch literal 17868 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 SSurqkh|+ZxxolZu-~R*5H2Tf} literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20.png new file mode 100644 index 0000000000000000000000000000000000000000..d73288a7f480c3fcee88b28d2de9f88fb4564ff1 GIT binary patch literal 745 zcmV8 zGcb2;001bFV_;zN$VtvEW@2Dq$jvJ$3UYT+h=`0*V86-0#=yhC$H2)To0wc&;2Z1~ z0#w4_=kMprfC0W;V_*c)mvupAVanqLTq&u=$w2xK5LXldEoWe0ECI4b(jn{)5IYIN zo&#bRg#jkxf@y<8U!rK>Z>>I;A8N9304L1OVfl zRDt`MN!kDa010qNS#tmYH(dY#H(dc4fJR*a00B`+L_t(Ijm?w2P69y?$N#%`;qJhL z5I+)4G%B^#MH}rbtat)m!PbZI0qE>#jTMa=s7z=iBpNh^BjmVGyt`cs0dFry3{*_D zJM;g|?9A>G&N)^!x-z*|u>Z|F{m``Iq|@?Pryp7#ONr&=X6Ufnd)o=vhDxum^rALR z-TjL09$iXsQ!SP9fAxgQ11oj{2EYkez3E0`CC2eN5>B+R=l5aMXnBjG8E`zia+w0a zb9eIeI>{8I;UMI#-c)*dqUjn1&}e&aW;EBddy^pK88GJ{v$d|$+Ic~uh#BflckHvI zECbeZ#5hvs+k-8+YUBaf0eg7yf1Sp$qUA^i3_udccUDnOD++-5*d-ze{&`_lBfq~X zFNzBAZdsyYZkeKXQP5Qips3NEl9Y^+)R(k8_A!e0%2M(rnRYxFv%_sU*>DEDl&#N~ bT*`g`2AY0HSk3hD00000NkvXXu0mjf%;QJU literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d24cdc75a820965d03d4550d5fa343e051a378 GIT binary patch literal 995 zcmV<9104K`P)8 zGcb2;001bFV_;zN$VtvEW@2Dq$jvJ$3UYT+h=`0*V86-0#=yhC$H2)To0wc&;2Z1~ z0#w4_=kMprfC0W;V_*c)mvupAVanqLTq&u=$w2xK5LXldEoWe0ECI4b(jn{)5IYIN zo&#bRg#jkxf@y<8U!rK>Z>>I;A8N9304L1OVfl zRDt`MN!kDa010qNS#tmYZn^*fZn^>1-mw<|00K)%L_t(oh3%F-Z__{+#~+{H>NrV( z24x5&qV7NkRMgNgv~*?(3mX~wDflRCY!&$cr2}GM2^}CMQp6I8wlsw@kQ70j_}xB+ zNL8Hr&Z*O?68M>{yZ>`P-`)S7I|gG6R}tt+s4+MO$KZ<$j^6!S^FAM0ot_5(0tb(m zB#vcB;#$iXDsRoP_X~o+5tRVIP%2kX_g=hJRoy#nS-vAYeJGR0d-+a1_~{J4Ws!Ma zo~5v9OI_bLN2vhN_-cLlVp390V_@QD+oA|)U{w!TjO~VY*l{LdAOCVAf&;_DP~92) z(Y$aeHKMq>Z+NeE2F`Toh{x&siL?0}KgYWVW_@oWqn#V9TfQl!CB*vWuNzvs zOEj8p(^iBCHf-GbVUM>A}0*I<^fmI~aV}aW-px+Z|6^QN+@M zING8bUX@@p+r^u;KI!ZQgIy0u1+BcC$Y*?o_NeP@H?%-8#^4gn9}HHq+{Sv64=T$n zg379#l6;9D_sshKxY2l)*;r31+2HGdxW^*TEav#Yu9So-tMZu9wmxZH)i=Av953>b zYPBQ~)AAXve8y;FE~BJ}fay_E#1%yh*IhUm0LsP0?YWQ}{Zhajg36klnu#*Vv`?S3 zgr2R*h_;*O2j_0ElMGQfW3*vhlWBv~`j!epaO6&sV;d Rs09E3002ovPDHLkV1h0F!n^8 zGcb2;001bFV_;zN$VtvEW@2Dq$jvJ$3UYT+h=`0*V86-0#=yhC$H2)To0wc&;2Z1~ z0#w4_=kMprfC0W;V_*c)mvupAVanqLTq&u=$w2xK5LXldEoWe0ECI4b(jn{)5IYIN zo&#bRg#jkxf@y<8U!rK>Z>>I;A8N9304L1OVfl zRDt`MN!kDa010qNS#tmYrWgPKrWgT!b;*qY00UAePZLob$KNbnrlo}l z2q++%#7Hj|#F%1YG(=-S&(gnu1AmPt&RWhIOX2~%NE0Qt9F!no6$OH9T07HDXL;Ug z1M@n+S7t^@=5w2+zxj0LedjI1V2sgugZ#P$`U&DE}P{i?X)+Q(M|DPCN+vz}^(iWA;=2v@t?R$7m{*`z7h{QYSdd z>2DVc@bf98SN9asAyLLJ=5nf5{d{8m2eJ5RD5SIbN>1BH+RKkp)z+1ZpTNquM`ok= zVMVsEAPI|KdC82lxo^c-RS z^8Bh@p|o-Ak<3VjozdBWO6wREipCH8`el#deoaSHb7D3R3T2^)b#QxvO79+P3L#sM zZUj0SjRzjT3wmNsQ~}zGhIfxO^YaiwKxtJ+(+d*mD956wv0zv*F7@qDO{R&zEoXW` zg8V&XDy?XEc}JO?$yV+%LVh+r6yylS=GWx;HSR}5uGBR@VI zinMu62iBlA&2!91lz11*8Honk8wjDy>xq=8k+nyo0iFZR1E6n@mO9SMn^)vm6psZ% zgivlBsL70RD7`$>T*m=rpwbM31TW||gakGoBZl(Jj`3h$@G=Z|mS{_l*xta8_Jf*J zb=cL74|e-*c0;G=wAeWI80`Vv+l;Mv8(`kqq0vN7>6Oqv0l z=KYF1`#E3QY^vq@TD{Ru^O0RSbkhF`=kiN{EA14nv{Sg!PT@*Bg)8k8uC!D90fMq7 UzqfVJMgRZ+07*qoM6N<$g89ozYybcN literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png new file mode 100644 index 0000000000000000000000000000000000000000..72a164103c514a7c5abac63b1bcdf86103e6de04 GIT binary patch literal 851 zcmV-Z1FZasP)8 zGcb2;001bFV_;zN$VtvEW@2Dq$jvJ$3UYT+h=`0*V86-0#=yhC$H2)To0wc&;2Z1~ z0#w4_=kMprfC0W;V_*c)mvupAVanqLTq&u=$w2xK5LXldEoWe0ECI4b(jn{)5IYIN zo&#bRg#jkxf@y<8U!rK>Z>>I;A8N9304L1OVfl zRDt`MN!kDa010qNS#tmYH(dY#H(dc4fJR*a00Fy6L_t(YiS3oWPr^_T!0(mHD^MiC zuR$HabRcm8O(2*MXH9f9I{Ck$i-QijlVC9MgGm`kgaHO)M3ho^Q2HD|Qs{vY!eGKp z*SqVl*ZX*naL!>0B1{81<4&C`4sw(=Lu1@7!lK(|^_Enl-sG}G<{fxu2$us~+*Q;0 z1^@^IPIuk@<^HgnwDwYL5&{v0?gyP#2=cX0)o4Qjz~FFxtClqbO^S0!Wm%<$co8ns zdp4!Ycs!{#Tlo5L4k|-jBlWFVYF*xIW9{Xr^N`Lr?y_tmZp-w`R3u&f`bo>Z>%-%R zai0s#uI^tELw?%U4Gw2X^~=&jbNoPVD$5d?diRk49E2Qe3!OQuG9FJ>_1**%nYy(^ z{oIH`V*$x*5pCo+>XM~SK?)`P>Y=BHv49j-=pS4F*j%^wSv*eRC@KrTrGCscUf=W~ z@i^Cp&4_PF+%xT!dB)NBG0vT^LW4deHB`pn5`e=k=c*SuhDPGLBq9*282~`Ek&_+S zMSI+m9f?M`Zb=9$lng-k^>BNGdYlM^47!iMYld3q(j4*1$ZH=JgX!Ew2?`y?olySU d{Wjya1TXuEP)8 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 O00008 zGcb2;001bFV_;zN$VtvEW@2Dq$jvJ$3UYT+h=`0*V86-0#=yhC$H2)To0wc&;2Z1~ z0#w4_=kMprfC0W;V_*c)mvupAVanqLTq&u=$w2xK5LXldEoWe0ECI4b(jn{)5IYIN zo&#bRg#jkxf@y<8U!rK>Z>>I;A8N9304L1OVfl zRDt`MN!kDa010qNS#tmYH(dY#H(dc4fJR*a00K)%L_t(oh3%F-Z__{+#~+{H>NrV( z24x5&qV7NkRMgNgv~*?(3mX~wDflRCY!&$cr2}GM2^}CMQp6I8wlsw@kQ70j_}xB+ zNL8Hr&Z*O?68M>{yZ>`P-`)S7I|gG6R}tt+s4+MO$KZ<$j^6!S^FAM0ot_5(0tb(m zB#vcB;#$iXDsRoP_X~o+5tRVIP%2kX_g=hJRoy#nS-vAYeJGR0d-+a1_~{J4Ws!Ma zo~5v9OI_bLN2vhN_-cLlVp390V_@QD+oA|)U{w!TjO~VY*l{LdAOCVAf&;_DP~92) z(Y$aeHKMq>Z+NeE2F`Toh{x&siL?0}KgYWVW_@oWqn#V9TfQl!CB*vWuNzvs zOEj8p(^iBCHf-GbVUM>A}0*I<^fmI~aV}aW-px+Z|6^QN+@M zING8bUX@@p+r^u;KI!ZQgIy0u1+BcC$Y*?o_NeP@H?%-8#^4gn9}HHq+{Sv64=T$n zg379#l6;9D_sshKxY2l)*;r31+2HGdxW^*TEav#Yu9So-tMZu9wmxZH)i=Av953>b zYPBQ~)AAXve8y;FE~BJ}fay_E#1%yh*IhUm0LsP0?YWQ}{Zhajg36klnu#*Vv`?S3 zgr2R*h_;*O2j_0ElMGQfW3*vhlWBv~`j!epaO6&sV;d Rs09E3002ovPDHLkV1i*Fz*GPL literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..88824fa7ca87f8cd64217bd0bccb6eaa8e197759 GIT binary patch literal 1504 zcmV<61t0o}P)8 zGcb2;001bFV_;zN$VtvEW@2Dq$jvJ$3UYT+h=`0*V86-0#=yhC$H2)To0wc&;2Z1~ z0#w4_=kMprfC0W;V_*c)mvupAVanqLTq&u=$w2xK5LXldEoWe0ECI4b(jn{)5IYIN zo&#bRg#jkxf@y<8U!rK>Z>>I;A8N9304L1OVfl zRDt`MN!kDa010qNS#tmYZn^*fZn^>1-mw<|00c-$L_t(|ob8*bO4|j> zp)>`O*s&YO!wCsYoAJDMY%qR~kv%g{;{Imd@suNkpzjGB_5gw=7LGcxaMX!~qfRUw zbzR2(0wA~&#GIs+%VHja_e#BuiGWtL#uG%`?Kb~XJ(xXUcaqfnbLjVBAi>Y?)+zfZ-)!t zeoF6kdSUhMOua7!M*T0kK0x7O#ThE=absGaU$S7mc<=p7fWoDU+eg(VXmq0dUI&iP z`v4pSF%LH)z`z8w@K{`_U47_(fB^_@rInvwz3(Ax{36h$<+Z#%|HkJ4VB+V>x{xi~wttFh{H4 zY=TB7H1G-$3{dzTEol#=#b$-lc-gQ=#x)D1OdY^_0EHJ@STo7xNzJIbnpXODHXY~|sh5rA z^%u)*znHN~E>CK@$vnF;2p3BBSs{oUlxZ#YNl$gg4N$I472V6vvgZ?gYf0};RKRNwnfu0cq-6Fsif#>0Et&ko3 zW4+3bHdg^gopL%r13+Nm7SJmN9;0kVP0|9aSh1;lBj9%$K^G568D}%}0BcpR#?EKQC*U2u)bPC_4z5NIeqf34oN0PrF!w z`Af)09)4&Oj`ao_VBw$f*q0Xf?g}oz!WZTcI?*S01QlT63nPRCp37#`gyj9m3LT&@ zb$Q52vw}}&5-v}xa0s;|f?ZmwBIo5)(wcO(yA81R6fX+E#{oX*gX|R|mHpjf@6IOb zWqcqlPCl-!6v2fIhg`-X^9Cc#hsPh5po_gajvPsea0000 ziJ7ittaqB2kPza^_LY69>-+2ef6x8ndEWP&=e*}V=RMDPpHxSCn`1Bp3;=**n2V^( zM>YCy@N*wA75Xe00Juy8t*jiKZL|$_wW4kSfJ%-p2>$5B3~BiLfMD;SnkpN1&} zaT)Ajc6N8Z@9gPh%0DT@4mk0J|fpUPhSwiDu}f3_wJkJ#j93#G0pdc zMO-AfGzcK5&eeqeaB^8l#7KZq!s8>A3^C*xLlUpQi{Re}$i)zEFM!f-3nTh#nF7@g znkw9s4q!}(nQCZ$K3CwPOwd{WkQ5ry9f8bSV90baMY^Ylz+R9E4uGAGL)rc2CIHNf zzqX!CqE`cpR180*v0YG5O$jLGB#T_ZL+5_`f}i?J@$NY2xs)7cA&Dd+=iR-a86u;d zwpmc&Ok@<$4LhDTspy)Nqr58RQu+ zVe^rIGvE_Fg@mWXo1wIo)v*cM2I-@oWXN#QBSXUC-K*PM6T>CNYXgs__^SfB?-`e| zc@Mm%%T(#;D+%dU5UEQ7nvccsdZ%9pU_)4W|EplBbjbCFtHVrlNHZus&{O03=LOFA z^d*@eVrM{aw+`dH$@OR14t1FqTSRGrS<5*POWryw=MA~6bWTrrZ4G6UU7uCk#_*ZF zDV&PXo3yK6LYn5`N0dwR0eOVPFjZ~8hJRe%AY#K|E|#yk;gujzCD5KYHosh3iXr31 zcfN5pUhdxsle55X9PWPDq~Ldlhb0HoTXjxPQcn1=lSl0wXd>X-7FJlp>1JmQew9Sw7L+)M4nXfIO9C0<_)?)J@e zN8d~vaM2Jq>bk`x$_lq#tg;i2;nNj@mKT3*C6X5-h8`-lfLE8J)ZsUdcSvh`N}GC) z#)s&^DYKVZfR?F;Op%I#C-3>sY6#$FMlCzuP&xx1+7j?S=?iH9D;;dRJsZRVvNa6e z`usC_0?pIOXo}lB|C8QJ3;^IyRE11HBlwueF~BUdI?Gka+8>2f!XtX~!r3FmTBi`B zi4?PPigbp0DwMc;`fy2BDKSU;Xzkt$17qe@ttMpzuxCB;2;H5KgJG#dPvw?z$>-|F zLYojqHK}CHygHM3vk#`f@z^$NdHBoYUP?P?sdKvdR4Q^~%gM{?T-tXdc5=?W!bI(S z7Ur`%{p1 z;+KZ&y(i-lHhVCSM7Iq*)~aM~)Ve}=LLy13>Zi4X*$^o6SRI@y>r#!;AmAyjEDqi! zv`nCK;x7#Lds{H=8bQ~NsP_KM7f<)=WzQdsyXbSy2P>dK?o%{c5yyk~QGD zwR;8n9Ie}hpH@ooeei85toR?5_lB{qW$t1#c+1_r0zF2|Tuxu9e-9OzkmBkt(oyObCMiO!ckwL6ZgOe~^+GH`zU299wPy5&WC7>n1?`Mj8<9^BQ z_=9NNeVh4Qn?K`+^4}qu-_oO#dQOFLLg)L|yN}IzWDiN3@QgW3!LU?5v{&-F(~~fR z`_F@s6YxI`R(HP^JE|+r#JqpFmv%ox8zr-&$j+6Pm?76R5i-gbJx zE7^6btbAlhk<9XuRoNQ9+FwgaRCr&0rEVGZT&&KoI{IPIq5jFz=o5imixSJYJ+b}T zId)H>fOQI*$K0d5wS|-k`gyzp*5lNW^j>PfjxwC5Uf8;o<05o4W%_Ko{TjJ=MIHex z`P>xlzM+5s#)V@%meh*seXdZm0=S;mj(8y{v1)jEU5KdY%Ev)FH?bp^a_3WV=)|2? z7h-n6eu1QpcSp3QXrp*Ws7}`{eHP#-m+Nq@oX^+T($Co*72!ExnsJHS(39D#-QJ|9M2s*xJ+JEX9Z@sKhOreJgF8(7;~324O44Ho3D0`5anyuic2l zOx4ZrUcYA<;0GZ-V=~s2lv}y;E!7pz;rea9N+wxnNQp=dx)Jv41U-fRPrv=YF%i$x XBXL@GcuU&uDA526+8$MJ2`2mpoxasn literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d7b077f1b6a77b21c294a5b696ea576188e761d5 GIT binary patch literal 2121 zcmb_dc{J3G8vc!CFrVx)W{4z9hHQoG%#3EpQ1e+w#*(p=tP#bGt+9m=m8EQD2}5X- znCY{O^=e{5LWnEdSN5f@@2~s+J@=32dEaxM^Pcyd_dMr)lI?7*jzM4$0053*E+Q`< z)yRLq&vnGj;Ae>d05b8jw6t@u(lXG|jJN>+Dp_7c;*TE8pt_GIk=Qe!rV0s(xJ;#{ zT_(1(I=VXEcXW5KU z^HBu^Gcpt8Wt&R8s;9If)`y2;jNjUc^s*#RL~T_*_yJE1yCUk@M(U& z3T79|6~$#_di;2R*#bOe{}E>V=%4~Y7o9@^An?sU0F8d3NdW+uhC!O+BMVlZOyKZV zGTpHY4Tx6K**AS9%qlW9U8#bf>(*`G$Dfo&9-bd5OTk@wyitBg8aLS}$0-PpjyhE} zVc2{W;0*DJu0q^Xa$qohWp!+VzCrn@D;YFY@W_C)c<1W&*2GXz;adNrDgFvSu6sr$ zY~BO+=@L~2>PlQ{1&`Dv0gcCE1l`lGeX&8qIsdC*p>zm(18O(b7}W4j^>b6d{&|5j zK7C2%hu9gShjY78&gA;DOk7R+#U@d@U&eA4j|FdyrNf3?Mk=Q}w7QD6$*#?)Ze@DT z1_~#`bSG_Um*6Hjgc0T9TtFTsG1RQKU&TKzuOGI7n~Uaata~L0R0y=ikIgSv7h|aS z@ttp+jhFkkL*&e{8;83eHfe<2p&`kE)E4d2le80_?1bXA`Jysii!~fF45L?gPVNcCw!swW2FPEw`cu_flPJ% zx1N6`PN29um<=(T=YKMK$i4vdiK>t>(GWT&atts{ugq`~Li-@$N(5L>PAGe%Q1cXQ zG@fQ!N|R1QB!kJjrw^B8mEyCsj@ItI&^KaT)of6P0ek3?N2sp2EX*(hd@8#HB%iGp z4Q_xLRwYw4a%zlYO+T3YCSY69^3a#Z-IaDwQs;DXo15VqTlVgj=Tg2KvJyyDq}!G^s3|w35_tY_xJfl zFkxw^)?+djX0-=#jd$K4U@eR0M$u)$6A}qh6+h89(?O!lV+3)kq*FCYokXCu408yM z!6gFa6Mti{-&+Id*GM`xWVQEazPPzuFM0l8+)9>_O8;@PE?0x zSMTNNaWrq`e_AOf^g_3#u;PD|-y6a@mAHt_5G;20@^qO|bKR{=tMv)hs=C>F?T6}< zuO~uZbp3QmR~D-ew;yjS8Hvjpfcp=3=%0k(Qzi=`E}C0{-dexrF9A)y-anIE>i3Io z#U4cB?_14hTiuNv%zX!EeM^l@=sp#~37+p=?>aW;nmH(K%sqyif?%8ZQ0|HA_D@3e z?>`TKPeAYLukL;=v_mM)M7@8wmvTQ|g|V|kA0@TrZJOfml?_b^%rpo_l4K1f{Gh3MP+qdm$}d@ntwH|6aCE8m_`!9{(Ri&nOVuCaZj$us17x<| ziOxIyT)%tQos0*)Oc_{O>lJfoP&jwgUgN)wu+*7D$oFX}H`#~C8oq)p^n9&@Df16b z2)b_5wekUfEA!KXZ@fFGJ_Y=&#;YdA#20Ev?f}AHZ_QaB%MH*ny<@w6Xd_pxqOTp0 zwru5omcB&R-2bSU!k2W*Nm2BTI95azItf^Z^WF7~;5vQOdi}Xp{a`Al@AXpkXb&mDqH7#cI4OBOm%7>YXf(JmJ^5D6x#+6Wgzz zV|V8Zpp#JCX0D|zO_X$^x9cllJw^@A=xO%dQHFBY3Zq*%jzULMCeNnZu2BnDpWG7CUk&S8g*N6~EKs zNY3=#&y&>lXphtotrt%V*6zHiHw@UxW#i73@_89qcstl4!`%8UJ!2d1TzLF;AY6s< zx(-`A#u}7VPYr5*&q{s?tTTf97%Gr|jeI4k3WA>cJP)fHTYDOip%@kcmbgimyr@uM z&9jwBFQ6=LtRl0w8?zbycP1kp#_Vrtu0pJf-%1Qdh?KE76`?2_&%$zk_qTEDG{jwXVQL+pqtSD>9_wkCStj} XB~Hr@ZAsf4B^rQ1*&=H#h;jb`p3Bx- literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2f872dd4e6b82061ed2194970feba051eae12d89 GIT binary patch literal 3018 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 literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb23a706ad105fce9a3b47c9743dfd95d2d9bdd GIT binary patch literal 1482 zcmV;*1vUDKP)8 zGcb2;001bFV_;zN$VtvEW@2Dq$jvJ$3UYT+h=`0*V86-0#=yhC$H2)To0wc&;2Z1~ z0#w4_=kMprfC0W;V_*c)mvupAVanqLTq&u=$w2xK5LXldEoWe0ECI4b(jn{)5IYIN zo&#bRg#jkxf@y<8U!rK>Z>>I;A8N9304L1OVfl zRDt`MN!kDa010qNS#tmYH(dY#H(dc4fJR*a00c5gL_t(|ob8*-Z`4K{$7k&I+WSmN z69NgSyc)=cfJAtN$10=>;s#PnfkQa;AL>2Fa3};MBoG{crPT_O2oXWcCJGPHR7s?~ z1le8h+Uv*kRwZfhcz$cf$nocBjc5FoXTJ0M{l>RiVO;&$e<94 z3<{yhpb&}-3ZclLuqi}F>hGeWld^8FzS5Ku1q|tmAhcMtR$qxlaZ0K8O~6H(HX3=O zP0kwAOXj-jLSIHXcPIwvlMwXl{o=Zd>6mbIPqeQyCPKvm?;{A^d9FTqS^ax)y+VZ0 zlL@UbV*sD%e-x{BuAmL(N|sG;ydgl5Pp7o;4>gAd!=viL+KE>u|16omPiU}vfg+#1 z(VZLAOfr-&Yc(&cWG_BY2K^imkrkbMQt4A?xn$oMRXr>Qep2m<4(SdeQZw9+G&N^D zeq99&QUB1Z`QrOzuAohLXF@P|1OuL%5Gy=H>L$6KS79^F6F7x+OC@XAQxjr>U+g+L zYvc;Rjjm3(2I!ApS0`tEFd^Pq$jwo8sl?lac#G5xGL%p*MtCq-E1n5GjHO z&Lm?|r|JMf=*Eb;Tw;4OBX4y;R>>yPveCWqikld%F)3U@tj_rr z>)v>URi|5#)f#yb~D5ou?H+7K+xbQI*Mq#@^|JxzelYTGe&3>QXarx&CKZ|q{WhX5 zm+4Ebr9os>hyd;?3g}e3%ydg*Qn-3D;arH-YUFypT%(!L>HRXGFbUZw+Zvgxwe8y_ zY9)4l#kxJFI=5-v0x1+jM8;)EdAv8H9CTqqUt(x}u`5RC(h0Wp>=j%C^k@VRoJlGY z=$xbucxNHsri3dr6Y?A%Qmy^1QhyiZI0%eC=aXkMO6Lw&TfZmxBNAhDsVA{D&B=s( zJ8709cp#gQxtNfj$LUQe@k&pE!$3ZNGjO1dhY3MMdb`o}Wt5IKS0*H2l;9TeC=zZ= zdNu_xMwfdMO)0twZEX-Gkz-iby@xFkaYmN#wQNF;Pz3aLD6sy4B6~ZOUCkbR9`hf~ zY4PWiP9~H+pd9{=65oFgphy9uU;0x0U9pC^XY)4GCjHR4{#^+e?Q4-P9*v(r4EHBo z{~tbO&91DiDK)1-O9vrB(Bj&Yl9VDimp0wtfyl3)P4R7AC^9I7B7;IGGAM*1gF+}W kD1;(|LMSpQYzmS80#`U~)%i12?EnA(07*qoM6N<$g20KIp8x;= literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cb04c367d06f849ae97d73d9802400253a353181 GIT binary patch literal 2633 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 literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json b/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json new file mode 100644 index 0000000..444d715 --- /dev/null +++ b/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchScreen-Center.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchScreen-Center@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchScreen-Center@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png new file mode 100644 index 0000000000000000000000000000000000000000..280c30e083fda186bcc1b24d9b226a9c47bfc7e3 GIT binary patch literal 6808 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 literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f984b9e44d67e72483d624e50eacc6ce2b7d3a94 GIT binary patch literal 13502 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 literal 0 HcmV?d00001 diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png b/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..95d86f3f768054dc8c83bdf1e2e095d9213c8e8d GIT binary patch literal 20794 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 + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0.0 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIRequiresFullScreen + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIApplicationSceneManifest + + UIApplicationPreferredDefaultSceneSessionRole + UIWindowSceneSessionRoleApplication + UIApplicationSupportsMultipleScenes + + + NSAppTransportSecurity + + NSAllowsLocalNetworking + + + + diff --git a/app-nativescript/App_Resources/iOS/LaunchScreen.storyboard b/app-nativescript/App_Resources/iOS/LaunchScreen.storyboard new file mode 100644 index 0000000..c4e5a3f --- /dev/null +++ b/app-nativescript/App_Resources/iOS/LaunchScreen.storyboard @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-nativescript/App_Resources/iOS/build.xcconfig b/app-nativescript/App_Resources/iOS/build.xcconfig new file mode 100644 index 0000000..80bc992 --- /dev/null +++ b/app-nativescript/App_Resources/iOS/build.xcconfig @@ -0,0 +1,7 @@ +// You can add custom settings here +// for example you can uncomment the following line to force distribution code signing +// CODE_SIGN_IDENTITY = iPhone Distribution +// To build for device with XCode you need to specify your development team. +// DEVELOPMENT_TEAM = YOUR_TEAM_ID; +ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; +IPHONEOS_DEPLOYMENT_TARGET = 16.0; diff --git a/app-nativescript/nativescript.config.ts b/app-nativescript/nativescript.config.ts new file mode 100644 index 0000000..fdef80c --- /dev/null +++ b/app-nativescript/nativescript.config.ts @@ -0,0 +1,11 @@ +import { NativeScriptConfig } from '@nativescript/core'; + +export default { + id: 'org.nativescript.appnativescript', + appPath: 'src', + appResourcesPath: 'App_Resources', + android: { + v8Flags: '--expose_gc', + markingMode: 'none', + }, +} as NativeScriptConfig; diff --git a/app-nativescript/package-lock.json b/app-nativescript/package-lock.json new file mode 100644 index 0000000..212c42a --- /dev/null +++ b/app-nativescript/package-lock.json @@ -0,0 +1,14083 @@ +{ + "name": "app-nativescript", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "app-nativescript", + "version": "1.0.0", + "dependencies": { + "@angular/animations": "~22.0.0", + "@angular/common": "~22.0.0", + "@angular/compiler": "~22.0.0", + "@angular/core": "~22.0.0", + "@angular/forms": "~22.0.0", + "@angular/platform-browser": "~22.0.0", + "@angular/platform-browser-dynamic": "~22.0.0", + "@angular/router": "~22.0.0", + "@nativescript/angular": "~22.0.0", + "@nativescript/core": "~9.1.0", + "@santoshyadavdev/ng-devtools": "file:../packages/ng-devtools", + "@valor/nativescript-websockets": "^2.0.3", + "rxjs": "~7.8.0", + "zone.js": "~0.16.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~22.0.0", + "@angular/compiler-cli": "~22.0.0", + "@nativescript/ios": "9.1.0", + "@nativescript/tailwind": "^2.1.0", + "@nativescript/types": "~9.0.0", + "@nativescript/webpack": "~5.0.25", + "@ngtools/webpack": "~22.0.0", + "tailwindcss": "~3.4.0", + "typescript": "~6.0.0" + } + }, + "../packages/ng-devtools": { + "name": "@santoshyadavdev/ng-devtools", + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "@valibot/to-json-schema": "^1.8.0", + "cac": "^7.0.0", + "devframe": "^1.0.0", + "valibot": "^1.5.0" + }, + "bin": { + "ng-devtools": "bin.mjs" + }, + "peerDependencies": { + "@devframes/agentic": "^1.0.0", + "@nativescript/core": ">=8.0.0" + }, + "peerDependenciesMeta": { + "@devframes/agentic": { + "optional": true + }, + "@nativescript/core": { + "optional": true + } + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.3.0.tgz", + "integrity": "sha512-U4+70Pc5ZS9osnCBCE5Jha/ciHM+Yp+CNMNC/7HvYbNRk1Ldd+f7qO65W5qfhu/TCv+/ozljlXXe9Nj8419DMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.2200.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2200.9.tgz", + "integrity": "sha512-kwiyEFfJsnJ4o7ondW8KswwJbp+qri5yWLS0wMMG+uBwOolZfrQReorqsQNCALhwmojhDNZc0wEWXEHEhKnotw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "22.0.9", + "rxjs": "7.8.2" + }, + "bin": { + "architect": "bin/cli.js" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular": { + "version": "22.0.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-22.0.9.tgz", + "integrity": "sha512-WwWi/lS3h3XYoUBuTrxhqRU5KItWFdEcXYcUfhGYBUTcLXh3LAMs4jh22W3ugFFT5EO02kmxk7ww5L/Si8g4uw==", + "deprecated": "Angular's Webpack support is deprecated. Use the esbuild and Vite-based \"@angular/build\" package instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.2200.9", + "@angular-devkit/build-webpack": "0.2200.9", + "@angular-devkit/core": "22.0.9", + "@angular/build": "22.0.9", + "@babel/core": "7.29.7", + "@babel/generator": "7.29.7", + "@babel/helper-annotate-as-pure": "7.29.7", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-transform-async-generator-functions": "7.29.7", + "@babel/plugin-transform-async-to-generator": "7.29.7", + "@babel/plugin-transform-runtime": "7.29.7", + "@babel/preset-env": "7.29.7", + "@babel/runtime": "7.29.7", + "@discoveryjs/json-ext": "1.1.0", + "@ngtools/webpack": "22.0.9", + "ansi-colors": "4.1.3", + "autoprefixer": "10.5.0", + "babel-loader": "10.1.1", + "browserslist": "^4.26.0", + "copy-webpack-plugin": "14.0.0", + "css-loader": "7.1.4", + "esbuild-wasm": "0.28.1", + "http-proxy-middleware": "3.0.7", + "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", + "karma-source-map-support": "1.4.0", + "less": "4.6.4", + "less-loader": "12.3.2", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.3.1", + "mini-css-extract-plugin": "2.10.2", + "open": "11.0.0", + "ora": "9.4.0", + "picomatch": "4.0.4", + "piscina": "5.2.0", + "postcss": "8.5.13", + "postcss-loader": "8.2.1", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.2", + "sass": "1.99.0", + "sass-loader": "16.0.7", + "semver": "7.7.4", + "source-map-loader": "5.0.0", + "source-map-support": "0.5.21", + "terser": "5.46.2", + "tinyglobby": "0.2.16", + "tslib": "2.8.1", + "webpack": "5.106.2", + "webpack-dev-middleware": "8.0.3", + "webpack-dev-server": "5.2.3", + "webpack-merge": "6.0.1", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.28.1" + }, + "peerDependencies": { + "@angular/compiler-cli": "^22.0.0", + "@angular/core": "^22.0.0", + "@angular/localize": "^22.0.0", + "@angular/platform-browser": "^22.0.0", + "@angular/platform-server": "^22.0.0", + "@angular/service-worker": "^22.0.0", + "@angular/ssr": "^22.0.9", + "browser-sync": "^3.0.2", + "karma": "^6.3.0", + "ng-packagr": "^22.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "typescript": ">=6.0 <6.1" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, + "@angular/localize": { + "optional": true + }, + "@angular/platform-browser": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@angular/ssr": { + "optional": true + }, + "browser-sync": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@angular/build": { + "version": "22.0.9", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-22.0.9.tgz", + "integrity": "sha512-j5eYaMTGFXdPVSX0xtWRRWHE2Ezz2CFiBPsAKrWHitvzccv95nURQYk5jbB+FHCYuN60zJNoTZMIlT7rXYAvag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.2200.9", + "@babel/core": "7.29.7", + "@babel/helper-annotate-as-pure": "7.29.7", + "@babel/helper-split-export-declaration": "7.24.7", + "@inquirer/confirm": "6.0.12", + "@vitejs/plugin-basic-ssl": "2.3.0", + "beasties": "0.4.2", + "browserslist": "^4.26.0", + "esbuild": "0.28.1", + "https-proxy-agent": "9.0.0", + "jsonc-parser": "3.3.1", + "listr2": "10.2.1", + "magic-string": "0.30.21", + "mrmime": "2.0.1", + "parse5-html-rewriting-stream": "8.0.1", + "picomatch": "4.0.4", + "piscina": "5.2.0", + "rollup": "4.60.2", + "sass": "1.99.0", + "semver": "7.7.4", + "source-map-support": "0.5.21", + "tinyglobby": "0.2.16", + "vite": "7.3.6", + "watchpack": "2.5.1" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "lmdb": "3.5.4" + }, + "peerDependencies": { + "@angular/compiler": "^22.0.0", + "@angular/compiler-cli": "^22.0.0", + "@angular/core": "^22.0.0", + "@angular/localize": "^22.0.0", + "@angular/platform-browser": "^22.0.0", + "@angular/platform-server": "^22.0.0", + "@angular/service-worker": "^22.0.0", + "@angular/ssr": "^22.0.9", + "istanbul-lib-instrument": "^6.0.0", + "karma": "^6.4.0", + "less": "^4.2.0", + "ng-packagr": "^22.0.0", + "postcss": "^8.4.0", + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "tslib": "^2.3.0", + "typescript": ">=6.0 <6.1", + "vitest": "^4.0.8" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, + "@angular/localize": { + "optional": true + }, + "@angular/platform-browser": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@angular/ssr": { + "optional": true + }, + "istanbul-lib-instrument": { + "optional": true + }, + "karma": { + "optional": true + }, + "less": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tailwindcss": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@angular/build/node_modules/@vitejs/plugin-basic-ssl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.3.0.tgz", + "integrity": "sha512-bdyo8rB3NnQbikdMpHaML9Z1OZPBu6fFOBo+OtxsBlvMJtysWskmBcnbIDhUqgC8tcxNv/a+BcV5U+2nQMm1OQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "peerDependencies": { + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@angular/build/node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0 || ^0.28.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/postcss": { + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.13.tgz", + "integrity": "sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/webpack": { + "version": "5.106.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz", + "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "loader-runner": "^4.3.1", + "mime-db": "^1.54.0", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.2200.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2200.9.tgz", + "integrity": "sha512-1/NV1agI7eAi+uKcYo0i2Y/BwIn5gO7XorAvE+TZx/ux0XAdcj+uxnpR2e5+blBwRLynn0DIe8SkA/W6V58Xhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/architect": "0.2200.9", + "rxjs": "7.8.2" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^5.0.2" + } + }, + "node_modules/@angular-devkit/core": { + "version": "22.0.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-22.0.9.tgz", + "integrity": "sha512-u53kltrh1ZKHSqGfEDbPW2RzSC1WBPpan3LN61TuzjAkiHqqaQXrN6EmUvYkX3CIT5PKhO6RPRsptMH9y7hs0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.20.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.4", + "rxjs": "7.8.2", + "source-map": "0.7.6" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^5.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular/animations": { + "version": "22.0.8", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-22.0.8.tgz", + "integrity": "sha512-hdBlckl5mARzuc5gt2siydIAxeJbBiRneg8V0kazEDH6xNkNp/1siro68ZaHgTY5dCUEOec/eC4zbhB8AlSLhQ==", + "deprecated": "@angular/animations is deprecated. Use `animate.enter` and `animate.leave` instead. For more information see: https://v22.angular.dev/guide/animations.", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0" + }, + "peerDependencies": { + "@angular/core": "22.0.8" + } + }, + "node_modules/@angular/common": { + "version": "22.0.8", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-22.0.8.tgz", + "integrity": "sha512-FnwkXndUgAyWk1/p5flMfocIUtuuneJ01mxC1FxRc5/bdWTyNVeQDsM9Lw4PEAPc0AHu//EnblegRq8o6LGdUQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0" + }, + "peerDependencies": { + "@angular/core": "22.0.8", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "22.0.8", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-22.0.8.tgz", + "integrity": "sha512-ot7rvntfkZsPHmp8yl6PWUj/yG4e50X0+YeR7QYy/rEYKBiIg91w8GwjxSzaF4g5+bzJGDv7l/XnachKm0IySg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0" + } + }, + "node_modules/@angular/compiler-cli": { + "version": "22.0.8", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-22.0.8.tgz", + "integrity": "sha512-shBqaUxMtqriv4UG2MHmYT8GSvDizI40mUFkOfeQ1yRJ2C9dk0TnWKPwjSO7o6bs6UiU6V8Y3uSWdmfCGVVZAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.29.7", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^5.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^18.0.0" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0" + }, + "peerDependencies": { + "@angular/compiler": "22.0.8", + "typescript": ">=6.0 <6.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@angular/core": { + "version": "22.0.8", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-22.0.8.tgz", + "integrity": "sha512-HagZZVzbtXd+ZhMb++k/HOtr/UTiBROHHH7xutgYgnSnPRXX0kCca5EQ02OZ/OCWfsMP5liSJDfwiePFULKA6Q==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0" + }, + "peerDependencies": { + "@angular/compiler": "22.0.8", + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.15.0 || ~0.16.0" + }, + "peerDependenciesMeta": { + "@angular/compiler": { + "optional": true + }, + "zone.js": { + "optional": true + } + } + }, + "node_modules/@angular/forms": { + "version": "22.0.8", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-22.0.8.tgz", + "integrity": "sha512-KlLJE8rgziSBqCQy+cqCHPEQPGjJEY53i1vZbpnBoLXhnwswLJ3O0c76RHNpIrlrvr9v4p3b2/LxSE8wQmdStg==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "tslib": "^2.3.0", + "zod": "^4.0.10" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0" + }, + "peerDependencies": { + "@angular/common": "22.0.8", + "@angular/core": "22.0.8", + "@angular/platform-browser": "22.0.8", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "22.0.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-22.0.8.tgz", + "integrity": "sha512-FllGHCayu5Dv82HAA9ORL04Xf+In9JGMbQ1Vn4QnhrAVxBz182vm+ZwszLzRDSAwmfeIjZDeK49tKAcqHR9XNg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0" + }, + "peerDependencies": { + "@angular/animations": "22.0.8", + "@angular/common": "22.0.8", + "@angular/core": "22.0.8" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "22.0.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-22.0.8.tgz", + "integrity": "sha512-HQ5GeMoKqd2eMy9hHga1F0yumhrt4gVlhoP8YfmQnZWluVagdyinUpGdd3dNiuYjLcbHB+KXdW9c6LnqEmU+dg==", + "deprecated": "@angular/platform-browser-dynamic is deprecated. Use `@angular/platform-browser` instead.", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0" + }, + "peerDependencies": { + "@angular/common": "22.0.8", + "@angular/compiler": "22.0.8", + "@angular/core": "22.0.8", + "@angular/platform-browser": "22.0.8" + } + }, + "node_modules/@angular/router": { + "version": "22.0.8", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-22.0.8.tgz", + "integrity": "sha512-9NO5K03QqfWMWWZ+Uu4WqBSLw/YAot918cBUFdgl6mTUOfoHi/xWO5pAt0SEpbXMHmWafJBdb99GRlAGybGSTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0" + }, + "peerDependencies": { + "@angular/common": "22.0.8", + "@angular/core": "22.0.8", + "@angular/platform-browser": "22.0.8", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", + "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz", + "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz", + "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-wrap-function": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz", + "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz", + "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz", + "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz", + "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz", + "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz", + "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz", + "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz", + "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz", + "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", + "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz", + "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz", + "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz", + "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz", + "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz", + "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", + "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz", + "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz", + "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz", + "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/template": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz", + "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz", + "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz", + "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz", + "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz", + "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz", + "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz", + "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz", + "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz", + "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz", + "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz", + "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz", + "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz", + "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz", + "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", + "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz", + "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz", + "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz", + "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", + "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz", + "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz", + "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz", + "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz", + "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", + "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz", + "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz", + "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz", + "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz", + "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz", + "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz", + "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz", + "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz", + "integrity": "sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", + "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz", + "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz", + "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz", + "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz", + "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz", + "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz", + "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz", + "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz", + "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz", + "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.29.7", + "@babel/plugin-syntax-import-attributes": "^7.29.7", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.29.7", + "@babel/plugin-transform-async-generator-functions": "^7.29.7", + "@babel/plugin-transform-async-to-generator": "^7.29.7", + "@babel/plugin-transform-block-scoped-functions": "^7.29.7", + "@babel/plugin-transform-block-scoping": "^7.29.7", + "@babel/plugin-transform-class-properties": "^7.29.7", + "@babel/plugin-transform-class-static-block": "^7.29.7", + "@babel/plugin-transform-classes": "^7.29.7", + "@babel/plugin-transform-computed-properties": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-dotall-regex": "^7.29.7", + "@babel/plugin-transform-duplicate-keys": "^7.29.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-dynamic-import": "^7.29.7", + "@babel/plugin-transform-explicit-resource-management": "^7.29.7", + "@babel/plugin-transform-exponentiation-operator": "^7.29.7", + "@babel/plugin-transform-export-namespace-from": "^7.29.7", + "@babel/plugin-transform-for-of": "^7.29.7", + "@babel/plugin-transform-function-name": "^7.29.7", + "@babel/plugin-transform-json-strings": "^7.29.7", + "@babel/plugin-transform-literals": "^7.29.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.29.7", + "@babel/plugin-transform-member-expression-literals": "^7.29.7", + "@babel/plugin-transform-modules-amd": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-modules-systemjs": "^7.29.7", + "@babel/plugin-transform-modules-umd": "^7.29.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-new-target": "^7.29.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", + "@babel/plugin-transform-numeric-separator": "^7.29.7", + "@babel/plugin-transform-object-rest-spread": "^7.29.7", + "@babel/plugin-transform-object-super": "^7.29.7", + "@babel/plugin-transform-optional-catch-binding": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/plugin-transform-private-methods": "^7.29.7", + "@babel/plugin-transform-private-property-in-object": "^7.29.7", + "@babel/plugin-transform-property-literals": "^7.29.7", + "@babel/plugin-transform-regenerator": "^7.29.7", + "@babel/plugin-transform-regexp-modifiers": "^7.29.7", + "@babel/plugin-transform-reserved-words": "^7.29.7", + "@babel/plugin-transform-shorthand-properties": "^7.29.7", + "@babel/plugin-transform-spread": "^7.29.7", + "@babel/plugin-transform-sticky-regex": "^7.29.7", + "@babel/plugin-transform-template-literals": "^7.29.7", + "@babel/plugin-transform-typeof-symbol": "^7.29.7", + "@babel/plugin-transform-unicode-escapes": "^7.29.7", + "@babel/plugin-transform-unicode-property-regex": "^7.29.7", + "@babel/plugin-transform-unicode-regex": "^7.29.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.29.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-4.0.4.tgz", + "integrity": "sha512-vTVO/uZixpTVAOQt3qZRUFJ/K1L03OfNkeJ8sFNDVNdVy/zW0h1L5WT7HIPMDUkvSrxQkFaCCybTZkUP7UESlQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", + "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-1.1.0.tgz", + "integrity": "sha512-Xc3VhU02wqZ1HvHRJUwL09HkZSTvidqY5Ya0NXBSYOxAp+Ln9dcJr9fySI+CkONzP3PekQo9WdzCv0PGER/mOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.17.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@harperfast/extended-iterable": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@harperfast/extended-iterable/-/extended-iterable-1.0.3.tgz", + "integrity": "sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/@hookun/parse-animation-shorthand": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@hookun/parse-animation-shorthand/-/parse-animation-shorthand-0.1.5.tgz", + "integrity": "sha512-/fnwYK9Tgllhtv2EpwZZVbwhCokAoGtfEz23mZtjHMHvih4YeiAeUuVpyjGrTGf6j6ymgrCxGwUiAkAfDsmUjw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@inquirer/ansi": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.8.tgz", + "integrity": "sha512-WpQM+Ti6Z40EFwwt+uL2p4UabT+W179zHp6HhLVOzfbwnVn05IPO/eXIZXGNqcT1jbQ15SujNLzQ39k4QPPxBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + } + }, + "node_modules/@inquirer/confirm": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.12.tgz", + "integrity": "sha512-h9FgGun3QwVYNj5TWIZZ+slii73bMoBFjPfVIGtnFuL4t8gBiNDV9PcSfIzkuxvgquJKt9nr1QzszpBzTbH8Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^11.1.9", + "@inquirer/type": "^4.0.5" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.2.1.tgz", + "integrity": "sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.7", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7", + "cli-width": "^4.1.0", + "fast-wrap-ansi": "^0.2.0", + "mute-stream": "^3.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.9.tgz", + "integrity": "sha512-EAWgUTGQ/Umgga51dE3B2PUHbufuXarDfg86uVgoSgNHNNQnyFKcOrQLWVqYMghuSyHh8+2HUH0Js9cTC1WAdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + } + }, + "node_modules/@inquirer/type": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.1.1.tgz", + "integrity": "sha512-yJoHYrMnxIsJZCY+0Vb66Dy3he3kL3e2wOBKhoSwWWAzZAY82emlxwgprCtp6yRixvNRNq9ztfRWQYPNr3Go7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.79.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.79.0.tgz", + "integrity": "sha512-bxSwMrDY71OjEdj2mAYBxSe4BnHtAOjOxqUoFJc0WsllcGgA8iYl6wRF+4aVdFUjjEyHfBwxVv0QqW4AweIUZw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.79.0", + "@jsonjoy.com/fs-node-utils": "4.79.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.79.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.79.0.tgz", + "integrity": "sha512-EdadmStAvZw4jYg4iW3mDxBmzMFSI8jcHQkSl+rIQIO7dWbPdXaB83PBQhNCCtMBeX7zwcOFjpp0ecXqbYbjUA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.79.0", + "@jsonjoy.com/fs-node-builtins": "4.79.0", + "@jsonjoy.com/fs-node-utils": "4.79.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.79.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.79.0.tgz", + "integrity": "sha512-/k18aT1X+A2yLdlTe3WKpL5y2qrvbcUY1BXA4A+s8fBfTeXfi+xdvEB85JVXVf2i9kzASQZFx8dHw9OchgMUhQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.79.0", + "@jsonjoy.com/fs-node-builtins": "4.79.0", + "@jsonjoy.com/fs-node-utils": "4.79.0", + "@jsonjoy.com/fs-print": "4.79.0", + "@jsonjoy.com/fs-snapshot": "4.79.0", + "glob-to-regex.js": "^1.3.1", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.79.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.79.0.tgz", + "integrity": "sha512-LoBHewVHp/bZQ8Om1Iivl6NEHg7Mmby9kXJZysfnHYW4256rzXFSEcEpto1qgSAka+sq2v4N/Cnl562Z15MByA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.79.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.79.0.tgz", + "integrity": "sha512-xFza/t81sVL4rik7h3SlcymC6X7pvNllI88LW1GESEANDXinf5lZoqju59i3AsGLyy4i0eBQvPiizWSMwCunQA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-fsa": "4.79.0", + "@jsonjoy.com/fs-node-builtins": "4.79.0", + "@jsonjoy.com/fs-node-utils": "4.79.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.79.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.79.0.tgz", + "integrity": "sha512-Rj/WevHB8DV8VyEvFGSvDD3m3JHOVk3fO1biH26iworL9/rqdUMKQQeyiKTLbdf3Z9s9vVZnn8ZC0FWZgtO2mg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.79.0", + "glob-to-regex.js": "^1.3.1" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.79.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.79.0.tgz", + "integrity": "sha512-Bp5Q+OV1Dnl8oKf8hVhmboeI+NWbWRk1GxtJzuRvopDeNBDBh0RLevEsfnOVtwBwgRZaptSXn3e/mm3kbOzfDw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-utils": "4.79.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.79.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.79.0.tgz", + "integrity": "sha512-/GY+eMvOl4ZQHUnrKYjC/t3N0BImBg7zv/cAGm3kiwUfqSQuo87jtbjmD3mzgQMv16K8zttkHE2wT9GaVsehvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.79.0", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/util": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.5.4.tgz", + "integrity": "sha512-Kk4Kz3iyu1QiLsLZBS9Af1eSKUC8VR2T+/jyE2iAyuGw2VwK08pp5iTbZnXn6sWu0LogO/RFktMxOjiDA2sS3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.5.4.tgz", + "integrity": "sha512-BEe5Rp3trn26oxoXOVL5HVDoiYmjUDwr8NRPkBOdUdCSBEorKI+7JrZLRKAdxO+G6cGQLgseXk0gR7qIQa7aGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.5.4.tgz", + "integrity": "sha512-SGbFR7816uBcTHc2ZY4S6WyOkl9bICnzqTQd2Mv4V/j24cfds88xx2nC6cm/y8zGQL7Ds31YF/5NGxjgcdM5Hw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.5.4.tgz", + "integrity": "sha512-cUXEengO8o60v1SWerJTH4/RH4U3+9jC0/4njp2Z9NdmvaGzhKsbRM2wpXuRYrN8tytsoJCg0SvWEWwHAwLbCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.5.4.tgz", + "integrity": "sha512-Gxq8jpgOWXwd0PUR+c9R2Ik1/uBnGd5GMIIzRRDqABCkvmjtC3KWcyhesV9jSPCz759isl0NlbsstZ2oyvk8lA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.5.4.tgz", + "integrity": "sha512-pKv1DJ1bPZAaHkdFsSz5IDfUG8x9vntgquXF9/Dm2xuupcIe/EkLzylpoBxppFVK5vzbV561Dq26jNY2fIMA7g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.5.4.tgz", + "integrity": "sha512-JF1BmLCm9kGEVZgYmJq43zeQVdHVgAJnTi/NURWEsy6L1ZrrlSmdltS+D17QN4LODwf+1LMXAA9auIZVXtWwzw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.4.tgz", + "integrity": "sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.4.tgz", + "integrity": "sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.4.tgz", + "integrity": "sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.4.tgz", + "integrity": "sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.4.tgz", + "integrity": "sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.4.tgz", + "integrity": "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@napi-rs/nice": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz", + "integrity": "sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/nice-android-arm-eabi": "1.1.1", + "@napi-rs/nice-android-arm64": "1.1.1", + "@napi-rs/nice-darwin-arm64": "1.1.1", + "@napi-rs/nice-darwin-x64": "1.1.1", + "@napi-rs/nice-freebsd-x64": "1.1.1", + "@napi-rs/nice-linux-arm-gnueabihf": "1.1.1", + "@napi-rs/nice-linux-arm64-gnu": "1.1.1", + "@napi-rs/nice-linux-arm64-musl": "1.1.1", + "@napi-rs/nice-linux-ppc64-gnu": "1.1.1", + "@napi-rs/nice-linux-riscv64-gnu": "1.1.1", + "@napi-rs/nice-linux-s390x-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-musl": "1.1.1", + "@napi-rs/nice-openharmony-arm64": "1.1.1", + "@napi-rs/nice-win32-arm64-msvc": "1.1.1", + "@napi-rs/nice-win32-ia32-msvc": "1.1.1", + "@napi-rs/nice-win32-x64-msvc": "1.1.1" + } + }, + "node_modules/@napi-rs/nice-android-arm-eabi": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.1.1.tgz", + "integrity": "sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-android-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.1.1.tgz", + "integrity": "sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-darwin-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.1.1.tgz", + "integrity": "sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-darwin-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.1.1.tgz", + "integrity": "sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-freebsd-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.1.1.tgz", + "integrity": "sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.1.1.tgz", + "integrity": "sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-arm64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.1.1.tgz", + "integrity": "sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-arm64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.1.1.tgz", + "integrity": "sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-ppc64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.1.1.tgz", + "integrity": "sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-riscv64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.1.1.tgz", + "integrity": "sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-s390x-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.1.1.tgz", + "integrity": "sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-x64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.1.1.tgz", + "integrity": "sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-x64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.1.1.tgz", + "integrity": "sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-openharmony-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-openharmony-arm64/-/nice-openharmony-arm64-1.1.1.tgz", + "integrity": "sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-win32-arm64-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.1.1.tgz", + "integrity": "sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-win32-ia32-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.1.1.tgz", + "integrity": "sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-win32-x64-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.1.1.tgz", + "integrity": "sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nativescript/angular": { + "version": "22.0.1", + "resolved": "https://registry.npmjs.org/@nativescript/angular/-/angular-22.0.1.tgz", + "integrity": "sha512-ZrZnlWn8fEmY6L4GYerb7UiA+CKSFS9kuIeh948TLq+iuZvfxqThgCtoRSwkrzKAyPAU7oN0z/5YBle8tmTHfA==", + "license": "Apache-2.0", + "dependencies": { + "@nativescript/zone-js": "^4.0.0", + "tslib": "^2.3.0" + } + }, + "node_modules/@nativescript/core": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@nativescript/core/-/core-9.1.2.tgz", + "integrity": "sha512-zL/dgfuLmcVu9nR47UEFOaPHXoaRKuWMBnDwiaMAwXmf4WKd6yr1gIXcNHheKgBNGrls06LgbBpkB841fI+HcA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/NativeScript" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NativeScript" + } + ], + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@csstools/css-calc": "~2.1.4", + "@csstools/css-color-parser": "^3.0.10", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@nativescript/hook": "~3.0.4", + "acorn": "^8.15.0", + "css-tree": "^3.1.0", + "css-what": "^7.0.0", + "emoji-regex": "^10.2.1", + "semver": "^7.0.0", + "source-map": "0.7.6", + "source-map-js": "^1.2.1", + "tslib": "^2.0.0" + } + }, + "node_modules/@nativescript/hook": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nativescript/hook/-/hook-3.0.5.tgz", + "integrity": "sha512-MzL7R/nPZU2qnvDWWuJ8RB7H3luEwANgFX/d/ILdg7bSYxl6uANCfzlueHnWgrQmBxu6dTkvPsFW2WNVUxlhUg==", + "license": "Apache-2.0" + }, + "node_modules/@nativescript/ios": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@nativescript/ios/-/ios-9.1.0.tgz", + "integrity": "sha512-rdSmL+oOL+iyLYoSBM/cS0bOMAKzzOax6SpR4WmIHpmpa7TrFrrmzekuPSkwTZGeA7NTXnXD6K45rFvCHm6kOA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@nativescript/tailwind": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@nativescript/tailwind/-/tailwind-2.1.1.tgz", + "integrity": "sha512-Fo+E8JG0MbZLRLcvIWPiI2P4SqJ/S6u4uzceIun5wfmm3LG4gErF4ivvHuJu/IdwDKCGw5FNLO21e+M0O/P5/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/postcss-is-pseudo-class": "4.0.4", + "@hookun/parse-animation-shorthand": "^0.1.4" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@nativescript/types": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@nativescript/types/-/types-9.0.0.tgz", + "integrity": "sha512-fR9ot7Si9L0StcsOZpAEThggeQb8cQxCL0BwRKuWHbm+SdlinuOWSl6lS3bKuIIcCzJem2cWP3UrzgweRnOe/A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@nativescript/types-android": "9.0.0", + "@nativescript/types-ios": "9.0.0" + } + }, + "node_modules/@nativescript/types-android": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@nativescript/types-android/-/types-android-9.0.0.tgz", + "integrity": "sha512-Az64E1m6jd7CKX/QKOZi3uSxQEXZbPW5NlmMNP9VGCP9UobHLd5GgqpEIyeBB4Jep4rckA2Z4LEEpjbu/my63Q==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@nativescript/types-ios": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@nativescript/types-ios/-/types-ios-9.0.0.tgz", + "integrity": "sha512-A13VLFFKNrkYqS7JU0V+R4wxKIE66VvYiHK1+vrVXqiK6l+95BxgEgRPD8FlXN7W2iXXqYLapo8nVMtWArpscg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@nativescript/webpack": { + "version": "5.0.38", + "resolved": "https://registry.npmjs.org/@nativescript/webpack/-/webpack-5.0.38.tgz", + "integrity": "sha512-lcOfqIgRe53LHi/DoSMe67N3wBon+Fg/820wrew83DH/OyWKxy1ian5BZONU0Bn9syTjpKa212cuz5WCXF4PHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/core": "^7.0.0", + "@pmmmwh/react-refresh-webpack-plugin": "~0.6.1", + "@vue/compiler-sfc": "^3.5.17", + "acorn": "^8.0.0", + "acorn-stage3": "^4.0.0", + "ansi-colors": "^4.1.3", + "babel-loader": "^10.0.0", + "cli-highlight": "^2.0.0", + "commander": "^14.0.0", + "copy-webpack-plugin": "^13.0.0", + "css": "^3.0.0", + "css-loader": "^7.0.0", + "dotenv-webpack": "^8.0.0", + "fork-ts-checker-webpack-plugin": "^9.0.0", + "loader-utils": "^2.0.0 || ^3.0.0", + "postcss": "^8.0.0", + "postcss-import": "^16.0.0", + "postcss-loader": "^8.0.0", + "raw-loader": "^4.0.0", + "react-refresh": "~0.18.0", + "sass": "^1.0.0", + "sass-loader": "^16.0.0", + "sax": "^1.0.0", + "semver": "^7.0.0 || ^6.0.0", + "source-map": "^0.7.0", + "terser-webpack-plugin": "^5.0.0", + "ts-dedent": "^2.0.0", + "ts-loader": "^9.0.0", + "vue-loader": "^17.4.2", + "webpack": "^5.30.0 <= 5.50.0 || ^5.51.2", + "webpack-bundle-analyzer": "^4.0.0", + "webpack-chain": "^6.0.0", + "webpack-cli": "^6.0.0", + "webpack-merge": "^6.0.0", + "webpack-virtual-modules": "^0.4.0" + }, + "bin": { + "nativescript-webpack": "dist/bin/index.js" + }, + "peerDependencies": { + "nativescript-vue-template-compiler": "^2.8.1" + }, + "peerDependenciesMeta": { + "nativescript-vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@nativescript/webpack/node_modules/copy-webpack-plugin": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", + "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-parent": "^6.0.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2", + "tinyglobby": "^0.2.12" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/@nativescript/webpack/node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/@nativescript/zone-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nativescript/zone-js/-/zone-js-4.0.0.tgz", + "integrity": "sha512-CpCMfQ8lPOmW0RKPhE0XByt78zmN12zKdaJTv6dlqHOjvfDqnpXwtlQVONkaDgxtowuTRJaQqWZsc2Wsyec/LA==" + }, + "node_modules/@ngtools/webpack": { + "version": "22.0.9", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-22.0.9.tgz", + "integrity": "sha512-FCzOHY9Pwk23ET1vFziYduR+/9siNw1iNX9K1oxSQPM94DSwsoCpmbCsC/HCw6KXBNjfxU3LRhIawwVIcj2oOQ==", + "deprecated": "Angular's Webpack support is deprecated. Use the esbuild and Vite-based \"@angular/build\" package instead.", + "dev": true, + "license": "MIT", + "engines": { + "node": "^22.22.3 || ^24.15.0 || >=26.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^22.0.0", + "typescript": ">=6.0 <6.1", + "webpack": "^5.54.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", + "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.6.0", + "@parcel/watcher-darwin-arm64": "2.6.0", + "@parcel/watcher-darwin-x64": "2.6.0", + "@parcel/watcher-freebsd-x64": "2.6.0", + "@parcel/watcher-linux-arm-glibc": "2.6.0", + "@parcel/watcher-linux-arm-musl": "2.6.0", + "@parcel/watcher-linux-arm64-glibc": "2.6.0", + "@parcel/watcher-linux-arm64-musl": "2.6.0", + "@parcel/watcher-linux-x64-glibc": "2.6.0", + "@parcel/watcher-linux-x64-musl": "2.6.0", + "@parcel/watcher-win32-arm64": "2.6.0", + "@parcel/watcher-win32-x64": "2.6.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", + "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", + "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", + "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", + "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", + "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", + "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", + "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", + "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", + "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", + "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", + "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", + "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@peculiar/asn1-cms": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.9.5.tgz", + "integrity": "sha512-4Ivz0fsyFofe0bslNsYcGN9+iETdHX4v+BFwIPr+K/BAt61sHXECP63ff9FntU9zcfVQELJFdUG9so44OjUlBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.9.5", + "@peculiar/asn1-x509": "^2.9.5", + "@peculiar/asn1-x509-attr": "^2.9.5", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/asn1-csr": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.9.5.tgz", + "integrity": "sha512-9dO6PcoJeI+1xJ4rG7eINMa6f9Ix/QdRs5UGZ0D7v/R3TzmsbVr5cqAgfYw4xgS9U54ouHYqEz0bIZBbM/UY1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.9.5", + "@peculiar/asn1-x509": "^2.9.5", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.9.5.tgz", + "integrity": "sha512-OD+HLlcV7wCL64w0rheX/C0J31DbJce0nf8ulv3UNftQ617JEZE3sQ4cMN6PotXWlJ1M5GQx90G3bywtdKOstw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.9.5", + "@peculiar/asn1-x509": "^2.9.5", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/asn1-pfx": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.9.5.tgz", + "integrity": "sha512-btcH7lbcD4410qnjHvv7F0kEuMNKbX8CFAZSs9CDPWHKzT1byLPHYeR40AnUw9z4CzsijMY0daBFYUvVx75sdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.9.5", + "@peculiar/asn1-pkcs8": "^2.9.5", + "@peculiar/asn1-rsa": "^2.9.5", + "@peculiar/asn1-schema": "^2.9.5", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.9.5.tgz", + "integrity": "sha512-c7UghAGQdBfAHL9JdwcJkAc/lDJKNXfCdYXPXlf8BZdD/fVJjJnXKHxX4gyLhkFTvnGhME7caieSgc2ROtqYTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.9.5", + "@peculiar/asn1-x509": "^2.9.5", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.9.5.tgz", + "integrity": "sha512-4R/zMgLSHbQIZRBwP1KzX6iuNHmW3xFWwu9TS9A00N60fmQqp9DkkqnQFyd0mAYMQTrQefuzQ/yP4U8sOLGUgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.9.5", + "@peculiar/asn1-pfx": "^2.9.5", + "@peculiar/asn1-pkcs8": "^2.9.5", + "@peculiar/asn1-schema": "^2.9.5", + "@peculiar/asn1-x509": "^2.9.5", + "@peculiar/asn1-x509-attr": "^2.9.5", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.9.5.tgz", + "integrity": "sha512-kHwBLVMkm9ljlM521ovS7y4z4mr8xuHTdNyyoPlDvckBwFKSgs9HqKBryLBeqHqL2YpIgl+Vspl7kzNGG2phzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.9.5", + "@peculiar/asn1-x509": "^2.9.5", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.9.5.tgz", + "integrity": "sha512-Ez3wLKVjaxdsLcgeWN4OE31QkM7oBOgKuuBJxldRYAkfYw2C+8zJPcSd/SThnbhszsEOlAmoaS5kIIkN29fGKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.9.5.tgz", + "integrity": "sha512-NP3ecvN6zTDlwCvogIWL7MJN9AZNuskkIbnlhrlkB97Mn2EqirBUQ8GKzsOmdAL3pRvjGu1Uk/a4DNfiZrWxhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.9.5", + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.9.5.tgz", + "integrity": "sha512-PlbL1a74RZiry7puPCZ5hdk/puvivxYJPbjadr2i7DBjHCJFEKCfTRPKL3DILeZFtzJjn95J5EBtSc4/TB9/6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.9.5", + "@peculiar/asn1-x509": "^2.9.5", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz", + "integrity": "sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.6.3.tgz", + "integrity": "sha512-k1EEmFS9K7685tqJM55DCA3sYlTNZb7aFj1M3HNFwMqH+fGgMEvemIQ5kurIzKc9wYRSmfKpSZN3WUyY/GHlvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "anser": "^2.1.1", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "html-entities": "^2.1.0", + "schema-utils": "^4.2.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "@types/webpack": "5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <6.0.0", + "webpack": "^5.0.0", + "webpack-dev-server": "^4.8.0 || 5.x || 6.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz", + "integrity": "sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz", + "integrity": "sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz", + "integrity": "sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz", + "integrity": "sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz", + "integrity": "sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz", + "integrity": "sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz", + "integrity": "sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz", + "integrity": "sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz", + "integrity": "sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz", + "integrity": "sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz", + "integrity": "sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz", + "integrity": "sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz", + "integrity": "sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz", + "integrity": "sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz", + "integrity": "sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz", + "integrity": "sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz", + "integrity": "sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz", + "integrity": "sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz", + "integrity": "sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz", + "integrity": "sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz", + "integrity": "sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz", + "integrity": "sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz", + "integrity": "sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz", + "integrity": "sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz", + "integrity": "sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@santoshyadavdev/ng-devtools": { + "resolved": "../packages/ng-devtools", + "link": true + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.9", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.9.tgz", + "integrity": "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.2.tgz", + "integrity": "sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~8.9.0" + } + }, + "node_modules/@types/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@valor/nativescript-websockets": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@valor/nativescript-websockets/-/nativescript-websockets-2.0.3.tgz", + "integrity": "sha512-gNmdgvRttQjOxnIMqdu4xmAU19IQkqMYbYUX/OGlicGkF67Yej4ShvRFPgVCzDa2zXCctlJVVqkgsj9ZHLl+zg==", + "license": "MIT" + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.43.tgz", + "integrity": "sha512-zdiLhnbe1QQqgDT8xZMpNmyqZ3qlI+/Q/FHQco57Kwl/b05HhCzN6eVGN9QU9rbga4CrS0H5SYY8VGHZCt/1Hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@vue/shared": "3.5.43", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.43.tgz", + "integrity": "sha512-PEZoAk3NQmsn/ejMzSOCyTYqwGqczrWm70PuhBKjjv1+TCoQAaO/zOqNwjV+honlNstT5ILxtc+8r8UUfj+iEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.43", + "@vue/shared": "3.5.43" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.43.tgz", + "integrity": "sha512-FCbrG3XNCRl+js3huuKx4IVHBLTvMkJhVepjbxSPu1gn4yWLaYtGNQdjJGZaMytXB6qb76qQDDmDSLy/vkmleQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@vue/compiler-core": "3.5.43", + "@vue/compiler-dom": "3.5.43", + "@vue/compiler-ssr": "3.5.43", + "@vue/shared": "3.5.43", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.28", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.43.tgz", + "integrity": "sha512-GF62orf7KiJX9RqrHNGrYBudsQGD0OhJ5nDs90O8UiDuS40+YMYomiXu6w6EuvtXuRDc3MSNis3EaaSKAVSWpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.43", + "@vue/shared": "3.5.43" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.43.tgz", + "integrity": "sha512-uksS7YGMR5NZyr4JNq0Rp+QyLns0ueaz20KwzIPW9R0LH1Vnt4E+XUM29PNseEbf1www2gOuhuDi5AKOIXag9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-class-fields": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.3.7.tgz", + "integrity": "sha512-jdUWSFce0fuADUljmExz4TWpPkxmRW/ZCPRqeeUzbGf0vFUcpQYbyq52l75qGd0oSwwtAepeL6hgb/naRgvcKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-private-class-elements": "^0.2.7" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6 || ^7 || ^8" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-private-class-elements": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/acorn-private-class-elements/-/acorn-private-class-elements-0.2.7.tgz", + "integrity": "sha512-+GZH2wOKNZOBI4OOPmzpo4cs6mW297sn6fgIk1dUI08jGjhAaEwvC39mN2gJAg2lmAQJ1rBkFqKWonL3Zz6PVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6.1.0 || ^7 || ^8" + } + }, + "node_modules/acorn-private-methods": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/acorn-private-methods/-/acorn-private-methods-0.3.3.tgz", + "integrity": "sha512-46oeEol3YFvLSah5m9hGMlNpxDBCEkdceJgf01AjqKYTK9r6HexKs2rgSbLK81pYjZZMonhftuUReGMlbbv05w==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-private-class-elements": "^0.2.7" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6 || ^7 || ^8" + } + }, + "node_modules/acorn-stage3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-stage3/-/acorn-stage3-4.0.0.tgz", + "integrity": "sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-class-fields": "^0.3.7", + "acorn-private-methods": "^0.3.3", + "acorn-static-class-features": "^0.2.4" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^7.4 || ^8" + } + }, + "node_modules/acorn-static-class-features": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/acorn-static-class-features/-/acorn-static-class-features-0.2.4.tgz", + "integrity": "sha512-5X4mpYq5J3pdndLmIB0+WtFd/mKWnNYpuTlTzj32wUu/PMmEGOiayQ5UrqgwdBNiaZBtDDh5kddpP7Yg2QaQYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-private-class-elements": "^0.2.7" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6.1.0 || ^7 || ^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz", + "integrity": "sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/anser": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/anser/-/anser-2.3.5.tgz", + "integrity": "sha512-vcZjxvvVoxTeR5XBNJB38oTu/7eDCZlwdz32N1eNgpyPF7j/Z7Idf+CUwQOkKKpJ7RJyjxgLHCM7vdIK0iCNMQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz", + "integrity": "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/asn1js": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", + "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.5", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.1.tgz", + "integrity": "sha512-JwKSzk2kjIe7mgPK+/lyZ2QAaJcpahNAdM+hgR2HI8D0OJVkdj8Rl6J3kaLYki9pwF7P2iWnD8qVv80Lq1ABtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0 || ^8.0.0-beta.1", + "@rspack/core": "^1.0.0 || ^2.0.0-0", + "webpack": ">=5.61.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.26", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.26.tgz", + "integrity": "sha512-GLQdD3y6UF8iVuMJl5fHgE4jdn/ua7n+toKfLgNlg3BqQtOZjpy68T8Tup8/wGWZCDlm7KMg7tPb4MPn7oN0TQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/beasties": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.4.2.tgz", + "integrity": "sha512-NvcGjG/7AVUAfRbvrJmHunDQS9uHnE6Q/7AkaPr8oKE8HjOlpjRG5075z/th2Tmlezk3VlaaS8+X9I1RwHJMQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "css-select": "^6.0.0", + "css-what": "^7.0.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "htmlparser2": "^10.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-media-query-parser": "^0.2.3", + "postcss-safe-parser": "^7.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.8", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.8.tgz", + "integrity": "sha512-JNcyFQ64OiijEkPzUBTCe+hyPXUD/3LEldGQ6iF5LR1w00mx9o7xtDWHXBY2iItjdCFGoilOLNQbH943ut7pHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.16.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.4.4.tgz", + "integrity": "sha512-jCZcVv7eoc4QesRscwEZtSROBen+6LpKAmBIsQYQrsAeVHLyMXWX/t6eIV5KiRZYNUBl8eVqImEEMQ8L5+c/Kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.1.tgz", + "integrity": "sha512-AUdjuRyCNGUYtqpqfTmWyM4fXay8yIQhmLnvYe/THMGfT9B/34X7xQd3ifKxwyNPPpowVBjLb+64BN9Rn1mizw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.11.25", + "caniuse-lite": "^1.0.30001810", + "electron-to-chromium": "^1.5.438", + "node-releases": "^2.0.57", + "update-browserslist-db": "^1.3.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001812", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001812.tgz", + "integrity": "sha512-qN+QNNBr93TCmFrmte0bBCjSDMuRvt78VlHT99qIGPszm4QsqCX8lnyWUFkHi8B7ZBAPq8SH+UqyXNy/odMdng==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-highlight/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.2.tgz", + "integrity": "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-spinners": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz", + "integrity": "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.2.tgz", + "integrity": "sha512-o8vI5RE5A6EVVOd9o41jKp41aJom+QTEO/Bx8MYNjexMo/Bv2WOjUfZr+aL0WnYSgymUy6zeguqLTsIhV0gMvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "destroy": "1.2.0", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz", + "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-parent": "^6.0.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^7.0.3", + "tinyglobby": "^0.2.12" + }, + "engines": { + "node": ">= 20.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.50.0.tgz", + "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.7" + }, + "engines": { + "node": ">=6.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.50.0.tgz", + "integrity": "sha512-6GP3Pxz4IKyWjAfa747vIu/jilB5z29JWROLqH/b+pXVcpgh6tM06ZIBwSuglgVqzDYURhOK6oEzTrG0bCHitA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "node_modules/css-loader": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.4.tgz", + "integrity": "sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.40", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.6.3" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-select": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", + "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^7.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "nth-check": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", + "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.1.tgz", + "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dotenv": "^8.2.0" + } + }, + "node_modules/dotenv-webpack": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.1.1.tgz", + "integrity": "sha512-+TY/AJ2k9bU2EML3mxgLmaAvEcqs1Wbv6deCIUSI3eW3Xeo8LBQumYib6puyaSwbjC9JCzg/y5Pwjd/lePX04w==", + "dev": true, + "license": "MIT", + "dependencies": { + "dotenv-defaults": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "webpack": "^4 || ^5" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.439", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.439.tgz", + "integrity": "sha512-qu6QIPXhsb+CRcAiTMNjR4A1y/7tCYKkKjr5CZXRVih6qkDf79peZ2BpEU3qoDBNCRrcy3Mra3X9nG5oruuA7Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.25.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.25.1.tgz", + "integrity": "sha512-nGXts5znJzmWPu+mIE9izCOzdg63oJca2mDzGWWTth7sr4aCToKcoyFVBQwN75Ij5Pf6p510EwkTqViTRzDV+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.28.1.tgz", + "integrity": "sha512-p/GD4E8oYRjg3kjdKrnMb0s4PzXgJF42e0MF4H0+ACyK/kIlFRp3e0fzOleIG+wBBm6MM3XQrbpe7soEA+vJIA==", + "dev": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/express": { + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.3.tgz", + "integrity": "sha512-Bdcs4+3qlpVlx2NRn6fgX2Ue2/gGRaPeawebgclM0ERSCqDpA+owF1fdPwjJUTAJWMTuAaxjDf+hzb0/4eKvvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.5", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.13", + "proxy-addr": "~2.0.7", + "qs": "~6.16.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-uri": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz", + "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz", + "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^4.0.1", + "cosmiconfig": "^8.2.0", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.7.0.tgz", + "integrity": "sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regex.js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.3.1.tgz", + "integrity": "sha512-zhWhMRsgnOym+1txhUmYJGD6eUsbUdrZv55gCYKuJX8t2p3+M8My23PD09bEIsreGUs5pnSa/idmcfp2/IlqGg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true, + "license": "MIT" + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.7.tgz", + "integrity": "sha512-iwbQltVlx8bCrqePUM8C+hllHvdawVhQJaLrj1X7qllkvFQdXFsr16pW/mo9+JDVjN+QO2XUx9jd8SmoFkE5qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": "^14.18.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-9.0.0.tgz", + "integrity": "sha512-/MVmHp58WkOypgFhCLk4fzpPcFQvTJ/e6LBI7irpIO2HfxUbpmYoHF+KzipzJpxxzJu7aJNWQ0xojJ/dzV2G5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "9.0.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz", + "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.5.0.tgz", + "integrity": "sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.17.0.tgz", + "integrity": "sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-network-error": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.2.tgz", + "integrity": "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.1.0.tgz", + "integrity": "sha512-bUi/yjmtKYcRVUtWRGr0UA6xEFh2I6zWUwMrUXB3s7bmYCaZ8a+0ZsTRkrawh/mzlSD1Y0Ph8bp/U+TvBpWDNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.14.1.tgz", + "integrity": "sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.4" + } + }, + "node_modules/less": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/less/-/less-4.6.4.tgz", + "integrity": "sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^3.0.5", + "parse-node-version": "^1.0.1" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.3.2.tgz", + "integrity": "sha512-uLV5c702ff2jBvO7qewpkLRzkh/I9QW07ur2NKkv8TVTrtX2lrKjEbEU/LLXAn7cgpCIBbkfyUm4qYXCQs5/+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "license": "ISC", + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-10.2.1.tgz", + "integrity": "sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^5.2.0", + "eventemitter3": "^5.0.4", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^10.0.0" + }, + "engines": { + "node": ">=22.13.0" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-10.0.2.tgz", + "integrity": "sha512-6OLRNZqRntVGBm26ghZ5eZhCuWWyOkRCSn8XsOIuq5stpCE/tjLbdozd93naILZig0lmD8ANfRwnhn0DLeXGlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.3", + "string-width": "^8.2.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/lmdb": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.5.4.tgz", + "integrity": "sha512-9FKQA6G1MMtqNxfxvSBNXD/axeG2QRjYbNh0/ykRL5xYcRbCm2vXq7B9bhc7nSuKdHzr8/BHIwfPuYYH1UsXXw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@harperfast/extended-iterable": "^1.0.3", + "msgpackr": "^1.11.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.5.3", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "3.5.4", + "@lmdb/lmdb-darwin-x64": "3.5.4", + "@lmdb/lmdb-linux-arm": "3.5.4", + "@lmdb/lmdb-linux-arm64": "3.5.4", + "@lmdb/lmdb-linux-x64": "3.5.4", + "@lmdb/lmdb-win32-arm64": "3.5.4", + "@lmdb/lmdb-win32-x64": "3.5.4" + } + }, + "node_modules/lmdb/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/loader-runner": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", + "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", + "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz", + "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimizer-webpack-plugin": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.12.0.tgz", + "integrity": "sha512-PCN1x1OzFeFB2GlP91s46q7Gz8Jf16Z7M45bzpoqrYZlh12QeY6tYVM5h299wbwy1DxnQ69VFmmh8Hb2Ff8mbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.3", + "terser": "^5.51.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, + "@napi-rs/image": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "html-minifier-terser": { + "optional": true + }, + "imagemin": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, + "sharp": { + "optional": true + }, + "svgo": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/minimizer-webpack-plugin/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimizer-webpack-plugin/node_modules/terser": { + "version": "5.51.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.51.2.tgz", + "integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/msgpackr": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.12.1.tgz", + "integrity": "sha512-4EUH9tQHnMmEgzW/MdAP0KIfa1T9AF+htl0ffe2n5vb2EKn9y2co8ccpgWko6S52Jy1PQZKwRnx5/KkYjtd9MQ==", + "dev": true, + "license": "MIT", + "optional": true, + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.4.tgz", + "integrity": "sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.4", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.4" + } + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", + "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", + "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.5.0.tgz", + "integrity": "sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.57", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.57.tgz", + "integrity": "sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.4.0", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/ora": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-9.4.0.tgz", + "integrity": "sha512-84cglkRILFxdtA8hAvLNdMrtBpPNBTrQ9/ulg0FA7xLMnD6mifv+enAIeRmvtv+WgdCE+LPGOfQmtJRrVaIVhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.6.2", + "cli-cursor": "^5.0.0", + "cli-spinners": "^3.2.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.1.0", + "log-symbols": "^7.0.1", + "stdin-discarder": "^0.3.2", + "string-width": "^8.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ordered-binary": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.2.tgz", + "integrity": "sha512-BY+qgDArmYpvvmij141xbkB4Cw8RFLBQM5Zj4MODFb1SyXBRE/xO4Xj/QWbR7aUEBxbkjuNdsFVCL2TmbYrlNg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-8.0.1.tgz", + "integrity": "sha512-NaRku2aMpUN1Sh1Gyk1KWUh2A7EJx2c6qYzvwsPtqhoHoaURshdrceYK3LunVCm3WHhm6FS7Vcczbvdh3/UIVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^8.0.0", + "parse5": "^8.0.0", + "parse5-sax-parser": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/entities": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz", + "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-sax-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-8.0.0.tgz", + "integrity": "sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-sax-parser/node_modules/entities": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz", + "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parse5-sax-parser/node_modules/parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/piscina": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.2.0.tgz", + "integrity": "sha512-DszUCKeVN/5G5QKo6jAVHL8fmKnkJvQ0ACiVgY7YGCq3TUB2oznAOayvZPIAdEThvhczkXR+qm3IHsNXpFCYfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.x" + }, + "optionalDependencies": { + "@napi-rs/nice": "^1.0.4" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkijs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.1.tgz", + "integrity": "sha512-Oo/NZcSWccq8KyoG7gLE9fnltgHns+pNCjCAp/WmjsUySi+sX7y4z4Xqu4fVb42CDHzRPl33fjzT15V1wvcyhA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "website" + ], + "dependencies": { + "@noble/hashes": "1.8.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/postcss": { + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.18", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.2.0.tgz", + "integrity": "sha512-0mQUGlSp87Zl70K58RNwQAN1WS9plFE6KWGui9nyK6ninduMyjW/Khaoy/BpBoFTBh7ndAvAKrSKVbwy6vd/BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-loader": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.2.1.tgz", + "integrity": "sha512-k98jtRzthjj3f76MYTs9JTpRqV1RaaMhEU0Lpw9OTmQZQdppg4B30VZ74BojuBHt3F4KyubHJoXCMUeM8Bqeow==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^9.0.0", + "jiti": "^2.5.1", + "semver": "^7.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.2.tgz", + "integrity": "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz", + "integrity": "sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz", + "integrity": "sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-safe-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.1.0.tgz", + "integrity": "sha512-1WzZxRLaAFwEh6Do+zyGpjWV3nGJNxxhuh7Ubu/q1ICImMgZJnLwhoaEpRbG4pJppp2Y1ncL9ffA2f+LhrefQg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", + "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz", + "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.2.0.tgz", + "integrity": "sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/qs": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz", + "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", + "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/raw-loader/node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/raw-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/raw-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/raw-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/raw-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.2.tgz", + "integrity": "sha512-/peqiBB/n07gQGLsWaHho3WfvUyRscw0gYTsEFMhrIe/nWLkYaf5SbKYjGYqtRV3aPwykJgF2VEMo1ac4bnsGA==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.3.tgz", + "integrity": "sha512-ycwFAS14Jw4mppvmK4GR/J6u3WpWpjkEApehuHtLc/8VpPNpDMbQ4WjqwplXifGeyKOzHSFLmSPqzksDQE2Sfg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.2.tgz", + "integrity": "sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.2", + "@rollup/rollup-android-arm64": "4.60.2", + "@rollup/rollup-darwin-arm64": "4.60.2", + "@rollup/rollup-darwin-x64": "4.60.2", + "@rollup/rollup-freebsd-arm64": "4.60.2", + "@rollup/rollup-freebsd-x64": "4.60.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.2", + "@rollup/rollup-linux-arm-musleabihf": "4.60.2", + "@rollup/rollup-linux-arm64-gnu": "4.60.2", + "@rollup/rollup-linux-arm64-musl": "4.60.2", + "@rollup/rollup-linux-loong64-gnu": "4.60.2", + "@rollup/rollup-linux-loong64-musl": "4.60.2", + "@rollup/rollup-linux-ppc64-gnu": "4.60.2", + "@rollup/rollup-linux-ppc64-musl": "4.60.2", + "@rollup/rollup-linux-riscv64-gnu": "4.60.2", + "@rollup/rollup-linux-riscv64-musl": "4.60.2", + "@rollup/rollup-linux-s390x-gnu": "4.60.2", + "@rollup/rollup-linux-x64-gnu": "4.60.2", + "@rollup/rollup-linux-x64-musl": "4.60.2", + "@rollup/rollup-openbsd-x64": "4.60.2", + "@rollup/rollup-openharmony-arm64": "4.60.2", + "@rollup/rollup-win32-arm64-msvc": "4.60.2", + "@rollup/rollup-win32-ia32-msvc": "4.60.2", + "@rollup/rollup-win32-x64-gnu": "4.60.2", + "@rollup/rollup-win32-x64-msvc": "4.60.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.99.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.99.0.tgz", + "integrity": "sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass-loader": { + "version": "16.0.7", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.7.tgz", + "integrity": "sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sax": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/schema-utils": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.5.0.tgz", + "integrity": "sha512-zJlMCZ0cAR5p/Y4oVpRoqioDMJcGxaXRrQ/4rP4WyR84vc5z/DolXdbvXeDpTwbtocDFr2rhPqHPErDCUtz2kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.15", + "ajv": "^8.20.0", + "ajv-formats": "^3.0.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true, + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.1.2.tgz", + "integrity": "sha512-GL2BWwVa6JydKO6l/ljVgjAZF4QJ3S7dWDWi53s5GZT8PJzD2fNxi67HANQGKAqPrwEpL5ba7gUBGi0Ls/sEoQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" + }, + "engines": { + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.10.0.tgz", + "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slice-ansi": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "license": "MIT", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.2.tgz", + "integrity": "sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz", + "integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tailwindcss/node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/tailwindcss/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tailwindcss/node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/tailwindcss/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.2.tgz", + "integrity": "sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz", + "integrity": "sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "html-minifier-terser": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thingies": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.1.tgz", + "integrity": "sha512-cV/CMGTK3M4MlnJ/0At6ismOw/A0EEniDNScajjz/Br3c1sqE72YD01rGpPTKwd27wAxI5Pr+6+0w8yofzFRYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/ts-dedent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.3.0.tgz", + "integrity": "sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/ts-loader": { + "version": "9.6.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.6.2.tgz", + "integrity": "sha512-R4iuczmtgxvtuI556s+hTZ6/7Ee03VCAk/l/M8LY1OAsUgB7YydsCxkgq9D9pKRaD7GJqUi2u8fp9zZP/ufjKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "picomatch": "^4.0.0", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "loader-utils": "*", + "typescript": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "loader-utils": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tsyringe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true, + "license": "MIT" + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", + "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz", + "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vue-loader": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.4.2.tgz", + "integrity": "sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "watchpack": "^2.4.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/watchpack": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.2.tgz", + "integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/webpack": { + "version": "5.111.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.111.1.tgz", + "integrity": "sha512-cNypaz0RP+S4cvQVi1M/3bRUkvNP0xZpL0TjFx+c6jg64VbxD+2weWDgY9UnjRI6dhZgtaj8DU76GGFcJ79xPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.25.0", + "es-module-lexer": "^2.1.0", + "events": "^3.2.0", + "graceful-fs": "^4.2.11", + "mime-db": "^1.54.0", + "minimizer-webpack-plugin": "^5.7.0", + "schema-utils": "^4.5.0", + "tapable": "^2.3.0", + "watchpack": "^2.5.2", + "webpack-sources": "^3.5.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-chain/node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-cli": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", + "colorette": "^2.0.14", + "commander": "^12.1.0", + "cross-spawn": "^7.0.3", + "envinfo": "^7.14.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^6.0.1" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.82.0" + }, + "peerDependenciesMeta": { + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.17.0" + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-8.0.3.tgz", + "integrity": "sha512-zWrde9VZDiRaFuWsjHO40wm9LxxtXEk8DdzFXdU7eU5ZpiANnZZDBbZgN3guxbEoKqUHd9YupBmynyioz42nkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "memfs": "^4.56.10", + "mime-types": "^3.0.2", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.3.3" + }, + "engines": { + "node": ">= 20.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.101.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/memfs": { + "version": "4.79.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.79.0.tgz", + "integrity": "sha512-vDFqA9WSa//xa3XIKwMmVqxgWWft4PMKW0k69gBM2rYOzZ3VqL9BrK3Kyl45jSxS7qImDgwejZzEb/xDWhP37g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.79.0", + "@jsonjoy.com/fs-fsa": "4.79.0", + "@jsonjoy.com/fs-node": "4.79.0", + "@jsonjoy.com/fs-node-builtins": "4.79.0", + "@jsonjoy.com/fs-node-to-fsa": "4.79.0", + "@jsonjoy.com/fs-node-utils": "4.79.0", + "@jsonjoy.com/fs-print": "4.79.0", + "@jsonjoy.com/fs-snapshot": "4.79.0", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.3.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.8.1", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.22.1", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^5.5.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.10.tgz", + "integrity": "sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/memfs": { + "version": "4.79.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.79.0.tgz", + "integrity": "sha512-vDFqA9WSa//xa3XIKwMmVqxgWWft4PMKW0k69gBM2rYOzZ3VqL9BrK3Kyl45jSxS7qImDgwejZzEb/xDWhP37g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.79.0", + "@jsonjoy.com/fs-fsa": "4.79.0", + "@jsonjoy.com/fs-node": "4.79.0", + "@jsonjoy.com/fs-node-builtins": "4.79.0", + "@jsonjoy.com/fs-node-to-fsa": "4.79.0", + "@jsonjoy.com/fs-node-utils": "4.79.0", + "@jsonjoy.com/fs-print": "4.79.0", + "@jsonjoy.com/fs-snapshot": "4.79.0", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.3.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.6.tgz", + "integrity": "sha512-yBWCMvIfUmuhAE8vdqUKzH0vg9kuWN0KeG4vBnqRplUFHRU7lMQjkiJWxVQzvo2BTewqhPhDlMB41rAt2jVA9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.3.tgz", + "integrity": "sha512-F/zS5rEcCKxS6hrhxkLjOzblTsuv89rkuDyP+vToquds6KfPJ3fDqg9UNzbtJcA2AgXZOLMYLQqZpuyE5zDfxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", + "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "dev": true, + "license": "MIT" + }, + "node_modules/websocket-driver": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.5.tgz", + "integrity": "sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ws": { + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.13.tgz", + "integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/wsl-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.2.0.tgz", + "integrity": "sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^8.2.1", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.2.0.tgz", + "integrity": "sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.5.tgz", + "integrity": "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zone.js": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.16.3.tgz", + "integrity": "sha512-ihXL9+vhYyEhXz4TDNpHeAOZN9FVrbog0Il64OIEI28UP/n5AaI6gsccRuOHBfx+206agzyoK527bYIO0Foy6A==", + "license": "MIT" + } + } +} diff --git a/app-nativescript/package.json b/app-nativescript/package.json new file mode 100644 index 0000000..5e53209 --- /dev/null +++ b/app-nativescript/package.json @@ -0,0 +1,33 @@ +{ + "name": "app-nativescript", + "main": "./src/main.ts", + "version": "1.0.0", + "private": true, + "dependencies": { + "@angular/animations": "~22.0.0", + "@angular/common": "~22.0.0", + "@angular/compiler": "~22.0.0", + "@angular/core": "~22.0.0", + "@angular/forms": "~22.0.0", + "@angular/platform-browser": "~22.0.0", + "@angular/platform-browser-dynamic": "~22.0.0", + "@angular/router": "~22.0.0", + "@nativescript/angular": "~22.0.0", + "@nativescript/core": "~9.1.0", + "@santoshyadavdev/ng-devtools": "file:../packages/ng-devtools", + "@valor/nativescript-websockets": "^2.0.3", + "rxjs": "~7.8.0", + "zone.js": "~0.16.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~22.0.0", + "@angular/compiler-cli": "~22.0.0", + "@nativescript/ios": "9.1.0", + "@nativescript/tailwind": "^2.1.0", + "@nativescript/types": "~9.0.0", + "@nativescript/webpack": "~5.0.25", + "@ngtools/webpack": "~22.0.0", + "tailwindcss": "~3.4.0", + "typescript": "~6.0.0" + } +} diff --git a/app-nativescript/references.d.ts b/app-nativescript/references.d.ts new file mode 100644 index 0000000..d743326 --- /dev/null +++ b/app-nativescript/references.d.ts @@ -0,0 +1 @@ +/// diff --git a/app-nativescript/src/app.css b/app-nativescript/src/app.css new file mode 100644 index 0000000..b5c61c9 --- /dev/null +++ b/app-nativescript/src/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/app-nativescript/src/app/app.component.html b/app-nativescript/src/app/app.component.html new file mode 100644 index 0000000..be22686 --- /dev/null +++ b/app-nativescript/src/app/app.component.html @@ -0,0 +1,3 @@ + + + diff --git a/app-nativescript/src/app/app.component.ts b/app-nativescript/src/app/app.component.ts new file mode 100644 index 0000000..b391b90 --- /dev/null +++ b/app-nativescript/src/app/app.component.ts @@ -0,0 +1,10 @@ +import { Component, NO_ERRORS_SCHEMA } from '@angular/core'; +import { PageRouterOutlet } from '@nativescript/angular'; + +@Component({ + selector: 'ns-app', + templateUrl: './app.component.html', + imports: [PageRouterOutlet], + schemas: [NO_ERRORS_SCHEMA], +}) +export class AppComponent {} diff --git a/app-nativescript/src/app/app.routes.ts b/app-nativescript/src/app/app.routes.ts new file mode 100644 index 0000000..5b7c357 --- /dev/null +++ b/app-nativescript/src/app/app.routes.ts @@ -0,0 +1,9 @@ +import { Routes } from '@angular/router'; +import { PersonComponent } from './people/person.component'; +import { PersonDetailComponent } from './people/person-detail.component'; + +export const routes: Routes = [ + { path: '', redirectTo: '/items', pathMatch: 'full' }, + { path: 'items', component: PersonComponent }, + { path: 'item/:id', component: PersonDetailComponent }, +]; diff --git a/app-nativescript/src/app/devtools-showcase.component.ts b/app-nativescript/src/app/devtools-showcase.component.ts new file mode 100644 index 0000000..a09a585 --- /dev/null +++ b/app-nativescript/src/app/devtools-showcase.component.ts @@ -0,0 +1,43 @@ +import { + Component, + Injectable, + NO_ERRORS_SCHEMA, + computed, + effect, + inject, + input, + signal, +} from '@angular/core'; + +/** Provided by the showcase component, so it shows up on an element injector. */ +@Injectable() +export class TapCounter { + readonly taps = signal(0); +} + +@Component({ + selector: 'ns-devtools-showcase', + template: ` + + + + + + `, + providers: [TapCounter], + schemas: [NO_ERRORS_SCHEMA], +}) +export class DevtoolsShowcaseComponent { + readonly title = input('DevTools showcase'); + readonly counter = inject(TapCounter); + readonly doubled = computed(() => this.counter.taps() * 2); + readonly summary = computed(() => `${this.counter.taps()} taps, doubled ${this.doubled()}`); + + constructor() { + effect(() => console.log(`[showcase] taps=${this.counter.taps()}`)); + } + + tap() { + this.counter.taps.update((n) => n + 1); + } +} diff --git a/app-nativescript/src/app/people/person-detail.component.html b/app-nativescript/src/app/people/person-detail.component.html new file mode 100644 index 0000000..44f157d --- /dev/null +++ b/app-nativescript/src/app/people/person-detail.component.html @@ -0,0 +1,39 @@ + + @if (isAndroid) { + + + + + } + + + + + + + + + + + + + + + + + + diff --git a/app-nativescript/src/app/people/person-detail.component.ts b/app-nativescript/src/app/people/person-detail.component.ts new file mode 100644 index 0000000..321ea61 --- /dev/null +++ b/app-nativescript/src/app/people/person-detail.component.ts @@ -0,0 +1,44 @@ +import { + ChangeDetectionStrategy, + Component, + NO_ERRORS_SCHEMA, + OnInit, + inject, + signal, +} from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; +import { NativeScriptCommonModule, RouterExtensions } from '@nativescript/angular'; +import { Person } from './person'; +import { PersonService } from './person.service'; + +@Component({ + selector: 'ns-person-detail', + templateUrl: './person-detail.component.html', + imports: [NativeScriptCommonModule], + schemas: [NO_ERRORS_SCHEMA], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class PersonDetailComponent implements OnInit { + personService = inject(PersonService); + routerExtensions = inject(RouterExtensions); + route = inject(ActivatedRoute); + person = signal(null); + isAndroid = __ANDROID__; + + ngOnInit(): void { + const id = +this.route.snapshot.params.id; + this.person.set(this.personService.getPerson(id)); + + // log the person to the console + console.log(this.person()); + } + + goBack() { + this.routerExtensions.back(); + } + + formatAchievements(achievements: string[] | undefined | null): string { + if (!achievements || !Array.isArray(achievements)) return ''; + return achievements.map((a, index) => index + 1 + '. ' + a.trim()).join('\n'); + } +} diff --git a/app-nativescript/src/app/people/person.component.html b/app-nativescript/src/app/people/person.component.html new file mode 100644 index 0000000..a6c8f31 --- /dev/null +++ b/app-nativescript/src/app/people/person.component.html @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/app-nativescript/src/app/people/person.component.ts b/app-nativescript/src/app/people/person.component.ts new file mode 100644 index 0000000..92b0bf3 --- /dev/null +++ b/app-nativescript/src/app/people/person.component.ts @@ -0,0 +1,15 @@ +import { ChangeDetectionStrategy, Component, NO_ERRORS_SCHEMA, inject } from '@angular/core'; +import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; +import { PersonService } from './person.service'; +import { DevtoolsShowcaseComponent } from '../devtools-showcase.component'; + +@Component({ + selector: 'ns-person', + templateUrl: './person.component.html', + imports: [NativeScriptCommonModule, NativeScriptRouterModule, DevtoolsShowcaseComponent], + schemas: [NO_ERRORS_SCHEMA], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class PersonComponent { + personService = inject(PersonService); +} diff --git a/app-nativescript/src/app/people/person.service.ts b/app-nativescript/src/app/people/person.service.ts new file mode 100644 index 0000000..e56e44f --- /dev/null +++ b/app-nativescript/src/app/people/person.service.ts @@ -0,0 +1,119 @@ +import { Injectable, signal } from '@angular/core'; +import { Person } from './person'; + +@Injectable({ providedIn: 'root' }) +export class PersonService { + items = signal([ + { + id: 1, + name: 'Alan Turing', + nationality: 'British', + notableAchievements: ['WW2 code breaking', 'Father of theoretical computer science and AI'], + }, + { + id: 2, + name: 'Grace Hopper', + nationality: 'American', + notableAchievements: [ + 'COBOL development', + 'Navy commander', + 'Implementation of computer systems and components testing', + ], + }, + { + id: 3, + name: 'Donal Knuth', + nationality: 'American', + notableAchievements: [ + 'Author of The Art of Computer Programming', + 'Created TeX typesetting system', + ], + }, + { + id: 4, + name: 'Ada Lovelace', + nationality: 'British', + notableAchievements: ['First computer programmer', 'Worked on Analytical Engine'], + }, + { + id: 5, + name: 'John von Neumann', + nationality: 'Hungarian/American', + notableAchievements: ['Von Neumann architecture', 'Game theory', 'Contributed to EDVAC'], + }, + { + id: 6, + name: 'Tim Berners-Lee', + nationality: 'British', + notableAchievements: ['Inventor of the World Wide Web'], + }, + { + id: 7, + name: 'Edsger Dijkstra', + nationality: 'Dutch', + notableAchievements: ['Shortest path algorithm', 'Structured programming advocate'], + }, + { + id: 8, + name: 'Linus Torvalds', + nationality: 'Finnish-American', + notableAchievements: ['Creator of Linux kernel', 'Creator of Git'], + }, + { + id: 9, + name: 'John McCarthy', + nationality: 'American', + notableAchievements: [ + 'Coined term "Artificial Intelligence"', + 'Created LISP programming language', + ], + }, + { + id: 10, + name: 'Dennis Ritchie', + nationality: 'American', + notableAchievements: ['Creator of C programming language', 'Co-creator of Unix'], + }, + { + id: 11, + name: 'Bjarne Stroustrup', + nationality: 'Danish', + notableAchievements: ['Creator of C++ programming language'], + }, + { + id: 12, + name: 'Steve Wozniak', + nationality: 'American', + notableAchievements: [ + 'Co-founder of Apple', + 'Designer of Apple I & II', + 'Pioneer of personal computing', + ], + }, + { + id: 13, + name: 'Tommy Flowers', + nationality: 'British', + notableAchievements: ['Designer of Colossus', 'Pioneer in electronic computing'], + }, + { + id: 14, + name: 'John Backus', + nationality: 'American', + notableAchievements: ['Created FORTRAN', 'Developed Backus-Naur form(BNF) notation'], + }, + { + id: 15, + name: 'Niklaus Wirth', + nationality: 'Swiss', + notableAchievements: [ + 'Creator of Pascal, Modula, Oberon languages', + 'Software engineering pioneer', + ], + }, + ]); + + getPerson(id: number): Person { + return this.items().find((person) => person.id === id); + } +} diff --git a/app-nativescript/src/app/people/person.ts b/app-nativescript/src/app/people/person.ts new file mode 100644 index 0000000..f297616 --- /dev/null +++ b/app-nativescript/src/app/people/person.ts @@ -0,0 +1,6 @@ +export interface Person { + id: number; + name: string; + nationality: string; + notableAchievements: string[]; +} diff --git a/app-nativescript/src/main.ts b/app-nativescript/src/main.ts new file mode 100644 index 0000000..7b28a55 --- /dev/null +++ b/app-nativescript/src/main.ts @@ -0,0 +1,27 @@ +import { + bootstrapApplication, + provideNativeScriptHttpClient, + provideNativeScriptRouter, + runNativeScriptAngularApp, +} from '@nativescript/angular'; +import { provideZonelessChangeDetection } from '@angular/core'; +import { withInterceptorsFromDi } from '@angular/common/http'; +import { initNativeScriptOverlay } from '@santoshyadavdev/ng-devtools/overlay-nativescript'; +import { routes } from './app/app.routes'; +import { AppComponent } from './app/app.component'; + +if (__DEV__) { + initNativeScriptOverlay(); +} + +runNativeScriptAngularApp({ + appModuleBootstrap: () => { + return bootstrapApplication(AppComponent, { + providers: [ + provideNativeScriptHttpClient(withInterceptorsFromDi()), + provideNativeScriptRouter(routes), + provideZonelessChangeDetection(), + ], + }); + }, +}); diff --git a/app-nativescript/src/polyfills.ts b/app-nativescript/src/polyfills.ts new file mode 100644 index 0000000..0df96b7 --- /dev/null +++ b/app-nativescript/src/polyfills.ts @@ -0,0 +1,11 @@ +/** + * NativeScript Polyfills + */ + +// Gives the runtime a WebSocket global, which the ng-devtools overlay needs. +import '@valor/nativescript-websockets'; + +// Install @nativescript/core polyfills (XHR, setTimeout, requestAnimationFrame) +import '@nativescript/core/globals'; +// Install @nativescript/angular specific polyfills +import '@nativescript/angular/polyfills'; diff --git a/app-nativescript/tailwind.config.js b/app-nativescript/tailwind.config.js new file mode 100644 index 0000000..f8cfdb1 --- /dev/null +++ b/app-nativescript/tailwind.config.js @@ -0,0 +1,13 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./src/**/*.{css,xml,html,vue,svelte,ts,tsx}'], + // use the .ns-dark class to control dark mode (applied by NativeScript) - since 'media' (default) is not supported. + darkMode: ['class', '.ns-dark'], + theme: { + extend: {}, + }, + plugins: [], + corePlugins: { + preflight: false, // disables browser-specific resets + }, +}; diff --git a/app-nativescript/tsconfig.json b/app-nativescript/tsconfig.json new file mode 100644 index 0000000..0b7a9ee --- /dev/null +++ b/app-nativescript/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "strict": false, + "module": "esnext", + "target": "ES2020", + "moduleResolution": "bundler", + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "noEmitHelpers": true, + "noEmitOnError": true, + "skipLibCheck": true, + "lib": ["ESNext", "dom"], + "paths": { + "~/*": ["./src/*"], + "@/*": ["./src/*"], + "@nativescript/core": ["./node_modules/@nativescript/core"], + "@nativescript/core/*": ["./node_modules/@nativescript/core/*"], + "@santoshyadavdev/ng-devtools/*": ["../packages/ng-devtools/dist/*.mjs"] + } + }, + "include": ["src/tests/**/*.ts", "src/**/*.ios.ts", "src/**/*.android.ts"], + "files": ["./src/main.ts", "./references.d.ts", "./src/polyfills.ts"], + "exclude": ["node_modules", "platforms", "e2e"] +} diff --git a/app-nativescript/webpack.config.js b/app-nativescript/webpack.config.js new file mode 100644 index 0000000..b80dc7f --- /dev/null +++ b/app-nativescript/webpack.config.js @@ -0,0 +1,10 @@ +const webpack = require('@nativescript/webpack'); + +module.exports = (env) => { + webpack.init(env); + + // Learn how to customize: + // https://docs.nativescript.org/webpack + + return webpack.resolveConfig(); +}; diff --git a/package.json b/package.json index f5497fd..e52f331 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "devtools:standalone": "node bin.mjs dev", "devtools:mcp": "node bin.mjs mcp", "devtools:report": "node bin.mjs build --outDir dist-report", + "devtools:nativescript": "cd app-nativescript && node ../bin.mjs dev --host 0.0.0.0 --no-auth", "devtools:build-pkg": "pnpm --filter @santoshyadavdev/ng-devtools build", "devtools:publish": "pnpm --filter @santoshyadavdev/ng-devtools publish --access public", "extension:build": "pnpm devtools:build && rm -rf extension/ui && cp -r dist/devtools-ui extension/ui", From 1ed1f546d82ed8bb137b5631dd730d3c56e3dfd5 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Tue, 29 Sep 2026 11:48:43 -0700 Subject: [PATCH 05/10] feat(ui): replace the NativeScript coming-soon card with setup steps The NativeScript dock is no longer marked Coming Soon. Its view shows what the integration does and how to set up an app, with a link to the README section, since a NativeScript app's data shows up in the Angular dock rather than a dock of its own. The card takes an optional heading for its list, which reads "Set up an app" here. --- app/src/app.ts | 37 +++++++++++-------- app/src/pages/coming-soon.ts | 9 ++++- .../ng-devtools/src/__tests__/hub.test.ts | 1 - packages/ng-devtools/src/hub-docks.ts | 2 +- 4 files changed, 29 insertions(+), 20 deletions(-) diff --git a/app/src/app.ts b/app/src/app.ts index fce1cc0..5a0d013 100644 --- a/app/src/app.ts +++ b/app/src/app.ts @@ -53,22 +53,6 @@ const VIEW_TAB: Partial> = { ngrx: 'store', analog: 'analog' } const TAB_VIEW: Partial> = { store: 'ngrx', analog: 'analog' }; const COMING_SOON: Partial> = { - nativescript: { - id: 'nativescript', - name: 'NativeScript', - badge: 'Coming Soon', - heading: 'NativeScript Support', - summary: - 'Inspect NativeScript Angular apps running natively on iOS and Android, with the same tools.', - color: '#3c5afd', - plans: [ - 'Native overlay that reports the component tree from the device', - 'Standalone devtools server your phone or simulator connects to', - 'Example NativeScript app to try it end to end', - ], - pr: 16, - author: { name: 'Nathan Walker', login: 'NathanWalker' }, - }, capacitor: { id: 'capacitor', name: 'Capacitor', @@ -86,6 +70,26 @@ const COMING_SOON: Partial> = { }, }; +const NATIVESCRIPT_SETUP: ComingSoonInfo = { + id: 'nativescript', + name: 'NativeScript', + badge: 'Available', + heading: 'Inspect NativeScript apps', + summary: + 'A NativeScript Angular app reports from the simulator or device to this server, and its components, signals, injectors and NgRx stores show up in the Angular dock.', + color: '#3c5afd', + plansTitle: 'Set up an app', + plans: [ + 'Install @santoshyadavdev/ng-devtools and @valor/nativescript-websockets', + 'Call initNativeScriptOverlay() in main.ts, before the app bootstraps', + 'Run ng-devtools dev --host 0.0.0.0 in the app, then open the Angular dock', + ], + link: { + label: 'NativeScript setup guide', + href: 'https://github.com/santoshyadavdev/angular-devtools#nativescript', + }, +}; + const NOT_ANALOG: ComingSoonInfo = { id: 'analog', name: 'Analog', @@ -614,6 +618,7 @@ export class App implements OnInit, OnDestroy { readonly comingSoon = computed(() => { const view = this.view(); if (view === 'analog') return this.analogKnown() && !this.analog() ? NOT_ANALOG : undefined; + if (view === 'nativescript') return NATIVESCRIPT_SETUP; return view ? COMING_SOON[view] : undefined; }); readonly tabs = computed(() => { diff --git a/app/src/pages/coming-soon.ts b/app/src/pages/coming-soon.ts index 938c826..97c605a 100644 --- a/app/src/pages/coming-soon.ts +++ b/app/src/pages/coming-soon.ts @@ -1,4 +1,4 @@ -import { Component, input } from '@angular/core'; +import { Component, computed, input } from '@angular/core'; export interface ComingSoonInfo { id: 'nativescript' | 'capacitor' | 'analog'; @@ -8,6 +8,7 @@ export interface ComingSoonInfo { summary: string; color: string; plans: string[]; + plansTitle?: string; pr?: number; author?: { name: string; login: string }; link?: { label: string; href: string }; @@ -105,7 +106,7 @@ export interface ComingSoonInfo { }

- {{ info().link ? 'In an ' + info().name + ' app' : 'On the roadmap' }} + {{ plansTitle() }}

    @for (plan of info().plans; track plan; let i = $index) { @@ -464,4 +465,8 @@ export interface ComingSoonInfo { }) export class ComingSoon { readonly info = input.required(); + readonly plansTitle = computed(() => { + const info = this.info(); + return info.plansTitle ?? (info.link ? `In an ${info.name} app` : 'On the roadmap'); + }); } diff --git a/packages/ng-devtools/src/__tests__/hub.test.ts b/packages/ng-devtools/src/__tests__/hub.test.ts index cf68b59..385553c 100644 --- a/packages/ng-devtools/src/__tests__/hub.test.ts +++ b/packages/ng-devtools/src/__tests__/hub.test.ts @@ -37,7 +37,6 @@ describe('ng-devtools hub', () => { ['ng-devtools:capacitor', '/__devframes/ng-devtools/?view=capacitor'], ]); expect(ours.filter((d) => d.title.endsWith('Coming Soon')).map((d) => d.id)).toEqual([ - 'ng-devtools:nativescript', 'ng-devtools:capacitor', ]); expect(ours.some((d) => d.badge || d.groupId)).toBe(false); diff --git a/packages/ng-devtools/src/hub-docks.ts b/packages/ng-devtools/src/hub-docks.ts index db08eb0..ae16580 100644 --- a/packages/ng-devtools/src/hub-docks.ts +++ b/packages/ng-devtools/src/hub-docks.ts @@ -12,7 +12,7 @@ const DOCKS: { view: HubView; title: string; icon: string; soon?: boolean }[] = { view: 'angular', title: 'Angular', icon: 'logos:angular-icon' }, { view: 'ngrx', title: 'NgRx', icon: NGRX_ICON }, { view: 'analog', title: 'Analog', icon: 'logos:analog' }, - { view: 'nativescript', title: 'NativeScript', icon: 'logos:nativescript', soon: true }, + { view: 'nativescript', title: 'NativeScript', icon: 'logos:nativescript' }, { view: 'capacitor', title: 'Capacitor', icon: 'logos:capacitorjs-icon', soon: true }, ]; From 057aab62e18f1a6c4e975284a65fa0e07e2bf101 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Tue, 29 Sep 2026 11:51:11 -0700 Subject: [PATCH 06/10] chore(examples): move the NativeScript example app to examples/nativescript The example sits next to the Analog demo, as `nativescript-demo`. It stays out of the pnpm workspace and installs with npm from its own lockfile, so the root install does not pull in the NativeScript toolchain. `pnpm devtools:nativescript` and the README follow the move. --- .prettierignore | 8 +-- README.md | 6 +-- .../nativescript}/.editorconfig | 0 .../nativescript}/.gitignore | 0 .../nativescript}/.vscode/extensions.json | 0 .../App_Resources/Android/app.gradle | 0 .../Android/before-plugins.gradle | 0 .../Android/src/main/AndroidManifest.xml | 0 .../src/main/res/drawable-hdpi/background.png | Bin .../src/main/res/drawable-hdpi/logo.png | Bin .../src/main/res/drawable-ldpi/background.png | Bin .../src/main/res/drawable-ldpi/logo.png | Bin .../src/main/res/drawable-mdpi/background.png | Bin .../src/main/res/drawable-mdpi/logo.png | Bin .../main/res/drawable-nodpi/splash_screen.xml | 0 .../main/res/drawable-xhdpi/background.png | Bin .../src/main/res/drawable-xhdpi/logo.png | Bin .../main/res/drawable-xxhdpi/background.png | Bin .../src/main/res/drawable-xxhdpi/logo.png | Bin .../main/res/drawable-xxxhdpi/background.png | Bin .../src/main/res/drawable-xxxhdpi/logo.png | Bin .../res/drawable/ic_launcher_foreground.xml | 0 .../res/mipmap-anydpi-v26/ic_launcher.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../src/main/res/values-v21/colors.xml | 0 .../src/main/res/values-v21/styles.xml | 0 .../src/main/res/values-v29/styles.xml | 0 .../Android/src/main/res/values/colors.xml | 0 .../res/values/ic_launcher_background.xml | 0 .../Android/src/main/res/values/styles.xml | 0 .../src/main/res/xml/network_security.xml | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/icon-1024.png | Bin .../AppIcon.appiconset/icon-20.png | Bin .../AppIcon.appiconset/icon-20@2x.png | Bin .../AppIcon.appiconset/icon-20@3x.png | Bin .../AppIcon.appiconset/icon-29.png | Bin .../AppIcon.appiconset/icon-29@2x.png | Bin .../AppIcon.appiconset/icon-29@3x.png | Bin .../AppIcon.appiconset/icon-40.png | Bin .../AppIcon.appiconset/icon-40@2x.png | Bin .../AppIcon.appiconset/icon-40@3x.png | Bin .../AppIcon.appiconset/icon-60@2x.png | Bin .../AppIcon.appiconset/icon-60@3x.png | Bin .../AppIcon.appiconset/icon-76.png | Bin .../AppIcon.appiconset/icon-76@2x.png | Bin .../AppIcon.appiconset/icon-83.5@2x.png | Bin .../iOS/Assets.xcassets/Contents.json | 0 .../Contents.json | 0 .../LaunchScreen-AspectFill.png | Bin .../LaunchScreen-AspectFill@2x.png | Bin .../LaunchScreen-AspectFill@3x.png | Bin .../Contents.json | 0 .../LaunchScreen-Center.png | Bin .../LaunchScreen-Center@2x.png | Bin .../LaunchScreen-Center@3x.png | Bin .../App_Resources/iOS/Info.plist | 0 .../App_Resources/iOS/LaunchScreen.storyboard | 0 .../App_Resources/iOS/build.xcconfig | 0 .../nativescript}/nativescript.config.ts | 0 .../nativescript}/package-lock.json | 46 ++++++++++++++---- .../nativescript}/package.json | 4 +- .../nativescript}/references.d.ts | 0 .../nativescript}/src/app.css | 0 .../nativescript}/src/app/app.component.html | 0 .../nativescript}/src/app/app.component.ts | 0 .../nativescript}/src/app/app.routes.ts | 0 .../src/app/devtools-showcase.component.ts | 0 .../app/people/person-detail.component.html | 0 .../src/app/people/person-detail.component.ts | 0 .../src/app/people/person.component.html | 0 .../src/app/people/person.component.ts | 0 .../src/app/people/person.service.ts | 0 .../nativescript}/src/app/people/person.ts | 0 .../nativescript}/src/main.ts | 0 .../nativescript}/src/polyfills.ts | 0 .../nativescript}/tailwind.config.js | 0 .../nativescript}/tsconfig.json | 2 +- .../nativescript}/webpack.config.js | 0 package.json | 2 +- pnpm-workspace.yaml | 2 + 85 files changed, 49 insertions(+), 21 deletions(-) rename {app-nativescript => examples/nativescript}/.editorconfig (100%) rename {app-nativescript => examples/nativescript}/.gitignore (100%) rename {app-nativescript => examples/nativescript}/.vscode/extensions.json (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/app.gradle (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/before-plugins.gradle (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/AndroidManifest.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-hdpi/background.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-hdpi/logo.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-ldpi/background.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-ldpi/logo.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-mdpi/background.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-mdpi/logo.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-xhdpi/background.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/values-v21/colors.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/values-v21/styles.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/values-v29/styles.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/values/colors.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/values/ic_launcher_background.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/values/styles.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/Android/src/main/res/xml/network_security.xml (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/Contents.json (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@3x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/Info.plist (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/LaunchScreen.storyboard (100%) rename {app-nativescript => examples/nativescript}/App_Resources/iOS/build.xcconfig (100%) rename {app-nativescript => examples/nativescript}/nativescript.config.ts (100%) rename {app-nativescript => examples/nativescript}/package-lock.json (99%) rename {app-nativescript => examples/nativescript}/package.json (90%) rename {app-nativescript => examples/nativescript}/references.d.ts (100%) rename {app-nativescript => examples/nativescript}/src/app.css (100%) rename {app-nativescript => examples/nativescript}/src/app/app.component.html (100%) rename {app-nativescript => examples/nativescript}/src/app/app.component.ts (100%) rename {app-nativescript => examples/nativescript}/src/app/app.routes.ts (100%) rename {app-nativescript => examples/nativescript}/src/app/devtools-showcase.component.ts (100%) rename {app-nativescript => examples/nativescript}/src/app/people/person-detail.component.html (100%) rename {app-nativescript => examples/nativescript}/src/app/people/person-detail.component.ts (100%) rename {app-nativescript => examples/nativescript}/src/app/people/person.component.html (100%) rename {app-nativescript => examples/nativescript}/src/app/people/person.component.ts (100%) rename {app-nativescript => examples/nativescript}/src/app/people/person.service.ts (100%) rename {app-nativescript => examples/nativescript}/src/app/people/person.ts (100%) rename {app-nativescript => examples/nativescript}/src/main.ts (100%) rename {app-nativescript => examples/nativescript}/src/polyfills.ts (100%) rename {app-nativescript => examples/nativescript}/tailwind.config.js (100%) rename {app-nativescript => examples/nativescript}/tsconfig.json (89%) rename {app-nativescript => examples/nativescript}/webpack.config.js (100%) diff --git a/.prettierignore b/.prettierignore index d037d1c..c50ea13 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,7 +4,7 @@ dist pnpm-lock.yaml extension/ui docs/privacy-policy.html -app-nativescript/platforms -app-nativescript/hooks -app-nativescript/App_Resources -app-nativescript/package-lock.json +examples/nativescript/platforms +examples/nativescript/hooks +examples/nativescript/App_Resources +examples/nativescript/package-lock.json diff --git a/README.md b/README.md index 2f453b0..ec6dd52 100644 --- a/README.md +++ b/README.md @@ -370,7 +370,7 @@ Then open `http://localhost:9999/` for the UI, or point an MCP client at ### Example app -`app-nativescript/` is a `ns create --ng` project wired up this way, with a small +`examples/nativescript/` is a `ns create --ng` project wired up this way, with a small showcase component (signals, a computed, an effect and a component-level provider). Tested on the iOS simulator; Android has not been verified yet. @@ -379,8 +379,8 @@ The app maps `@santoshyadavdev/ng-devtools/*` to the package's build output in ```sh pnpm devtools:build-pkg # builds packages/ng-devtools/dist, UI included -pnpm devtools:nativescript # devtools server scanning app-nativescript/src -cd app-nativescript && npm install && ns debug ios --no-hmr +pnpm devtools:nativescript # devtools server scanning examples/nativescript/src +cd examples/nativescript && npm install && ns debug ios --no-hmr ``` ## Demo App diff --git a/app-nativescript/.editorconfig b/examples/nativescript/.editorconfig similarity index 100% rename from app-nativescript/.editorconfig rename to examples/nativescript/.editorconfig diff --git a/app-nativescript/.gitignore b/examples/nativescript/.gitignore similarity index 100% rename from app-nativescript/.gitignore rename to examples/nativescript/.gitignore diff --git a/app-nativescript/.vscode/extensions.json b/examples/nativescript/.vscode/extensions.json similarity index 100% rename from app-nativescript/.vscode/extensions.json rename to examples/nativescript/.vscode/extensions.json diff --git a/app-nativescript/App_Resources/Android/app.gradle b/examples/nativescript/App_Resources/Android/app.gradle similarity index 100% rename from app-nativescript/App_Resources/Android/app.gradle rename to examples/nativescript/App_Resources/Android/app.gradle diff --git a/app-nativescript/App_Resources/Android/before-plugins.gradle b/examples/nativescript/App_Resources/Android/before-plugins.gradle similarity index 100% rename from app-nativescript/App_Resources/Android/before-plugins.gradle rename to examples/nativescript/App_Resources/Android/before-plugins.gradle diff --git a/app-nativescript/App_Resources/Android/src/main/AndroidManifest.xml b/examples/nativescript/App_Resources/Android/src/main/AndroidManifest.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/AndroidManifest.xml rename to examples/nativescript/App_Resources/Android/src/main/AndroidManifest.xml diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-hdpi/background.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-hdpi/background.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-hdpi/background.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-hdpi/background.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-hdpi/logo.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-hdpi/logo.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-hdpi/logo.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-hdpi/logo.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-ldpi/background.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-ldpi/background.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-ldpi/background.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-ldpi/background.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-ldpi/logo.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-ldpi/logo.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-ldpi/logo.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-ldpi/logo.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-mdpi/background.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-mdpi/background.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-mdpi/background.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-mdpi/background.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-mdpi/logo.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-mdpi/logo.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-mdpi/logo.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-mdpi/logo.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml b/examples/nativescript/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/background.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/background.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/background.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/background.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png b/examples/nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png rename to examples/nativescript/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml b/examples/nativescript/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml rename to examples/nativescript/App_Resources/Android/src/main/res/drawable/ic_launcher_foreground.xml diff --git a/app-nativescript/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/examples/nativescript/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to examples/nativescript/App_Resources/Android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/app-nativescript/App_Resources/Android/src/main/res/mipmap-hdpi/ic_launcher.png b/examples/nativescript/App_Resources/Android/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/mipmap-hdpi/ic_launcher.png rename to examples/nativescript/App_Resources/Android/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/mipmap-mdpi/ic_launcher.png b/examples/nativescript/App_Resources/Android/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/mipmap-mdpi/ic_launcher.png rename to examples/nativescript/App_Resources/Android/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/mipmap-xhdpi/ic_launcher.png b/examples/nativescript/App_Resources/Android/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/mipmap-xhdpi/ic_launcher.png rename to examples/nativescript/App_Resources/Android/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/mipmap-xxhdpi/ic_launcher.png b/examples/nativescript/App_Resources/Android/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to examples/nativescript/App_Resources/Android/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/examples/nativescript/App_Resources/Android/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to examples/nativescript/App_Resources/Android/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/app-nativescript/App_Resources/Android/src/main/res/values-v21/colors.xml b/examples/nativescript/App_Resources/Android/src/main/res/values-v21/colors.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/values-v21/colors.xml rename to examples/nativescript/App_Resources/Android/src/main/res/values-v21/colors.xml diff --git a/app-nativescript/App_Resources/Android/src/main/res/values-v21/styles.xml b/examples/nativescript/App_Resources/Android/src/main/res/values-v21/styles.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/values-v21/styles.xml rename to examples/nativescript/App_Resources/Android/src/main/res/values-v21/styles.xml diff --git a/app-nativescript/App_Resources/Android/src/main/res/values-v29/styles.xml b/examples/nativescript/App_Resources/Android/src/main/res/values-v29/styles.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/values-v29/styles.xml rename to examples/nativescript/App_Resources/Android/src/main/res/values-v29/styles.xml diff --git a/app-nativescript/App_Resources/Android/src/main/res/values/colors.xml b/examples/nativescript/App_Resources/Android/src/main/res/values/colors.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/values/colors.xml rename to examples/nativescript/App_Resources/Android/src/main/res/values/colors.xml diff --git a/app-nativescript/App_Resources/Android/src/main/res/values/ic_launcher_background.xml b/examples/nativescript/App_Resources/Android/src/main/res/values/ic_launcher_background.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/values/ic_launcher_background.xml rename to examples/nativescript/App_Resources/Android/src/main/res/values/ic_launcher_background.xml diff --git a/app-nativescript/App_Resources/Android/src/main/res/values/styles.xml b/examples/nativescript/App_Resources/Android/src/main/res/values/styles.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/values/styles.xml rename to examples/nativescript/App_Resources/Android/src/main/res/values/styles.xml diff --git a/app-nativescript/App_Resources/Android/src/main/res/xml/network_security.xml b/examples/nativescript/App_Resources/Android/src/main/res/xml/network_security.xml similarity index 100% rename from app-nativescript/App_Resources/Android/src/main/res/xml/network_security.xml rename to examples/nativescript/App_Resources/Android/src/main/res/xml/network_security.xml diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/Contents.json b/examples/nativescript/App_Resources/iOS/Assets.xcassets/Contents.json similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/Contents.json rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/Contents.json diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json b/examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@3x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@3x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@3x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@3x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json b/examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png diff --git a/app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png b/examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png similarity index 100% rename from app-nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png rename to examples/nativescript/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@3x.png diff --git a/app-nativescript/App_Resources/iOS/Info.plist b/examples/nativescript/App_Resources/iOS/Info.plist similarity index 100% rename from app-nativescript/App_Resources/iOS/Info.plist rename to examples/nativescript/App_Resources/iOS/Info.plist diff --git a/app-nativescript/App_Resources/iOS/LaunchScreen.storyboard b/examples/nativescript/App_Resources/iOS/LaunchScreen.storyboard similarity index 100% rename from app-nativescript/App_Resources/iOS/LaunchScreen.storyboard rename to examples/nativescript/App_Resources/iOS/LaunchScreen.storyboard diff --git a/app-nativescript/App_Resources/iOS/build.xcconfig b/examples/nativescript/App_Resources/iOS/build.xcconfig similarity index 100% rename from app-nativescript/App_Resources/iOS/build.xcconfig rename to examples/nativescript/App_Resources/iOS/build.xcconfig diff --git a/app-nativescript/nativescript.config.ts b/examples/nativescript/nativescript.config.ts similarity index 100% rename from app-nativescript/nativescript.config.ts rename to examples/nativescript/nativescript.config.ts diff --git a/app-nativescript/package-lock.json b/examples/nativescript/package-lock.json similarity index 99% rename from app-nativescript/package-lock.json rename to examples/nativescript/package-lock.json index 212c42a..319f087 100644 --- a/app-nativescript/package-lock.json +++ b/examples/nativescript/package-lock.json @@ -1,11 +1,11 @@ { - "name": "app-nativescript", + "name": "nativescript-demo", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "app-nativescript", + "name": "nativescript-demo", "version": "1.0.0", "dependencies": { "@angular/animations": "~22.0.0", @@ -18,7 +18,7 @@ "@angular/router": "~22.0.0", "@nativescript/angular": "~22.0.0", "@nativescript/core": "~9.1.0", - "@santoshyadavdev/ng-devtools": "file:../packages/ng-devtools", + "@santoshyadavdev/ng-devtools": "file:../../packages/ng-devtools", "@valor/nativescript-websockets": "^2.0.3", "rxjs": "~7.8.0", "zone.js": "~0.16.0" @@ -35,29 +35,55 @@ "typescript": "~6.0.0" } }, - "../packages/ng-devtools": { + "../../packages/ng-devtools": { "name": "@santoshyadavdev/ng-devtools", - "version": "0.0.1", + "version": "0.0.5", "license": "MIT", "dependencies": { + "@devframes/agentic": "^1.1.0", + "@devframes/hub": "^1.1.0", + "@devframes/hub-ui": "^1.1.0", "@valibot/to-json-schema": "^1.8.0", "cac": "^7.0.0", - "devframe": "^1.0.0", + "devframe": "^1.1.0", + "h3": "^1.15.11", "valibot": "^1.5.0" }, "bin": { "ng-devtools": "bin.mjs" }, + "devDependencies": { + "@angular/common": "^22.1.0", + "@angular/core": "^22.1.0", + "@nativescript/core": "^9.1.0", + "rxjs": "~7.8.0", + "tsdown": "^0.23.0" + }, + "engines": { + "node": ">=22" + }, "peerDependencies": { - "@devframes/agentic": "^1.0.0", - "@nativescript/core": ">=8.0.0" + "@angular/common": ">=20", + "@angular/core": ">=20", + "@nativescript/core": ">=8", + "rxjs": ">=7", + "vite": ">=5" }, "peerDependenciesMeta": { - "@devframes/agentic": { + "@angular/common": { + "optional": true + }, + "@angular/core": { "optional": true }, "@nativescript/core": { "optional": true + }, + "rxjs": { + "optional": true + }, + "vite": { + "optional": true } } }, @@ -5286,7 +5312,7 @@ ] }, "node_modules/@santoshyadavdev/ng-devtools": { - "resolved": "../packages/ng-devtools", + "resolved": "../../packages/ng-devtools", "link": true }, "node_modules/@standard-schema/spec": { diff --git a/app-nativescript/package.json b/examples/nativescript/package.json similarity index 90% rename from app-nativescript/package.json rename to examples/nativescript/package.json index 5e53209..4505d44 100644 --- a/app-nativescript/package.json +++ b/examples/nativescript/package.json @@ -1,5 +1,5 @@ { - "name": "app-nativescript", + "name": "nativescript-demo", "main": "./src/main.ts", "version": "1.0.0", "private": true, @@ -14,7 +14,7 @@ "@angular/router": "~22.0.0", "@nativescript/angular": "~22.0.0", "@nativescript/core": "~9.1.0", - "@santoshyadavdev/ng-devtools": "file:../packages/ng-devtools", + "@santoshyadavdev/ng-devtools": "file:../../packages/ng-devtools", "@valor/nativescript-websockets": "^2.0.3", "rxjs": "~7.8.0", "zone.js": "~0.16.0" diff --git a/app-nativescript/references.d.ts b/examples/nativescript/references.d.ts similarity index 100% rename from app-nativescript/references.d.ts rename to examples/nativescript/references.d.ts diff --git a/app-nativescript/src/app.css b/examples/nativescript/src/app.css similarity index 100% rename from app-nativescript/src/app.css rename to examples/nativescript/src/app.css diff --git a/app-nativescript/src/app/app.component.html b/examples/nativescript/src/app/app.component.html similarity index 100% rename from app-nativescript/src/app/app.component.html rename to examples/nativescript/src/app/app.component.html diff --git a/app-nativescript/src/app/app.component.ts b/examples/nativescript/src/app/app.component.ts similarity index 100% rename from app-nativescript/src/app/app.component.ts rename to examples/nativescript/src/app/app.component.ts diff --git a/app-nativescript/src/app/app.routes.ts b/examples/nativescript/src/app/app.routes.ts similarity index 100% rename from app-nativescript/src/app/app.routes.ts rename to examples/nativescript/src/app/app.routes.ts diff --git a/app-nativescript/src/app/devtools-showcase.component.ts b/examples/nativescript/src/app/devtools-showcase.component.ts similarity index 100% rename from app-nativescript/src/app/devtools-showcase.component.ts rename to examples/nativescript/src/app/devtools-showcase.component.ts diff --git a/app-nativescript/src/app/people/person-detail.component.html b/examples/nativescript/src/app/people/person-detail.component.html similarity index 100% rename from app-nativescript/src/app/people/person-detail.component.html rename to examples/nativescript/src/app/people/person-detail.component.html diff --git a/app-nativescript/src/app/people/person-detail.component.ts b/examples/nativescript/src/app/people/person-detail.component.ts similarity index 100% rename from app-nativescript/src/app/people/person-detail.component.ts rename to examples/nativescript/src/app/people/person-detail.component.ts diff --git a/app-nativescript/src/app/people/person.component.html b/examples/nativescript/src/app/people/person.component.html similarity index 100% rename from app-nativescript/src/app/people/person.component.html rename to examples/nativescript/src/app/people/person.component.html diff --git a/app-nativescript/src/app/people/person.component.ts b/examples/nativescript/src/app/people/person.component.ts similarity index 100% rename from app-nativescript/src/app/people/person.component.ts rename to examples/nativescript/src/app/people/person.component.ts diff --git a/app-nativescript/src/app/people/person.service.ts b/examples/nativescript/src/app/people/person.service.ts similarity index 100% rename from app-nativescript/src/app/people/person.service.ts rename to examples/nativescript/src/app/people/person.service.ts diff --git a/app-nativescript/src/app/people/person.ts b/examples/nativescript/src/app/people/person.ts similarity index 100% rename from app-nativescript/src/app/people/person.ts rename to examples/nativescript/src/app/people/person.ts diff --git a/app-nativescript/src/main.ts b/examples/nativescript/src/main.ts similarity index 100% rename from app-nativescript/src/main.ts rename to examples/nativescript/src/main.ts diff --git a/app-nativescript/src/polyfills.ts b/examples/nativescript/src/polyfills.ts similarity index 100% rename from app-nativescript/src/polyfills.ts rename to examples/nativescript/src/polyfills.ts diff --git a/app-nativescript/tailwind.config.js b/examples/nativescript/tailwind.config.js similarity index 100% rename from app-nativescript/tailwind.config.js rename to examples/nativescript/tailwind.config.js diff --git a/app-nativescript/tsconfig.json b/examples/nativescript/tsconfig.json similarity index 89% rename from app-nativescript/tsconfig.json rename to examples/nativescript/tsconfig.json index 0b7a9ee..a16b984 100644 --- a/app-nativescript/tsconfig.json +++ b/examples/nativescript/tsconfig.json @@ -15,7 +15,7 @@ "@/*": ["./src/*"], "@nativescript/core": ["./node_modules/@nativescript/core"], "@nativescript/core/*": ["./node_modules/@nativescript/core/*"], - "@santoshyadavdev/ng-devtools/*": ["../packages/ng-devtools/dist/*.mjs"] + "@santoshyadavdev/ng-devtools/*": ["../../packages/ng-devtools/dist/*.mjs"] } }, "include": ["src/tests/**/*.ts", "src/**/*.ios.ts", "src/**/*.android.ts"], diff --git a/app-nativescript/webpack.config.js b/examples/nativescript/webpack.config.js similarity index 100% rename from app-nativescript/webpack.config.js rename to examples/nativescript/webpack.config.js diff --git a/package.json b/package.json index e52f331..c2448f4 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "devtools:standalone": "node bin.mjs dev", "devtools:mcp": "node bin.mjs mcp", "devtools:report": "node bin.mjs build --outDir dist-report", - "devtools:nativescript": "cd app-nativescript && node ../bin.mjs dev --host 0.0.0.0 --no-auth", + "devtools:nativescript": "cd examples/nativescript && node ../../bin.mjs dev --host 0.0.0.0 --no-auth", "devtools:build-pkg": "pnpm --filter @santoshyadavdev/ng-devtools build", "devtools:publish": "pnpm --filter @santoshyadavdev/ng-devtools publish --access public", "extension:build": "pnpm devtools:build && rm -rf extension/ui && cp -r dist/devtools-ui extension/ui", diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c8c7160..0a61a01 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,8 @@ packages: - packages/* - examples/* + # Installs with npm from its own lockfile, outside the root install. + - '!examples/nativescript' packageExtensions: '@analogjs/vite-plugin-nitro': From 9f0a1ca32a90f074916cc2f8ba3335649103e730 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Tue, 29 Sep 2026 13:24:06 -0700 Subject: [PATCH 07/10] fix: address CodeRabbit review on NativeScript support - overlay: close the socket when session setup fails after connecting, so retries don't leak open sockets - example: getPerson returns Person | undefined; detail page shows a not-found state - README: warn that --host 0.0.0.0 --no-auth exposes the server --- README.md | 7 ++++ .../app/people/person-detail.component.html | 42 ++++++++++--------- .../src/app/people/person-detail.component.ts | 2 +- .../src/app/people/person.service.ts | 2 +- .../ng-devtools/src/overlay-nativescript.ts | 18 +++++++- 5 files changed, 49 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index ec6dd52..2007d04 100644 --- a/README.md +++ b/README.md @@ -368,6 +368,13 @@ npx @santoshyadavdev/ng-devtools dev --host 0.0.0.0 --no-auth Then open `http://localhost:9999/` for the UI, or point an MCP client at `http://localhost:9999/__mcp`. +> [!WARNING] +> `--host 0.0.0.0 --no-auth` exposes the devtools RPC and MCP endpoints, +> unauthenticated, to every host that can reach your machine. Use it only on a +> trusted network. The simulators reach the server over loopback, so drop +> `--host 0.0.0.0` unless a physical device needs it, and prefer binding to the +> one interface that device uses (e.g. `--host 192.168.1.20`). + ### Example app `examples/nativescript/` is a `ns create --ng` project wired up this way, with a small diff --git a/examples/nativescript/src/app/people/person-detail.component.html b/examples/nativescript/src/app/people/person-detail.component.html index 44f157d..c1a3212 100644 --- a/examples/nativescript/src/app/people/person-detail.component.html +++ b/examples/nativescript/src/app/people/person-detail.component.html @@ -16,24 +16,28 @@ } - - - - - +@if (person(); as p) { + + + + + - - - - + + + + - - - - - + + + + + +} @else { + +} diff --git a/examples/nativescript/src/app/people/person-detail.component.ts b/examples/nativescript/src/app/people/person-detail.component.ts index 321ea61..df49f98 100644 --- a/examples/nativescript/src/app/people/person-detail.component.ts +++ b/examples/nativescript/src/app/people/person-detail.component.ts @@ -22,7 +22,7 @@ export class PersonDetailComponent implements OnInit { personService = inject(PersonService); routerExtensions = inject(RouterExtensions); route = inject(ActivatedRoute); - person = signal(null); + person = signal(undefined); isAndroid = __ANDROID__; ngOnInit(): void { diff --git a/examples/nativescript/src/app/people/person.service.ts b/examples/nativescript/src/app/people/person.service.ts index e56e44f..a9ec353 100644 --- a/examples/nativescript/src/app/people/person.service.ts +++ b/examples/nativescript/src/app/people/person.service.ts @@ -113,7 +113,7 @@ export class PersonService { }, ]); - getPerson(id: number): Person { + getPerson(id: number): Person | undefined { return this.items().find((person) => person.id === id); } } diff --git a/packages/ng-devtools/src/overlay-nativescript.ts b/packages/ng-devtools/src/overlay-nativescript.ts index f0f6c64..4f63a42 100644 --- a/packages/ng-devtools/src/overlay-nativescript.ts +++ b/packages/ng-devtools/src/overlay-nativescript.ts @@ -129,6 +129,23 @@ async function connect(baseURL: string, intervalMs: number, onDisconnected: () = }, }, }); + try { + const stop = await startSession(rpc, intervalMs); + return () => { + closing = true; + stop(); + }; + } catch (error) { + closing = true; + rpc.close?.(); + throw error; + } +} + +async function startSession( + rpc: Awaited>, + intervalMs: number, +): Promise<() => void> { const my = rpc.scope('ng-devtools'); const pageId = Math.random().toString(36).slice(2, 6); @@ -252,7 +269,6 @@ async function connect(baseURL: string, intervalMs: number, onDisconnected: () = }); return () => { - closing = true; clearInterval(interval); restoreSignalHook(); ngrx.stop(); From 00c69247c23e99d7e3ef48ffb5d3342f58b071d7 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Fri, 2 Oct 2026 09:37:49 -0700 Subject: [PATCH 08/10] docs(docs): add the NativeScript setup guide The NativeScript section of the README moves to guides/nativescript, since the README now points to the docs site. The hub dock tables list the NativeScript dock's setup steps instead of a Coming Soon placeholder. --- .../src/content/getting-started/express.md | 2 +- .../content/getting-started/popup-and-hub.md | 2 +- apps/docs/src/content/guides/nativescript.md | 138 ++++++++++++++++++ apps/docs/src/ngmd.config.ts | 1 + 4 files changed, 141 insertions(+), 2 deletions(-) create mode 100644 apps/docs/src/content/guides/nativescript.md diff --git a/apps/docs/src/content/getting-started/express.md b/apps/docs/src/content/getting-started/express.md index 3801cf8..af1cf3e 100644 --- a/apps/docs/src/content/getting-started/express.md +++ b/apps/docs/src/content/getting-started/express.md @@ -173,7 +173,7 @@ A floating button appears on your page. It opens the devtools with one dock entr | Angular | Dashboard, components, routes, signals, injectors, forms, pipes, and SSR & HTTP | | NgRx | Store patterns from source, and live state and actions | | Analog | File routes, server calls, render modes and lint (a notice in non-Analog apps) | -| NativeScript | A **Coming Soon** placeholder | +| NativeScript | Setup steps for [NativeScript apps](../guides/nativescript.md) | | Capacitor | A **Coming Soon** placeholder | [Popup and hub](./popup-and-hub.md) covers the panel, its dock modes and deep links. diff --git a/apps/docs/src/content/getting-started/popup-and-hub.md b/apps/docs/src/content/getting-started/popup-and-hub.md index 791b44b..dddf72e 100644 --- a/apps/docs/src/content/getting-started/popup-and-hub.md +++ b/apps/docs/src/content/getting-started/popup-and-hub.md @@ -113,7 +113,7 @@ When the page's server mounts the hub (`/__devframes/`), the button opens the wh | Angular | Dashboard, Components, Routes, Signals, Injectors, Forms, Pipes, and SSR & HTTP | | NgRx | The Store tab | | Analog | The Analog tab, or a notice in apps that do not use Analog | -| NativeScript | A **Coming Soon** placeholder | +| NativeScript | Setup steps for [NativeScript apps](../guides/nativescript.md) | | Capacitor | A **Coming Soon** placeholder | ### Full-page viewer diff --git a/apps/docs/src/content/guides/nativescript.md b/apps/docs/src/content/guides/nativescript.md new file mode 100644 index 0000000..c2b9fe9 --- /dev/null +++ b/apps/docs/src/content/guides/nativescript.md @@ -0,0 +1,138 @@ +--- +title: Set up NativeScript +description: Inspect a NativeScript Angular app from the simulator or a device, step by step. +--- + + + A NativeScript overlay walks the native view tree and reports over a WebSocket to a devtools server on your machine. + + +# Set up NativeScript + +This guide adds the devtools to a NativeScript Angular app. The app has no DOM, so a separate overlay walks the native view tree through *Angular's debug API and reports to the standalone devtools server. + +## What you get + + + + The component tree, the signal graph and the injector tree, including environment injectors and their providers. + + + Signal stores and the change log, when your app uses NgRx. + + + The highlight tool outlines a component's view on the simulator or device. + + + /__mcp on the devtools server. The source scanners read the app's src/. + + + +## The flow + + + + Add @santoshyadavdev/ng-devtools and @valor/nativescript-websockets. + + + Import @valor/nativescript-websockets first in src/polyfills.ts. + + + Call initNativeScriptOverlay() in src/main.ts, before the app bootstraps. + + + Start ng-devtools dev in the app's folder and open the UI. + + + +## Step 1: Install + +```bash group="install" name="npm" image="https://cdn.simpleicons.org/npm/CB3837" active +npm install @santoshyadavdev/ng-devtools @valor/nativescript-websockets +``` + +```bash group="install" name="pnpm" image="https://cdn.simpleicons.org/pnpm/F69220" +pnpm add @santoshyadavdev/ng-devtools @valor/nativescript-websockets +``` + +```bash group="install" name="yarn" image="https://cdn.simpleicons.org/yarn/2C8EBB" +yarn add @santoshyadavdev/ng-devtools @valor/nativescript-websockets +``` + +```bash group="install" name="bun" image="https://bun.sh/logo.svg" +bun add @santoshyadavdev/ng-devtools @valor/nativescript-websockets +``` + +## Step 2: Add a WebSocket global + +The overlay talks to the server over a WebSocket, and the NativeScript runtime has no `WebSocket` global. Import the polyfill first: + +```ts +// src/polyfills.ts +import '@valor/nativescript-websockets'; +``` + +## Step 3: Start the overlay + +```ts {2,4-6} +// src/main.ts +import {initNativeScriptOverlay} from '@santoshyadavdev/ng-devtools/overlay-nativescript'; + +if (__DEV__) { + initNativeScriptOverlay(); +} +``` + +Call it before `runNativeScriptAngularApp()`. The injector inspector relies on *Angular's injector profiler, which *Angular only wires while it creates the platform. + +### Where the overlay connects + +| Target | Default URL | +| ---------------- | ------------------------ | +| iOS simulator | `http://localhost:9999/` | +| Android emulator | `http://10.0.2.2:9999/` | +| Physical device | Pass `{ baseURL }` | + +For a physical device, pass the address of your machine as `baseURL`, and allow plain HTTP to that address in `Info.plist` and `AndroidManifest.xml`. + +## Step 4: Run the devtools server + +Run the server in the app's folder, so the source scanners read its `src/`: + +```bash +cd my-nativescript-app +npx @santoshyadavdev/ng-devtools dev --host 0.0.0.0 --no-auth +``` + +| What | Where | +| ------------ | ----------------------------- | +| Devtools UI | `http://localhost:9999/` | +| MCP endpoint | `http://localhost:9999/__mcp` | + + + --host 0.0.0.0 --no-auth exposes the devtools RPC and MCP endpoints, unauthenticated, to every host that can reach your machine. The simulators reach the server over loopback, so drop --host 0.0.0.0 unless a physical device needs it, and prefer the one interface that device uses (for example --host 192.168.1.20). + + +See [Standalone CLI](../getting-started/cli.md) for the other server options and [Security](../security.md) for what `--no-auth` turns off. + +## Try the demo + +`examples/nativescript` is a `ns create --ng` project wired up this way, with a small showcase component (signals, a computed, an effect and a component-level provider). It is tested on the iOS simulator. Android is untested. + +The demo maps `@santoshyadavdev/ng-devtools/*` to the package's build output in `packages/ng-devtools/dist`, so build the package first: + +```bash +pnpm devtools:build-pkg +pnpm devtools:nativescript +cd examples/nativescript && npm install && ns debug ios --no-hmr +``` + +`pnpm devtools:nativescript` starts the devtools server scanning `examples/nativescript/src`. + +## Where to next + + + + + + diff --git a/apps/docs/src/ngmd.config.ts b/apps/docs/src/ngmd.config.ts index b718647..0496ad2 100644 --- a/apps/docs/src/ngmd.config.ts +++ b/apps/docs/src/ngmd.config.ts @@ -212,6 +212,7 @@ const config: NgmdConfig = { {label: 'Restore NgRx signal state', href: '/guides/ngrx-signals-restore'}, {label: 'Set up SSR & HTTP', href: '/guides/ssr-http'}, {label: 'Set up Analog', href: '/guides/analog'}, + {label: 'Set up NativeScript', href: '/guides/nativescript'}, ], }, { From 81a3a035b1a62e9c743c03a79aa3131f0d37b995 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Fri, 2 Oct 2026 09:37:50 -0700 Subject: [PATCH 09/10] fix(ui): link the NativeScript card to the docs guide The README no longer has a NativeScript section. Rebuilds extension/ui. --- app/src/app.ts | 2 +- ...z-BqZcKNTn.js => browser-agent-rpc-BXhoSh1z-DazqZ0Am.js} | 2 +- .../ui/assets/{index-aQsUflnN.js => index-C-1Q6pQ2.js} | 6 +++--- extension/ui/index.html | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename extension/ui/assets/{browser-agent-rpc-BXhoSh1z-BqZcKNTn.js => browser-agent-rpc-BXhoSh1z-DazqZ0Am.js} (93%) rename extension/ui/assets/{index-aQsUflnN.js => index-C-1Q6pQ2.js} (97%) diff --git a/app/src/app.ts b/app/src/app.ts index 4d6cb96..83d0015 100644 --- a/app/src/app.ts +++ b/app/src/app.ts @@ -91,7 +91,7 @@ const NATIVESCRIPT_SETUP: ComingSoonInfo = { ], link: { label: 'NativeScript setup guide', - href: 'https://github.com/santoshyadavdev/angular-devtools#nativescript', + href: 'https://santoshyadavdev.github.io/angular-devtools/guides/nativescript', }, }; diff --git a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-BqZcKNTn.js b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-DazqZ0Am.js similarity index 93% rename from extension/ui/assets/browser-agent-rpc-BXhoSh1z-BqZcKNTn.js rename to extension/ui/assets/browser-agent-rpc-BXhoSh1z-DazqZ0Am.js index 69efd90..0999254 100644 --- a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-BqZcKNTn.js +++ b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-DazqZ0Am.js @@ -1 +1 @@ -import{t as e}from"./index-aQsUflnN.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a).catch(()=>{}))}))},s=a(o),l=e.events.on(`connection:status`,e=>{e===`connected`&&o()});return o(),()=>{n=!0,s(),l()}}export{l as setupBrowserAgentRpcBridge}; \ No newline at end of file +import{t as e}from"./index-C-1Q6pQ2.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a).catch(()=>{}))}))},s=a(o),l=e.events.on(`connection:status`,e=>{e===`connected`&&o()});return o(),()=>{n=!0,s(),l()}}export{l as setupBrowserAgentRpcBridge}; \ No newline at end of file diff --git a/extension/ui/assets/index-aQsUflnN.js b/extension/ui/assets/index-C-1Q6pQ2.js similarity index 97% rename from extension/ui/assets/index-aQsUflnN.js rename to extension/ui/assets/index-C-1Q6pQ2.js index 390cf57..31ea743 100644 --- a/extension/ui/assets/index-aQsUflnN.js +++ b/extension/ui/assets/index-C-1Q6pQ2.js @@ -5,7 +5,7 @@ `):``,this.name=`UnsubscriptionError`,this.errors=t}});function mr(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var hr=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a){if(this._parentage=null,Array.isArray(a))try{for(var o=cr(a),s=o.next();!s.done;s=o.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else a.remove(this)}var c=this.initialTeardown;if(dr(c))try{c()}catch(e){i=e instanceof pr?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=cr(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{vr(f)}catch(e){i??=[],e instanceof pr?i=ur(ur([],lr(i)),lr(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new pr(i)}},e.prototype.add=function(t){if(t&&t!==this){if(this.closed)vr(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=this._finalizers??[]).push(t)}}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&mr(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&mr(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),gr=hr.EMPTY;function _r(e){return e instanceof hr||e&&`closed`in e&&dr(e.remove)&&dr(e.add)&&dr(e.unsubscribe)}function vr(e){dr(e)?e():e.unsubscribe()}var yr={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},br={setTimeout:function(e,t){var n=[...arguments].slice(2),r=br.delegate;return r?.setTimeout?r.setTimeout.apply(r,ur([e,t],lr(n))):setTimeout.apply(void 0,ur([e,t],lr(n)))},clearTimeout:function(e){return(br.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function xr(e){br.setTimeout(function(){var t=yr.onUnhandledError;if(t)t(e);else throw e})}function Sr(){}var Cr=(function(){return Er(`C`,void 0,void 0)})();function wr(e){return Er(`E`,void 0,e)}function Tr(e){return Er(`N`,e,void 0)}function Er(e,t,n){return{kind:e,value:t,error:n}}var Dr=null;function Or(e){if(yr.useDeprecatedSynchronousErrorHandling){var t=!Dr;if(t&&(Dr={errorThrown:!1,error:null}),e(),t){var n=Dr,r=n.errorThrown,i=n.error;if(Dr=null,r)throw i}}else e()}function kr(e){yr.useDeprecatedSynchronousErrorHandling&&Dr&&(Dr.errorThrown=!0,Dr.error=e)}var Ar=function(e){sr(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,_r(t)&&t.add(n)):n.destination=Rr,n}return t.create=function(e,t,n){return new Pr(e,t,n)},t.prototype.next=function(e){this.isStopped?Lr(Tr(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Lr(wr(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Lr(Cr,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(hr),jr=Function.prototype.bind;function Mr(e,t){return jr.call(e,t)}var Nr=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Fr(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Fr(e)}else Fr(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Fr(e)}},e}(),Pr=function(e){sr(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(dr(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&yr.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Mr(t.next,o),error:t.error&&Mr(t.error,o),complete:t.complete&&Mr(t.complete,o)}):a=t}return i.destination=new Nr(a),i}return t}(Ar);function Fr(e){yr.useDeprecatedSynchronousErrorHandling?kr(e):xr(e)}function Ir(e){throw e}function Lr(e,t){var n=yr.onStoppedNotification;n&&br.setTimeout(function(){return n(e,t)})}var Rr={closed:!0,next:Sr,error:Ir,complete:Sr},zr=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function Br(e){return e}function Vr(e){return e.length===0?Br:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var Hr=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this,i=Gr(e)?e:new Pr(e,t,n);return Or(function(){var e=r,t=e.operator,n=e.source;i.add(t?t.call(i,n):n?r._subscribe(i):r._trySubscribe(i))}),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return t=Ur(t),new t(function(t,r){var i=new Pr({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){return this.source?.subscribe(e)},e.prototype[zr]=function(){return this},e.prototype.pipe=function(){return Vr([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=Ur(e),new e(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function Ur(e){return e??yr.Promise??Promise}function Wr(e){return e&&dr(e.next)&&dr(e.error)&&dr(e.complete)}function Gr(e){return e&&e instanceof Ar||Wr(e)&&_r(e)}function Kr(e){return dr(e?.lift)}function qr(e){return function(t){if(Kr(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw TypeError(`Unable to lift unknown Observable type`)}}function Jr(e,t,n,r,i){return new Yr(e,t,n,r,i)}var Yr=function(e){sr(t,e);function t(t,n,r,i,a,o){var s=e.call(this,t)||this;return s.onFinalize=a,s.shouldUnsubscribe=o,s._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((t=this.onFinalize)==null||t.call(this))}},t}(Ar),Xr=fr(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),Zr=function(e){sr(t,e);function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return t.prototype.lift=function(e){var t=new Qr(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Xr},t.prototype.next=function(e){var t=this;Or(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=cr(t.currentObservers),a=i.next();!a.done;a=i.next())a.value.next(e)}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;Or(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;Or(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){return this.observers?.length>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?gr:(this.currentObservers=null,a.push(e),new hr(function(){t.currentObservers=null,mr(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new Hr;return e.source=this,e},t.create=function(e,t){return new Qr(e,t)},t}(Hr),Qr=function(e){sr(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??gr},t}(Zr),$r=function(e){sr(t,e);function t(t){var n=e.call(this)||this;return n._value=t,n}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return!n.closed&&t.next(this._value),n},t.prototype.getValue=function(){var e=this,t=e.hasError,n=e.thrownError,r=e._value;if(t)throw n;return this._throwIfClosed(),r},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(Zr);function ei(e,t){return qr(function(n,r){var i=0;n.subscribe(Jr(r,function(n){r.next(e.call(t,n,i++))}))})}var ti=`https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss`,T=class extends Error{code;constructor(e,t){super(ri(e,t)),this.code=e}};function ni(e){return`NG0${Math.abs(e)}`}function ri(e,t){return`${ni(e)}${t?`: `+t:``}`}function ii(e){for(let t in e)if(e[t]===ii)return t;throw Error(``)}function ai(e){if(typeof e==`string`)return e;if(Array.isArray(e))return`[${e.map(ai).join(`, `)}]`;if(e==null)return``+e;let t=e.overriddenName||e.name;if(t)return`${t}`;let n=e.toString();if(n==null)return``+n;let r=n.indexOf(` `);return r>=0?n.slice(0,r):n}function oi(e,t){return e?t?`${e} ${t}`:e:t||``}var si=ii({__forward_ref__:ii});function ci(e){return e.__forward_ref__=ci,e}function li(e){return ui(e)?e():e}function ui(e){return typeof e==`function`&&Object.hasOwn(e,si)&&e.__forward_ref__===ci}function di(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function fi(e){return pi(e,gi)}function pi(e,t){return Object.hasOwn(e,t)&&e[t]||null}function mi(e){return(e?.[gi]??null)||null}function hi(e){return e&&Object.hasOwn(e,_i)?e[_i]:null}var gi=ii({ɵprov:ii}),_i=ii({ɵinj:ii}),vi=class{_desc;ngMetadataName=`InjectionToken`;ɵprov;constructor(e,t){this._desc=e,this.ɵprov=void 0,typeof t==`number`?this.__NG_ELEMENT_ID__=t:t!==void 0&&(this.ɵprov=di({token:this,providedIn:t.providedIn||`root`,factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function yi(e){return e&&!!e.ɵproviders}var bi=ii({ɵcmp:ii}),xi=ii({ɵdir:ii}),Si=ii({ɵpipe:ii}),Ci=ii({ɵfac:ii}),wi=ii({__NG_ELEMENT_ID__:ii}),Ti=ii({__NG_ENV_ID__:ii});function Ei(e){return ki(e,`@Component`),e[bi]||null}function Di(e){return ki(e,`@Directive`),e[xi]||null}function Oi(e){return ki(e,`@Pipe`),e[Si]||null}function ki(e,t){if(e==null)throw new T(-919,!1)}function Ai(e){return typeof e==`string`?e:e==null?``:String(e)}var ji=ii({ngErrorCode:ii}),Mi=ii({ngErrorMessage:ii}),Ni=ii({ngTokenPath:ii});function Pi(e,t){return Ii(``,-200,t)}function Fi(e,t){throw new T(-201,!1)}function Ii(e,t,n){let r=new T(t,e);return r[ji]=t,r[Mi]=e,n&&(r[Ni]=n),r}function Li(e){return e[ji]}var Ri;function zi(){return Ri}function Bi(e){let t=Ri;return Ri=e,t}function Vi(e,t,n){let r=fi(e);if(r&&r.providedIn==`root`)return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;Fi(e,``)}var Hi=globalThis,Ui={},Wi=`__NG_DI_FLAG__`,Gi=class{injector;constructor(e){this.injector=e}retrieve(e,t){let n=Ji(t)||0;try{return this.injector.get(e,n&8?null:Ui,n)}catch(e){if(er(e))return e;throw e}}};function Ki(e,t=0){let n=Zn();if(n===void 0)throw new T(-203,!1);if(n===null)return Vi(e,void 0,t);{let r=Yi(t),i=n.retrieve(e,r);if(er(i)){if(r.optional)return null;throw i}return i}}function qi(e,t=0){return(zi()||Ki)(li(e),t)}function E(e,t){return qi(e,Ji(t))}function Ji(e){return e===void 0||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Yi(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function Xi(e){let t=[];for(let n=0;nArray.isArray(e)?ta(e,t):t(e))}function na(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function ra(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function ia(e,t,n,r){let i=e.length;if(i==t)e.push(n,r);else if(i===1)e.push(r,e[0]),e[0]=n;else{for(i--,e.push(e[i-1],e[i]);i>t;){let t=i-2;e[i]=e[t],i--}e[t]=n,e[t+1]=r}}function aa(e,t,n){let r=sa(e,t);return r>=0?e[r|1]=n:(r=~r,ia(e,r,t,n)),r}function oa(e,t){let n=sa(e,t);if(n>=0)return e[n|1]}function sa(e,t){return ca(e,t,1)}function ca(e,t,n){let r=0,i=e.length>>n;for(;i!==r;){let a=r+(i-r>>1),o=e[a<t?i=a:r=a+1}return~(i<{n.push(e)};return ta(t,e=>{let t=e;va(t,a,[],r)&&(i||=[],i.push(t))}),i!==void 0&&_a(i,a),n}function _a(e,t){for(let n=0;n{t(e,r)})}}function va(e,t,n,r){if(e=li(e),!e)return!1;let i=null,a=hi(e),o=!a&&Ei(e);if(!a&&!o){let t=e.ngModule;if(a=hi(t),a)i=t;else return!1}else if(o&&!o.standalone)return!1;else i=e;let s=r.has(i);if(o){if(s)return!1;if(r.add(i),o.dependencies){let e=typeof o.dependencies==`function`?o.dependencies():o.dependencies;for(let i of e)va(i,t,n,r)}}else if(a){if(a.imports!=null&&!s){r.add(i);let e;try{ta(a.imports,i=>{va(i,t,n,r)&&(e||=[],e.push(i))})}finally{}e!==void 0&&_a(e,t)}if(!s){let e=Qi(i)||(()=>new i);t({provide:i,useFactory:e,deps:ua},i),t({provide:pa,useValue:i,multi:!0},i),t({provide:da,useValue:()=>qi(i),multi:!0},i)}let o=a.providers;if(o!=null&&!s){let n=e;ya(o,e=>{t(e,n)})}}else return!1;return i!==e&&e.providers!==void 0}function ya(e,t){for(let n of e)yi(n)&&(n=n.ɵproviders),Array.isArray(n)?ya(n,t):t(n)}var ba=ii({provide:String,useValue:ii});function xa(e){return typeof e==`object`&&!!e&&ba in e}function Sa(e){return!!(e&&e.useExisting)}function Ca(e){return!!(e&&e.useFactory)}function wa(e){return typeof e==`function`}var Ta=new vi(``),Ea={},Da={},Oa=void 0;function ka(){return Oa===void 0&&(Oa=new ma),Oa}var Aa=class{},ja=class extends Aa{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(e,t,n,r){super(),this.parent=t,this.source=n,this.scopes=r,Va(e,e=>this.processProvider(e)),this.records.set(fa,La(void 0,this)),r.has(`environment`)&&this.records.set(Aa,La(void 0,this));let i=this.records.get(Ta);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(pa,ua,{self:!0}))}retrieve(e,t){let n=Ji(t)||0;try{return this.get(e,Ui,n)}catch(e){if(er(e))return e;throw e}}destroy(){Ia(this),this._destroyed=!0;let e=w(null);try{for(let e of this._ngOnDestroyHooks)e.ngOnDestroy();let e=this._onDestroyHooks;this._onDestroyHooks=[];for(let t of e)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),w(e)}}onDestroy(e){return Ia(this),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){Ia(this);let t=Qn(this),n=Bi(void 0);try{return e()}finally{Qn(t),Bi(n)}}get(e,t=Ui,n){if(Ia(this),Object.hasOwn(e,Ti))return e[Ti](this);let r=Ji(n),i=Qn(this),a=Bi(void 0);try{if(!(r&4)){let t=this.records.get(e);if(t===void 0){let n=Ba(e)&&fi(e);t=n&&this.injectableDefInScope(n)?La(Ma(e),Ea):null,this.records.set(e,t)}if(t!=null)return this.hydrate(e,t,r)}let n=r&2?ka():this.parent;return t=r&8&&t===Ui?null:t,n.get(e,t)}catch(e){let t=Li(e);throw t===-200||t===-201?new T(t,null):e}finally{Bi(a),Qn(i)}}resolveInjectorInitializers(){let e=w(null),t=Qn(this),n=Bi(void 0);try{let e=this.get(da,ua,{self:!0});for(let t of e)t()}finally{Qn(t),Bi(n),w(e)}}toString(){return`R3Injector[...]`}processProvider(e){e=li(e);let t=wa(e)?e:li(e&&e.provide),n=Pa(e);if(!wa(e)&&e.multi===!0){let n=this.records.get(t);n||(n=La(void 0,Ea,!0),n.factory=()=>Xi(n.multi),this.records.set(t,n)),t=e,n.multi.push(e)}this.records.set(t,n)}hydrate(e,t,n){let r=w(null);try{if(t.value===Da)throw Pi(``);return t.value===Ea&&(t.value=Da,t.value=t.factory(void 0,n)),typeof t.value==`object`&&t.value&&za(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{w(r)}}injectableDefInScope(e){if(!e.providedIn)return!1;let t=li(e.providedIn);return typeof t==`string`?t===`any`||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(e){let t=this._onDestroyHooks.indexOf(e);t!==-1&&this._onDestroyHooks.splice(t,1)}};function Ma(e){let t=fi(e),n=t===null?Qi(e):t.factory;if(n!==null)return n;if(e instanceof vi)throw new T(-204,!1);if(e instanceof Function)return Na(e);throw new T(-204,!1)}function Na(e){if(e.length>0)throw new T(-204,!1);let t=mi(e);return t===null?()=>new e:()=>t.factory(e)}function Pa(e){return xa(e)?La(void 0,e.useValue):La(Fa(e),Ea)}function Fa(e,t,n){let r;if(wa(e)){let t=li(e);return Qi(t)||Ma(t)}if(xa(e))r=()=>li(e.useValue);else if(Ca(e))r=()=>e.useFactory(...Xi(e.deps||[]));else if(Sa(e))r=(t,n)=>qi(li(e.useExisting),n!==void 0&&n&8?8:void 0);else{let t=li(e&&(e.useClass||e.provide));if(Ra(e))r=()=>new t(...Xi(e.deps));else return Qi(t)||Ma(t)}return r}function Ia(e){if(e.destroyed)throw new T(-205,!1)}function La(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Ra(e){return!!e.deps}function za(e){return typeof e==`object`&&!!e&&typeof e.ngOnDestroy==`function`}function Ba(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function Va(e,t){for(let n of e)Array.isArray(n)?Va(n,t):n&&yi(n)?Va(n.ɵproviders,t):t(n)}function Ha(e,t){let n;e instanceof ja?(Ia(e),n=e):n=new Gi(e);let r=Qn(n),i=Bi(void 0);try{return t()}finally{Qn(r),Bi(i)}}function Ua(){return zi()!==void 0||Zn()!=null}var Wa=1;function Ga(e){return Array.isArray(e)&&typeof e[Wa]==`object`}function Ka(e){return Array.isArray(e)&&e[Wa]===!0}function qa(e){return!!(e.flags&4)}function Ja(e){return e.componentOffset>-1}function Ya(e){return(e.flags&1)==1}function Xa(e){return!!e.template}function Za(e){return!!(e[2]&512)}function Qa(e){return(e[2]&256)==256}var $a=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})($a||{}),eo=`math`;function to(e){for(;Array.isArray(e);)e=e[0];return e}function no(e,t){return to(t[e])}function ro(e,t){return to(t[e.index])}function io(e,t){return e.data[t]}function ao(e,t){return e[t]}function oo(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function so(e,t){let n=t[e];return Ga(n)?n:n[0]}function co(e){return(e[2]&128)==128}function lo(e){return Ka(e[3])}function uo(e,t){return t==null?null:e[t]}function fo(e){e[17]=0}function po(e){e[2]&1024||(e[2]|=1024,co(e)&&_o(e))}function mo(e,t){for(;e>0;)t=t[14],e--;return t}function ho(e){return!!(e[2]&9216||e[24]?.dirty)}function go(e){e[10].changeDetectionScheduler?.notify(8),e[2]&64&&(e[2]|=1024),ho(e)&&_o(e)}function _o(e){e[10].changeDetectionScheduler?.notify(0);let t=bo(e);for(;t!==null&&!(t[2]&8192||(t[2]|=8192,!co(t)));)t=bo(t)}function vo(e,t){if(Qa(e))throw new T(911,!1);e[21]===null&&(e[21]=[]),e[21].push(t)}function yo(e,t){if(e[21]===null)return;let n=e[21].indexOf(t);n!==-1&&e[21].splice(n,1)}function bo(e){let t=e[3];return Ka(t)?t[3]:t}function xo(e){return e[7]??=[]}function So(e){return e.cleanup??=[]}function Co(e,t,n,r){let i=xo(t);i.push(n),e.firstCreatePass&&So(e).push(r,i.length-1)}var D={lFrame:is(null),bindingsEnabled:!0,skipHydrationRootTNode:null},wo=!1;function To(){return D.lFrame.elementDepthCount}function Eo(){D.lFrame.elementDepthCount++}function Do(){D.lFrame.elementDepthCount--}function Oo(){return D.bindingsEnabled}function ko(){return D.skipHydrationRootTNode!==null}function Ao(e){return D.skipHydrationRootTNode===e}function jo(){D.skipHydrationRootTNode=null}function O(){return D.lFrame.lView}function Mo(){return D.lFrame.tView}function k(e){return D.lFrame.contextLView=e,e[8]}function A(e){return D.lFrame.contextLView=null,e}function No(){let e=Po();for(;e!==null&&e.type===64;)e=e.parent;return e}function Po(){return D.lFrame.currentTNode}function Fo(){let e=D.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Io(e,t){let n=D.lFrame;n.currentTNode=e,n.isParent=t}function Lo(){return D.lFrame.isParent}function Ro(){D.lFrame.isParent=!1}function zo(){return D.lFrame.contextLView}function Bo(){return wo}function Vo(e){let t=wo;return wo=e,t}function Ho(){let e=D.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Uo(){return D.lFrame.bindingIndex}function Wo(e){return D.lFrame.bindingIndex=e}function Go(){return D.lFrame.bindingIndex++}function Ko(e){let t=D.lFrame,n=t.bindingIndex;return t.bindingIndex+=e,n}function qo(){return D.lFrame.inI18n}function Jo(e,t){let n=D.lFrame;n.bindingIndex=n.bindingRootIndex=e,Xo(t)}function Yo(){return D.lFrame.currentDirectiveIndex}function Xo(e){D.lFrame.currentDirectiveIndex=e}function Zo(e){let t=D.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function Qo(){return D.lFrame.currentQueryIndex}function $o(e){D.lFrame.currentQueryIndex=e}function es(e){let t=e[1];return t.type===2?t.declTNode:t.type===1?e[5]:null}function ts(e,t,n){if(n&4){let r=t,i=e;for(;r=r.parent,r===null&&!(n&1)&&(r=es(i),!(r===null||(i=i[14],r.type&10))););if(r===null)return!1;t=r,e=i}let r=D.lFrame=rs();return r.currentTNode=t,r.lView=e,!0}function ns(e){let t=rs(),n=e[1];D.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function rs(){let e=D.lFrame,t=e===null?null:e.child;return t===null?is(e):t}function is(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function as(){let e=D.lFrame;return D.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var os=as;function ss(){let e=as();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function cs(e){return(D.lFrame.contextLView=mo(e,D.lFrame.contextLView))[8]}function ls(){return D.lFrame.selectedIndex}function us(e){D.lFrame.selectedIndex=e}function ds(){let e=D.lFrame;return io(e.tView,e.selectedIndex)}function fs(){D.lFrame.currentNamespace=`svg`}function ps(){ms()}function ms(){D.lFrame.currentNamespace=null}function hs(){return D.lFrame.currentNamespace}var gs=!0;function _s(){return gs}function vs(e){gs=e}function ys(e,t=null,n=null,r){let i=bs(e,t,n,r);return i.resolveInjectorInitializers(),i}function bs(e,t=null,n=null,r,i=new Set){return new ja([n||ua,ha(e)],t||ka(),null,i)}var xs=class e{static THROW_IF_NOT_FOUND=Ui;static NULL=new ma;static create(e,t){if(Array.isArray(e))return ys({name:``},t,e,``);{let t=e.name??``;return ys({name:t},e.parent,e.providers,t)}}static ɵprov=di({token:e,providedIn:`any`,factory:()=>qi(fa)});static __NG_ELEMENT_ID__=-1},Ss=new vi(``),Cs=class{static __NG_ELEMENT_ID__=Ts;static __NG_ENV_ID__=e=>e},ws=class extends Cs{_lView;constructor(e){super(),this._lView=e}get destroyed(){return Qa(this._lView)}onDestroy(e){let t=this._lView;return vo(t,e),()=>yo(t,e)}};function Ts(){return new ws(O())}var Es=new vi(``),Ds=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new $r(!1);debugTaskTracker=E(Es,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new Hr(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let e=this.taskId++;return this.pendingTasks.add(e),this.debugTaskTracker?.add(e),e}has(e){return this.pendingTasks.has(e)}remove(e){this.pendingTasks.delete(e),this.debugTaskTracker?.remove(e),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Os=class extends Zr{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(e=!1){super(),this.__isAsync=e,Ua()&&(this.destroyRef=E(Cs,{optional:!0})??void 0,this.pendingTasks=E(Ds,{optional:!0})??void 0)}emit(e){let t=w(null);try{super.next(e)}finally{w(t)}}subscribe(e,t,n){let r=e,i=t||(()=>null),a=n;if(e&&typeof e==`object`){let t=e;r=t.next?.bind(t),i=t.error?.bind(t),a=t.complete?.bind(t)}this.__isAsync&&(i=this.wrapInTimeout(i),r&&=this.wrapInTimeout(r),a&&=this.wrapInTimeout(a));let o=super.subscribe({next:r,error:i,complete:a});return e instanceof hr&&e.add(o),o}wrapInTimeout(e){return t=>{let n=this.pendingTasks?.add();setTimeout(()=>{try{e(t)}finally{n!==void 0&&this.pendingTasks?.remove(n)}})}}};function ks(...e){}function As(e){let t,n;function r(){e=ks;try{n!==void 0&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame==`function`&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function js(e){return queueMicrotask(()=>e()),()=>{e=ks}}var Ms=`isAngularZone`,Ns=`isAngularZone_ID`,Ps=0,Fs=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new Os(!1);onMicrotaskEmpty=new Os(!1);onStable=new Os(!1);onError=new Os(!1);constructor(e){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:i=!1}=e;if(typeof Zone>`u`)throw new T(908,!1);Zone.assertZonePatched();let a=this;a._nesting=0,a._outer=a._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(a._inner=a._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(a._inner=a._inner.fork(Zone.longStackTraceZoneSpec)),a.shouldCoalesceEventChangeDetection=!r&&n,a.shouldCoalesceRunChangeDetection=r,a.callbackScheduled=!1,a.scheduleInRootZone=i,zs(a)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get(Ms)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new T(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new T(909,!1)}run(e,t,n){return this._inner.run(e,t,n)}runTask(e,t,n,r){let i=this._inner,a=i.scheduleEventTask(`NgZoneEvent: `+r,e,Is,ks,ks);try{return i.runTask(a,t,n)}finally{i.cancelTask(a)}}runGuarded(e,t,n){return this._inner.runGuarded(e,t,n)}runOutsideAngular(e){return this._outer.run(e)}},Is={};function Ls(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Rs(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){As(()=>{e.callbackScheduled=!1,Bs(e),e.isCheckStableRunning=!0,Ls(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Bs(e)}function zs(e){let t=()=>{Rs(e)},n=Ps++;e._inner=e._inner.fork({name:`angular`,properties:{[Ms]:!0,[Ns]:n,[Ns+n]:!0},onInvokeTask:(n,r,i,a,o,s)=>{if(Ws(s))return n.invokeTask(i,a,o,s);try{return Vs(e),n.invokeTask(i,a,o,s)}finally{(e.shouldCoalesceEventChangeDetection&&a.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),Hs(e)}},onInvoke:(n,r,i,a,o,s,c)=>{try{return Vs(e),n.invoke(i,a,o,s,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!Gs(s)&&t(),Hs(e)}},onHasTask:(t,n,r,i)=>{t.hasTask(r,i),n===r&&(i.change==`microTask`?(e._hasPendingMicrotasks=i.microTask,Bs(e),Ls(e)):i.change==`macroTask`&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(t,n,r,i)=>(t.handleError(r,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}function Bs(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0)}function Vs(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Hs(e){e._nesting--,Ls(e)}var Us=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new Os;onMicrotaskEmpty=new Os;onStable=new Os;onError=new Os;run(e,t,n){return e.apply(t,n)}runGuarded(e,t,n){return e.apply(t,n)}runOutsideAngular(e){return e()}runTask(e,t,n,r){return e.apply(t,n)}};function Ws(e){return Ks(e,`__ignore_ng_zone__`)}function Gs(e){return Ks(e,`__scheduler_tick__`)}function Ks(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var qs=class{_console=console;handleError(e){this._console.error(`ERROR`,e)}},Js=new vi(``,{factory:()=>{let e=E(Fs),t=E(Aa),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(qs),n.handleError(r))})}}}),Ys={provide:da,useValue:()=>{E(qs,{optional:!0})},multi:!0};function j(e,t){let[n,r,i]=Hn(e,t?.equal),a=n;return a[dn],a.set=r,a.update=i,a.asReadonly=Xs.bind(a),a}function Xs(){let e=this[dn];if(e.readonlyFn===void 0){let t=()=>this();t[dn]=e,e.readonlyFn=t}return e.readonlyFn}var Zs=new vi(``,{factory:()=>Qs}),Qs=`ng`,$s=new vi(``),ec=new vi(``,{providedIn:`platform`,factory:()=>`unknown`}),tc=new vi(``,{factory:()=>E(Ss).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null}),nc=(()=>{class e{view;node;constructor(e,t){this.view=e,this.node=t}static __NG_ELEMENT_ID__=rc}return e})();function rc(){return new nc(O(),No())}var ic=class{},ac=new vi(``,{factory:()=>!0}),oc=new vi(``),sc=(()=>{class e{static ɵprov=di({token:e,providedIn:`root`,factory:()=>new cc})}return e})(),cc=class{dirtyEffectCount=0;queues=new Map;add(e){this.enqueue(e),this.schedule(e)}schedule(e){e.dirty&&this.dirtyEffectCount++}remove(e){let t=e.zone,n=this.queues.get(t);n.has(e)&&(n.delete(e),e.dirty&&this.dirtyEffectCount--)}enqueue(e){let t=e.zone;this.queues.has(t)||this.queues.set(t,new Set);let n=this.queues.get(t);n.has(e)||n.add(e)}flush(){for(;this.dirtyEffectCount>0;){let e=!1;for(let[t,n]of this.queues)e||=t===null?this.flushQueue(n):t.run(()=>this.flushQueue(n));e||(this.dirtyEffectCount=0)}}flushQueue(e){let t=!1;for(let n of e)n.dirty&&(this.dirtyEffectCount--,t=!0,n.run());return t}},lc=class{[dn];constructor(e){this[dn]=e}destroy(){this[dn].destroy()}};function uc(e,t){let n=t?.injector??E(xs),r=t?.manualCleanup===!0?null:n.get(Cs),i,a=n.get(nc,null,{optional:!0}),o=n.get(ic);return a===null?i=hc(e,n.get(sc),o):(i=mc(a.view,o,e),r instanceof ws&&r._lView===a.view&&(r=null)),i.injector=n,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new lc(i)}var dc={...Jn,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=Vo(!1);try{Yn(this)}finally{Vo(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=w(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],w(e)}}},fc={...dc,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}},pc={...dc,consumerMarkedDirty(){this.view[2]|=8192,_o(this.view),this.notifier.notify(13)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[23]?.delete(this)}};function mc(e,t,n){let r=Object.create(pc);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.fn=gc(r,n),e[23]??=new Set,e[23].add(r),r.consumerMarkedDirty(r),r}function hc(e,t,n){let r=Object.create(fc);return r.fn=gc(r,e),r.scheduler=t,r.notifier=n,r.zone=typeof Zone<`u`?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function gc(e,t){return()=>{t(t=>(e.cleanupFns??=[]).push(t))}}function _c(e){return typeof e==`function`&&e[dn]!==void 0}function vc(e){return _c(e)&&typeof e.set==`function`}var yc=Symbol(`InputSignalNode#UNSET`),bc={...Kn,transformFn:void 0,applyValueToInputSignal(e,t){Wn(e,t)}};function xc(e){return{toString:e}.toString()}var Sc=(function(e){return e[e.TemplateCreateStart=0]=`TemplateCreateStart`,e[e.TemplateCreateEnd=1]=`TemplateCreateEnd`,e[e.TemplateUpdateStart=2]=`TemplateUpdateStart`,e[e.TemplateUpdateEnd=3]=`TemplateUpdateEnd`,e[e.LifecycleHookStart=4]=`LifecycleHookStart`,e[e.LifecycleHookEnd=5]=`LifecycleHookEnd`,e[e.OutputStart=6]=`OutputStart`,e[e.OutputEnd=7]=`OutputEnd`,e[e.BootstrapApplicationStart=8]=`BootstrapApplicationStart`,e[e.BootstrapApplicationEnd=9]=`BootstrapApplicationEnd`,e[e.BootstrapComponentStart=10]=`BootstrapComponentStart`,e[e.BootstrapComponentEnd=11]=`BootstrapComponentEnd`,e[e.ChangeDetectionStart=12]=`ChangeDetectionStart`,e[e.ChangeDetectionEnd=13]=`ChangeDetectionEnd`,e[e.ChangeDetectionSyncStart=14]=`ChangeDetectionSyncStart`,e[e.ChangeDetectionSyncEnd=15]=`ChangeDetectionSyncEnd`,e[e.AfterRenderHooksStart=16]=`AfterRenderHooksStart`,e[e.AfterRenderHooksEnd=17]=`AfterRenderHooksEnd`,e[e.ComponentStart=18]=`ComponentStart`,e[e.ComponentEnd=19]=`ComponentEnd`,e[e.DeferBlockStateStart=20]=`DeferBlockStateStart`,e[e.DeferBlockStateEnd=21]=`DeferBlockStateEnd`,e[e.DynamicComponentStart=22]=`DynamicComponentStart`,e[e.DynamicComponentEnd=23]=`DynamicComponentEnd`,e[e.HostBindingsUpdateStart=24]=`HostBindingsUpdateStart`,e[e.HostBindingsUpdateEnd=25]=`HostBindingsUpdateEnd`,e})(Sc||{}),Cc=class{previousValue;currentValue;firstChange;constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}};function wc(e,t,n,r){t===null?e[n]=r:t.applyValueToInputSignal(t,r)}var Tc=null,Ec=(()=>{Tc=Oc;let e=()=>Oc;return e.ngInherit=!0,e})();function Dc(){return Tc}function Oc(e){return e.type.prototype.ngOnChanges&&(e.setInput=Ac),kc}function kc(){let e=Mc(this),t=e?.current;if(t){let n=e.previous;if(n===la)e.previous=t;else for(let e in t)n[e]=t[e];e.current=null,this.ngOnChanges(t)}}function Ac(e,t,n,r,i){let a=this.declaredInputs[r],o=Mc(e)||Nc(e,{previous:la,current:null}),s=o.current||={},c=o.previous,l=c[a];s[a]=new Cc(l&&l.currentValue,n,c===la),wc(e,t,i,n)}var jc=`__ngSimpleChanges__`;function Mc(e){return Object.hasOwn(e,jc)&&e[jc]||null}function Nc(e,t){return e[jc]=t}var Pc=[],Fc=function(e,t=null,n){for(let r=0;r=r)break}else t[c]<0&&(e[17]+=65536),(s>14>16&&(e[2]&3)===t&&(e[2]+=16384,Hc(o,a)):Hc(o,a)}var Wc=-1,Gc=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(e,t,n,r){this.factory=e,this.name=r,this.canSeeViewProviders=t,this.injectImpl=n}};function Kc(e){return!!(e.flags&8)}function qc(e){return!!(e.flags&16)}function Jc(e,t,n){let r=0;for(;rt){o=a-1;break}}}for(;a>16}function nl(e,t){let n=tl(e),r=t;for(;n>0;)r=r[14],n--;return r}var rl=!0;function il(e){let t=rl;return rl=e,t}var al=255,ol=5,sl=0,cl={};function ll(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,wi)&&(r=n[wi]),r??=n[wi]=sl++;let i=r&al,a=1<>ol)]|=a}function ul(e,t){let n=fl(e,t);if(n!==-1)return n;let r=t[1];r.firstCreatePass&&(e.injectorIndex=t.length,dl(r.data,e),dl(t,null),dl(r.blueprint,null));let i=pl(e,t),a=e.injectorIndex;if($c(i)){let e=el(i),n=nl(i,t),r=n[1].data;for(let i=0;i<8;i++)t[a+i]=n[e+i]|r[e+i]}return t[a+8]=i,a}function dl(e,t){e.push(0,0,0,0,0,0,0,0,t)}function fl(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function pl(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,i=t;for(;i!==null;){if(r=Ol(i),r===null)return Wc;if(n++,i=i[14],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Wc}function ml(e,t,n){ll(e,t,n)}function hl(e,t,n){if(n&8||e!==void 0)return e;Fi(t,`NodeInjector`)}function gl(e,t,n,r){if(n&8&&r===void 0&&(r=null),!(n&3)){let i=e[9],a=Bi(void 0);try{return i?i.get(t,r,n&8):Vi(t,r,n&8)}finally{Bi(a)}}return hl(r,t,n)}function _l(e,t,n,r=0,i){if(e!==null){if(t[2]&2048&&!(r&2)){let i=Dl(e,t,n,r,cl);if(i!==cl)return i}let i=vl(e,t,n,r,cl);if(i!==cl)return i}return gl(t,n,r,i)}function vl(e,t,n,r,i){let a=Sl(n);if(typeof a==`function`){if(!ts(t,e,r))return r&1?hl(i,n,r):gl(t,n,r,i);try{let e;if(e=a(r),e==null&&!(r&8))Fi(n);else return e}finally{os()}}else if(typeof a==`number`){let i=null,o=fl(e,t),s=Wc,c=r&1?t[15][5]:null;for((o===-1||r&4)&&(s=o===-1?pl(e,t):t[o+8],s===Wc||!wl(r,!1)?o=-1:(i=t[1],o=el(s),t=nl(s,t)));o!==-1;){let e=t[1];if(Cl(a,o,e.data)){let e=yl(o,t,n,i,r,c);if(e!==cl)return e}s=t[o+8],s!==Wc&&wl(r,t[1].data[o+8]===c)&&Cl(a,o,t)?(i=e,o=el(s),t=nl(s,t)):o=-1}}return i}function yl(e,t,n,r,i,a){let o=t[1],s=o.data[e+8],c=bl(s,o,n,r==null?Ja(s)&&rl:r!=o&&!!(s.type&3),i&1&&a===s);return c===null?cl:xl(t,o,c,s,i)}function bl(e,t,n,r,i){let a=e.providerIndexes,o=t.data,s=a&1048575,c=e.directiveStart,l=e.directiveEnd,u=a>>20,d=r?s:s+u,f=i?s+u:l;for(let e=d;e=c&&t.type===n)return e}if(i){let e=o[c];if(e&&Xa(e)&&e.type===n)return c}return null}function xl(e,t,n,r,i){let a=e[n],o=t.data;if(a instanceof Gc){let s=a;if(s.resolving)throw Pi(``);let c=il(s.canSeeViewProviders);s.resolving=!0,o[n].type||o[n];let l=s.injectImpl?Bi(s.injectImpl):null;ts(e,r,0);try{a=e[n]=s.factory(void 0,i,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&Ic(n,o[n],t)}finally{l!==null&&Bi(l),il(c),s.resolving=!1,os()}}return a}function Sl(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,wi)?e[wi]:void 0;return typeof t==`number`?t>=0?t&al:El:t}function Cl(e,t,n){let r=1<>ol)]&r)}function wl(e,t){return!(e&2)&&!(e&1&&t)}var Tl=class{_tNode;_lView;constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return _l(this._tNode,this._lView,e,Ji(n),t)}};function El(){return new Tl(No(),O())}function Dl(e,t,n,r,i){let a=e,o=t;for(;a!==null&&o!==null&&o[2]&2048&&!Za(o);){let e=vl(a,o,n,r|2,cl);if(e!==cl)return e;r&=-5;let t=a.parent;if(!t){let e=o[20];if(e){let t=e.get(n,cl,r);if(t!==cl)return t}t=Ol(o),o=o[14]}a=t}return i}function Ol(e){let t=e[1],n=t.type;return n===2?t.declTNode:n===1?e[5]:null}function kl(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function Al(){return jl(No(),O())}function jl(e,t){return new Ml(ro(e,t))}var Ml=(()=>{class e{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=Al}return e})();function Nl(e){return e instanceof Ml?e.nativeElement:e}function Pl(){return this._results[Symbol.iterator]()}var Fl=class{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new Zr}constructor(e=!1){this._emitDistinctChangesOnly=e}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,t){return this._results.reduce(e,t)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,t){this.dirty=!1;let n=ea(e);(this._changesDetected=!$i(this._results,n,t))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=Pl};function Il(e){return(e.flags&128)==128}var Ll=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(Ll||{}),Rl=new Map,zl=0;function Bl(){return zl++}function Vl(e){Rl.set(e[19],e)}function Hl(e){Rl.delete(e[19])}var Ul=`__ngContext__`;function Wl(e,t){Ga(t)?(e[Ul]=t[19],Vl(t)):e[Ul]=t}function Gl(e){return ql(e[12])}function Kl(e){return ql(e[4])}function ql(e){for(;e!==null&&!Ka(e);)e=e[4];return e}var Jl=void 0;function Yl(e){Jl=e}function Xl(){if(Jl!==void 0)return Jl;if(typeof document<`u`)return document;throw new T(210,!1)}var Zl=!1,Ql=new vi(``,{factory:()=>Zl}),$l=new WeakMap;function eu(e,t){if(typeof e!=`object`||!e)return;let n=$l.get(e);n||(n=new WeakSet,$l.set(e,n)),n.add(t)}function tu(e){return(e.flags&32)==32}var nu=()=>null;function ru(e,t,n=!1){return nu(e,t,n)}function iu(e,t){let n=e.contentQueries;if(n!==null){let r=w(null);try{for(let r=0;r|^->||--!>|)/g,gu=`​$1​`;function _u(e){return e.replace(mu,e=>e.replace(hu,gu))}function vu(e,t){return e.createText(t)}function yu(e,t,n){e.setValue(t,n)}function bu(e,t){return e.createComment(_u(t))}function xu(e,t,n){return e.createElement(t,n)}function Su(e,t,n,r,i){e.insertBefore(t,n,r,i)}function Cu(e,t,n){e.appendChild(t,n)}function wu(e,t,n,r,i){r===null?Cu(e,t,n):Su(e,t,n,r,i)}function Tu(e,t,n,r){e.removeChild(null,t,n,r)}function Eu(e,t,n){e.setAttribute(t,`style`,n)}function Du(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function Ou(e,t,n){let{mergedAttrs:r,classes:i,styles:a}=n;r!==null&&Jc(e,t,r),i!==null&&Du(e,t,i),a!==null&&Eu(e,t,a)}function ku(e){let t=Au();return t?t.sanitize($a.URL,e)||``:uu(e,`URL`)?lu(e):pu(Ai(e))}function Au(){let e=O();return e&&e[10].sanitizer}function ju(e){return e.ownerDocument.defaultView}function Mu(e){return e.ownerDocument}function Nu(e,t,n){let r=e.length;for(;;){let i=e.indexOf(t,n);if(i===-1)return i;if(i===0||e.charCodeAt(i-1)<=32){let n=t.length;if(i+n===r||e.charCodeAt(i+n)<=32)return i}n=i+1}}var Pu=`ng-template`;function Fu(e,t,n,r){let i=0;if(r){for(;i-1){let e;for(;++ia?``:i[u+1].toLowerCase(),r&2&&l!==e){if(zu(r))return!1;o=!0}}}}}return zu(r)||o}function zu(e){return!(e&1)}function Bu(e,t,n,r){if(t===null)return-1;let i=0;if(r||!n){let n=!1;for(;i-1)for(n++;n0?`="`+t+`"`:``)+`]`}else r&8?i+=`.`+o:r&4&&(i+=` `+o)}else i!==``&&!zu(o)&&(t+=Wu(a,i),i=``),r=o,a||=!zu(r);n++}return i!==``&&(t+=Wu(a,i)),t}function Ku(e){return e.map(Gu).join(`,`)}function qu(e){let t=[],n=[],r=1,i=2;for(;r!1});function $u(e){if(!e)return 0;let t=e.toLowerCase().indexOf(`ms`)>-1?1:1e3;return parseFloat(e)*t}function ed(e,t){return e.getPropertyValue(t).split(`,`).map(e=>e.trim())}function td(e){let t=ed(e,`transition-property`),n=ed(e,`transition-duration`),r=ed(e,`transition-delay`),i={propertyName:``,duration:0,animationName:void 0};for(let e=0;ei.duration&&(i.propertyName=t[e],i.duration=a)}return i}function nd(e){let t=ed(e,`animation-name`),n=ed(e,`animation-delay`),r=ed(e,`animation-duration`),i=ed(e,`animation-iteration-count`),a={animationName:``,propertyName:void 0,duration:0};for(let e=0;ea.duration&&s!==`infinite`&&(a.animationName=t[e],a.duration=o)}return a}function rd(e,t){return e!==void 0&&e.duration>t.duration}function id(e){return(e.animationName!=null||e.propertyName!=null)&&e.duration>0}function ad(e){let t=e.effect?.getTiming();if(t===void 0)return;let n=typeof t.duration==`number`?t.duration:0,r=(t.delay??0)+n,i=e.playbackRate;return i!==void 0&&i!==0&&i!==1&&(r/=Math.abs(i)),r}function od(e,t){let n=getComputedStyle(e),r=nd(n),i=td(n),a=r.duration>i.duration?r:i;rd(t.get(e),a)||id(a)&&t.set(e,a)}function sd(e,t,n){if(!n)return;let r=e.getAnimations();return r.length===0?od(e,t):cd(e,t,r)}function cd(e,t,n){let r={animationName:void 0,propertyName:void 0,duration:0};for(let e of n){if(e.effect?.getTiming()?.iterations===1/0)continue;let t=ad(e)??0,n,i;e.animationName?i=e.animationName:n=e.transitionProperty,t>=r.duration&&(r={animationName:i,propertyName:n,duration:t})}rd(t.get(e),r)||id(r)&&t.set(e,r)}var ld=new Set,ud=!1,dd=1,fd=typeof document<`u`&&typeof document?.documentElement?.getAnimations==`function`;function pd(e){return e[9].get(Qu,ud)}function md(e,t,n){let r=gd.get(e);if(r){for(let e of t)r.classList.push(e);for(let e of n)r.cleanupFns.push(e)}else gd.set(e,{classList:t,cleanupFns:n})}function hd(e){let t=gd.get(e);if(t){for(let e of t.cleanupFns)e();gd.delete(e)}_d.delete(e)}var gd=new WeakMap,_d=new WeakMap,vd=new WeakMap;function yd(e){return e?e[14]??e:null}var bd=new WeakSet;function xd(e,t,n){let r=vd.get(e);if(!r||r.length===0)return;let i=t.parentNode,a=t.previousSibling,o=yd(n);for(let e=r.length-1;e>=0;e--){let{el:n,declarationView:s}=r[e],c=n.parentNode;n===t?(r.splice(e,1),bd.add(n),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}}))):(a&&n===a||c&&i&&c!==i&&(o===null||s===null||o===s))&&(r.splice(e,1),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),n.parentNode?.removeChild(n))}}function Sd(e,t,n){let r=yd(n),i=vd.get(e);i?i.some(e=>e.el===t)||i.push({el:t,declarationView:r}):vd.set(e,[{el:t,declarationView:r}])}function Cd(e){let t=e[26]??={};return t.enter??=new Map}function wd(e){let t=typeof e==`function`?e():e,n=Array.isArray(t)?t:null;return typeof t==`string`&&(n=t.trim().split(/\s+/).filter(e=>e)),n}function Td(e){return e.composedPath?e.composedPath()[0]:e.target}function Ed(e,t){let n=_d.get(t);if(n===void 0)return!0;if(t!==Td(e))return!1;let r=e.animation;if(r){let e=ad(r);if(e!==void 0&&e+dd{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Nd=[0,1,2,3],Pd=(()=>{class e{ngZone=E(Fs);scheduler=E(ic);errorHandler=E(qs,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){E(kd,{optional:!0})}execute(){let e=this.sequences.size>0;e&&Fc(Sc.AfterRenderHooksStart),this.executing=!0;for(let e of Nd)for(let t of this.sequences)if(!t.erroredOrDestroyed&&t.hooks[e])try{t.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let n=t.hooks[e];return n(t.pipelinedValue)},t.snapshot))}catch(e){t.erroredOrDestroyed=!0,this.errorHandler?.handleError(e)}this.executing=!1;for(let e of this.sequences)e.afterRun(),e.once&&(this.sequences.delete(e),e.destroy());for(let e of this.deferredRegistrations)this.sequences.add(e);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&Fc(Sc.AfterRenderHooksEnd)}register(e){let{view:t}=e;t===void 0?this.executing?this.deferredRegistrations.add(e):this.addSequence(e):((t[25]??=[]).push(e),_o(t),t[2]|=8192)}addSequence(e){this.sequences.add(e),this.scheduler.notify(7)}unregister(e){this.executing&&this.sequences.has(e)?(e.erroredOrDestroyed=!0,e.pipelinedValue=void 0,e.once=!0):(this.sequences.delete(e),this.deferredRegistrations.delete(e))}maybeTrace(e,t){return t?t.run(Od.AFTER_NEXT_RENDER,e):e()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Fd=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(e,t,n,r,i,a=null){this.impl=e,this.hooks=t,this.view=n,this.once=r,this.snapshot=a,this.unregisterOnDestroy=i?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let e=this.view?.[25];e&&(this.view[25]=e.filter(e=>e!==this))}};function Id(e,t){let n=t?.injector??E(xs);return jd(`NgAfterNextRender`),Rd(e,n,t,!0)}function Ld(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function Rd(e,t,n,r){let i=t.get(Md);i.impl??=t.get(Pd);let a=t.get(kd,null,{optional:!0}),o=n?.manualCleanup===!0?null:t.get(Cs),s=t.get(nc,null,{optional:!0}),c=new Fd(i.impl,Ld(e),s?.view,r,o,a?.snapshot(null));return i.impl.register(c),c}var zd=new vi(``,{factory:()=>{let e=E(Aa),t=new Set;return e.onDestroy(()=>t.clear()),{queue:t,isScheduled:!1,scheduler:null,injector:e}}});function Bd(e,t,n){let r=e.get(zd);if(Array.isArray(t))for(let e of t)r.queue.add(e),n?.detachedLeaveAnimationFns?.push(e);else r.queue.add(t),n?.detachedLeaveAnimationFns?.push(t);r.scheduler&&r.scheduler(e)}function Vd(e,t){let n=e.get(zd);if(Array.isArray(t))for(let e of t)n.queue.delete(e);else n.queue.delete(t)}function Hd(e,t){let n=e.get(zd);if(t.detachedLeaveAnimationFns){for(let e of t.detachedLeaveAnimationFns)n.queue.delete(e);t.detachedLeaveAnimationFns=void 0}}function Ud(e){let t=e.get(zd);t.isScheduled||=(Id(()=>{t.isScheduled=!1;for(let e of t.queue)e();t.queue.clear()},{injector:t.injector}),!0)}function Wd(e){let t=e.get(zd);t.scheduler=Ud,t.scheduler(e)}function Gd(e,t){for(let[n,r]of t)Bd(e,r.animateFns)}function Kd(e,t,n,r){let i=e?.[26]?.enter;t!==null&&i&&i.has(n.index)&&Gd(r,i)}function qd(e,t,n,r){try{n.get(fa)}catch{return r(!1)}let i=e?.[26];i?.enter?.has(t.index)&&Vd(n,i.enter.get(t.index).animateFns);let a=Jd(e,t,i);if(a.size===0){let n=!1;if(e){let r=[];Xd(e,t,r),n=r.length>0}if(!n)return r(!1)}e&&ld.add(e[19]),Bd(n,()=>Yd(e,t,i||void 0,a,r),i||void 0)}function Jd(e,t,n){let r=new Map,i=n?.leave;if(i&&i.has(t.index)&&r.set(t.index,i.get(t.index)),e&&i)for(let[n,a]of i){if(r.has(n))continue;let i=e[1].data[n].parent;for(;i;){if(i===t){r.set(n,a);break}i=i.parent}}return r}function Yd(e,t,n,r,i){let a=[];if(n&&n.leave)for(let[e]of r){if(!n.leave.has(e))continue;let t=n.leave.get(e);for(let e of t.animateFns){let{promise:t}=e();a.push(t)}n.detachedLeaveAnimationFns=void 0}if(e&&Xd(e,t,a),a.length>0){let t=n||e?.[26];if(t){let n=t.running;n&&a.push(n),t.running=Promise.allSettled(a),Qd(e,t.running,i)}else Promise.allSettled(a).then(()=>{e&&ld.delete(e[19]),i(!0)})}else e&&ld.delete(e[19]),i(!1)}function Xd(e,t,n){if(t.type&12){let r=e[t.index];if(Ka(r))for(let e=10;e{e[26]?.running===t&&(e[26].running=void 0,ld.delete(e[19])),n(!0)})}function $d(e,t,n,r,i,a,o,s){if(i!=null){let c,l=!1;Ka(i)?c=i:Ga(i)&&(l=!0,i=i[0]);let u=to(i);e===0&&r!==null?(Kd(s,r,a,n),o==null?Cu(t,r,u):Su(t,r,u,o||null,!0)):e===1&&r!==null?(Kd(s,r,a,n),Su(t,r,u,o||null,!0),xd(a,u,s)):e===2?(s?.[26]?.leave?.has(a.index)&&Sd(a,u,s),bd.delete(u),qd(s,a,n,e=>{if(bd.has(u)){bd.delete(u);return}Tu(t,u,l,e)})):e===3&&(bd.delete(u),qd(s,a,n,()=>{t.destroyNode(u)})),c!=null&&Cf(t,e,n,c,a,r,o)}}function ef(e,t){nf(e,t),t[0]=null,t[5]=null}function tf(e,t,n,r,i,a){r[0]=i,r[5]=t,bf(e,r,n,1,i,a)}function nf(e,t){t[10].changeDetectionScheduler?.notify(9),bf(e,t,t[11],2,null,null)}function rf(e){let t=e[12];if(!t)return sf(e[1],e);for(;t;){let n=null;if(Ga(t))n=t[12];else{let e=t[10];e&&(n=e)}if(!n){for(;t&&!t[4]&&t!==e;)Ga(t)&&sf(t[1],t),t=t[3];t===null&&(t=e),Ga(t)&&sf(t[1],t),n=t&&t[4]}t=n}}function af(e,t){let n=e[9],r=n.indexOf(t);n.splice(r,1)}function of(e,t){if(Qa(t))return;let n=t[11];n.destroyNode&&bf(e,t,n,3,null,null),rf(t)}function sf(e,t){if(Qa(t))return;let n=w(null);try{t[2]&=-129,t[2]|=256,t[24]&&En(t[24]),lf(e,t),cf(e,t),t[1].type===1&&t[11].destroy();let n=t[16];if(n!==null&&Ka(t[3])){n!==t[3]&&af(n,t);let r=t[18];r!==null&&r.detachView(e)}Hl(t)}finally{w(n)}}function cf(e,t){let n=e.cleanup,r=t[7];if(n!==null)for(let e=0;e=0?r[t]():r[-t].unsubscribe(),e+=2}else{let t=r[n[e+1]];n[e].call(t)}r!==null&&(t[7]=null);let i=t[21];if(i!==null){t[21]=null;for(let e=0;e27&&Nf(e,t,27,!1),Fc(o?Sc.TemplateUpdateStart:Sc.TemplateCreateStart,i,n),n(r,i)}finally{us(a),Fc(o?Sc.TemplateUpdateEnd:Sc.TemplateCreateEnd,i,n)}}function Lf(e,t,n){Wf(e,t,n),(n.flags&64)==64&&Gf(e,t,n)}function Rf(e,t,n=ro){let r=t.localNames;if(r!==null){let i=t.index+1;for(let a=0;a{_o(e.lView)},consumerOnSignalRead(){this.lView[24]=this}};function hp(e){let t=e[24]??Object.create(gp);return t.lView=e,t}var gp={...pn,consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=bo(e.lView);for(;t&&!_p(t[1]);)t=bo(t);t&&po(t)},consumerOnSignalRead(){this.lView[24]=this}};function _p(e){return e.type!==2}function vp(e){if(e[23]===null)return;let t=!0;for(;t;){let n=!1;for(let t of e[23])if(t.dirty&&(n=!0,t.zone===null||Zone.current===t.zone?t.run():t.zone.run(()=>t.run()),e[23]===null))return;t=n&&!!(e[2]&8192)}}var yp=100;function bp(e,t=0){let n=e[10].rendererFactory;n.begin?.();try{xp(e,t)}finally{n.end?.()}}function xp(e,t){let n=Bo();try{Vo(!0),Dp(e,t);let n=0;for(;ho(e);){if(n===yp)throw new T(103,!1);n++,Dp(e,1)}}finally{Vo(n)}}function Sp(e,t,n,r){if(Qa(t))return;let i=t[2];ns(t);let a=!0,o=null,s=null;_p(e)?(s=dp(t),o=xn(s)):fn()===null?(a=!1,s=hp(t),o=xn(s)):t[24]&&=(En(t[24]),null);try{fo(t),Wo(e.bindingStartIndex),n!==null&&If(e,t,n,2,r);let a=(i&3)==3;if(a){let n=e.preOrderCheckHooks;n!==null&&Rc(t,n,null)}else{let n=e.preOrderHooks;n!==null&&zc(t,n,0,null),Bc(t,0)}if(wp(t),vp(t),Cp(t,0),e.contentQueries!==null&&iu(e,t),a){let n=e.contentCheckHooks;n!==null&&Rc(t,n)}else{let n=e.contentHooks;n!==null&&zc(t,n,1),Bc(t,1)}kp(e,t);let o=e.components;o!==null&&Op(t,o,0);let s=e.viewQuery;if(s!==null&&au(2,s,r),a){let n=e.viewCheckHooks;n!==null&&Rc(t,n)}else{let n=e.viewHooks;n!==null&&zc(t,n,2),Bc(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[22]){for(let e of t[22])e();t[22]=null}lp(t),t[2]&=-73}catch(e){throw _o(t),e}finally{s!==null&&(Cn(s,o),a&&pp(s)),ss()}}function Cp(e,t){for(let n=Gl(e);n!==null;n=Kl(n))for(let e=10;e0&&(e[n-1][4]=r[4]);let a=ra(e,10+t);ef(r[1],r);let o=a[18];o!==null&&o.detachView(a[1]),r[3]=null,r[4]=null,r[2]&=-129}return r}function Ip(e,t,n,r){let i=10+r,a=n.length;r>0&&(n[i-1][4]=t),r-1&&(Fp(e,n),ra(t,n))}this._attachedToViewContainer=!1}of(this._lView[1],this._lView)}onDestroy(e){vo(this._lView,e)}markForCheck(){Ap(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){go(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,bp(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new T(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=Za(this._lView),t=this._lView[16];t!==null&&!e&&af(t,this._lView),nf(this._lView[1],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new T(902,!1);this._appRef=e;let t=Za(this._lView),n=this._lView[16];n!==null&&!t&&Lp(n,this._lView),go(this._lView)}},zp=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=Bp;constructor(e,t,n){this._declarationLView=e,this._declarationTContainer=t,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,t){return this.createEmbeddedViewImpl(e,t)}createEmbeddedViewImpl(e,t,n){return new Rp(ap(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:t,dehydratedView:n}))}}return e})();function Bp(){return Vp(No(),O())}function Vp(e,t){return e.type&4?new zp(t,e,jl(e,t)):null}function Hp(e,t,n,r,i){let a=e.data[t];if(a===null)a=Up(e,t,n,r,i),qo()&&(a.flags|=32);else if(a.type&64){a.type=n,a.value=r,a.attrs=i;let e=Fo();a.injectorIndex=e===null?-1:e.injectorIndex}return Io(a,!0),a}function Up(e,t,n,r,i){let a=Po(),o=Lo(),s=o?a:a&&a.parent,c=e.data[t]=Gp(e,s,n,t,r,i);return Wp(e,c,a,o),c}function Wp(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function Gp(e,t,n,r,i,a){let o=t?t.injectorIndex:-1,s=0;return ko()&&(s|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:o,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:s,providerIndexes:0,value:i,namespace:hs(),attrs:a,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function Kp(e){let t=e[6]??[],n=e[3][11],r=[];for(let e of t)e.data.di===void 0?qp(e,n):r.push(e);e[6]=r}function qp(e,t){let n=0,r=e.firstChild;if(r){let i=e.data.r;for(;nnull,Yp=()=>null;function Xp(e,t){return Jp(e,t)}function Zp(e,t,n){return Yp(e,t,n)}var Qp=class{},$p=class{},em=(()=>{class e{static ɵprov=di({token:e,providedIn:`root`,factory:()=>null})}return e})();function tm(e){return e.debugInfo?.className||e.type.name||null}var nm={},rm=class{injector;parentInjector;constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){let r=this.injector.get(e,nm,n);return r!==nm||t===nm?r:this.parentInjector.get(e,t,n)}};function im(e,t,n){return e[t]=n}function am(e,t){return e[t]}function om(e,t,n){if(n===Ju)return!1;let r=e[t];return!Object.is(r,n)&&(e[t]=n,!0)}function sm(e,t,n,r){let i=om(e,t,n);return om(e,t+1,r)||i}function cm(e,t,n,r,i){let a=sm(e,t,n,r);return om(e,t+2,i)||a}function lm(e,t,n,r,i,a){let o=sm(e,t,n,r);return sm(e,t+2,i,a)||o}function um(e,t,n){return function r(i){let a=r.__ngNativeEl__;a!==void 0&&eu(i,a),Ap(Ja(e)?so(e.index,t):t,5);let o=t[8],s=dm(t,o,n,i),c=r.__ngNextListenerFn__;for(;c;)s=dm(t,o,c,i)&&s,c=c.__ngNextListenerFn__;return s}}function dm(e,t,n,r){let i=w(null);try{return Fc(Sc.OutputStart,t,n),n(r)!==!1}catch(t){return $f(e,t),!1}finally{Fc(Sc.OutputEnd,t,n),w(i)}}function fm(e,t,n,r,i,a,o,s){let c=Ya(e),l=!1,u=null;if(!r&&c&&(u=mm(t,n,a,e.index)),u!==null){let e=u.__ngLastListenerFn__||u;e.__ngNextListenerFn__=o,u.__ngLastListenerFn__=o,l=!0}else{let o=ro(e,n),c=r?r(o):o;r||(s.__ngNativeEl__=o);let l=i.listen(c,a,s);pm(a)||hm(r?t=>r(to(t[e.index])):e.index,t,n,a,s,l,!1)}return l}function pm(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function mm(e,t,n,r){let i=e.cleanup;if(i!=null)for(let e=0;er?n[r]:null}typeof a==`string`&&(e+=2)}return null}function hm(e,t,n,r,i,a,o){let s=t.firstCreatePass?So(t):null,c=xo(n),l=c.length;c.push(i,a),s&&s.push(r,e,l,(l+1)*(o?-1:1))}function gm(e,t,n,r,i,a){let o=t[n],s=t[1],c=o[s.data[n].outputs[r]].subscribe(a);hm(e.index,s,t,i,a,c,!0)}var _m=Symbol(`BINDING`),vm=new vi(``);function ym(e,t,n){let r=n?e.styles:null,i=n?e.classes:null,a=0;if(t!==null)for(let e=0;e0&&(n.directiveToIndex=new Map);for(let c=0;c0;){let n=e[--t];if(typeof n==`number`&&n<0)return n}return 0}function Nm(e,t,n){if(n){if(t.exportAs)for(let r=0;r{let[n,r,i]=e[t],a={propName:n,templateName:t,isSignal:(r&Pf.SignalBased)!==0};return i&&(a.transform=i),a})}function Vm(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function Hm(e,t,n){let r=t instanceof Aa?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new rm(n,r):n}function Um(e){let t=e.get($p,null);if(t===null)throw new T(407,!1);return{rendererFactory:t,sanitizer:e.get(em,null),changeDetectionScheduler:e.get(ic,null),ngReflect:!1,tracingService:e.get(kd,null,{optional:!0})}}function Wm(e,t,n){let r=Km(e);return xu(t,r,r===`svg`?`svg`:r===`math`?eo:n)}function Gm(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new T(905,!1)}function Km(e){return(e.selectors[0][0]||`div`).toLowerCase()}var qm=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=Bm(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=Vm(this.componentDef.outputs),this.cachedOutputs}constructor(e,t){this.componentDef=e,this.ngModule=t,this.componentType=e.type,this.selector=Ku(e.selectors),this.ngContentSelectors=e.ngContentSelectors??[],this.isBoundToModule=!!t}create(e,t,n,r,i,a,o){Fc(Sc.DynamicComponentStart);let s=w(null);try{let s=this.componentDef,c=Hm(s,r||this.ngModule,e),l=Um(c),u=l.tracingService;return u&&u.componentCreate?u.componentCreate(tm(s),()=>this.createComponentRef(l,c,t,n,i,a,o)):this.createComponentRef(l,c,t,n,i,a,o)}finally{w(s)}}createComponentRef(e,t,n,r,i,a,o){let s=this.componentDef,c=Jm(r,s,a,i),l=e.rendererFactory.createRenderer(null,s),u=r?zf(l,r,s.encapsulation,t):Wm(s,l,o??null);Gm(u);let d=t.get(vm,null),f=Ym(u,()=>t.get(Ss,null)??Xl());d&&d.addHost(f);let p=a?.some(Zm)||i?.some(e=>typeof e!=`function`&&e.bindings.some(Zm)),m=Of(null,c,null,512|Af(s),null,null,e,l,t,null,ru(u,t,!0));d&&Rm&&f instanceof ShadowRoot&&vo(m,()=>{d.removeHost(f)}),m[27]=u,ns(m);let h=null;try{let e=Fm(27,m,2,`#host`,()=>c.directiveRegistry,!0,0);Ou(l,u,e),Wl(u,m),Lf(c,m,e),ou(c,e,m),Im(c,e),n!==void 0&&$m(e,this.ngContentSelectors,n),h=so(e.index,m),m[8]=h[8],rp(c,m,null)}catch(e){throw h!==null&&Hl(h),Hl(m),e}finally{Fc(Sc.DynamicComponentEnd),ss()}return new Qm(this.componentType,m,!!p)}};function Jm(e,t,n,r){let i=e?[`ng-version`,`22.1.7`]:qu(t.selectors[0]),a=null,o=null,s=0;if(n)for(let e of n)s+=e[_m].requiredVars,e.create&&(e.targetIdx=0,(a??=[]).push(e)),e.update&&(e.targetIdx=0,(o??=[]).push(e));if(r)for(let e=0;e{if(n&1&&e)for(let t of e)t.create();if(n&2&&t)for(let e of t)e.update()}}function Zm(e){let t=e[_m].kind;return t===`input`||t===`twoWay`}var Qm=class extends Qp{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(e,t,n){super(),this._rootLView=t,this._hasInputBindings=n,this._tNode=io(t[1],27),this.location=jl(this._tNode,t),this.instance=so(this._tNode.index,t)[8],this.hostView=this.changeDetectorRef=new Rp(t,void 0),this.componentType=e}setInput(e,t){this._hasInputBindings;let n=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(e)&&Object.is(this.previousInputValues.get(e),t))return;let r=this._rootLView;ep(n,r[1],r,e,t),this.previousInputValues.set(e,t),Ap(so(n.index,r),1)}get injector(){return new Tl(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(e){this.hostView.onDestroy(e)}};function $m(e,t,n){let r=e.projection=[];for(let e=0;e{class e{static __NG_ELEMENT_ID__=th}return e})();function th(){return ah(No(),O())}var nh=class e extends eh{_lContainer;_hostTNode;_hostLView;constructor(e,t,n){super(),this._lContainer=e,this._hostTNode=t,this._hostLView=n}get element(){return jl(this._hostTNode,this._hostLView)}get injector(){return new Tl(this._hostTNode,this._hostLView)}get parentInjector(){let e=pl(this._hostTNode,this._hostLView);if($c(e)){let t=nl(e,this._hostLView),n=el(e),r=t[1].data[n+8];return new Tl(r,t)}return new Tl(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let t=rh(this._lContainer);return t!==null&&t[e]||null}get length(){return this._lContainer.length-10}createEmbeddedView(e,t,n){let r,i;typeof n==`number`?r=n:n!=null&&(r=n.index,i=n.injector);let a=Xp(this._lContainer,e.ssrId),o=e.createEmbeddedViewImpl(t||{},i,a);return this.insertImpl(o,r,op(this._hostTNode,a)),o}createComponent(e,t,n,r,i,a,o){let s,c=t||{};s=c.index,n=c.injector,r=c.projectableNodes,i=c.environmentInjector||c.ngModuleRef,a=c.directives,o=c.bindings;let l=new qm(Ei(e)),u=n||this.parentInjector;if(!i&&l.ngModule==null){let e=this.parentInjector.get(Aa,null);e&&(i=e)}let d=Ei(l.componentType??{}),f=Xp(this._lContainer,d?.id??null),p=f?.firstChild??null,m=l.create(u,r,p,i,a,o,this._getHostElementNamespace());return this.insertImpl(m.hostView,s,op(this._hostTNode,f)),m}_getHostElementNamespace(){if(this._hostTNode.type&2){let e=this._hostTNode.parent??this._hostLView[5];return e!==null&&e.type&2&&typeof e.value==`string`&&e.value.toLowerCase()===`foreignobject`?null:e?.namespace??null}return this._hostTNode.namespace}insert(e,t){return this.insertImpl(e,t,!0)}insertImpl(t,n,r){let i=t._lView;if(lo(i)){let n=this.indexOf(t);if(n!==-1)this.detach(n);else{let n=i[3],r=new e(n,n[5],n[3]);r.detach(r.indexOf(t))}}let a=this._adjustIndex(n),o=this._lContainer;return Np(o,i,a,r),t.attachToViewContainerRef(),na(ih(o),a,t),t}move(e,t){return this.insert(e,t)}indexOf(e){let t=rh(this._lContainer);return t===null?-1:t.indexOf(e)}remove(e){let t=this._adjustIndex(e,-1),n=Fp(this._lContainer,t);n&&(ra(ih(this._lContainer),t),of(n[1],n))}detach(e){let t=this._adjustIndex(e,-1),n=Fp(this._lContainer,t);return n&&ra(ih(this._lContainer),t)!=null?new Rp(n):null}_adjustIndex(e,t=0){return e??this.length+t}};function rh(e){return e[8]}function ih(e){return e[8]||=[]}function ah(e,t){let n,r=t[e.index];return Ka(r)?n=r:(n=jp(r,t,null,e),t[e.index]=n,Mf(t,n)),sh(n,t,e,r),new nh(n,e,t)}function oh(e,t){let n=e[11],r=n.createComment(``),i=ro(t,e);return Su(n,n.parentNode(i),r,n.nextSibling(i),!1),r}var sh=uh,ch=()=>!1;function lh(e,t,n){return ch(e,t,n)}function uh(e,t,n,r){if(e[7])return;let i;i=n.type&8?to(r):oh(t,n),e[7]=i}var dh=class e{queryList;matches=null;constructor(e){this.queryList=e}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},fh=class e{queries;constructor(e=[]){this.queries=e}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries===null?n.length:t.contentQueries[0],i=[];for(let e=0;e0)r.push(o[e/2]);else{let i=a[e+1],o=t[-n];for(let e=10;ee.trim())}function Eh(e,t,n){e.queries===null&&(e.queries=new mh),e.queries.track(new hh(t,n))}function Dh(e,t){return e.queries.getByIndex(t)}function Oh(e,t){let n=e[1],r=Dh(n,t);return r.crossesNgTemplate?xh(n,e,t,[]):bh(n,e,r,t)}function kh(e,t,n){let r,i=Mn(()=>{r._dirtyCounter();let n=Nh(r,e);if(t&&n===void 0)throw new T(-951,!1);return n});return r=i[dn],r._dirtyCounter=j(0),r._flatValue=void 0,i}function Ah(e){return kh(!0,!1,e)}function jh(e){return kh(!0,!0,e)}function Mh(e,t){let n=e[dn];n._lView=O(),n._queryIndex=t,n._queryList=Sh(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(e=>e+1))}function Nh(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[2]&4)return t?void 0:ua;let i=Sh(n,r),a=Oh(n,r);return i.reset(a,Nl),t?i.first:i._changesDetected||e._flatValue===void 0?e._flatValue=i.toArray():e._flatValue}function Ph(e){return!!e&&typeof e.then==`function`}function Fh(e){return!!e&&typeof e.subscribe==`function`}var Ih=class{},Lh=class extends Ih{injector;instance=null;constructor(e){super();let t=new ja([...e.providers,{provide:Ih,useValue:this}],e.parent||ka(),e.debugName,new Set([`environment`]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function Rh(e,t,n=null){return new Lh({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var zh=(()=>{class e{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){let t=ga(!1,e.type),n=t.length>0?Rh([t],this._injector,``):null;this.cachedInjectors.set(e,n)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(let e of this.cachedInjectors.values())e!==null&&e.destroy()}finally{this.cachedInjectors.clear()}}static ɵprov=di({token:e,providedIn:`environment`,factory:()=>new e(qi(Aa))})}return e})();function Bh(e){return xc(()=>{let t=Kh(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==Ll.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?e=>e.get(zh).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||su.Emulated,styles:e.styles||ua,_:null,schemas:e.schemas||null,tView:null,id:``};t.standalone&&jd(`NgStandalone`),qh(n);let r=e.dependencies;return n.directiveDefs=Jh(r,Vh),n.pipeDefs=Jh(r,Oi),n.id=Yh(n),n})}function Vh(e){return Ei(e)||Di(e)}function Hh(e,t){if(e==null)return la;let n={};for(let r in e)if(Object.hasOwn(e,r)){let i=e[r],a,o,s,c;Array.isArray(i)?(s=i[0],a=i[1],o=i[2]??a,c=i[3]||null):(a=i,o=i,s=Pf.None,c=null),n[a]=[r,s,c],t[a]=o}return n}function Uh(e){if(e==null)return la;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function Wh(e){return xc(()=>{let t=Kh(e);return qh(t),t})}function Gh(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function Kh(e){let t={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||la,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||ua,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:Hh(e.inputs,t),outputs:Uh(e.outputs),debugInfo:null}}function qh(e){e.features?.forEach(t=>t(e))}function Jh(e,t){return e?()=>{let n=typeof e==`function`?e():e,r=[];for(let e of n){let n=t(e);n!==null&&r.push(n)}return r}:null}function Yh(e){let t=0,n=typeof e.consts==`function`?``:e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let e of r.join(`|`))t=Math.imul(31,t)+e.charCodeAt(0)<<0;return t+=2147483648,`c`+t}var Xh=new vi(``),Zh=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,t)=>{this.resolve=e,this.reject=t});appInits=E(Xh,{optional:!0})??[];injector=E(xs);constructor(){}runInitializers(){if(this.initialized)return;let e=[];for(let t of this.appInits){let n=Ha(this.injector,t);if(Ph(n))e.push(n);else if(Fh(n)){let t=new Promise((e,t)=>{n.subscribe({complete:e,error:t})});e.push(t)}}let t=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{t()}).catch(e=>{this.reject(e)}),e.length===0&&t(),this.initialized=!0}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})}return e})();function Qh(e,t,n,r,i,a,o,s){if(n.firstCreatePass){e.mergedAttrs=Zc(e.mergedAttrs,e.attrs);let t=e.tView=Tf(2,e,i,a,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,n.consts,null);n.queries!==null&&(n.queries.template(n,e),t.queries=n.queries.embeddedTView(e))}s&&(e.flags|=s),Io(e,!1);let c=ng(n,t,e,r);_s()&&hf(n,t,c,e),Wl(c,t);let l=jp(c,t,c,e);t[r+27]=l,Mf(t,l),lh(l,e,t)}function $h(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;return t.firstCreatePass?(f=Hp(t,d,4,o||null,s||null),Oo()&&xm(t,e,f,uo(t.consts,l),qf),Lc(t,f)):f=t.data[d],Qh(f,e,t,n,r,i,a,c),Ya(f)&&Lf(t,e,f),l!=null&&Rf(e,f,u),f}function eg(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;if(t.firstCreatePass){if(f=Hp(t,d,4,o||null,s||null),l!=null){let e=uo(t.consts,l);f.localNames=[];for(let t=0;t{throw new T(600,``)})}var sg=10,cg=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=E(Js);afterRenderManager=E(Md);zonelessEnabled=E(ac);rootEffectScheduler=E(sc);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new Zr;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=E(Ds);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(ei(e=>!e))}constructor(){E(kd,{optional:!0})}whenStable(){let e;return new Promise(t=>{e=this.isStable.subscribe({next:e=>{e&&t()}})}).finally(()=>{e.unsubscribe()})}_injector=E(Aa);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,t){return this.bootstrapImpl(e,t)}bootstrapImpl(e,t,n=xs.NULL){return this._injector.get(Fs).run(()=>{if(Fc(Sc.BootstrapComponentStart),!this._injector.get(Zh).done)throw new T(405,``);let r=Ei(e),i=this._injector.get(Ih),a=new qm(r,i);this.componentTypes.push(e);let{hostElement:o,directives:s,bindings:c}=lg(t),l=o||a.selector,u=a.create(n,[],l,i.injector,s,c),d=u.location.nativeElement,f=u.injector.get(ig,null);return f?.registerApplication(d),u.onDestroy(()=>{this.detachView(u.hostView),ug(this.components,u),f?.unregisterApplication(d)}),this._loadComponent(u),Fc(Sc.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){Fc(Sc.ChangeDetectionStart),this.tracingSnapshot===null?this.tickImpl():this.tracingSnapshot.run(Od.CHANGE_DETECTION,this.tickImpl)}tickImpl=()=>{if(this._runningTick)throw Fc(Sc.ChangeDetectionEnd),new T(101,!1);let e=w(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,w(e),this.afterTick.next(),Fc(Sc.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get($p,null,{optional:!0}));let e=0;for(;this.dirtyFlags!==0&&e++ho(e))){this.dirtyFlags|=2;return}this.dirtyFlags&=-8}attachView(e){let t=e;this._views.push(t),t.attachToAppRef(this)}detachView(e){let t=e;ug(this._views,t),t.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(e){this.internalErrorHandler(e)}this.components.push(e),this._injector.get(ag,[]).forEach(t=>t(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>ug(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new T(406,!1);let e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})}return e})();function lg(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function ug(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function N(e,t,n,r){let i=O();return om(i,Go(),t)&&(Mo(),Jf(ds(),i,e,t,n,r)),N}function dg(e){if(jd(`NgAnimateEnter`),!fd)return dg;let t=O();if(pd(t))return dg;let n=No(),r=t[9].get(Fs);return Dd(Cd(t),n,()=>fg(t,n,e,r)),Wd(t[9]),Gd(t[9],Cd(t)),dg}function fg(e,t,n,r){let i=ro(t,e),a=e[11],o=wd(n),s=[],c=!1,l=e=>{if(Td(e)!==i)return;let t=e instanceof AnimationEvent?`animationend`:`transitionend`;r.runOutsideAngular(()=>{a.listen(i,t,u)})},u=e=>{Td(e)===i&&(Ed(e,i)&&(c=!0),pg(e,i,a))};if(o&&o.length>0){r.runOutsideAngular(()=>{s.push(a.listen(i,`animationstart`,l)),s.push(a.listen(i,`transitionstart`,l))}),md(i,o,s);for(let e of o)a.addClass(i,e);r.runOutsideAngular(()=>{requestAnimationFrame(()=>{if(!c&&(sd(i,_d,fd),!_d.has(i))){for(let e of o)a.removeClass(i,e);hd(i)}})})}}function pg(e,t,n){let r=gd.get(t);if(Td(e)===t&&r&&Ed(e,t)){e.stopPropagation();for(let e of r.classList)n.removeClass(t,e);hd(t)}}var mg=class{destroy(e){}updateValue(e,t){}swap(e,t){let n=Math.min(e,t),r=Math.max(e,t),i=this.detach(r);if(r-n>1){let e=this.detach(n);this.attach(n,i),this.attach(r,e)}else this.attach(n,i)}move(e,t){this.attach(t,this.detach(e))}};function hg(e,t,n,r,i){return e===n&&Object.is(t,r)?1:Object.is(i(e,t),i(n,r))?-1:0}function gg(e,t,n,r){let i,a,o=0,s=e.length-1;if(Array.isArray(t)){w(r);let c=t.length-1;for(w(null);o<=s&&o<=c;){let r=e.at(o),l=t[o],u=hg(o,r,o,l,n);if(u!==0){u<0&&e.updateValue(o,l),o++;continue}let d=e.at(s),f=t[c],p=hg(s,d,c,f,n);if(p!==0){p<0&&e.updateValue(s,f),s--,c--;continue}let m=n(o,r),h=n(s,d),g=n(o,l);if(Object.is(g,h)){let t=n(c,f);Object.is(t,m)?(e.swap(o,s),e.updateValue(s,f),c--,s--):e.move(s,o),e.updateValue(o,l),o++;continue}if(i??=new bg,a??=yg(e,o,s,n),_g(e,i,o,g))e.updateValue(o,l),o++,s++;else if(a.has(g))i.set(m,e.detach(o)),s--;else{let n=e.create(o,t[o]);e.attach(o,n),o++,s++}}for(;o<=c;)vg(e,i,n,o,t[o]),o++}else if(t!=null){w(r);let c=t[Symbol.iterator]();w(null);let l=c.next();for(;!l.done&&o<=s;){let t=e.at(o),r=l.value,u=hg(o,t,o,r,n);if(u!==0)u<0&&e.updateValue(o,r),o++,l=c.next();else{i??=new bg,a??=yg(e,o,s,n);let u=n(o,r);if(_g(e,i,o,u))e.updateValue(o,r),o++,s++,l=c.next();else if(!a.has(u))e.attach(o,e.create(o,r)),o++,s++,l=c.next();else{let r=n(o,t);i.set(r,e.detach(o)),s--}}}for(;!l.done;)vg(e,i,n,e.length,l.value),l=c.next()}for(;o<=s;)e.destroy(e.detach(s--));i?.forEach(t=>{e.destroy(t)})}function _g(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function vg(e,t,n,r,i){if(_g(e,t,r,n(r,i)))e.updateValue(r,i);else{let t=e.create(r,i);e.attach(r,t)}}function yg(e,t,n,r){let i=new Set;for(let a=t;a<=n;a++)i.add(r(a,e.at(a)));return i}var bg=class{kvMap=new Map;_vMap=void 0;has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;let t=this.kvMap.get(e);return this._vMap!==void 0&&this._vMap.has(t)?(this.kvMap.set(e,this._vMap.get(t)),this._vMap.delete(t)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,t){if(this.kvMap.has(e)){let n=this.kvMap.get(e);this._vMap===void 0&&(this._vMap=new Map);let r=this._vMap;for(;r.has(n);)n=r.get(n);r.set(n,t)}else this.kvMap.set(e,t)}forEach(e){for(let[t,n]of this.kvMap)if(e(n,t),this._vMap!==void 0){let r=this._vMap;for(;r.has(n);)n=r.get(n),e(n,t)}}};function P(e,t,n,r,i,a,o,s){jd(`NgControlFlow`);let c=O(),l=Mo();return eg(c,l,e,t,n,r,i,uo(l.consts,a),256,o,s),xg}function xg(e,t,n,r,i,a,o,s){jd(`NgControlFlow`);let c=O(),l=Mo();return eg(c,l,e,t,n,r,i,uo(l.consts,a),512,o,s),xg}function F(e,t){jd(`NgControlFlow`);let n=O(),r=Go(),i=n[r]===Ju?-1:n[r],a=i===-1?void 0:Dg(n,27+i);if(om(n,r,e)){let r=w(null);try{if(a!==void 0&&Pp(a,0),e!==-1){let r=27+e,i=Dg(n,r),a=Mg(n[1],r),o=Zp(i,a,n);Np(i,ap(n,a,t,{dehydratedView:o}),0,op(a,o))}}finally{w(r)}}else if(a!==void 0){let e=Mp(a,0);e!==void 0&&(e[8]=t)}}var Sg=class{lContainer;$implicit;$index;constructor(e,t,n){this.lContainer=e,this.$implicit=t,this.$index=n}get $count(){return this.lContainer.length-10}};function Cg(e){return e}function wg(e,t){return t}var Tg=class{hasEmptyBlock;trackByFn;liveCollection;constructor(e,t,n){this.hasEmptyBlock=e,this.trackByFn=t,this.liveCollection=n}};function I(e,t,n,r,i,a,o,s,c,l,u,d,f){jd(`NgControlFlow`);let p=O(),m=Mo(),h=c!==void 0,g=O(),_=new Tg(h,s?o.bind(g[15][8]):o);g[27+e]=_,eg(p,m,e+1,t,n,r,i,uo(m.consts,a),256),h&&eg(p,m,e+2,c,l,u,d,uo(m.consts,f),512)}var Eg=class extends mg{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(e,t,n){super(),this.lContainer=e,this.hostLView=t,this.templateTNode=n}get length(){return this.lContainer.length-10}at(e){return this.getLView(e)[8].$implicit}attach(e,t){let n=t[6];this.needsIndexUpdate||=e!==this.length,Np(this.lContainer,t,e,op(this.templateTNode,n)),Og(this.lContainer,e)}detach(e){return this.needsIndexUpdate||=e!==this.length-1,kg(this.lContainer,e),Ag(this.lContainer,e)}create(e,t){let n=Xp(this.lContainer,this.templateTNode.tView.ssrId);return ap(this.hostLView,this.templateTNode,new Sg(this.lContainer,t,e),{dehydratedView:n})}destroy(e){of(e[1],e)}updateValue(e,t){this.getLView(e)[8].$implicit=t}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e0){let e=n[9];Hd(e,r),ld.delete(n[19]),r.detachedLeaveAnimationFns=void 0}}function kg(e,t){if(e.length<=10)return;let n=e[10+t],r=n?n[26]:void 0;r&&r.leave&&r.leave.size>0&&(r.detachedLeaveAnimationFns=[])}function Ag(e,t){return Fp(e,t)}function jg(e,t){return Mp(e,t)}function Mg(e,t){return io(e,t)}function R(e,t,n){let r=O();return om(r,Go(),t)&&(Mo(),Vf(ds(),r,e,t,r[11],n)),R}function Ng(e,t,n,r,i){ep(t,e,n,i?`class`:`style`,r)}function z(e,t,n,r){let i=O(),a=i[1],o=e+27,s=a.firstCreatePass?Fm(o,i,2,t,qf,Oo(),n,r):a.data[o];if(Ja(s)){let n=i[10].tracingService;if(n&&n.componentCreate){let o=a.data[s.directiveStart+s.componentOffset];return n.componentCreate(tm(o),()=>(Pg(e,t,i,s,r),z))}}return Pg(e,t,i,s,r),z}function Pg(e,t,n,r,i){if(Zf(r,n,e,t,Ig),Ya(r)){let e=n[1];Lf(e,n,r),ou(e,r,n)}i!=null&&Rf(n,r)}function B(){let e=Mo(),t=Qf(No());return e.firstCreatePass&&Im(e,t),Ao(t)&&jo(),Do(),t.classesWithoutHost!=null&&Kc(t)&&Ng(e,t,O(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&qc(t)&&Ng(e,t,O(),t.stylesWithoutHost,!1),B}function V(e,t,n,r){return z(e,t,n,r),B(),V}function H(e,t,n,r){let i=O(),a=i[1],o=e+27,s=a.firstCreatePass?Lm(o,a,2,t,n,r):a.data[o];return Zf(s,i,e,t,Ig),r!=null&&Rf(i,s),H}function U(){return Ao(Qf(No()))&&jo(),Do(),U}function Fg(e,t,n,r){return H(e,t,n,r),U(),Fg}var Ig=(e,t,n,r,i)=>(vs(!0),xu(t[11],r,hs()));function Lg(e,t,n){let r=O(),i=r[1],a=e+27,o=i.firstCreatePass?Fm(a,r,8,`ng-container`,qf,Oo(),t,n):i.data[a];if(Zf(o,r,e,`ng-container`,Bg),Ya(o)){let e=r[1];Lf(e,r,o),ou(e,o,r)}return n!=null&&Rf(r,o),Lg}function Rg(){let e=Mo(),t=Qf(No());return e.firstCreatePass&&Im(e,t),Rg}function zg(e,t,n){return Lg(e,t,n),Rg(),zg}var Bg=(e,t,n,r,i)=>(vs(!0),bu(t[11],``));function W(){return O()}function Vg(e,t,n){let r=O();return om(r,Go(),t)&&(Mo(),Hf(ds(),r,e,t,r[11],n)),Vg}var Hg=void 0;function Ug(e){let t=Math.floor(Math.abs(e)),n=e.toString().replace(/^[^.]*\.?/,``).length;return t===1&&n===0?1:5}var Wg=[`en`,[[`a`,`p`],[`AM`,`PM`]],[[`AM`,`PM`]],[[`S`,`M`,`T`,`W`,`T`,`F`,`S`],[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`]],Hg,[[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]],Hg,[[`B`,`A`],[`BC`,`AD`],[`Before Christ`,`Anno Domini`]],0,[6,0],[`M/d/yy`,`MMM d, y`,`MMMM d, y`,`EEEE, MMMM d, y`],[`h:mm a`,`h:mm:ss a`,`h:mm:ss a z`,`h:mm:ss a zzzz`],[`{1}, {0}`,Hg,Hg,Hg],[`.`,`,`,`;`,`%`,`+`,`-`,`E`,`×`,`‰`,`∞`,`NaN`,`:`],[`#,##0.###`,`#,##0%`,`¤#,##0.00`,`#E0`],`USD`,`$`,`US Dollar`,{},`ltr`,Ug],Gg=Object.create(null);function Kg(e){let t=Yg(e),n=qg(t);if(n)return n;let r=t.split(`-`)[0];if(n=qg(r),n)return n;if(r===`en`)return Wg;throw new T(701,!1)}function qg(e){if(!(e in Gg)){let t=Hi.ng&&Hi.ng.common&&Hi.ng.common.locales&&Hi.ng.common.locales[e];return t!==void 0&&(Gg[e]=t),t}return Gg[e]}var Jg={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencyCode:15,CurrencySymbol:16,CurrencyName:17,Currencies:18,Directionality:19,PluralCase:20,ExtraData:21};function Yg(e){return e.toLowerCase().replace(/_/g,`-`)}var Xg=`en-US`;function Zg(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function G(e,t,n){let r=O(),i=Mo(),a=No();return $g(i,r,r[11],a,e,t,n),G}function Qg(e,t,n){let r=O(),i=Mo(),a=No();return(a.type&3||n)&&fm(a,i,r,n,r[11],e,t,um(a,r,t)),Qg}function $g(e,t,n,r,i,a,o){let s=!0,c=null;if((r.type&3||o)&&(c??=um(r,t,a),fm(r,e,t,o,n,i,a,c)&&(s=!1)),s){let e=r.outputs?.[i],n=r.hostDirectiveOutputs?.[i];if(n&&n.length)for(let e=0;e>17&32767}function a_(e){return(e&2)==2}function o_(e,t){return e&131071|t<<17}function s_(e){return e|2}function c_(e){return(e&131068)>>2}function l_(e,t){return e&-131069|t<<2}function u_(e){return(e&1)==1}function d_(e){return e|1}function f_(e,t,n,r,i,a){let o=a?t.classBindings:t.styleBindings,s=i_(o),c=c_(o);e[r]=n;let l=!1,u;if(Array.isArray(n)){let e=n;u=e[1],(u===null||sa(e,u)>0)&&(l=!0)}else u=n;if(i){if(c!==0){let t=i_(e[s+1]);e[r+1]=r_(t,s),t!==0&&(e[t+1]=l_(e[t+1],r)),e[s+1]=o_(e[s+1],r)}else e[r+1]=r_(s,0),s!==0&&(e[s+1]=l_(e[s+1],r)),s=r}else e[r+1]=r_(c,0),s===0?s=r:e[c+1]=l_(e[c+1],r),c=r;l&&(e[r+1]=s_(e[r+1])),m_(e,u,r,!0),m_(e,u,r,!1),p_(t,u,e,r,a),o=r_(s,c),a?t.classBindings=o:t.styleBindings=o}function p_(e,t,n,r,i){let a=i?e.residualClasses:e.residualStyles;a!=null&&typeof t==`string`&&sa(a,t)>=0&&(n[r+1]=d_(n[r+1]))}function m_(e,t,n,r){let i=e[n+1],a=t===null,o=r?i_(i):c_(i),s=!1;for(;o!==0&&(s===!1||a);){let n=e[o],i=e[o+1];h_(n,t)&&(s=!0,e[o+1]=r?d_(i):s_(i)),o=r?i_(i):c_(i)}s&&(e[n+1]=r?s_(i):d_(i))}function h_(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?sa(e,t)>=0:!1}var g_={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function __(e){return e.substring(g_.key,g_.keyEnd)}function v_(e){return b_(e),y_(e,x_(e,0,g_.textEnd))}function y_(e,t){let n=g_.textEnd;return n===t?-1:(t=g_.keyEnd=S_(e,g_.key=t,n),x_(e,t,n))}function b_(e){g_.key=0,g_.keyEnd=0,g_.value=0,g_.valueEnd=0,g_.textEnd=e.length}function x_(e,t,n){for(;t32;)t++;return t}function C_(e,t,n){return E_(e,t,n,!1),C_}function q(e,t){return E_(e,t,null,!0),q}function w_(e){D_(L_,T_,e,!0)}function T_(e,t){for(let n=v_(t);n>=0;n=y_(t,n))aa(e,__(t),!0)}function E_(e,t,n,r){let i=O(),a=Mo(),o=Ko(2);if(a.firstUpdatePass&&k_(a,e,o,r),t!==Ju&&om(i,o,t)){let s=a.data[ls()];z_(a,s,i,i[11],e,i[o+1]=H_(t,n),r,o)}}function D_(e,t,n,r){let i=Mo(),a=Ko(2);i.firstUpdatePass&&k_(i,null,a,r);let o=O();if(n!==Ju&&om(o,a,n)){let s=i.data[ls()];if(U_(s,r)&&!O_(i,a)){let e=r?s.classesWithoutHost:s.stylesWithoutHost;e!==null&&(n=oi(e,n||``)),Ng(i,s,o,n,r)}else R_(i,s,o,o[11],o[a+1],o[a+1]=I_(e,t,n),r,a)}}function O_(e,t){return t>=e.expandoStartIndex}function k_(e,t,n,r){let i=e.data;if(i[n+1]===null){let a=i[ls()],o=O_(e,n);U_(a,r)&&t===null&&!o&&(t=!1),t=A_(i,a,t,r),f_(i,a,t,n,o,r)}}function A_(e,t,n,r){let i=Zo(e),a=r?t.residualClasses:t.residualStyles;if(i===null)(r?t.classBindings:t.styleBindings)===0&&(n=P_(null,e,t,n,r),n=F_(n,t.attrs,r),a=null);else{let o=t.directiveStylingLast;if(o===-1||e[o]!==i){if(n=P_(i,e,t,n,r),a===null){let n=j_(e,t,r);n!==void 0&&Array.isArray(n)&&(n=P_(null,e,t,n[1],r),n=F_(n,t.attrs,r),M_(e,t,r,n))}else a=N_(e,t,r)}}return a!==void 0&&(r?t.residualClasses=a:t.residualStyles=a),n}function j_(e,t,n){let r=n?t.classBindings:t.styleBindings;if(c_(r)!==0)return e[i_(r)]}function M_(e,t,n,r){let i=n?t.classBindings:t.styleBindings;e[i_(i)]=r}function N_(e,t,n){let r,i=t.directiveEnd;for(let a=1+t.directiveStylingLast;a0;){let t=e[i],a=Array.isArray(t),c=a?t[1]:t,l=c===null,u=n[i+1];u===Ju&&(u=l?ua:void 0);let d=l?oa(u,r):c===r?u:void 0;if(a&&!V_(d)&&(d=oa(t,r)),V_(d)&&(s=d,o))return s;let f=e[i+1];i=o?i_(f):c_(f)}if(t!==null){let e=a?t.residualClasses:t.residualStyles;e!=null&&(s=oa(e,r))}return s}function V_(e){return e!==void 0}function H_(e,t){return e==null||e===``||(typeof t==`string`?e=lu(e)+t:typeof e==`object`&&(e=ai(lu(e)))),e}function U_(e,t){return!!(e.flags&(t?8:16))}function J(e,t=``){let n=O(),r=Mo(),i=e+27,a=r.firstCreatePass?Hp(r,i,1,t,null):r.data[i],o=W_(r,n,a,t);n[i]=o,_s()&&hf(r,n,o,a),Io(a,!1)}var W_=(e,t,n,r)=>(vs(!0),vu(t[11],r));function G_(e,t,n,r=``){return om(e,Go(),n)?t+Ai(n)+r:Ju}function K_(e,t,n,r,i,a=``){let o=sm(e,Uo(),n,i);return Ko(2),o?t+Ai(n)+r+Ai(i)+a:Ju}function q_(e,t,n,r,i,a,o,s=``){let c=cm(e,Uo(),n,i,o);return Ko(3),c?t+Ai(n)+r+Ai(i)+a+Ai(o)+s:Ju}function J_(e,t,n,r,i,a,o,s,c,l=``){let u=lm(e,Uo(),n,i,o,c);return Ko(4),u?t+Ai(n)+r+Ai(i)+a+Ai(o)+s+Ai(c)+l:Ju}function Y(e){return X(``,e),Y}function X(e,t,n){let r=O(),i=G_(r,e,t,n);return i!==Ju&&Z_(r,ls(),i),X}function Z(e,t,n,r,i){let a=O(),o=K_(a,e,t,n,r,i);return o!==Ju&&Z_(a,ls(),o),Z}function Y_(e,t,n,r,i,a,o){let s=O(),c=q_(s,e,t,n,r,i,a,o);return c!==Ju&&Z_(s,ls(),c),Y_}function X_(e,t,n,r,i,a,o,s,c){let l=O(),u=J_(l,e,t,n,r,i,a,o,s,c);return u!==Ju&&Z_(l,ls(),u),X_}function Z_(e,t,n){let r=no(t,e);yu(e[11],r,n)}function Q_(e,t,n){vc(t)&&(t=t());let r=O();return om(r,Go(),t)&&(Mo(),Vf(ds(),r,e,t,r[11],n)),Q_}function $_(e,t){let n=vc(e);return n&&e.set(t),n}function ev(e,t){let n=O(),r=Mo(),i=No();return $g(r,n,n[11],i,e,t),ev}var tv={};function nv(e){jd(`NgLet`);let t=Mo(),n=O(),r=e+27;return Io(Hp(t,r,128,null,null),!1),oo(t,n,r,tv),nv}function rv(e){return oo(Mo(),O(),ls(),e),e}function iv(e){let t=ao(zo(),27+e);if(t===tv)throw new T(314,!1);return t}function av(e,t,n=``){return G_(O(),e,t,n)}function ov(e,t){let n=Ho()+e,r=O();return r[n]===Ju?im(r,n,t()):am(r,n)}function sv(e,t,n){return lv(O(),Ho(),e,t,n)}function cv(e,t){let n=e[t];return n===Ju?void 0:n}function lv(e,t,n,r,i,a){let o=t+n;return om(e,o,i)?im(e,o+1,a?r.call(a,i):r(i)):cv(e,o+1)}function uv(e,t,n,r,i,a,o){let s=t+n;return sm(e,s,i,a)?im(e,s+2,o?r.call(o,i,a):r(i,a)):cv(e,s+2)}function dv(e,t){let n=Mo(),r,i=e+27;n.firstCreatePass?(r=fv(t,n.pipeRegistry),n.data[i]=r,r.onDestroy&&(n.destroyHooks??=[]).push(i,r.onDestroy)):r=n.data[i];let a=r.factory||(r.factory=Qi(r.type,!0)),o=Bi(bm);try{let e=il(!1),t=a();return il(e),oo(n,O(),i,t),t}finally{Bi(o)}}function fv(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function pv(e,t,n){let r=e+27,i=O(),a=ao(i,r);return hv(i,r)?lv(i,Ho(),t,a.transform,n,a):a.transform(n)}function mv(e,t,n,r){let i=e+27,a=O(),o=ao(a,i);return hv(a,i)?uv(a,Ho(),t,o.transform,n,r,o):o.transform(n,r)}function hv(e,t){return e[1].data[t].pure}function gv(e,t){return Vp(e,t)}var _v=(()=>{class e{applicationErrorHandler=E(Js);appRef=E(cg);taskService=E(Ds);ngZone=E(Fs);zonelessEnabled=E(ac);tracing=E(kd,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new hr;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Ns):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(E(oc,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let e=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(e);return}this.switchToMicrotaskScheduler(),this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&e===5)return;switch(e){case 0:case 2:this.appRef.dirtyFlags|=2;break;case 3:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 6:this.appRef.dirtyFlags|=2;break;case 12:this.appRef.dirtyFlags|=16;break;case 13:this.appRef.dirtyFlags|=2;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let t=this.useMicrotaskScheduler?js:As;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>t(()=>this.tick())):this.ngZone.runOutsideAngular(()=>t(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(`isAngularZone_ID`+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(e){this.applicationErrorHandler(e)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static ɵfac=function(t){return new(t||e)};static ɵprov=kl({token:e,factory:e.ɵfac})}return e})();function vv(){return[{provide:ic,useExisting:_v},{provide:Fs,useClass:Us},{provide:ac,useValue:!0}]}function yv(){return typeof $localize<`u`&&$localize.locale||`en-US`}var bv=new vi(``,{factory:()=>E(bv,{optional:!0,skipSelf:!0})||yv()}),xv=class{destroyed=!1;listeners=null;errorHandler=E(qs,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=E(Cs);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(e){if(this.destroyed)throw new T(953,!1);return(this.listeners??=[]).push(e),{unsubscribe:()=>{let t=this.listeners?this.listeners.indexOf(e):-1;t>-1&&(this.isEmitting?(this.hasNullListeners=!0,this.listeners[t]=null):this.listeners.splice(t,1))}}}emit(e){if(this.destroyed){console.warn(ri(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let t=w(null);try{for(let t of this.listeners)try{t!==null&&t(e)}catch(e){this.errorHandler?.handleError(e)}}finally{this.hasNullListeners&&(this.hasNullListeners=!1,this.listeners&&Sv(this.listeners)),w(t),this.isEmitting=!1}}};function Sv(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function Q(e,t){return Mn(e,t?.equal)}function Cv(e){return ar(e)}(class e extends Error{_brand;constructor(e){super(e)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var wv=e=>e;function Tv(e,t){return typeof e==`function`?Ev(tr(e,wv,t?.equal),t?.debugName,t?.set):Ev(tr(e.source,e.computation,e.equal),e.debugName,e.set)}function Ev(e,t,n){let r=e[dn],i=e;if(n!==void 0){let t=e=>nr(r,e);i.set=e=>n(e,t),i.update=r=>n(r(Cv(e)),t)}else i.set=e=>nr(r,e),i.update=e=>rr(r,e);return i.asReadonly=Xs.bind(e),i}function Dv(e,t){let n=Object.create(bc);n.value=e,n.transformFn=t?.transform;function r(){if(mn(n),n.value===yc)throw new T(-950,null);return n.value}return r[dn]=n,r}function Ov(e){return new xv}function kv(e,t){return Dv(e,t)}function Av(e){return Dv(yc,e)}var $=(kv.required=Av,kv);function jv(e,t){let n=Object.create(bc),r=new xv;n.value=e;function i(){return mn(n),Mv(n.value),n.value}return i[dn]=n,i.asReadonly=Xs.bind(i),i.set=e=>{n.equal(n.value,e)||(Wn(n,e),r.emit(e))},i.update=e=>{Mv(n.value),i.set(e(n.value))},i.subscribe=r.subscribe.bind(r),i.destroyRef=r.destroyRef,i}function Mv(e){if(e===yc)throw new T(952,!1)}function Nv(e,t){return jv(e,t)}function Pv(e){return jv(yc,e)}var Fv=(Nv.required=Pv,Nv);function Iv(e,t){return Ah(t)}function Lv(e,t){return jh(t)}var Rv=(Iv.required=Lv,Iv),zv=new vi(``),Bv=new vi(``);function Vv(e){return!e.moduleRef}function Hv(e){let t=Vv(e)?e.r3Injector:e.moduleRef.injector,n=t.get(Fs);return n.run(()=>{Vv(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Js),i;if(n.runOutsideAngular(()=>{i=n.onError.subscribe({next:r})}),Vv(e)){let n=()=>t.destroy(),r=e.platformInjector.get(zv);r.add(n),t.onDestroy(()=>{i.unsubscribe(),r.delete(n)})}else{let t=()=>e.moduleRef.destroy(),n=e.platformInjector.get(zv);n.add(t),e.moduleRef.onDestroy(()=>{ug(e.allPlatformModules,e.moduleRef),i.unsubscribe(),n.delete(t)})}return Wv(r,n,()=>{let n=t.get(Ds),r=n.add(),i=t.get(Zh);return i.runInitializers(),i.donePromise.then(()=>{if(Zg(t.get(bv,Xg)||`en-US`),!t.get(Bv,!0))return Vv(e)?t.get(cg):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(Vv(e)){let n=t.get(cg);return e.rootComponent!==void 0&&n.bootstrap(e.rootComponent),n}return Uv?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>void n.remove(r))})})}var Uv;function Wv(e,t,n){try{let r=n();return Ph(r)?r.catch(n=>{throw t.runOutsideAngular(()=>e(n)),n}):r}catch(n){throw t.runOutsideAngular(()=>e(n)),n}}var Gv=null;function Kv(e=[],t){return xs.create({name:t,providers:[{provide:Ta,useValue:`platform`},{provide:zv,useValue:new Set([()=>Gv=null])},...e]})}function qv(e=[]){if(Gv)return Gv;let t=Kv(e);return Gv=t,og(),Jv(t),t}function Jv(e){let t=e.get($s,null);Ha(e,()=>{t?.forEach(e=>e())})}function Yv(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:i}=e;Fc(Sc.BootstrapApplicationStart);try{let e=i?.injector??qv(r);return Hv({r3Injector:new Lh({providers:[vv(),Ys,...n||[]],parent:e,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:e,rootComponent:t})}catch(e){return Promise.reject(e)}finally{Fc(Sc.BootstrapApplicationEnd)}}var Xv=Symbol(`NOT_SET`),Zv=new Set,Qv={...Kn,kind:`afterRenderEffectPhase`,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:Xv,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(this.sequence.lastPhase===null||this.sequence.lastPhase(mn(r),r.value),r.signal[dn]=r,r.registerCleanupFn=e=>(r.cleanup??=new Set).add(e),this.nodes[e]=r,this.hooks[e]=e=>r.phaseFn(e)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();super.destroy();for(let e of this.nodes)if(e)try{for(let t of e.cleanup??Zv)t()}finally{En(e)}}};function ey(e,t){let n=t?.injector??E(xs),r=n.get(ic),i=n.get(Md),a=n.get(kd,null,{optional:!0});i.impl??=n.get(Pd);let o=e;typeof o==`function`&&(o={mixedReadWrite:e});let s=n.get(nc,null,{optional:!0}),c=new $v(i.impl,[o.earlyRead,o.write,o.mixedReadWrite,o.read],s?.view,r,n,a?.snapshot(null));return i.impl.register(c),c}var ty=null;function ny(){return ty}function ry(e){ty??=e}var iy=class{},ay=(function(e){return e[e.Format=0]=`Format`,e[e.Standalone=1]=`Standalone`,e})(ay||{}),oy=(function(e){return e[e.Narrow=0]=`Narrow`,e[e.Abbreviated=1]=`Abbreviated`,e[e.Wide=2]=`Wide`,e[e.Short=3]=`Short`,e})(oy||{}),sy=(function(e){return e[e.Short=0]=`Short`,e[e.Medium=1]=`Medium`,e[e.Long=2]=`Long`,e[e.Full=3]=`Full`,e})(sy||{}),cy={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function ly(e){return Kg(e)[Jg.LocaleId]}function uy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.DayPeriodsFormat],r[Jg.DayPeriodsStandalone]],t),n)}function dy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.DaysFormat],r[Jg.DaysStandalone]],t),n)}function fy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.MonthsFormat],r[Jg.MonthsStandalone]],t),n)}function py(e,t){let n=Kg(e)[Jg.Eras];return xy(n,t)}function my(e,t){return xy(Kg(e)[Jg.DateFormat],t)}function hy(e,t){return xy(Kg(e)[Jg.TimeFormat],t)}function gy(e,t){let n=Kg(e)[Jg.DateTimeFormat];return xy(n,t)}function _y(e,t){let n=Kg(e),r=n[Jg.NumberSymbols][t];if(r===void 0){if(t===cy.CurrencyDecimal)return n[Jg.NumberSymbols][cy.Decimal];if(t===cy.CurrencyGroup)return n[Jg.NumberSymbols][cy.Group]}return r}function vy(e){if(!e[Jg.ExtraData])throw new T(2303,!1)}function yy(e){let t=Kg(e);return vy(t),(t[Jg.ExtraData][2]||[]).map(e=>typeof e==`string`?Sy(e):[Sy(e[0]),Sy(e[1])])}function by(e,t,n){let r=Kg(e);return vy(r),xy(xy([r[Jg.ExtraData][0],r[Jg.ExtraData][1]],t)||[],n)||[]}function xy(e,t){for(let n=t;n>-1;n--)if(e[n]!==void 0)return e[n];throw new T(2304,!1)}function Sy(e){let[t,n]=e.split(`:`);return{hours:+t,minutes:+n}}var Cy=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,wy=Object.create(null),Ty=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,Ey=256;function Dy(e,t,n,r){let i=Xy(e);Oy(t),t=Ay(n,t)||t;let a=[],o;for(;t;)if(o=Ty.exec(t),o){a=a.concat(o.slice(1));let e=a.pop();if(!e)break;t=e}else{a.push(t);break}let s=i.getTimezoneOffset();r&&(s=qy(r,s),i=Yy(i,r));let c=``;return a.forEach(e=>{let t=Ky(e);c+=t?t(i,n,s):e===`''`?`'`:e.replace(/(^'|'$)/g,``).replace(/''/g,`'`)}),c}function Oy(e){if(e.length>Ey)throw new T(2300,!1)}function ky(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function Ay(e,t){let n=ly(e);if(wy[n]??=Object.create(null),wy[n][t])return wy[n][t];let r=``;switch(t){case`shortDate`:r=my(e,sy.Short);break;case`mediumDate`:r=my(e,sy.Medium);break;case`longDate`:r=my(e,sy.Long);break;case`fullDate`:r=my(e,sy.Full);break;case`shortTime`:r=hy(e,sy.Short);break;case`mediumTime`:r=hy(e,sy.Medium);break;case`longTime`:r=hy(e,sy.Long);break;case`fullTime`:r=hy(e,sy.Full);break;case`short`:let t=Ay(e,`shortTime`),n=Ay(e,`shortDate`);r=jy(gy(e,sy.Short),[t,n]);break;case`medium`:let i=Ay(e,`mediumTime`),a=Ay(e,`mediumDate`);r=jy(gy(e,sy.Medium),[i,a]);break;case`long`:let o=Ay(e,`longTime`),s=Ay(e,`longDate`);r=jy(gy(e,sy.Long),[o,s]);break;case`full`:let c=Ay(e,`fullTime`),l=Ay(e,`fullDate`);r=jy(gy(e,sy.Full),[c,l])}return r&&(wy[n][t]=r),r}function jy(e,t){return t&&(e=e.replace(/\{([^}]+)}/g,function(e,n){return Object.hasOwn(t,n)?t[n]:e})),e}function My(e,t,n=`-`,r,i){let a=``;(e<0||i&&e<=0)&&(i?e=-e+1:(e=-e,a=n));let o=String(e);for(;o.length0||s>-n)&&(s+=n),e===3)s===0&&n===-12&&(s=12);else if(e===6)return Ny(s,t);let c=_y(o,cy.MinusSign);return My(s,t,c,r,i)}}function Fy(e,t){switch(e){case 0:return t.getFullYear();case 1:return t.getMonth();case 2:return t.getDate();case 3:return t.getHours();case 4:return t.getMinutes();case 5:return t.getSeconds();case 6:return t.getMilliseconds();case 7:return t.getDay();default:throw new T(2301,!1)}}function Iy(e,t,n=ay.Format,r=!1){return function(i,a){return Ly(i,a,e,t,n,r)}}function Ly(e,t,n,r,i,a){switch(n){case 2:return fy(t,i,r)[e.getMonth()];case 1:return dy(t,i,r)[e.getDay()];case 0:let n=e.getHours(),o=e.getMinutes();if(a){let e=yy(t),a=by(t,i,r),s=e.findIndex(e=>{if(Array.isArray(e)){let[t,r]=e,i=n>=t.hours&&o>=t.minutes,a=n0?Math.floor(i/60):Math.ceil(i/60);switch(e){case 0:return(i>=0?`+`:``)+My(o,2,a)+My(Math.abs(i%60),2,a);case 1:return`GMT`+(i>=0?`+`:``)+My(o,1,a);case 2:return`GMT`+(i>=0?`+`:``)+My(o,2,a)+`:`+My(Math.abs(i%60),2,a);case 3:return r===0?`Z`:(i>=0?`+`:``)+My(o,2,a)+`:`+My(Math.abs(i%60),2,a);default:throw new T(2310,!1)}}}var zy=0,By=4;function Vy(e){let t=ky(e,zy,1).getDay();return ky(e,0,1+(t<=By?By:11)-t)}function Hy(e){let t=e.getDay(),n=t===0?-3:By-t;return ky(e.getFullYear(),e.getMonth(),e.getDate()+n)}function Uy(e,t=!1){return function(n,r){let i;if(t){let e=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,t=n.getDate();i=1+Math.floor((t+e)/7)}else{let e=Hy(n),t=Vy(e.getFullYear()),r=e.getTime()-t.getTime();i=1+Math.round(r/6048e5)}return My(i,e,_y(r,cy.MinusSign))}}function Wy(e,t=!1){return function(n,r){return My(Hy(n).getFullYear(),e,_y(r,cy.MinusSign),t)}}var Gy=Object.create(null);function Ky(e){if(Gy[e])return Gy[e];let t;switch(e){case`G`:case`GG`:case`GGG`:t=Iy(3,oy.Abbreviated);break;case`GGGG`:t=Iy(3,oy.Wide);break;case`GGGGG`:t=Iy(3,oy.Narrow);break;case`y`:t=Py(0,1,0,!1,!0);break;case`yy`:t=Py(0,2,0,!0,!0);break;case`yyy`:t=Py(0,3,0,!1,!0);break;case`yyyy`:t=Py(0,4,0,!1,!0);break;case`Y`:t=Wy(1);break;case`YY`:t=Wy(2,!0);break;case`YYY`:t=Wy(3);break;case`YYYY`:t=Wy(4);break;case`M`:case`L`:t=Py(1,1,1);break;case`MM`:case`LL`:t=Py(1,2,1);break;case`MMM`:t=Iy(2,oy.Abbreviated);break;case`MMMM`:t=Iy(2,oy.Wide);break;case`MMMMM`:t=Iy(2,oy.Narrow);break;case`LLL`:t=Iy(2,oy.Abbreviated,ay.Standalone);break;case`LLLL`:t=Iy(2,oy.Wide,ay.Standalone);break;case`LLLLL`:t=Iy(2,oy.Narrow,ay.Standalone);break;case`w`:t=Uy(1);break;case`ww`:t=Uy(2);break;case`W`:t=Uy(1,!0);break;case`d`:t=Py(2,1);break;case`dd`:t=Py(2,2);break;case`c`:case`cc`:t=Py(7,1);break;case`ccc`:t=Iy(1,oy.Abbreviated,ay.Standalone);break;case`cccc`:t=Iy(1,oy.Wide,ay.Standalone);break;case`ccccc`:t=Iy(1,oy.Narrow,ay.Standalone);break;case`cccccc`:t=Iy(1,oy.Short,ay.Standalone);break;case`E`:case`EE`:case`EEE`:t=Iy(1,oy.Abbreviated);break;case`EEEE`:t=Iy(1,oy.Wide);break;case`EEEEE`:t=Iy(1,oy.Narrow);break;case`EEEEEE`:t=Iy(1,oy.Short);break;case`a`:case`aa`:case`aaa`:t=Iy(0,oy.Abbreviated);break;case`aaaa`:t=Iy(0,oy.Wide);break;case`aaaaa`:t=Iy(0,oy.Narrow);break;case`b`:case`bb`:case`bbb`:t=Iy(0,oy.Abbreviated,ay.Standalone,!0);break;case`bbbb`:t=Iy(0,oy.Wide,ay.Standalone,!0);break;case`bbbbb`:t=Iy(0,oy.Narrow,ay.Standalone,!0);break;case`B`:case`BB`:case`BBB`:t=Iy(0,oy.Abbreviated,ay.Format,!0);break;case`BBBB`:t=Iy(0,oy.Wide,ay.Format,!0);break;case`BBBBB`:t=Iy(0,oy.Narrow,ay.Format,!0);break;case`h`:t=Py(3,1,-12);break;case`hh`:t=Py(3,2,-12);break;case`H`:t=Py(3,1);break;case`HH`:t=Py(3,2);break;case`m`:t=Py(4,1);break;case`mm`:t=Py(4,2);break;case`s`:t=Py(5,1);break;case`ss`:t=Py(5,2);break;case`S`:t=Py(6,1);break;case`SS`:t=Py(6,2);break;case`SSS`:t=Py(6,3);break;case`Z`:case`ZZ`:case`ZZZ`:t=Ry(0);break;case`ZZZZZ`:t=Ry(3);break;case`O`:case`OO`:case`OOO`:case`z`:case`zz`:case`zzz`:t=Ry(1);break;case`OOOO`:case`ZZZZ`:case`zzzz`:t=Ry(2);break;default:return null}return Gy[e]=t,t}function qy(e,t){e=e.replace(/:/g,``);let n=Date.parse(`Jan 01, 1970 00:00:00 `+e)/6e4;return isNaN(n)?t:n}function Jy(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function Yy(e,t,n){let r=e.getTimezoneOffset();return Jy(e,-1*(qy(t,r)-r))}function Xy(e){if(Qy(e))return e;if(typeof e==`number`&&!isNaN(e))return new Date(e);if(typeof e==`string`){if(e=e.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(e)){let[t,n=1,r=1]=e.split(`-`).map(e=>+e);return ky(t,n-1,r)}let t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let n;if(n=e.match(Cy))return Zy(n)}let t=new Date(e);if(!Qy(t))throw new T(2311,!1);return t}function Zy(e){let t=new Date(0),n=0,r=0,i=e[8]?t.setUTCFullYear:t.setFullYear,a=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=Number(e[9]+e[10]),r=Number(e[9]+e[11])),i.call(t,Number(e[1]),Number(e[2])-1,Number(e[3]));let o=Number(e[4]||0)-n,s=Number(e[5]||0)-r,c=Number(e[6]||0),l=Math.floor(parseFloat(`0.`+(e[7]||0))*1e3);return a.call(t,o,s,c,l),t}function Qy(e){return e instanceof Date&&!isNaN(e.valueOf())}var $y=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=E(xs);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){let e=this._viewContainerRef;if(this._viewRef&&e.remove(e.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let t=this._createContextForwardProxy();this._viewRef=e.createEmbeddedView(this.ngTemplateOutlet,t,{injector:this._getInjector()})}}_getInjector(){return this.ngTemplateOutletInjector===`outlet`?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,t,n)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,t,n):!1,get:(e,t,n)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,t,n)}})}static ɵfac=function(t){return new(t||e)(bm(eh))};static ɵdir=Wh({type:e,selectors:[[``,`ngTemplateOutlet`,``]],inputs:{ngTemplateOutletContext:`ngTemplateOutletContext`,ngTemplateOutlet:`ngTemplateOutlet`,ngTemplateOutletInjector:`ngTemplateOutletInjector`},features:[Ec]})}return e})();function eb(e,t){return new T(2100,!1)}var tb=`mediumDate`,nb=new vi(``),rb=new vi(``),ib=(()=>{class e{locale;defaultTimezone;defaultOptions;constructor(e,t,n){this.locale=e,this.defaultTimezone=t,this.defaultOptions=n}transform(t,n,r,i){if(t==null||t===``||t!==t)return null;try{let e=n??this.defaultOptions?.dateFormat??tb,a=r??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return Dy(t,e,i||this.locale,a)}catch(t){throw eb(e,t.message)}}static ɵfac=function(t){return new(t||e)(bm(bv,16),bm(nb,24),bm(rb,24))};static ɵpipe=Gh({name:`date`,type:e,pure:!0})}return e})(),ab=(()=>{class e{transform(e){return JSON.stringify(e,null,2)}static ɵfac=function(t){return new(t||e)};static ɵpipe=Gh({name:`json`,type:e,pure:!1})}return e})();function ob(e,t){t=encodeURIComponent(t);for(let n of e.split(`;`)){let e=n.indexOf(`=`),[r,i]=e==-1?[n,``]:[n.slice(0,e),n.slice(e+1)];if(r.trim()!==t)continue;let a=i;try{a=decodeURIComponent(i)}catch{}return a.length>1&&a[0]===`"`&&a[a.length-1]===`"`&&(a=a.slice(1,-1)),a}return null}var sb=`browser`,cb=class{_doc;constructor(e){this._doc=e}manager},lb=(()=>{class e extends cb{constructor(e){super(e)}supports(e){return!0}addEventListener(e,t,n,r){return e.addEventListener(t,n,r),()=>this.removeEventListener(e,t,n,r)}removeEventListener(e,t,n,r){return e.removeEventListener(t,n,r)}static ɵfac=function(t){return new(t||e)(qi(Ss))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),ub=new vi(``),db=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,t){this._zone=t,e.forEach(e=>{e.manager=this});let n=e.filter(e=>!(e instanceof lb));this._plugins=n.slice().reverse();let r=e.find(e=>e instanceof lb);r&&this._plugins.push(r)}addEventListener(e,t,n,r){return this._findPluginFor(t).addEventListener(e,t,n,r)}getZone(){return this._zone}_findPluginFor(e){let t=this._eventNameToPlugin.get(e);if(t)return t;if(t=this._plugins.find(t=>t.supports(e)),!t)throw new T(-5101,!1);return this._eventNameToPlugin.set(e,t),t}static ɵfac=function(t){return new(t||e)(qi(ub),qi(Fs))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),fb=`ng-app-id`;function pb(e){for(let t of e)t.remove()}function mb(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function hb(e,t,n,r){let i=e.head?.querySelectorAll(`style[${fb}="${t}"],link[${fb}="${t}"]`);if(!i||i.length===0)return!1;for(let e of i)e.removeAttribute(fb),e instanceof HTMLLinkElement?r.set(e.href.slice(e.href.lastIndexOf(`/`)+1),{usage:0,elements:[e]}):e.textContent&&n.set(e.textContent,{usage:0,elements:[e]});return!0}function gb(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var _b=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,t,n,r={}){this.doc=e,this.appId=t,this.nonce=n,hb(e,t,this.inline,this.external)&&this.hosts.add(e.head)}addStyles(e,t){for(let t of e)this.addUsage(t,this.inline,mb);t?.forEach(e=>this.addUsage(e,this.external,gb))}removeStyles(e,t){for(let t of e)this.removeUsage(t,this.inline);t?.forEach(e=>this.removeUsage(e,this.external))}addUsage(e,t,n){let r=t.get(e);r?r.usage++:t.set(e,{usage:1,elements:[...this.hosts].map(t=>this.addElement(t,n(e,this.doc)))})}removeUsage(e,t){let n=t.get(e);n&&(n.usage--,n.usage<=0&&(pb(n.elements),t.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])pb(e);this.hosts.clear()}addHost(e){if(!this.hosts.has(e)){this.hosts.add(e);for(let[t,{elements:n}]of this.inline)n.push(this.addElement(e,mb(t,this.doc)));for(let[t,{elements:n}]of this.external)n.push(this.addElement(e,gb(t,this.doc)))}}removeHost(e){this.hosts.delete(e);for(let t of[...this.inline.values(),...this.external.values()]){let n=[];for(let r of t.elements)r.parentNode===e?r.remove():n.push(r);t.elements=n}}addElement(e,t){return this.nonce&&t.setAttribute(`nonce`,this.nonce),e.appendChild(t)}static ɵfac=function(t){return new(t||e)(qi(Ss),qi(Zs),qi(tc,8),qi(ec))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),vb={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`,math:`http://www.w3.org/1998/Math/MathML`},yb=/%COMP%/g,bb=`%COMP%`,xb=`_nghost-${bb}`,Sb=`_ngcontent-${bb}`,Cb=!0,wb=new vi(``,{factory:()=>Cb}),Tb=new vi(``);function Eb(e){return Sb.replace(yb,e)}function Db(e){return xb.replace(yb,e)}function Ob(e,t){return t.map(t=>t.replace(yb,e))}var kb=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;cssVarNamespace;constructor(e,t,n,r,i,a,o=null,s=null,c=null){this.eventManager=e,this.sharedStylesHost=t,this.appId=n,this.removeStylesOnCompDestroy=r,this.doc=i,this.ngZone=a,this.nonce=o,this.tracingService=s,this.cssVarNamespace=c??``,this.defaultRenderer=new Ab(e,i,a,this.tracingService,this.cssVarNamespace)}createRenderer(e,t){if(!e||!t)return this.defaultRenderer;let n=this.getOrCreateRenderer(e,t);return n instanceof Pb?n.applyToHost(e):n instanceof Nb&&n.applyStyles(),n}getOrCreateRenderer(e,t){let n=this.rendererByCompId,r=n.get(t.id);if(!r){let i=this.doc,a=this.ngZone,o=this.eventManager,s=this.sharedStylesHost,c=this.removeStylesOnCompDestroy,l=this.tracingService;switch(t.encapsulation){case su.Emulated:r=new Pb(o,s,t,this.appId,c,i,a,l,this.cssVarNamespace);break;case su.ShadowDom:return new Mb(o,e,t,i,a,this.nonce,l,this.cssVarNamespace,s);case su.ExperimentalIsolatedShadowDom:return new Mb(o,e,t,i,a,this.nonce,l,this.cssVarNamespace);default:r=new Nb(o,s,t,c,i,a,l,this.cssVarNamespace)}n.set(t.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static ɵfac=function(t){return new(t||e)(qi(db),qi(vm),qi(Zs),qi(wb),qi(Ss),qi(Fs),qi(tc),qi(kd,8),qi(Tb,8))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),Ab=class{eventManager;doc;ngZone;tracingService;cssVarNamespace;data=Object.create(null);throwOnSyntheticProps=!0;constructor(e,t,n,r,i=``){this.eventManager=e,this.doc=t,this.ngZone=n,this.tracingService=r,this.cssVarNamespace=i}destroy(){}destroyNode=null;createElement(e,t){return t?this.doc.createElementNS(vb[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(jb(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){if(e){let r=jb(e)?e.content:e;if(n!=null&&n.parentNode!==r)throw new T(-5106,!1);r.insertBefore(t,n)}}removeChild(e,t){t.remove()}selectRootElement(e,t){let n=typeof e==`string`?this.doc.querySelector(e):e;if(!n)throw new T(-5104,!1);return t||(n.textContent=``),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,t,n,r){if(r){t=r+`:`+t;let i=vb[r];i?e.setAttributeNS(i,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){let r=vb[n];r?e.removeAttributeNS(r,t):e.removeAttribute(`${n}:${t}`)}else e.removeAttribute(t)}addClass(e,t){e.classList.add(t)}removeClass(e,t){e.classList.remove(t)}setStyle(e,t,n,r){let i=t.startsWith(`--`);i&&(t=t.replace(`%NS%`,this.cssVarNamespace)),i||r&(Yu.DashCase|Yu.Important)?e.style.setProperty(t,n,r&Yu.Important?`important`:``):e.style[t]=n}removeStyle(e,t,n){let r=t.startsWith(`--`);r&&(t=t.replace(`%NS%`,this.cssVarNamespace)),r||n&Yu.DashCase?e.style.removeProperty(t):e.style[t]=``}setProperty(e,t,n){e!=null&&(e[t]=n)}setValue(e,t){e.nodeValue=t}listen(e,t,n,r){if(typeof e==`string`&&(e=ny().getGlobalEventTarget(this.doc,e),!e))throw new T(-5102,!1);let i=this.decoratePreventDefault(n);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(e,t,i)),this.eventManager.addEventListener(e,t,i,r)}decoratePreventDefault(e){return t=>{if(t===`__ngUnwrap__`)return e;e(t)===!1&&t.preventDefault()}}};function jb(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var Mb=class extends Ab{hostEl;sharedStylesHost;shadowRoot;constructor(e,t,n,r,i,a,o,s,c){super(e,r,i,o,s),this.hostEl=t,this.sharedStylesHost=c,this.shadowRoot=t.attachShadow({mode:`open`}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let l=n.styles;l=Ob(n.id,l).map(e=>e.replace(/%NS%/g,s));for(let e of l){let t=document.createElement(`style`);a&&t.setAttribute(`nonce`,a),t.textContent=e,this.shadowRoot.appendChild(t)}let u=n.getExternalStyles?.();if(u)for(let e of u){let t=gb(e,r);a&&t.setAttribute(`nonce`,a),this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,t){return super.appendChild(this.nodeOrShadowRoot(e),t)}insertBefore(e,t,n){return super.insertBefore(this.nodeOrShadowRoot(e),t,n)}removeChild(e,t){return super.removeChild(null,t)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},Nb=class extends Ab{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(e,t,n,r,i,a,o,s,c){super(e,i,a,o,s),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=r;let l=n.styles,u=c?Ob(c,l):l;this.styles=u.map(e=>e.replace(/%NS%/g,s)),this.styleUrls=n.getExternalStyles?.(c)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&ld.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},Pb=class extends Nb{contentAttr;hostAttr;constructor(e,t,n,r,i,a,o,s,c){let l=r+`-`+n.id;super(e,t,n,i,a,o,s,c,l),this.contentAttr=Eb(l),this.hostAttr=Db(l)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,``)}createElement(e,t){let n=super.createElement(e,t);return super.setAttribute(n,this.contentAttr,``),n}},Fb=class e extends iy{supportsDOMEvents=!0;static makeCurrent(){ry(new e)}onAndCancel(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}dispatchEvent(e,t){e.dispatchEvent(t)}remove(e){e.remove()}createElement(e,t){return t||=this.getDefaultDocument(),t.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument(`fakeTitle`)}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,t){return t===`window`?window:t===`document`?e:t===`body`?e.body:null}getBaseHref(e){let t=Lb();return t==null?null:Rb(t)}resetBaseElement(){Ib=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return ob(document.cookie,e)}},Ib=null;function Lb(){return Ib||=document.head.querySelector(`base`),Ib?Ib.getAttribute(`href`):null}function Rb(e){return new URL(e,document.baseURI).pathname}var zb=[`alt`,`control`,`meta`,`shift`],Bb={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`},Vb={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},Hb=(()=>{class e extends cb{constructor(e){super(e)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,n,r,i){let a=e.parseEventName(n),o=e.eventCallback(a.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>ny().onAndCancel(t,a.domEventName,o,i))}static parseEventName(t){let n=t.toLowerCase().split(`.`),r=n.shift();if(n.length===0||r!==`keydown`&&r!==`keyup`)return null;let i=e._normalizeKey(n.pop()),a=``,o=n.indexOf(`code`);if(o>-1&&(n.splice(o,1),a=`code.`),zb.forEach(e=>{let t=n.indexOf(e);t>-1&&(n.splice(t,1),a+=e+`.`)}),a+=i,n.length!=0||i.length===0)return null;let s={};return s.domEventName=r,s.fullKey=a,s}static matchEventFullKeyCode(e,t){let n=Bb[e.key]||e.key,r=``;return t.indexOf(`code.`)>-1&&(n=e.code,r=`code.`),n==null||!n?!1:(n=n.toLowerCase(),n===` `?n=`space`:n===`.`&&(n=`dot`),zb.forEach(t=>{if(t!==n){let n=Vb[t];n(e)&&(r+=t+`.`)}}),r+=n,r===t)}static eventCallback(t,n,r){return i=>{e.matchEventFullKeyCode(i,t)&&r.runGuarded(()=>n(i))}}static _normalizeKey(e){return e===`esc`?`escape`:e}static ɵfac=function(t){return new(t||e)(qi(Ss))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})();async function Ub(e,t,n){return Yv({rootComponent:e,...Wb(t,n)})}function Wb(e,t){return{platformRef:t?.platformRef,appProviders:[...Yb,...e?.providers??[]],platformProviders:Jb}}function Gb(){Fb.makeCurrent()}function Kb(){return new qs}function qb(){return Yl(document),document}var Jb=[{provide:ec,useValue:sb},{provide:$s,useValue:Gb,multi:!0},{provide:Ss,useFactory:qb}],Yb=[{provide:Ta,useValue:`root`},{provide:qs,useFactory:Kb},{provide:ub,useClass:lb,multi:!0},{provide:ub,useClass:Hb,multi:!0},kb,{provide:vm,useClass:_b},{provide:_b,useExisting:vm},db,{provide:$p,useExisting:kb},[]];function Xb(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e{let r=new ex({code:i,why:Qb(a.why,e),fix:Qb(a.fix,e),docs:o,cause:e.cause,sources:e.sources,data:Qb(a.data,e)},s);for(let e of t)e(r,n);return r};n[i]=s}return n}function rx(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n{e=n,t=r}),resolve:e,reject:t}}var lx=Math.random.bind(Math),ux=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function dx(e=21){let t=``,n=e;for(;n--;)t+=ux[lx()*64|0];return t}var fx=6e4,px=e=>e,mx=px,{clearTimeout:hx,setTimeout:gx}=globalThis;function _x(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=px,deserialize:s=mx,resolver:c,bind:l=`rpc`,timeout:u=fx,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=cx(),_=dx();s.i=_;let ee;async function v(n=s){return u>=0&&(ee=gx(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof ee==`object`&&(ee=ee.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:ee,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,v,d):await v()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{hx(ee),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:v,get $closed(){return f},get $meta(){return t.meta},$close:ee,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.hasOwn(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function ee(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(te)}function v(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function te(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(hx(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(te),h}function vx(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}var yx=Object.freeze({type:`object`,additionalProperties:!0});function bx(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return yx}return yx}function xx(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;rn[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function Cx(e,t){return Sx(e,t)??[e]}function wx(e){return typeof e==`string`?`'${e}'`:new Ox().serialize(e)}var Tx=` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`,Ex=(function(){let e=new Uint8Array(128);for(let t=0;t<69;t++)e[Tx.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function Dx(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;ia?-1:1)}return e.length===t.length?r:e.lengththis.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),kx=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Ax=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],jx=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,Mx=[],Nx=class{_data=new Px;_hash=new Px([...kx]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)Mx[n]=e[t+n]|0;else{let e=Mx[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=Mx[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;Mx[n]=t+Mx[n-7]+i+Mx[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),h=u+m+d+Ax[n]+Mx[n],g=p+f;u=l,l=c,c=s,s=o+h|0,o=a,a=i,i=r,r=h+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=Px.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function Fx(e){return new Nx().finalize(e).toBase64()}function Ix(e){return Fx(wx(e))}function Lx(e){return Ix(e)}function Rx(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}var zx=/^[\w+.-]{2,}:\/\//;function Bx(e){return e.endsWith(`/`)?e:`${e}/`}function Vx(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function Hx(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?Bx(n)+e.replace(/^\.?\//,``):e);return n}function Ux(e,t){if(!t||t===`/`||zx.test(e))return e;let n=Vx(t);return e.startsWith(n)?e:Hx(n,e)}function Wx(e,t){let n=e.match(zx);return t+(n?e.slice(n[0].length):e)}var Gx=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Kx(e=21){let t=``,n=e;for(;n--;)t+=Gx[Math.random()*64|0];return t}var qx=Symbol.for(`immer-nothing`),Jx=Symbol.for(`immer-draftable`),Yx=Symbol.for(`immer-state`),Xx=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function Zx(e,...t){{let n=Xx[e],r=xS(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var Qx=Object,$x=Qx.getPrototypeOf,eS=`constructor`,tS=`prototype`,nS=`configurable`,rS=`enumerable`,iS=`writable`,aS=`value`,oS=e=>!!e&&!!e[Yx];function sS(e){return e?uS(e)||_S(e)||!!e[Jx]||!!e[eS]?.[Jx]||vS(e)||yS(e):!1}var cS=Qx[tS][eS].toString(),lS=new WeakMap;function uS(e){if(!e||!bS(e))return!1;let t=$x(e);if(t===null||t===Qx[tS])return!0;let n=Qx.hasOwnProperty.call(t,eS)&&t[eS];if(n===Object)return!0;if(!xS(n))return!1;let r=lS.get(n);return r===void 0&&(r=Function.toString.call(n),lS.set(n,r)),r===cS}function dS(e,t,n=!0){fS(e)===0?(n?Reflect.ownKeys(e):Qx.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function fS(e){let t=e[Yx];return t?t.type_:_S(e)?1:vS(e)?2:yS(e)?3:0}var pS=(e,t,n=fS(e))=>n===2?e.has(t):Qx[tS].hasOwnProperty.call(e,t),mS=(e,t,n=fS(e))=>n===2?e.get(t):e[t],hS=(e,t,n,r=fS(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function gS(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var _S=Array.isArray,vS=e=>e instanceof Map,yS=e=>e instanceof Set,bS=e=>typeof e==`object`,xS=e=>typeof e==`function`,SS=e=>typeof e==`boolean`;function CS(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var wS=e=>bS(e)?e?.[Yx]:null,TS=e=>e.copy_||e.base_,ES=e=>e.modified_?e.copy_:e.base_;function DS(e,t){if(vS(e))return new Map(e);if(yS(e))return new Set(e);if(_S(e))return Array[tS].slice.call(e);let n=uS(e);if(t===!0||t===`class_only`&&!n){let t=Qx.getOwnPropertyDescriptors(e);delete t[Yx];let n=Reflect.ownKeys(t);for(let r=0;r1&&Qx.defineProperties(e,{set:AS,add:AS,clear:AS,delete:AS}),Qx.freeze(e),t&&dS(e,(e,t)=>{OS(t,!0)},!1),e)}function kS(){Zx(2)}var AS={[aS]:kS};function jS(e){return e===null||!bS(e)||Qx.isFrozen(e)}var MS=`MapSet`,NS=`Patches`,PS=`ArrayMethods`,FS={};function IS(e){let t=FS[e];return t||Zx(0,e),t}var LS=e=>!!FS[e];function RS(e,t){FS[e]||(FS[e]=t)}var zS,BS=()=>zS,VS=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:LS(MS)?IS(MS):void 0,arrayMethodsPlugin_:LS(PS)?IS(PS):void 0});function HS(e,t){t&&(e.patchPlugin_=IS(NS),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function US(e){WS(e),e.drafts_.forEach(KS),e.drafts_=null}function WS(e){e===zS&&(zS=e.parent_)}var GS=e=>zS=VS(zS,e);function KS(e){let t=e[Yx];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function qS(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[Yx].modified_&&(US(t),Zx(4)),sS(e)&&(e=JS(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[Yx].base_,e,t)}else e=JS(t,n);return YS(t,e,!0),US(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===qx?void 0:e}function JS(e,t){if(jS(t))return t;let n=t[Yx];if(!n)return rC(t,e.handledSet_,e);if(!ZS(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);tC(n,e)}return n.copy_}function YS(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&OS(t,n)}function XS(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ZS=(e,t)=>e.scope_===t,QS=[];function $S(e,t,n,r){let i=TS(e),a=e.type_;if(r!==void 0&&mS(i,r,a)===t){hS(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;dS(i,(e,n)=>{if(oS(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??QS;for(let e of o)hS(i,e,n,a)}function eC(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!ZS(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=ES(i);$S(e,i.draft_??i,a,n),tC(i,r)})}function tC(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}XS(e)}}function nC(e,t,n){let{scope_:r}=e;if(oS(n)){let i=n[Yx];ZS(i,r)&&i.callbacks_.push(function(){fC(e),$S(e,n,ES(i),t)})}else sS(n)&&e.callbacks_.push(function(){let i=TS(e);e.type_===3?i.has(n)&&rC(n,r.handledSet_,r):mS(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&rC(mS(e.copy_,t,e.type_),r.handledSet_,r)})}function rC(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||oS(e)||t.has(e)||!sS(e)||jS(e)?e:(t.add(e),dS(e,(r,i)=>{if(oS(i)){let t=i[Yx];ZS(t,n)&&(hS(e,r,ES(t),e.type_),XS(t))}else sS(i)&&rC(i,t,n)}),e)}function iC(e,t){let n=_S(e),r={type_:+!!n,scope_:t?t.scope_:BS(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=aC;n&&(i=[r],a=oC);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var aC={get(e,t){if(t===Yx)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=TS(e);if(!pS(i,t,e.type_))return lC(e,i,t);let a=i[t];if(e.finalized_||!sS(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&CS(t))return a;if(a===sC(e.base_,t)||cC(e,t,a)){fC(e);let n=e.type_===1?+t:t,r=mC(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in TS(e)},ownKeys(e){return Reflect.ownKeys(TS(e))},set(e,t,n){let r=uC(TS(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=sC(TS(e),t),i=r?.[Yx];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(gS(n,r)&&(n!==void 0||pS(e.base_,t,e.type_)))return!0;fC(e),dC(e)}return e.copy_[t]===n&&(n!==void 0||pS(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),nC(e,t,n),!0)},deleteProperty(e,t){return fC(e),sC(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),dC(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=TS(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[iS]:!0,[nS]:e.type_!==1||t!==`length`,[rS]:r[rS],[aS]:n[t]}},defineProperty(){Zx(11)},getPrototypeOf(e){return $x(e.base_)},setPrototypeOf(){Zx(12)}},oC={};for(let e in aC){let t=aC[e];oC[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}oC.deleteProperty=function(e,t){return isNaN(parseInt(t))&&Zx(13),oC.set.call(this,e,t,void 0)},oC.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&Zx(14),aC.set.call(this,e[0],t,n,e[0])};function sC(e,t){let n=e[Yx];return(n?TS(n):e)[t]}function cC(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!sS(n)||n[Yx]?!1:e.baseRefs_.has(n)}function lC(e,t,n){let r=uC(t,n);return r?aS in r?r[aS]:r.get?.call(e.draft_):void 0}function uC(e,t){if(!(t in e))return;let n=$x(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=$x(n)}}function dC(e){e.modified_||(e.modified_=!0,e.parent_&&dC(e.parent_))}function fC(e){e.copy_||=(e.assigned_=new Map,DS(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var pC=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(xS(e)&&!xS(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}xS(t)||Zx(6),n!==void 0&&!xS(n)&&Zx(7);let r;if(sS(e)){let i=GS(this),a=mC(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?US(i):WS(i)}return HS(i,n),qS(r,i)}if(!e||!bS(e)){if(r=t(e),r===void 0&&(r=e),r===qx&&(r=void 0),this.autoFreeze_&&OS(r,!0),n){let t=[],i=[];IS(NS).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}Zx(1,e)},this.produceWithPatches=(e,t)=>{if(xS(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},SS(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),SS(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),SS(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){sS(e)||Zx(8),oS(e)&&(e=hC(e));let t=GS(this),n=mC(t,e,void 0);return n[Yx].isManual_=!0,WS(t),n}finishDraft(e,t){let n=e&&e[Yx];(!n||!n.isManual_)&&Zx(9);let{scope_:r}=n;return HS(r,t),qS(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=IS(NS).applyPatches_;return oS(e)?r(e,t):this.produce(e,e=>r(e,t))}};function mC(e,t,n,r){let[i,a]=vS(t)?IS(MS).proxyMap_(t,n):yS(t)?IS(MS).proxySet_(t,n):iC(t,n);return(n?.scope_??BS()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?eC(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function hC(e){return oS(e)||Zx(10,e),gC(e)}function gC(e){if(!sS(e)||jS(e))return e;let t=e[Yx],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=DS(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=DS(e,!0);return dS(n,(e,t)=>{hS(n,e,gC(t))},r),t&&(t.finalized_=!1),n}function _C(){Xx.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=wS(mS(e,n.key_)),i=mS(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||pS(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e{let u=mS(o,e,c),f=mS(s,e,c),p=l?pS(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===qx?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e[e,u(t)]));if(yS(e))return new Set(Array.from(e).map(u));let t=Object.create($x(e));for(let n in e)t[n]=u(e[n]);return pS(e,Jx)&&(t[Jx]=e[Jx]),t}function d(e){return oS(e)?u(e):e}RS(NS,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var vC=new pC,yC=vC.produce,bC=vC.produceWithPatches.bind(vC),xC=vC.applyPatches.bind(vC),SC=1e3;function CC(e,t){if(e.add(t),e.size>SC){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function wC(e){let{enablePatches:t=!1}=e;t&&_C();let n=Rx(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=Kx())=>{i.has(t)||(_C(),r=xC(r,e),CC(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=Kx())=>{if(!i.has(a)){if(CC(i,a),t){let[t,i]=bC(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=yC(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}var TC=typeof self==`object`?self:globalThis,EC=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),DC=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function OC(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=EC.has(e)?TC[e]:void 0;return n(new(r??TC.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&DC.has(a))return n(new TC[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function kC(e){return OC(new Map,e)(0)}var AC=``,{toString:jC}={},{keys:MC}=Object;function NC(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=jC.call(e).slice(8,-1);switch(n){case`Array`:return[1,AC];case`Object`:return[2,AC];case`Date`:return[3,AC];case`RegExp`:return[4,AC];case`Map`:return[5,AC];case`Set`:return[6,AC];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function PC([e,t]){return e===0&&(t===`function`||t===`symbol`)}function FC(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=NC(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of MC(r))(e||!PC(NC(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(PC(NC(n))||PC(NC(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!PC(NC(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function IC(e,t={}){let n=[];return FC(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:LC,stringify:RC}=JSON,zC={json:!0,lossy:!0};function BC(e){return kC(LC(e))}function VC(e){return RC(IC(e,zC))}function HC(e){return kC(e)}function UC(e){return VC(e)}function WC(e){return BC(e)}var GC=256,KC=class extends Error{name=`StreamClosedError`};function qC(e={}){let t=e.id??Kx(),n=Math.max(0,e.replayWindow??0),r=Rx(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new KC(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=YC(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function JC(e={}){let t=e.id??Kx(),n=Math.max(1,e.highWaterMark??GC),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function YC(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var XC=128;function ZC(e){return e.replace(/[^\w-]+/g,`_`).slice(0,XC)}var QC=`modulepreload`,$C=function(e,t){return new URL(e,t).href},ew={},tw=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=$C(t,n),t=s(t),t in ew)return;ew[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:QC,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},nw=`__connection.json`,rw=`__DEVFRAME_CONNECTION__`,iw=`x-birpc-session`,aw=`__rpc-dump/index.json`,ow=`devframe:services`,sw=`devframe_otp`,cw=`devframe_auth_token`;ix.postMessage.remoteAssetsError;var lw=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>Lx(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},uw=sx({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function dw(e){if(e.agent&&e.jsonSerializable===!1)throw uw.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function fw(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function pw(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function mw(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function _w(e,t){let n=e.handler;if(!n){let r=await gw(e,t);if(!r.handler)throw uw.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await mw(e.name,r,t),o=await a(...n);return await hw(e.name,i,o)}}var vw=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return _w(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw uw.DF0021({name:e.name});dw(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw uw.DF0022({name:e.name});dw(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await _w(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw uw.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function yw(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw xw(t,`undefined`,r,e);return n}return i!==null&&bw(i,r,e,t),n})}function bw(e,t,n,r){if(typeof e==`bigint`)throw xw(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw xw(r,`Map`,t,n);if(e instanceof Set)throw xw(r,`Set`,t,n);if(e instanceof Date)throw xw(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw xw(r,e.constructor?.name??`class instance`,t,n)}function xw(e,t,n,r){let i=Sw(n,r);return uw.DF0020({name:e||``,type:t,path:i})}function Sw(e,t){return Array.isArray(e)?`[${t}]`:t===``?``:t}var Cw=`__DEVFRAME_CONNECTION_META__`,ww=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Tw(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function Ew(){return Tw(rw)}function Dw(){return Tw(Cw)}function Ow(e){if(e)return e;try{let e=localStorage.getItem(ww);if(e)return e}catch{}return Tw(ww)}function kw(e){globalThis[rw]=e,globalThis[Cw]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&Aw(e.authToken)}function Aw(e){try{localStorage.setItem(ww,e)}catch{}globalThis[ww]=e;let t=Ew();t&&(globalThis[rw]={...t,authToken:e})}function jw(e){let t=Ux(nw,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function Mw(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function Nw(){let e=Ew();if(e)return Mw(e,Ow()??e.authToken??e.connectionMeta.authToken);let t=Dw();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??jw(`./`),authToken:Ow(t.authToken)}}async function Pw(e={}){if(e.connection){let t=Mw(e.connection,Ow(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return kw(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:jw(t[0]??`./`),authToken:Ow(e.authToken??e.connectionMeta.authToken)};return kw(n),n}let n=Nw();if(n){let t=Mw(n,Ow(e.authToken??n.authToken??n.connectionMeta.authToken));return kw(t),t}let r=[];for(let n of t){let t=Ux(nw,n),i=jw(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:Ow(e.authToken??r.authToken)};return kw(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var Fw=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Iw(e=sw){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function Lw(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function Rw(e=sw){let t=Iw(e);return t&&Lw(e),t}async function zw(e,t={}){let n=Rw(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function Bw(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(ow,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function Vw(e){let t=new Map,n=new Map,r=new Map,i=new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:ix.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:ix.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(c,l)=>{if(l?.initialValue!==void 0&&r.set(c,l.initialValue),t.has(c))return t.get(c);let u=wC({initialValue:l?.initialValue,enablePatches:!1});async function d(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,c),l?.initialValue!==void 0){t.set(c,u);for(let e of i)e(c);return e.call(`devframe:rpc:server-state:get`,c).then(e=>{e!==void 0&&u.mutate(()=>o(c,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(c,s(c,u)),u}{let r=await e.call(`devframe:rpc:server-state:get`,c);u.mutate(()=>o(c,r)),t.set(c,u);for(let e of i)e(c);return n.set(c,s(c,u)),u}}return new Promise(t=>{if(e.isTrusted)d().then(t);else{t(u);let n=!1;e.events.on(ix.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,d())})}})}}}var Hw=new Map;function Uw(e=Hw){let t=new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?yw(n,r??``):`s:${UC(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?WC(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function Ww(){}function Gw(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function Kw(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function qw(e){let{onConnected:t=Ww,onError:n=Ww,onDisconnected:r=Ww,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${cw}=${encodeURIComponent(e.authToken)}`);let s=Uw(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function ee(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=Gw(r);if(!e)break;r=e.rest;let{event:t,data:n}=Kw(e.frame);n.length>0&&_(t,n.join(` -`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await ee(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[iw]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Jw(e,t){let{channel:n,rpcOptions:r={}}=t;return _x(e,{...n,timeout:-1,...r,proxify:!1})}function Yw(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(ix.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Fw(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Fw(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(ix.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Fw(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(ix.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let ee=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(ix.client.connectionError,e),m(new Fw(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Fw(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),v=Jw(a.functions,{channel:ee,rpcOptions:o});a.register({name:ix.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Fw(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e),m(e),i.emit(ix.client.isTrustedUpdated,!1)}});let te=n;async function ne(e){te=e;let t=await v.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Fw(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e)}return i.emit(ix.client.isTrustedUpdated,c),t.isTrusted}async function re(e){let t=(await v.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(te=t,c=!0,d.resolve(!0),f(`connected`),i.emit(ix.client.isTrustedUpdated,!0)),t}async function ie(e={}){await v.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function ae(){return c?!0:ne(te??``)}async function oe(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:ae,requestTrustWithToken:ne,requestTrustWithCode:re,requestAuthCode:ie,ensureTrusted:oe,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(ix.client.error,t,String(e[0]));return}return v.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$callOptional(...e),t)},close:()=>{ee.close()}}}function Xw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Zw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Xw(n.sse,r??`./`,location);return Yw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>qw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Qw(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:$w(r)?Qw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function $w(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function eT(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function tT(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function nT(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function rT(e){if(e.error)throw Qw(e.error);return e.output}function iT(e){return e.some(e=>e!=null)}function aT(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function oT(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?HC(e):e}function a(e,t){return i(aT(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return nT(r)?rT(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(eT(r)){if(iT(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(tT(r)){let e=Lx(n),i=r.records[e];if(i)return rT(await s(i,r.serialization));if(r.fallback)return rT(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!iT(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function sT(e){let t=oT(await e.fetchJsonFromBases(aw),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var cT=``;function lT(e,t){return`${e}${cT}${t}`}function uT(e){let t=new Map,n=new Map;e.client.register({name:ix.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(lT(e,n))?._push(r,i)}}),e.client.register({name:ix.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=lT(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:ix.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=lT(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(ix.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(cT);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=lT(n,r),o=t.get(a);if(o)return o;let s=JC({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(ix.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=lT(t,r),a=n.get(i);if(a)return a;let o=qC({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function dT(){}var fT=new Map;function pT(e){let t=e.url;e.authToken&&(t=`${t}?${cw}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=dT,onError:i=dT,onDisconnected:a=dT,definitions:o=fT}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Uw(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function mT(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Wx(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function hT(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=mT(n.websocket,r??`./`,location);return Yw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>pT({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function gT(e){return e.includes(`:`)}function _T(e,t){return gT(t)?t:`${e}:${t}`}function vT(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function yT(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return vT(a)}function bT(e,t){return{global:yT(e,t,`global`),project:yT(e,t,`project`)}}function xT(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(gT(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(_T(t,n),...r)),callEvent:((n,...r)=>e.callEvent(_T(t,n),...r)),callOptional:((n,...r)=>e.callOptional(_T(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(_T(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(_T(t,n),r,i),upload:(n,r)=>e.streaming.upload(_T(t,n),r)}},settings:bT(e,t),scope:e.scope}}function ST(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function CT(e,t={}){let n=t.modelContext??ST();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=ZC(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=vx(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:xx(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>wT(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function wT(e,t,n){try{let r=Cx(n,e.args?.length);return{content:[{type:`text`,text:TT(await(await _w(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:ET(e)}]}}}function TT(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function ET(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function DT(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function OT(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Rx(),a=Array.isArray(t)?t:[t],o=await Pw(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new lw({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new vw(f),m=e.webmcp===!1?void 0:CT(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ux(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let ee={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},v=DT(e.transport??`auto`,s),te=v===`static`?await sT({fetchJsonFromBases:_}):v===`sse`?Zw({...ee,sseOptions:e.sseOptions}):hT({...ee,wsOptions:e.wsOptions}),ne;try{ne=new BroadcastChannel(`devframe-auth`)}catch{}let re,ie=!1;function ae(e){return((...t)=>ie||!re?e(...t):re.then(()=>e(...t)))}function oe(){g=!0;try{h?.(),m?.()}finally{try{ne?.close()}finally{te.close?.()}}}let se={events:i,get isTrusted(){return te.isTrusted},get status(){return te.status},get connectionError(){return te.connectionError},get transport(){return te.transport??v},get connection(){return o},connectionMeta:s,ensureTrusted:te.ensureTrusted,requestTrust:te.requestTrust,requestTrustWithToken:async e=>(Aw(e),o={...o,authToken:e},te.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await te.requestTrustWithCode(e);if(!t)return!1;Aw(t),o={...o,authToken:t};try{ne?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>te.requestAuthCode(e),call:ae(te.call),callEvent:ae(te.callEvent),callOptional:ae(te.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:oe};se.sharedState=Vw(se),se.streaming=uT(se),se.services=Bw(se);let ce=new Map;se.scope=(e=>{if(!e)return se;let t=ce.get(e);return t||(t=xT(se,e),ce.set(e,t)),t}),f.rpc=se;function le(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ue(){if(e.simpleAuth!==!1&&le()&&typeof globalThis.prompt==`function`)for(await se.requestAuthCode().catch(()=>{});!se.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await se.requestTrustWithCode(t))return}}async function de(){let t=await te.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await zw(se,{param:n}):!1;t||r||se.isTrusted||await ue()}return re=de().then(()=>{ie=!0},()=>{ie=!0}),s.mcp&&tw(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-BqZcKNTn.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(se))}).catch(()=>{}),ne&&(ne.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&se.requestTrustWithToken(e.data.authToken)}),se}var kT=OT,AT=[`components`,`injectors`,`signals`,`ngrx`,`forms`,`router`,`pipes`,`http`,`analog`],jT=[`forms`,`router`,`ngrx`,`http`,`analog`],MT={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3}},NT=`ng-devtools`;function PT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function FT(e,t){return typeof e==`boolean`?e:t}var IT=100,LT=100;function RT(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=LT);return[...new Set(t)].slice(0,IT)}function zT(e,t){let{default:n,min:r,max:i}=MT[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function BT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function VT(e){let t=PT(e),n=PT(t.agent),r=PT(t.inspectors),i=PT(n.tools),a=PT(t.actions),o=FT(t.actions,!0),s=PT(t.redaction),c=PT(t.limits),l=BT(AT,e=>FT(r[e],!0));return{inspectors:l,agent:{readOnly:FT(n.readOnly,!1),tools:BT(AT,e=>l[e]&&FT(i[e],!0))},actions:BT(jT,e=>l[e]&&FT(a[e],o)),redaction:{secretNames:RT(s.secretNames),unmask:RT(s.unmask)},limits:Object.fromEntries(Object.keys(MT).map(e=>[e,zT(c[e],e)]))}}function HT(e){let t=e?.configs;return VT(t?.[NT])}function UT(e){return`${{forms:`Writing to forms`,router:`Navigating`,ngrx:`Restoring NgRx state and dispatching actions`,http:`Changing HTTP mock rules and clearing HTTP calls`,analog:`Calling API routes`}[e]} is turned off in the devtools config (actions.${e}).`}var WT={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`},GT={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore and dispatch`,http:`HTTP mocking`,analog:`Analog API calls`},KT={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`};function qT(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=AT.filter(t=>e.inspectors[t]);return n(`Inspectors off`,AT.filter(t=>!e.inspectors[t]).map(e=>WT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>WT[e])),n(`Blocked actions`,jT.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>GT[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(MT).filter(t=>e.limits[t]!==MT[t].default).map(t=>KT[t](e.limits[t]))),t}var JT=`ng-devtools-page-id`;function YT(){try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(JT)||null)}catch{return null}}function XT(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function ZT(e,t){return e?t?e.pages?.[t]??null:e:null}function QT(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function $T(e,t,n){return e?e.scope(`ng-devtools`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function eE(e,t,n){return $T(e,t,n).then(e=>e,()=>null)}function tE(e){return e?.connectionMeta.backend===`static`}function nE(e){let t=()=>{let t=e()?.scope(`ng-devtools`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function rE(e){return HT(e?.connectionMeta)}function iE(e,t){return rE(e).actions[t]}var aE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`};function oE(e,t){let n=aE[e];return!n||t.inspectors[n]}function sE(e,t){e&1&&(fs(),Fg(0,`rect`,3)(1,`rect`,4)(2,`rect`,5)(3,`rect`,6))}function cE(e,t){e&1&&(fs(),Fg(0,`path`,7)(1,`path`,8)(2,`path`,9))}function lE(e,t){e&1&&(fs(),Fg(0,`circle`,10)(1,`path`,11)(2,`circle`,12))}function uE(e,t){e&1&&(fs(),Fg(0,`path`,1))}function dE(e,t){e&1&&(fs(),Fg(0,`path`,13)(1,`path`,14)(2,`path`,15)(3,`path`,16))}function fE(e,t){e&1&&(fs(),Fg(0,`ellipse`,17)(1,`path`,18)(2,`path`,19))}function pE(e,t){e&1&&(fs(),Fg(0,`rect`,20)(1,`path`,21)(2,`path`,22)(3,`path`,23))}function mE(e,t){e&1&&(fs(),Fg(0,`circle`,24)(1,`path`,25)(2,`path`,26))}function hE(e,t){e&1&&(fs(),Fg(0,`path`,27)(1,`path`,28)(2,`path`,29)(3,`path`,30)(4,`circle`,31))}function gE(e,t){e&1&&(fs(),Fg(0,`path`,2))}var _E=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:11,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M3 12h18`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`]],template:function(e,t){if(e&1&&(fs(),H(0,`svg`,0),P(1,sE,4,0)(2,cE,3,0)(3,lE,3,0)(4,uE,1,0,`:svg:path`,1)(5,dE,4,0)(6,fE,3,0)(7,pE,4,0)(8,mE,3,0)(9,hE,5,0)(10,gE,1,0,`:svg:path`,2),U()),e&2){let e;M(),F((e=t.name())===`dashboard`?1:e===`components`?2:e===`routes`?3:e===`signals`?4:e===`injectors`?5:e===`store`?6:e===`forms`?7:e===`network`?8:e===`pipes`?9:e===`analog`?10:-1)}},styles:[`[_nghost-%COMP%] { +`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await ee(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[iw]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Jw(e,t){let{channel:n,rpcOptions:r={}}=t;return _x(e,{...n,timeout:-1,...r,proxify:!1})}function Yw(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(ix.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Fw(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Fw(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(ix.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Fw(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(ix.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let ee=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(ix.client.connectionError,e),m(new Fw(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Fw(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),v=Jw(a.functions,{channel:ee,rpcOptions:o});a.register({name:ix.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Fw(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e),m(e),i.emit(ix.client.isTrustedUpdated,!1)}});let te=n;async function ne(e){te=e;let t=await v.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Fw(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e)}return i.emit(ix.client.isTrustedUpdated,c),t.isTrusted}async function re(e){let t=(await v.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(te=t,c=!0,d.resolve(!0),f(`connected`),i.emit(ix.client.isTrustedUpdated,!0)),t}async function ie(e={}){await v.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function ae(){return c?!0:ne(te??``)}async function oe(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:ae,requestTrustWithToken:ne,requestTrustWithCode:re,requestAuthCode:ie,ensureTrusted:oe,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(ix.client.error,t,String(e[0]));return}return v.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$callOptional(...e),t)},close:()=>{ee.close()}}}function Xw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Zw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Xw(n.sse,r??`./`,location);return Yw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>qw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Qw(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:$w(r)?Qw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function $w(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function eT(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function tT(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function nT(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function rT(e){if(e.error)throw Qw(e.error);return e.output}function iT(e){return e.some(e=>e!=null)}function aT(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function oT(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?HC(e):e}function a(e,t){return i(aT(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return nT(r)?rT(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(eT(r)){if(iT(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(tT(r)){let e=Lx(n),i=r.records[e];if(i)return rT(await s(i,r.serialization));if(r.fallback)return rT(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!iT(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function sT(e){let t=oT(await e.fetchJsonFromBases(aw),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var cT=``;function lT(e,t){return`${e}${cT}${t}`}function uT(e){let t=new Map,n=new Map;e.client.register({name:ix.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(lT(e,n))?._push(r,i)}}),e.client.register({name:ix.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=lT(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:ix.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=lT(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(ix.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(cT);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=lT(n,r),o=t.get(a);if(o)return o;let s=JC({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(ix.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=lT(t,r),a=n.get(i);if(a)return a;let o=qC({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function dT(){}var fT=new Map;function pT(e){let t=e.url;e.authToken&&(t=`${t}?${cw}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=dT,onError:i=dT,onDisconnected:a=dT,definitions:o=fT}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Uw(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function mT(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Wx(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function hT(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=mT(n.websocket,r??`./`,location);return Yw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>pT({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function gT(e){return e.includes(`:`)}function _T(e,t){return gT(t)?t:`${e}:${t}`}function vT(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function yT(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return vT(a)}function bT(e,t){return{global:yT(e,t,`global`),project:yT(e,t,`project`)}}function xT(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(gT(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(_T(t,n),...r)),callEvent:((n,...r)=>e.callEvent(_T(t,n),...r)),callOptional:((n,...r)=>e.callOptional(_T(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(_T(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(_T(t,n),r,i),upload:(n,r)=>e.streaming.upload(_T(t,n),r)}},settings:bT(e,t),scope:e.scope}}function ST(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function CT(e,t={}){let n=t.modelContext??ST();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=ZC(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=vx(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:xx(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>wT(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function wT(e,t,n){try{let r=Cx(n,e.args?.length);return{content:[{type:`text`,text:TT(await(await _w(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:ET(e)}]}}}function TT(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function ET(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function DT(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function OT(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Rx(),a=Array.isArray(t)?t:[t],o=await Pw(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new lw({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new vw(f),m=e.webmcp===!1?void 0:CT(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ux(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let ee={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},v=DT(e.transport??`auto`,s),te=v===`static`?await sT({fetchJsonFromBases:_}):v===`sse`?Zw({...ee,sseOptions:e.sseOptions}):hT({...ee,wsOptions:e.wsOptions}),ne;try{ne=new BroadcastChannel(`devframe-auth`)}catch{}let re,ie=!1;function ae(e){return((...t)=>ie||!re?e(...t):re.then(()=>e(...t)))}function oe(){g=!0;try{h?.(),m?.()}finally{try{ne?.close()}finally{te.close?.()}}}let se={events:i,get isTrusted(){return te.isTrusted},get status(){return te.status},get connectionError(){return te.connectionError},get transport(){return te.transport??v},get connection(){return o},connectionMeta:s,ensureTrusted:te.ensureTrusted,requestTrust:te.requestTrust,requestTrustWithToken:async e=>(Aw(e),o={...o,authToken:e},te.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await te.requestTrustWithCode(e);if(!t)return!1;Aw(t),o={...o,authToken:t};try{ne?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>te.requestAuthCode(e),call:ae(te.call),callEvent:ae(te.callEvent),callOptional:ae(te.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:oe};se.sharedState=Vw(se),se.streaming=uT(se),se.services=Bw(se);let ce=new Map;se.scope=(e=>{if(!e)return se;let t=ce.get(e);return t||(t=xT(se,e),ce.set(e,t)),t}),f.rpc=se;function le(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ue(){if(e.simpleAuth!==!1&&le()&&typeof globalThis.prompt==`function`)for(await se.requestAuthCode().catch(()=>{});!se.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await se.requestTrustWithCode(t))return}}async function de(){let t=await te.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await zw(se,{param:n}):!1;t||r||se.isTrusted||await ue()}return re=de().then(()=>{ie=!0},()=>{ie=!0}),s.mcp&&tw(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-DazqZ0Am.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(se))}).catch(()=>{}),ne&&(ne.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&se.requestTrustWithToken(e.data.authToken)}),se}var kT=OT,AT=[`components`,`injectors`,`signals`,`ngrx`,`forms`,`router`,`pipes`,`http`,`analog`],jT=[`forms`,`router`,`ngrx`,`http`,`analog`],MT={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3}},NT=`ng-devtools`;function PT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function FT(e,t){return typeof e==`boolean`?e:t}var IT=100,LT=100;function RT(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=LT);return[...new Set(t)].slice(0,IT)}function zT(e,t){let{default:n,min:r,max:i}=MT[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function BT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function VT(e){let t=PT(e),n=PT(t.agent),r=PT(t.inspectors),i=PT(n.tools),a=PT(t.actions),o=FT(t.actions,!0),s=PT(t.redaction),c=PT(t.limits),l=BT(AT,e=>FT(r[e],!0));return{inspectors:l,agent:{readOnly:FT(n.readOnly,!1),tools:BT(AT,e=>l[e]&&FT(i[e],!0))},actions:BT(jT,e=>l[e]&&FT(a[e],o)),redaction:{secretNames:RT(s.secretNames),unmask:RT(s.unmask)},limits:Object.fromEntries(Object.keys(MT).map(e=>[e,zT(c[e],e)]))}}function HT(e){let t=e?.configs;return VT(t?.[NT])}function UT(e){return`${{forms:`Writing to forms`,router:`Navigating`,ngrx:`Restoring NgRx state and dispatching actions`,http:`Changing HTTP mock rules and clearing HTTP calls`,analog:`Calling API routes`}[e]} is turned off in the devtools config (actions.${e}).`}var WT={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`},GT={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore and dispatch`,http:`HTTP mocking`,analog:`Analog API calls`},KT={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`};function qT(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=AT.filter(t=>e.inspectors[t]);return n(`Inspectors off`,AT.filter(t=>!e.inspectors[t]).map(e=>WT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>WT[e])),n(`Blocked actions`,jT.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>GT[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(MT).filter(t=>e.limits[t]!==MT[t].default).map(t=>KT[t](e.limits[t]))),t}var JT=`ng-devtools-page-id`;function YT(){try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(JT)||null)}catch{return null}}function XT(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function ZT(e,t){return e?t?e.pages?.[t]??null:e:null}function QT(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function $T(e,t,n){return e?e.scope(`ng-devtools`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function eE(e,t,n){return $T(e,t,n).then(e=>e,()=>null)}function tE(e){return e?.connectionMeta.backend===`static`}function nE(e){let t=()=>{let t=e()?.scope(`ng-devtools`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function rE(e){return HT(e?.connectionMeta)}function iE(e,t){return rE(e).actions[t]}var aE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`};function oE(e,t){let n=aE[e];return!n||t.inspectors[n]}function sE(e,t){e&1&&(fs(),Fg(0,`rect`,3)(1,`rect`,4)(2,`rect`,5)(3,`rect`,6))}function cE(e,t){e&1&&(fs(),Fg(0,`path`,7)(1,`path`,8)(2,`path`,9))}function lE(e,t){e&1&&(fs(),Fg(0,`circle`,10)(1,`path`,11)(2,`circle`,12))}function uE(e,t){e&1&&(fs(),Fg(0,`path`,1))}function dE(e,t){e&1&&(fs(),Fg(0,`path`,13)(1,`path`,14)(2,`path`,15)(3,`path`,16))}function fE(e,t){e&1&&(fs(),Fg(0,`ellipse`,17)(1,`path`,18)(2,`path`,19))}function pE(e,t){e&1&&(fs(),Fg(0,`rect`,20)(1,`path`,21)(2,`path`,22)(3,`path`,23))}function mE(e,t){e&1&&(fs(),Fg(0,`circle`,24)(1,`path`,25)(2,`path`,26))}function hE(e,t){e&1&&(fs(),Fg(0,`path`,27)(1,`path`,28)(2,`path`,29)(3,`path`,30)(4,`circle`,31))}function gE(e,t){e&1&&(fs(),Fg(0,`path`,2))}var _E=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:11,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M3 12h18`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`]],template:function(e,t){if(e&1&&(fs(),H(0,`svg`,0),P(1,sE,4,0)(2,cE,3,0)(3,lE,3,0)(4,uE,1,0,`:svg:path`,1)(5,dE,4,0)(6,fE,3,0)(7,pE,4,0)(8,mE,3,0)(9,hE,5,0)(10,gE,1,0,`:svg:path`,2),U()),e&2){let e;M(),F((e=t.name())===`dashboard`?1:e===`components`?2:e===`routes`?3:e===`signals`?4:e===`injectors`?5:e===`store`?6:e===`forms`?7:e===`network`?8:e===`pipes`?9:e===`analog`?10:-1)}},styles:[`[_nghost-%COMP%] { display: inline-flex; flex-shrink: 0; }`]})},vE=(e,t)=>t.tab,yE=(e,t)=>t.label;function bE(e,t){e&1&&J(0),e&2&&X(` `,K().meta()?.projectName,` `)}function xE(e,t){e&1&&J(0,` Project details unavailable `)}function SE(e,t){e&1&&J(0,` Loading… `)}function CE(e,t){e&1&&(J(0,` Run `),z(1,`code`),J(2,`ng-devtools build`),B(),J(3,` again to rebuild the report. `))}function wE(e,t){e&1&&J(0,` Check that the dev server is running, then reload the panel. `)}function TE(e,t){if(e&1&&(z(0,`p`,4),P(1,CE,4,0)(2,wE,1,0),B()),e&2){let e=K();M(),F(e.staticReport()?1:2)}}function EE(e,t){e&1&&(z(0,`li`,6)(1,`span`),J(2,`Analog`),B(),J(3),B()),e&2&&(M(3),Y(t))}function DE(e,t){e&1&&(z(0,`li`)(1,`span`),J(2,`Change detection`),B(),J(3),B()),e&2&&(M(3),Y(t))}function OE(e,t){if(e&1&&(z(0,`span`,17),J(1),B(),z(2,`span`,18),J(3),B()),e&2){let e=K().$implicit,t=K();M(),Y(t.cards()[e.tab]?.value),M(2),Y(t.cards()[e.tab]?.sub)}}function kE(e,t){e&1&&(z(0,`span`,19),J(1,`–`),B(),z(2,`span`,18),J(3,`Count unavailable`),B())}function AE(e,t){e&1&&(V(0,`span`,20),z(1,`span`,18),J(2,`Counting…`),B())}function jE(e,t){if(e&1){let e=W();z(0,`button`,11),G(`click`,function(){let t=k(e).$implicit;return A(K().navigate.emit(t.tab))}),z(1,`span`,12)(2,`span`,13),V(3,`app-tab-icon`,14),B(),z(4,`span`,15),J(5,`→`),B()(),z(6,`span`,16),J(7),B(),P(8,OE,4,2)(9,kE,4,0)(10,AE,3,0),B()}if(e&2){let e,n=t.$implicit,r=t.$index,i=K().stateOf(n.tab);C_(`animation-delay`,60*r,`ms`),N(`aria-busy`,i===`loading`),M(3),R(`name`,n.tab),M(4),Y(n.label),M(),F((e=i)===`ready`?8:e===`error`?9:10)}}function ME(e,t){e&1&&(z(0,`p`),J(1,`Loading…`),B())}function NE(e,t){if(e&1&&(z(0,`div`)(1,`dt`),J(2),B(),z(3,`dd`),J(4),B()()),e&2){let e=t.$implicit;M(2),Y(e.label),M(2),Y(e.value)}}function PE(e,t){if(e&1&&(z(0,`dl`),I(1,NE,5,2,`div`,null,yE),B()),e&2){let e=K();M(),L(e.configItems())}}function FE(e,t){e&1&&(z(0,`p`),J(1,`Defaults`),B())}var IE=[{tab:`components`,label:`Components`},{tab:`routes`,label:`Routes`},{tab:`signals`,label:`Signals`},{tab:`injectors`,label:`Injectors`},{tab:`store`,label:`NgRx declarations`},{tab:`pipes`,label:`Pipes`}],LE={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function RE(e){return e&&Object.hasOwn(LE,e)?LE[e]:null}var zE=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),BE={action:[`action`,`actions`],reducer:[`reducer`,`reducers`],effect:[`effect`,`effects`],selector:[`selector`,`selectors`],feature:[`feature`,`features`],"store-setup":[`setup call`,`setup calls`],"signal-store":[`signal store`,`signal stores`],"signal-state":[`signal state`,`signal states`],"signal-method":[`signal method`,`signal methods`]};function VE(e,t,n){return`${e} ${e===1?t:n}`}function HE(e,t){for(let n of e??[])t(n),HE(n.children,t)}function UE(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`discovered in source`};let t=e.filter(e=>e.kind===`directive`).length;return{value:e.length-t,sub:`components · ${VE(t,`directive`,`directives`)}`}}function WE(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`route entries in source`};let t=e.filter(e=>e.kind===`redirect`).length;return{value:new Set(e.filter(e=>e.kind===`page`).map(e=>e.fullPath??e.path??``)).size,sub:`navigable paths · ${VE(t,`redirect`,`redirects`)}`}}function GE(e){let t=new Map;for(let n of e)n.kind&&t.set(n.kind,(t.get(n.kind)??0)+1);if(!t.size)return{value:e.length,sub:`declarations in source`};let n=[...t].sort((e,t)=>t[1]-e[1]).map(([e,t])=>{let[n,r]=BE[e]??[e,e];return VE(t,n,r)});return{value:e.length,sub:n.join(` · `)}}var KE=class e{rpc=$(null);navigate=Ov();staticReport=Q(()=>tE(this.rpc()));meta=j(null);config=Q(()=>rE(this.rpc()));stats=Q(()=>this.rpc()?IE.filter(e=>oE(e.tab,this.config())):[]);configItems=Q(()=>qT(this.config()));metaState=j(`loading`);states=j({});rows=j({});injectorTree=j(null);signalGraph=j(null);pageId=YT();destroyRef=E(Cs);stopLive=[];zone=Q(()=>RE(ZT(this.injectorTree(),this.pageId)?.zone));liveInjectors=Q(()=>{let e=ZT(this.injectorTree(),this.pageId);if(!e?.roots?.length)return null;let t=0,n=0,r=e=>{t++,n+=e.providers?.length??0};return HE(e.roots,r),HE(e.environment,r),{injectors:t,providers:n}});liveSignals=Q(()=>{let e=QT(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>zE.has(e.kind??``)).length:null});cards=Q(()=>{let e=this.rows(),t={};if(e.components&&(t.components=UE(e.components)),e.routes&&(t.routes=WE(e.routes)),e.store&&(t.store=GE(e.store)),e.pipes){let n=e.pipes.filter(e=>e.builtin).length;t.pipes={value:e.pipes.length-n,sub:n?`custom pipes · ${n} built-in in use`:`custom pipes in source`}}let n=this.liveSignals();n===null?e.signals&&(t.signals={value:e.signals.length,sub:`signal declarations in source`}):t.signals={value:n,sub:e.signals?`live on the page · ${e.signals.length} declared in source`:`live on the page`};let r=this.liveInjectors();return r?t.injectors={value:r.injectors,sub:`live injectors · ${VE(r.providers,`provider`,`providers`)}`}:e.injectors&&(t.injectors={value:e.injectors.filter(e=>e.type!==`injection`).length,sub:`provider declarations in source`}),t});constructor(){uc(()=>{let e=this.rpc();if(!e)return;let t=e.scope(`ng-devtools`);this.metaState.set(`loading`),this.states.set({}),this.rows.set({}),t.rpc.call(`build-meta`).then(e=>{this.meta.set(e),this.metaState.set(`ready`)}).catch(()=>this.metaState.set(`error`));let n=rE(e),r=e=>oE(e,n);r(`components`)&&this.load(t.rpc.call(`get-components`),`components`),r(`routes`)&&this.load(t.rpc.call(`get-routes`),`routes`),r(`signals`)&&this.load(t.rpc.call(`get-signals`),`signals`),r(`injectors`)&&this.load(t.rpc.call(`get-providers`),`injectors`),r(`store`)&&this.load(t.rpc.call(`get-ngrx-store`),`store`),r(`pipes`)&&this.load(t.rpc.call(`get-pipes`),`pipes`),this.watchLive(e,n)}),this.destroyRef.onDestroy(()=>this.unwatch())}stateOf(e){return(e===`signals`?this.liveSignals():e===`injectors`?this.liveInjectors():null)===null?this.states()[e]??`loading`:`ready`}load(e,t){let n=e=>this.states.update(n=>({...n,[t]:e}));e.then(e=>{this.rows.update(n=>({...n,[t]:Array.isArray(e)?e:[]})),n(`ready`)}).catch(()=>n(`error`))}async watchLive(e,t){this.unwatch();let n=e.scope(`ng-devtools`).rpc,r=async(t,r)=>{try{let i=await n.sharedState(t);if(this.destroyRef.destroyed||this.rpc()!==e)return;r(i.value()),this.stopLive.push(i.on(`updated`,e=>r(e)))}catch{r(null)}};await Promise.all([t.inspectors.injectors&&r(`injector-tree`,e=>this.injectorTree.set(e)),t.inspectors.signals&&r(`signal-graph`,e=>this.signalGraph.set(e))])}unwatch(){for(let e of this.stopLive.splice(0))e()}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-dashboard`]],inputs:{rpc:[1,`rpc`]},outputs:{navigate:`navigate`},decls:33,vars:14,consts:[[`aria-labelledby`,`project-title`,1,`project`],[1,`project-head`],[1,`eyebrow`],[`id`,`project-title`],[1,`hint`],[1,`chips`],[1,`analog`],[1,`grid`],[`type`,`button`,1,`stat`,3,`animation-delay`],[`aria-labelledby`,`config-title`,1,`config`],[`id`,`config-title`],[`type`,`button`,1,`stat`,3,`click`],[1,`top`],[1,`icon`],[3,`name`],[`aria-hidden`,`true`,1,`go`],[1,`label`],[1,`big`],[1,`sub`],[1,`big`,`muted`],[`aria-hidden`,`true`,1,`big`,`skeleton`]],template:function(e,t){if(e&1&&(z(0,`section`,0)(1,`div`,1)(2,`p`,2),J(3,`Project`),B(),z(4,`h2`,3),P(5,bE,1,1)(6,xE,1,0)(7,SE,1,0),B(),P(8,TE,3,1,`p`,4),B(),z(9,`ul`,5)(10,`li`)(11,`span`),J(12,`Angular`),B(),J(13),B(),z(14,`li`)(15,`span`),J(16,`TypeScript`),B(),J(17),B(),z(18,`li`)(19,`span`),J(20,`SSR`),B(),J(21),B(),P(22,EE,4,1,`li`,6),P(23,DE,4,1,`li`),B()(),z(24,`div`,7),I(25,jE,11,6,`button`,8,vE),B(),z(27,`section`,9)(28,`h2`,10),J(29,`Configuration`),B(),P(30,ME,2,0,`p`)(31,PE,3,0,`dl`)(32,FE,2,0,`p`),B()),e&2){let e,n,r;N(`aria-busy`,t.metaState()===`loading`),M(4),q(`muted`,t.metaState()!==`ready`),M(),F((e=t.metaState())===`ready`?5:e===`error`?6:7),M(3),F(t.metaState()===`error`?8:-1),M(),q(`pending`,t.metaState()===`loading`),M(4),Y(t.meta()?.angularVersion??`…`),M(4),Y(t.meta()?.typescript??`…`),M(4),Y(t.meta()?t.meta()?.ssr?`On`:`Off`:`…`),M(),F((n=t.meta()?.analog)?22:-1,n),M(),F((r=t.zone())?23:-1,r),M(2),L(t.stats()),M(2),N(`aria-busy`,!t.rpc()),M(3),F(t.rpc()?t.configItems().length?31:32:30)}},dependencies:[_E],styles:[`[_nghost-%COMP%] { @@ -11746,7 +11746,7 @@ summary[_ngcontent-%COMP%]:hover .entry-key[_ngcontent-%COMP%] { .message[_ngcontent-%COMP%] { text-align: left; } -}`]})};function OH(e,t){e&1&&(fs(),H(0,`svg`,9),Fg(1,`path`,20),U())}function kH(e,t){e&1&&(fs(),H(0,`svg`,10),Fg(1,`path`,21)(2,`path`,22)(3,`path`,23)(4,`path`,24),U())}function AH(e,t){e&1&&(fs(),H(0,`svg`,9),Fg(1,`path`,25)(2,`path`,26)(3,`path`,27)(4,`path`,28)(5,`path`,29)(6,`path`,30),U())}function jH(e,t){if(e&1&&(H(0,`a`,15),Fg(1,`img`,31),H(2,`span`,32)(3,`span`,33),J(4,`Being built by`),U(),H(5,`strong`),J(6),U(),H(7,`span`,34),J(8),U()(),H(9,`span`,35),J(10,`→`),U(),H(11,`span`,36),J(12,`(opens in a new tab)`),U()()),e&2){let e=t,n=K();Vg(`href`,`https://github.com/santoshyadavdev/angular-devtools/pull/`+n.info().pr,ku),M(),Vg(`src`,`https://github.com/`+e.login+`.png?size=96`,ku),M(5),Y(e.name),M(2),Z(`@`,e.login,` · PR #`,n.info().pr)}}function MH(e,t){if(e&1&&(H(0,`a`,16)(1,`span`,32)(2,`strong`),J(3),U()(),H(4,`span`,35),J(5,`→`),U(),H(6,`span`,36),J(7,`(opens in a new tab)`),U()()),e&2){let e=t;Vg(`href`,e.href,ku),M(3),Y(e.label)}}function NH(e,t){if(e&1&&(H(0,`li`),J(1),U()),e&2){let e=t.$implicit,n=t.$index;C_(`animation-delay`,200+n*120,`ms`),M(),Y(e)}}var PH=class e{info=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-coming-soon`]],hostVars:2,hostBindings:function(e,t){e&2&&C_(`--%NS%brand`,t.info().color)},inputs:{info:[1,`info`]},decls:29,vars:7,consts:[[`aria-labelledby`,`soon-title`,1,`soon`],[`aria-hidden`,`true`,1,`stage`],[1,`ring`,`r1`],[1,`ring`,`r2`],[1,`orbit`,`o1`],[1,`dot`],[1,`orbit`,`o2`],[1,`orbit`,`o3`],[1,`logo`],[`viewBox`,`0 0 256 256`,`width`,`96`,`height`,`96`],[`viewBox`,`0 0 256 182`,`width`,`104`,`height`,`74`],[1,`badge`],[`aria-hidden`,`true`,1,`spark`],[`id`,`soon-title`],[1,`summary`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`author`,3,`href`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`author`,`cta`,3,`href`],[1,`plans-title`],[1,`plans`],[3,`animation-delay`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`width`,`40`,`height`,`40`,`alt`,``,3,`src`],[1,`who`],[1,`by`],[1,`login`],[`aria-hidden`,`true`,1,`go`],[1,`sr-only`]],template:function(e,t){if(e&1&&(H(0,`section`,0)(1,`div`,1),Fg(2,`span`,2)(3,`span`,3),H(4,`span`,4),Fg(5,`span`,5),U(),H(6,`span`,6),Fg(7,`span`,5),U(),H(8,`span`,7),Fg(9,`span`,5),U(),H(10,`div`,8),P(11,OH,2,0,`:svg:svg`,9)(12,kH,5,0,`:svg:svg`,10)(13,AH,7,0,`:svg:svg`,9),U()(),H(14,`p`,11)(15,`span`,12),J(16,`✦`),U(),J(17),U(),H(18,`h2`,13),J(19),U(),H(20,`p`,14),J(21),U(),P(22,jH,13,5,`a`,15),P(23,MH,8,2,`a`,16),H(24,`h3`,17),J(25),U(),H(26,`ul`,18),I(27,NH,2,3,`li`,19,wg),U()()),e&2){let e,n,r;M(11),F((e=t.info().id)===`nativescript`?11:e===`analog`?12:e===`capacitor`?13:-1),M(6),X(` `,t.info().badge),M(2),Y(t.info().heading),M(2),Y(t.info().summary),M(),F((n=t.info().author)?22:-1,n),M(),F((r=t.info().link)?23:-1,r),M(2),X(` `,t.info().link?`In an `+t.info().name+` app`:`On the roadmap`,` `),M(2),L(t.info().plans)}},styles:[`[_nghost-%COMP%] { +}`]})};function OH(e,t){e&1&&(fs(),H(0,`svg`,9),Fg(1,`path`,20),U())}function kH(e,t){e&1&&(fs(),H(0,`svg`,10),Fg(1,`path`,21)(2,`path`,22)(3,`path`,23)(4,`path`,24),U())}function AH(e,t){e&1&&(fs(),H(0,`svg`,9),Fg(1,`path`,25)(2,`path`,26)(3,`path`,27)(4,`path`,28)(5,`path`,29)(6,`path`,30),U())}function jH(e,t){if(e&1&&(H(0,`a`,15),Fg(1,`img`,31),H(2,`span`,32)(3,`span`,33),J(4,`Being built by`),U(),H(5,`strong`),J(6),U(),H(7,`span`,34),J(8),U()(),H(9,`span`,35),J(10,`→`),U(),H(11,`span`,36),J(12,`(opens in a new tab)`),U()()),e&2){let e=t,n=K();Vg(`href`,`https://github.com/santoshyadavdev/angular-devtools/pull/`+n.info().pr,ku),M(),Vg(`src`,`https://github.com/`+e.login+`.png?size=96`,ku),M(5),Y(e.name),M(2),Z(`@`,e.login,` · PR #`,n.info().pr)}}function MH(e,t){if(e&1&&(H(0,`a`,16)(1,`span`,32)(2,`strong`),J(3),U()(),H(4,`span`,35),J(5,`→`),U(),H(6,`span`,36),J(7,`(opens in a new tab)`),U()()),e&2){let e=t;Vg(`href`,e.href,ku),M(3),Y(e.label)}}function NH(e,t){if(e&1&&(H(0,`li`),J(1),U()),e&2){let e=t.$implicit,n=t.$index;C_(`animation-delay`,200+n*120,`ms`),M(),Y(e)}}var PH=class e{info=$.required();plansTitle=Q(()=>{let e=this.info();return e.plansTitle??(e.link?`In an ${e.name} app`:`On the roadmap`)});static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-coming-soon`]],hostVars:2,hostBindings:function(e,t){e&2&&C_(`--%NS%brand`,t.info().color)},inputs:{info:[1,`info`]},decls:29,vars:7,consts:[[`aria-labelledby`,`soon-title`,1,`soon`],[`aria-hidden`,`true`,1,`stage`],[1,`ring`,`r1`],[1,`ring`,`r2`],[1,`orbit`,`o1`],[1,`dot`],[1,`orbit`,`o2`],[1,`orbit`,`o3`],[1,`logo`],[`viewBox`,`0 0 256 256`,`width`,`96`,`height`,`96`],[`viewBox`,`0 0 256 182`,`width`,`104`,`height`,`74`],[1,`badge`],[`aria-hidden`,`true`,1,`spark`],[`id`,`soon-title`],[1,`summary`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`author`,3,`href`],[`target`,`_blank`,`rel`,`noopener noreferrer`,1,`author`,`cta`,3,`href`],[1,`plans-title`],[1,`plans`],[3,`animation-delay`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`width`,`40`,`height`,`40`,`alt`,``,3,`src`],[1,`who`],[1,`by`],[1,`login`],[`aria-hidden`,`true`,1,`go`],[1,`sr-only`]],template:function(e,t){if(e&1&&(H(0,`section`,0)(1,`div`,1),Fg(2,`span`,2)(3,`span`,3),H(4,`span`,4),Fg(5,`span`,5),U(),H(6,`span`,6),Fg(7,`span`,5),U(),H(8,`span`,7),Fg(9,`span`,5),U(),H(10,`div`,8),P(11,OH,2,0,`:svg:svg`,9)(12,kH,5,0,`:svg:svg`,10)(13,AH,7,0,`:svg:svg`,9),U()(),H(14,`p`,11)(15,`span`,12),J(16,`✦`),U(),J(17),U(),H(18,`h2`,13),J(19),U(),H(20,`p`,14),J(21),U(),P(22,jH,13,5,`a`,15),P(23,MH,8,2,`a`,16),H(24,`h3`,17),J(25),U(),H(26,`ul`,18),I(27,NH,2,3,`li`,19,wg),U()()),e&2){let e,n,r;M(11),F((e=t.info().id)===`nativescript`?11:e===`analog`?12:e===`capacitor`?13:-1),M(6),X(` `,t.info().badge),M(2),Y(t.info().heading),M(2),Y(t.info().summary),M(),F((n=t.info().author)?22:-1,n),M(),F((r=t.info().link)?23:-1,r),M(2),X(` `,t.plansTitle(),` `),M(2),L(t.info().plans)}},styles:[`[_nghost-%COMP%] { display: block; min-height: 100%; background: radial-gradient(60% 50% at 50% 18%, color-mix(in srgb, var(--%NS%brand) 22%, transparent), transparent 70%); @@ -12139,7 +12139,7 @@ h2[_ngcontent-%COMP%] { transition: none; } } -`;function IH(e,t=50){let n=e?.querySelector(`devframes-dock-standalone`)?.shadowRoot;if(n){if(n.querySelector(`style[data-ng-devtools]`))return;let t=e.createElement(`style`);t.dataset.ngDevtools=``,t.textContent=FH,n.append(t);return}t>0&&setTimeout(()=>IH(e,t-1),100)}var LH=`__DEVFRAME_HUB_CLIENT_CONTEXT__`,RH=`ng-devtools:`;function zH(){try{return window.parent===window?void 0:window.parent[LH]}catch{return}}function BH(e,t,n=50){let r=zH();if(!r){if(n<=0||window.parent===window)return()=>{};let r=()=>{},i=setTimeout(()=>r=BH(e,t,n-1),100);return()=>{clearTimeout(i),r()}}let i=e.map(e=>r.docks.getStateById(RH+e)?.events.on(`entry:activated`,()=>t(e))??(()=>{})),a=r.docks.selectedId,o=e.find(e=>RH+e===a);return o&&t(o),()=>i.forEach(e=>e())}async function VH(e){let t=zH();if(!t)return!1;try{return await t.docks.switchEntry(RH+e)}catch{return!1}}var HH=`ng-devtools-tab`;function UH(e,t,n){let r=new URLSearchParams(e.replace(/^#/,``)).get(`tab`)||t;return n.find(e=>e===r)}function WH(e){try{return sessionStorage.getItem(`${HH}:${e}`)}catch{return null}}function GH(e,t){try{sessionStorage.setItem(`${HH}:${e}`,t)}catch{}}function KH(e,t){try{return new URL(e,t.href).origin===t.origin}catch{return!1}}function qH(e,t){if(t.protocol!==`chrome-extension:`)return!1;try{let{protocol:t}=new URL(e);return t===`http:`||t===`https:`}catch{return!1}}function JH(e=location){let t=new URLSearchParams(e.search).get(`baseURL`);if(t&&(KH(t,e)||qH(t,e)))return t;if(!(e.pathname.includes(`__ng-devtools`)||e.pathname.includes(`__devframes/`)))return[`/__ng-devtools/`,`./`]}var YH=[`nav`],XH=[`main`],ZH=(e,t)=>t.id;function QH(e,t){e&1&&(fs(),z(0,`svg`,4),V(1,`path`,18),B())}function $H(e,t){e&1&&(fs(),z(0,`svg`,4),V(1,`path`,19)(2,`path`,20)(3,`path`,21)(4,`path`,22)(5,`path`,23)(6,`path`,24),B())}function eU(e,t){e&1&&(fs(),z(0,`svg`,5),V(1,`path`,25)(2,`path`,26)(3,`path`,27)(4,`path`,28),B())}function tU(e,t){e&1&&(fs(),z(0,`svg`,6),V(1,`path`,29),B())}function nU(e,t){e&1&&(fs(),z(0,`svg`,7)(1,`defs`)(2,`linearGradient`,30),V(3,`stop`,31)(4,`stop`,32)(5,`stop`,33)(6,`stop`,34)(7,`stop`,35)(8,`stop`,36),B()(),V(9,`path`,37),B())}function rU(e,t){e&1&&(fs(),z(0,`svg`,8),V(1,`path`,38),B())}function iU(e,t){if(e&1){let e=W();z(0,`button`,40),G(`click`,function(){let t=k(e).$implicit;return A(K(2).switchTab(t.id))}),V(1,`app-tab-icon`,41),z(2,`span`),J(3),B()()}if(e&2){let e=t.$implicit,n=K(2);q(`active`,n.tab()===e.id),N(`aria-current`,n.tab()===e.id?`page`:null),M(),R(`name`,e.id),M(2),Y(e.label)}}function aU(e,t){e&1&&I(0,iU,4,5,`button`,39,ZH),e&2&&L(K().tabs())}function oU(e,t){e&1&&(z(0,`p`,15),J(1,` Can't reach the devtools server. Check that the dev server is running, then reload. `),B())}function sU(e,t){e&1&&V(0,`app-coming-soon`,16),e&2&&R(`info`,t)}function cU(e,t){e&1&&(z(0,`p`,17),J(1,` This inspector is turned off in the devtools config (`),z(2,`code`),J(3,`inspectors`),B(),J(4,`). `),B())}function lU(e,t){if(e&1){let e=W();z(0,`app-dashboard`,44),G(`navigate`,function(t){return k(e),A(K(2).switchTab(t))}),B()}e&2&&R(`rpc`,K(2).rpc())}function uU(e,t){if(e&1){let e=W();z(0,`app-component-tree`,45),G(`focusHandled`,function(){return k(e),A(K(2).componentFocus.set(null))})(`showForm`,function(t){return k(e),A(K(2).showForm(t))}),B()}if(e&2){let e=K(2);R(`rpc`,e.rpc())(`focus`,e.componentFocus())}}function dU(e,t){e&1&&V(0,`app-route-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function fU(e,t){e&1&&V(0,`app-signal-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function pU(e,t){e&1&&V(0,`app-di-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function mU(e,t){e&1&&V(0,`app-store-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function hU(e,t){e&1&&V(0,`app-network-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function gU(e,t){if(e&1){let e=W();z(0,`app-forms-inspector`,46),G(`focusHandled`,function(){return k(e),A(K(2).formFocus.set(null))}),B()}if(e&2){let e=K(2);R(`rpc`,e.rpc())(`focus`,e.formFocus())}}function _U(e,t){e&1&&V(0,`app-pipes-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function vU(e,t){e&1&&V(0,`app-analog-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function yU(e,t){if(e&1&&P(0,lU,1,1,`app-dashboard`,42)(1,uU,1,2,`app-component-tree`,43)(2,dU,1,1,`app-route-inspector`,42)(3,fU,1,1,`app-signal-inspector`,42)(4,pU,1,1,`app-di-inspector`,42)(5,mU,1,1,`app-store-inspector`,42)(6,hU,1,1,`app-network-inspector`,42)(7,gU,1,2,`app-forms-inspector`,43)(8,_U,1,1,`app-pipes-inspector`,42)(9,vU,1,1,`app-analog-inspector`,42),e&2){let e;F((e=K().tab())===`dashboard`?0:e===`components`?1:e===`routes`?2:e===`signals`?3:e===`injectors`?4:e===`store`?5:e===`network`?6:e===`forms`?7:e===`pipes`?8:e===`analog`?9:-1)}}var bU=[`angular`,`ngrx`,`analog`,`nativescript`,`capacitor`],xU={angular:`Angular`,ngrx:`NgRx Store`,analog:`Analog`,nativescript:`NativeScript`,capacitor:`Capacitor`},SU={ngrx:`#d770e8`,analog:`#ff5470`,nativescript:`#8196ff`,capacitor:`#53b9ff`},CU={ngrx:`store`,analog:`analog`},wU={store:`ngrx`,analog:`analog`},TU={nativescript:{id:`nativescript`,name:`NativeScript`,badge:`Coming Soon`,heading:`NativeScript Support`,summary:`Inspect NativeScript Angular apps running natively on iOS and Android, with the same tools.`,color:`#3c5afd`,plans:[`Native overlay that reports the component tree from the device`,`Standalone devtools server your phone or simulator connects to`,`Example NativeScript app to try it end to end`],pr:16,author:{name:`Nathan Walker`,login:`NathanWalker`}},capacitor:{id:`capacitor`,name:`Capacitor`,badge:`Coming Soon`,heading:`Capacitor Support`,summary:`Connect Ionic and Capacitor apps running in a device WebView back to these tools.`,color:`#119eff`,plans:[`Manual overlay start for apps that load from capacitor:// or a device`,`Connection settings passed in, no cross-origin probing`,`Setup guides for the Android emulator and iOS simulator`],pr:21,author:{name:`Erkam Yaman`,login:`erkamyaman`}}},EU={id:`analog`,name:`Analog`,badge:`Not in this app`,heading:`This app doesn’t use Analog`,summary:`In an Analog app this dock shows your file routes, server load() and API calls, render modes and route lint.`,color:`#dd0330`,plans:[`Which page, layout and .server.ts files render a URL`,`Every load(), server function and API call with timing`,`SSR, prerendered or client only, per page`],link:{label:`Get started with Analog`,href:`https://analogjs.org/docs/getting-started`}};function DU(){let e=new URLSearchParams(location.search).get(`view`);return bU.find(t=>t===e)??null}Ub(class e{analog=j(!1);allTabs=[{id:`dashboard`,label:`Dashboard`},{id:`analog`,label:`Analog`},{id:`components`,label:`Components`},{id:`routes`,label:`Routes`},{id:`signals`,label:`Signals`},{id:`injectors`,label:`Injectors`},{id:`store`,label:`Store`},{id:`forms`,label:`Forms`},{id:`pipes`,label:`Pipes`},{id:`network`,label:`SSR & HTTP`}];view=j(DU());viewAccent=Q(()=>{let e=this.view();return(e&&SU[e])??null});title=Q(()=>{let e=this.view();return e?xU[e]:`Angular DevTools`});analogKnown=j(!1);comingSoon=Q(()=>{let e=this.view();return e===`analog`?this.analogKnown()&&!this.analog()?EU:void 0:e?TU[e]:void 0});config=Q(()=>rE(this.rpc()));tabEnabled=oE;availableTabs=Q(()=>{if(this.comingSoon())return[];let e=this.view(),t=e?CU[e]:void 0,n=this.allTabs.filter(e=>oE(e.id,this.config()));return t?n.filter(e=>e.id===t):n.filter(t=>(t.id!==`analog`||this.analog())&&!(e===`angular`&&wU[t.id]))});tabs=Q(()=>{let e=this.availableTabs();if(this.rpc())return e;let t=this.tab();return e.filter(e=>e.id===`dashboard`||e.id===t)});tab=Tv(()=>{let e=this.view();return e&&CU[e]||`dashboard`});rpc=j(null);connected=j(!1);connectionFailed=j(!1);hiddenPages=j([]);pageId=YT();backgroundNote=Q(()=>{let e=this.hiddenPages();return this.pageId?e.includes(this.pageId)?`Tab in background, showing the last data.`:``:e.length?e.length===1?`A tab is in the background, showing its last data.`:`${e.length} tabs are in the background, showing their last data.`:``});stopVisibility=()=>{};stopFollowing=()=>{};stopHighlights=()=>{};nav=Rv(`nav`);main=Rv(`main`);injector=E(xs);navObserver;navFade=j({start:!1,end:!1});constructor(){Id(()=>{let e=this.nav()?.nativeElement;e&&typeof ResizeObserver<`u`&&(this.navObserver=new ResizeObserver(()=>this.measureNav()),this.navObserver.observe(e))}),ey(()=>{this.tab(),this.tabs(),Cv(()=>{this.revealActiveTab(),this.measureNav()})})}measureNav(){let e=this.nav()?.nativeElement;if(!e)return;let t=e.scrollWidth-e.clientWidth,n=e.scrollLeft>1,r=t>1&&e.scrollLeftn?e.scrollLeft=Math.max(0,n):e.scrollLeftthis.showView(e)));try{window.parent!==window&&IH(window.parent.document)}catch{}let e=UH(location.hash,WH(this.tabScope()),this.availableTabs().map(e=>e.id));e&&this.tab.set(e),this.stopHighlights=nE(()=>this.rpc());let t=JH();kT(t?{baseURL:t}:{}).then(e=>{this.rpc.set(e),this.connected.set(!0),this.watchVisibility(e),e.scope(`ng-devtools`).rpc.call(`analog-project`).then(e=>{let t=!!e?.analog;this.analog.set(t),this.analogKnown.set(!0),!t&&this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)},()=>{this.analogKnown.set(!0),this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)}),e.events.on(`connection:status`,e=>{this.connected.set(e===`connected`)})},()=>{this.connectionFailed.set(!0),this.analogKnown.set(!0)})}ngOnDestroy(){this.stopFollowing(),this.stopVisibility(),this.stopHighlights(),this.navObserver?.disconnect()}showView(e){if(e===this.view())return;this.view.set(e);let t=new URL(location.href);t.searchParams.set(`view`,e),t.hash=``,history.replaceState(history.state,``,t)}formFocus=j(null);componentFocus=Tv({source:this.tab,computation:()=>null});showForm(e){this.formFocus.set({id:e}),this.switchTab(`forms`)}inspectFromPanel({source:e,origin:t,data:n}){if(e!==window.parent||t!==location.origin)return;let r=n;r?.type===`ng-devtools:inspect-component`&&typeof r.id==`string`&&this.tab()===`components`&&this.config().inspectors.components&&this.componentFocus.set({id:r.id})}switchTab(e){let t=wU[e];if(this.view()===`angular`&&t){this.activateDock(t,e);return}this.setTab(e),history.replaceState(history.state,``,`#tab=${e}`)}setTab(e){this.keepFocus(),this.tab.set(e),GH(this.tabScope(),e)}tabScope(){return this.view()??`panel`}async watchVisibility(e){try{let t=await e.scope(`ng-devtools`).rpc.sharedState(`page-visibility`),n=e=>{let t=e?.hidden;this.hiddenPages.set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])};n(t.value()),this.stopVisibility(),this.stopVisibility=t.on(`updated`,n)}catch{}}keepFocus(){let e=document.activeElement,t=this.main()?.nativeElement;(!e||e===document.body||t?.contains(e))&&Id(()=>{let e=document.activeElement;e&&e!==document.body||(this.nav()?.nativeElement.querySelector(`button.active`)??this.main()?.nativeElement)?.focus()},{injector:this.injector})}async activateDock(e,t){if(await VH(e))return;if(window.parent===window){this.keepFocus(),this.showView(e);return}let n=this.rpc();if(!n?.call){this.setTab(t);return}try{await n.call(`hub:docks:activate`,{dockId:`ng-devtools:${e}`}),this.keepFocus(),this.showView(e)}catch{this.setTab(t)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-root`]],viewQuery:function(e,t){e&1&&e_(t.nav,YH,5)(t.main,XH,5),e&2&&t_(2)},hostVars:2,hostBindings:function(e,t){e&1&&G(`message`,function(e){return t.inspectFromPanel(e)},ju),e&2&&C_(`--%NS%accent`,t.viewAccent())},decls:26,vars:18,consts:[[`nav`,``],[`main`,``],[1,`brand`],[1,`mark`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 256 256`,`aria-hidden`,`true`],[`width`,`24`,`height`,`17`,`viewBox`,`0 0 256 182`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 24 24`,`fill`,`currentColor`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`fill`,`currentColor`,`aria-hidden`,`true`],[1,`title`],[`aria-label`,`Inspectors`,3,`scroll`],[`role`,`status`,1,`status`],[`aria-hidden`,`true`,1,`dot`],[`tabindex`,`-1`],[`role`,`status`,1,`background-note`],[`role`,`alert`,1,`connection-error`],[3,`info`],[1,`turned-off`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`d`,`M12.024.017V0L12 .008L11.976 0v.017L.812 3.892l1.605 14.875l9.559 5.207V24l.024-.013l.024.013v-.026l9.559-5.207l1.605-14.875zm6.868 14.244q-1.64 3.948-6.031 4.166c-2.829 0-4.661-1.7-4.66-1.7q-1.745-1.359-2.398-3.417c-.695-.76-.702-.841-.774-1.145c-.072-.303.045-.388.249-.685q.204-.298.098-.85q-.26-.36-.3-1.128q0-.37.496-.783q.495-.413.607-.632q.083-.119.065-1.031q-.006-.897.995-.975c1-.08 1.565-.832 1.879-1.174c.21-.228.52-.339.91-.341c.551-.026 1.052.185 1.484.62c1.075-.055 2.176.235 3.292.863q2.379 1.414 2.596 3.055q-.257 2.158-5.788-.113q-2.895.819-2.846 3.552q0 2.508 2.422 3.643c-.787-.772-1.122-1.422-1.01-1.959q2.456 2.906 5.588 2.173c-.92.032-1.65-.264-2.198-.893q2.116-.05 3.998-1.972c-.724.576-1.482.794-2.284.657q3.26-2.563 2.307-5.98l-.002-.006a3.02 3.02 0 0 1 .788 2.03q.023 1.175-.795 2.477q.613-.478 1.413-2.047c.23 2.117-.625 3.724-2.574 4.825q.934-.085 2.473-1.23m-5.567-6.63a.319.319 0 1 1 .638 0a.319.319 0 0 1-.638 0`],[`id`,`ng-grad`,`x1`,`49`,`x2`,`226`,`y1`,`214`,`y2`,`130`,`gradientUnits`,`userSpaceOnUse`],[`stop-color`,`#E40035`],[`offset`,`.24`,`stop-color`,`#F60A48`],[`offset`,`.352`,`stop-color`,`#F20755`],[`offset`,`.494`,`stop-color`,`#DC087D`],[`offset`,`.745`,`stop-color`,`#9717E7`],[`offset`,`1`,`stop-color`,`#6C00F5`],[`fill`,`url(#ng-grad)`,`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`type`,`button`,3,`active`],[`type`,`button`,3,`click`],[3,`name`],[3,`rpc`],[3,`rpc`,`focus`],[3,`navigate`,`rpc`],[3,`focusHandled`,`showForm`,`rpc`,`focus`],[3,`focusHandled`,`rpc`,`focus`]],template:function(e,t){if(e&1&&(z(0,`header`)(1,`h1`,2)(2,`span`,3),P(3,QH,2,0,`:svg:svg`,4)(4,$H,7,0,`:svg:svg`,4)(5,eU,5,0,`:svg:svg`,5)(6,tU,2,0,`:svg:svg`,6)(7,nU,10,0,`:svg:svg`,7)(8,rU,2,0,`:svg:svg`,8),B(),z(9,`span`,9),J(10),B()(),z(11,`nav`,10,0),G(`scroll`,function(){return t.measureNav()}),P(13,aU,2,0),B(),z(14,`span`,11)(15,`span`,12),V(16,`span`),B(),J(17),B()(),z(18,`main`,13,1)(20,`p`,14),J(21),B(),P(22,oU,2,0,`p`,15)(23,sU,1,1,`app-coming-soon`,16)(24,cU,5,0,`p`,17)(25,yU,10,1),B()),e&2){let e;M(2),q(`ng-mark`,t.view()===`angular`),M(),F(t.view()===`nativescript`?3:t.view()===`capacitor`?4:t.view()===`analog`?5:t.view()===`ngrx`?6:t.view()===`angular`?7:8),M(6),q(`ng-text`,t.view()===`angular`),M(),Y(t.title()),M(),q(`fade-start`,t.navFade().start)(`fade-end`,t.navFade().end),M(2),F(t.availableTabs().length>1?13:-1),M(),q(`connected`,t.connected())(`failed`,t.connectionFailed()),M(3),X(` `,t.connected()?`Live`:t.connectionFailed()?`Disconnected`:`Connecting…`,` `),M(4),Y(t.backgroundNote()),M(),F(t.connectionFailed()?22:(e=t.comingSoon())?23:t.tabEnabled(t.tab(),t.config())?25:24,e)}},dependencies:[KE,QO,wM,IN,KP,wI,ER,Tz,MV,DH,PH,_E],styles:[`[_nghost-%COMP%] { +`;function IH(e,t=50){let n=e?.querySelector(`devframes-dock-standalone`)?.shadowRoot;if(n){if(n.querySelector(`style[data-ng-devtools]`))return;let t=e.createElement(`style`);t.dataset.ngDevtools=``,t.textContent=FH,n.append(t);return}t>0&&setTimeout(()=>IH(e,t-1),100)}var LH=`__DEVFRAME_HUB_CLIENT_CONTEXT__`,RH=`ng-devtools:`;function zH(){try{return window.parent===window?void 0:window.parent[LH]}catch{return}}function BH(e,t,n=50){let r=zH();if(!r){if(n<=0||window.parent===window)return()=>{};let r=()=>{},i=setTimeout(()=>r=BH(e,t,n-1),100);return()=>{clearTimeout(i),r()}}let i=e.map(e=>r.docks.getStateById(RH+e)?.events.on(`entry:activated`,()=>t(e))??(()=>{})),a=r.docks.selectedId,o=e.find(e=>RH+e===a);return o&&t(o),()=>i.forEach(e=>e())}async function VH(e){let t=zH();if(!t)return!1;try{return await t.docks.switchEntry(RH+e)}catch{return!1}}var HH=`ng-devtools-tab`;function UH(e,t,n){let r=new URLSearchParams(e.replace(/^#/,``)).get(`tab`)||t;return n.find(e=>e===r)}function WH(e){try{return sessionStorage.getItem(`${HH}:${e}`)}catch{return null}}function GH(e,t){try{sessionStorage.setItem(`${HH}:${e}`,t)}catch{}}function KH(e,t){try{return new URL(e,t.href).origin===t.origin}catch{return!1}}function qH(e,t){if(t.protocol!==`chrome-extension:`)return!1;try{let{protocol:t}=new URL(e);return t===`http:`||t===`https:`}catch{return!1}}function JH(e=location){let t=new URLSearchParams(e.search).get(`baseURL`);if(t&&(KH(t,e)||qH(t,e)))return t;if(!(e.pathname.includes(`__ng-devtools`)||e.pathname.includes(`__devframes/`)))return[`/__ng-devtools/`,`./`]}var YH=[`nav`],XH=[`main`],ZH=(e,t)=>t.id;function QH(e,t){e&1&&(fs(),z(0,`svg`,4),V(1,`path`,18),B())}function $H(e,t){e&1&&(fs(),z(0,`svg`,4),V(1,`path`,19)(2,`path`,20)(3,`path`,21)(4,`path`,22)(5,`path`,23)(6,`path`,24),B())}function eU(e,t){e&1&&(fs(),z(0,`svg`,5),V(1,`path`,25)(2,`path`,26)(3,`path`,27)(4,`path`,28),B())}function tU(e,t){e&1&&(fs(),z(0,`svg`,6),V(1,`path`,29),B())}function nU(e,t){e&1&&(fs(),z(0,`svg`,7)(1,`defs`)(2,`linearGradient`,30),V(3,`stop`,31)(4,`stop`,32)(5,`stop`,33)(6,`stop`,34)(7,`stop`,35)(8,`stop`,36),B()(),V(9,`path`,37),B())}function rU(e,t){e&1&&(fs(),z(0,`svg`,8),V(1,`path`,38),B())}function iU(e,t){if(e&1){let e=W();z(0,`button`,40),G(`click`,function(){let t=k(e).$implicit;return A(K(2).switchTab(t.id))}),V(1,`app-tab-icon`,41),z(2,`span`),J(3),B()()}if(e&2){let e=t.$implicit,n=K(2);q(`active`,n.tab()===e.id),N(`aria-current`,n.tab()===e.id?`page`:null),M(),R(`name`,e.id),M(2),Y(e.label)}}function aU(e,t){e&1&&I(0,iU,4,5,`button`,39,ZH),e&2&&L(K().tabs())}function oU(e,t){e&1&&(z(0,`p`,15),J(1,` Can't reach the devtools server. Check that the dev server is running, then reload. `),B())}function sU(e,t){e&1&&V(0,`app-coming-soon`,16),e&2&&R(`info`,t)}function cU(e,t){e&1&&(z(0,`p`,17),J(1,` This inspector is turned off in the devtools config (`),z(2,`code`),J(3,`inspectors`),B(),J(4,`). `),B())}function lU(e,t){if(e&1){let e=W();z(0,`app-dashboard`,44),G(`navigate`,function(t){return k(e),A(K(2).switchTab(t))}),B()}e&2&&R(`rpc`,K(2).rpc())}function uU(e,t){if(e&1){let e=W();z(0,`app-component-tree`,45),G(`focusHandled`,function(){return k(e),A(K(2).componentFocus.set(null))})(`showForm`,function(t){return k(e),A(K(2).showForm(t))}),B()}if(e&2){let e=K(2);R(`rpc`,e.rpc())(`focus`,e.componentFocus())}}function dU(e,t){e&1&&V(0,`app-route-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function fU(e,t){e&1&&V(0,`app-signal-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function pU(e,t){e&1&&V(0,`app-di-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function mU(e,t){e&1&&V(0,`app-store-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function hU(e,t){e&1&&V(0,`app-network-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function gU(e,t){if(e&1){let e=W();z(0,`app-forms-inspector`,46),G(`focusHandled`,function(){return k(e),A(K(2).formFocus.set(null))}),B()}if(e&2){let e=K(2);R(`rpc`,e.rpc())(`focus`,e.formFocus())}}function _U(e,t){e&1&&V(0,`app-pipes-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function vU(e,t){e&1&&V(0,`app-analog-inspector`,42),e&2&&R(`rpc`,K(2).rpc())}function yU(e,t){if(e&1&&P(0,lU,1,1,`app-dashboard`,42)(1,uU,1,2,`app-component-tree`,43)(2,dU,1,1,`app-route-inspector`,42)(3,fU,1,1,`app-signal-inspector`,42)(4,pU,1,1,`app-di-inspector`,42)(5,mU,1,1,`app-store-inspector`,42)(6,hU,1,1,`app-network-inspector`,42)(7,gU,1,2,`app-forms-inspector`,43)(8,_U,1,1,`app-pipes-inspector`,42)(9,vU,1,1,`app-analog-inspector`,42),e&2){let e;F((e=K().tab())===`dashboard`?0:e===`components`?1:e===`routes`?2:e===`signals`?3:e===`injectors`?4:e===`store`?5:e===`network`?6:e===`forms`?7:e===`pipes`?8:e===`analog`?9:-1)}}var bU=[`angular`,`ngrx`,`analog`,`nativescript`,`capacitor`],xU={angular:`Angular`,ngrx:`NgRx Store`,analog:`Analog`,nativescript:`NativeScript`,capacitor:`Capacitor`},SU={ngrx:`#d770e8`,analog:`#ff5470`,nativescript:`#8196ff`,capacitor:`#53b9ff`},CU={ngrx:`store`,analog:`analog`},wU={store:`ngrx`,analog:`analog`},TU={capacitor:{id:`capacitor`,name:`Capacitor`,badge:`Coming Soon`,heading:`Capacitor Support`,summary:`Connect Ionic and Capacitor apps running in a device WebView back to these tools.`,color:`#119eff`,plans:[`Manual overlay start for apps that load from capacitor:// or a device`,`Connection settings passed in, no cross-origin probing`,`Setup guides for the Android emulator and iOS simulator`],pr:21,author:{name:`Erkam Yaman`,login:`erkamyaman`}}},EU={id:`nativescript`,name:`NativeScript`,badge:`Available`,heading:`Inspect NativeScript apps`,summary:`A NativeScript Angular app reports from the simulator or device to this server, and its components, signals, injectors and NgRx stores show up in the Angular dock.`,color:`#3c5afd`,plansTitle:`Set up an app`,plans:[`Install @santoshyadavdev/ng-devtools and @valor/nativescript-websockets`,`Call initNativeScriptOverlay() in main.ts, before the app bootstraps`,`Run ng-devtools dev --host 0.0.0.0 in the app, then open the Angular dock`],link:{label:`NativeScript setup guide`,href:`https://santoshyadavdev.github.io/angular-devtools/guides/nativescript`}},DU={id:`analog`,name:`Analog`,badge:`Not in this app`,heading:`This app doesn’t use Analog`,summary:`In an Analog app this dock shows your file routes, server load() and API calls, render modes and route lint.`,color:`#dd0330`,plans:[`Which page, layout and .server.ts files render a URL`,`Every load(), server function and API call with timing`,`SSR, prerendered or client only, per page`],link:{label:`Get started with Analog`,href:`https://analogjs.org/docs/getting-started`}};function OU(){let e=new URLSearchParams(location.search).get(`view`);return bU.find(t=>t===e)??null}Ub(class e{analog=j(!1);allTabs=[{id:`dashboard`,label:`Dashboard`},{id:`analog`,label:`Analog`},{id:`components`,label:`Components`},{id:`routes`,label:`Routes`},{id:`signals`,label:`Signals`},{id:`injectors`,label:`Injectors`},{id:`store`,label:`Store`},{id:`forms`,label:`Forms`},{id:`pipes`,label:`Pipes`},{id:`network`,label:`SSR & HTTP`}];view=j(OU());viewAccent=Q(()=>{let e=this.view();return(e&&SU[e])??null});title=Q(()=>{let e=this.view();return e?xU[e]:`Angular DevTools`});analogKnown=j(!1);comingSoon=Q(()=>{let e=this.view();return e===`analog`?this.analogKnown()&&!this.analog()?DU:void 0:e===`nativescript`?EU:e?TU[e]:void 0});config=Q(()=>rE(this.rpc()));tabEnabled=oE;availableTabs=Q(()=>{if(this.comingSoon())return[];let e=this.view(),t=e?CU[e]:void 0,n=this.allTabs.filter(e=>oE(e.id,this.config()));return t?n.filter(e=>e.id===t):n.filter(t=>(t.id!==`analog`||this.analog())&&!(e===`angular`&&wU[t.id]))});tabs=Q(()=>{let e=this.availableTabs();if(this.rpc())return e;let t=this.tab();return e.filter(e=>e.id===`dashboard`||e.id===t)});tab=Tv(()=>{let e=this.view();return e&&CU[e]||`dashboard`});rpc=j(null);connected=j(!1);connectionFailed=j(!1);hiddenPages=j([]);pageId=YT();backgroundNote=Q(()=>{let e=this.hiddenPages();return this.pageId?e.includes(this.pageId)?`Tab in background, showing the last data.`:``:e.length?e.length===1?`A tab is in the background, showing its last data.`:`${e.length} tabs are in the background, showing their last data.`:``});stopVisibility=()=>{};stopFollowing=()=>{};stopHighlights=()=>{};nav=Rv(`nav`);main=Rv(`main`);injector=E(xs);navObserver;navFade=j({start:!1,end:!1});constructor(){Id(()=>{let e=this.nav()?.nativeElement;e&&typeof ResizeObserver<`u`&&(this.navObserver=new ResizeObserver(()=>this.measureNav()),this.navObserver.observe(e))}),ey(()=>{this.tab(),this.tabs(),Cv(()=>{this.revealActiveTab(),this.measureNav()})})}measureNav(){let e=this.nav()?.nativeElement;if(!e)return;let t=e.scrollWidth-e.clientWidth,n=e.scrollLeft>1,r=t>1&&e.scrollLeftn?e.scrollLeft=Math.max(0,n):e.scrollLeftthis.showView(e)));try{window.parent!==window&&IH(window.parent.document)}catch{}let e=UH(location.hash,WH(this.tabScope()),this.availableTabs().map(e=>e.id));e&&this.tab.set(e),this.stopHighlights=nE(()=>this.rpc());let t=JH();kT(t?{baseURL:t}:{}).then(e=>{this.rpc.set(e),this.connected.set(!0),this.watchVisibility(e),e.scope(`ng-devtools`).rpc.call(`analog-project`).then(e=>{let t=!!e?.analog;this.analog.set(t),this.analogKnown.set(!0),!t&&this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)},()=>{this.analogKnown.set(!0),this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)}),e.events.on(`connection:status`,e=>{this.connected.set(e===`connected`)})},()=>{this.connectionFailed.set(!0),this.analogKnown.set(!0)})}ngOnDestroy(){this.stopFollowing(),this.stopVisibility(),this.stopHighlights(),this.navObserver?.disconnect()}showView(e){if(e===this.view())return;this.view.set(e);let t=new URL(location.href);t.searchParams.set(`view`,e),t.hash=``,history.replaceState(history.state,``,t)}formFocus=j(null);componentFocus=Tv({source:this.tab,computation:()=>null});showForm(e){this.formFocus.set({id:e}),this.switchTab(`forms`)}inspectFromPanel({source:e,origin:t,data:n}){if(e!==window.parent||t!==location.origin)return;let r=n;r?.type===`ng-devtools:inspect-component`&&typeof r.id==`string`&&this.tab()===`components`&&this.config().inspectors.components&&this.componentFocus.set({id:r.id})}switchTab(e){let t=wU[e];if(this.view()===`angular`&&t){this.activateDock(t,e);return}this.setTab(e),history.replaceState(history.state,``,`#tab=${e}`)}setTab(e){this.keepFocus(),this.tab.set(e),GH(this.tabScope(),e)}tabScope(){return this.view()??`panel`}async watchVisibility(e){try{let t=await e.scope(`ng-devtools`).rpc.sharedState(`page-visibility`),n=e=>{let t=e?.hidden;this.hiddenPages.set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])};n(t.value()),this.stopVisibility(),this.stopVisibility=t.on(`updated`,n)}catch{}}keepFocus(){let e=document.activeElement,t=this.main()?.nativeElement;(!e||e===document.body||t?.contains(e))&&Id(()=>{let e=document.activeElement;e&&e!==document.body||(this.nav()?.nativeElement.querySelector(`button.active`)??this.main()?.nativeElement)?.focus()},{injector:this.injector})}async activateDock(e,t){if(await VH(e))return;if(window.parent===window){this.keepFocus(),this.showView(e);return}let n=this.rpc();if(!n?.call){this.setTab(t);return}try{await n.call(`hub:docks:activate`,{dockId:`ng-devtools:${e}`}),this.keepFocus(),this.showView(e)}catch{this.setTab(t)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Bh({type:e,selectors:[[`app-root`]],viewQuery:function(e,t){e&1&&e_(t.nav,YH,5)(t.main,XH,5),e&2&&t_(2)},hostVars:2,hostBindings:function(e,t){e&1&&G(`message`,function(e){return t.inspectFromPanel(e)},ju),e&2&&C_(`--%NS%accent`,t.viewAccent())},decls:26,vars:18,consts:[[`nav`,``],[`main`,``],[1,`brand`],[1,`mark`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 256 256`,`aria-hidden`,`true`],[`width`,`24`,`height`,`17`,`viewBox`,`0 0 256 182`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 24 24`,`fill`,`currentColor`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`fill`,`currentColor`,`aria-hidden`,`true`],[1,`title`],[`aria-label`,`Inspectors`,3,`scroll`],[`role`,`status`,1,`status`],[`aria-hidden`,`true`,1,`dot`],[`tabindex`,`-1`],[`role`,`status`,1,`background-note`],[`role`,`alert`,1,`connection-error`],[3,`info`],[1,`turned-off`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`d`,`M12.024.017V0L12 .008L11.976 0v.017L.812 3.892l1.605 14.875l9.559 5.207V24l.024-.013l.024.013v-.026l9.559-5.207l1.605-14.875zm6.868 14.244q-1.64 3.948-6.031 4.166c-2.829 0-4.661-1.7-4.66-1.7q-1.745-1.359-2.398-3.417c-.695-.76-.702-.841-.774-1.145c-.072-.303.045-.388.249-.685q.204-.298.098-.85q-.26-.36-.3-1.128q0-.37.496-.783q.495-.413.607-.632q.083-.119.065-1.031q-.006-.897.995-.975c1-.08 1.565-.832 1.879-1.174c.21-.228.52-.339.91-.341c.551-.026 1.052.185 1.484.62c1.075-.055 2.176.235 3.292.863q2.379 1.414 2.596 3.055q-.257 2.158-5.788-.113q-2.895.819-2.846 3.552q0 2.508 2.422 3.643c-.787-.772-1.122-1.422-1.01-1.959q2.456 2.906 5.588 2.173c-.92.032-1.65-.264-2.198-.893q2.116-.05 3.998-1.972c-.724.576-1.482.794-2.284.657q3.26-2.563 2.307-5.98l-.002-.006a3.02 3.02 0 0 1 .788 2.03q.023 1.175-.795 2.477q.613-.478 1.413-2.047c.23 2.117-.625 3.724-2.574 4.825q.934-.085 2.473-1.23m-5.567-6.63a.319.319 0 1 1 .638 0a.319.319 0 0 1-.638 0`],[`id`,`ng-grad`,`x1`,`49`,`x2`,`226`,`y1`,`214`,`y2`,`130`,`gradientUnits`,`userSpaceOnUse`],[`stop-color`,`#E40035`],[`offset`,`.24`,`stop-color`,`#F60A48`],[`offset`,`.352`,`stop-color`,`#F20755`],[`offset`,`.494`,`stop-color`,`#DC087D`],[`offset`,`.745`,`stop-color`,`#9717E7`],[`offset`,`1`,`stop-color`,`#6C00F5`],[`fill`,`url(#ng-grad)`,`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`type`,`button`,3,`active`],[`type`,`button`,3,`click`],[3,`name`],[3,`rpc`],[3,`rpc`,`focus`],[3,`navigate`,`rpc`],[3,`focusHandled`,`showForm`,`rpc`,`focus`],[3,`focusHandled`,`rpc`,`focus`]],template:function(e,t){if(e&1&&(z(0,`header`)(1,`h1`,2)(2,`span`,3),P(3,QH,2,0,`:svg:svg`,4)(4,$H,7,0,`:svg:svg`,4)(5,eU,5,0,`:svg:svg`,5)(6,tU,2,0,`:svg:svg`,6)(7,nU,10,0,`:svg:svg`,7)(8,rU,2,0,`:svg:svg`,8),B(),z(9,`span`,9),J(10),B()(),z(11,`nav`,10,0),G(`scroll`,function(){return t.measureNav()}),P(13,aU,2,0),B(),z(14,`span`,11)(15,`span`,12),V(16,`span`),B(),J(17),B()(),z(18,`main`,13,1)(20,`p`,14),J(21),B(),P(22,oU,2,0,`p`,15)(23,sU,1,1,`app-coming-soon`,16)(24,cU,5,0,`p`,17)(25,yU,10,1),B()),e&2){let e;M(2),q(`ng-mark`,t.view()===`angular`),M(),F(t.view()===`nativescript`?3:t.view()===`capacitor`?4:t.view()===`analog`?5:t.view()===`ngrx`?6:t.view()===`angular`?7:8),M(6),q(`ng-text`,t.view()===`angular`),M(),Y(t.title()),M(),q(`fade-start`,t.navFade().start)(`fade-end`,t.navFade().end),M(2),F(t.availableTabs().length>1?13:-1),M(),q(`connected`,t.connected())(`failed`,t.connectionFailed()),M(3),X(` `,t.connected()?`Live`:t.connectionFailed()?`Disconnected`:`Connecting…`,` `),M(4),Y(t.backgroundNote()),M(),F(t.connectionFailed()?22:(e=t.comingSoon())?23:t.tabEnabled(t.tab(),t.config())?25:24,e)}},dependencies:[KE,QO,wM,IN,KP,wI,ER,Tz,MV,DH,PH,_E],styles:[`[_nghost-%COMP%] { --%NS%accent-soft: color-mix(in srgb, var(--%NS%accent) 12%, transparent); --%NS%accent-line: color-mix(in srgb, var(--%NS%accent) 45%, transparent); display: flex; diff --git a/extension/ui/index.html b/extension/ui/index.html index 8285135..62c4722 100644 --- a/extension/ui/index.html +++ b/extension/ui/index.html @@ -7,7 +7,7 @@ Angular DevTools - + From 6ba1828a85510b3c7978c7ad9c12b4c377fe4448 Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 2 Oct 2026 21:24:19 +0300 Subject: [PATCH 10/10] fix(demo): keep the NativeScript server on localhost by default pnpm devtools:nativescript now listens on localhost only, which the iOS simulator and the Android emulator reach. pnpm devtools:nativescript:device listens on every interface for a physical device, and the guide and the panel setup card say which to use and warn about --host with --no-auth. --- app/src/app.ts | 2 +- apps/docs/src/content/guides/nativescript.md | 14 +++++++++++--- ...h.js => browser-agent-rpc-BXhoSh1z-CX0hg10w.js} | 2 +- .../{index-CzVo7wAu.js => index-5mrvn-Xl.js} | 4 ++-- extension/ui/index.html | 2 +- package.json | 3 ++- 6 files changed, 18 insertions(+), 9 deletions(-) rename extension/ui/assets/{browser-agent-rpc-BXhoSh1z-ByPb1U-h.js => browser-agent-rpc-BXhoSh1z-CX0hg10w.js} (93%) rename extension/ui/assets/{index-CzVo7wAu.js => index-5mrvn-Xl.js} (97%) diff --git a/app/src/app.ts b/app/src/app.ts index 0dfed93..f5f8bf6 100644 --- a/app/src/app.ts +++ b/app/src/app.ts @@ -100,7 +100,7 @@ const NATIVESCRIPT_SETUP: ComingSoonInfo = { plans: [ 'Install @santoshyadavdev/ng-devtools and @valor/nativescript-websockets', 'Call initNativeScriptOverlay() in main.ts, before the app bootstraps', - 'Run ng-devtools dev --host 0.0.0.0 in the app, then open the Angular dock', + 'Run ng-devtools dev --no-auth in the app, then open the Angular dock', ], link: { label: 'NativeScript setup guide', diff --git a/apps/docs/src/content/guides/nativescript.md b/apps/docs/src/content/guides/nativescript.md index c2b9fe9..7892a13 100644 --- a/apps/docs/src/content/guides/nativescript.md +++ b/apps/docs/src/content/guides/nativescript.md @@ -101,16 +101,24 @@ Run the server in the app's folder, so the source scanners read its `src/`: ```bash cd my-nativescript-app -npx @santoshyadavdev/ng-devtools dev --host 0.0.0.0 --no-auth +npx @santoshyadavdev/ng-devtools dev --no-auth ``` +The server listens on `localhost` only, which the iOS simulator and the Android emulator reach. `--no-auth` is needed because the app cannot enter the one-time code the panel asks for. + | What | Where | | ------------ | ----------------------------- | | Devtools UI | `http://localhost:9999/` | | MCP endpoint | `http://localhost:9999/__mcp` | +A physical device reaches your machine over the network, so the server has to listen on an interface the device can reach: + +```bash +npx @santoshyadavdev/ng-devtools dev --host 192.168.1.20 --no-auth +``` + - --host 0.0.0.0 --no-auth exposes the devtools RPC and MCP endpoints, unauthenticated, to every host that can reach your machine. The simulators reach the server over loopback, so drop --host 0.0.0.0 unless a physical device needs it, and prefer the one interface that device uses (for example --host 192.168.1.20). + With --host and --no-auth, every host that can reach that address can call the devtools RPC and MCP endpoints without a code. Use it on a trusted network only, and bind to the one interface the device uses rather than 0.0.0.0. See [Standalone CLI](../getting-started/cli.md) for the other server options and [Security](../security.md) for what `--no-auth` turns off. @@ -127,7 +135,7 @@ pnpm devtools:nativescript cd examples/nativescript && npm install && ns debug ios --no-hmr ``` -`pnpm devtools:nativescript` starts the devtools server scanning `examples/nativescript/src`. +`pnpm devtools:nativescript` starts the devtools server on `localhost`, scanning `examples/nativescript/src`. For a physical device, `pnpm devtools:nativescript:device` listens on every interface instead, with the same warning as above. ## Where to next diff --git a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-ByPb1U-h.js b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-CX0hg10w.js similarity index 93% rename from extension/ui/assets/browser-agent-rpc-BXhoSh1z-ByPb1U-h.js rename to extension/ui/assets/browser-agent-rpc-BXhoSh1z-CX0hg10w.js index f5d2855..7429673 100644 --- a/extension/ui/assets/browser-agent-rpc-BXhoSh1z-ByPb1U-h.js +++ b/extension/ui/assets/browser-agent-rpc-BXhoSh1z-CX0hg10w.js @@ -1 +1 @@ -import{t as e}from"./index-CzVo7wAu.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a).catch(()=>{}))}))},s=a(o),l=e.events.on(`connection:status`,e=>{e===`connected`&&o()});return o(),()=>{n=!0,s(),l()}}export{l as setupBrowserAgentRpcBridge}; \ No newline at end of file +import{t as e}from"./index-5mrvn-Xl.js";var t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:new Map,listeners:new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}var o=`devframe:client-id`,s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a).catch(()=>{}))}))},s=a(o),l=e.events.on(`connection:status`,e=>{e===`connected`&&o()});return o(),()=>{n=!0,s(),l()}}export{l as setupBrowserAgentRpcBridge}; \ No newline at end of file diff --git a/extension/ui/assets/index-CzVo7wAu.js b/extension/ui/assets/index-5mrvn-Xl.js similarity index 97% rename from extension/ui/assets/index-CzVo7wAu.js rename to extension/ui/assets/index-5mrvn-Xl.js index 4036fc5..e01b6db 100644 --- a/extension/ui/assets/index-CzVo7wAu.js +++ b/extension/ui/assets/index-5mrvn-Xl.js @@ -5,7 +5,7 @@ `):``,this.name=`UnsubscriptionError`,this.errors=t}});function mr(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var hr=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a){if(this._parentage=null,Array.isArray(a))try{for(var o=cr(a),s=o.next();!s.done;s=o.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else a.remove(this)}var c=this.initialTeardown;if(dr(c))try{c()}catch(e){i=e instanceof pr?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=cr(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{vr(f)}catch(e){i??=[],e instanceof pr?i=ur(ur([],lr(i)),lr(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new pr(i)}},e.prototype.add=function(t){if(t&&t!==this){if(this.closed)vr(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=this._finalizers??[]).push(t)}}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&mr(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&mr(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),gr=hr.EMPTY;function _r(e){return e instanceof hr||e&&`closed`in e&&dr(e.remove)&&dr(e.add)&&dr(e.unsubscribe)}function vr(e){dr(e)?e():e.unsubscribe()}var yr={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},br={setTimeout:function(e,t){var n=[...arguments].slice(2),r=br.delegate;return r?.setTimeout?r.setTimeout.apply(r,ur([e,t],lr(n))):setTimeout.apply(void 0,ur([e,t],lr(n)))},clearTimeout:function(e){return(br.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function xr(e){br.setTimeout(function(){var t=yr.onUnhandledError;if(t)t(e);else throw e})}function Sr(){}var Cr=(function(){return Er(`C`,void 0,void 0)})();function wr(e){return Er(`E`,void 0,e)}function Tr(e){return Er(`N`,e,void 0)}function Er(e,t,n){return{kind:e,value:t,error:n}}var Dr=null;function Or(e){if(yr.useDeprecatedSynchronousErrorHandling){var t=!Dr;if(t&&(Dr={errorThrown:!1,error:null}),e(),t){var n=Dr,r=n.errorThrown,i=n.error;if(Dr=null,r)throw i}}else e()}function kr(e){yr.useDeprecatedSynchronousErrorHandling&&Dr&&(Dr.errorThrown=!0,Dr.error=e)}var Ar=function(e){sr(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,_r(t)&&t.add(n)):n.destination=Rr,n}return t.create=function(e,t,n){return new Pr(e,t,n)},t.prototype.next=function(e){this.isStopped?Lr(Tr(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Lr(wr(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Lr(Cr,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(hr),jr=Function.prototype.bind;function Mr(e,t){return jr.call(e,t)}var Nr=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Fr(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Fr(e)}else Fr(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Fr(e)}},e}(),Pr=function(e){sr(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(dr(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&yr.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Mr(t.next,o),error:t.error&&Mr(t.error,o),complete:t.complete&&Mr(t.complete,o)}):a=t}return i.destination=new Nr(a),i}return t}(Ar);function Fr(e){yr.useDeprecatedSynchronousErrorHandling?kr(e):xr(e)}function Ir(e){throw e}function Lr(e,t){var n=yr.onStoppedNotification;n&&br.setTimeout(function(){return n(e,t)})}var Rr={closed:!0,next:Sr,error:Ir,complete:Sr},zr=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function Br(e){return e}function Vr(e){return e.length===0?Br:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var Hr=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this,i=Gr(e)?e:new Pr(e,t,n);return Or(function(){var e=r,t=e.operator,n=e.source;i.add(t?t.call(i,n):n?r._subscribe(i):r._trySubscribe(i))}),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return t=Ur(t),new t(function(t,r){var i=new Pr({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){return this.source?.subscribe(e)},e.prototype[zr]=function(){return this},e.prototype.pipe=function(){return Vr([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=Ur(e),new e(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function Ur(e){return e??yr.Promise??Promise}function Wr(e){return e&&dr(e.next)&&dr(e.error)&&dr(e.complete)}function Gr(e){return e&&e instanceof Ar||Wr(e)&&_r(e)}function Kr(e){return dr(e?.lift)}function qr(e){return function(t){if(Kr(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw TypeError(`Unable to lift unknown Observable type`)}}function Jr(e,t,n,r,i){return new Yr(e,t,n,r,i)}var Yr=function(e){sr(t,e);function t(t,n,r,i,a,o){var s=e.call(this,t)||this;return s.onFinalize=a,s.shouldUnsubscribe=o,s._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((t=this.onFinalize)==null||t.call(this))}},t}(Ar),Xr=fr(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),Zr=function(e){sr(t,e);function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return t.prototype.lift=function(e){var t=new Qr(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new Xr},t.prototype.next=function(e){var t=this;Or(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=cr(t.currentObservers),a=i.next();!a.done;a=i.next())a.value.next(e)}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;Or(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;Or(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){return this.observers?.length>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?gr:(this.currentObservers=null,a.push(e),new hr(function(){t.currentObservers=null,mr(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new Hr;return e.source=this,e},t.create=function(e,t){return new Qr(e,t)},t}(Hr),Qr=function(e){sr(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??gr},t}(Zr),$r=function(e){sr(t,e);function t(t){var n=e.call(this)||this;return n._value=t,n}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return!n.closed&&t.next(this._value),n},t.prototype.getValue=function(){var e=this,t=e.hasError,n=e.thrownError,r=e._value;if(t)throw n;return this._throwIfClosed(),r},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(Zr);function ei(e,t){return qr(function(n,r){var i=0;n.subscribe(Jr(r,function(n){r.next(e.call(t,n,i++))}))})}var ti=`https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss`,T=class extends Error{code;constructor(e,t){super(ri(e,t)),this.code=e}};function ni(e){return`NG0${Math.abs(e)}`}function ri(e,t){return`${ni(e)}${t?`: `+t:``}`}function ii(e){for(let t in e)if(e[t]===ii)return t;throw Error(``)}function ai(e){if(typeof e==`string`)return e;if(Array.isArray(e))return`[${e.map(ai).join(`, `)}]`;if(e==null)return``+e;let t=e.overriddenName||e.name;if(t)return`${t}`;let n=e.toString();if(n==null)return``+n;let r=n.indexOf(` `);return r>=0?n.slice(0,r):n}function oi(e,t){return e?t?`${e} ${t}`:e:t||``}var si=ii({__forward_ref__:ii});function ci(e){return e.__forward_ref__=ci,e}function li(e){return ui(e)?e():e}function ui(e){return typeof e==`function`&&Object.hasOwn(e,si)&&e.__forward_ref__===ci}function di(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function fi(e){return pi(e,gi)}function pi(e,t){return Object.hasOwn(e,t)&&e[t]||null}function mi(e){return(e?.[gi]??null)||null}function hi(e){return e&&Object.hasOwn(e,_i)?e[_i]:null}var gi=ii({ɵprov:ii}),_i=ii({ɵinj:ii}),vi=class{_desc;ngMetadataName=`InjectionToken`;ɵprov;constructor(e,t){this._desc=e,this.ɵprov=void 0,typeof t==`number`?this.__NG_ELEMENT_ID__=t:t!==void 0&&(this.ɵprov=di({token:this,providedIn:t.providedIn||`root`,factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function yi(e){return e&&!!e.ɵproviders}var bi=ii({ɵcmp:ii}),xi=ii({ɵdir:ii}),Si=ii({ɵpipe:ii}),Ci=ii({ɵfac:ii}),wi=ii({__NG_ELEMENT_ID__:ii}),Ti=ii({__NG_ENV_ID__:ii});function Ei(e){return ki(e,`@Component`),e[bi]||null}function Di(e){return ki(e,`@Directive`),e[xi]||null}function Oi(e){return ki(e,`@Pipe`),e[Si]||null}function ki(e,t){if(e==null)throw new T(-919,!1)}function Ai(e){return typeof e==`string`?e:e==null?``:String(e)}var ji=ii({ngErrorCode:ii}),Mi=ii({ngErrorMessage:ii}),Ni=ii({ngTokenPath:ii});function Pi(e,t){return Ii(``,-200,t)}function Fi(e,t){throw new T(-201,!1)}function Ii(e,t,n){let r=new T(t,e);return r[ji]=t,r[Mi]=e,n&&(r[Ni]=n),r}function Li(e){return e[ji]}var Ri;function zi(){return Ri}function Bi(e){let t=Ri;return Ri=e,t}function Vi(e,t,n){let r=fi(e);if(r&&r.providedIn==`root`)return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;Fi(e,``)}var Hi=globalThis,Ui={},Wi=`__NG_DI_FLAG__`,Gi=class{injector;constructor(e){this.injector=e}retrieve(e,t){let n=Ji(t)||0;try{return this.injector.get(e,n&8?null:Ui,n)}catch(e){if(er(e))return e;throw e}}};function Ki(e,t=0){let n=Zn();if(n===void 0)throw new T(-203,!1);if(n===null)return Vi(e,void 0,t);{let r=Yi(t),i=n.retrieve(e,r);if(er(i)){if(r.optional)return null;throw i}return i}}function qi(e,t=0){return(zi()||Ki)(li(e),t)}function E(e,t){return qi(e,Ji(t))}function Ji(e){return e===void 0||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Yi(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function Xi(e){let t=[];for(let n=0;nArray.isArray(e)?ta(e,t):t(e))}function na(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function ra(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function ia(e,t,n,r){let i=e.length;if(i==t)e.push(n,r);else if(i===1)e.push(r,e[0]),e[0]=n;else{for(i--,e.push(e[i-1],e[i]);i>t;){let t=i-2;e[i]=e[t],i--}e[t]=n,e[t+1]=r}}function aa(e,t,n){let r=sa(e,t);return r>=0?e[r|1]=n:(r=~r,ia(e,r,t,n)),r}function oa(e,t){let n=sa(e,t);if(n>=0)return e[n|1]}function sa(e,t){return ca(e,t,1)}function ca(e,t,n){let r=0,i=e.length>>n;for(;i!==r;){let a=r+(i-r>>1),o=e[a<t?i=a:r=a+1}return~(i<{n.push(e)};return ta(t,e=>{let t=e;va(t,a,[],r)&&(i||=[],i.push(t))}),i!==void 0&&_a(i,a),n}function _a(e,t){for(let n=0;n{t(e,r)})}}function va(e,t,n,r){if(e=li(e),!e)return!1;let i=null,a=hi(e),o=!a&&Ei(e);if(!a&&!o){let t=e.ngModule;if(a=hi(t),a)i=t;else return!1}else if(o&&!o.standalone)return!1;else i=e;let s=r.has(i);if(o){if(s)return!1;if(r.add(i),o.dependencies){let e=typeof o.dependencies==`function`?o.dependencies():o.dependencies;for(let i of e)va(i,t,n,r)}}else if(a){if(a.imports!=null&&!s){r.add(i);let e;try{ta(a.imports,i=>{va(i,t,n,r)&&(e||=[],e.push(i))})}finally{}e!==void 0&&_a(e,t)}if(!s){let e=Qi(i)||(()=>new i);t({provide:i,useFactory:e,deps:ua},i),t({provide:pa,useValue:i,multi:!0},i),t({provide:da,useValue:()=>qi(i),multi:!0},i)}let o=a.providers;if(o!=null&&!s){let n=e;ya(o,e=>{t(e,n)})}}else return!1;return i!==e&&e.providers!==void 0}function ya(e,t){for(let n of e)yi(n)&&(n=n.ɵproviders),Array.isArray(n)?ya(n,t):t(n)}var ba=ii({provide:String,useValue:ii});function xa(e){return typeof e==`object`&&!!e&&ba in e}function Sa(e){return!!(e&&e.useExisting)}function Ca(e){return!!(e&&e.useFactory)}function wa(e){return typeof e==`function`}var Ta=new vi(``),Ea={},Da={},Oa=void 0;function ka(){return Oa===void 0&&(Oa=new ma),Oa}var Aa=class{},ja=class extends Aa{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(e,t,n,r){super(),this.parent=t,this.source=n,this.scopes=r,Va(e,e=>this.processProvider(e)),this.records.set(fa,La(void 0,this)),r.has(`environment`)&&this.records.set(Aa,La(void 0,this));let i=this.records.get(Ta);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(pa,ua,{self:!0}))}retrieve(e,t){let n=Ji(t)||0;try{return this.get(e,Ui,n)}catch(e){if(er(e))return e;throw e}}destroy(){Ia(this),this._destroyed=!0;let e=w(null);try{for(let e of this._ngOnDestroyHooks)e.ngOnDestroy();let e=this._onDestroyHooks;this._onDestroyHooks=[];for(let t of e)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),w(e)}}onDestroy(e){return Ia(this),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){Ia(this);let t=Qn(this),n=Bi(void 0);try{return e()}finally{Qn(t),Bi(n)}}get(e,t=Ui,n){if(Ia(this),Object.hasOwn(e,Ti))return e[Ti](this);let r=Ji(n),i=Qn(this),a=Bi(void 0);try{if(!(r&4)){let t=this.records.get(e);if(t===void 0){let n=Ba(e)&&fi(e);t=n&&this.injectableDefInScope(n)?La(Ma(e),Ea):null,this.records.set(e,t)}if(t!=null)return this.hydrate(e,t,r)}let n=r&2?ka():this.parent;return t=r&8&&t===Ui?null:t,n.get(e,t)}catch(e){let t=Li(e);throw t===-200||t===-201?new T(t,null):e}finally{Bi(a),Qn(i)}}resolveInjectorInitializers(){let e=w(null),t=Qn(this),n=Bi(void 0);try{let e=this.get(da,ua,{self:!0});for(let t of e)t()}finally{Qn(t),Bi(n),w(e)}}toString(){return`R3Injector[...]`}processProvider(e){e=li(e);let t=wa(e)?e:li(e&&e.provide),n=Pa(e);if(!wa(e)&&e.multi===!0){let n=this.records.get(t);n||(n=La(void 0,Ea,!0),n.factory=()=>Xi(n.multi),this.records.set(t,n)),t=e,n.multi.push(e)}this.records.set(t,n)}hydrate(e,t,n){let r=w(null);try{if(t.value===Da)throw Pi(``);return t.value===Ea&&(t.value=Da,t.value=t.factory(void 0,n)),typeof t.value==`object`&&t.value&&za(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{w(r)}}injectableDefInScope(e){if(!e.providedIn)return!1;let t=li(e.providedIn);return typeof t==`string`?t===`any`||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(e){let t=this._onDestroyHooks.indexOf(e);t!==-1&&this._onDestroyHooks.splice(t,1)}};function Ma(e){let t=fi(e),n=t===null?Qi(e):t.factory;if(n!==null)return n;if(e instanceof vi)throw new T(-204,!1);if(e instanceof Function)return Na(e);throw new T(-204,!1)}function Na(e){if(e.length>0)throw new T(-204,!1);let t=mi(e);return t===null?()=>new e:()=>t.factory(e)}function Pa(e){return xa(e)?La(void 0,e.useValue):La(Fa(e),Ea)}function Fa(e,t,n){let r;if(wa(e)){let t=li(e);return Qi(t)||Ma(t)}if(xa(e))r=()=>li(e.useValue);else if(Ca(e))r=()=>e.useFactory(...Xi(e.deps||[]));else if(Sa(e))r=(t,n)=>qi(li(e.useExisting),n!==void 0&&n&8?8:void 0);else{let t=li(e&&(e.useClass||e.provide));if(Ra(e))r=()=>new t(...Xi(e.deps));else return Qi(t)||Ma(t)}return r}function Ia(e){if(e.destroyed)throw new T(-205,!1)}function La(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Ra(e){return!!e.deps}function za(e){return typeof e==`object`&&!!e&&typeof e.ngOnDestroy==`function`}function Ba(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function Va(e,t){for(let n of e)Array.isArray(n)?Va(n,t):n&&yi(n)?Va(n.ɵproviders,t):t(n)}function Ha(e,t){let n;e instanceof ja?(Ia(e),n=e):n=new Gi(e);let r=Qn(n),i=Bi(void 0);try{return t()}finally{Qn(r),Bi(i)}}function Ua(){return zi()!==void 0||Zn()!=null}var Wa=1;function Ga(e){return Array.isArray(e)&&typeof e[Wa]==`object`}function Ka(e){return Array.isArray(e)&&e[Wa]===!0}function qa(e){return!!(e.flags&4)}function Ja(e){return e.componentOffset>-1}function Ya(e){return(e.flags&1)==1}function Xa(e){return!!e.template}function Za(e){return!!(e[2]&512)}function Qa(e){return(e[2]&256)==256}var $a=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})($a||{}),eo=`math`;function to(e){for(;Array.isArray(e);)e=e[0];return e}function no(e,t){return to(t[e])}function ro(e,t){return to(t[e.index])}function io(e,t){return e.data[t]}function ao(e,t){return e[t]}function oo(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function so(e,t){let n=t[e];return Ga(n)?n:n[0]}function co(e){return(e[2]&128)==128}function lo(e){return Ka(e[3])}function uo(e,t){return t==null?null:e[t]}function fo(e){e[17]=0}function po(e){e[2]&1024||(e[2]|=1024,co(e)&&_o(e))}function mo(e,t){for(;e>0;)t=t[14],e--;return t}function ho(e){return!!(e[2]&9216||e[24]?.dirty)}function go(e){e[10].changeDetectionScheduler?.notify(8),e[2]&64&&(e[2]|=1024),ho(e)&&_o(e)}function _o(e){e[10].changeDetectionScheduler?.notify(0);let t=bo(e);for(;t!==null&&!(t[2]&8192||(t[2]|=8192,!co(t)));)t=bo(t)}function vo(e,t){if(Qa(e))throw new T(911,!1);e[21]===null&&(e[21]=[]),e[21].push(t)}function yo(e,t){if(e[21]===null)return;let n=e[21].indexOf(t);n!==-1&&e[21].splice(n,1)}function bo(e){let t=e[3];return Ka(t)?t[3]:t}function xo(e){return e[7]??=[]}function So(e){return e.cleanup??=[]}function Co(e,t,n,r){let i=xo(t);i.push(n),e.firstCreatePass&&So(e).push(r,i.length-1)}var wo={lFrame:as(null),bindingsEnabled:!0,skipHydrationRootTNode:null},To=!1;function Eo(){return wo.lFrame.elementDepthCount}function Do(){wo.lFrame.elementDepthCount++}function Oo(){wo.lFrame.elementDepthCount--}function ko(){return wo.bindingsEnabled}function Ao(){return wo.skipHydrationRootTNode!==null}function jo(e){return wo.skipHydrationRootTNode===e}function Mo(){wo.skipHydrationRootTNode=null}function D(){return wo.lFrame.lView}function No(){return wo.lFrame.tView}function O(e){return wo.lFrame.contextLView=e,e[8]}function k(e){return wo.lFrame.contextLView=null,e}function Po(){let e=Fo();for(;e!==null&&e.type===64;)e=e.parent;return e}function Fo(){return wo.lFrame.currentTNode}function Io(){let e=wo.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Lo(e,t){let n=wo.lFrame;n.currentTNode=e,n.isParent=t}function Ro(){return wo.lFrame.isParent}function zo(){wo.lFrame.isParent=!1}function Bo(){return wo.lFrame.contextLView}function Vo(){return To}function Ho(e){let t=To;return To=e,t}function Uo(){let e=wo.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Wo(){return wo.lFrame.bindingIndex}function Go(e){return wo.lFrame.bindingIndex=e}function Ko(){return wo.lFrame.bindingIndex++}function qo(e){let t=wo.lFrame,n=t.bindingIndex;return t.bindingIndex+=e,n}function Jo(){return wo.lFrame.inI18n}function Yo(e,t){let n=wo.lFrame;n.bindingIndex=n.bindingRootIndex=e,Zo(t)}function Xo(){return wo.lFrame.currentDirectiveIndex}function Zo(e){wo.lFrame.currentDirectiveIndex=e}function Qo(e){let t=wo.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function $o(){return wo.lFrame.currentQueryIndex}function es(e){wo.lFrame.currentQueryIndex=e}function ts(e){let t=e[1];return t.type===2?t.declTNode:t.type===1?e[5]:null}function ns(e,t,n){if(n&4){let r=t,i=e;for(;r=r.parent,r===null&&!(n&1)&&(r=ts(i),!(r===null||(i=i[14],r.type&10))););if(r===null)return!1;t=r,e=i}let r=wo.lFrame=is();return r.currentTNode=t,r.lView=e,!0}function rs(e){let t=is(),n=e[1];wo.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function is(){let e=wo.lFrame,t=e===null?null:e.child;return t===null?as(e):t}function as(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function os(){let e=wo.lFrame;return wo.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var ss=os;function cs(){let e=os();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function ls(e){return(wo.lFrame.contextLView=mo(e,wo.lFrame.contextLView))[8]}function us(){return wo.lFrame.selectedIndex}function ds(e){wo.lFrame.selectedIndex=e}function fs(){let e=wo.lFrame;return io(e.tView,e.selectedIndex)}function ps(){wo.lFrame.currentNamespace=`svg`}function ms(){hs()}function hs(){wo.lFrame.currentNamespace=null}function gs(){return wo.lFrame.currentNamespace}var _s=!0;function vs(){return _s}function ys(e){_s=e}function bs(e,t=null,n=null,r){let i=xs(e,t,n,r);return i.resolveInjectorInitializers(),i}function xs(e,t=null,n=null,r,i=new Set){return new ja([n||ua,ha(e)],t||ka(),null,i)}var Ss=class e{static THROW_IF_NOT_FOUND=Ui;static NULL=new ma;static create(e,t){if(Array.isArray(e))return bs({name:``},t,e,``);{let t=e.name??``;return bs({name:t},e.parent,e.providers,t)}}static ɵprov=di({token:e,providedIn:`any`,factory:()=>qi(fa)});static __NG_ELEMENT_ID__=-1},Cs=new vi(``),ws=class{static __NG_ELEMENT_ID__=Es;static __NG_ENV_ID__=e=>e},Ts=class extends ws{_lView;constructor(e){super(),this._lView=e}get destroyed(){return Qa(this._lView)}onDestroy(e){let t=this._lView;return vo(t,e),()=>yo(t,e)}};function Es(){return new Ts(D())}var Ds=new vi(``),Os=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new $r(!1);debugTaskTracker=E(Ds,{optional:!0});get hasPendingTasks(){return!this.destroyed&&this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new Hr(e=>{e.next(!1),e.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let e=this.taskId++;return this.pendingTasks.add(e),this.debugTaskTracker?.add(e),e}has(e){return this.pendingTasks.has(e)}remove(e){this.pendingTasks.delete(e),this.debugTaskTracker?.remove(e),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),ks=class extends Zr{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(e=!1){super(),this.__isAsync=e,Ua()&&(this.destroyRef=E(ws,{optional:!0})??void 0,this.pendingTasks=E(Os,{optional:!0})??void 0)}emit(e){let t=w(null);try{super.next(e)}finally{w(t)}}subscribe(e,t,n){let r=e,i=t||(()=>null),a=n;if(e&&typeof e==`object`){let t=e;r=t.next?.bind(t),i=t.error?.bind(t),a=t.complete?.bind(t)}this.__isAsync&&(i=this.wrapInTimeout(i),r&&=this.wrapInTimeout(r),a&&=this.wrapInTimeout(a));let o=super.subscribe({next:r,error:i,complete:a});return e instanceof hr&&e.add(o),o}wrapInTimeout(e){return t=>{let n=this.pendingTasks?.add();setTimeout(()=>{try{e(t)}finally{n!==void 0&&this.pendingTasks?.remove(n)}})}}};function As(...e){}function js(e){let t,n;function r(){e=As;try{n!==void 0&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame==`function`&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function Ms(e){return queueMicrotask(()=>e()),()=>{e=As}}var Ns=`isAngularZone`,Ps=`isAngularZone_ID`,Fs=0,Is=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new ks(!1);onMicrotaskEmpty=new ks(!1);onStable=new ks(!1);onError=new ks(!1);constructor(e){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:i=!1}=e;if(typeof Zone>`u`)throw new T(908,!1);Zone.assertZonePatched();let a=this;a._nesting=0,a._outer=a._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(a._inner=a._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(a._inner=a._inner.fork(Zone.longStackTraceZoneSpec)),a.shouldCoalesceEventChangeDetection=!r&&n,a.shouldCoalesceRunChangeDetection=r,a.callbackScheduled=!1,a.scheduleInRootZone=i,Bs(a)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get(Ns)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new T(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new T(909,!1)}run(e,t,n){return this._inner.run(e,t,n)}runTask(e,t,n,r){let i=this._inner,a=i.scheduleEventTask(`NgZoneEvent: `+r,e,Ls,As,As);try{return i.runTask(a,t,n)}finally{i.cancelTask(a)}}runGuarded(e,t,n){return this._inner.runGuarded(e,t,n)}runOutsideAngular(e){return this._outer.run(e)}},Ls={};function Rs(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function zs(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){js(()=>{e.callbackScheduled=!1,Vs(e),e.isCheckStableRunning=!0,Rs(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Vs(e)}function Bs(e){let t=()=>{zs(e)},n=Fs++;e._inner=e._inner.fork({name:`angular`,properties:{[Ns]:!0,[Ps]:n,[Ps+n]:!0},onInvokeTask:(n,r,i,a,o,s)=>{if(Gs(s))return n.invokeTask(i,a,o,s);try{return Hs(e),n.invokeTask(i,a,o,s)}finally{(e.shouldCoalesceEventChangeDetection&&a.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),Us(e)}},onInvoke:(n,r,i,a,o,s,c)=>{try{return Hs(e),n.invoke(i,a,o,s,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!Ks(s)&&t(),Us(e)}},onHasTask:(t,n,r,i)=>{t.hasTask(r,i),n===r&&(i.change==`microTask`?(e._hasPendingMicrotasks=i.microTask,Vs(e),Rs(e)):i.change==`macroTask`&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(t,n,r,i)=>(t.handleError(r,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}function Vs(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0)}function Hs(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Us(e){e._nesting--,Rs(e)}var Ws=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new ks;onMicrotaskEmpty=new ks;onStable=new ks;onError=new ks;run(e,t,n){return e.apply(t,n)}runGuarded(e,t,n){return e.apply(t,n)}runOutsideAngular(e){return e()}runTask(e,t,n,r){return e.apply(t,n)}};function Gs(e){return qs(e,`__ignore_ng_zone__`)}function Ks(e){return qs(e,`__scheduler_tick__`)}function qs(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var Js=class{_console=console;handleError(e){this._console.error(`ERROR`,e)}},Ys=new vi(``,{factory:()=>{let e=E(Is),t=E(Aa),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(Js),n.handleError(r))})}}}),Xs={provide:da,useValue:()=>{E(Js,{optional:!0})},multi:!0};function A(e,t){let[n,r,i]=Hn(e,t?.equal),a=n;return a[dn],a.set=r,a.update=i,a.asReadonly=Zs.bind(a),a}function Zs(){let e=this[dn];if(e.readonlyFn===void 0){let t=()=>this();t[dn]=e,e.readonlyFn=t}return e.readonlyFn}var Qs=new vi(``,{factory:()=>$s}),$s=`ng`,ec=new vi(``),tc=new vi(``,{providedIn:`platform`,factory:()=>`unknown`}),nc=new vi(``,{factory:()=>E(Cs).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null}),rc=(()=>{class e{view;node;constructor(e,t){this.view=e,this.node=t}static __NG_ELEMENT_ID__=ic}return e})();function ic(){return new rc(D(),Po())}var ac=class{},oc=new vi(``,{factory:()=>!0}),sc=new vi(``),cc=(()=>{class e{static ɵprov=di({token:e,providedIn:`root`,factory:()=>new lc})}return e})(),lc=class{dirtyEffectCount=0;queues=new Map;add(e){this.enqueue(e),this.schedule(e)}schedule(e){e.dirty&&this.dirtyEffectCount++}remove(e){let t=e.zone,n=this.queues.get(t);n.has(e)&&(n.delete(e),e.dirty&&this.dirtyEffectCount--)}enqueue(e){let t=e.zone;this.queues.has(t)||this.queues.set(t,new Set);let n=this.queues.get(t);n.has(e)||n.add(e)}flush(){for(;this.dirtyEffectCount>0;){let e=!1;for(let[t,n]of this.queues)e||=t===null?this.flushQueue(n):t.run(()=>this.flushQueue(n));e||(this.dirtyEffectCount=0)}}flushQueue(e){let t=!1;for(let n of e)n.dirty&&(this.dirtyEffectCount--,t=!0,n.run());return t}},uc=class{[dn];constructor(e){this[dn]=e}destroy(){this[dn].destroy()}};function dc(e,t){let n=t?.injector??E(Ss),r=t?.manualCleanup===!0?null:n.get(ws),i,a=n.get(rc,null,{optional:!0}),o=n.get(ac);return a===null?i=gc(e,n.get(cc),o):(i=hc(a.view,o,e),r instanceof Ts&&r._lView===a.view&&(r=null)),i.injector=n,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new uc(i)}var fc={...Jn,cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=Ho(!1);try{Yn(this)}finally{Ho(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=w(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],w(e)}}},pc={...fc,consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}},mc={...fc,consumerMarkedDirty(){this.view[2]|=8192,_o(this.view),this.notifier.notify(13)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[23]?.delete(this)}};function hc(e,t,n){let r=Object.create(mc);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.fn=_c(r,n),e[23]??=new Set,e[23].add(r),r.consumerMarkedDirty(r),r}function gc(e,t,n){let r=Object.create(pc);return r.fn=_c(r,e),r.scheduler=t,r.notifier=n,r.zone=typeof Zone<`u`?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function _c(e,t){return()=>{t(t=>(e.cleanupFns??=[]).push(t))}}function vc(e){return typeof e==`function`&&e[dn]!==void 0}function yc(e){return vc(e)&&typeof e.set==`function`}var bc=Symbol(`InputSignalNode#UNSET`),xc={...Kn,transformFn:void 0,applyValueToInputSignal(e,t){Wn(e,t)}};function Sc(e){return{toString:e}.toString()}var Cc=(function(e){return e[e.TemplateCreateStart=0]=`TemplateCreateStart`,e[e.TemplateCreateEnd=1]=`TemplateCreateEnd`,e[e.TemplateUpdateStart=2]=`TemplateUpdateStart`,e[e.TemplateUpdateEnd=3]=`TemplateUpdateEnd`,e[e.LifecycleHookStart=4]=`LifecycleHookStart`,e[e.LifecycleHookEnd=5]=`LifecycleHookEnd`,e[e.OutputStart=6]=`OutputStart`,e[e.OutputEnd=7]=`OutputEnd`,e[e.BootstrapApplicationStart=8]=`BootstrapApplicationStart`,e[e.BootstrapApplicationEnd=9]=`BootstrapApplicationEnd`,e[e.BootstrapComponentStart=10]=`BootstrapComponentStart`,e[e.BootstrapComponentEnd=11]=`BootstrapComponentEnd`,e[e.ChangeDetectionStart=12]=`ChangeDetectionStart`,e[e.ChangeDetectionEnd=13]=`ChangeDetectionEnd`,e[e.ChangeDetectionSyncStart=14]=`ChangeDetectionSyncStart`,e[e.ChangeDetectionSyncEnd=15]=`ChangeDetectionSyncEnd`,e[e.AfterRenderHooksStart=16]=`AfterRenderHooksStart`,e[e.AfterRenderHooksEnd=17]=`AfterRenderHooksEnd`,e[e.ComponentStart=18]=`ComponentStart`,e[e.ComponentEnd=19]=`ComponentEnd`,e[e.DeferBlockStateStart=20]=`DeferBlockStateStart`,e[e.DeferBlockStateEnd=21]=`DeferBlockStateEnd`,e[e.DynamicComponentStart=22]=`DynamicComponentStart`,e[e.DynamicComponentEnd=23]=`DynamicComponentEnd`,e[e.HostBindingsUpdateStart=24]=`HostBindingsUpdateStart`,e[e.HostBindingsUpdateEnd=25]=`HostBindingsUpdateEnd`,e})(Cc||{}),wc=class{previousValue;currentValue;firstChange;constructor(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}isFirstChange(){return this.firstChange}};function Tc(e,t,n,r){t===null?e[n]=r:t.applyValueToInputSignal(t,r)}var Ec=null,Dc=(()=>{Ec=kc;let e=()=>kc;return e.ngInherit=!0,e})();function Oc(){return Ec}function kc(e){return e.type.prototype.ngOnChanges&&(e.setInput=jc),Ac}function Ac(){let e=Nc(this),t=e?.current;if(t){let n=e.previous;if(n===la)e.previous=t;else for(let e in t)n[e]=t[e];e.current=null,this.ngOnChanges(t)}}function jc(e,t,n,r,i){let a=this.declaredInputs[r],o=Nc(e)||Pc(e,{previous:la,current:null}),s=o.current||={},c=o.previous,l=c[a];s[a]=new wc(l&&l.currentValue,n,c===la),Tc(e,t,i,n)}var Mc=`__ngSimpleChanges__`;function Nc(e){return Object.hasOwn(e,Mc)&&e[Mc]||null}function Pc(e,t){return e[Mc]=t}var Fc=[],Ic=function(e,t=null,n){for(let r=0;r=r)break}else t[c]<0&&(e[17]+=65536),(s>14>16&&(e[2]&3)===t&&(e[2]+=16384,Uc(o,a)):Uc(o,a)}var Gc=-1,Kc=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(e,t,n,r){this.factory=e,this.name=r,this.canSeeViewProviders=t,this.injectImpl=n}};function qc(e){return!!(e.flags&8)}function Jc(e){return!!(e.flags&16)}function Yc(e,t,n){let r=0;for(;rt){o=a-1;break}}}for(;a>16}function rl(e,t){let n=nl(e),r=t;for(;n>0;)r=r[14],n--;return r}var il=!0;function al(e){let t=il;return il=e,t}var ol=255,sl=5,cl=0,ll={};function ul(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,wi)&&(r=n[wi]),r??=n[wi]=cl++;let i=r&ol,a=1<>sl)]|=a}function dl(e,t){let n=pl(e,t);if(n!==-1)return n;let r=t[1];r.firstCreatePass&&(e.injectorIndex=t.length,fl(r.data,e),fl(t,null),fl(r.blueprint,null));let i=ml(e,t),a=e.injectorIndex;if(el(i)){let e=tl(i),n=rl(i,t),r=n[1].data;for(let i=0;i<8;i++)t[a+i]=n[e+i]|r[e+i]}return t[a+8]=i,a}function fl(e,t){e.push(0,0,0,0,0,0,0,0,t)}function pl(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function ml(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,i=t;for(;i!==null;){if(r=kl(i),r===null)return Gc;if(n++,i=i[14],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Gc}function hl(e,t,n){ul(e,t,n)}function gl(e,t,n){if(n&8||e!==void 0)return e;Fi(t,`NodeInjector`)}function _l(e,t,n,r){if(n&8&&r===void 0&&(r=null),!(n&3)){let i=e[9],a=Bi(void 0);try{return i?i.get(t,r,n&8):Vi(t,r,n&8)}finally{Bi(a)}}return gl(r,t,n)}function vl(e,t,n,r=0,i){if(e!==null){if(t[2]&2048&&!(r&2)){let i=Ol(e,t,n,r,ll);if(i!==ll)return i}let i=yl(e,t,n,r,ll);if(i!==ll)return i}return _l(t,n,r,i)}function yl(e,t,n,r,i){let a=Cl(n);if(typeof a==`function`){if(!ns(t,e,r))return r&1?gl(i,n,r):_l(t,n,r,i);try{let e;if(e=a(r),e==null&&!(r&8))Fi(n);else return e}finally{ss()}}else if(typeof a==`number`){let i=null,o=pl(e,t),s=Gc,c=r&1?t[15][5]:null;for((o===-1||r&4)&&(s=o===-1?ml(e,t):t[o+8],s===Gc||!Tl(r,!1)?o=-1:(i=t[1],o=tl(s),t=rl(s,t)));o!==-1;){let e=t[1];if(wl(a,o,e.data)){let e=bl(o,t,n,i,r,c);if(e!==ll)return e}s=t[o+8],s!==Gc&&Tl(r,t[1].data[o+8]===c)&&wl(a,o,t)?(i=e,o=tl(s),t=rl(s,t)):o=-1}}return i}function bl(e,t,n,r,i,a){let o=t[1],s=o.data[e+8],c=xl(s,o,n,r==null?Ja(s)&&il:r!=o&&!!(s.type&3),i&1&&a===s);return c===null?ll:Sl(t,o,c,s,i)}function xl(e,t,n,r,i){let a=e.providerIndexes,o=t.data,s=a&1048575,c=e.directiveStart,l=e.directiveEnd,u=a>>20,d=r?s:s+u,f=i?s+u:l;for(let e=d;e=c&&t.type===n)return e}if(i){let e=o[c];if(e&&Xa(e)&&e.type===n)return c}return null}function Sl(e,t,n,r,i){let a=e[n],o=t.data;if(a instanceof Kc){let s=a;if(s.resolving)throw Pi(``);let c=al(s.canSeeViewProviders);s.resolving=!0,o[n].type||o[n];let l=s.injectImpl?Bi(s.injectImpl):null;ns(e,r,0);try{a=e[n]=s.factory(void 0,i,o,e,r),t.firstCreatePass&&n>=r.directiveStart&&Lc(n,o[n],t)}finally{l!==null&&Bi(l),al(c),s.resolving=!1,ss()}}return a}function Cl(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,wi)?e[wi]:void 0;return typeof t==`number`?t>=0?t&ol:Dl:t}function wl(e,t,n){let r=1<>sl)]&r)}function Tl(e,t){return!(e&2)&&!(e&1&&t)}var El=class{_tNode;_lView;constructor(e,t){this._tNode=e,this._lView=t}get(e,t,n){return vl(this._tNode,this._lView,e,Ji(n),t)}};function Dl(){return new El(Po(),D())}function Ol(e,t,n,r,i){let a=e,o=t;for(;a!==null&&o!==null&&o[2]&2048&&!Za(o);){let e=yl(a,o,n,r|2,ll);if(e!==ll)return e;r&=-5;let t=a.parent;if(!t){let e=o[20];if(e){let t=e.get(n,ll,r);if(t!==ll)return t}t=kl(o),o=o[14]}a=t}return i}function kl(e){let t=e[1],n=t.type;return n===2?t.declTNode:n===1?e[5]:null}function Al(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function jl(){return Ml(Po(),D())}function Ml(e,t){return new Nl(ro(e,t))}var Nl=(()=>{class e{nativeElement;constructor(e){this.nativeElement=e}static __NG_ELEMENT_ID__=jl}return e})();function Pl(e){return e instanceof Nl?e.nativeElement:e}function Fl(){return this._results[Symbol.iterator]()}var Il=class{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new Zr}constructor(e=!1){this._emitDistinctChangesOnly=e}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,t){return this._results.reduce(e,t)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,t){this.dirty=!1;let n=ea(e);(this._changesDetected=!$i(this._results,n,t))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=Fl};function Ll(e){return(e.flags&128)==128}var Rl=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(Rl||{}),zl=new Map,Bl=0;function Vl(){return Bl++}function Hl(e){zl.set(e[19],e)}function Ul(e){zl.delete(e[19])}var Wl=`__ngContext__`;function Gl(e,t){Ga(t)?(e[Wl]=t[19],Hl(t)):e[Wl]=t}function Kl(e){return Jl(e[12])}function ql(e){return Jl(e[4])}function Jl(e){for(;e!==null&&!Ka(e);)e=e[4];return e}var Yl=void 0;function Xl(e){Yl=e}function Zl(){if(Yl!==void 0)return Yl;if(typeof document<`u`)return document;throw new T(210,!1)}var Ql=!1,$l=new vi(``,{factory:()=>Ql}),eu=new WeakMap;function tu(e,t){if(typeof e!=`object`||!e)return;let n=eu.get(e);n||(n=new WeakSet,eu.set(e,n)),n.add(t)}function nu(e){return(e.flags&32)==32}var ru=()=>null;function iu(e,t,n=!1){return ru(e,t,n)}function au(e,t){let n=e.contentQueries;if(n!==null){let r=w(null);try{for(let r=0;r|^->||--!>|)/g,_u=`​$1​`;function vu(e){return e.replace(hu,e=>e.replace(gu,_u))}function yu(e,t){return e.createText(t)}function bu(e,t,n){e.setValue(t,n)}function xu(e,t){return e.createComment(vu(t))}function Su(e,t,n){return e.createElement(t,n)}function Cu(e,t,n,r,i){e.insertBefore(t,n,r,i)}function wu(e,t,n){e.appendChild(t,n)}function Tu(e,t,n,r,i){r===null?wu(e,t,n):Cu(e,t,n,r,i)}function Eu(e,t,n,r){e.removeChild(null,t,n,r)}function Du(e,t,n){e.setAttribute(t,`style`,n)}function Ou(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function ku(e,t,n){let{mergedAttrs:r,classes:i,styles:a}=n;r!==null&&Yc(e,t,r),i!==null&&Ou(e,t,i),a!==null&&Du(e,t,a)}function Au(e){let t=ju();return t?t.sanitize($a.URL,e)||``:du(e,`URL`)?uu(e):mu(Ai(e))}function ju(){let e=D();return e&&e[10].sanitizer}function Mu(e){return e.ownerDocument.defaultView}function Nu(e){return e.ownerDocument}function Pu(e,t,n){let r=e.length;for(;;){let i=e.indexOf(t,n);if(i===-1)return i;if(i===0||e.charCodeAt(i-1)<=32){let n=t.length;if(i+n===r||e.charCodeAt(i+n)<=32)return i}n=i+1}}var Fu=`ng-template`;function Iu(e,t,n,r){let i=0;if(r){for(;i-1){let e;for(;++ia?``:i[u+1].toLowerCase(),r&2&&l!==e){if(Bu(r))return!1;o=!0}}}}}return Bu(r)||o}function Bu(e){return!(e&1)}function Vu(e,t,n,r){if(t===null)return-1;let i=0;if(r||!n){let n=!1;for(;i-1)for(n++;n0?`="`+t+`"`:``)+`]`}else r&8?i+=`.`+o:r&4&&(i+=` `+o)}else i!==``&&!Bu(o)&&(t+=Gu(a,i),i=``),r=o,a||=!Bu(r);n++}return i!==``&&(t+=Gu(a,i)),t}function qu(e){return e.map(Ku).join(`,`)}function Ju(e){let t=[],n=[],r=1,i=2;for(;r!1});function ed(e){if(!e)return 0;let t=e.toLowerCase().indexOf(`ms`)>-1?1:1e3;return parseFloat(e)*t}function td(e,t){return e.getPropertyValue(t).split(`,`).map(e=>e.trim())}function nd(e){let t=td(e,`transition-property`),n=td(e,`transition-duration`),r=td(e,`transition-delay`),i={propertyName:``,duration:0,animationName:void 0};for(let e=0;ei.duration&&(i.propertyName=t[e],i.duration=a)}return i}function rd(e){let t=td(e,`animation-name`),n=td(e,`animation-delay`),r=td(e,`animation-duration`),i=td(e,`animation-iteration-count`),a={animationName:``,propertyName:void 0,duration:0};for(let e=0;ea.duration&&s!==`infinite`&&(a.animationName=t[e],a.duration=o)}return a}function id(e,t){return e!==void 0&&e.duration>t.duration}function ad(e){return(e.animationName!=null||e.propertyName!=null)&&e.duration>0}function od(e){let t=e.effect?.getTiming();if(t===void 0)return;let n=typeof t.duration==`number`?t.duration:0,r=(t.delay??0)+n,i=e.playbackRate;return i!==void 0&&i!==0&&i!==1&&(r/=Math.abs(i)),r}function sd(e,t){let n=getComputedStyle(e),r=rd(n),i=nd(n),a=r.duration>i.duration?r:i;id(t.get(e),a)||ad(a)&&t.set(e,a)}function cd(e,t,n){if(!n)return;let r=e.getAnimations();return r.length===0?sd(e,t):ld(e,t,r)}function ld(e,t,n){let r={animationName:void 0,propertyName:void 0,duration:0};for(let e of n){if(e.effect?.getTiming()?.iterations===1/0)continue;let t=od(e)??0,n,i;e.animationName?i=e.animationName:n=e.transitionProperty,t>=r.duration&&(r={animationName:i,propertyName:n,duration:t})}id(t.get(e),r)||ad(r)&&t.set(e,r)}var ud=new Set,dd=!1,fd=1,pd=typeof document<`u`&&typeof document?.documentElement?.getAnimations==`function`;function md(e){return e[9].get($u,dd)}function hd(e,t,n){let r=_d.get(e);if(r){for(let e of t)r.classList.push(e);for(let e of n)r.cleanupFns.push(e)}else _d.set(e,{classList:t,cleanupFns:n})}function gd(e){let t=_d.get(e);if(t){for(let e of t.cleanupFns)e();_d.delete(e)}vd.delete(e)}var _d=new WeakMap,vd=new WeakMap,yd=new WeakMap;function bd(e){return e?e[14]??e:null}var xd=new WeakSet;function Sd(e,t,n){let r=yd.get(e);if(!r||r.length===0)return;let i=t.parentNode,a=t.previousSibling,o=bd(n);for(let e=r.length-1;e>=0;e--){let{el:n,declarationView:s}=r[e],c=n.parentNode;n===t?(r.splice(e,1),xd.add(n),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}}))):(a&&n===a||c&&i&&c!==i&&(o===null||s===null||o===s))&&(r.splice(e,1),n.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),n.parentNode?.removeChild(n))}}function Cd(e,t,n){let r=bd(n),i=yd.get(e);i?i.some(e=>e.el===t)||i.push({el:t,declarationView:r}):yd.set(e,[{el:t,declarationView:r}])}function wd(e){let t=e[26]??={};return t.enter??=new Map}function Td(e){let t=typeof e==`function`?e():e,n=Array.isArray(t)?t:null;return typeof t==`string`&&(n=t.trim().split(/\s+/).filter(e=>e)),n}function Ed(e){return e.composedPath?e.composedPath()[0]:e.target}function Dd(e,t){let n=vd.get(t);if(n===void 0)return!0;if(t!==Ed(e))return!1;let r=e.animation;if(r){let e=od(r);if(e!==void 0&&e+fd{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Pd=[0,1,2,3],Fd=(()=>{class e{ngZone=E(Is);scheduler=E(ac);errorHandler=E(Js,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){E(Ad,{optional:!0})}execute(){let e=this.sequences.size>0;e&&Ic(Cc.AfterRenderHooksStart),this.executing=!0;for(let e of Pd)for(let t of this.sequences)if(!t.erroredOrDestroyed&&t.hooks[e])try{t.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let n=t.hooks[e];return n(t.pipelinedValue)},t.snapshot))}catch(e){t.erroredOrDestroyed=!0,this.errorHandler?.handleError(e)}this.executing=!1;for(let e of this.sequences)e.afterRun(),e.once&&(this.sequences.delete(e),e.destroy());for(let e of this.deferredRegistrations)this.sequences.add(e);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),e&&Ic(Cc.AfterRenderHooksEnd)}register(e){let{view:t}=e;t===void 0?this.executing?this.deferredRegistrations.add(e):this.addSequence(e):((t[25]??=[]).push(e),_o(t),t[2]|=8192)}addSequence(e){this.sequences.add(e),this.scheduler.notify(7)}unregister(e){this.executing&&this.sequences.has(e)?(e.erroredOrDestroyed=!0,e.pipelinedValue=void 0,e.once=!0):(this.sequences.delete(e),this.deferredRegistrations.delete(e))}maybeTrace(e,t){return t?t.run(kd.AFTER_NEXT_RENDER,e):e()}static ɵprov=di({token:e,providedIn:`root`,factory:()=>new e})}return e})(),Id=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(e,t,n,r,i,a=null){this.impl=e,this.hooks=t,this.view=n,this.once=r,this.snapshot=a,this.unregisterOnDestroy=i?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let e=this.view?.[25];e&&(this.view[25]=e.filter(e=>e!==this))}};function Ld(e,t){let n=t?.injector??E(Ss);return Md(`NgAfterNextRender`),zd(e,n,t,!0)}function Rd(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function zd(e,t,n,r){let i=t.get(Nd);i.impl??=t.get(Fd);let a=t.get(Ad,null,{optional:!0}),o=n?.manualCleanup===!0?null:t.get(ws),s=t.get(rc,null,{optional:!0}),c=new Id(i.impl,Rd(e),s?.view,r,o,a?.snapshot(null));return i.impl.register(c),c}var Bd=new vi(``,{factory:()=>{let e=E(Aa),t=new Set;return e.onDestroy(()=>t.clear()),{queue:t,isScheduled:!1,scheduler:null,injector:e}}});function Vd(e,t,n){let r=e.get(Bd);if(Array.isArray(t))for(let e of t)r.queue.add(e),n?.detachedLeaveAnimationFns?.push(e);else r.queue.add(t),n?.detachedLeaveAnimationFns?.push(t);r.scheduler&&r.scheduler(e)}function Hd(e,t){let n=e.get(Bd);if(Array.isArray(t))for(let e of t)n.queue.delete(e);else n.queue.delete(t)}function Ud(e,t){let n=e.get(Bd);if(t.detachedLeaveAnimationFns){for(let e of t.detachedLeaveAnimationFns)n.queue.delete(e);t.detachedLeaveAnimationFns=void 0}}function Wd(e){let t=e.get(Bd);t.isScheduled||=(Ld(()=>{t.isScheduled=!1;for(let e of t.queue)e();t.queue.clear()},{injector:t.injector}),!0)}function Gd(e){let t=e.get(Bd);t.scheduler=Wd,t.scheduler(e)}function Kd(e,t){for(let[n,r]of t)Vd(e,r.animateFns)}function qd(e,t,n,r){let i=e?.[26]?.enter;t!==null&&i&&i.has(n.index)&&Kd(r,i)}function Jd(e,t,n,r){try{n.get(fa)}catch{return r(!1)}let i=e?.[26];i?.enter?.has(t.index)&&Hd(n,i.enter.get(t.index).animateFns);let a=Yd(e,t,i);if(a.size===0){let n=!1;if(e){let r=[];Zd(e,t,r),n=r.length>0}if(!n)return r(!1)}e&&ud.add(e[19]),Vd(n,()=>Xd(e,t,i||void 0,a,r),i||void 0)}function Yd(e,t,n){let r=new Map,i=n?.leave;if(i&&i.has(t.index)&&r.set(t.index,i.get(t.index)),e&&i)for(let[n,a]of i){if(r.has(n))continue;let i=e[1].data[n].parent;for(;i;){if(i===t){r.set(n,a);break}i=i.parent}}return r}function Xd(e,t,n,r,i){let a=[];if(n&&n.leave)for(let[e]of r){if(!n.leave.has(e))continue;let t=n.leave.get(e);for(let e of t.animateFns){let{promise:t}=e();a.push(t)}n.detachedLeaveAnimationFns=void 0}if(e&&Zd(e,t,a),a.length>0){let t=n||e?.[26];if(t){let n=t.running;n&&a.push(n),t.running=Promise.allSettled(a),$d(e,t.running,i)}else Promise.allSettled(a).then(()=>{e&&ud.delete(e[19]),i(!0)})}else e&&ud.delete(e[19]),i(!1)}function Zd(e,t,n){if(t.type&12){let r=e[t.index];if(Ka(r))for(let e=10;e{e[26]?.running===t&&(e[26].running=void 0,ud.delete(e[19])),n(!0)})}function ef(e,t,n,r,i,a,o,s){if(i!=null){let c,l=!1;Ka(i)?c=i:Ga(i)&&(l=!0,i=i[0]);let u=to(i);e===0&&r!==null?(qd(s,r,a,n),o==null?wu(t,r,u):Cu(t,r,u,o||null,!0)):e===1&&r!==null?(qd(s,r,a,n),Cu(t,r,u,o||null,!0),Sd(a,u,s)):e===2?(s?.[26]?.leave?.has(a.index)&&Cd(a,u,s),xd.delete(u),Jd(s,a,n,e=>{if(xd.has(u)){xd.delete(u);return}Eu(t,u,l,e)})):e===3&&(xd.delete(u),Jd(s,a,n,()=>{t.destroyNode(u)})),c!=null&&wf(t,e,n,c,a,r,o)}}function tf(e,t){rf(e,t),t[0]=null,t[5]=null}function nf(e,t,n,r,i,a){r[0]=i,r[5]=t,xf(e,r,n,1,i,a)}function rf(e,t){t[10].changeDetectionScheduler?.notify(9),xf(e,t,t[11],2,null,null)}function af(e){let t=e[12];if(!t)return cf(e[1],e);for(;t;){let n=null;if(Ga(t))n=t[12];else{let e=t[10];e&&(n=e)}if(!n){for(;t&&!t[4]&&t!==e;)Ga(t)&&cf(t[1],t),t=t[3];t===null&&(t=e),Ga(t)&&cf(t[1],t),n=t&&t[4]}t=n}}function of(e,t){let n=e[9],r=n.indexOf(t);n.splice(r,1)}function sf(e,t){if(Qa(t))return;let n=t[11];n.destroyNode&&xf(e,t,n,3,null,null),af(t)}function cf(e,t){if(Qa(t))return;let n=w(null);try{t[2]&=-129,t[2]|=256,t[24]&&En(t[24]),uf(e,t),lf(e,t),t[1].type===1&&t[11].destroy();let n=t[16];if(n!==null&&Ka(t[3])){n!==t[3]&&of(n,t);let r=t[18];r!==null&&r.detachView(e)}Ul(t)}finally{w(n)}}function lf(e,t){let n=e.cleanup,r=t[7];if(n!==null)for(let e=0;e=0?r[t]():r[-t].unsubscribe(),e+=2}else{let t=r[n[e+1]];n[e].call(t)}r!==null&&(t[7]=null);let i=t[21];if(i!==null){t[21]=null;for(let e=0;e27&&Pf(e,t,27,!1),Ic(o?Cc.TemplateUpdateStart:Cc.TemplateCreateStart,i,n),n(r,i)}finally{ds(a),Ic(o?Cc.TemplateUpdateEnd:Cc.TemplateCreateEnd,i,n)}}function Rf(e,t,n){Gf(e,t,n),(n.flags&64)==64&&Kf(e,t,n)}function zf(e,t,n=ro){let r=t.localNames;if(r!==null){let i=t.index+1;for(let a=0;a{_o(e.lView)},consumerOnSignalRead(){this.lView[24]=this}};function gp(e){let t=e[24]??Object.create(_p);return t.lView=e,t}var _p={...pn,consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=bo(e.lView);for(;t&&!vp(t[1]);)t=bo(t);t&&po(t)},consumerOnSignalRead(){this.lView[24]=this}};function vp(e){return e.type!==2}function yp(e){if(e[23]===null)return;let t=!0;for(;t;){let n=!1;for(let t of e[23])if(t.dirty&&(n=!0,t.zone===null||Zone.current===t.zone?t.run():t.zone.run(()=>t.run()),e[23]===null))return;t=n&&!!(e[2]&8192)}}var bp=100;function xp(e,t=0){let n=e[10].rendererFactory;n.begin?.();try{Sp(e,t)}finally{n.end?.()}}function Sp(e,t){let n=Vo();try{Ho(!0),Op(e,t);let n=0;for(;ho(e);){if(n===bp)throw new T(103,!1);n++,Op(e,1)}}finally{Ho(n)}}function Cp(e,t,n,r){if(Qa(t))return;let i=t[2];rs(t);let a=!0,o=null,s=null;vp(e)?(s=fp(t),o=xn(s)):fn()===null?(a=!1,s=gp(t),o=xn(s)):t[24]&&=(En(t[24]),null);try{fo(t),Go(e.bindingStartIndex),n!==null&&Lf(e,t,n,2,r);let a=(i&3)==3;if(a){let n=e.preOrderCheckHooks;n!==null&&zc(t,n,null)}else{let n=e.preOrderHooks;n!==null&&Bc(t,n,0,null),Vc(t,0)}if(Tp(t),yp(t),wp(t,0),e.contentQueries!==null&&au(e,t),a){let n=e.contentCheckHooks;n!==null&&zc(t,n)}else{let n=e.contentHooks;n!==null&&Bc(t,n,1),Vc(t,1)}Ap(e,t);let o=e.components;o!==null&&kp(t,o,0);let s=e.viewQuery;if(s!==null&&ou(2,s,r),a){let n=e.viewCheckHooks;n!==null&&zc(t,n)}else{let n=e.viewHooks;n!==null&&Bc(t,n,2),Vc(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[22]){for(let e of t[22])e();t[22]=null}up(t),t[2]&=-73}catch(e){throw _o(t),e}finally{s!==null&&(Cn(s,o),a&&mp(s)),cs()}}function wp(e,t){for(let n=Kl(e);n!==null;n=ql(n))for(let e=10;e0&&(e[n-1][4]=r[4]);let a=ra(e,10+t);tf(r[1],r);let o=a[18];o!==null&&o.detachView(a[1]),r[3]=null,r[4]=null,r[2]&=-129}return r}function Lp(e,t,n,r){let i=10+r,a=n.length;r>0&&(n[i-1][4]=t),r-1&&(Ip(e,n),ra(t,n))}this._attachedToViewContainer=!1}sf(this._lView[1],this._lView)}onDestroy(e){vo(this._lView,e)}markForCheck(){jp(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[2]&=-129}reattach(){go(this._lView),this._lView[2]|=128}detectChanges(){this._lView[2]|=1024,xp(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new T(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let e=Za(this._lView),t=this._lView[16];t!==null&&!e&&of(t,this._lView),rf(this._lView[1],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new T(902,!1);this._appRef=e;let t=Za(this._lView),n=this._lView[16];n!==null&&!t&&Rp(n,this._lView),go(this._lView)}},Bp=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=Vp;constructor(e,t,n){this._declarationLView=e,this._declarationTContainer=t,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,t){return this.createEmbeddedViewImpl(e,t)}createEmbeddedViewImpl(e,t,n){return new zp(op(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:t,dehydratedView:n}))}}return e})();function Vp(){return Hp(Po(),D())}function Hp(e,t){return e.type&4?new Bp(t,e,Ml(e,t)):null}function Up(e,t,n,r,i){let a=e.data[t];if(a===null)a=Wp(e,t,n,r,i),Jo()&&(a.flags|=32);else if(a.type&64){a.type=n,a.value=r,a.attrs=i;let e=Io();a.injectorIndex=e===null?-1:e.injectorIndex}return Lo(a,!0),a}function Wp(e,t,n,r,i){let a=Fo(),o=Ro(),s=o?a:a&&a.parent,c=e.data[t]=Kp(e,s,n,t,r,i);return Gp(e,c,a,o),c}function Gp(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function Kp(e,t,n,r,i,a){let o=t?t.injectorIndex:-1,s=0;return Ao()&&(s|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:o,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:s,providerIndexes:0,value:i,namespace:gs(),attrs:a,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function qp(e){let t=e[6]??[],n=e[3][11],r=[];for(let e of t)e.data.di===void 0?Jp(e,n):r.push(e);e[6]=r}function Jp(e,t){let n=0,r=e.firstChild;if(r){let i=e.data.r;for(;nnull,Xp=()=>null;function Zp(e,t){return Yp(e,t)}function Qp(e,t,n){return Xp(e,t,n)}var $p=class{},em=class{},tm=(()=>{class e{static ɵprov=di({token:e,providedIn:`root`,factory:()=>null})}return e})();function nm(e){return e.debugInfo?.className||e.type.name||null}var rm={},im=class{injector;parentInjector;constructor(e,t){this.injector=e,this.parentInjector=t}get(e,t,n){let r=this.injector.get(e,rm,n);return r!==rm||t===rm?r:this.parentInjector.get(e,t,n)}};function am(e,t,n){return e[t]=n}function om(e,t){return e[t]}function sm(e,t,n){if(n===Yu)return!1;let r=e[t];return!Object.is(r,n)&&(e[t]=n,!0)}function cm(e,t,n,r){let i=sm(e,t,n);return sm(e,t+1,r)||i}function lm(e,t,n,r,i){let a=cm(e,t,n,r);return sm(e,t+2,i)||a}function um(e,t,n,r,i,a){let o=cm(e,t,n,r);return cm(e,t+2,i,a)||o}function dm(e,t,n){return function r(i){let a=r.__ngNativeEl__;a!==void 0&&tu(i,a),jp(Ja(e)?so(e.index,t):t,5);let o=t[8],s=fm(t,o,n,i),c=r.__ngNextListenerFn__;for(;c;)s=fm(t,o,c,i)&&s,c=c.__ngNextListenerFn__;return s}}function fm(e,t,n,r){let i=w(null);try{return Ic(Cc.OutputStart,t,n),n(r)!==!1}catch(t){return ep(e,t),!1}finally{Ic(Cc.OutputEnd,t,n),w(i)}}function pm(e,t,n,r,i,a,o,s){let c=Ya(e),l=!1,u=null;if(!r&&c&&(u=hm(t,n,a,e.index)),u!==null){let e=u.__ngLastListenerFn__||u;e.__ngNextListenerFn__=o,u.__ngLastListenerFn__=o,l=!0}else{let o=ro(e,n),c=r?r(o):o;r||(s.__ngNativeEl__=o);let l=i.listen(c,a,s);mm(a)||gm(r?t=>r(to(t[e.index])):e.index,t,n,a,s,l,!1)}return l}function mm(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function hm(e,t,n,r){let i=e.cleanup;if(i!=null)for(let e=0;er?n[r]:null}typeof a==`string`&&(e+=2)}return null}function gm(e,t,n,r,i,a,o){let s=t.firstCreatePass?So(t):null,c=xo(n),l=c.length;c.push(i,a),s&&s.push(r,e,l,(l+1)*(o?-1:1))}function _m(e,t,n,r,i,a){let o=t[n],s=t[1],c=o[s.data[n].outputs[r]].subscribe(a);gm(e.index,s,t,i,a,c,!0)}var vm=Symbol(`BINDING`),ym=new vi(``);function bm(e,t,n){let r=n?e.styles:null,i=n?e.classes:null,a=0;if(t!==null)for(let e=0;e0&&(n.directiveToIndex=new Map);for(let c=0;c0;){let n=e[--t];if(typeof n==`number`&&n<0)return n}return 0}function Pm(e,t,n){if(n){if(t.exportAs)for(let r=0;r{let[n,r,i]=e[t],a={propName:n,templateName:t,isSignal:(r&Ff.SignalBased)!==0};return i&&(a.transform=i),a})}function Hm(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function Um(e,t,n){let r=t instanceof Aa?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new im(n,r):n}function Wm(e){let t=e.get(em,null);if(t===null)throw new T(407,!1);return{rendererFactory:t,sanitizer:e.get(tm,null),changeDetectionScheduler:e.get(ac,null),ngReflect:!1,tracingService:e.get(Ad,null,{optional:!0})}}function Gm(e,t,n){let r=qm(e);return Su(t,r,r===`svg`?`svg`:r===`math`?eo:n)}function Km(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new T(905,!1)}function qm(e){return(e.selectors[0][0]||`div`).toLowerCase()}var Jm=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=Vm(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=Hm(this.componentDef.outputs),this.cachedOutputs}constructor(e,t){this.componentDef=e,this.ngModule=t,this.componentType=e.type,this.selector=qu(e.selectors),this.ngContentSelectors=e.ngContentSelectors??[],this.isBoundToModule=!!t}create(e,t,n,r,i,a,o){Ic(Cc.DynamicComponentStart);let s=w(null);try{let s=this.componentDef,c=Um(s,r||this.ngModule,e),l=Wm(c),u=l.tracingService;return u&&u.componentCreate?u.componentCreate(nm(s),()=>this.createComponentRef(l,c,t,n,i,a,o)):this.createComponentRef(l,c,t,n,i,a,o)}finally{w(s)}}createComponentRef(e,t,n,r,i,a,o){let s=this.componentDef,c=Ym(r,s,a,i),l=e.rendererFactory.createRenderer(null,s),u=r?Bf(l,r,s.encapsulation,t):Gm(s,l,o??null);Km(u);let d=t.get(ym,null),f=Xm(u,()=>t.get(Cs,null)??Zl());d&&d.addHost(f);let p=a?.some(Qm)||i?.some(e=>typeof e!=`function`&&e.bindings.some(Qm)),m=kf(null,c,null,512|jf(s),null,null,e,l,t,null,iu(u,t,!0));d&&zm&&f instanceof ShadowRoot&&vo(m,()=>{d.removeHost(f)}),m[27]=u,rs(m);let h=null;try{let e=Im(27,m,2,`#host`,()=>c.directiveRegistry,!0,0);ku(l,u,e),Gl(u,m),Rf(c,m,e),su(c,e,m),Lm(c,e),n!==void 0&&eh(e,this.ngContentSelectors,n),h=so(e.index,m),m[8]=h[8],ip(c,m,null)}catch(e){throw h!==null&&Ul(h),Ul(m),e}finally{Ic(Cc.DynamicComponentEnd),cs()}return new $m(this.componentType,m,!!p)}};function Ym(e,t,n,r){let i=e?[`ng-version`,`22.1.7`]:Ju(t.selectors[0]),a=null,o=null,s=0;if(n)for(let e of n)s+=e[vm].requiredVars,e.create&&(e.targetIdx=0,(a??=[]).push(e)),e.update&&(e.targetIdx=0,(o??=[]).push(e));if(r)for(let e=0;e{if(n&1&&e)for(let t of e)t.create();if(n&2&&t)for(let e of t)e.update()}}function Qm(e){let t=e[vm].kind;return t===`input`||t===`twoWay`}var $m=class extends $p{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(e,t,n){super(),this._rootLView=t,this._hasInputBindings=n,this._tNode=io(t[1],27),this.location=Ml(this._tNode,t),this.instance=so(this._tNode.index,t)[8],this.hostView=this.changeDetectorRef=new zp(t,void 0),this.componentType=e}setInput(e,t){this._hasInputBindings;let n=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(e)&&Object.is(this.previousInputValues.get(e),t))return;let r=this._rootLView;tp(n,r[1],r,e,t),this.previousInputValues.set(e,t),jp(so(n.index,r),1)}get injector(){return new El(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(e){this.hostView.onDestroy(e)}};function eh(e,t,n){let r=e.projection=[];for(let e=0;e{class e{static __NG_ELEMENT_ID__=nh}return e})();function nh(){return oh(Po(),D())}var rh=class e extends th{_lContainer;_hostTNode;_hostLView;constructor(e,t,n){super(),this._lContainer=e,this._hostTNode=t,this._hostLView=n}get element(){return Ml(this._hostTNode,this._hostLView)}get injector(){return new El(this._hostTNode,this._hostLView)}get parentInjector(){let e=ml(this._hostTNode,this._hostLView);if(el(e)){let t=rl(e,this._hostLView),n=tl(e),r=t[1].data[n+8];return new El(r,t)}return new El(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let t=ih(this._lContainer);return t!==null&&t[e]||null}get length(){return this._lContainer.length-10}createEmbeddedView(e,t,n){let r,i;typeof n==`number`?r=n:n!=null&&(r=n.index,i=n.injector);let a=Zp(this._lContainer,e.ssrId),o=e.createEmbeddedViewImpl(t||{},i,a);return this.insertImpl(o,r,sp(this._hostTNode,a)),o}createComponent(e,t,n,r,i,a,o){let s,c=t||{};s=c.index,n=c.injector,r=c.projectableNodes,i=c.environmentInjector||c.ngModuleRef,a=c.directives,o=c.bindings;let l=new Jm(Ei(e)),u=n||this.parentInjector;if(!i&&l.ngModule==null){let e=this.parentInjector.get(Aa,null);e&&(i=e)}let d=Ei(l.componentType??{}),f=Zp(this._lContainer,d?.id??null),p=f?.firstChild??null,m=l.create(u,r,p,i,a,o,this._getHostElementNamespace());return this.insertImpl(m.hostView,s,sp(this._hostTNode,f)),m}_getHostElementNamespace(){if(this._hostTNode.type&2){let e=this._hostTNode.parent??this._hostLView[5];return e!==null&&e.type&2&&typeof e.value==`string`&&e.value.toLowerCase()===`foreignobject`?null:e?.namespace??null}return this._hostTNode.namespace}insert(e,t){return this.insertImpl(e,t,!0)}insertImpl(t,n,r){let i=t._lView;if(lo(i)){let n=this.indexOf(t);if(n!==-1)this.detach(n);else{let n=i[3],r=new e(n,n[5],n[3]);r.detach(r.indexOf(t))}}let a=this._adjustIndex(n),o=this._lContainer;return Pp(o,i,a,r),t.attachToViewContainerRef(),na(ah(o),a,t),t}move(e,t){return this.insert(e,t)}indexOf(e){let t=ih(this._lContainer);return t===null?-1:t.indexOf(e)}remove(e){let t=this._adjustIndex(e,-1),n=Ip(this._lContainer,t);n&&(ra(ah(this._lContainer),t),sf(n[1],n))}detach(e){let t=this._adjustIndex(e,-1),n=Ip(this._lContainer,t);return n&&ra(ah(this._lContainer),t)!=null?new zp(n):null}_adjustIndex(e,t=0){return e??this.length+t}};function ih(e){return e[8]}function ah(e){return e[8]||=[]}function oh(e,t){let n,r=t[e.index];return Ka(r)?n=r:(n=Mp(r,t,null,e),t[e.index]=n,Nf(t,n)),ch(n,t,e,r),new rh(n,e,t)}function sh(e,t){let n=e[11],r=n.createComment(``),i=ro(t,e);return Cu(n,n.parentNode(i),r,n.nextSibling(i),!1),r}var ch=dh,lh=()=>!1;function uh(e,t,n){return lh(e,t,n)}function dh(e,t,n,r){if(e[7])return;let i;i=n.type&8?to(r):sh(t,n),e[7]=i}var fh=class e{queryList;matches=null;constructor(e){this.queryList=e}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},ph=class e{queries;constructor(e=[]){this.queries=e}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries===null?n.length:t.contentQueries[0],i=[];for(let e=0;e0)r.push(o[e/2]);else{let i=a[e+1],o=t[-n];for(let e=10;ee.trim())}function Dh(e,t,n){e.queries===null&&(e.queries=new hh),e.queries.track(new gh(t,n))}function Oh(e,t){return e.queries.getByIndex(t)}function kh(e,t){let n=e[1],r=Oh(n,t);return r.crossesNgTemplate?Sh(n,e,t,[]):xh(n,e,r,t)}function Ah(e,t,n){let r,i=Mn(()=>{r._dirtyCounter();let n=Ph(r,e);if(t&&n===void 0)throw new T(-951,!1);return n});return r=i[dn],r._dirtyCounter=A(0),r._flatValue=void 0,i}function jh(e){return Ah(!0,!1,e)}function Mh(e){return Ah(!0,!0,e)}function Nh(e,t){let n=e[dn];n._lView=D(),n._queryIndex=t,n._queryList=Ch(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(e=>e+1))}function Ph(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[2]&4)return t?void 0:ua;let i=Ch(n,r),a=kh(n,r);return i.reset(a,Pl),t?i.first:i._changesDetected||e._flatValue===void 0?e._flatValue=i.toArray():e._flatValue}function Fh(e){return!!e&&typeof e.then==`function`}function Ih(e){return!!e&&typeof e.subscribe==`function`}var Lh=class{},Rh=class extends Lh{injector;instance=null;constructor(e){super();let t=new ja([...e.providers,{provide:Lh,useValue:this}],e.parent||ka(),e.debugName,new Set([`environment`]));this.injector=t,e.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function zh(e,t,n=null){return new Rh({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var Bh=(()=>{class e{_injector;cachedInjectors=new Map;constructor(e){this._injector=e}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){let t=ga(!1,e.type),n=t.length>0?zh([t],this._injector,``):null;this.cachedInjectors.set(e,n)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(let e of this.cachedInjectors.values())e!==null&&e.destroy()}finally{this.cachedInjectors.clear()}}static ɵprov=di({token:e,providedIn:`environment`,factory:()=>new e(qi(Aa))})}return e})();function Vh(e){return Sc(()=>{let t=qh(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==Rl.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?e=>e.get(Bh).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||cu.Emulated,styles:e.styles||ua,_:null,schemas:e.schemas||null,tView:null,id:``};t.standalone&&Md(`NgStandalone`),Jh(n);let r=e.dependencies;return n.directiveDefs=Yh(r,Hh),n.pipeDefs=Yh(r,Oi),n.id=Xh(n),n})}function Hh(e){return Ei(e)||Di(e)}function Uh(e,t){if(e==null)return la;let n={};for(let r in e)if(Object.hasOwn(e,r)){let i=e[r],a,o,s,c;Array.isArray(i)?(s=i[0],a=i[1],o=i[2]??a,c=i[3]||null):(a=i,o=i,s=Ff.None,c=null),n[a]=[r,s,c],t[a]=o}return n}function Wh(e){if(e==null)return la;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function Gh(e){return Sc(()=>{let t=qh(e);return Jh(t),t})}function Kh(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function qh(e){let t={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||la,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||ua,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:Uh(e.inputs,t),outputs:Wh(e.outputs),debugInfo:null}}function Jh(e){e.features?.forEach(t=>t(e))}function Yh(e,t){return e?()=>{let n=typeof e==`function`?e():e,r=[];for(let e of n){let n=t(e);n!==null&&r.push(n)}return r}:null}function Xh(e){let t=0,n=typeof e.consts==`function`?``:e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let e of r.join(`|`))t=Math.imul(31,t)+e.charCodeAt(0)<<0;return t+=2147483648,`c`+t}var Zh=new vi(``),Qh=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((e,t)=>{this.resolve=e,this.reject=t});appInits=E(Zh,{optional:!0})??[];injector=E(Ss);constructor(){}runInitializers(){if(this.initialized)return;let e=[];for(let t of this.appInits){let n=Ha(this.injector,t);if(Fh(n))e.push(n);else if(Ih(n)){let t=new Promise((e,t)=>{n.subscribe({complete:e,error:t})});e.push(t)}}let t=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{t()}).catch(e=>{this.reject(e)}),e.length===0&&t(),this.initialized=!0}static ɵfac=function(t){return new(t||e)};static ɵprov=Al({token:e,factory:e.ɵfac})}return e})();function $h(e,t,n,r,i,a,o,s){if(n.firstCreatePass){e.mergedAttrs=Qc(e.mergedAttrs,e.attrs);let t=e.tView=Ef(2,e,i,a,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,n.consts,null);n.queries!==null&&(n.queries.template(n,e),t.queries=n.queries.embeddedTView(e))}s&&(e.flags|=s),Lo(e,!1);let c=rg(n,t,e,r);vs()&&gf(n,t,c,e),Gl(c,t);let l=Mp(c,t,c,e);t[r+27]=l,Nf(t,l),uh(l,e,t)}function eg(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;return t.firstCreatePass?(f=Up(t,d,4,o||null,s||null),ko()&&Sm(t,e,f,uo(t.consts,l),Jf),Rc(t,f)):f=t.data[d],$h(f,e,t,n,r,i,a,c),Ya(f)&&Rf(t,e,f),l!=null&&zf(e,f,u),f}function tg(e,t,n,r,i,a,o,s,c,l,u){let d=n+27,f;if(t.firstCreatePass){if(f=Up(t,d,4,o||null,s||null),l!=null){let e=uo(t.consts,l);f.localNames=[];for(let t=0;t{throw new T(600,``)})}var cg=10,lg=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=E(Ys);afterRenderManager=E(Nd);zonelessEnabled=E(oc);rootEffectScheduler=E(cc);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new Zr;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=E(Os);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(ei(e=>!e))}constructor(){E(Ad,{optional:!0})}whenStable(){let e;return new Promise(t=>{e=this.isStable.subscribe({next:e=>{e&&t()}})}).finally(()=>{e.unsubscribe()})}_injector=E(Aa);_rendererFactory=null;get injector(){return this._injector}bootstrap(e,t){return this.bootstrapImpl(e,t)}bootstrapImpl(e,t,n=Ss.NULL){return this._injector.get(Is).run(()=>{if(Ic(Cc.BootstrapComponentStart),!this._injector.get(Qh).done)throw new T(405,``);let r=Ei(e),i=this._injector.get(Lh),a=new Jm(r,i);this.componentTypes.push(e);let{hostElement:o,directives:s,bindings:c}=ug(t),l=o||a.selector,u=a.create(n,[],l,i.injector,s,c),d=u.location.nativeElement,f=u.injector.get(ag,null);return f?.registerApplication(d),u.onDestroy(()=>{this.detachView(u.hostView),dg(this.components,u),f?.unregisterApplication(d)}),this._loadComponent(u),Ic(Cc.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){Ic(Cc.ChangeDetectionStart),this.tracingSnapshot===null?this.tickImpl():this.tracingSnapshot.run(kd.CHANGE_DETECTION,this.tickImpl)}tickImpl=()=>{if(this._runningTick)throw Ic(Cc.ChangeDetectionEnd),new T(101,!1);let e=w(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,w(e),this.afterTick.next(),Ic(Cc.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(em,null,{optional:!0}));let e=0;for(;this.dirtyFlags!==0&&e++ho(e))){this.dirtyFlags|=2;return}this.dirtyFlags&=-8}attachView(e){let t=e;this._views.push(t),t.attachToAppRef(this)}detachView(e){let t=e;dg(this._views,t),t.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView);try{this.tick()}catch(e){this.internalErrorHandler(e)}this.components.push(e),this._injector.get(og,[]).forEach(t=>t(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>dg(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new T(406,!1);let e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}static ɵfac=function(t){return new(t||e)};static ɵprov=Al({token:e,factory:e.ɵfac})}return e})();function ug(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function dg(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function M(e,t,n,r){let i=D();return sm(i,Ko(),t)&&(No(),Yf(fs(),i,e,t,n,r)),M}function fg(e){if(Md(`NgAnimateEnter`),!pd)return fg;let t=D();if(md(t))return fg;let n=Po(),r=t[9].get(Is);return Od(wd(t),n,()=>pg(t,n,e,r)),Gd(t[9]),Kd(t[9],wd(t)),fg}function pg(e,t,n,r){let i=ro(t,e),a=e[11],o=Td(n),s=[],c=!1,l=e=>{if(Ed(e)!==i)return;let t=e instanceof AnimationEvent?`animationend`:`transitionend`;r.runOutsideAngular(()=>{a.listen(i,t,u)})},u=e=>{Ed(e)===i&&(Dd(e,i)&&(c=!0),mg(e,i,a))};if(o&&o.length>0){r.runOutsideAngular(()=>{s.push(a.listen(i,`animationstart`,l)),s.push(a.listen(i,`transitionstart`,l))}),hd(i,o,s);for(let e of o)a.addClass(i,e);r.runOutsideAngular(()=>{requestAnimationFrame(()=>{if(!c&&(cd(i,vd,pd),!vd.has(i))){for(let e of o)a.removeClass(i,e);gd(i)}})})}}function mg(e,t,n){let r=_d.get(t);if(Ed(e)===t&&r&&Dd(e,t)){e.stopPropagation();for(let e of r.classList)n.removeClass(t,e);gd(t)}}var hg=class{destroy(e){}updateValue(e,t){}swap(e,t){let n=Math.min(e,t),r=Math.max(e,t),i=this.detach(r);if(r-n>1){let e=this.detach(n);this.attach(n,i),this.attach(r,e)}else this.attach(n,i)}move(e,t){this.attach(t,this.detach(e))}};function gg(e,t,n,r,i){return e===n&&Object.is(t,r)?1:Object.is(i(e,t),i(n,r))?-1:0}function _g(e,t,n,r){let i,a,o=0,s=e.length-1;if(Array.isArray(t)){w(r);let c=t.length-1;for(w(null);o<=s&&o<=c;){let r=e.at(o),l=t[o],u=gg(o,r,o,l,n);if(u!==0){u<0&&e.updateValue(o,l),o++;continue}let d=e.at(s),f=t[c],p=gg(s,d,c,f,n);if(p!==0){p<0&&e.updateValue(s,f),s--,c--;continue}let m=n(o,r),h=n(s,d),g=n(o,l);if(Object.is(g,h)){let t=n(c,f);Object.is(t,m)?(e.swap(o,s),e.updateValue(s,f),c--,s--):e.move(s,o),e.updateValue(o,l),o++;continue}if(i??=new xg,a??=bg(e,o,s,n),vg(e,i,o,g))e.updateValue(o,l),o++,s++;else if(a.has(g))i.set(m,e.detach(o)),s--;else{let n=e.create(o,t[o]);e.attach(o,n),o++,s++}}for(;o<=c;)yg(e,i,n,o,t[o]),o++}else if(t!=null){w(r);let c=t[Symbol.iterator]();w(null);let l=c.next();for(;!l.done&&o<=s;){let t=e.at(o),r=l.value,u=gg(o,t,o,r,n);if(u!==0)u<0&&e.updateValue(o,r),o++,l=c.next();else{i??=new xg,a??=bg(e,o,s,n);let u=n(o,r);if(vg(e,i,o,u))e.updateValue(o,r),o++,s++,l=c.next();else if(!a.has(u))e.attach(o,e.create(o,r)),o++,s++,l=c.next();else{let r=n(o,t);i.set(r,e.detach(o)),s--}}}for(;!l.done;)yg(e,i,n,e.length,l.value),l=c.next()}for(;o<=s;)e.destroy(e.detach(s--));i?.forEach(t=>{e.destroy(t)})}function vg(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function yg(e,t,n,r,i){if(vg(e,t,r,n(r,i)))e.updateValue(r,i);else{let t=e.create(r,i);e.attach(r,t)}}function bg(e,t,n,r){let i=new Set;for(let a=t;a<=n;a++)i.add(r(a,e.at(a)));return i}var xg=class{kvMap=new Map;_vMap=void 0;has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;let t=this.kvMap.get(e);return this._vMap!==void 0&&this._vMap.has(t)?(this.kvMap.set(e,this._vMap.get(t)),this._vMap.delete(t)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,t){if(this.kvMap.has(e)){let n=this.kvMap.get(e);this._vMap===void 0&&(this._vMap=new Map);let r=this._vMap;for(;r.has(n);)n=r.get(n);r.set(n,t)}else this.kvMap.set(e,t)}forEach(e){for(let[t,n]of this.kvMap)if(e(n,t),this._vMap!==void 0){let r=this._vMap;for(;r.has(n);)n=r.get(n),e(n,t)}}};function N(e,t,n,r,i,a,o,s){Md(`NgControlFlow`);let c=D(),l=No();return tg(c,l,e,t,n,r,i,uo(l.consts,a),256,o,s),Sg}function Sg(e,t,n,r,i,a,o,s){Md(`NgControlFlow`);let c=D(),l=No();return tg(c,l,e,t,n,r,i,uo(l.consts,a),512,o,s),Sg}function P(e,t){Md(`NgControlFlow`);let n=D(),r=Ko(),i=n[r]===Yu?-1:n[r],a=i===-1?void 0:Og(n,27+i);if(sm(n,r,e)){let r=w(null);try{if(a!==void 0&&Fp(a,0),e!==-1){let r=27+e,i=Og(n,r),a=Ng(n[1],r),o=Qp(i,a,n);Pp(i,op(n,a,t,{dehydratedView:o}),0,sp(a,o))}}finally{w(r)}}else if(a!==void 0){let e=Np(a,0);e!==void 0&&(e[8]=t)}}var Cg=class{lContainer;$implicit;$index;constructor(e,t,n){this.lContainer=e,this.$implicit=t,this.$index=n}get $count(){return this.lContainer.length-10}};function wg(e){return e}function Tg(e,t){return t}var Eg=class{hasEmptyBlock;trackByFn;liveCollection;constructor(e,t,n){this.hasEmptyBlock=e,this.trackByFn=t,this.liveCollection=n}};function F(e,t,n,r,i,a,o,s,c,l,u,d,f){Md(`NgControlFlow`);let p=D(),m=No(),h=c!==void 0,g=D(),_=new Eg(h,s?o.bind(g[15][8]):o);g[27+e]=_,tg(p,m,e+1,t,n,r,i,uo(m.consts,a),256),h&&tg(p,m,e+2,c,l,u,d,uo(m.consts,f),512)}var Dg=class extends hg{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(e,t,n){super(),this.lContainer=e,this.hostLView=t,this.templateTNode=n}get length(){return this.lContainer.length-10}at(e){return this.getLView(e)[8].$implicit}attach(e,t){let n=t[6];this.needsIndexUpdate||=e!==this.length,Pp(this.lContainer,t,e,sp(this.templateTNode,n)),kg(this.lContainer,e)}detach(e){return this.needsIndexUpdate||=e!==this.length-1,Ag(this.lContainer,e),jg(this.lContainer,e)}create(e,t){let n=Zp(this.lContainer,this.templateTNode.tView.ssrId);return op(this.hostLView,this.templateTNode,new Cg(this.lContainer,t,e),{dehydratedView:n})}destroy(e){sf(e[1],e)}updateValue(e,t){this.getLView(e)[8].$implicit=t}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e0){let e=n[9];Ud(e,r),ud.delete(n[19]),r.detachedLeaveAnimationFns=void 0}}function Ag(e,t){if(e.length<=10)return;let n=e[10+t],r=n?n[26]:void 0;r&&r.leave&&r.leave.size>0&&(r.detachedLeaveAnimationFns=[])}function jg(e,t){return Ip(e,t)}function Mg(e,t){return Np(e,t)}function Ng(e,t){return io(e,t)}function L(e,t,n){let r=D();return sm(r,Ko(),t)&&(No(),Hf(fs(),r,e,t,r[11],n)),L}function Pg(e,t,n,r,i){tp(t,e,n,i?`class`:`style`,r)}function R(e,t,n,r){let i=D(),a=i[1],o=e+27,s=a.firstCreatePass?Im(o,i,2,t,Jf,ko(),n,r):a.data[o];if(Ja(s)){let n=i[10].tracingService;if(n&&n.componentCreate){let o=a.data[s.directiveStart+s.componentOffset];return n.componentCreate(nm(o),()=>(Fg(e,t,i,s,r),R))}}return Fg(e,t,i,s,r),R}function Fg(e,t,n,r,i){if(Qf(r,n,e,t,Ig),Ya(r)){let e=n[1];Rf(e,n,r),su(e,r,n)}i!=null&&zf(n,r)}function z(){let e=No(),t=$f(Po());return e.firstCreatePass&&Lm(e,t),jo(t)&&Mo(),Oo(),t.classesWithoutHost!=null&&qc(t)&&Pg(e,t,D(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&Jc(t)&&Pg(e,t,D(),t.stylesWithoutHost,!1),z}function B(e,t,n,r){return R(e,t,n,r),z(),B}function V(e,t,n,r){let i=D(),a=i[1],o=e+27,s=a.firstCreatePass?Rm(o,a,2,t,n,r):a.data[o];return Qf(s,i,e,t,Ig),r!=null&&zf(i,s),V}function H(){return jo($f(Po()))&&Mo(),Oo(),H}function U(e,t,n,r){return V(e,t,n,r),H(),U}var Ig=(e,t,n,r,i)=>(ys(!0),Su(t[11],r,gs()));function Lg(e,t,n){let r=D(),i=r[1],a=e+27,o=i.firstCreatePass?Im(a,r,8,`ng-container`,Jf,ko(),t,n):i.data[a];if(Qf(o,r,e,`ng-container`,Bg),Ya(o)){let e=r[1];Rf(e,r,o),su(e,o,r)}return n!=null&&zf(r,o),Lg}function Rg(){let e=No(),t=$f(Po());return e.firstCreatePass&&Lm(e,t),Rg}function zg(e,t,n){return Lg(e,t,n),Rg(),zg}var Bg=(e,t,n,r,i)=>(ys(!0),xu(t[11],``));function W(){return D()}function Vg(e,t,n){let r=D();return sm(r,Ko(),t)&&(No(),Uf(fs(),r,e,t,r[11],n)),Vg}var Hg=void 0;function Ug(e){let t=Math.floor(Math.abs(e)),n=e.toString().replace(/^[^.]*\.?/,``).length;return t===1&&n===0?1:5}var Wg=[`en`,[[`a`,`p`],[`AM`,`PM`]],[[`AM`,`PM`]],[[`S`,`M`,`T`,`W`,`T`,`F`,`S`],[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`]],Hg,[[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]],Hg,[[`B`,`A`],[`BC`,`AD`],[`Before Christ`,`Anno Domini`]],0,[6,0],[`M/d/yy`,`MMM d, y`,`MMMM d, y`,`EEEE, MMMM d, y`],[`h:mm a`,`h:mm:ss a`,`h:mm:ss a z`,`h:mm:ss a zzzz`],[`{1}, {0}`,Hg,Hg,Hg],[`.`,`,`,`;`,`%`,`+`,`-`,`E`,`×`,`‰`,`∞`,`NaN`,`:`],[`#,##0.###`,`#,##0%`,`¤#,##0.00`,`#E0`],`USD`,`$`,`US Dollar`,{},`ltr`,Ug],Gg=Object.create(null);function Kg(e){let t=Yg(e),n=qg(t);if(n)return n;let r=t.split(`-`)[0];if(n=qg(r),n)return n;if(r===`en`)return Wg;throw new T(701,!1)}function qg(e){if(!(e in Gg)){let t=Hi.ng&&Hi.ng.common&&Hi.ng.common.locales&&Hi.ng.common.locales[e];return t!==void 0&&(Gg[e]=t),t}return Gg[e]}var Jg={LocaleId:0,DayPeriodsFormat:1,DayPeriodsStandalone:2,DaysFormat:3,DaysStandalone:4,MonthsFormat:5,MonthsStandalone:6,Eras:7,FirstDayOfWeek:8,WeekendRange:9,DateFormat:10,TimeFormat:11,DateTimeFormat:12,NumberSymbols:13,NumberFormats:14,CurrencyCode:15,CurrencySymbol:16,CurrencyName:17,Currencies:18,Directionality:19,PluralCase:20,ExtraData:21};function Yg(e){return e.toLowerCase().replace(/_/g,`-`)}var Xg=`en-US`;function Zg(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function G(e,t,n){let r=D(),i=No(),a=Po();return $g(i,r,r[11],a,e,t,n),G}function Qg(e,t,n){let r=D(),i=No(),a=Po();return(a.type&3||n)&&pm(a,i,r,n,r[11],e,t,dm(a,r,t)),Qg}function $g(e,t,n,r,i,a,o){let s=!0,c=null;if((r.type&3||o)&&(c??=dm(r,t,a),pm(r,e,t,o,n,i,a,c)&&(s=!1)),s){let e=r.outputs?.[i],n=r.hostDirectiveOutputs?.[i];if(n&&n.length)for(let e=0;e>17&32767}function a_(e){return(e&2)==2}function o_(e,t){return e&131071|t<<17}function s_(e){return e|2}function c_(e){return(e&131068)>>2}function l_(e,t){return e&-131069|t<<2}function u_(e){return(e&1)==1}function d_(e){return e|1}function f_(e,t,n,r,i,a){let o=a?t.classBindings:t.styleBindings,s=i_(o),c=c_(o);e[r]=n;let l=!1,u;if(Array.isArray(n)){let e=n;u=e[1],(u===null||sa(e,u)>0)&&(l=!0)}else u=n;if(i){if(c!==0){let t=i_(e[s+1]);e[r+1]=r_(t,s),t!==0&&(e[t+1]=l_(e[t+1],r)),e[s+1]=o_(e[s+1],r)}else e[r+1]=r_(s,0),s!==0&&(e[s+1]=l_(e[s+1],r)),s=r}else e[r+1]=r_(c,0),s===0?s=r:e[c+1]=l_(e[c+1],r),c=r;l&&(e[r+1]=s_(e[r+1])),m_(e,u,r,!0),m_(e,u,r,!1),p_(t,u,e,r,a),o=r_(s,c),a?t.classBindings=o:t.styleBindings=o}function p_(e,t,n,r,i){let a=i?e.residualClasses:e.residualStyles;a!=null&&typeof t==`string`&&sa(a,t)>=0&&(n[r+1]=d_(n[r+1]))}function m_(e,t,n,r){let i=e[n+1],a=t===null,o=r?i_(i):c_(i),s=!1;for(;o!==0&&(s===!1||a);){let n=e[o],i=e[o+1];h_(n,t)&&(s=!0,e[o+1]=r?d_(i):s_(i)),o=r?i_(i):c_(i)}s&&(e[n+1]=r?s_(i):d_(i))}function h_(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?sa(e,t)>=0:!1}var g_={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function __(e){return e.substring(g_.key,g_.keyEnd)}function v_(e){return b_(e),y_(e,x_(e,0,g_.textEnd))}function y_(e,t){let n=g_.textEnd;return n===t?-1:(t=g_.keyEnd=S_(e,g_.key=t,n),x_(e,t,n))}function b_(e){g_.key=0,g_.keyEnd=0,g_.value=0,g_.valueEnd=0,g_.textEnd=e.length}function x_(e,t,n){for(;t32;)t++;return t}function C_(e,t,n){return E_(e,t,n,!1),C_}function q(e,t){return E_(e,t,null,!0),q}function w_(e){D_(L_,T_,e,!0)}function T_(e,t){for(let n=v_(t);n>=0;n=y_(t,n))aa(e,__(t),!0)}function E_(e,t,n,r){let i=D(),a=No(),o=qo(2);if(a.firstUpdatePass&&k_(a,e,o,r),t!==Yu&&sm(i,o,t)){let s=a.data[us()];z_(a,s,i,i[11],e,i[o+1]=H_(t,n),r,o)}}function D_(e,t,n,r){let i=No(),a=qo(2);i.firstUpdatePass&&k_(i,null,a,r);let o=D();if(n!==Yu&&sm(o,a,n)){let s=i.data[us()];if(U_(s,r)&&!O_(i,a)){let e=r?s.classesWithoutHost:s.stylesWithoutHost;e!==null&&(n=oi(e,n||``)),Pg(i,s,o,n,r)}else R_(i,s,o,o[11],o[a+1],o[a+1]=I_(e,t,n),r,a)}}function O_(e,t){return t>=e.expandoStartIndex}function k_(e,t,n,r){let i=e.data;if(i[n+1]===null){let a=i[us()],o=O_(e,n);U_(a,r)&&t===null&&!o&&(t=!1),t=A_(i,a,t,r),f_(i,a,t,n,o,r)}}function A_(e,t,n,r){let i=Qo(e),a=r?t.residualClasses:t.residualStyles;if(i===null)(r?t.classBindings:t.styleBindings)===0&&(n=P_(null,e,t,n,r),n=F_(n,t.attrs,r),a=null);else{let o=t.directiveStylingLast;if(o===-1||e[o]!==i){if(n=P_(i,e,t,n,r),a===null){let n=j_(e,t,r);n!==void 0&&Array.isArray(n)&&(n=P_(null,e,t,n[1],r),n=F_(n,t.attrs,r),M_(e,t,r,n))}else a=N_(e,t,r)}}return a!==void 0&&(r?t.residualClasses=a:t.residualStyles=a),n}function j_(e,t,n){let r=n?t.classBindings:t.styleBindings;if(c_(r)!==0)return e[i_(r)]}function M_(e,t,n,r){let i=n?t.classBindings:t.styleBindings;e[i_(i)]=r}function N_(e,t,n){let r,i=t.directiveEnd;for(let a=1+t.directiveStylingLast;a0;){let t=e[i],a=Array.isArray(t),c=a?t[1]:t,l=c===null,u=n[i+1];u===Yu&&(u=l?ua:void 0);let d=l?oa(u,r):c===r?u:void 0;if(a&&!V_(d)&&(d=oa(t,r)),V_(d)&&(s=d,o))return s;let f=e[i+1];i=o?i_(f):c_(f)}if(t!==null){let e=a?t.residualClasses:t.residualStyles;e!=null&&(s=oa(e,r))}return s}function V_(e){return e!==void 0}function H_(e,t){return e==null||e===``||(typeof t==`string`?e=uu(e)+t:typeof e==`object`&&(e=ai(uu(e)))),e}function U_(e,t){return!!(e.flags&(t?8:16))}function J(e,t=``){let n=D(),r=No(),i=e+27,a=r.firstCreatePass?Up(r,i,1,t,null):r.data[i],o=W_(r,n,a,t);n[i]=o,vs()&&gf(r,n,o,a),Lo(a,!1)}var W_=(e,t,n,r)=>(ys(!0),yu(t[11],r));function G_(e,t,n,r=``){return sm(e,Ko(),n)?t+Ai(n)+r:Yu}function K_(e,t,n,r,i,a=``){let o=cm(e,Wo(),n,i);return qo(2),o?t+Ai(n)+r+Ai(i)+a:Yu}function q_(e,t,n,r,i,a,o,s=``){let c=lm(e,Wo(),n,i,o);return qo(3),c?t+Ai(n)+r+Ai(i)+a+Ai(o)+s:Yu}function J_(e,t,n,r,i,a,o,s,c,l=``){let u=um(e,Wo(),n,i,o,c);return qo(4),u?t+Ai(n)+r+Ai(i)+a+Ai(o)+s+Ai(c)+l:Yu}function Y(e){return X(``,e),Y}function X(e,t,n){let r=D(),i=G_(r,e,t,n);return i!==Yu&&Z_(r,us(),i),X}function Z(e,t,n,r,i){let a=D(),o=K_(a,e,t,n,r,i);return o!==Yu&&Z_(a,us(),o),Z}function Y_(e,t,n,r,i,a,o){let s=D(),c=q_(s,e,t,n,r,i,a,o);return c!==Yu&&Z_(s,us(),c),Y_}function X_(e,t,n,r,i,a,o,s,c){let l=D(),u=J_(l,e,t,n,r,i,a,o,s,c);return u!==Yu&&Z_(l,us(),u),X_}function Z_(e,t,n){let r=no(t,e);bu(e[11],r,n)}function Q_(e,t,n){yc(t)&&(t=t());let r=D();return sm(r,Ko(),t)&&(No(),Hf(fs(),r,e,t,r[11],n)),Q_}function $_(e,t){let n=yc(e);return n&&e.set(t),n}function ev(e,t){let n=D(),r=No(),i=Po();return $g(r,n,n[11],i,e,t),ev}var tv={};function nv(e){Md(`NgLet`);let t=No(),n=D(),r=e+27;return Lo(Up(t,r,128,null,null),!1),oo(t,n,r,tv),nv}function rv(e){return oo(No(),D(),us(),e),e}function iv(e){let t=ao(Bo(),27+e);if(t===tv)throw new T(314,!1);return t}function av(e,t,n=``){return G_(D(),e,t,n)}function ov(e,t){let n=Uo()+e,r=D();return r[n]===Yu?am(r,n,t()):om(r,n)}function sv(e,t,n){return lv(D(),Uo(),e,t,n)}function cv(e,t){let n=e[t];return n===Yu?void 0:n}function lv(e,t,n,r,i,a){let o=t+n;return sm(e,o,i)?am(e,o+1,a?r.call(a,i):r(i)):cv(e,o+1)}function uv(e,t,n,r,i,a,o){let s=t+n;return cm(e,s,i,a)?am(e,s+2,o?r.call(o,i,a):r(i,a)):cv(e,s+2)}function dv(e,t){let n=No(),r,i=e+27;n.firstCreatePass?(r=fv(t,n.pipeRegistry),n.data[i]=r,r.onDestroy&&(n.destroyHooks??=[]).push(i,r.onDestroy)):r=n.data[i];let a=r.factory||(r.factory=Qi(r.type,!0)),o=Bi(xm);try{let e=al(!1),t=a();return al(e),oo(n,D(),i,t),t}finally{Bi(o)}}function fv(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function pv(e,t,n){let r=e+27,i=D(),a=ao(i,r);return hv(i,r)?lv(i,Uo(),t,a.transform,n,a):a.transform(n)}function mv(e,t,n,r){let i=e+27,a=D(),o=ao(a,i);return hv(a,i)?uv(a,Uo(),t,o.transform,n,r,o):o.transform(n,r)}function hv(e,t){return e[1].data[t].pure}function gv(e,t){return Hp(e,t)}var _v=(()=>{class e{applicationErrorHandler=E(Ys);appRef=E(lg);taskService=E(Os);ngZone=E(Is);zonelessEnabled=E(oc);tracing=E(Ad,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new hr;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Ps):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(E(sc,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let e=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(e);return}this.switchToMicrotaskScheduler(),this.taskService.remove(e)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let e=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(e)})})}notify(e){if(!this.zonelessEnabled&&e===5)return;switch(e){case 0:case 2:this.appRef.dirtyFlags|=2;break;case 3:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 6:this.appRef.dirtyFlags|=2;break;case 12:this.appRef.dirtyFlags|=16;break;case 13:this.appRef.dirtyFlags|=2;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let t=this.useMicrotaskScheduler?Ms:js;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>t(()=>this.tick())):this.ngZone.runOutsideAngular(()=>t(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(`isAngularZone_ID`+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let e=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(e){this.applicationErrorHandler(e)}finally{this.taskService.remove(e),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let e=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(e)}}static ɵfac=function(t){return new(t||e)};static ɵprov=Al({token:e,factory:e.ɵfac})}return e})();function vv(){return[{provide:ac,useExisting:_v},{provide:Is,useClass:Ws},{provide:oc,useValue:!0}]}function yv(){return typeof $localize<`u`&&$localize.locale||`en-US`}var bv=new vi(``,{factory:()=>E(bv,{optional:!0,skipSelf:!0})||yv()}),xv=class{destroyed=!1;listeners=null;errorHandler=E(Js,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=E(ws);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(e){if(this.destroyed)throw new T(953,!1);return(this.listeners??=[]).push(e),{unsubscribe:()=>{let t=this.listeners?this.listeners.indexOf(e):-1;t>-1&&(this.isEmitting?(this.hasNullListeners=!0,this.listeners[t]=null):this.listeners.splice(t,1))}}}emit(e){if(this.destroyed){console.warn(ri(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let t=w(null);try{for(let t of this.listeners)try{t!==null&&t(e)}catch(e){this.errorHandler?.handleError(e)}}finally{this.hasNullListeners&&(this.hasNullListeners=!1,this.listeners&&Sv(this.listeners)),w(t),this.isEmitting=!1}}};function Sv(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function Q(e,t){return Mn(e,t?.equal)}function Cv(e){return ar(e)}(class e extends Error{_brand;constructor(e){super(e)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var wv=e=>e;function Tv(e,t){return typeof e==`function`?Ev(tr(e,wv,t?.equal),t?.debugName,t?.set):Ev(tr(e.source,e.computation,e.equal),e.debugName,e.set)}function Ev(e,t,n){let r=e[dn],i=e;if(n!==void 0){let t=e=>nr(r,e);i.set=e=>n(e,t),i.update=r=>n(r(Cv(e)),t)}else i.set=e=>nr(r,e),i.update=e=>rr(r,e);return i.asReadonly=Zs.bind(e),i}function Dv(e,t){let n=Object.create(xc);n.value=e,n.transformFn=t?.transform;function r(){if(mn(n),n.value===bc)throw new T(-950,null);return n.value}return r[dn]=n,r}function Ov(e){return new xv}function kv(e,t){return Dv(e,t)}function Av(e){return Dv(bc,e)}var $=(kv.required=Av,kv);function jv(e,t){let n=Object.create(xc),r=new xv;n.value=e;function i(){return mn(n),Mv(n.value),n.value}return i[dn]=n,i.asReadonly=Zs.bind(i),i.set=e=>{n.equal(n.value,e)||(Wn(n,e),r.emit(e))},i.update=e=>{Mv(n.value),i.set(e(n.value))},i.subscribe=r.subscribe.bind(r),i.destroyRef=r.destroyRef,i}function Mv(e){if(e===bc)throw new T(952,!1)}function Nv(e,t){return jv(e,t)}function Pv(e){return jv(bc,e)}var Fv=(Nv.required=Pv,Nv);function Iv(e,t){return jh(t)}function Lv(e,t){return Mh(t)}var Rv=(Iv.required=Lv,Iv),zv=new vi(``),Bv=new vi(``);function Vv(e){return!e.moduleRef}function Hv(e){let t=Vv(e)?e.r3Injector:e.moduleRef.injector,n=t.get(Is);return n.run(()=>{Vv(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Ys),i;if(n.runOutsideAngular(()=>{i=n.onError.subscribe({next:r})}),Vv(e)){let n=()=>t.destroy(),r=e.platformInjector.get(zv);r.add(n),t.onDestroy(()=>{i.unsubscribe(),r.delete(n)})}else{let t=()=>e.moduleRef.destroy(),n=e.platformInjector.get(zv);n.add(t),e.moduleRef.onDestroy(()=>{dg(e.allPlatformModules,e.moduleRef),i.unsubscribe(),n.delete(t)})}return Wv(r,n,()=>{let n=t.get(Os),r=n.add(),i=t.get(Qh);return i.runInitializers(),i.donePromise.then(()=>{if(Zg(t.get(bv,Xg)||`en-US`),!t.get(Bv,!0))return Vv(e)?t.get(lg):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(Vv(e)){let n=t.get(lg);return e.rootComponent!==void 0&&n.bootstrap(e.rootComponent),n}return Uv?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>void n.remove(r))})})}var Uv;function Wv(e,t,n){try{let r=n();return Fh(r)?r.catch(n=>{throw t.runOutsideAngular(()=>e(n)),n}):r}catch(n){throw t.runOutsideAngular(()=>e(n)),n}}var Gv=null;function Kv(e=[],t){return Ss.create({name:t,providers:[{provide:Ta,useValue:`platform`},{provide:zv,useValue:new Set([()=>Gv=null])},...e]})}function qv(e=[]){if(Gv)return Gv;let t=Kv(e);return Gv=t,sg(),Jv(t),t}function Jv(e){let t=e.get(ec,null);Ha(e,()=>{t?.forEach(e=>e())})}function Yv(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:i}=e;Ic(Cc.BootstrapApplicationStart);try{let e=i?.injector??qv(r);return Hv({r3Injector:new Rh({providers:[vv(),Xs,...n||[]],parent:e,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:e,rootComponent:t})}catch(e){return Promise.reject(e)}finally{Ic(Cc.BootstrapApplicationEnd)}}var Xv=Symbol(`NOT_SET`),Zv=new Set,Qv={...Kn,kind:`afterRenderEffectPhase`,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,value:Xv,cleanup:null,consumerMarkedDirty(){if(this.sequence.impl.executing){if(this.sequence.lastPhase===null||this.sequence.lastPhase(mn(r),r.value),r.signal[dn]=r,r.registerCleanupFn=e=>(r.cleanup??=new Set).add(e),this.nodes[e]=r,this.hooks[e]=e=>r.phaseFn(e)}}afterRun(){super.afterRun(),this.lastPhase=null}destroy(){if(this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();super.destroy();for(let e of this.nodes)if(e)try{for(let t of e.cleanup??Zv)t()}finally{En(e)}}};function ey(e,t){let n=t?.injector??E(Ss),r=n.get(ac),i=n.get(Nd),a=n.get(Ad,null,{optional:!0});i.impl??=n.get(Fd);let o=e;typeof o==`function`&&(o={mixedReadWrite:e});let s=n.get(rc,null,{optional:!0}),c=new $v(i.impl,[o.earlyRead,o.write,o.mixedReadWrite,o.read],s?.view,r,n,a?.snapshot(null));return i.impl.register(c),c}var ty=null;function ny(){return ty}function ry(e){ty??=e}var iy=class{},ay=(function(e){return e[e.Format=0]=`Format`,e[e.Standalone=1]=`Standalone`,e})(ay||{}),oy=(function(e){return e[e.Narrow=0]=`Narrow`,e[e.Abbreviated=1]=`Abbreviated`,e[e.Wide=2]=`Wide`,e[e.Short=3]=`Short`,e})(oy||{}),sy=(function(e){return e[e.Short=0]=`Short`,e[e.Medium=1]=`Medium`,e[e.Long=2]=`Long`,e[e.Full=3]=`Full`,e})(sy||{}),cy={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function ly(e){return Kg(e)[Jg.LocaleId]}function uy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.DayPeriodsFormat],r[Jg.DayPeriodsStandalone]],t),n)}function dy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.DaysFormat],r[Jg.DaysStandalone]],t),n)}function fy(e,t,n){let r=Kg(e);return xy(xy([r[Jg.MonthsFormat],r[Jg.MonthsStandalone]],t),n)}function py(e,t){let n=Kg(e)[Jg.Eras];return xy(n,t)}function my(e,t){return xy(Kg(e)[Jg.DateFormat],t)}function hy(e,t){return xy(Kg(e)[Jg.TimeFormat],t)}function gy(e,t){let n=Kg(e)[Jg.DateTimeFormat];return xy(n,t)}function _y(e,t){let n=Kg(e),r=n[Jg.NumberSymbols][t];if(r===void 0){if(t===cy.CurrencyDecimal)return n[Jg.NumberSymbols][cy.Decimal];if(t===cy.CurrencyGroup)return n[Jg.NumberSymbols][cy.Group]}return r}function vy(e){if(!e[Jg.ExtraData])throw new T(2303,!1)}function yy(e){let t=Kg(e);return vy(t),(t[Jg.ExtraData][2]||[]).map(e=>typeof e==`string`?Sy(e):[Sy(e[0]),Sy(e[1])])}function by(e,t,n){let r=Kg(e);return vy(r),xy(xy([r[Jg.ExtraData][0],r[Jg.ExtraData][1]],t)||[],n)||[]}function xy(e,t){for(let n=t;n>-1;n--)if(e[n]!==void 0)return e[n];throw new T(2304,!1)}function Sy(e){let[t,n]=e.split(`:`);return{hours:+t,minutes:+n}}var Cy=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,wy=Object.create(null),Ty=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,Ey=256;function Dy(e,t,n,r){let i=Xy(e);Oy(t),t=Ay(n,t)||t;let a=[],o;for(;t;)if(o=Ty.exec(t),o){a=a.concat(o.slice(1));let e=a.pop();if(!e)break;t=e}else{a.push(t);break}let s=i.getTimezoneOffset();r&&(s=qy(r,s),i=Yy(i,r));let c=``;return a.forEach(e=>{let t=Ky(e);c+=t?t(i,n,s):e===`''`?`'`:e.replace(/(^'|'$)/g,``).replace(/''/g,`'`)}),c}function Oy(e){if(e.length>Ey)throw new T(2300,!1)}function ky(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function Ay(e,t){let n=ly(e);if(wy[n]??=Object.create(null),wy[n][t])return wy[n][t];let r=``;switch(t){case`shortDate`:r=my(e,sy.Short);break;case`mediumDate`:r=my(e,sy.Medium);break;case`longDate`:r=my(e,sy.Long);break;case`fullDate`:r=my(e,sy.Full);break;case`shortTime`:r=hy(e,sy.Short);break;case`mediumTime`:r=hy(e,sy.Medium);break;case`longTime`:r=hy(e,sy.Long);break;case`fullTime`:r=hy(e,sy.Full);break;case`short`:let t=Ay(e,`shortTime`),n=Ay(e,`shortDate`);r=jy(gy(e,sy.Short),[t,n]);break;case`medium`:let i=Ay(e,`mediumTime`),a=Ay(e,`mediumDate`);r=jy(gy(e,sy.Medium),[i,a]);break;case`long`:let o=Ay(e,`longTime`),s=Ay(e,`longDate`);r=jy(gy(e,sy.Long),[o,s]);break;case`full`:let c=Ay(e,`fullTime`),l=Ay(e,`fullDate`);r=jy(gy(e,sy.Full),[c,l])}return r&&(wy[n][t]=r),r}function jy(e,t){return t&&(e=e.replace(/\{([^}]+)}/g,function(e,n){return Object.hasOwn(t,n)?t[n]:e})),e}function My(e,t,n=`-`,r,i){let a=``;(e<0||i&&e<=0)&&(i?e=-e+1:(e=-e,a=n));let o=String(e);for(;o.length0||s>-n)&&(s+=n),e===3)s===0&&n===-12&&(s=12);else if(e===6)return Ny(s,t);let c=_y(o,cy.MinusSign);return My(s,t,c,r,i)}}function Fy(e,t){switch(e){case 0:return t.getFullYear();case 1:return t.getMonth();case 2:return t.getDate();case 3:return t.getHours();case 4:return t.getMinutes();case 5:return t.getSeconds();case 6:return t.getMilliseconds();case 7:return t.getDay();default:throw new T(2301,!1)}}function Iy(e,t,n=ay.Format,r=!1){return function(i,a){return Ly(i,a,e,t,n,r)}}function Ly(e,t,n,r,i,a){switch(n){case 2:return fy(t,i,r)[e.getMonth()];case 1:return dy(t,i,r)[e.getDay()];case 0:let n=e.getHours(),o=e.getMinutes();if(a){let e=yy(t),a=by(t,i,r),s=e.findIndex(e=>{if(Array.isArray(e)){let[t,r]=e,i=n>=t.hours&&o>=t.minutes,a=n0?Math.floor(i/60):Math.ceil(i/60);switch(e){case 0:return(i>=0?`+`:``)+My(o,2,a)+My(Math.abs(i%60),2,a);case 1:return`GMT`+(i>=0?`+`:``)+My(o,1,a);case 2:return`GMT`+(i>=0?`+`:``)+My(o,2,a)+`:`+My(Math.abs(i%60),2,a);case 3:return r===0?`Z`:(i>=0?`+`:``)+My(o,2,a)+`:`+My(Math.abs(i%60),2,a);default:throw new T(2310,!1)}}}var zy=0,By=4;function Vy(e){let t=ky(e,zy,1).getDay();return ky(e,0,1+(t<=By?By:11)-t)}function Hy(e){let t=e.getDay(),n=t===0?-3:By-t;return ky(e.getFullYear(),e.getMonth(),e.getDate()+n)}function Uy(e,t=!1){return function(n,r){let i;if(t){let e=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,t=n.getDate();i=1+Math.floor((t+e)/7)}else{let e=Hy(n),t=Vy(e.getFullYear()),r=e.getTime()-t.getTime();i=1+Math.round(r/6048e5)}return My(i,e,_y(r,cy.MinusSign))}}function Wy(e,t=!1){return function(n,r){return My(Hy(n).getFullYear(),e,_y(r,cy.MinusSign),t)}}var Gy=Object.create(null);function Ky(e){if(Gy[e])return Gy[e];let t;switch(e){case`G`:case`GG`:case`GGG`:t=Iy(3,oy.Abbreviated);break;case`GGGG`:t=Iy(3,oy.Wide);break;case`GGGGG`:t=Iy(3,oy.Narrow);break;case`y`:t=Py(0,1,0,!1,!0);break;case`yy`:t=Py(0,2,0,!0,!0);break;case`yyy`:t=Py(0,3,0,!1,!0);break;case`yyyy`:t=Py(0,4,0,!1,!0);break;case`Y`:t=Wy(1);break;case`YY`:t=Wy(2,!0);break;case`YYY`:t=Wy(3);break;case`YYYY`:t=Wy(4);break;case`M`:case`L`:t=Py(1,1,1);break;case`MM`:case`LL`:t=Py(1,2,1);break;case`MMM`:t=Iy(2,oy.Abbreviated);break;case`MMMM`:t=Iy(2,oy.Wide);break;case`MMMMM`:t=Iy(2,oy.Narrow);break;case`LLL`:t=Iy(2,oy.Abbreviated,ay.Standalone);break;case`LLLL`:t=Iy(2,oy.Wide,ay.Standalone);break;case`LLLLL`:t=Iy(2,oy.Narrow,ay.Standalone);break;case`w`:t=Uy(1);break;case`ww`:t=Uy(2);break;case`W`:t=Uy(1,!0);break;case`d`:t=Py(2,1);break;case`dd`:t=Py(2,2);break;case`c`:case`cc`:t=Py(7,1);break;case`ccc`:t=Iy(1,oy.Abbreviated,ay.Standalone);break;case`cccc`:t=Iy(1,oy.Wide,ay.Standalone);break;case`ccccc`:t=Iy(1,oy.Narrow,ay.Standalone);break;case`cccccc`:t=Iy(1,oy.Short,ay.Standalone);break;case`E`:case`EE`:case`EEE`:t=Iy(1,oy.Abbreviated);break;case`EEEE`:t=Iy(1,oy.Wide);break;case`EEEEE`:t=Iy(1,oy.Narrow);break;case`EEEEEE`:t=Iy(1,oy.Short);break;case`a`:case`aa`:case`aaa`:t=Iy(0,oy.Abbreviated);break;case`aaaa`:t=Iy(0,oy.Wide);break;case`aaaaa`:t=Iy(0,oy.Narrow);break;case`b`:case`bb`:case`bbb`:t=Iy(0,oy.Abbreviated,ay.Standalone,!0);break;case`bbbb`:t=Iy(0,oy.Wide,ay.Standalone,!0);break;case`bbbbb`:t=Iy(0,oy.Narrow,ay.Standalone,!0);break;case`B`:case`BB`:case`BBB`:t=Iy(0,oy.Abbreviated,ay.Format,!0);break;case`BBBB`:t=Iy(0,oy.Wide,ay.Format,!0);break;case`BBBBB`:t=Iy(0,oy.Narrow,ay.Format,!0);break;case`h`:t=Py(3,1,-12);break;case`hh`:t=Py(3,2,-12);break;case`H`:t=Py(3,1);break;case`HH`:t=Py(3,2);break;case`m`:t=Py(4,1);break;case`mm`:t=Py(4,2);break;case`s`:t=Py(5,1);break;case`ss`:t=Py(5,2);break;case`S`:t=Py(6,1);break;case`SS`:t=Py(6,2);break;case`SSS`:t=Py(6,3);break;case`Z`:case`ZZ`:case`ZZZ`:t=Ry(0);break;case`ZZZZZ`:t=Ry(3);break;case`O`:case`OO`:case`OOO`:case`z`:case`zz`:case`zzz`:t=Ry(1);break;case`OOOO`:case`ZZZZ`:case`zzzz`:t=Ry(2);break;default:return null}return Gy[e]=t,t}function qy(e,t){e=e.replace(/:/g,``);let n=Date.parse(`Jan 01, 1970 00:00:00 `+e)/6e4;return isNaN(n)?t:n}function Jy(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function Yy(e,t,n){let r=e.getTimezoneOffset();return Jy(e,-1*(qy(t,r)-r))}function Xy(e){if(Qy(e))return e;if(typeof e==`number`&&!isNaN(e))return new Date(e);if(typeof e==`string`){if(e=e.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(e)){let[t,n=1,r=1]=e.split(`-`).map(e=>+e);return ky(t,n-1,r)}let t=parseFloat(e);if(!isNaN(e-t))return new Date(t);let n;if(n=e.match(Cy))return Zy(n)}let t=new Date(e);if(!Qy(t))throw new T(2311,!1);return t}function Zy(e){let t=new Date(0),n=0,r=0,i=e[8]?t.setUTCFullYear:t.setFullYear,a=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=Number(e[9]+e[10]),r=Number(e[9]+e[11])),i.call(t,Number(e[1]),Number(e[2])-1,Number(e[3]));let o=Number(e[4]||0)-n,s=Number(e[5]||0)-r,c=Number(e[6]||0),l=Math.floor(parseFloat(`0.`+(e[7]||0))*1e3);return a.call(t,o,s,c,l),t}function Qy(e){return e instanceof Date&&!isNaN(e.valueOf())}var $y=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=E(Ss);constructor(e){this._viewContainerRef=e}ngOnChanges(e){if(this._shouldRecreateView(e)){let e=this._viewContainerRef;if(this._viewRef&&e.remove(e.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let t=this._createContextForwardProxy();this._viewRef=e.createEmbeddedView(this.ngTemplateOutlet,t,{injector:this._getInjector()})}}_getInjector(){return this.ngTemplateOutletInjector===`outlet`?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,t,n)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,t,n):!1,get:(e,t,n)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,t,n)}})}static ɵfac=function(t){return new(t||e)(xm(th))};static ɵdir=Gh({type:e,selectors:[[``,`ngTemplateOutlet`,``]],inputs:{ngTemplateOutletContext:`ngTemplateOutletContext`,ngTemplateOutlet:`ngTemplateOutlet`,ngTemplateOutletInjector:`ngTemplateOutletInjector`},features:[Dc]})}return e})();function eb(e,t){return new T(2100,!1)}var tb=`mediumDate`,nb=new vi(``),rb=new vi(``),ib=(()=>{class e{locale;defaultTimezone;defaultOptions;constructor(e,t,n){this.locale=e,this.defaultTimezone=t,this.defaultOptions=n}transform(t,n,r,i){if(t==null||t===``||t!==t)return null;try{let e=n??this.defaultOptions?.dateFormat??tb,a=r??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return Dy(t,e,i||this.locale,a)}catch(t){throw eb(e,t.message)}}static ɵfac=function(t){return new(t||e)(xm(bv,16),xm(nb,24),xm(rb,24))};static ɵpipe=Kh({name:`date`,type:e,pure:!0})}return e})(),ab=(()=>{class e{transform(e){return JSON.stringify(e,null,2)}static ɵfac=function(t){return new(t||e)};static ɵpipe=Kh({name:`json`,type:e,pure:!1})}return e})();function ob(e,t){t=encodeURIComponent(t);for(let n of e.split(`;`)){let e=n.indexOf(`=`),[r,i]=e==-1?[n,``]:[n.slice(0,e),n.slice(e+1)];if(r.trim()!==t)continue;let a=i;try{a=decodeURIComponent(i)}catch{}return a.length>1&&a[0]===`"`&&a[a.length-1]===`"`&&(a=a.slice(1,-1)),a}return null}var sb=`browser`,cb=class{_doc;constructor(e){this._doc=e}manager},lb=(()=>{class e extends cb{constructor(e){super(e)}supports(e){return!0}addEventListener(e,t,n,r){return e.addEventListener(t,n,r),()=>this.removeEventListener(e,t,n,r)}removeEventListener(e,t,n,r){return e.removeEventListener(t,n,r)}static ɵfac=function(t){return new(t||e)(qi(Cs))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),ub=new vi(``),db=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(e,t){this._zone=t,e.forEach(e=>{e.manager=this});let n=e.filter(e=>!(e instanceof lb));this._plugins=n.slice().reverse();let r=e.find(e=>e instanceof lb);r&&this._plugins.push(r)}addEventListener(e,t,n,r){return this._findPluginFor(t).addEventListener(e,t,n,r)}getZone(){return this._zone}_findPluginFor(e){let t=this._eventNameToPlugin.get(e);if(t)return t;if(t=this._plugins.find(t=>t.supports(e)),!t)throw new T(-5101,!1);return this._eventNameToPlugin.set(e,t),t}static ɵfac=function(t){return new(t||e)(qi(ub),qi(Is))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),fb=`ng-app-id`;function pb(e){for(let t of e)t.remove()}function mb(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function hb(e,t,n,r){let i=e.head?.querySelectorAll(`style[${fb}="${t}"],link[${fb}="${t}"]`);if(!i||i.length===0)return!1;for(let e of i)e.removeAttribute(fb),e instanceof HTMLLinkElement?r.set(e.href.slice(e.href.lastIndexOf(`/`)+1),{usage:0,elements:[e]}):e.textContent&&n.set(e.textContent,{usage:0,elements:[e]});return!0}function gb(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var _b=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(e,t,n,r={}){this.doc=e,this.appId=t,this.nonce=n,hb(e,t,this.inline,this.external)&&this.hosts.add(e.head)}addStyles(e,t){for(let t of e)this.addUsage(t,this.inline,mb);t?.forEach(e=>this.addUsage(e,this.external,gb))}removeStyles(e,t){for(let t of e)this.removeUsage(t,this.inline);t?.forEach(e=>this.removeUsage(e,this.external))}addUsage(e,t,n){let r=t.get(e);r?r.usage++:t.set(e,{usage:1,elements:[...this.hosts].map(t=>this.addElement(t,n(e,this.doc)))})}removeUsage(e,t){let n=t.get(e);n&&(n.usage--,n.usage<=0&&(pb(n.elements),t.delete(e)))}ngOnDestroy(){for(let[,{elements:e}]of[...this.inline,...this.external])pb(e);this.hosts.clear()}addHost(e){if(!this.hosts.has(e)){this.hosts.add(e);for(let[t,{elements:n}]of this.inline)n.push(this.addElement(e,mb(t,this.doc)));for(let[t,{elements:n}]of this.external)n.push(this.addElement(e,gb(t,this.doc)))}}removeHost(e){this.hosts.delete(e);for(let t of[...this.inline.values(),...this.external.values()]){let n=[];for(let r of t.elements)r.parentNode===e?r.remove():n.push(r);t.elements=n}}addElement(e,t){return this.nonce&&t.setAttribute(`nonce`,this.nonce),e.appendChild(t)}static ɵfac=function(t){return new(t||e)(qi(Cs),qi(Qs),qi(nc,8),qi(tc))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),vb={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`,math:`http://www.w3.org/1998/Math/MathML`},yb=/%COMP%/g,bb=`%COMP%`,xb=`_nghost-${bb}`,Sb=`_ngcontent-${bb}`,Cb=!0,wb=new vi(``,{factory:()=>Cb}),Tb=new vi(``);function Eb(e){return Sb.replace(yb,e)}function Db(e){return xb.replace(yb,e)}function Ob(e,t){return t.map(t=>t.replace(yb,e))}var kb=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;cssVarNamespace;constructor(e,t,n,r,i,a,o=null,s=null,c=null){this.eventManager=e,this.sharedStylesHost=t,this.appId=n,this.removeStylesOnCompDestroy=r,this.doc=i,this.ngZone=a,this.nonce=o,this.tracingService=s,this.cssVarNamespace=c??``,this.defaultRenderer=new Ab(e,i,a,this.tracingService,this.cssVarNamespace)}createRenderer(e,t){if(!e||!t)return this.defaultRenderer;let n=this.getOrCreateRenderer(e,t);return n instanceof Pb?n.applyToHost(e):n instanceof Nb&&n.applyStyles(),n}getOrCreateRenderer(e,t){let n=this.rendererByCompId,r=n.get(t.id);if(!r){let i=this.doc,a=this.ngZone,o=this.eventManager,s=this.sharedStylesHost,c=this.removeStylesOnCompDestroy,l=this.tracingService;switch(t.encapsulation){case cu.Emulated:r=new Pb(o,s,t,this.appId,c,i,a,l,this.cssVarNamespace);break;case cu.ShadowDom:return new Mb(o,e,t,i,a,this.nonce,l,this.cssVarNamespace,s);case cu.ExperimentalIsolatedShadowDom:return new Mb(o,e,t,i,a,this.nonce,l,this.cssVarNamespace);default:r=new Nb(o,s,t,c,i,a,l,this.cssVarNamespace)}n.set(t.id,r)}return r}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(e){this.rendererByCompId.delete(e)}static ɵfac=function(t){return new(t||e)(qi(db),qi(ym),qi(Qs),qi(wb),qi(Cs),qi(Is),qi(nc),qi(Ad,8),qi(Tb,8))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})(),Ab=class{eventManager;doc;ngZone;tracingService;cssVarNamespace;data=Object.create(null);throwOnSyntheticProps=!0;constructor(e,t,n,r,i=``){this.eventManager=e,this.doc=t,this.ngZone=n,this.tracingService=r,this.cssVarNamespace=i}destroy(){}destroyNode=null;createElement(e,t){return t?this.doc.createElementNS(vb[t]||t,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,t){(jb(e)?e.content:e).appendChild(t)}insertBefore(e,t,n){if(e){let r=jb(e)?e.content:e;if(n!=null&&n.parentNode!==r)throw new T(-5106,!1);r.insertBefore(t,n)}}removeChild(e,t){t.remove()}selectRootElement(e,t){let n=typeof e==`string`?this.doc.querySelector(e):e;if(!n)throw new T(-5104,!1);return t||(n.textContent=``),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,t,n,r){if(r){t=r+`:`+t;let i=vb[r];i?e.setAttributeNS(i,t,n):e.setAttribute(t,n)}else e.setAttribute(t,n)}removeAttribute(e,t,n){if(n){let r=vb[n];r?e.removeAttributeNS(r,t):e.removeAttribute(`${n}:${t}`)}else e.removeAttribute(t)}addClass(e,t){e.classList.add(t)}removeClass(e,t){e.classList.remove(t)}setStyle(e,t,n,r){let i=t.startsWith(`--`);i&&(t=t.replace(`%NS%`,this.cssVarNamespace)),i||r&(Xu.DashCase|Xu.Important)?e.style.setProperty(t,n,r&Xu.Important?`important`:``):e.style[t]=n}removeStyle(e,t,n){let r=t.startsWith(`--`);r&&(t=t.replace(`%NS%`,this.cssVarNamespace)),r||n&Xu.DashCase?e.style.removeProperty(t):e.style[t]=``}setProperty(e,t,n){e!=null&&(e[t]=n)}setValue(e,t){e.nodeValue=t}listen(e,t,n,r){if(typeof e==`string`&&(e=ny().getGlobalEventTarget(this.doc,e),!e))throw new T(-5102,!1);let i=this.decoratePreventDefault(n);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(e,t,i)),this.eventManager.addEventListener(e,t,i,r)}decoratePreventDefault(e){return t=>{if(t===`__ngUnwrap__`)return e;e(t)===!1&&t.preventDefault()}}};function jb(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var Mb=class extends Ab{hostEl;sharedStylesHost;shadowRoot;constructor(e,t,n,r,i,a,o,s,c){super(e,r,i,o,s),this.hostEl=t,this.sharedStylesHost=c,this.shadowRoot=t.attachShadow({mode:`open`}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let l=n.styles;l=Ob(n.id,l).map(e=>e.replace(/%NS%/g,s));for(let e of l){let t=document.createElement(`style`);a&&t.setAttribute(`nonce`,a),t.textContent=e,this.shadowRoot.appendChild(t)}let u=n.getExternalStyles?.();if(u)for(let e of u){let t=gb(e,r);a&&t.setAttribute(`nonce`,a),this.shadowRoot.appendChild(t)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,t){return super.appendChild(this.nodeOrShadowRoot(e),t)}insertBefore(e,t,n){return super.insertBefore(this.nodeOrShadowRoot(e),t,n)}removeChild(e,t){return super.removeChild(null,t)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},Nb=class extends Ab{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(e,t,n,r,i,a,o,s,c){super(e,i,a,o,s),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=r;let l=n.styles,u=c?Ob(c,l):l;this.styles=u.map(e=>e.replace(/%NS%/g,s)),this.styleUrls=n.getExternalStyles?.(c)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&ud.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},Pb=class extends Nb{contentAttr;hostAttr;constructor(e,t,n,r,i,a,o,s,c){let l=r+`-`+n.id;super(e,t,n,i,a,o,s,c,l),this.contentAttr=Eb(l),this.hostAttr=Db(l)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,``)}createElement(e,t){let n=super.createElement(e,t);return super.setAttribute(n,this.contentAttr,``),n}},Fb=class e extends iy{supportsDOMEvents=!0;static makeCurrent(){ry(new e)}onAndCancel(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}dispatchEvent(e,t){e.dispatchEvent(t)}remove(e){e.remove()}createElement(e,t){return t||=this.getDefaultDocument(),t.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument(`fakeTitle`)}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,t){return t===`window`?window:t===`document`?e:t===`body`?e.body:null}getBaseHref(e){let t=Lb();return t==null?null:Rb(t)}resetBaseElement(){Ib=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return ob(document.cookie,e)}},Ib=null;function Lb(){return Ib||=document.head.querySelector(`base`),Ib?Ib.getAttribute(`href`):null}function Rb(e){return new URL(e,document.baseURI).pathname}var zb=[`alt`,`control`,`meta`,`shift`],Bb={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`},Vb={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},Hb=(()=>{class e extends cb{constructor(e){super(e)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,n,r,i){let a=e.parseEventName(n),o=e.eventCallback(a.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>ny().onAndCancel(t,a.domEventName,o,i))}static parseEventName(t){let n=t.toLowerCase().split(`.`),r=n.shift();if(n.length===0||r!==`keydown`&&r!==`keyup`)return null;let i=e._normalizeKey(n.pop()),a=``,o=n.indexOf(`code`);if(o>-1&&(n.splice(o,1),a=`code.`),zb.forEach(e=>{let t=n.indexOf(e);t>-1&&(n.splice(t,1),a+=e+`.`)}),a+=i,n.length!=0||i.length===0)return null;let s={};return s.domEventName=r,s.fullKey=a,s}static matchEventFullKeyCode(e,t){let n=Bb[e.key]||e.key,r=``;return t.indexOf(`code.`)>-1&&(n=e.code,r=`code.`),n==null||!n?!1:(n=n.toLowerCase(),n===` `?n=`space`:n===`.`&&(n=`dot`),zb.forEach(t=>{if(t!==n){let n=Vb[t];n(e)&&(r+=t+`.`)}}),r+=n,r===t)}static eventCallback(t,n,r){return i=>{e.matchEventFullKeyCode(i,t)&&r.runGuarded(()=>n(i))}}static _normalizeKey(e){return e===`esc`?`escape`:e}static ɵfac=function(t){return new(t||e)(qi(Cs))};static ɵprov=di({token:e,factory:e.ɵfac})}return e})();async function Ub(e,t,n){return Yv({rootComponent:e,...Wb(t,n)})}function Wb(e,t){return{platformRef:t?.platformRef,appProviders:[...Yb,...e?.providers??[]],platformProviders:Jb}}function Gb(){Fb.makeCurrent()}function Kb(){return new Js}function qb(){return Xl(document),document}var Jb=[{provide:tc,useValue:sb},{provide:ec,useValue:Gb,multi:!0},{provide:Cs,useFactory:qb}],Yb=[{provide:Ta,useValue:`root`},{provide:Js,useFactory:Kb},{provide:ub,useClass:lb,multi:!0},{provide:ub,useClass:Hb,multi:!0},kb,{provide:ym,useClass:_b},{provide:_b,useExisting:ym},db,{provide:em,useExisting:kb},[]];function Xb(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e{let r=new ex({code:i,why:Qb(a.why,e),fix:Qb(a.fix,e),docs:o,cause:e.cause,sources:e.sources,data:Qb(a.data,e)},s);for(let e of t)e(r,n);return r};n[i]=s}return n}function rx(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n{e=n,t=r}),resolve:e,reject:t}}var lx=Math.random.bind(Math),ux=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function dx(e=21){let t=``,n=e;for(;n--;)t+=ux[lx()*64|0];return t}var fx=6e4,px=e=>e,mx=px,{clearTimeout:hx,setTimeout:gx}=globalThis;function _x(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=px,deserialize:s=mx,resolver:c,bind:l=`rpc`,timeout:u=fx,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=cx(),_=dx();s.i=_;let ee;async function v(n=s){return u>=0&&(ee=gx(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof ee==`object`&&(ee=ee.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:ee,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,v,d):await v()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{hx(ee),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:v,get $closed(){return f},get $meta(){return t.meta},$close:ee,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.hasOwn(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function ee(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(te)}function v(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function te(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(hx(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(te),h}function vx(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}var yx=Object.freeze({type:`object`,additionalProperties:!0});function bx(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return yx}return yx}function xx(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;rn[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function Cx(e,t){return Sx(e,t)??[e]}function wx(e){return typeof e==`string`?`'${e}'`:new Ox().serialize(e)}var Tx=` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`,Ex=(function(){let e=new Uint8Array(128);for(let t=0;t<69;t++)e[Tx.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function Dx(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;ia?-1:1)}return e.length===t.length?r:e.lengththis.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),kx=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Ax=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],jx=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,Mx=[],Nx=class{_data=new Px;_hash=new Px([...kx]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)Mx[n]=e[t+n]|0;else{let e=Mx[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=Mx[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;Mx[n]=t+Mx[n-7]+i+Mx[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),h=u+m+d+Ax[n]+Mx[n],g=p+f;u=l,l=c,c=s,s=o+h|0,o=a,a=i,i=r,r=h+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=Px.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function Fx(e){return new Nx().finalize(e).toBase64()}function Ix(e){return Fx(wx(e))}function Lx(e){return Ix(e)}function Rx(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}var zx=/^[\w+.-]{2,}:\/\//;function Bx(e){return e.endsWith(`/`)?e:`${e}/`}function Vx(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function Hx(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?Bx(n)+e.replace(/^\.?\//,``):e);return n}function Ux(e,t){if(!t||t===`/`||zx.test(e))return e;let n=Vx(t);return e.startsWith(n)?e:Hx(n,e)}function Wx(e,t){let n=e.match(zx);return t+(n?e.slice(n[0].length):e)}var Gx=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Kx(e=21){let t=``,n=e;for(;n--;)t+=Gx[Math.random()*64|0];return t}var qx=Symbol.for(`immer-nothing`),Jx=Symbol.for(`immer-draftable`),Yx=Symbol.for(`immer-state`),Xx=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function Zx(e,...t){{let n=Xx[e],r=xS(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var Qx=Object,$x=Qx.getPrototypeOf,eS=`constructor`,tS=`prototype`,nS=`configurable`,rS=`enumerable`,iS=`writable`,aS=`value`,oS=e=>!!e&&!!e[Yx];function sS(e){return e?uS(e)||_S(e)||!!e[Jx]||!!e[eS]?.[Jx]||vS(e)||yS(e):!1}var cS=Qx[tS][eS].toString(),lS=new WeakMap;function uS(e){if(!e||!bS(e))return!1;let t=$x(e);if(t===null||t===Qx[tS])return!0;let n=Qx.hasOwnProperty.call(t,eS)&&t[eS];if(n===Object)return!0;if(!xS(n))return!1;let r=lS.get(n);return r===void 0&&(r=Function.toString.call(n),lS.set(n,r)),r===cS}function dS(e,t,n=!0){fS(e)===0?(n?Reflect.ownKeys(e):Qx.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function fS(e){let t=e[Yx];return t?t.type_:_S(e)?1:vS(e)?2:yS(e)?3:0}var pS=(e,t,n=fS(e))=>n===2?e.has(t):Qx[tS].hasOwnProperty.call(e,t),mS=(e,t,n=fS(e))=>n===2?e.get(t):e[t],hS=(e,t,n,r=fS(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function gS(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var _S=Array.isArray,vS=e=>e instanceof Map,yS=e=>e instanceof Set,bS=e=>typeof e==`object`,xS=e=>typeof e==`function`,SS=e=>typeof e==`boolean`;function CS(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var wS=e=>bS(e)?e?.[Yx]:null,TS=e=>e.copy_||e.base_,ES=e=>e.modified_?e.copy_:e.base_;function DS(e,t){if(vS(e))return new Map(e);if(yS(e))return new Set(e);if(_S(e))return Array[tS].slice.call(e);let n=uS(e);if(t===!0||t===`class_only`&&!n){let t=Qx.getOwnPropertyDescriptors(e);delete t[Yx];let n=Reflect.ownKeys(t);for(let r=0;r1&&Qx.defineProperties(e,{set:AS,add:AS,clear:AS,delete:AS}),Qx.freeze(e),t&&dS(e,(e,t)=>{OS(t,!0)},!1),e)}function kS(){Zx(2)}var AS={[aS]:kS};function jS(e){return e===null||!bS(e)||Qx.isFrozen(e)}var MS=`MapSet`,NS=`Patches`,PS=`ArrayMethods`,FS={};function IS(e){let t=FS[e];return t||Zx(0,e),t}var LS=e=>!!FS[e];function RS(e,t){FS[e]||(FS[e]=t)}var zS,BS=()=>zS,VS=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:LS(MS)?IS(MS):void 0,arrayMethodsPlugin_:LS(PS)?IS(PS):void 0});function HS(e,t){t&&(e.patchPlugin_=IS(NS),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function US(e){WS(e),e.drafts_.forEach(KS),e.drafts_=null}function WS(e){e===zS&&(zS=e.parent_)}var GS=e=>zS=VS(zS,e);function KS(e){let t=e[Yx];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function qS(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[Yx].modified_&&(US(t),Zx(4)),sS(e)&&(e=JS(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[Yx].base_,e,t)}else e=JS(t,n);return YS(t,e,!0),US(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===qx?void 0:e}function JS(e,t){if(jS(t))return t;let n=t[Yx];if(!n)return rC(t,e.handledSet_,e);if(!ZS(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);tC(n,e)}return n.copy_}function YS(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&OS(t,n)}function XS(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ZS=(e,t)=>e.scope_===t,QS=[];function $S(e,t,n,r){let i=TS(e),a=e.type_;if(r!==void 0&&mS(i,r,a)===t){hS(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;dS(i,(e,n)=>{if(oS(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??QS;for(let e of o)hS(i,e,n,a)}function eC(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!ZS(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=ES(i);$S(e,i.draft_??i,a,n),tC(i,r)})}function tC(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}XS(e)}}function nC(e,t,n){let{scope_:r}=e;if(oS(n)){let i=n[Yx];ZS(i,r)&&i.callbacks_.push(function(){fC(e),$S(e,n,ES(i),t)})}else sS(n)&&e.callbacks_.push(function(){let i=TS(e);e.type_===3?i.has(n)&&rC(n,r.handledSet_,r):mS(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&rC(mS(e.copy_,t,e.type_),r.handledSet_,r)})}function rC(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||oS(e)||t.has(e)||!sS(e)||jS(e)?e:(t.add(e),dS(e,(r,i)=>{if(oS(i)){let t=i[Yx];ZS(t,n)&&(hS(e,r,ES(t),e.type_),XS(t))}else sS(i)&&rC(i,t,n)}),e)}function iC(e,t){let n=_S(e),r={type_:+!!n,scope_:t?t.scope_:BS(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=aC;n&&(i=[r],a=oC);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var aC={get(e,t){if(t===Yx)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=TS(e);if(!pS(i,t,e.type_))return lC(e,i,t);let a=i[t];if(e.finalized_||!sS(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&CS(t))return a;if(a===sC(e.base_,t)||cC(e,t,a)){fC(e);let n=e.type_===1?+t:t,r=mC(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in TS(e)},ownKeys(e){return Reflect.ownKeys(TS(e))},set(e,t,n){let r=uC(TS(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=sC(TS(e),t),i=r?.[Yx];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(gS(n,r)&&(n!==void 0||pS(e.base_,t,e.type_)))return!0;fC(e),dC(e)}return e.copy_[t]===n&&(n!==void 0||pS(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),nC(e,t,n),!0)},deleteProperty(e,t){return fC(e),sC(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),dC(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=TS(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[iS]:!0,[nS]:e.type_!==1||t!==`length`,[rS]:r[rS],[aS]:n[t]}},defineProperty(){Zx(11)},getPrototypeOf(e){return $x(e.base_)},setPrototypeOf(){Zx(12)}},oC={};for(let e in aC){let t=aC[e];oC[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}oC.deleteProperty=function(e,t){return isNaN(parseInt(t))&&Zx(13),oC.set.call(this,e,t,void 0)},oC.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&Zx(14),aC.set.call(this,e[0],t,n,e[0])};function sC(e,t){let n=e[Yx];return(n?TS(n):e)[t]}function cC(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!sS(n)||n[Yx]?!1:e.baseRefs_.has(n)}function lC(e,t,n){let r=uC(t,n);return r?aS in r?r[aS]:r.get?.call(e.draft_):void 0}function uC(e,t){if(!(t in e))return;let n=$x(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=$x(n)}}function dC(e){e.modified_||(e.modified_=!0,e.parent_&&dC(e.parent_))}function fC(e){e.copy_||=(e.assigned_=new Map,DS(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var pC=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(xS(e)&&!xS(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}xS(t)||Zx(6),n!==void 0&&!xS(n)&&Zx(7);let r;if(sS(e)){let i=GS(this),a=mC(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?US(i):WS(i)}return HS(i,n),qS(r,i)}if(!e||!bS(e)){if(r=t(e),r===void 0&&(r=e),r===qx&&(r=void 0),this.autoFreeze_&&OS(r,!0),n){let t=[],i=[];IS(NS).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}Zx(1,e)},this.produceWithPatches=(e,t)=>{if(xS(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},SS(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),SS(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),SS(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){sS(e)||Zx(8),oS(e)&&(e=hC(e));let t=GS(this),n=mC(t,e,void 0);return n[Yx].isManual_=!0,WS(t),n}finishDraft(e,t){let n=e&&e[Yx];(!n||!n.isManual_)&&Zx(9);let{scope_:r}=n;return HS(r,t),qS(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=IS(NS).applyPatches_;return oS(e)?r(e,t):this.produce(e,e=>r(e,t))}};function mC(e,t,n,r){let[i,a]=vS(t)?IS(MS).proxyMap_(t,n):yS(t)?IS(MS).proxySet_(t,n):iC(t,n);return(n?.scope_??BS()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?eC(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function hC(e){return oS(e)||Zx(10,e),gC(e)}function gC(e){if(!sS(e)||jS(e))return e;let t=e[Yx],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=DS(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=DS(e,!0);return dS(n,(e,t)=>{hS(n,e,gC(t))},r),t&&(t.finalized_=!1),n}function _C(){Xx.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=wS(mS(e,n.key_)),i=mS(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||pS(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e{let u=mS(o,e,c),f=mS(s,e,c),p=l?pS(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===qx?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e[e,u(t)]));if(yS(e))return new Set(Array.from(e).map(u));let t=Object.create($x(e));for(let n in e)t[n]=u(e[n]);return pS(e,Jx)&&(t[Jx]=e[Jx]),t}function d(e){return oS(e)?u(e):e}RS(NS,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var vC=new pC,yC=vC.produce,bC=vC.produceWithPatches.bind(vC),xC=vC.applyPatches.bind(vC),SC=1e3;function CC(e,t){if(e.add(t),e.size>SC){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function wC(e){let{enablePatches:t=!1}=e;t&&_C();let n=Rx(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=Kx())=>{i.has(t)||(_C(),r=xC(r,e),CC(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=Kx())=>{if(!i.has(a)){if(CC(i,a),t){let[t,i]=bC(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=yC(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}var TC=typeof self==`object`?self:globalThis,EC=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),DC=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function OC(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=EC.has(e)?TC[e]:void 0;return n(new(r??TC.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&DC.has(a))return n(new TC[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function kC(e){return OC(new Map,e)(0)}var AC=``,{toString:jC}={},{keys:MC}=Object;function NC(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=jC.call(e).slice(8,-1);switch(n){case`Array`:return[1,AC];case`Object`:return[2,AC];case`Date`:return[3,AC];case`RegExp`:return[4,AC];case`Map`:return[5,AC];case`Set`:return[6,AC];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function PC([e,t]){return e===0&&(t===`function`||t===`symbol`)}function FC(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=NC(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of MC(r))(e||!PC(NC(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(PC(NC(n))||PC(NC(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!PC(NC(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function IC(e,t={}){let n=[];return FC(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:LC,stringify:RC}=JSON,zC={json:!0,lossy:!0};function BC(e){return kC(LC(e))}function VC(e){return RC(IC(e,zC))}function HC(e){return kC(e)}function UC(e){return VC(e)}function WC(e){return BC(e)}var GC=256,KC=class extends Error{name=`StreamClosedError`};function qC(e={}){let t=e.id??Kx(),n=Math.max(0,e.replayWindow??0),r=Rx(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new KC(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=YC(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function JC(e={}){let t=e.id??Kx(),n=Math.max(1,e.highWaterMark??GC),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function YC(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var XC=128;function ZC(e){return e.replace(/[^\w-]+/g,`_`).slice(0,XC)}var QC=`modulepreload`,$C=function(e,t){return new URL(e,t).href},ew={},tw=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=$C(t,n),t=s(t),t in ew)return;ew[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:QC,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},nw=`__connection.json`,rw=`__DEVFRAME_CONNECTION__`,iw=`x-birpc-session`,aw=`__rpc-dump/index.json`,ow=`devframe:services`,sw=`devframe_otp`,cw=`devframe_auth_token`;ix.postMessage.remoteAssetsError;var lw=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>Lx(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},uw=sx({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function dw(e){if(e.agent&&e.jsonSerializable===!1)throw uw.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function fw(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function pw(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function mw(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function _w(e,t){let n=e.handler;if(!n){let r=await gw(e,t);if(!r.handler)throw uw.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await mw(e.name,r,t),o=await a(...n);return await hw(e.name,i,o)}}var vw=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return _w(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw uw.DF0021({name:e.name});dw(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw uw.DF0022({name:e.name});dw(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await _w(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw uw.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function yw(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw xw(t,`undefined`,r,e);return n}return i!==null&&bw(i,r,e,t),n})}function bw(e,t,n,r){if(typeof e==`bigint`)throw xw(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw xw(r,`Map`,t,n);if(e instanceof Set)throw xw(r,`Set`,t,n);if(e instanceof Date)throw xw(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw xw(r,e.constructor?.name??`class instance`,t,n)}function xw(e,t,n,r){let i=Sw(n,r);return uw.DF0020({name:e||``,type:t,path:i})}function Sw(e,t){return Array.isArray(e)?`[${t}]`:t===``?``:t}var Cw=`__DEVFRAME_CONNECTION_META__`,ww=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Tw(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function Ew(){return Tw(rw)}function Dw(){return Tw(Cw)}function Ow(e){if(e)return e;try{let e=localStorage.getItem(ww);if(e)return e}catch{}return Tw(ww)}function kw(e){globalThis[rw]=e,globalThis[Cw]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&Aw(e.authToken)}function Aw(e){try{localStorage.setItem(ww,e)}catch{}globalThis[ww]=e;let t=Ew();t&&(globalThis[rw]={...t,authToken:e})}function jw(e){let t=Ux(nw,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function Mw(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function Nw(){let e=Ew();if(e)return Mw(e,Ow()??e.authToken??e.connectionMeta.authToken);let t=Dw();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??jw(`./`),authToken:Ow(t.authToken)}}async function Pw(e={}){if(e.connection){let t=Mw(e.connection,Ow(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return kw(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:jw(t[0]??`./`),authToken:Ow(e.authToken??e.connectionMeta.authToken)};return kw(n),n}let n=Nw();if(n){let t=Mw(n,Ow(e.authToken??n.authToken??n.connectionMeta.authToken));return kw(t),t}let r=[];for(let n of t){let t=Ux(nw,n),i=jw(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:Ow(e.authToken??r.authToken)};return kw(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var Fw=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Iw(e=sw){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function Lw(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function Rw(e=sw){let t=Iw(e);return t&&Lw(e),t}async function zw(e,t={}){let n=Rw(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function Bw(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(ow,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function Vw(e){let t=new Map,n=new Map,r=new Map,i=new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:ix.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:ix.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(c,l)=>{if(l?.initialValue!==void 0&&r.set(c,l.initialValue),t.has(c))return t.get(c);let u=wC({initialValue:l?.initialValue,enablePatches:!1});async function d(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,c),l?.initialValue!==void 0){t.set(c,u);for(let e of i)e(c);return e.call(`devframe:rpc:server-state:get`,c).then(e=>{e!==void 0&&u.mutate(()=>o(c,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(c,s(c,u)),u}{let r=await e.call(`devframe:rpc:server-state:get`,c);u.mutate(()=>o(c,r)),t.set(c,u);for(let e of i)e(c);return n.set(c,s(c,u)),u}}return new Promise(t=>{if(e.isTrusted)d().then(t);else{t(u);let n=!1;e.events.on(ix.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,d())})}})}}}var Hw=new Map;function Uw(e=Hw){let t=new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?yw(n,r??``):`s:${UC(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?WC(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function Ww(){}function Gw(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function Kw(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function qw(e){let{onConnected:t=Ww,onError:n=Ww,onDisconnected:r=Ww,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${cw}=${encodeURIComponent(e.authToken)}`);let s=Uw(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function ee(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=Gw(r);if(!e)break;r=e.rest;let{event:t,data:n}=Kw(e.frame);n.length>0&&_(t,n.join(` -`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await ee(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[iw]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Jw(e,t){let{channel:n,rpcOptions:r={}}=t;return _x(e,{...n,timeout:-1,...r,proxify:!1})}function Yw(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(ix.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Fw(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Fw(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(ix.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Fw(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(ix.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let ee=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(ix.client.connectionError,e),m(new Fw(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Fw(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),v=Jw(a.functions,{channel:ee,rpcOptions:o});a.register({name:ix.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Fw(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e),m(e),i.emit(ix.client.isTrustedUpdated,!1)}});let te=n;async function ne(e){te=e;let t=await v.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Fw(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e)}return i.emit(ix.client.isTrustedUpdated,c),t.isTrusted}async function re(e){let t=(await v.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(te=t,c=!0,d.resolve(!0),f(`connected`),i.emit(ix.client.isTrustedUpdated,!0)),t}async function ie(e={}){await v.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function ae(){return c?!0:ne(te??``)}async function oe(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:ae,requestTrustWithToken:ne,requestTrustWithCode:re,requestAuthCode:ie,ensureTrusted:oe,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(ix.client.error,t,String(e[0]));return}return v.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$callOptional(...e),t)},close:()=>{ee.close()}}}function Xw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Zw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Xw(n.sse,r??`./`,location);return Yw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>qw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Qw(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:$w(r)?Qw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function $w(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function eT(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function tT(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function nT(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function rT(e){if(e.error)throw Qw(e.error);return e.output}function iT(e){return e.some(e=>e!=null)}function aT(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function oT(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?HC(e):e}function a(e,t){return i(aT(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return nT(r)?rT(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(eT(r)){if(iT(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(tT(r)){let e=Lx(n),i=r.records[e];if(i)return rT(await s(i,r.serialization));if(r.fallback)return rT(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!iT(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function sT(e){let t=oT(await e.fetchJsonFromBases(aw),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var cT=``;function lT(e,t){return`${e}${cT}${t}`}function uT(e){let t=new Map,n=new Map;e.client.register({name:ix.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(lT(e,n))?._push(r,i)}}),e.client.register({name:ix.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=lT(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:ix.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=lT(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(ix.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(cT);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=lT(n,r),o=t.get(a);if(o)return o;let s=JC({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(ix.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=lT(t,r),a=n.get(i);if(a)return a;let o=qC({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function dT(){}var fT=new Map;function pT(e){let t=e.url;e.authToken&&(t=`${t}?${cw}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=dT,onError:i=dT,onDisconnected:a=dT,definitions:o=fT}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Uw(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function mT(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Wx(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function hT(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=mT(n.websocket,r??`./`,location);return Yw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>pT({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function gT(e){return e.includes(`:`)}function _T(e,t){return gT(t)?t:`${e}:${t}`}function vT(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function yT(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return vT(a)}function bT(e,t){return{global:yT(e,t,`global`),project:yT(e,t,`project`)}}function xT(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(gT(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(_T(t,n),...r)),callEvent:((n,...r)=>e.callEvent(_T(t,n),...r)),callOptional:((n,...r)=>e.callOptional(_T(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(_T(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(_T(t,n),r,i),upload:(n,r)=>e.streaming.upload(_T(t,n),r)}},settings:bT(e,t),scope:e.scope}}function ST(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function CT(e,t={}){let n=t.modelContext??ST();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=ZC(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=vx(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:xx(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>wT(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function wT(e,t,n){try{let r=Cx(n,e.args?.length);return{content:[{type:`text`,text:TT(await(await _w(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:ET(e)}]}}}function TT(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function ET(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function DT(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function OT(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Rx(),a=Array.isArray(t)?t:[t],o=await Pw(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new lw({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new vw(f),m=e.webmcp===!1?void 0:CT(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ux(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let ee={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},v=DT(e.transport??`auto`,s),te=v===`static`?await sT({fetchJsonFromBases:_}):v===`sse`?Zw({...ee,sseOptions:e.sseOptions}):hT({...ee,wsOptions:e.wsOptions}),ne;try{ne=new BroadcastChannel(`devframe-auth`)}catch{}let re,ie=!1;function ae(e){return((...t)=>ie||!re?e(...t):re.then(()=>e(...t)))}function oe(){g=!0;try{h?.(),m?.()}finally{try{ne?.close()}finally{te.close?.()}}}let se={events:i,get isTrusted(){return te.isTrusted},get status(){return te.status},get connectionError(){return te.connectionError},get transport(){return te.transport??v},get connection(){return o},connectionMeta:s,ensureTrusted:te.ensureTrusted,requestTrust:te.requestTrust,requestTrustWithToken:async e=>(Aw(e),o={...o,authToken:e},te.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await te.requestTrustWithCode(e);if(!t)return!1;Aw(t),o={...o,authToken:t};try{ne?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>te.requestAuthCode(e),call:ae(te.call),callEvent:ae(te.callEvent),callOptional:ae(te.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:oe};se.sharedState=Vw(se),se.streaming=uT(se),se.services=Bw(se);let ce=new Map;se.scope=(e=>{if(!e)return se;let t=ce.get(e);return t||(t=xT(se,e),ce.set(e,t)),t}),f.rpc=se;function le(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ue(){if(e.simpleAuth!==!1&&le()&&typeof globalThis.prompt==`function`)for(await se.requestAuthCode().catch(()=>{});!se.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await se.requestTrustWithCode(t))return}}async function de(){let t=await te.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await zw(se,{param:n}):!1;t||r||se.isTrusted||await ue()}return re=de().then(()=>{ie=!0},()=>{ie=!0}),s.mcp&&tw(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-ByPb1U-h.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(se))}).catch(()=>{}),ne&&(ne.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&se.requestTrustWithToken(e.data.authToken)}),se}var kT=OT,AT=[`components`,`injectors`,`signals`,`ngrx`,`forms`,`router`,`pipes`,`http`,`analog`],jT=[`forms`,`router`,`ngrx`,`http`,`analog`],MT={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3}},NT=`ng-devtools`;function PT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function FT(e,t){return typeof e==`boolean`?e:t}var IT=100,LT=100;function RT(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=LT);return[...new Set(t)].slice(0,IT)}function zT(e,t){let{default:n,min:r,max:i}=MT[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function BT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function VT(e){let t=PT(e),n=PT(t.agent),r=PT(t.inspectors),i=PT(n.tools),a=PT(t.actions),o=FT(t.actions,!0),s=PT(t.redaction),c=PT(t.limits),l=BT(AT,e=>FT(r[e],!0));return{inspectors:l,agent:{readOnly:FT(n.readOnly,!1),tools:BT(AT,e=>l[e]&&FT(i[e],!0))},actions:BT(jT,e=>l[e]&&FT(a[e],o)),redaction:{secretNames:RT(s.secretNames),unmask:RT(s.unmask)},limits:Object.fromEntries(Object.keys(MT).map(e=>[e,zT(c[e],e)]))}}function HT(e){let t=e?.configs;return VT(t?.[NT])}function UT(e){return`${{forms:`Writing to forms`,router:`Navigating`,ngrx:`Restoring NgRx state and dispatching actions`,http:`Changing HTTP mock rules and clearing HTTP calls`,analog:`Calling API routes`}[e]} is turned off in the devtools config (actions.${e}).`}var WT={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`},GT={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore and dispatch`,http:`HTTP mocking`,analog:`Analog API calls`},KT={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`};function qT(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=AT.filter(t=>e.inspectors[t]);return n(`Inspectors off`,AT.filter(t=>!e.inspectors[t]).map(e=>WT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>WT[e])),n(`Blocked actions`,jT.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>GT[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(MT).filter(t=>e.limits[t]!==MT[t].default).map(t=>KT[t](e.limits[t]))),t}var JT=`ng-devtools-page-id`,YT=null;function XT(e){YT=e}function ZT(){if(YT)return YT;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(JT)||null)}catch{return null}}function QT(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function $T(e,t){return e?t?e.pages?.[t]??null:e:null}function eE(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function tE(e,t,n){return e?e.scope(`ng-devtools`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function nE(e,t,n){return tE(e,t,n).then(e=>e,()=>null)}function rE(e){return e?.connectionMeta.backend===`static`}function iE(e){let t=()=>{let t=e()?.scope(`ng-devtools`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function aE(e){return HT(e?.connectionMeta)}function oE(e,t){return aE(e).actions[t]}var sE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`};function cE(e,t){let n=sE[e];return!n||t.inspectors[n]}function lE(e,t){e&1&&(ps(),U(0,`rect`,3)(1,`rect`,4)(2,`rect`,5)(3,`rect`,6))}function uE(e,t){e&1&&(ps(),U(0,`path`,7)(1,`path`,8)(2,`path`,9))}function dE(e,t){e&1&&(ps(),U(0,`circle`,10)(1,`path`,11)(2,`circle`,12))}function fE(e,t){e&1&&(ps(),U(0,`path`,1))}function pE(e,t){e&1&&(ps(),U(0,`path`,13)(1,`path`,14)(2,`path`,15)(3,`path`,16))}function mE(e,t){e&1&&(ps(),U(0,`ellipse`,17)(1,`path`,18)(2,`path`,19))}function hE(e,t){e&1&&(ps(),U(0,`rect`,20)(1,`path`,21)(2,`path`,22)(3,`path`,23))}function gE(e,t){e&1&&(ps(),U(0,`circle`,24)(1,`path`,25)(2,`path`,26))}function _E(e,t){e&1&&(ps(),U(0,`path`,27)(1,`path`,28)(2,`path`,29)(3,`path`,30)(4,`circle`,31))}function vE(e,t){e&1&&(ps(),U(0,`path`,2))}var yE=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=Vh({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:11,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M3 12h18`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`]],template:function(e,t){if(e&1&&(ps(),V(0,`svg`,0),N(1,lE,4,0)(2,uE,3,0)(3,dE,3,0)(4,fE,1,0,`:svg:path`,1)(5,pE,4,0)(6,mE,3,0)(7,hE,4,0)(8,gE,3,0)(9,_E,5,0)(10,vE,1,0,`:svg:path`,2),H()),e&2){let e;j(),P((e=t.name())===`dashboard`?1:e===`components`?2:e===`routes`?3:e===`signals`?4:e===`injectors`?5:e===`store`?6:e===`forms`?7:e===`network`?8:e===`pipes`?9:e===`analog`?10:-1)}},styles:[`[_nghost-%COMP%] { +`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await ee(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[iw]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Jw(e,t){let{channel:n,rpcOptions:r={}}=t;return _x(e,{...n,timeout:-1,...r,proxify:!1})}function Yw(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(ix.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Fw(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Fw(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(ix.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Fw(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(ix.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let ee=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(ix.client.connectionError,e),m(new Fw(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Fw(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),v=Jw(a.functions,{channel:ee,rpcOptions:o});a.register({name:ix.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Fw(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e),m(e),i.emit(ix.client.isTrustedUpdated,!1)}});let te=n;async function ne(e){te=e;let t=await v.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Fw(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(ix.client.connectionError,e)}return i.emit(ix.client.isTrustedUpdated,c),t.isTrusted}async function re(e){let t=(await v.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(te=t,c=!0,d.resolve(!0),f(`connected`),i.emit(ix.client.isTrustedUpdated,!0)),t}async function ie(e={}){await v.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function ae(){return c?!0:ne(te??``)}async function oe(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:ae,requestTrustWithToken:ne,requestTrustWithCode:re,requestAuthCode:ie,ensureTrusted:oe,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(ix.client.error,t,String(e[0]));return}return v.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(ix.client.error,n,t),Promise.reject(n)):g(v.$callOptional(...e),t)},close:()=>{ee.close()}}}function Xw(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Zw(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Xw(n.sse,r??`./`,location);return Yw({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>qw({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Qw(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:$w(r)?Qw(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function $w(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function eT(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function tT(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function nT(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function rT(e){if(e.error)throw Qw(e.error);return e.output}function iT(e){return e.some(e=>e!=null)}function aT(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function oT(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?HC(e):e}function a(e,t){return i(aT(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return nT(r)?rT(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(eT(r)){if(iT(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(tT(r)){let e=Lx(n),i=r.records[e];if(i)return rT(await s(i,r.serialization));if(r.fallback)return rT(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!iT(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function sT(e){let t=oT(await e.fetchJsonFromBases(aw),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var cT=``;function lT(e,t){return`${e}${cT}${t}`}function uT(e){let t=new Map,n=new Map;e.client.register({name:ix.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(lT(e,n))?._push(r,i)}}),e.client.register({name:ix.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=lT(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:ix.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=lT(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(ix.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(cT);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=lT(n,r),o=t.get(a);if(o)return o;let s=JC({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(ix.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=lT(t,r),a=n.get(i);if(a)return a;let o=qC({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function dT(){}var fT=new Map;function pT(e){let t=e.url;e.authToken&&(t=`${t}?${cw}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=dT,onError:i=dT,onDisconnected:a=dT,definitions:o=fT}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Uw(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function mT(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return Wx(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function hT(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=mT(n.websocket,r??`./`,location);return Yw({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>pT({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function gT(e){return e.includes(`:`)}function _T(e,t){return gT(t)?t:`${e}:${t}`}function vT(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function yT(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return vT(a)}function bT(e,t){return{global:yT(e,t,`global`),project:yT(e,t,`project`)}}function xT(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(gT(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(_T(t,n),...r)),callEvent:((n,...r)=>e.callEvent(_T(t,n),...r)),callOptional:((n,...r)=>e.callOptional(_T(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(_T(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(_T(t,n),r,i),upload:(n,r)=>e.streaming.upload(_T(t,n),r)}},settings:bT(e,t),scope:e.scope}}function ST(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function CT(e,t={}){let n=t.modelContext??ST();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=ZC(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=vx(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:xx(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>wT(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function wT(e,t,n){try{let r=Cx(n,e.args?.length);return{content:[{type:`text`,text:TT(await(await _w(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:ET(e)}]}}}function TT(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function ET(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function DT(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function OT(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Rx(),a=Array.isArray(t)?t:[t],o=await Pw(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new lw({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new vw(f),m=e.webmcp===!1?void 0:CT(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Ux(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let ee={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},v=DT(e.transport??`auto`,s),te=v===`static`?await sT({fetchJsonFromBases:_}):v===`sse`?Zw({...ee,sseOptions:e.sseOptions}):hT({...ee,wsOptions:e.wsOptions}),ne;try{ne=new BroadcastChannel(`devframe-auth`)}catch{}let re,ie=!1;function ae(e){return((...t)=>ie||!re?e(...t):re.then(()=>e(...t)))}function oe(){g=!0;try{h?.(),m?.()}finally{try{ne?.close()}finally{te.close?.()}}}let se={events:i,get isTrusted(){return te.isTrusted},get status(){return te.status},get connectionError(){return te.connectionError},get transport(){return te.transport??v},get connection(){return o},connectionMeta:s,ensureTrusted:te.ensureTrusted,requestTrust:te.requestTrust,requestTrustWithToken:async e=>(Aw(e),o={...o,authToken:e},te.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await te.requestTrustWithCode(e);if(!t)return!1;Aw(t),o={...o,authToken:t};try{ne?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>te.requestAuthCode(e),call:ae(te.call),callEvent:ae(te.callEvent),callOptional:ae(te.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:oe};se.sharedState=Vw(se),se.streaming=uT(se),se.services=Bw(se);let ce=new Map;se.scope=(e=>{if(!e)return se;let t=ce.get(e);return t||(t=xT(se,e),ce.set(e,t)),t}),f.rpc=se;function le(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ue(){if(e.simpleAuth!==!1&&le()&&typeof globalThis.prompt==`function`)for(await se.requestAuthCode().catch(()=>{});!se.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await se.requestTrustWithCode(t))return}}async function de(){let t=await te.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await zw(se,{param:n}):!1;t||r||se.isTrusted||await ue()}return re=de().then(()=>{ie=!0},()=>{ie=!0}),s.mcp&&tw(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-CX0hg10w.js`);return{setupBrowserAgentRpcBridge:e}},[],import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(se))}).catch(()=>{}),ne&&(ne.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&se.requestTrustWithToken(e.data.authToken)}),se}var kT=OT,AT=[`components`,`injectors`,`signals`,`ngrx`,`forms`,`router`,`pipes`,`http`,`analog`],jT=[`forms`,`router`,`ngrx`,`http`,`analog`],MT={refreshMs:{default:3e3,min:500,max:8e3},navigations:{default:50,min:5,max:500},formTimeline:{default:200,min:10,max:2e3},httpCalls:{default:200,min:10,max:2e3},changeLog:{default:200,min:10,max:2e3},cdCycles:{default:200,min:10,max:2e3}},NT=`ng-devtools`;function PT(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function FT(e,t){return typeof e==`boolean`?e:t}var IT=100,LT=100;function RT(e){if(!Array.isArray(e))return[];let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e&&e.length<=LT);return[...new Set(t)].slice(0,IT)}function zT(e,t){let{default:n,min:r,max:i}=MT[t];return typeof e!=`number`||!Number.isFinite(e)?n:Math.min(i,Math.max(r,Math.round(e)))}function BT(e,t){return Object.fromEntries(e.map(e=>[e,t(e)]))}function VT(e){let t=PT(e),n=PT(t.agent),r=PT(t.inspectors),i=PT(n.tools),a=PT(t.actions),o=FT(t.actions,!0),s=PT(t.redaction),c=PT(t.limits),l=BT(AT,e=>FT(r[e],!0));return{inspectors:l,agent:{readOnly:FT(n.readOnly,!1),tools:BT(AT,e=>l[e]&&FT(i[e],!0))},actions:BT(jT,e=>l[e]&&FT(a[e],o)),redaction:{secretNames:RT(s.secretNames),unmask:RT(s.unmask)},limits:Object.fromEntries(Object.keys(MT).map(e=>[e,zT(c[e],e)]))}}function HT(e){let t=e?.configs;return VT(t?.[NT])}function UT(e){return`${{forms:`Writing to forms`,router:`Navigating`,ngrx:`Restoring NgRx state and dispatching actions`,http:`Changing HTTP mock rules and clearing HTTP calls`,analog:`Calling API routes`}[e]} is turned off in the devtools config (actions.${e}).`}var WT={components:`Components`,injectors:`Injectors`,signals:`Signals`,ngrx:`NgRx`,forms:`Forms`,router:`Router`,pipes:`Pipes`,http:`HTTP`,analog:`Analog`},GT={forms:`Form writes`,router:`Navigation`,ngrx:`NgRx restore and dispatch`,http:`HTTP mocking`,analog:`Analog API calls`},KT={refreshMs:e=>`poll every ${e} ms`,navigations:e=>`${e} navigations`,formTimeline:e=>`${e} form events`,httpCalls:e=>`${e} HTTP calls`,changeLog:e=>`${e} NgRx changes`,cdCycles:e=>`${e} change detection cycles`};function qT(e){let t=[],n=(e,n)=>{n.length&&t.push({label:e,value:n.join(`, `)})},r=AT.filter(t=>e.inspectors[t]);return n(`Inspectors off`,AT.filter(t=>!e.inspectors[t]).map(e=>WT[e])),n(`Agent`,e.agent.readOnly?[`Read-only`]:[]),n(`Hidden from the agent`,r.filter(t=>!e.agent.tools[t]).map(e=>WT[e])),n(`Blocked actions`,jT.filter(t=>e.inspectors[t]&&!e.actions[t]).map(e=>GT[e])),n(`Extra secret names`,e.redaction.secretNames),n(`Unmasked names`,e.redaction.unmask),n(`Limits`,Object.keys(MT).filter(t=>e.limits[t]!==MT[t].default).map(t=>KT[t](e.limits[t]))),t}var JT=`ng-devtools-page-id`,YT=null;function XT(e){YT=e}function ZT(){if(YT)return YT;try{return new URLSearchParams(location.search).get(`pageId`)||(window.top===window?null:sessionStorage.getItem(JT)||null)}catch{return null}}function QT(e,t){if(t.chosen&&e[t.chosen])return t.chosen;if(t.host)return t.host;if(t.previous&&e[t.previous])return t.previous;let n=null;for(let t of Object.values(e))(!n||t.reportedAt>n.reportedAt)&&(n=t);return n?.pageId??null}function $T(e,t){return e?t?e.pages?.[t]??null:e:null}function eE(e,t){return e?t?e.pages?.[t]??null:e.graph??null:null}function tE(e,t,n){return e?e.scope(`ng-devtools`).rpc.call(t,...n===void 0?[]:[n]):Promise.resolve(null)}function nE(e,t,n){return tE(e,t,n).then(e=>e,()=>null)}function rE(e){return e?.connectionMeta.backend===`static`}function iE(e){let t=()=>{let t=e()?.scope(`ng-devtools`).rpc;t&&(t.callEvent(`request-page-highlight`,null),t.callEvent(`request-form-highlight`,null))};return addEventListener(`pagehide`,t),()=>{removeEventListener(`pagehide`,t),t()}}function aE(e){return HT(e?.connectionMeta)}function oE(e,t){return aE(e).actions[t]}var sE={components:`components`,routes:`router`,signals:`signals`,injectors:`injectors`,store:`ngrx`,forms:`forms`,pipes:`pipes`,network:`http`,analog:`analog`};function cE(e,t){let n=sE[e];return!n||t.inspectors[n]}function lE(e,t){e&1&&(ps(),U(0,`rect`,3)(1,`rect`,4)(2,`rect`,5)(3,`rect`,6))}function uE(e,t){e&1&&(ps(),U(0,`path`,7)(1,`path`,8)(2,`path`,9))}function dE(e,t){e&1&&(ps(),U(0,`circle`,10)(1,`path`,11)(2,`circle`,12))}function fE(e,t){e&1&&(ps(),U(0,`path`,1))}function pE(e,t){e&1&&(ps(),U(0,`path`,13)(1,`path`,14)(2,`path`,15)(3,`path`,16))}function mE(e,t){e&1&&(ps(),U(0,`ellipse`,17)(1,`path`,18)(2,`path`,19))}function hE(e,t){e&1&&(ps(),U(0,`rect`,20)(1,`path`,21)(2,`path`,22)(3,`path`,23))}function gE(e,t){e&1&&(ps(),U(0,`circle`,24)(1,`path`,25)(2,`path`,26))}function _E(e,t){e&1&&(ps(),U(0,`path`,27)(1,`path`,28)(2,`path`,29)(3,`path`,30)(4,`circle`,31))}function vE(e,t){e&1&&(ps(),U(0,`path`,2))}var yE=class e{name=$.required();static ɵfac=function(t){return new(t||e)};static ɵcmp=Vh({type:e,selectors:[[`app-tab-icon`]],inputs:{name:[1,`name`]},decls:11,vars:1,consts:[[`viewBox`,`0 0 24 24`,`width`,`16`,`height`,`16`,`fill`,`none`,`stroke`,`currentColor`,`stroke-width`,`1.8`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`],[`d`,`M22 12h-4l-3 9L9 3l-3 9H2`],[`d`,`m8 3 4 8 5-5 5 15H2L8 3z`],[`x`,`3`,`y`,`3`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`14`,`y`,`3`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`x`,`14`,`y`,`12`,`width`,`7`,`height`,`9`,`rx`,`1.5`],[`x`,`3`,`y`,`16`,`width`,`7`,`height`,`5`,`rx`,`1.5`],[`d`,`M12 2 3 7l9 5 9-5-9-5Z`],[`d`,`m3 12 9 5 9-5`],[`d`,`m3 17 9 5 9-5`],[`cx`,`6`,`cy`,`19`,`r`,`3`],[`d`,`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`],[`cx`,`18`,`cy`,`5`,`r`,`3`],[`d`,`M12 22v-5`],[`d`,`M9 8V2`],[`d`,`M15 8V2`],[`d`,`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`],[`cx`,`12`,`cy`,`5`,`rx`,`9`,`ry`,`3`],[`d`,`M3 5v14a9 3 0 0 0 18 0V5`],[`d`,`M3 12a9 3 0 0 0 18 0`],[`x`,`3`,`y`,`4`,`width`,`18`,`height`,`16`,`rx`,`2`],[`d`,`M7 9h10`],[`d`,`M7 13h6`],[`d`,`M7 17h8`],[`cx`,`12`,`cy`,`12`,`r`,`9`],[`d`,`M3 12h18`],[`d`,`M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18Z`],[`d`,`M4 7h10`],[`d`,`M4 17h6`],[`d`,`m14 13 4 4-4 4`],[`d`,`M10 17h8`],[`cx`,`18`,`cy`,`7`,`r`,`3`]],template:function(e,t){if(e&1&&(ps(),V(0,`svg`,0),N(1,lE,4,0)(2,uE,3,0)(3,dE,3,0)(4,fE,1,0,`:svg:path`,1)(5,pE,4,0)(6,mE,3,0)(7,hE,4,0)(8,gE,3,0)(9,_E,5,0)(10,vE,1,0,`:svg:path`,2),H()),e&2){let e;j(),P((e=t.name())===`dashboard`?1:e===`components`?2:e===`routes`?3:e===`signals`?4:e===`injectors`?5:e===`store`?6:e===`forms`?7:e===`network`?8:e===`pipes`?9:e===`analog`?10:-1)}},styles:[`[_nghost-%COMP%] { display: inline-flex; flex-shrink: 0; }`]})},bE=(e,t)=>t.tab,xE=(e,t)=>t.label;function SE(e,t){e&1&&J(0),e&2&&X(` `,K().meta()?.projectName,` `)}function CE(e,t){e&1&&J(0,` Project details unavailable `)}function wE(e,t){e&1&&J(0,` Loading… `)}function TE(e,t){e&1&&(J(0,` Run `),R(1,`code`),J(2,`ng-devtools build`),z(),J(3,` again to rebuild the report. `))}function EE(e,t){e&1&&J(0,` Check that the dev server is running, then reload the panel. `)}function DE(e,t){if(e&1&&(R(0,`p`,4),N(1,TE,4,0)(2,EE,1,0),z()),e&2){let e=K();j(),P(e.staticReport()?1:2)}}function OE(e,t){e&1&&(R(0,`li`,6)(1,`span`),J(2,`Analog`),z(),J(3),z()),e&2&&(j(3),Y(t))}function kE(e,t){e&1&&(R(0,`li`)(1,`span`),J(2,`Change detection`),z(),J(3),z()),e&2&&(j(3),Y(t))}function AE(e,t){if(e&1&&(R(0,`span`,17),J(1),z(),R(2,`span`,18),J(3),z()),e&2){let e=K().$implicit,t=K();j(),Y(t.cards()[e.tab]?.value),j(2),Y(t.cards()[e.tab]?.sub)}}function jE(e,t){e&1&&(R(0,`span`,19),J(1,`–`),z(),R(2,`span`,18),J(3,`Count unavailable`),z())}function ME(e,t){e&1&&(B(0,`span`,20),R(1,`span`,18),J(2,`Counting…`),z())}function NE(e,t){if(e&1){let e=W();R(0,`button`,11),G(`click`,function(){let t=O(e).$implicit;return k(K().navigate.emit(t.tab))}),R(1,`span`,12)(2,`span`,13),B(3,`app-tab-icon`,14),z(),R(4,`span`,15),J(5,`→`),z()(),R(6,`span`,16),J(7),z(),N(8,AE,4,2)(9,jE,4,0)(10,ME,3,0),z()}if(e&2){let e,n=t.$implicit,r=t.$index,i=K().stateOf(n.tab);C_(`animation-delay`,60*r,`ms`),M(`aria-busy`,i===`loading`),j(3),L(`name`,n.tab),j(4),Y(n.label),j(),P((e=i)===`ready`?8:e===`error`?9:10)}}function PE(e,t){e&1&&(R(0,`p`),J(1,`Loading…`),z())}function FE(e,t){if(e&1&&(R(0,`div`)(1,`dt`),J(2),z(),R(3,`dd`),J(4),z()()),e&2){let e=t.$implicit;j(2),Y(e.label),j(2),Y(e.value)}}function IE(e,t){if(e&1&&(R(0,`dl`),F(1,FE,5,2,`div`,null,xE),z()),e&2){let e=K();j(),I(e.configItems())}}function LE(e,t){e&1&&(R(0,`p`),J(1,`Defaults`),z())}var RE=[{tab:`components`,label:`Components`},{tab:`routes`,label:`Routes`},{tab:`signals`,label:`Signals`},{tab:`injectors`,label:`Injectors`},{tab:`store`,label:`NgRx declarations`},{tab:`pipes`,label:`Pipes`}],zE={zoneless:`Zoneless`,zone:`zone.js`,"zone-unused":`Zoneless, zone.js loaded`};function BE(e){return e&&Object.hasOwn(zE,e)?zE[e]:null}var VE=new Set([`signal`,`computed`,`linkedSignal`,`effect`]),HE={action:[`action`,`actions`],reducer:[`reducer`,`reducers`],effect:[`effect`,`effects`],selector:[`selector`,`selectors`],feature:[`feature`,`features`],"store-setup":[`setup call`,`setup calls`],"signal-store":[`signal store`,`signal stores`],"signal-state":[`signal state`,`signal states`],"signal-method":[`signal method`,`signal methods`]};function UE(e,t,n){return`${e} ${e===1?t:n}`}function WE(e,t){for(let n of e??[])t(n),WE(n.children,t)}function GE(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`discovered in source`};let t=e.filter(e=>e.kind===`directive`).length;return{value:e.length-t,sub:`components · ${UE(t,`directive`,`directives`)}`}}function KE(e){if(!e.some(e=>e.kind))return{value:e.length,sub:`route entries in source`};let t=e.filter(e=>e.kind===`redirect`).length;return{value:new Set(e.filter(e=>e.kind===`page`).map(e=>e.fullPath??e.path??``)).size,sub:`navigable paths · ${UE(t,`redirect`,`redirects`)}`}}function qE(e){let t=new Map;for(let n of e)n.kind&&t.set(n.kind,(t.get(n.kind)??0)+1);if(!t.size)return{value:e.length,sub:`declarations in source`};let n=[...t].sort((e,t)=>t[1]-e[1]).map(([e,t])=>{let[n,r]=HE[e]??[e,e];return UE(t,n,r)});return{value:e.length,sub:n.join(` · `)}}var JE=class e{rpc=$(null);navigate=Ov();staticReport=Q(()=>rE(this.rpc()));meta=A(null);config=Q(()=>aE(this.rpc()));stats=Q(()=>this.rpc()?RE.filter(e=>cE(e.tab,this.config())):[]);configItems=Q(()=>qT(this.config()));metaState=A(`loading`);states=A({});rows=A({});injectorTree=A(null);signalGraph=A(null);pageId=ZT();destroyRef=E(ws);stopLive=[];zone=Q(()=>BE($T(this.injectorTree(),this.pageId)?.zone));liveInjectors=Q(()=>{let e=$T(this.injectorTree(),this.pageId);if(!e?.roots?.length)return null;let t=0,n=0,r=e=>{t++,n+=e.providers?.length??0};return WE(e.roots,r),WE(e.environment,r),{injectors:t,providers:n}});liveSignals=Q(()=>{let e=eE(this.signalGraph(),this.pageId);return e?.nodes?.length?e.nodes.filter(e=>VE.has(e.kind??``)).length:null});cards=Q(()=>{let e=this.rows(),t={};if(e.components&&(t.components=GE(e.components)),e.routes&&(t.routes=KE(e.routes)),e.store&&(t.store=qE(e.store)),e.pipes){let n=e.pipes.filter(e=>e.builtin).length;t.pipes={value:e.pipes.length-n,sub:n?`custom pipes · ${n} built-in in use`:`custom pipes in source`}}let n=this.liveSignals();n===null?e.signals&&(t.signals={value:e.signals.length,sub:`signal declarations in source`}):t.signals={value:n,sub:e.signals?`live on the page · ${e.signals.length} declared in source`:`live on the page`};let r=this.liveInjectors();return r?t.injectors={value:r.injectors,sub:`live injectors · ${UE(r.providers,`provider`,`providers`)}`}:e.injectors&&(t.injectors={value:e.injectors.filter(e=>e.type!==`injection`).length,sub:`provider declarations in source`}),t});constructor(){dc(()=>{let e=this.rpc();if(!e)return;let t=e.scope(`ng-devtools`);this.metaState.set(`loading`),this.states.set({}),this.rows.set({}),t.rpc.call(`build-meta`).then(e=>{this.meta.set(e),this.metaState.set(`ready`)}).catch(()=>this.metaState.set(`error`));let n=aE(e),r=e=>cE(e,n);r(`components`)&&this.load(t.rpc.call(`get-components`),`components`),r(`routes`)&&this.load(t.rpc.call(`get-routes`),`routes`),r(`signals`)&&this.load(t.rpc.call(`get-signals`),`signals`),r(`injectors`)&&this.load(t.rpc.call(`get-providers`),`injectors`),r(`store`)&&this.load(t.rpc.call(`get-ngrx-store`),`store`),r(`pipes`)&&this.load(t.rpc.call(`get-pipes`),`pipes`),this.watchLive(e,n)}),this.destroyRef.onDestroy(()=>this.unwatch())}stateOf(e){return(e===`signals`?this.liveSignals():e===`injectors`?this.liveInjectors():null)===null?this.states()[e]??`loading`:`ready`}load(e,t){let n=e=>this.states.update(n=>({...n,[t]:e}));e.then(e=>{this.rows.update(n=>({...n,[t]:Array.isArray(e)?e:[]})),n(`ready`)}).catch(()=>n(`error`))}async watchLive(e,t){this.unwatch();let n=e.scope(`ng-devtools`).rpc,r=async(t,r)=>{try{let i=await n.sharedState(t);if(this.destroyRef.destroyed||this.rpc()!==e)return;r(i.value()),this.stopLive.push(i.on(`updated`,e=>r(e)))}catch{r(null)}};await Promise.all([t.inspectors.injectors&&r(`injector-tree`,e=>this.injectorTree.set(e)),t.inspectors.signals&&r(`signal-graph`,e=>this.signalGraph.set(e))])}unwatch(){for(let e of this.stopLive.splice(0))e()}static ɵfac=function(t){return new(t||e)};static ɵcmp=Vh({type:e,selectors:[[`app-dashboard`]],inputs:{rpc:[1,`rpc`]},outputs:{navigate:`navigate`},decls:33,vars:14,consts:[[`aria-labelledby`,`project-title`,1,`project`],[1,`project-head`],[1,`eyebrow`],[`id`,`project-title`],[1,`hint`],[1,`chips`],[1,`analog`],[1,`grid`],[`type`,`button`,1,`stat`,3,`animation-delay`],[`aria-labelledby`,`config-title`,1,`config`],[`id`,`config-title`],[`type`,`button`,1,`stat`,3,`click`],[1,`top`],[1,`icon`],[3,`name`],[`aria-hidden`,`true`,1,`go`],[1,`label`],[1,`big`],[1,`sub`],[1,`big`,`muted`],[`aria-hidden`,`true`,1,`big`,`skeleton`]],template:function(e,t){if(e&1&&(R(0,`section`,0)(1,`div`,1)(2,`p`,2),J(3,`Project`),z(),R(4,`h2`,3),N(5,SE,1,1)(6,CE,1,0)(7,wE,1,0),z(),N(8,DE,3,1,`p`,4),z(),R(9,`ul`,5)(10,`li`)(11,`span`),J(12,`Angular`),z(),J(13),z(),R(14,`li`)(15,`span`),J(16,`TypeScript`),z(),J(17),z(),R(18,`li`)(19,`span`),J(20,`SSR`),z(),J(21),z(),N(22,OE,4,1,`li`,6),N(23,kE,4,1,`li`),z()(),R(24,`div`,7),F(25,NE,11,6,`button`,8,bE),z(),R(27,`section`,9)(28,`h2`,10),J(29,`Configuration`),z(),N(30,PE,2,0,`p`)(31,IE,3,0,`dl`)(32,LE,2,0,`p`),z()),e&2){let e,n,r;M(`aria-busy`,t.metaState()===`loading`),j(4),q(`muted`,t.metaState()!==`ready`),j(),P((e=t.metaState())===`ready`?5:e===`error`?6:7),j(3),P(t.metaState()===`error`?8:-1),j(),q(`pending`,t.metaState()===`loading`),j(4),Y(t.meta()?.angularVersion??`…`),j(4),Y(t.meta()?.typescript??`…`),j(4),Y(t.meta()?t.meta()?.ssr?`On`:`Off`:`…`),j(),P((n=t.meta()?.analog)?22:-1,n),j(),P((r=t.zone())?23:-1,r),j(2),I(t.stats()),j(2),M(`aria-busy`,!t.rpc()),j(3),P(t.rpc()?t.configItems().length?31:32:30)}},dependencies:[yE],styles:[`[_nghost-%COMP%] { @@ -12139,7 +12139,7 @@ h2[_ngcontent-%COMP%] { transition: none; } } -`;function HH(e,t=50){let n=e?.querySelector(`devframes-dock-standalone`)?.shadowRoot;if(n){if(n.querySelector(`style[data-ng-devtools]`))return;let t=e.createElement(`style`);t.dataset.ngDevtools=``,t.textContent=VH,n.append(t);return}t>0&&setTimeout(()=>HH(e,t-1),100)}var UH=`__DEVFRAME_HUB_CLIENT_CONTEXT__`,WH=`ng-devtools:`;function GH(){try{return window.parent===window?void 0:window.parent[UH]}catch{return}}function KH(e,t,n=50){let r=GH();if(!r){if(n<=0||window.parent===window)return()=>{};let r=()=>{},i=setTimeout(()=>r=KH(e,t,n-1),100);return()=>{clearTimeout(i),r()}}let i=e.map(e=>r.docks.getStateById(WH+e)?.events.on(`entry:activated`,()=>t(e))??(()=>{})),a=r.docks.selectedId,o=e.find(e=>WH+e===a);return o&&t(o),()=>i.forEach(e=>e())}async function qH(e){let t=GH();if(!t)return!1;try{return await t.docks.switchEntry(WH+e)}catch{return!1}}var JH=`ng-devtools-tab`;function YH(e,t,n){let r=new URLSearchParams(e.replace(/^#/,``)).get(`tab`)||t;return n.find(e=>e===r)}function XH(e){try{return sessionStorage.getItem(`${JH}:${e}`)}catch{return null}}function ZH(e,t){try{sessionStorage.setItem(`${JH}:${e}`,t)}catch{}}function QH(e,t){try{return new URL(e,t.href).origin===t.origin}catch{return!1}}function $H(e,t){if(t.protocol!==`chrome-extension:`)return!1;try{let{protocol:t}=new URL(e);return t===`http:`||t===`https:`}catch{return!1}}function eU(e=location){let t=new URLSearchParams(e.search).get(`baseURL`);if(t&&(QH(t,e)||$H(t,e)))return t;if(!(e.pathname.includes(`__ng-devtools`)||e.pathname.includes(`__devframes/`)))return[`/__ng-devtools/`,`./`]}var tU=[`nav`],nU=[`main`],rU=e=>[e],iU=(e,t)=>t.id;function aU(e,t){e&1&&(ps(),R(0,`svg`,4),B(1,`path`,20),z())}function oU(e,t){e&1&&(ps(),R(0,`svg`,4),B(1,`path`,21)(2,`path`,22)(3,`path`,23)(4,`path`,24)(5,`path`,25)(6,`path`,26),z())}function sU(e,t){e&1&&(ps(),R(0,`svg`,5)(1,`defs`)(2,`linearGradient`,27),B(3,`stop`,28)(4,`stop`,29),z()(),B(5,`path`,30),R(6,`g`,31),B(7,`path`,32)(8,`path`,33)(9,`path`,34)(10,`path`,35),z()())}function cU(e,t){e&1&&(ps(),R(0,`svg`,6),B(1,`path`,36)(2,`path`,37)(3,`path`,38)(4,`path`,39),z())}function lU(e,t){e&1&&(ps(),R(0,`svg`,7),B(1,`path`,40),z())}function uU(e,t){e&1&&(ps(),R(0,`svg`,8)(1,`defs`)(2,`linearGradient`,41),B(3,`stop`,42)(4,`stop`,43)(5,`stop`,44)(6,`stop`,45)(7,`stop`,46)(8,`stop`,47),z()(),B(9,`path`,48),z())}function dU(e,t){e&1&&(ps(),R(0,`svg`,9),B(1,`path`,49),z())}function fU(e,t){if(e&1){let e=W();R(0,`button`,51),G(`click`,function(){let t=O(e).$implicit;return k(K(2).switchTab(t.id))}),B(1,`app-tab-icon`,52),R(2,`span`),J(3),z()()}if(e&2){let e=t.$implicit,n=K(2);q(`active`,n.tab()===e.id),M(`aria-current`,n.tab()===e.id?`page`:null),j(),L(`name`,e.id),j(2),Y(e.label)}}function pU(e,t){e&1&&F(0,fU,4,5,`button`,50,iU),e&2&&I(K().tabs())}function mU(e,t){e&1&&(R(0,`p`,16),J(1,` Can't reach the devtools server. Check that the dev server is running, then reload. `),z())}function hU(e,t){e&1&&B(0,`app-coming-soon`,17),e&2&&L(`info`,t)}function gU(e,t){e&1&&(R(0,`p`,18),J(1,`Looking for an Angular Native app…`),z())}function _U(e,t){e&1&&(R(0,`p`,19),J(1,` This inspector is turned off in the devtools config (`),R(2,`code`),J(3,`inspectors`),z(),J(4,`). `),z())}function vU(e,t){if(e&1){let e=W();R(0,`app-dashboard`,55),G(`navigate`,function(t){return O(e),k(K(3).switchTab(t))}),z()}e&2&&L(`rpc`,K(3).rpc())}function yU(e,t){if(e&1){let e=W();R(0,`app-component-tree`,56),G(`focusHandled`,function(){return O(e),k(K(3).componentFocus.set(null))})(`showForm`,function(t){return O(e),k(K(3).showForm(t))}),z()}if(e&2){let e=K(3);L(`rpc`,e.rpc())(`focus`,e.componentFocus())}}function bU(e,t){e&1&&B(0,`app-route-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function xU(e,t){e&1&&B(0,`app-signal-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function SU(e,t){e&1&&B(0,`app-di-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function CU(e,t){e&1&&B(0,`app-store-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function wU(e,t){e&1&&B(0,`app-network-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function TU(e,t){if(e&1){let e=W();R(0,`app-forms-inspector`,57),G(`focusHandled`,function(){return O(e),k(K(3).formFocus.set(null))}),z()}if(e&2){let e=K(3);L(`rpc`,e.rpc())(`focus`,e.formFocus())}}function EU(e,t){e&1&&B(0,`app-pipes-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function DU(e,t){e&1&&B(0,`app-analog-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function OU(e,t){if(e&1&&N(0,vU,1,1,`app-dashboard`,53)(1,yU,1,2,`app-component-tree`,54)(2,bU,1,1,`app-route-inspector`,53)(3,xU,1,1,`app-signal-inspector`,53)(4,SU,1,1,`app-di-inspector`,53)(5,CU,1,1,`app-store-inspector`,53)(6,wU,1,1,`app-network-inspector`,53)(7,TU,1,2,`app-forms-inspector`,54)(8,EU,1,1,`app-pipes-inspector`,53)(9,DU,1,1,`app-analog-inspector`,53),e&2){let e;P((e=K(2).tab())===`dashboard`?0:e===`components`?1:e===`routes`?2:e===`signals`?3:e===`injectors`?4:e===`store`?5:e===`network`?6:e===`forms`?7:e===`pipes`?8:e===`analog`?9:-1)}}function kU(e,t){e&1&&F(0,OU,10,1,null,null,Tg),e&2&&I(sv(0,rU,K().scopeKey()))}var AU=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`],jU={angular:`Angular`,ngrx:`NgRx Store`,analog:`Analog`,"angular-native":`Angular Native`,nativescript:`NativeScript`,capacitor:`Capacitor`},MU={ngrx:`#d770e8`,analog:`#ff5470`,"angular-native":`#ff4d6d`,nativescript:`#8196ff`,capacitor:`#53b9ff`},NU={ngrx:`store`,analog:`analog`},PU={store:`ngrx`,analog:`analog`},FU={"angular-native":[`components`,`signals`,`injectors`,`store`,`pipes`]},IU={capacitor:{id:`capacitor`,name:`Capacitor`,badge:`Coming Soon`,heading:`Capacitor Support`,summary:`Connect Ionic and Capacitor apps running in a device WebView back to these tools.`,color:`#119eff`,plans:[`Manual overlay start for apps that load from capacitor:// or a device`,`Connection settings passed in, no cross-origin probing`,`Setup guides for the Android emulator and iOS simulator`],pr:21,author:{name:`Erkam Yaman`,login:`erkamyaman`}}},LU={id:`nativescript`,name:`NativeScript`,badge:`Available`,heading:`Inspect NativeScript apps`,summary:`A NativeScript Angular app reports from the simulator or device to this server, and its components, signals, injectors and NgRx stores show up in the Angular dock.`,color:`#3c5afd`,plansTitle:`Set up an app`,plans:[`Install @santoshyadavdev/ng-devtools and @valor/nativescript-websockets`,`Call initNativeScriptOverlay() in main.ts, before the app bootstraps`,`Run ng-devtools dev --host 0.0.0.0 in the app, then open the Angular dock`],link:{label:`NativeScript setup guide`,href:`https://santoshyadavdev.github.io/angular-devtools/guides/nativescript`}},RU={id:`analog`,name:`Analog`,badge:`Not in this app`,heading:`This app doesn’t use Analog`,summary:`In an Analog app this dock shows your file routes, server load() and API calls, render modes and route lint.`,color:`#dd0330`,plans:[`Which page, layout and .server.ts files render a URL`,`Every load(), server function and API call with timing`,`SSR, prerendered or client only, per page`],link:{label:`Get started with Analog`,href:`https://analogjs.org/docs/getting-started`}},zU={id:`angular-native`,name:`Angular Native`,badge:`Not connected`,heading:`No Angular Native app is connected`,summary:`Start the overlay in your Angular Native app and run this server with --no-auth. The tabs fill as soon as the app reports.`,color:`#e11d48`,plans:[`The component tree, with the view outlined on the device`,`Signals and injectors of the running app`,`Live @ngrx/signals and @ngrx/store state`],link:{label:`Set up Angular Native`,href:`https://github.com/santoshyadavdev/angular-devtools/blob/main/apps/docs/src/content/getting-started/angular-native.md`}};function BU(){let e=new URLSearchParams(location.search).get(`view`);return AU.find(t=>t===e)??null}Ub(class e{analog=A(!1);allTabs=[{id:`dashboard`,label:`Dashboard`},{id:`analog`,label:`Analog`},{id:`components`,label:`Components`},{id:`routes`,label:`Routes`},{id:`signals`,label:`Signals`},{id:`injectors`,label:`Injectors`},{id:`store`,label:`Store`},{id:`forms`,label:`Forms`},{id:`pipes`,label:`Pipes`},{id:`network`,label:`SSR & HTTP`}];view=A(BU());viewAccent=Q(()=>{let e=this.view();return(e&&MU[e])??null});title=Q(()=>{let e=this.view();return e?jU[e]:`Angular DevTools`});analogKnown=A(!1);nativePageId=A(null);nativeKnown=A(!1);scopeKey=Q(()=>this.view()===`angular-native`?this.nativePageId()??``:``);comingSoon=Q(()=>{let e=this.view();return e===`analog`?this.analogKnown()&&!this.analog()?RU:void 0:e===`nativescript`?LU:e===`angular-native`?this.nativeKnown()&&!this.nativePageId()?zU:void 0:e?IU[e]:void 0});config=Q(()=>aE(this.rpc()));tabEnabled=cE;availableTabs=Q(()=>{if(this.comingSoon())return[];let e=this.view(),t=e?NU[e]:void 0,n=this.allTabs.filter(e=>cE(e.id,this.config()));if(t)return n.filter(e=>e.id===t);let r=e?FU[e]:void 0;return r?n.filter(e=>r.includes(e.id)):n.filter(t=>(t.id!==`analog`||this.analog())&&!(e===`angular`&&PU[t.id]))});tabs=Q(()=>{let e=this.availableTabs();if(this.rpc())return e;let t=this.tab();return e.filter(e=>e.id===`dashboard`||e.id===t)});tab=Tv(()=>{let e=this.view();return e&&(NU[e]??FU[e]?.[0])||`dashboard`});rpc=A(null);connected=A(!1);connectionFailed=A(!1);hiddenPages=A([]);pageId=ZT();backgroundNote=Q(()=>{let e=this.hiddenPages();return this.pageId?e.includes(this.pageId)?`Tab in background, showing the last data.`:``:e.length?e.length===1?`A tab is in the background, showing its last data.`:`${e.length} tabs are in the background, showing their last data.`:``});stopVisibility=()=>{};stopNative=()=>{};stopFollowing=()=>{};stopHighlights=()=>{};nav=Rv(`nav`);main=Rv(`main`);injector=E(Ss);navObserver;navFade=A({start:!1,end:!1});constructor(){Ld(()=>{let e=this.nav()?.nativeElement;e&&typeof ResizeObserver<`u`&&(this.navObserver=new ResizeObserver(()=>this.measureNav()),this.navObserver.observe(e))}),ey(()=>{this.tab(),this.tabs(),Cv(()=>{this.revealActiveTab(),this.measureNav()})})}measureNav(){let e=this.nav()?.nativeElement;if(!e)return;let t=e.scrollWidth-e.clientWidth,n=e.scrollLeft>1,r=t>1&&e.scrollLeftn?e.scrollLeft=Math.max(0,n):e.scrollLeftthis.showView(e)));try{window.parent!==window&&HH(window.parent.document)}catch{}let e=YH(location.hash,XH(this.tabScope()),this.availableTabs().map(e=>e.id));e&&this.tab.set(e),this.stopHighlights=iE(()=>this.rpc());let t=eU();kT(t?{baseURL:t}:{}).then(e=>{this.rpc.set(e),this.connected.set(!0),this.watchVisibility(e),this.watchAngularNative(e),e.scope(`ng-devtools`).rpc.call(`analog-project`).then(e=>{let t=!!e?.analog;this.analog.set(t),this.analogKnown.set(!0),!t&&this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)},()=>{this.analogKnown.set(!0),this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)}),e.events.on(`connection:status`,e=>{this.connected.set(e===`connected`)})},()=>{this.connectionFailed.set(!0),this.analogKnown.set(!0),this.nativeKnown.set(!0)})}ngOnDestroy(){this.stopNative(),this.stopFollowing(),this.stopVisibility(),this.stopHighlights(),this.navObserver?.disconnect()}showView(e){if(e===this.view())return;XT(e===`angular-native`?this.nativePageId():null),this.view.set(e);let t=new URL(location.href);t.searchParams.set(`view`,e),t.hash=``,history.replaceState(history.state,``,t)}formFocus=A(null);componentFocus=Tv({source:this.tab,computation:()=>null});showForm(e){this.formFocus.set({id:e}),this.switchTab(`forms`)}inspectFromPanel({source:e,origin:t,data:n}){if(e!==window.parent||t!==location.origin)return;let r=n;r?.type===`ng-devtools:inspect-component`&&typeof r.id==`string`&&this.tab()===`components`&&this.config().inspectors.components&&this.componentFocus.set({id:r.id})}switchTab(e){let t=PU[e];if(this.view()===`angular`&&t){this.activateDock(t,e);return}this.setTab(e),history.replaceState(history.state,``,`#tab=${e}`)}setTab(e){this.keepFocus(),this.tab.set(e),ZH(this.tabScope(),e)}tabScope(){return this.view()??`panel`}async watchAngularNative(e){try{let t=await e.scope(`ng-devtools`).rpc.sharedState(`component-tree`),n=e=>{let t=e?.pages,n=XE(t,this.nativePageId());this.view()===`angular-native`&&XT(n),this.nativePageId.set(n),this.nativeKnown.set(!0)};n(t.value()),this.stopNative(),this.stopNative=t.on(`updated`,n)}catch{this.nativeKnown.set(!0)}}async watchVisibility(e){try{let t=await e.scope(`ng-devtools`).rpc.sharedState(`page-visibility`),n=e=>{let t=e?.hidden;this.hiddenPages.set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])};n(t.value()),this.stopVisibility(),this.stopVisibility=t.on(`updated`,n)}catch{}}keepFocus(){let e=document.activeElement,t=this.main()?.nativeElement;(!e||e===document.body||t?.contains(e))&&Ld(()=>{let e=document.activeElement;e&&e!==document.body||(this.nav()?.nativeElement.querySelector(`button.active`)??this.main()?.nativeElement)?.focus()},{injector:this.injector})}async activateDock(e,t){if(await qH(e))return;if(window.parent===window){this.keepFocus(),this.showView(e);return}let n=this.rpc();if(!n?.call){this.setTab(t);return}try{await n.call(`hub:docks:activate`,{dockId:`ng-devtools:${e}`}),this.keepFocus(),this.showView(e)}catch{this.setTab(t)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Vh({type:e,selectors:[[`app-root`]],viewQuery:function(e,t){e&1&&e_(t.nav,tU,5)(t.main,nU,5),e&2&&t_(2)},hostVars:2,hostBindings:function(e,t){e&1&&G(`message`,function(e){return t.inspectFromPanel(e)},Mu),e&2&&C_(`--%NS%accent`,t.viewAccent())},decls:28,vars:18,consts:[[`nav`,``],[`main`,``],[1,`brand`],[1,`mark`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 256 256`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 32 32`,`aria-hidden`,`true`],[`width`,`24`,`height`,`17`,`viewBox`,`0 0 256 182`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 24 24`,`fill`,`currentColor`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`fill`,`currentColor`,`aria-hidden`,`true`],[1,`title`],[`aria-label`,`Inspectors`,3,`scroll`],[`role`,`status`,1,`status`],[`aria-hidden`,`true`,1,`dot`],[`tabindex`,`-1`],[`role`,`status`,1,`background-note`],[`role`,`alert`,1,`connection-error`],[3,`info`],[`role`,`status`,1,`turned-off`],[1,`turned-off`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`id`,`an-mark-grad`,`x1`,`0`,`y1`,`0`,`x2`,`1`,`y2`,`1`],[`offset`,`0`,`stop-color`,`#f0224f`],[`offset`,`1`,`stop-color`,`#c4002d`],[`d`,`M16 0C27.2 0 32 4.8 32 16S27.2 32 16 32 0 27.2 0 16 4.8 0 16 0Z`,`fill`,`url(#an-mark-grad)`],[`transform`,`translate(6.4 6.4) scale(0.8)`,`fill`,`#fff`],[`d`,`M14.8486 0L23.138 16.8551L23.9996 3.99892L14.8486 0Z`],[`d`,`M16.9875 17.7114H7.01272L5.73926 20.627L12.0001 24L18.261 20.627L16.9875 17.7114Z`],[`d`,`M8.72168 13.9298H15.2812L11.9997 6.39575L8.72168 13.9298Z`],[`d`,`M9.15103 0L0 3.99892L0.861556 16.8551L9.15103 0Z`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`d`,`M12.024.017V0L12 .008L11.976 0v.017L.812 3.892l1.605 14.875l9.559 5.207V24l.024-.013l.024.013v-.026l9.559-5.207l1.605-14.875zm6.868 14.244q-1.64 3.948-6.031 4.166c-2.829 0-4.661-1.7-4.66-1.7q-1.745-1.359-2.398-3.417c-.695-.76-.702-.841-.774-1.145c-.072-.303.045-.388.249-.685q.204-.298.098-.85q-.26-.36-.3-1.128q0-.37.496-.783q.495-.413.607-.632q.083-.119.065-1.031q-.006-.897.995-.975c1-.08 1.565-.832 1.879-1.174c.21-.228.52-.339.91-.341c.551-.026 1.052.185 1.484.62c1.075-.055 2.176.235 3.292.863q2.379 1.414 2.596 3.055q-.257 2.158-5.788-.113q-2.895.819-2.846 3.552q0 2.508 2.422 3.643c-.787-.772-1.122-1.422-1.01-1.959q2.456 2.906 5.588 2.173c-.92.032-1.65-.264-2.198-.893q2.116-.05 3.998-1.972c-.724.576-1.482.794-2.284.657q3.26-2.563 2.307-5.98l-.002-.006a3.02 3.02 0 0 1 .788 2.03q.023 1.175-.795 2.477q.613-.478 1.413-2.047c.23 2.117-.625 3.724-2.574 4.825q.934-.085 2.473-1.23m-5.567-6.63a.319.319 0 1 1 .638 0a.319.319 0 0 1-.638 0`],[`id`,`ng-grad`,`x1`,`49`,`x2`,`226`,`y1`,`214`,`y2`,`130`,`gradientUnits`,`userSpaceOnUse`],[`stop-color`,`#E40035`],[`offset`,`.24`,`stop-color`,`#F60A48`],[`offset`,`.352`,`stop-color`,`#F20755`],[`offset`,`.494`,`stop-color`,`#DC087D`],[`offset`,`.745`,`stop-color`,`#9717E7`],[`offset`,`1`,`stop-color`,`#6C00F5`],[`fill`,`url(#ng-grad)`,`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`type`,`button`,3,`active`],[`type`,`button`,3,`click`],[3,`name`],[3,`rpc`],[3,`rpc`,`focus`],[3,`navigate`,`rpc`],[3,`focusHandled`,`showForm`,`rpc`,`focus`],[3,`focusHandled`,`rpc`,`focus`]],template:function(e,t){if(e&1&&(R(0,`header`)(1,`h1`,2)(2,`span`,3),N(3,aU,2,0,`:svg:svg`,4)(4,oU,7,0,`:svg:svg`,4)(5,sU,11,0,`:svg:svg`,5)(6,cU,5,0,`:svg:svg`,6)(7,lU,2,0,`:svg:svg`,7)(8,uU,10,0,`:svg:svg`,8)(9,dU,2,0,`:svg:svg`,9),z(),R(10,`span`,10),J(11),z()(),R(12,`nav`,11,0),G(`scroll`,function(){return t.measureNav()}),N(14,pU,2,0),z(),R(15,`span`,12)(16,`span`,13),B(17,`span`),z(),J(18),z()(),R(19,`main`,14,1)(21,`p`,15),J(22),z(),N(23,mU,2,0,`p`,16)(24,hU,1,1,`app-coming-soon`,17)(25,gU,2,0,`p`,18)(26,_U,5,0,`p`,19)(27,kU,2,2),z()),e&2){let e;j(2),q(`ng-mark`,t.view()===`angular`),j(),P(t.view()===`nativescript`?3:t.view()===`capacitor`?4:t.view()===`angular-native`?5:t.view()===`analog`?6:t.view()===`ngrx`?7:t.view()===`angular`?8:9),j(7),q(`ng-text`,t.view()===`angular`),j(),Y(t.title()),j(),q(`fade-start`,t.navFade().start)(`fade-end`,t.navFade().end),j(2),P(t.availableTabs().length>1?14:-1),j(),q(`connected`,t.connected())(`failed`,t.connectionFailed()),j(3),X(` `,t.connected()?`Live`:t.connectionFailed()?`Disconnected`:`Connecting…`,` `),j(4),Y(t.backgroundNote()),j(),P(t.connectionFailed()?23:(e=t.comingSoon())?24:t.view()===`angular-native`&&!t.nativePageId()?25:t.tabEnabled(t.tab(),t.config())?27:26,e)}},dependencies:[JE,rk,kM,VN,ZP,kI,jR,Az,LV,MH,BH,yE],styles:[`[_nghost-%COMP%] { +`;function HH(e,t=50){let n=e?.querySelector(`devframes-dock-standalone`)?.shadowRoot;if(n){if(n.querySelector(`style[data-ng-devtools]`))return;let t=e.createElement(`style`);t.dataset.ngDevtools=``,t.textContent=VH,n.append(t);return}t>0&&setTimeout(()=>HH(e,t-1),100)}var UH=`__DEVFRAME_HUB_CLIENT_CONTEXT__`,WH=`ng-devtools:`;function GH(){try{return window.parent===window?void 0:window.parent[UH]}catch{return}}function KH(e,t,n=50){let r=GH();if(!r){if(n<=0||window.parent===window)return()=>{};let r=()=>{},i=setTimeout(()=>r=KH(e,t,n-1),100);return()=>{clearTimeout(i),r()}}let i=e.map(e=>r.docks.getStateById(WH+e)?.events.on(`entry:activated`,()=>t(e))??(()=>{})),a=r.docks.selectedId,o=e.find(e=>WH+e===a);return o&&t(o),()=>i.forEach(e=>e())}async function qH(e){let t=GH();if(!t)return!1;try{return await t.docks.switchEntry(WH+e)}catch{return!1}}var JH=`ng-devtools-tab`;function YH(e,t,n){let r=new URLSearchParams(e.replace(/^#/,``)).get(`tab`)||t;return n.find(e=>e===r)}function XH(e){try{return sessionStorage.getItem(`${JH}:${e}`)}catch{return null}}function ZH(e,t){try{sessionStorage.setItem(`${JH}:${e}`,t)}catch{}}function QH(e,t){try{return new URL(e,t.href).origin===t.origin}catch{return!1}}function $H(e,t){if(t.protocol!==`chrome-extension:`)return!1;try{let{protocol:t}=new URL(e);return t===`http:`||t===`https:`}catch{return!1}}function eU(e=location){let t=new URLSearchParams(e.search).get(`baseURL`);if(t&&(QH(t,e)||$H(t,e)))return t;if(!(e.pathname.includes(`__ng-devtools`)||e.pathname.includes(`__devframes/`)))return[`/__ng-devtools/`,`./`]}var tU=[`nav`],nU=[`main`],rU=e=>[e],iU=(e,t)=>t.id;function aU(e,t){e&1&&(ps(),R(0,`svg`,4),B(1,`path`,20),z())}function oU(e,t){e&1&&(ps(),R(0,`svg`,4),B(1,`path`,21)(2,`path`,22)(3,`path`,23)(4,`path`,24)(5,`path`,25)(6,`path`,26),z())}function sU(e,t){e&1&&(ps(),R(0,`svg`,5)(1,`defs`)(2,`linearGradient`,27),B(3,`stop`,28)(4,`stop`,29),z()(),B(5,`path`,30),R(6,`g`,31),B(7,`path`,32)(8,`path`,33)(9,`path`,34)(10,`path`,35),z()())}function cU(e,t){e&1&&(ps(),R(0,`svg`,6),B(1,`path`,36)(2,`path`,37)(3,`path`,38)(4,`path`,39),z())}function lU(e,t){e&1&&(ps(),R(0,`svg`,7),B(1,`path`,40),z())}function uU(e,t){e&1&&(ps(),R(0,`svg`,8)(1,`defs`)(2,`linearGradient`,41),B(3,`stop`,42)(4,`stop`,43)(5,`stop`,44)(6,`stop`,45)(7,`stop`,46)(8,`stop`,47),z()(),B(9,`path`,48),z())}function dU(e,t){e&1&&(ps(),R(0,`svg`,9),B(1,`path`,49),z())}function fU(e,t){if(e&1){let e=W();R(0,`button`,51),G(`click`,function(){let t=O(e).$implicit;return k(K(2).switchTab(t.id))}),B(1,`app-tab-icon`,52),R(2,`span`),J(3),z()()}if(e&2){let e=t.$implicit,n=K(2);q(`active`,n.tab()===e.id),M(`aria-current`,n.tab()===e.id?`page`:null),j(),L(`name`,e.id),j(2),Y(e.label)}}function pU(e,t){e&1&&F(0,fU,4,5,`button`,50,iU),e&2&&I(K().tabs())}function mU(e,t){e&1&&(R(0,`p`,16),J(1,` Can't reach the devtools server. Check that the dev server is running, then reload. `),z())}function hU(e,t){e&1&&B(0,`app-coming-soon`,17),e&2&&L(`info`,t)}function gU(e,t){e&1&&(R(0,`p`,18),J(1,`Looking for an Angular Native app…`),z())}function _U(e,t){e&1&&(R(0,`p`,19),J(1,` This inspector is turned off in the devtools config (`),R(2,`code`),J(3,`inspectors`),z(),J(4,`). `),z())}function vU(e,t){if(e&1){let e=W();R(0,`app-dashboard`,55),G(`navigate`,function(t){return O(e),k(K(3).switchTab(t))}),z()}e&2&&L(`rpc`,K(3).rpc())}function yU(e,t){if(e&1){let e=W();R(0,`app-component-tree`,56),G(`focusHandled`,function(){return O(e),k(K(3).componentFocus.set(null))})(`showForm`,function(t){return O(e),k(K(3).showForm(t))}),z()}if(e&2){let e=K(3);L(`rpc`,e.rpc())(`focus`,e.componentFocus())}}function bU(e,t){e&1&&B(0,`app-route-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function xU(e,t){e&1&&B(0,`app-signal-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function SU(e,t){e&1&&B(0,`app-di-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function CU(e,t){e&1&&B(0,`app-store-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function wU(e,t){e&1&&B(0,`app-network-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function TU(e,t){if(e&1){let e=W();R(0,`app-forms-inspector`,57),G(`focusHandled`,function(){return O(e),k(K(3).formFocus.set(null))}),z()}if(e&2){let e=K(3);L(`rpc`,e.rpc())(`focus`,e.formFocus())}}function EU(e,t){e&1&&B(0,`app-pipes-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function DU(e,t){e&1&&B(0,`app-analog-inspector`,53),e&2&&L(`rpc`,K(3).rpc())}function OU(e,t){if(e&1&&N(0,vU,1,1,`app-dashboard`,53)(1,yU,1,2,`app-component-tree`,54)(2,bU,1,1,`app-route-inspector`,53)(3,xU,1,1,`app-signal-inspector`,53)(4,SU,1,1,`app-di-inspector`,53)(5,CU,1,1,`app-store-inspector`,53)(6,wU,1,1,`app-network-inspector`,53)(7,TU,1,2,`app-forms-inspector`,54)(8,EU,1,1,`app-pipes-inspector`,53)(9,DU,1,1,`app-analog-inspector`,53),e&2){let e;P((e=K(2).tab())===`dashboard`?0:e===`components`?1:e===`routes`?2:e===`signals`?3:e===`injectors`?4:e===`store`?5:e===`network`?6:e===`forms`?7:e===`pipes`?8:e===`analog`?9:-1)}}function kU(e,t){e&1&&F(0,OU,10,1,null,null,Tg),e&2&&I(sv(0,rU,K().scopeKey()))}var AU=[`angular`,`ngrx`,`analog`,`angular-native`,`nativescript`,`capacitor`],jU={angular:`Angular`,ngrx:`NgRx Store`,analog:`Analog`,"angular-native":`Angular Native`,nativescript:`NativeScript`,capacitor:`Capacitor`},MU={ngrx:`#d770e8`,analog:`#ff5470`,"angular-native":`#ff4d6d`,nativescript:`#8196ff`,capacitor:`#53b9ff`},NU={ngrx:`store`,analog:`analog`},PU={store:`ngrx`,analog:`analog`},FU={"angular-native":[`components`,`signals`,`injectors`,`store`,`pipes`]},IU={capacitor:{id:`capacitor`,name:`Capacitor`,badge:`Coming Soon`,heading:`Capacitor Support`,summary:`Connect Ionic and Capacitor apps running in a device WebView back to these tools.`,color:`#119eff`,plans:[`Manual overlay start for apps that load from capacitor:// or a device`,`Connection settings passed in, no cross-origin probing`,`Setup guides for the Android emulator and iOS simulator`],pr:21,author:{name:`Erkam Yaman`,login:`erkamyaman`}}},LU={id:`nativescript`,name:`NativeScript`,badge:`Available`,heading:`Inspect NativeScript apps`,summary:`A NativeScript Angular app reports from the simulator or device to this server, and its components, signals, injectors and NgRx stores show up in the Angular dock.`,color:`#3c5afd`,plansTitle:`Set up an app`,plans:[`Install @santoshyadavdev/ng-devtools and @valor/nativescript-websockets`,`Call initNativeScriptOverlay() in main.ts, before the app bootstraps`,`Run ng-devtools dev --no-auth in the app, then open the Angular dock`],link:{label:`NativeScript setup guide`,href:`https://santoshyadavdev.github.io/angular-devtools/guides/nativescript`}},RU={id:`analog`,name:`Analog`,badge:`Not in this app`,heading:`This app doesn’t use Analog`,summary:`In an Analog app this dock shows your file routes, server load() and API calls, render modes and route lint.`,color:`#dd0330`,plans:[`Which page, layout and .server.ts files render a URL`,`Every load(), server function and API call with timing`,`SSR, prerendered or client only, per page`],link:{label:`Get started with Analog`,href:`https://analogjs.org/docs/getting-started`}},zU={id:`angular-native`,name:`Angular Native`,badge:`Not connected`,heading:`No Angular Native app is connected`,summary:`Start the overlay in your Angular Native app and run this server with --no-auth. The tabs fill as soon as the app reports.`,color:`#e11d48`,plans:[`The component tree, with the view outlined on the device`,`Signals and injectors of the running app`,`Live @ngrx/signals and @ngrx/store state`],link:{label:`Set up Angular Native`,href:`https://github.com/santoshyadavdev/angular-devtools/blob/main/apps/docs/src/content/getting-started/angular-native.md`}};function BU(){let e=new URLSearchParams(location.search).get(`view`);return AU.find(t=>t===e)??null}Ub(class e{analog=A(!1);allTabs=[{id:`dashboard`,label:`Dashboard`},{id:`analog`,label:`Analog`},{id:`components`,label:`Components`},{id:`routes`,label:`Routes`},{id:`signals`,label:`Signals`},{id:`injectors`,label:`Injectors`},{id:`store`,label:`Store`},{id:`forms`,label:`Forms`},{id:`pipes`,label:`Pipes`},{id:`network`,label:`SSR & HTTP`}];view=A(BU());viewAccent=Q(()=>{let e=this.view();return(e&&MU[e])??null});title=Q(()=>{let e=this.view();return e?jU[e]:`Angular DevTools`});analogKnown=A(!1);nativePageId=A(null);nativeKnown=A(!1);scopeKey=Q(()=>this.view()===`angular-native`?this.nativePageId()??``:``);comingSoon=Q(()=>{let e=this.view();return e===`analog`?this.analogKnown()&&!this.analog()?RU:void 0:e===`nativescript`?LU:e===`angular-native`?this.nativeKnown()&&!this.nativePageId()?zU:void 0:e?IU[e]:void 0});config=Q(()=>aE(this.rpc()));tabEnabled=cE;availableTabs=Q(()=>{if(this.comingSoon())return[];let e=this.view(),t=e?NU[e]:void 0,n=this.allTabs.filter(e=>cE(e.id,this.config()));if(t)return n.filter(e=>e.id===t);let r=e?FU[e]:void 0;return r?n.filter(e=>r.includes(e.id)):n.filter(t=>(t.id!==`analog`||this.analog())&&!(e===`angular`&&PU[t.id]))});tabs=Q(()=>{let e=this.availableTabs();if(this.rpc())return e;let t=this.tab();return e.filter(e=>e.id===`dashboard`||e.id===t)});tab=Tv(()=>{let e=this.view();return e&&(NU[e]??FU[e]?.[0])||`dashboard`});rpc=A(null);connected=A(!1);connectionFailed=A(!1);hiddenPages=A([]);pageId=ZT();backgroundNote=Q(()=>{let e=this.hiddenPages();return this.pageId?e.includes(this.pageId)?`Tab in background, showing the last data.`:``:e.length?e.length===1?`A tab is in the background, showing its last data.`:`${e.length} tabs are in the background, showing their last data.`:``});stopVisibility=()=>{};stopNative=()=>{};stopFollowing=()=>{};stopHighlights=()=>{};nav=Rv(`nav`);main=Rv(`main`);injector=E(Ss);navObserver;navFade=A({start:!1,end:!1});constructor(){Ld(()=>{let e=this.nav()?.nativeElement;e&&typeof ResizeObserver<`u`&&(this.navObserver=new ResizeObserver(()=>this.measureNav()),this.navObserver.observe(e))}),ey(()=>{this.tab(),this.tabs(),Cv(()=>{this.revealActiveTab(),this.measureNav()})})}measureNav(){let e=this.nav()?.nativeElement;if(!e)return;let t=e.scrollWidth-e.clientWidth,n=e.scrollLeft>1,r=t>1&&e.scrollLeftn?e.scrollLeft=Math.max(0,n):e.scrollLeftthis.showView(e)));try{window.parent!==window&&HH(window.parent.document)}catch{}let e=YH(location.hash,XH(this.tabScope()),this.availableTabs().map(e=>e.id));e&&this.tab.set(e),this.stopHighlights=iE(()=>this.rpc());let t=eU();kT(t?{baseURL:t}:{}).then(e=>{this.rpc.set(e),this.connected.set(!0),this.watchVisibility(e),this.watchAngularNative(e),e.scope(`ng-devtools`).rpc.call(`analog-project`).then(e=>{let t=!!e?.analog;this.analog.set(t),this.analogKnown.set(!0),!t&&this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)},()=>{this.analogKnown.set(!0),this.tab()===`analog`&&!this.view()&&this.tab.set(`dashboard`)}),e.events.on(`connection:status`,e=>{this.connected.set(e===`connected`)})},()=>{this.connectionFailed.set(!0),this.analogKnown.set(!0),this.nativeKnown.set(!0)})}ngOnDestroy(){this.stopNative(),this.stopFollowing(),this.stopVisibility(),this.stopHighlights(),this.navObserver?.disconnect()}showView(e){if(e===this.view())return;XT(e===`angular-native`?this.nativePageId():null),this.view.set(e);let t=new URL(location.href);t.searchParams.set(`view`,e),t.hash=``,history.replaceState(history.state,``,t)}formFocus=A(null);componentFocus=Tv({source:this.tab,computation:()=>null});showForm(e){this.formFocus.set({id:e}),this.switchTab(`forms`)}inspectFromPanel({source:e,origin:t,data:n}){if(e!==window.parent||t!==location.origin)return;let r=n;r?.type===`ng-devtools:inspect-component`&&typeof r.id==`string`&&this.tab()===`components`&&this.config().inspectors.components&&this.componentFocus.set({id:r.id})}switchTab(e){let t=PU[e];if(this.view()===`angular`&&t){this.activateDock(t,e);return}this.setTab(e),history.replaceState(history.state,``,`#tab=${e}`)}setTab(e){this.keepFocus(),this.tab.set(e),ZH(this.tabScope(),e)}tabScope(){return this.view()??`panel`}async watchAngularNative(e){try{let t=await e.scope(`ng-devtools`).rpc.sharedState(`component-tree`),n=e=>{let t=e?.pages,n=XE(t,this.nativePageId());this.view()===`angular-native`&&XT(n),this.nativePageId.set(n),this.nativeKnown.set(!0)};n(t.value()),this.stopNative(),this.stopNative=t.on(`updated`,n)}catch{this.nativeKnown.set(!0)}}async watchVisibility(e){try{let t=await e.scope(`ng-devtools`).rpc.sharedState(`page-visibility`),n=e=>{let t=e?.hidden;this.hiddenPages.set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])};n(t.value()),this.stopVisibility(),this.stopVisibility=t.on(`updated`,n)}catch{}}keepFocus(){let e=document.activeElement,t=this.main()?.nativeElement;(!e||e===document.body||t?.contains(e))&&Ld(()=>{let e=document.activeElement;e&&e!==document.body||(this.nav()?.nativeElement.querySelector(`button.active`)??this.main()?.nativeElement)?.focus()},{injector:this.injector})}async activateDock(e,t){if(await qH(e))return;if(window.parent===window){this.keepFocus(),this.showView(e);return}let n=this.rpc();if(!n?.call){this.setTab(t);return}try{await n.call(`hub:docks:activate`,{dockId:`ng-devtools:${e}`}),this.keepFocus(),this.showView(e)}catch{this.setTab(t)}}static ɵfac=function(t){return new(t||e)};static ɵcmp=Vh({type:e,selectors:[[`app-root`]],viewQuery:function(e,t){e&1&&e_(t.nav,tU,5)(t.main,nU,5),e&2&&t_(2)},hostVars:2,hostBindings:function(e,t){e&1&&G(`message`,function(e){return t.inspectFromPanel(e)},Mu),e&2&&C_(`--%NS%accent`,t.viewAccent())},decls:28,vars:18,consts:[[`nav`,``],[`main`,``],[1,`brand`],[1,`mark`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 256 256`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 32 32`,`aria-hidden`,`true`],[`width`,`24`,`height`,`17`,`viewBox`,`0 0 256 182`,`aria-hidden`,`true`],[`width`,`22`,`height`,`22`,`viewBox`,`0 0 24 24`,`fill`,`currentColor`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`aria-hidden`,`true`],[`width`,`20`,`height`,`22`,`viewBox`,`0 0 223 236`,`fill`,`currentColor`,`aria-hidden`,`true`],[1,`title`],[`aria-label`,`Inspectors`,3,`scroll`],[`role`,`status`,1,`status`],[`aria-hidden`,`true`,1,`dot`],[`tabindex`,`-1`],[`role`,`status`,1,`background-note`],[`role`,`alert`,1,`connection-error`],[3,`info`],[`role`,`status`,1,`turned-off`],[1,`turned-off`],[`fill`,`#3c5afd`,`d`,`M237.248 18.752q18.061 18.06 18.748 45.247V192c-.457 18.12-6.707 33.207-18.748 45.247c-12.04 12.04-27.127 18.291-45.251 18.752H63.999q-27.187-.69-45.247-18.752C6.712 225.208.46 210.121 0 192.001V64q.69-27.187 18.752-45.247Q36.812.692 63.999 0h127.998c18.124.46 33.211 6.711 45.251 18.752m-17.655 103q-6.033-6.003-6.28-15.066V64q-.192-9.063-6.221-15.091c-4.02-4.023-9.054-6.093-15.095-6.22h-21.312v106.626L85.315 42.687H63.999c-6.042.128-11.072 2.198-15.091 6.221c-4.023 4.02-6.093 9.05-6.22 15.09v42.688q-.249 9.063-6.281 15.066q-6.03 5.996-15.091 6.246q9.062.255 15.09 6.25c4.024 4.002 6.115 9.024 6.281 15.066V192c.128 6.037 2.198 11.072 6.221 15.091q6.03 6.03 15.09 6.22h21.317V106.687l85.37 106.627h21.312c6.041-.128 11.076-2.202 15.095-6.221s6.093-9.054 6.22-15.09v-42.688q.249-9.063 6.281-15.066q6.03-5.995 15.091-6.25q-9.062-.25-15.09-6.246`],[`fill`,`#53b9ff`,`d`,`M39.863 54.115L.311 93.716l60.995 61.179L0 216.385l39.428 39.619l61.43-61.507l61.097 61.068l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m140.517 154.896l-39.658 39.601l61.097 61.069l39.552-39.602z`],[`fill-opacity`,`.2`,`d`,`m140.517 154.896l-39.658 39.601l15.267 15.182z`],[`fill`,`#53b9ff`,`d`,`M194.57 100.985L256 39.478L216.431 0l-61.412 61.384L93.917.311L54.365 39.913L216.01 201.761l39.552-39.602z`],[`fill`,`#119eff`,`d`,`m115.36 100.987l39.659-39.602L93.917.313L54.365 39.914z`],[`fill-opacity`,`.2`,`d`,`m115.359 100.985l39.659-39.601l-15.271-15.186z`],[`id`,`an-mark-grad`,`x1`,`0`,`y1`,`0`,`x2`,`1`,`y2`,`1`],[`offset`,`0`,`stop-color`,`#f0224f`],[`offset`,`1`,`stop-color`,`#c4002d`],[`d`,`M16 0C27.2 0 32 4.8 32 16S27.2 32 16 32 0 27.2 0 16 4.8 0 16 0Z`,`fill`,`url(#an-mark-grad)`],[`transform`,`translate(6.4 6.4) scale(0.8)`,`fill`,`#fff`],[`d`,`M14.8486 0L23.138 16.8551L23.9996 3.99892L14.8486 0Z`],[`d`,`M16.9875 17.7114H7.01272L5.73926 20.627L12.0001 24L18.261 20.627L16.9875 17.7114Z`],[`d`,`M8.72168 13.9298H15.2812L11.9997 6.39575L8.72168 13.9298Z`],[`d`,`M9.15103 0L0 3.99892L0.861556 16.8551L9.15103 0Z`],[`fill`,`#c30f2e`,`d`,`M152.228.001L48.455 181.046H256L152.228 0z`],[`fill`,`#dd0330`,`d`,`M88.314 26.967L0 181.52h176.628L88.315 26.967z`],[`fill`,`#fff`,`d`,`M18.167 135.294h220.236v-2.419H18.167z`],[`fill`,`#fff`,`d`,`M204.38 170.667c-.861 0-1.67-.358-2.348-1.034c-4.045-4.063-4.221-20.586-4.026-45.33c.11-13.521.257-32.043-1.9-33.504c-2.104.873-2.315 16.172-2.451 26.301c-.162 11.785-.327 23.98-2.242 30.189c-.57 1.84-1.306 3.525-2.786 3.39c-2.086-.185-2.76-3.48-4.317-16.478c-.647-5.4-1.317-10.98-2.101-13.14a11 11 0 0 0-.269-.66c-.835 1.889-1.8 7.079-2.47 10.682c-.927 4.976-1.803 9.676-2.9 11.726c-.847 1.575-2.19 3.63-4.067 3.231c-2.558-.537-3.323-5.693-3.552-8.719c0-25.455-3.33-28.417-3.997-28.753l-.107.081l-.162-.036c-2.377 1.038-2.506 9.294-2.627 17.276c-.096 5.856-.198 12.492-1.053 18.701c-1.108 8.05-2.448 9.603-4.115 9.507c-3.838-.262-3.95-13.482-3.95-14.987c0-.472.012-1.028.027-1.642c.074-3.076.205-8.8-1.687-10.604c-.25-.239-.603-.515-.879-.437c-1.347.339-2.745 4.714-3.209 6.153c-.147.457-.265.833-.364 1.09c-.078.214-.177.515-.294.88c-1.02 3.095-2.18 6.183-4.16 6.944c-.732.284-1.498.222-2.216-.183c-.953-.541-1.73-1.646-2.455-3.482c-.397-1.016-.735-2.046-1.082-3.081c-.419-1.263-.85-2.569-1.384-3.808c-.419-.965-1.464-1.4-2.796-1.164c-2.768.494-3.232 3.29-3.622 7.5c-.07.733-.137 1.452-.228 2.128c-.011.198-.501 6.38-.814 8.344c-.865 5.39-2.002 7.512-3.89 7.358c-4.66-.398-6.798-20.836-6.684-29.47c.088-6.592-1.104-9-1.818-9.382c-.074-.034-.189-.096-.46.095c-.843.571-1.594 2.348-1.363 4.215c2.566 20.32.674 43.592-3.96 48.833c-1.46 1.649-3.448 1.627-4.832.236c-4.049-4.064-4.218-20.586-4.026-45.33c.11-13.521.254-32.043-1.9-33.504c-2.105.873-2.311 16.172-2.45 26.301c-.163 11.785-.329 23.98-2.246 30.189c-.57 1.84-1.307 3.525-2.782 3.39c-2.091-.186-2.761-3.48-4.321-16.478c-.649-5.4-1.319-10.98-2.101-13.14c-.1-.273-.189-.49-.27-.66c-.832 1.889-1.796 7.079-2.466 10.682c-.927 4.976-1.803 9.676-2.904 11.726c-.846 1.575-2.19 3.63-4.063 3.231c-2.558-.537-3.324-5.693-3.552-8.719c-.003-25.455-3.33-28.417-3.997-28.753l-.106.081l-.166-.036c-2.374 1.038-2.503 9.293-2.629 17.276c-.091 5.856-.194 12.492-1.048 18.701c-1.107 8.05-2.437 9.618-4.111 9.507c-3.846-.262-3.958-13.482-3.958-14.987c0-.472.016-1.028.03-1.642c.074-3.076.207-8.8-1.685-10.604c-.25-.239-.603-.515-.88-.438c-1.347.34-2.75 4.715-3.206 6.155a47 47 0 0 1-.364 1.09q-.16.432-.298.875c-1.02 3.096-2.18 6.187-4.155 6.95c-.736.282-1.506.22-2.22-.185c-.953-.541-1.734-1.646-2.454-3.482c-.398-1.016-.74-2.046-1.083-3.081c-.42-1.263-.854-2.569-1.387-3.808c-.416-.965-1.465-1.4-2.797-1.164c-3.188.567-3.943 4.52-4.55 9.238l-.106.839l-2.411-.32l.114-.824c.527-4.137 1.328-10.39 6.53-11.31c2.446-.435 4.585.581 5.446 2.583c.578 1.34 1.031 2.695 1.466 4.008c.324.99.654 1.98 1.037 2.959c.674 1.708 1.197 2.15 1.392 2.257c1.218-.38 2.462-4.167 2.873-5.414c.13-.402.24-.732.328-.968c.085-.233.195-.571.328-.98c1.097-3.43 2.474-7.144 4.918-7.762c.747-.191 1.903-.166 3.157 1.035c2.665 2.544 2.525 8.48 2.433 12.41c-.014.59-.028 1.126-.028 1.583c0 6.272.93 10.655 1.64 12.16c.367-.77.998-2.63 1.598-7.007c.831-6.066.938-12.624 1.027-18.41c.161-10.24.275-17.663 3.982-19.408c.552-.339 1.469-.522 2.436-.033c3.586 1.803 5.326 11.885 5.326 30.817c.225 2.926 1.013 6.006 1.66 6.448c.004-.066.53-.39 1.394-2.01c.925-1.718 1.845-6.665 2.655-11.026c1.792-9.614 2.606-12.989 4.726-13.166c1.615-.158 2.362 1.896 2.676 2.76c.883 2.422 1.537 7.888 2.23 13.678c.54 4.49 1.31 10.902 2.094 13.497c.084-.228.18-.5.283-.836c1.815-5.878 1.98-17.887 2.14-29.507c.22-16.14.503-26.139 3.448-28.226a2.44 2.44 0 0 1 2.233-.316c3.448 1.144 3.714 11.254 3.519 35.8c-.14 17.799-.313 39.952 3.323 43.603c.317.32.542.32.622.32c.17 0 .413-.161.67-.452c3.681-4.162 6.01-26.022 3.372-46.927c-.328-2.602.677-5.337 2.392-6.514c.946-.652 2.036-.736 2.978-.232c2.145 1.14 3.187 5.024 3.102 11.546c-.15 11.387 2.584 24.714 4.37 26.842c.282-.471.842-1.763 1.379-5.145c.301-1.87.799-8.153.806-8.216c.09-.71.155-1.398.217-2.097c.369-3.924.82-8.804 5.613-9.654c2.444-.435 4.583.577 5.448 2.583c.577 1.34 1.027 2.695 1.46 4.008c.332.99.664 1.98 1.046 2.959c.67 1.708 1.197 2.15 1.387 2.257c1.218-.38 2.467-4.167 2.875-5.41c.132-.402.243-.737.328-.973c.088-.228.195-.57.324-.979c1.1-3.43 2.477-7.144 4.924-7.762c.74-.191 1.9-.166 3.154 1.035c2.665 2.543 2.526 8.48 2.437 12.41q-.029.792-.033 1.583c0 6.272.931 10.655 1.641 12.16c.365-.77.994-2.63 1.601-7.007c.832-6.066.931-12.624 1.027-18.41c.159-10.24.273-17.663 3.98-19.408c.55-.339 1.467-.522 2.44-.033c3.58 1.803 5.325 11.884 5.325 30.817c.224 2.926 1.012 6.006 1.656 6.448c.008-.066.526-.39 1.399-2.01c.923-1.718 1.84-6.665 2.653-11.026c1.786-9.614 2.602-12.989 4.722-13.166c1.62-.158 2.367 1.896 2.68 2.76c.88 2.422 1.535 7.888 2.233 13.678c.534 4.49 1.304 10.902 2.092 13.497c.08-.228.176-.5.28-.836c1.813-5.878 1.976-17.887 2.138-29.507c.216-16.14.504-26.139 3.448-28.226a2.45 2.45 0 0 1 2.234-.316c3.452 1.144 3.718 11.254 3.52 35.8c-.141 17.799-.314 39.952 3.319 43.603c.324.32.544.32.63.32c.165 0 .408-.161.662-.452c3.687-4.162 6.014-26.022 3.375-46.927c-.342-2.723.43-5.47 1.84-6.526c.71-.537 1.575-.647 2.37-.313c2.054.877 3.445 4.63 4.255 11.484c.339 2.87.641 5.974.931 9.036c.641 6.683 1.509 15.69 2.684 17.67c.36-.46 1.096-1.704 2.19-5.038l2.307.753c-1.696 5.157-3.026 7.1-4.755 6.902c-2.69-.299-3.468-5.734-4.84-20.055c-.29-3.048-.59-6.132-.928-8.989c-1.03-8.74-2.782-9.532-2.801-9.54c-.342.174-1.137 1.992-.842 4.31c2.558 20.32.673 43.597-3.964 48.834c-.747.842-1.587 1.27-2.485 1.27`],[`d`,`M12.024.017V0L12 .008L11.976 0v.017L.812 3.892l1.605 14.875l9.559 5.207V24l.024-.013l.024.013v-.026l9.559-5.207l1.605-14.875zm6.868 14.244q-1.64 3.948-6.031 4.166c-2.829 0-4.661-1.7-4.66-1.7q-1.745-1.359-2.398-3.417c-.695-.76-.702-.841-.774-1.145c-.072-.303.045-.388.249-.685q.204-.298.098-.85q-.26-.36-.3-1.128q0-.37.496-.783q.495-.413.607-.632q.083-.119.065-1.031q-.006-.897.995-.975c1-.08 1.565-.832 1.879-1.174c.21-.228.52-.339.91-.341c.551-.026 1.052.185 1.484.62c1.075-.055 2.176.235 3.292.863q2.379 1.414 2.596 3.055q-.257 2.158-5.788-.113q-2.895.819-2.846 3.552q0 2.508 2.422 3.643c-.787-.772-1.122-1.422-1.01-1.959q2.456 2.906 5.588 2.173c-.92.032-1.65-.264-2.198-.893q2.116-.05 3.998-1.972c-.724.576-1.482.794-2.284.657q3.26-2.563 2.307-5.98l-.002-.006a3.02 3.02 0 0 1 .788 2.03q.023 1.175-.795 2.477q.613-.478 1.413-2.047c.23 2.117-.625 3.724-2.574 4.825q.934-.085 2.473-1.23m-5.567-6.63a.319.319 0 1 1 .638 0a.319.319 0 0 1-.638 0`],[`id`,`ng-grad`,`x1`,`49`,`x2`,`226`,`y1`,`214`,`y2`,`130`,`gradientUnits`,`userSpaceOnUse`],[`stop-color`,`#E40035`],[`offset`,`.24`,`stop-color`,`#F60A48`],[`offset`,`.352`,`stop-color`,`#F20755`],[`offset`,`.494`,`stop-color`,`#DC087D`],[`offset`,`.745`,`stop-color`,`#9717E7`],[`offset`,`1`,`stop-color`,`#6C00F5`],[`fill`,`url(#ng-grad)`,`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`d`,`m222.077 39.192-8.019 125.923L137.387 0l84.69 39.192Zm-53.105 162.825-57.933 33.056-57.934-33.056 11.783-28.556h92.301l11.783 28.556ZM111.039 62.675l30.357 73.803H80.681l30.358-73.803ZM7.937 165.115 0 39.192 84.69 0 7.937 165.115Z`],[`type`,`button`,3,`active`],[`type`,`button`,3,`click`],[3,`name`],[3,`rpc`],[3,`rpc`,`focus`],[3,`navigate`,`rpc`],[3,`focusHandled`,`showForm`,`rpc`,`focus`],[3,`focusHandled`,`rpc`,`focus`]],template:function(e,t){if(e&1&&(R(0,`header`)(1,`h1`,2)(2,`span`,3),N(3,aU,2,0,`:svg:svg`,4)(4,oU,7,0,`:svg:svg`,4)(5,sU,11,0,`:svg:svg`,5)(6,cU,5,0,`:svg:svg`,6)(7,lU,2,0,`:svg:svg`,7)(8,uU,10,0,`:svg:svg`,8)(9,dU,2,0,`:svg:svg`,9),z(),R(10,`span`,10),J(11),z()(),R(12,`nav`,11,0),G(`scroll`,function(){return t.measureNav()}),N(14,pU,2,0),z(),R(15,`span`,12)(16,`span`,13),B(17,`span`),z(),J(18),z()(),R(19,`main`,14,1)(21,`p`,15),J(22),z(),N(23,mU,2,0,`p`,16)(24,hU,1,1,`app-coming-soon`,17)(25,gU,2,0,`p`,18)(26,_U,5,0,`p`,19)(27,kU,2,2),z()),e&2){let e;j(2),q(`ng-mark`,t.view()===`angular`),j(),P(t.view()===`nativescript`?3:t.view()===`capacitor`?4:t.view()===`angular-native`?5:t.view()===`analog`?6:t.view()===`ngrx`?7:t.view()===`angular`?8:9),j(7),q(`ng-text`,t.view()===`angular`),j(),Y(t.title()),j(),q(`fade-start`,t.navFade().start)(`fade-end`,t.navFade().end),j(2),P(t.availableTabs().length>1?14:-1),j(),q(`connected`,t.connected())(`failed`,t.connectionFailed()),j(3),X(` `,t.connected()?`Live`:t.connectionFailed()?`Disconnected`:`Connecting…`,` `),j(4),Y(t.backgroundNote()),j(),P(t.connectionFailed()?23:(e=t.comingSoon())?24:t.view()===`angular-native`&&!t.nativePageId()?25:t.tabEnabled(t.tab(),t.config())?27:26,e)}},dependencies:[JE,rk,kM,VN,ZP,kI,jR,Az,LV,MH,BH,yE],styles:[`[_nghost-%COMP%] { --%NS%accent-soft: color-mix(in srgb, var(--%NS%accent) 12%, transparent); --%NS%accent-line: color-mix(in srgb, var(--%NS%accent) 45%, transparent); display: flex; diff --git a/extension/ui/index.html b/extension/ui/index.html index 383368a..46d4019 100644 --- a/extension/ui/index.html +++ b/extension/ui/index.html @@ -7,7 +7,7 @@ Angular DevTools - + diff --git a/package.json b/package.json index ac7b849..19c3078 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ "devtools:standalone": "node bin.mjs dev", "devtools:mcp": "node bin.mjs mcp", "devtools:report": "node bin.mjs build --outDir dist-report", - "devtools:nativescript": "cd examples/nativescript && node ../../bin.mjs dev --host 0.0.0.0 --no-auth", + "devtools:nativescript": "cd examples/nativescript && node ../../bin.mjs dev --no-auth", + "devtools:nativescript:device": "cd examples/nativescript && node ../../bin.mjs dev --host 0.0.0.0 --no-auth", "devtools:build-pkg": "pnpm --filter @santoshyadavdev/ng-devtools build", "devtools:publish": "pnpm --filter @santoshyadavdev/ng-devtools publish --access public", "verify:publish": "node scripts/verify-publish.mjs",