diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index 700fac7..f89267b 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -1,6 +1,17 @@ name: Deploy to GitHub Pages on: + push: + branches: [main] + paths: + - "astro-site/**" + - "compressionkit/**" + - "examples/**" + - "configs/**" + - "scripts/**" + - "pyproject.toml" + - "uv.lock" + - ".github/workflows/deploy-pages.yml" workflow_dispatch: workflow_call: @@ -39,18 +50,42 @@ jobs: with: enable-cache: true - - name: Install and Build - env: - CI: "" - PUBLIC_URL: "${{ steps.pages.outputs.base_url }}/" + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: '24' + cache: npm + cache-dependency-path: astro-site/package-lock.json + + - name: Install documentation dependencies + working-directory: astro-site + run: | + npm ci + npx playwright install --with-deps chromium + + - name: Validate and build documentation + working-directory: astro-site + run: | + npm run check + npm run check:content + npm run build + npm run check:links + npm run check:migration + + - name: Check rendered documentation + working-directory: astro-site run: | - uv sync --only-group docs - uv run zensical build + npm exec astro preview -- --host 127.0.0.1 --port 8878 > /tmp/astro-preview.log 2>&1 & + for attempt in $(seq 1 30); do + curl -fsS http://127.0.0.1:8878/compressionkit/ > /dev/null && break + sleep 1 + done + DOCS_AUDIT_URL=http://127.0.0.1:8878 npm run check:layout - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: - path: ./site + path: ./astro-site/dist deploy: environment: diff --git a/.github/workflows/docs-preview.yml b/.github/workflows/docs-preview.yml new file mode 100644 index 0000000..25edabc --- /dev/null +++ b/.github/workflows/docs-preview.yml @@ -0,0 +1,53 @@ +name: Astro documentation checks +on: + pull_request: + paths: + - 'astro-site/**' + - 'pyproject.toml' + - 'uv.lock' + - 'compressionkit/**' + - 'examples/**' + - 'configs/**' + - 'scripts/**' + - '.github/workflows/docs-preview.yml' + - '.github/workflows/deploy-pages.yml' + workflow_dispatch: +permissions: + contents: read +jobs: + docs: + runs-on: ubuntu-latest + defaults: + run: + working-directory: astro-site + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '24' + cache: npm + cache-dependency-path: astro-site/package-lock.json + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - uses: astral-sh/setup-uv@v5 + - run: npm ci + - name: Install browser for rendered checks + run: npx playwright install --with-deps chromium + - run: npm run check + - run: npm run check:content + - run: npm run build + - run: npm run check:links + - run: npm run check:migration + - name: Check rendered documentation + run: | + npm exec astro preview -- --host 127.0.0.1 --port 8878 > /tmp/astro-preview.log 2>&1 & + for attempt in $(seq 1 30); do + curl -fsS http://127.0.0.1:8878/compressionkit/ > /dev/null && break + sleep 1 + done + DOCS_AUDIT_URL=http://127.0.0.1:8878 npm run check:layout + - uses: actions/upload-artifact@v4 + with: + name: compressionkit-astro-preview + path: astro-site/dist diff --git a/.gitignore b/.gitignore index c5c7ce7..bda8e42 100644 --- a/.gitignore +++ b/.gitignore @@ -197,3 +197,14 @@ internal/** # Local-only model weight workspace (large binaries; published artifacts go to # results/ or HuggingFace). /models/ + +# Astro generated output +astro-site/node_modules/ +astro-site/dist/ +astro-site/.astro/ +astro-site/.cache/ +astro-site/src/data/ +astro-site/src/content/docs/reference/ +astro-site/public/reference/ +astro-site/src/content/docs/guides/ +astro-site/public/notebooks/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 978b1d4..04c8741 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -28,5 +28,5 @@ exclude: | site/.*| slides/.*| results/.*| - docs/assets/plots/.* + astro-site/public/assets/plots/.* )$ diff --git a/AGENTS.md b/AGENTS.md index d555307..c967ecd 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -30,7 +30,7 @@ These are the project guidelines for agentic AI models working in this repositor - For logging and metrics, prefer TensorBoard and Keras callbacks where possible. ## Experiment Architecture -Three layers, kept deliberately separate (see `docs/experiment-architecture.md` for the full rationale): +Three layers, kept deliberately separate (see `astro-site/src/content/docs/experiment-architecture.md` for the full rationale): 1. **Blocks** — small, importable capabilities (datasets/cache builders, preprocessing/augmentation, model builders, losses/metrics/callbacks, scorecard builders, exporters/validators). No hidden global state, no mandatory registries. 2. **Ready-made experiments** — readable end-to-end flows built from blocks. Opinionated but never the only path. 3. **Golden releases** — the release boundary: stable IDs, reproducible configs, scorecards, deploy packages. An experiment becomes golden by passing the artifact contract, not by being rewritten around a mandatory base class. @@ -41,7 +41,7 @@ Three layers, kept deliberately separate (see `docs/experiment-architecture.md` - When a shared trainer or runner starts accumulating export, validation, or scorecard policy, extract that behavior into standalone helpers before adding new abstract hooks. - Consider moving generic Keras 3 edge-model training/deployment blocks to HeliaEdge once they are no longer compressionKIT-specific. Good candidates include RVQ/VQ layers, reusable RVQ architectures, generic losses/metrics/callbacks, LiteRT export helpers, and reference-vector utilities. - Keep modality-specific datasets, physiological scorecards, signal preprocessing policy, golden registry entries, HuggingFace naming, and v1 release policy in compressionKIT. -- Entropy-coding research (new priors/entropy coders as a second stage on top of a frozen codec) follows this same pattern; see `docs/entropy-coding-research.md` for the current blocks, the promotion path, and known lessons (don't re-derive these). +- Entropy-coding research (new priors/entropy coders as a second stage on top of a frozen codec) follows this same pattern; see `maintainer-notes/entropy-coding-research.md` for the current blocks, the promotion path, and known lessons (don't re-derive these). ## Style - Docstrings should use Google style. @@ -73,7 +73,7 @@ Three layers, kept deliberately separate (see `docs/experiment-architecture.md` - Customers will see this codebase — keep public-facing code, configs, and docs clean. - Golden run naming: `{modality}_rvq_{sample_rate}hz_{cr}x_golden/` (e.g., `ppg_rvq_64hz_04x_golden/`). Runs live under `results/` (git-ignored) — commit only configs, scripts, and code; never model weights or large artifacts. - Deploy artifacts are exported via `compressionkit.export.deploy.export_for_deployment()` into each run's `deploy/` subdirectory (`.tflite`, `.h`, `.npz`, `.json`) — the only publishable outputs. -- Codec-family dispatch (loader class, required files, model card, default license) is centralized in `compressionkit.export.family_registry.FAMILY_REGISTRY` — adding a new codec family (`rvq`/`spiht`/`hybrid` today) means adding one entry there, not editing the runtime loader, validator, and publisher independently. See `docs/adding-a-codec-family.md` for the full concept-to-release lifecycle. +- Codec-family dispatch (loader class, required files, model card, default license) is centralized in `compressionkit.export.family_registry.FAMILY_REGISTRY` — adding a new codec family (`rvq`/`spiht`/`hybrid` today) means adding one entry there, not editing the runtime loader, validator, and publisher independently. See `astro-site/src/content/docs/adding-a-codec-family.md` for the full concept-to-release lifecycle. - Before cutting a release, run `compressionkit golden validate-all --strict-release` to audit every registered golden's existing local deploy package for schema drift (gitignored `results/` can silently go stale relative to code changes). ### HuggingFace Releases diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3e9a583..7f0b368 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,6 +7,7 @@ workflow, code style, and how to add new signals, models, or configs. - Python 3.12 - [`uv`](https://docs.astral.sh/uv/) for project and package management +- Node.js 24 and npm 11 for documentation - (Optional) NVIDIA GPU + CUDA for training — a dev container with CUDA is provided under `.devcontainer/` ## Getting set up @@ -15,7 +16,7 @@ workflow, code style, and how to add new signals, models, or configs. git clone https://github.com/AmbiqAI/compressionkit.git cd compressionkit uv sync --group dev # runtime + dev deps -uv sync --group docs # (optional) docs build deps +npm --prefix astro-site ci # docs dependencies; requires Node 24 uv run pre-commit install # install git hooks ``` @@ -35,8 +36,9 @@ uv run ruff format . uv run pre-commit run --all-files # Build the docs locally -uv run --group docs zensical serve # live-reload at http://localhost:8000 -uv run --group docs zensical build # static site in site/ +npm --prefix astro-site ci # Node 24 +npm --prefix astro-site run dev # local preview +npm --prefix astro-site run build # static site in astro-site/dist/ ``` ## Code style @@ -87,9 +89,9 @@ Ruff enforces the rest. The config lives in [`pyproject.toml`](pyproject.toml). ## Documentation -- Public docs live under [`docs/`](docs/) and are served via Zensical / MkDocs Material. -- If you add a new CLI command, config, or model family, add a page (or extend an existing one) and update the nav in [`zensical.toml`](zensical.toml). -- API docs are generated via `mkdocstrings` — a well-formed docstring is enough, no extra wiring needed. +- Public docs live under [`astro-site/src/content/docs/`](astro-site/src/content/docs/) and are built with Astro/Starlight. +- If you add a new CLI command, config, or model family, add a page (or extend an existing one) and update the nav in [`astro-site/src/navigation.mjs`](astro-site/src/navigation.mjs). +- API docs use static Griffe extraction. Add public modules to `astro-site/scripts/public-api.json` and maintain their docstrings. ## Pull requests diff --git a/README.md b/README.md index a0f61b8..10b50d1 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ compressionkit/ # Importable Python package └── synthetic/ # Synthetic signal and artifact generation configs/ # Versioned YAML configs -docs/ # Documentation site +astro-site/ # Astro documentation site examples/ # Notebook quickstarts scripts/ # Release, evaluation, and plotting utilities tests/ # pytest suite @@ -155,7 +155,8 @@ uv sync --group dev --extra hf uv run ruff check compressionkit/ tests/ scripts/ uv run ruff format compressionkit/ tests/ scripts/ uv run pytest tests/ -ra -./.venv/bin/python -m zensical build +npm --prefix astro-site ci +npm --prefix astro-site run build ``` --- diff --git a/astro-site/.nvmrc b/astro-site/.nvmrc new file mode 100644 index 0000000..a45fd52 --- /dev/null +++ b/astro-site/.nvmrc @@ -0,0 +1 @@ +24 diff --git a/astro-site/AUDIT.md b/astro-site/AUDIT.md new file mode 100644 index 0000000..13d6ba7 --- /dev/null +++ b/astro-site/AUDIT.md @@ -0,0 +1,80 @@ +# compressionKIT documentation audit + +Scope: the local Astro replacement under issue #68. The published site is unchanged. + +## Content and layout revised + +- Home: replaced the repetitive release narrative, duplicated installation commands, and overlapping navigation tables with a product explanation, benefit cards, a four-step workflow, and four starting points. +- Use cases: replaced unsupported battery-life, clinical-suitability, and universal fidelity claims with concrete integration scenarios and explicitly calculated payload examples. +- Evidence: separated quality, package footprint, and detailed metrics; explained differing evaluation views and missing measurements. Recorded metric values are preserved. +- Models and methods: simplified the model index, split wide tables, retained primary plots, and made secondary plots expandable. Corrected stale SPIHT/hybrid availability statements. +- Experiments: grouped the index by signal, made page titles readable, retained stable IDs, and separated reproduction from optional publication. Removed the misleading dataset-bypass smoke command. +- Guides: clarified Python prerequisites, provided the missing step to run the first script, removed duplicate installation instructions, added the ECG notebook to the example overview, and repaired prose-only file references. +- Reference: added context to topic pages, removed internal planning/refactoring material from public architecture and contract pages, and clarified scorecard coverage versus application acceptance criteria. +- Generated API: converted reStructuredText literal examples into fenced code before rendering; Python comments no longer become page headings. Two regression tests cover this conversion. +- Layout: bounded narrative line length, consistent section spacing, compact card headings, readable tables, expandable long examples, a smaller mobile capability grid, and room for the product name in the mobile header. + +## Verified on this revision + +- Production build passes. +- Astro check: 0 errors, warnings, or hints. +- Docstring regression tests: 2 passing. +- Internal link, asset and anchor audit: 1,518 checks, no failures. +- Production-rendered route audit: 97 routes × 2 viewports (390px and 1440px) × 2 themes = 388 checks, no failures. Checks cover response status, horizontal overflow, visible images, one page heading, empty links and code accidentally rendered inside cards. +- Screenshots inspected for home, evidence, model and experiment pages in desktop/mobile and light/dark configurations. +- Mobile section selection, scoped sidebar, plot disclosure and API search tested; `load_codec` returns one API match. +- All three downloadable notebooks match canonical source bytes. Model/fidelity tables retain numeric source cells. +- Live Hugging Face API: all 33 linked bundle repositories returned 200 and file inventories. Recorded revisions are in `bundle-audit.json`. Availability does not establish successful runtime loading or evaluation. + +## Remaining migration work + +- Integrate experiment/evidence generators with the authored Astro structure and add drift checks. Retain source ownership rather than overwriting the editorial pass with old templates. +- Independently review the migration and wire final CI/cutover. No deployment occurred in this pass. +- Runtime execution, notebook execution, fresh model evaluation, and hardware integration are not verified by this documentation audit. +- The internal-link audit and bundle check are not a complete external-link availability audit. +- Muted code backgrounds and distinct notebook input/output presentation are applied through supported theme configuration. Shared collapsible CodeBlock/Callout options remain a separate proposed helia-ui feature. + +## Gap closure pass + +- Added SPIHT and hybrid method guides, a practical selection workflow and device/transport/host deployment boundaries. An independent source review found inaccurate minimal Python dependency claims; those are corrected. +- Preview CI added in `.github/workflows/docs-preview.yml`. Existing published-site deployment is unchanged. Remote CI has not run. +- Build and Astro check pass; 99 routes / 396 layout checks pass. Rendered deployment screenshot inspected. +- `check:migration` passes for 115 inventoried items, original page routes and notebook bytes. Registry/config/generator input hashes are watched. This catches drift but is not data-only generator integration. +- External audit attempted 81 URLs: last retry returned 49 successful responses, 31 HTTP 503 responses and one connection failure. No 404 responses observed; failures remain unresolved rather than classified as dead links. +- Source-heading comparison identified 131 candidate old fragment IDs absent from the new render. `anchor-review.json` is a triage list, not verified old-site IDs; exact old rendered anchors still need checking and aliases where appropriate. +- Runtime execution blocked: the local dev container is stopped and `devcontainer` CLI unavailable. Requested the user's intended execution environment. No notebooks executed. +- Evidence scorecards are not present in this checkout. Automated evidence refresh needs the source scorecards and data-only export/render integration; preserved snapshot values remain unchanged. + +Published-site anchor verification: fetched all 69 migrated original pages, inspected 499 heading IDs with no fetch failures. Found 168 missing old IDs before remediation. Added 43 aliases where the corresponding heading text matches exactly after punctuation normalization. Remaining renamed/removed sections and relocated API symbols need deliberate destination mapping. This supersedes the earlier heuristic 131-candidate note. + +## Independent review follow-up + +Resolved the review findings: false minimal-dependency claims in source docstrings and the HF guide, prior artifact path, same-site absolute link coverage, hosted notebook setup guidance, and inventory coverage for new notebooks. Five regression tests and 1,553 internal links pass. Follow-up review confirmed fixes and 37 registry entries matched to 37 experiment pages. Overview facts now render from the registry export, with target ratio explicitly labeled. This does not regenerate evaluation scorecards or validate runtime execution. + +## Evidence data and old-anchor disposition + +Customer evidence is now a validated data snapshot rendered separately from prose. An explicit refresh command accepts a complete scorecard/results tree and records source provenance; it never treats missing measurements as zero or a partial file sum as Total. Fixture coverage verifies these boundaries. Preserved values have not been replaced with fresh model results. Detailed fidelity/modality tables remain separately maintained snapshots. + +Published original-site anchor audit: 168 previously missing IDs now have 104 heading aliases, 32 API entry-point links and 32 intentional retirements (internal guidance and demo documentation moved to the maintained hub). Migration checks verify active mappings. Eight content tests, 1,558 local links and 396 rendered layout checks pass; evidence tables and a legacy API link inspected. No runtime or notebook execution, remote CI or deployment claimed. + +## Detailed fidelity refresh and production recheck + +PPG and ECG fidelity pages now render five validated tables each from data-only snapshots. Independent review confirmed exact original cells and source hashes, full ratio/noise coverage, zero preservation and failure before writing partial results. Refresh tooling does not overwrite authored prose; no fresh evaluation is claimed. + +The production audit exposed stale ExpressiveCode CSS references after a theme change. Build now forces the Astro content cache to refresh, and the browser audit fails resource HTTP errors. All 396 production route/viewport/theme checks pass with this stronger guard; mobile muted code styling and scrolling inspected. Ten fixture/content tests, 1,558 local links, 115 migration entries and 168 anchor dispositions pass. Build and type checks pass. Runtime/notebook execution, unresolved external availability and remote CI remain unverified. + +## Local execution and clean checkout verification + +The three canonical notebooks executed successfully on 2026-10-02 in a local Linux ARM64 CPU container with Python 3.12 and locked project dependencies: 22 code cells, no errors. Source hashes and coverage are recorded in notebook-execution-audit.json. CLI --help passed. Source notebooks and displayed saved outputs remain unchanged. This verifies default examples, not training, GPU, hardware or all model tiers. + +A clean source checkout passed npm ci, types/build, ten content tests, 1,558 links and migration checks. Second independent delivery review found no actionable findings. External retry resolved 76 of 81 links; the GitHub source link was verified via authenticated API and sleepdata.org returned 200 via curl. Three PhysioNet URLs remain DNS-unverified. No PR, remote CI or deployment yet. + +## PR review corrections + +Corrected the quickstart to use the public target_cr property and executed the exact snippet in the local CPU container. Added meaningful alternative text to all seven saved notebook plots; the generator escapes it and rejects missing descriptions. All three notebooks were rerun successfully after their metadata changes. Preview CI now covers root project metadata and lockfile changes. Twelve content tests, build/types, 1,558 links, migration checks and 396 rendered checks pass. + +## Astro cutover and source cleanup + +The Pages workflow now validates and publishes Astro output on main. The Zensical configuration, duplicate docs tree and obsolete experiment-page generator are removed. Three planning/research documents are retained under maintainer-notes, outside public content. Scorecard helpers remain shared with the Astro refresh commands; standalone reports default to results/reports. Plot generation writes to Astro public assets. Python documentation packages are removed from pyproject.toml and uv.lock. + +Migration checks now distinguish retired sources from active notebook/config inputs, retain baseline hashes and verify original routes plus preserved maintainer notes. Post-cleanup build/types, twelve content tests, 1,558 links, 115 inventory entries, 168 legacy anchors and 396 rendered checks pass. Container lint, formatting and five fidelity-helper tests pass. Delivery review corrections to contributor commands and the plot hook exclusion are resolved. Deployment awaits merge; this record is not evidence of a production cutover. diff --git a/astro-site/CONTENT-OWNERSHIP.md b/astro-site/CONTENT-OWNERSHIP.md new file mode 100644 index 0000000..c8e98a2 --- /dev/null +++ b/astro-site/CONTENT-OWNERSHIP.md @@ -0,0 +1,33 @@ +# Documentation ownership and refresh + +The Astro pages are authored content. Do not replace them with the older full-page experiment or evidence templates: those templates also write narrative and layout that has been revised here. + +| Surface | Authority | Update contract | +| --- | --- | --- | +| Experiment facts | `compressionkit/experiments/registry.py` and referenced configs | The build exports the registry in an isolated Pydantic environment; ExperimentFacts renders overview values. Authored reproduction, dataset and explanation sections remain review-required when registry/config inputs change. `check:migration` fails on input drift. | +| Recorded evidence | Original documented evaluation snapshot; refreshed run scorecards when supplied | Customer evidence lives in content-data/customer-evidence.json and renders through EvidenceTable. Preserve sample counts and metric definitions. A complete scorecard set can refresh data without overwriting prose. | +| Notebook guides | `examples/*.ipynb` | `prepare:docs` renders saved cells/outputs and copies downloads byte for byte. It never executes notebooks. | +| Python API | Allowlisted Python modules and their docstrings | `prepare:docs` regenerates with static Griffe extraction. | +| Navigation and explanatory prose | `src/navigation.mjs` and `src/content/docs` | Edit directly and validate the built site. | + +## Evidence refresh boundary + +Run evidence exporters against an explicit results directory and write to a temporary review location, not over the Astro pages. The standalone report utilities write under results/reports; Astro refresh commands write reviewed JSON without replacing prose. + +Experiment overview facts and customer-evidence tables have data-only exports and validated Astro renderers. Refresh customer evidence from a complete results tree with: + +```sh +npm run refresh:evidence -- --results-dir /path/to/results --output /tmp/customer-evidence.json +``` + +Review the data diff, then replace `content-data/customer-evidence.json` and rebuild. Missing runs fail the refresh; absent measurements remain dashes. The provenance digest covers source scorecards and deploy artifacts. The initial snapshot preserves the source documentation values and is labeled accordingly. Detailed PPG and ECG fidelity tables render from `content-data/fidelity-ppg.json` and `fidelity-ecg.json`. Refresh both together with: + +```sh +npm run refresh:fidelity -- --results-dir /path/to/results --output-dir /tmp/fidelity-review +``` + +Review both JSON diffs before copying them into `content-data/`. The exporter requires all eleven scorecards before writing either file. Zero-valued errors are preserved; absent measurements remain dashes. Run `npm run check:content`, rebuild and inspect the tables. Model and signal overview pages still contain separately recorded evaluations and need coordinated editorial review when measurements change. The migration's hash guard detects changed inputs; it does not prove that new evaluation results have been incorporated. Do not update recorded source hashes merely to silence it: review and update affected pages first. + +## Migration checks + +After `npm run build`, run `npm run check:migration` and `npm run check:links`. These check active source changes, the absence of retired source files, retained maintainer notes, original page routes, migrated files and byte-identical notebook downloads. Retired source hashes record the baseline; they are not build inputs. `npm run check:external` records HTTP availability separately because authentication, rate limiting and network policy can prevent verification without implying a broken destination. Legacy fragment dispositions are explicit in legacy-anchor-dispositions.json. The migration guard verifies retained aliases and relocated API targets; retired internal/demo sections retain documented reasons. diff --git a/astro-site/README.md b/astro-site/README.md new file mode 100644 index 0000000..d9aa45e --- /dev/null +++ b/astro-site/README.md @@ -0,0 +1,25 @@ +# compressionKIT documentation + +Astro/Starlight is the documentation build under issue #68. Merging the cutover deploys the validated artifact to GitHub Pages. + +Use Node 24 and npm 11: + +```sh +cd astro-site +npm ci +npm run dev +npm run build +npm run check +``` + +Authored replacement pages live in `src/content/docs`. Navigation lives in `src/navigation.mjs`. The content inventory in `migration-manifest.json` records baseline source hashes and dispositions. See AUDIT.md for completed checks and remaining coverage. + +`prepare:docs` renders existing notebooks from `../examples` without executing cells, and extracts Python API documentation with pinned Griffe static analysis. The public module allowlist is `scripts/public-api.json`. Generated pages and assets are ignored. `postbuild` publishes full API Markdown and updates the LLM bundle. + +The pull-request CI workflow checks types, build, content, internal links, migration inventory and rendered layouts. It does not deploy. The Pages workflow runs the same validation and deploys only from main or a manual invocation. Registry facts, customer evidence and detailed fidelity tables have data-only rendering and refresh checks. Legacy heading mappings are inventoried and checked. Pending before cutover: three unresolved PhysioNet links, remote CI and approval. The three default notebooks and CLI help have passed in a local CPU container; see notebook-execution-audit.json. See CONTENT-OWNERSHIP.md for source ownership and refresh boundaries. Python runtime validation uses the repository container workflow. A rendered notebook is not an executed notebook. + +Production builds use `astro build --force` so cached Markdown cannot retain obsolete ExpressiveCode asset references after theme changes. The rendered audit checks failed resource responses as well as page layout. + +## Deployment and rollback + +The Pages workflow uploads `astro-site/dist` with the `/compressionkit/` base path. PR checks produce a preview artifact without deploying. After merge, verify the production home, notebook, API and legacy redirect URLs. To roll back, revert the migration merge on main and manually run the restored Pages workflow. The pre-migration source is retained in Git history at `69b94d836dd8a24f227d411e99ef4ff2a7de2b7d`. diff --git a/astro-site/anchor-review.json b/astro-site/anchor-review.json new file mode 100644 index 0000000..16f22de --- /dev/null +++ b/astro-site/anchor-review.json @@ -0,0 +1,1151 @@ +{ + "checkedAt": "2026-10-02T21:11:23.323Z", + "source": "Published original site heading IDs", + "results": [ + { + "route": "adding-a-codec-family", + "destination": "astro-site/src/content/docs/adding-a-codec-family.md", + "headings": 5, + "missing": [ + { + "id": "two-different-meanings-of-family-dont-conflate-them", + "text": "Two different meanings of \"family\" — don't conflate them" + } + ] + }, + { + "route": "api/evaluation", + "destination": "astro-site/src/content/docs/api/evaluation.md", + "headings": 8, + "missing": [ + { + "id": "compressionkit.evaluation.metrics.PRD", + "text": "compressionkit.evaluation.metrics.PRD" + }, + { + "id": "compressionkit.evaluation.metrics.TruePRD", + "text": "compressionkit.evaluation.metrics.TruePRD" + }, + { + "id": "compressionkit.evaluation.metrics.compute_signal_metrics", + "text": "compressionkit.evaluation.metrics.compute_signal_metrics(original, reconstructed, *, noise_power=None)" + }, + { + "id": "compressionkit.evaluation.metrics.compute_ppg_physiokit_metrics", + "text": "compressionkit.evaluation.metrics.compute_ppg_physiokit_metrics(signal, *, sample_rate, low_hz, high_hz, order, min_peaks)" + }, + { + "id": "compressionkit.evaluation.metrics.summarize_physiokit_alignment", + "text": "compressionkit.evaluation.metrics.summarize_physiokit_alignment(originals, reconstructions, *, sample_rate, low_hz, high_hz, order, min_peaks)" + }, + { + "id": "compressionkit.evaluation.artifacts.save_sample_artifacts", + "text": "compressionkit.evaluation.artifacts.save_sample_artifacts(sample_id, original, reconstructed, sampling_rate, run_dir, band_original=None, band_reconstructed=None, physiokit_metrics=None, save_plot=True)" + } + ] + }, + { + "route": "api/export", + "destination": "astro-site/src/content/docs/api/export.md", + "headings": 1, + "missing": [ + { + "id": "compressionkit.export.tflite.export_encoder_tflite", + "text": "compressionkit.export.tflite.export_encoder_tflite(encoder, *, rep_dataset, output_dir, tflite_name='encoder.tflite', header_name='encoder.h', c_array_name='encoder', quantization='INT8', io_type='int8')" + } + ] + }, + { + "route": "api/datasets", + "destination": "astro-site/src/content/docs/api/datasets.md", + "headings": 9, + "missing": [ + { + "id": "compressionkit.datasets.ppg.load_ppg_signal", + "text": "compressionkit.datasets.ppg.load_ppg_signal(edf_file, *, target_rate=64, offset_samples=0, num_samples=None, target_label='Pleth')" + }, + { + "id": "compressionkit.datasets.ppg.load_ppg_splits", + "text": "compressionkit.datasets.ppg.load_ppg_splits(datasets_dir, glob_pattern, *, train_ratio=0.8, val_ratio=0.2, seed=42, **load_kwargs)" + }, + { + "id": "compressionkit.datasets.ppg.load_ppg_file_splits", + "text": "compressionkit.datasets.ppg.load_ppg_file_splits(datasets_dir, glob_pattern, *, train_ratio=0.8, val_ratio=0.2, seed=42)" + }, + { + "id": "compressionkit.datasets.ppg.build_ppg_tfrecord_cache", + "text": "compressionkit.datasets.ppg.build_ppg_tfrecord_cache(*, datasets_dir, glob_pattern, cache_root, target_rate, target_label, offset_samples, segment_samples, frame_size, shuffle_seed, train_ratio=0.8, val_ratio=0.2, windows_per_subject_train=64, windows_per_subject_val=16, force_rebuild=False)" + }, + { + "id": "compressionkit.datasets.ppg.make_ppg_inmemory_dataset", + "text": "compressionkit.datasets.ppg.make_ppg_inmemory_dataset(data, *, frame_size, batch_size, buffer_size, preprocessor, augmenter, target_data=None, null_aug_cfg=None, shuffle=True)" + }, + { + "id": "compressionkit.datasets.ppg.make_ppg_tfrecord_dataset", + "text": "compressionkit.datasets.ppg.make_ppg_tfrecord_dataset(tfrecord_paths, *, frame_size, segment_samples, batch_size, shuffle_buffer_size, preprocessor, augmenter, input_filter_cfg, target_filter_cfg, sample_rate, shuffle, seed=42, null_aug_cfg=None)" + }, + { + "id": "compressionkit.datasets.ppg.make_ppg_stream_dataset", + "text": "compressionkit.datasets.ppg.make_ppg_stream_dataset(file_paths, *, frame_size, window_samples, batch_size, subject_buffer_size, window_buffer_size, windows_per_subject, interleave_cycle_length, target_rate, target_label, offset_samples, preprocessor, augmenter, input_filter_cfg, target_filter_cfg, shuffle, seed=42, null_aug_cfg=None)" + }, + { + "id": "compressionkit.datasets.ppg.collect_random_samples", + "text": "compressionkit.datasets.ppg.collect_random_samples(dataset, sample_count, rng, pool_multiplier=5)" + }, + { + "id": "compressionkit.datasets.ppg.bandpass_filter_batch", + "text": "compressionkit.datasets.ppg.bandpass_filter_batch(signals, *, sample_rate, low_hz, high_hz, order=3)" + } + ] + }, + { + "route": "api/configs", + "destination": "astro-site/src/content/docs/api/configs.md", + "headings": 9, + "missing": [ + { + "id": "compressionkit.configs.ppg_rvq.PpgRvqConfig", + "text": "compressionkit.configs.ppg_rvq.PpgRvqConfig" + }, + { + "id": "compressionkit.configs.ppg_rvq.PpgRvqConfig.from_yaml", + "text": "from_yaml(path)\n\n \n classmethod" + }, + { + "id": "compressionkit.configs.ppg_rvq.DataConfig", + "text": "compressionkit.configs.ppg_rvq.DataConfig" + }, + { + "id": "compressionkit.configs.ppg_rvq.ModelConfig", + "text": "compressionkit.configs.ppg_rvq.ModelConfig" + }, + { + "id": "compressionkit.configs.ppg_rvq.TrainingConfig", + "text": "compressionkit.configs.ppg_rvq.TrainingConfig" + }, + { + "id": "compressionkit.configs.ppg_rvq.EvaluationConfig", + "text": "compressionkit.configs.ppg_rvq.EvaluationConfig" + }, + { + "id": "compressionkit.configs.ppg_rvq.EvaluationConfig.num_plot_samples", + "text": "num_plot_samples = 50\n\n \n class-attribute\n instance-attribute" + }, + { + "id": "compressionkit.configs.ppg_rvq.EvaluationConfig.num_samples", + "text": "num_samples = 1000\n\n \n class-attribute\n instance-attribute" + }, + { + "id": "compressionkit.configs.ppg_rvq.OutputConfig", + "text": "compressionkit.configs.ppg_rvq.OutputConfig" + } + ] + }, + { + "route": "api/preprocessing", + "destination": "astro-site/src/content/docs/api/preprocessing.md", + "headings": 3, + "missing": [ + { + "id": "compressionkit.preprocessing.ppg.build_preprocessor", + "text": "compressionkit.preprocessing.ppg.build_preprocessor(frame_size, epsilon=0.001)" + }, + { + "id": "compressionkit.preprocessing.ppg.build_augmenter", + "text": "compressionkit.preprocessing.ppg.build_augmenter(noise_factor=(0.01, 0.1), *, aug_cfg=None)" + }, + { + "id": "compressionkit.preprocessing.ppg.generate_synthetic_ppg_batch", + "text": "compressionkit.preprocessing.ppg.generate_synthetic_ppg_batch(*, num_segments, signal_length, sample_rate, heart_rate_bpm=None, frequency_modulation=None, ibi_randomness=None, seed=1337)" + } + ] + }, + { + "route": "api/models", + "destination": "astro-site/src/content/docs/api/models.md", + "headings": 4, + "missing": [ + { + "id": "compressionkit.models.rvq_autoencoder.build_rvq_autoencoder", + "text": "compressionkit.models.rvq_autoencoder.build_rvq_autoencoder(frame_size, *, embedding_dim=16, latent_width=256, in_ch=1, out_ch=1, base_filters=32, multiplier=1.25, num_levels=2, beta=0.25, num_stages=4, encoder_block_norm='batch', encoder_head_norm='none', decoder_block_norm='none', decoder_head_norm='layer', use_residual=False, use_ema=False, ema_decay=0.99, encoder_type='default', expand_ratio=4.0, causal=False, discard_tail=0, bottleneck_type='rvq', fsq_levels=None, decoder_type='default', decoder_state_size=32, decoder_num_ssm_blocks=2, hier_detail_scale=0.25, revive_dead_codes=False, revive_threshold=0.03, kmeans_init=False, structured_dropout=False, dropout_levels=None, decoder_activation='relu', encoder_blocks_per_stage=1, codebook_sizes=None, prefix_loss_weights=None, prefix_loss_target='lowpass', prefix_loss_lowpass_kernel=9, prefix_loss_initial_scale=1.0)" + }, + { + "id": "compressionkit.models.rvq_autoencoder.build_encoder_2d", + "text": "compressionkit.models.rvq_autoencoder.build_encoder_2d(input_len=2048, in_ch=1, base=32, embedding_dim=16, multiplier=1.25, num_stages=4, block_norm='batch', head_norm='none', use_residual=False, blocks_per_stage=1)" + }, + { + "id": "compressionkit.models.rvq_autoencoder.build_decoder_2d", + "text": "compressionkit.models.rvq_autoencoder.build_decoder_2d(output_len=2048, out_ch=1, base=32, embedding_dim=16, multiplier=1.25, num_stages=4, decoder_block_norm='none', head_norm='layer', use_residual=False, activation='relu')" + }, + { + "id": "compressionkit.models.rvq_autoencoder.compute_compression_stats", + "text": "compressionkit.models.rvq_autoencoder.compute_compression_stats(frame_size, *, bit_depth, num_channels=1, latent_width, num_levels, downsample_factor=16, bottleneck_type='rvq', fsq_levels=None, codebook_sizes=None)" + } + ] + }, + { + "route": "cli", + "destination": "astro-site/src/content/docs/cli.md", + "headings": 14, + "missing": [ + { + "id": "usage_1", + "text": "Usage" + }, + { + "id": "arguments_1", + "text": "Arguments" + }, + { + "id": "example_1", + "text": "Example" + }, + { + "id": "configuration_1", + "text": "Configuration" + }, + { + "id": "outputs_1", + "text": "Outputs" + } + ] + }, + { + "route": "customer-evidence", + "destination": "astro-site/src/content/docs/customer-evidence.md", + "headings": 5, + "missing": [ + { + "id": "release-decision-overview", + "text": "Release decision overview" + }, + { + "id": "compression-and-deploy-ladder", + "text": "Compression and deploy ladder" + }, + { + "id": "ppg-release-ladder", + "text": "PPG release ladder" + }, + { + "id": "ecg-release-ladder", + "text": "ECG release ladder" + }, + { + "id": "how-to-use-this-page", + "text": "How to use this page" + } + ] + }, + { + "route": "demo/ppg-codec", + "destination": "astro-site/src/content/docs/demo/ppg-codec.md", + "headings": 17, + "missing": [ + { + "id": "overview", + "text": "Overview" + }, + { + "id": "what-the-demo-shows", + "text": "What The Demo Shows" + }, + { + "id": "architecture", + "text": "Architecture" + }, + { + "id": "dashboard-walkthrough", + "text": "Dashboard Walkthrough" + }, + { + "id": "original-and-reconstruction-views", + "text": "Original and reconstruction views" + }, + { + "id": "control-panel", + "text": "Control panel" + }, + { + "id": "compression-intelligence", + "text": "Compression intelligence" + }, + { + "id": "live-noise-controls", + "text": "Live Noise Controls" + }, + { + "id": "live-stream-experience", + "text": "Live Stream Experience" + }, + { + "id": "recordings-experience", + "text": "Recordings Experience" + }, + { + "id": "demo-setup", + "text": "Demo Setup" + }, + { + "id": "hardware-and-software", + "text": "Hardware and software" + }, + { + "id": "supported-platform-today", + "text": "Supported platform today" + }, + { + "id": "flashing-firmware", + "text": "Flashing Firmware" + }, + { + "id": "running-the-demo", + "text": "Running The Demo" + }, + { + "id": "why-this-matters", + "text": "Why This Matters" + }, + { + "id": "positioning-summary", + "text": "Positioning Summary" + } + ] + }, + { + "route": "datasets", + "destination": "astro-site/src/content/docs/datasets.md", + "headings": 9, + "missing": [ + { + "id": "ecg-ptb-xl", + "text": "ECG — PTB-XL" + }, + { + "id": "ppg-mesa-open-sources", + "text": "PPG — MESA + open sources" + } + ] + }, + { + "route": "examples", + "destination": "astro-site/src/content/docs/examples.md", + "headings": 2, + "missing": [] + }, + { + "route": "deployment", + "destination": "astro-site/src/content/docs/deployment.md", + "headings": 11, + "missing": [ + { + "id": "mcu-edge-device-path", + "text": "MCU / edge-device path" + } + ] + }, + { + "route": "experiment-architecture", + "destination": "astro-site/src/content/docs/experiment-architecture.md", + "headings": 9, + "missing": [ + { + "id": "codebase-audit", + "text": "Codebase Audit" + }, + { + "id": "refactoring-direction", + "text": "Refactoring Direction" + }, + { + "id": "heliaedge-candidates", + "text": "HeliaEdge Candidates" + }, + { + "id": "review-checklist", + "text": "Review Checklist" + } + ] + }, + { + "route": "experiments/ecg-hybrid-2x", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-2x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-hybrid-32x", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-32x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-hybrid-16x", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-16x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-hybrid-4x", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-4x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-hybrid-64x", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-64x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-hybrid-8x", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-8x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-rvq-2x", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-2x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-rvq-32x", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-32x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-rvq-16x", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-16x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-rvq-4x-prior", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-4x-prior.md", + "headings": 7, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-rvq-64x", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-64x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-rvq-4x", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-4x.md", + "headings": 7, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-rvq-8x-prior", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-8x-prior.md", + "headings": 7, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-rvq-8x", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-8x.md", + "headings": 7, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-spiht-16x", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-16x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-spiht-2x", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-2x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-spiht-4x", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-4x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-spiht-32x", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-32x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-spiht-64x", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-64x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments", + "destination": "astro-site/src/content/docs/experiments/index.md", + "headings": 3, + "missing": [ + { + "id": "v1-registry", + "text": "v1 Registry" + }, + { + "id": "reproduce-every-experiment-in-a-modality", + "text": "Reproduce every experiment in a modality" + } + ] + }, + { + "route": "experiments/ppg-hybrid-16x", + "destination": "astro-site/src/content/docs/experiments/ppg-hybrid-16x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-hybrid-2x", + "destination": "astro-site/src/content/docs/experiments/ppg-hybrid-2x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ecg-spiht-8x", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-8x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-hybrid-32x", + "destination": "astro-site/src/content/docs/experiments/ppg-hybrid-32x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-hybrid-8x", + "destination": "astro-site/src/content/docs/experiments/ppg-hybrid-8x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-hybrid-4x", + "destination": "astro-site/src/content/docs/experiments/ppg-hybrid-4x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-rvq-16x", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-16x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-rvq-32x", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-32x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-rvq-2x", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-2x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-rvq-4x-prior", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-4x-prior.md", + "headings": 7, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-rvq-4x", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-4x.md", + "headings": 7, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-rvq-8x", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-8x.md", + "headings": 7, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-spiht-16x", + "destination": "astro-site/src/content/docs/experiments/ppg-spiht-16x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-rvq-8x-prior", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-8x-prior.md", + "headings": 7, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-spiht-32x", + "destination": "astro-site/src/content/docs/experiments/ppg-spiht-32x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-spiht-2x", + "destination": "astro-site/src/content/docs/experiments/ppg-spiht-2x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-spiht-4x", + "destination": "astro-site/src/content/docs/experiments/ppg-spiht-4x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "experiments/ppg-spiht-8x", + "destination": "astro-site/src/content/docs/experiments/ppg-spiht-8x.md", + "headings": 6, + "missing": [ + { + "id": "dataset-license", + "text": "Dataset & License" + } + ] + }, + { + "route": "huggingface", + "destination": "astro-site/src/content/docs/huggingface.md", + "headings": 4, + "missing": [ + { + "id": "3-two-stage-codec-codec-entropy-prior", + "text": "3. Two-stage codec (codec + entropy prior)" + } + ] + }, + { + "route": "", + "destination": "astro-site/src/content/docs/index.mdx", + "headings": 9, + "missing": [ + { + "id": "what-compressionkit-is", + "text": "What compressionKIT is" + }, + { + "id": "where-compressionkit-fits", + "text": "Where compressionKIT fits" + }, + { + "id": "what-current-goldens-show", + "text": "What current goldens show" + }, + { + "id": "how-to-read-the-evidence", + "text": "How to read the evidence" + }, + { + "id": "guiding-principles", + "text": "Guiding principles" + }, + { + "id": "high-level-getting-started", + "text": "High-level getting started" + }, + { + "id": "current-v1-artifacts", + "text": "Current v1 artifacts" + }, + { + "id": "where-to-go-next", + "text": "Where to go next" + } + ] + }, + { + "route": "getting-started", + "destination": "astro-site/src/content/docs/getting-started.md", + "headings": 5, + "missing": [] + }, + { + "route": "methods/rvq", + "destination": "astro-site/src/content/docs/methods/rvq.md", + "headings": 9, + "missing": [] + }, + { + "route": "methods/cr_vs_fidelity_ppg", + "destination": "astro-site/src/content/docs/methods/cr_vs_fidelity_ppg.md", + "headings": 3, + "missing": [ + { + "id": "noise-stratified-detail-clean-median-noisy-tertiles", + "text": "Noise-stratified detail (clean / median / noisy tertiles)" + }, + { + "id": "how-to-read-this-table", + "text": "How to read this table" + } + ] + }, + { + "route": "methods/cr_vs_fidelity_ecg", + "destination": "astro-site/src/content/docs/methods/cr_vs_fidelity_ecg.md", + "headings": 3, + "missing": [ + { + "id": "noise-stratified-detail-clean-median-noisy-tertiles", + "text": "Noise-stratified detail (clean / median / noisy tertiles)" + }, + { + "id": "how-to-read-this-table", + "text": "How to read this table" + } + ] + }, + { + "route": "methods", + "destination": "astro-site/src/content/docs/methods/index.md", + "headings": 4, + "missing": [] + }, + { + "route": "models", + "destination": "astro-site/src/content/docs/models/index.md", + "headings": 5, + "missing": [ + { + "id": "current-release-surface", + "text": "Current release surface" + }, + { + "id": "evidence-router", + "text": "Evidence router" + }, + { + "id": "what-each-model-page-should-answer", + "text": "What each model page should answer" + }, + { + "id": "standard-comparison-rule", + "text": "Standard comparison rule" + }, + { + "id": "deployment-artifacts", + "text": "Deployment artifacts" + } + ] + }, + { + "route": "models/ecg", + "destination": "astro-site/src/content/docs/models/ecg.md", + "headings": 16, + "missing": [] + }, + { + "route": "models/ppg", + "destination": "astro-site/src/content/docs/models/ppg.md", + "headings": 16, + "missing": [] + }, + { + "route": "release-contract", + "destination": "astro-site/src/content/docs/release-contract.md", + "headings": 21, + "missing": [ + { + "id": "composition-principle", + "text": "Composition Principle" + }, + { + "id": "goals", + "text": "Goals" + }, + { + "id": "golden-matrix", + "text": "Golden Matrix" + }, + { + "id": "repository-implications", + "text": "Repository Implications" + }, + { + "id": "milestones", + "text": "Milestones" + }, + { + "id": "milestone-1-unified-package-contract", + "text": "Milestone 1: Unified package contract" + }, + { + "id": "milestone-2-cross-runtime-validation", + "text": "Milestone 2: Cross-runtime validation" + }, + { + "id": "milestone-3-imu-goldens", + "text": "Milestone 3: IMU goldens" + }, + { + "id": "milestone-4-docs-and-release-automation", + "text": "Milestone 4: Docs and release automation" + }, + { + "id": "non-goals-for-v1", + "text": "Non-goals for v1" + }, + { + "id": "decision-summary", + "text": "Decision Summary" + } + ] + }, + { + "route": "signals/ppg-workflow", + "destination": "astro-site/src/content/docs/signals/ppg-workflow.md", + "headings": 10, + "missing": [] + }, + { + "route": "signals/ecg", + "destination": "astro-site/src/content/docs/signals/ecg.md", + "headings": 7, + "missing": [] + }, + { + "route": "signals", + "destination": "astro-site/src/content/docs/signals/index.md", + "headings": 4, + "missing": [] + }, + { + "route": "validation-scorecard", + "destination": "astro-site/src/content/docs/validation-scorecard.md", + "headings": 26, + "missing": [ + { + "id": "core-claim", + "text": "Core claim" + }, + { + "id": "evidence-layers", + "text": "Evidence layers" + }, + { + "id": "measurement-philosophy", + "text": "Measurement philosophy" + }, + { + "id": "agreement-vs-accuracy", + "text": "Agreement vs accuracy" + }, + { + "id": "algorithm-repeatability-baseline", + "text": "Algorithm repeatability baseline" + }, + { + "id": "noise-preservation-vs-noise-removal", + "text": "Noise preservation vs noise removal" + }, + { + "id": "implementation-tiers", + "text": "Implementation tiers" + }, + { + "id": "hr-hrv-preservation", + "text": "HR / HRV preservation" + }, + { + "id": "morphology-preservation", + "text": "Morphology preservation" + }, + { + "id": "downstream-task-preservation", + "text": "Downstream task preservation" + }, + { + "id": "hr-pulse-rate-preservation", + "text": "HR / Pulse-rate preservation" + }, + { + "id": "morphology-preservation_1", + "text": "Morphology preservation" + }, + { + "id": "spo2-sensitive-preservation", + "text": "SpO2-sensitive preservation" + }, + { + "id": "downstream-task-preservation_1", + "text": "Downstream task preservation" + }, + { + "id": "cross-cutting-validation", + "text": "Cross-cutting validation" + }, + { + "id": "stitching-and-streaming-behavior", + "text": "Stitching and streaming behavior" + }, + { + "id": "noise-and-artifact-behavior", + "text": "Noise and artifact behavior" + }, + { + "id": "adaptive-bitrate-and-fallback", + "text": "Adaptive bitrate and fallback" + }, + { + "id": "versioning-and-compatibility", + "text": "Versioning and compatibility" + }, + { + "id": "ecg-buckets", + "text": "ECG buckets" + }, + { + "id": "ppg-buckets", + "text": "PPG buckets" + }, + { + "id": "positioning-guidance", + "text": "Positioning guidance" + }, + { + "id": "passfail-summary-per-modality-and-profile", + "text": "Pass/fail summary (per modality and profile)" + } + ] + }, + { + "route": "signals/ppg", + "destination": "astro-site/src/content/docs/signals/ppg.md", + "headings": 8, + "missing": [] + }, + { + "route": "use-cases", + "destination": "astro-site/src/content/docs/use-cases.mdx", + "headings": 10, + "missing": [ + { + "id": "who-benefits", + "text": "Who benefits" + }, + { + "id": "headline-benefits", + "text": "Headline benefits" + }, + { + "id": "benefit-1-ondevice-memory", + "text": "Benefit 1 — On‑device memory" + }, + { + "id": "ppg-continuous-recording-capacity", + "text": "PPG — continuous recording capacity" + }, + { + "id": "ecg-continuous-recording-capacity", + "text": "ECG — continuous recording capacity" + }, + { + "id": "benefit-2-radio-bandwidth-energy", + "text": "Benefit 2 — Radio, bandwidth & energy" + }, + { + "id": "benefit-3-cloud-storage-ingestion", + "text": "Benefit 3 — Cloud storage & ingestion" + }, + { + "id": "benefit-4-fidelity-that-survives-downstream-algorithms", + "text": "Benefit 4 — Fidelity that survives downstream algorithms" + }, + { + "id": "choosing-an-operating-point", + "text": "Choosing an operating point" + }, + { + "id": "getting-started", + "text": "Getting started" + } + ] + } + ] +} diff --git a/astro-site/astro.config.mjs b/astro-site/astro.config.mjs new file mode 100644 index 0000000..a0b85e9 --- /dev/null +++ b/astro-site/astro.config.mjs @@ -0,0 +1,89 @@ +import { defineConfig } from "astro/config"; +import { unified } from "@astrojs/markdown-remark"; +import starlight from "@astrojs/starlight"; +import react from "@astrojs/react"; +import { heliaStarlight } from "@ambiqai/helia-ui/starlight"; +import rehypeMermaid from "rehype-mermaid"; +import remarkMath from "remark-math"; +import rehypeKatex from "rehype-katex"; +import redirects from "./src/data/redirects.json" with { type: "json" }; +import { sections } from "./src/navigation.mjs"; +import { fileURLToPath } from "node:url"; +export default defineConfig({ + vite: { + plugins: [ + { + name: "compressionkit-section-membership", + enforce: "pre", + resolveId(source, importer) { + // Historical page URLs do not share the section's URL prefix. + if ( + source === "./sections" && + importer?.includes("/@ambiqai/helia-ui/starlight/") + ) + return fileURLToPath( + new URL("./src/section-matcher.ts", import.meta.url), + ); + }, + }, + ], + }, + site: "https://ambiqai.github.io", + base: "/compressionkit", + redirects: { + ...redirects, + "/api": "/compressionkit/reference/", + }, + markdown: { + processor: unified({ + remarkPlugins: [remarkMath], + rehypePlugins: [rehypeKatex, [rehypeMermaid, { strategy: "inline-svg" }]], + }), + }, + integrations: [ + react(), + starlight({ + components: { Hero: "./src/components/HomeHero.astro" }, + title: "compressionKIT", + description: "Signal compression development kit for edge and wearable devices.", + favicon: "/assets/compressionkit-icon.png", + expressiveCode: { + styleOverrides: { + frames: { editorBackground: "var(--helia-surface-card-muted)" }, + }, + }, + customCss: [ + "./src/styles/site.css", + "@ambiqai/helia-ui/mermaid.css", + "katex/dist/katex.min.css", + ], + plugins: [ + heliaStarlight({ + accent: "kit-compression", + sections, + sidebar: "always", + header: { + title: "compressionKIT", + hub: { + label: "HELIA", + href: "https://ambiqai.github.io/helia-developer-hub/", + }, + }, + discoverability: { + markdown: true, + llms: true, + jsonLd: true, + ogImage: true, + }, + footer: { + logo: "ambiq", + tagline: "Part of the Ambiq HELIA AI platform", + links: [ + { label: "compressionKIT source on GitHub", href: "https://github.com/AmbiqAI/compressionkit" }, + ], + }, + }), + ], + }), + ], +}); diff --git a/astro-site/bundle-audit.json b/astro-site/bundle-audit.json new file mode 100644 index 0000000..4474097 --- /dev/null +++ b/astro-site/bundle-audit.json @@ -0,0 +1,204 @@ +{ + "checked": "2026-10-01", + "source": "https://huggingface.co/api/models/", + "results": [ + { + "id": "Ambiq/compressionkit-ecg-16x-v1.0", + "status": 200, + "files": 25, + "revision": "e1c78d7227fec77887bd6a619d3463e238c3e01d" + }, + { + "id": "Ambiq/compressionkit-ecg-2x-v1.0", + "status": 200, + "files": 25, + "revision": "4d07900f24978ee3830ee2a6a4e2becaa0880645" + }, + { + "id": "Ambiq/compressionkit-ecg-32x-v1.0", + "status": 200, + "files": 25, + "revision": "13c9be7e94b80191385f6be3aad32d2effb59e0b" + }, + { + "id": "Ambiq/compressionkit-ecg-4x-v1.0", + "status": 200, + "files": 28, + "revision": "f8be1ba5454d0eb5c645393ec3261e74d0bf26a8" + }, + { + "id": "Ambiq/compressionkit-ecg-64x-v1.0", + "status": 200, + "files": 25, + "revision": "49c2dd0ddb04b23d6817e584c9865046ecd15424" + }, + { + "id": "Ambiq/compressionkit-ecg-8x-v1.0", + "status": 200, + "files": 28, + "revision": "548a82529fc10075c31f19ab1ed8c09dfb2e58f4" + }, + { + "id": "Ambiq/compressionkit-ecg-hybrid-16x-v1.0", + "status": 200, + "files": 16, + "revision": "772f60e944df9067d27fe2b9b41893709f502f85" + }, + { + "id": "Ambiq/compressionkit-ecg-hybrid-2x-v1.0", + "status": 200, + "files": 16, + "revision": "c14b7d55a8e6dc513117c252d509e548ae710184" + }, + { + "id": "Ambiq/compressionkit-ecg-hybrid-32x-v1.0", + "status": 200, + "files": 16, + "revision": "a1647112e5b01f338ad27fdd5bc90dc6eec2cfc7" + }, + { + "id": "Ambiq/compressionkit-ecg-hybrid-4x-v1.0", + "status": 200, + "files": 16, + "revision": "3406233316d866273e36894b5a5b5f7fd6533765" + }, + { + "id": "Ambiq/compressionkit-ecg-hybrid-64x-v1.0", + "status": 200, + "files": 16, + "revision": "b2cffaedff860c2e7d2156a8ddce3b40cc87430b" + }, + { + "id": "Ambiq/compressionkit-ecg-hybrid-8x-v1.0", + "status": 200, + "files": 16, + "revision": "f5ae4f5d4f10663cd9598bcce8aef44b40b18b80" + }, + { + "id": "Ambiq/compressionkit-ecg-spiht-16x-v1.0", + "status": 200, + "files": 12, + "revision": "f0a42aaa0b9716f7d53c1930aa266acab8dc1d06" + }, + { + "id": "Ambiq/compressionkit-ecg-spiht-2x-v1.0", + "status": 200, + "files": 12, + "revision": "600664e52a6f263e21857e757271fd44fa46cdcc" + }, + { + "id": "Ambiq/compressionkit-ecg-spiht-32x-v1.0", + "status": 200, + "files": 12, + "revision": "0e998511af1516ac30250860b58584bb2b7ccdae" + }, + { + "id": "Ambiq/compressionkit-ecg-spiht-4x-v1.0", + "status": 200, + "files": 12, + "revision": "8fa91bc2b30f9b8948e9810a18f90b6807a87efb" + }, + { + "id": "Ambiq/compressionkit-ecg-spiht-64x-v1.0", + "status": 200, + "files": 12, + "revision": "d7b1dd3241e8aaa96551a8a491f10d6eaf9f9038" + }, + { + "id": "Ambiq/compressionkit-ecg-spiht-8x-v1.0", + "status": 200, + "files": 12, + "revision": "d4c56a760e022eac328e22efe7476076e554d9e9" + }, + { + "id": "Ambiq/compressionkit-ppg-16x-v1.0", + "status": 200, + "files": 25, + "revision": "928d302ac822712c4513488f6d4e0fef962bde37" + }, + { + "id": "Ambiq/compressionkit-ppg-2x-v1.0", + "status": 200, + "files": 25, + "revision": "af00d62fcdd8e8c12a2929bae9d22911ab518966" + }, + { + "id": "Ambiq/compressionkit-ppg-32x-v1.0", + "status": 200, + "files": 25, + "revision": "bff7e89fbe3c6b35a2db829d7da6022eb26fcf34" + }, + { + "id": "Ambiq/compressionkit-ppg-4x-v1.0", + "status": 200, + "files": 25, + "revision": "8e3b465983808d50d99799df6135aaffe68029ff" + }, + { + "id": "Ambiq/compressionkit-ppg-8x-v1.0", + "status": 200, + "files": 28, + "revision": "7e2b0cea808d1b1f168c4131ea5c00ffe50e9cce" + }, + { + "id": "Ambiq/compressionkit-ppg-hybrid-16x-v1.0", + "status": 200, + "files": 16, + "revision": "84b97ca62751662508d96022607e428d09e37133" + }, + { + "id": "Ambiq/compressionkit-ppg-hybrid-2x-v1.0", + "status": 200, + "files": 16, + "revision": "3dba534a54320c56a4059078ba2ef1c87bcdba28" + }, + { + "id": "Ambiq/compressionkit-ppg-hybrid-32x-v1.0", + "status": 200, + "files": 16, + "revision": "120cddde41db03f09ff9af92fe95fa3930762c19" + }, + { + "id": "Ambiq/compressionkit-ppg-hybrid-4x-v1.0", + "status": 200, + "files": 16, + "revision": "cd06163e34b4239f5886841fb0ae7029698550f1" + }, + { + "id": "Ambiq/compressionkit-ppg-hybrid-8x-v1.0", + "status": 200, + "files": 16, + "revision": "255fde95d9c65e157c0726c12bc78d497f344048" + }, + { + "id": "Ambiq/compressionkit-ppg-spiht-16x-v1.0", + "status": 200, + "files": 12, + "revision": "e1526d9b51c83f4f62474b684cc6a0845ba9c2c2" + }, + { + "id": "Ambiq/compressionkit-ppg-spiht-2x-v1.0", + "status": 200, + "files": 12, + "revision": "b2894e7ba0396bd3bf258bb1e0383b995d601724" + }, + { + "id": "Ambiq/compressionkit-ppg-spiht-32x-v1.0", + "status": 200, + "files": 12, + "revision": "2bfee75e1bd56e09e0eea02f8d39235fb0088efb" + }, + { + "id": "Ambiq/compressionkit-ppg-spiht-4x-v1.0", + "status": 200, + "files": 12, + "revision": "7380c6cf9c9fcdfb2cb7ddb84baae1aa61eaa700" + }, + { + "id": "Ambiq/compressionkit-ppg-spiht-8x-v1.0", + "status": 200, + "files": 12, + "revision": "ea45b0f48f10c490ddea7394ade2b14abcdd9450" + } + ] +} diff --git a/astro-site/content-data/customer-evidence.json b/astro-site/content-data/customer-evidence.json new file mode 100644 index 0000000..d9ae582 --- /dev/null +++ b/astro-site/content-data/customer-evidence.json @@ -0,0 +1,313 @@ +{ + "schemaVersion": 1, + "provenance": { + "kind": "preserved-documentation", + "source": "docs/customer-evidence.md", + "sha256": "9d4ab36ac67c8f2a73946506c54f928f5e33469100d294d462d916fea04b4024" + }, + "tables": [ + { + "id": "ppg-quality", + "headers": [ + "CR", + "N", + "Truth PRD (%)", + "Faithful PRD (%)", + "HR error (bpm)" + ], + "rows": [ + [ + "2x", + "9788", + "0.62", + "2.59", + "0.19" + ], + [ + "4x", + "9789", + "1.14", + "3.44", + "0.29" + ], + [ + "8x", + "9789", + "2.66", + "5.10", + "0.49" + ], + [ + "16x", + "9789", + "5.75", + "7.54", + "0.88" + ], + [ + "32x", + "6336", + "12.35", + "12.08", + "1.79" + ] + ] + }, + { + "id": "ecg-quality", + "headers": [ + "CR", + "N", + "Truth PRD (%)", + "Faithful PRD (%)", + "HR error (bpm)" + ], + "rows": [ + [ + "2x", + "1000", + "1.38", + "2.31", + "0.48" + ], + [ + "4x", + "1000", + "2.33", + "3.63", + "0.95" + ], + [ + "8x", + "1000", + "3.84", + "6.03", + "1.39" + ], + [ + "16x", + "1000", + "7.28", + "9.72", + "2.05" + ], + [ + "32x", + "1000", + "13.27", + "14.59", + "2.34" + ], + [ + "64x", + "1000", + "20.49", + "21.05", + "3.00" + ] + ] + }, + { + "id": "ppg-files", + "headers": [ + "CR", + "Total", + "Encoder", + "Decoder", + "Codebook" + ], + "rows": [ + [ + "2x", + "88 KiB", + "5 KiB", + "19 KiB", + "65 KiB" + ], + [ + "4x", + "147 KiB", + "28 KiB", + "54 KiB", + "65 KiB" + ], + [ + "8x", + "196 KiB", + "39 KiB", + "92 KiB", + "65 KiB" + ], + [ + "16x", + "300 KiB", + "54 KiB", + "180 KiB", + "65 KiB" + ], + [ + "32x", + "267 KiB", + "54 KiB", + "180 KiB", + "33 KiB" + ] + ] + }, + { + "id": "ecg-files", + "headers": [ + "CR", + "Total", + "Encoder", + "Decoder", + "Codebook" + ], + "rows": [ + [ + "2x", + "88 KiB", + "5 KiB", + "19 KiB", + "65 KiB" + ], + [ + "4x", + "147 KiB", + "28 KiB", + "54 KiB", + "65 KiB" + ], + [ + "8x", + "196 KiB", + "39 KiB", + "92 KiB", + "65 KiB" + ], + [ + "16x", + "300 KiB", + "54 KiB", + "180 KiB", + "65 KiB" + ], + [ + "32x", + "267 KiB", + "54 KiB", + "180 KiB", + "33 KiB" + ], + [ + "64x", + "397 KiB", + "76 KiB", + "289 KiB", + "33 KiB" + ] + ] + }, + { + "id": "ppg-detail", + "headers": [ + "CR", + "PRDN-noise (%)", + "Band error", + "Coherence", + "Seam ratio" + ], + "rows": [ + [ + "2x", + "0.15", + "0.0155", + "0.9928", + "-" + ], + [ + "4x", + "0.23", + "0.5885", + "0.9861", + "-" + ], + [ + "8x", + "0.64", + "0.6623", + "0.9565", + "-" + ], + [ + "16x", + "0.79", + "12.5676", + "0.8991", + "-" + ], + [ + "32x", + "0.20", + "0.0356", + "0.8014", + "-" + ] + ] + }, + { + "id": "ecg-detail", + "headers": [ + "CR", + "PRDN-noise (%)", + "Band error", + "Coherence", + "Seam ratio" + ], + "rows": [ + [ + "2x", + "0.00", + "0.0081", + "1.0000", + "-" + ], + [ + "4x", + "0.00", + "0.0104", + "1.0000", + "-" + ], + [ + "8x", + "0.00", + "0.0144", + "1.0000", + "-" + ], + [ + "16x", + "0.04", + "0.0246", + "1.0000", + "-" + ], + [ + "32x", + "0.78", + "0.0497", + "1.0000", + "0.176" + ], + [ + "64x", + "3.53", + "0.0835", + "1.0000", + "-" + ] + ] + } + ] +} diff --git a/astro-site/content-data/fidelity-ecg.json b/astro-site/content-data/fidelity-ecg.json new file mode 100644 index 0000000..4dc2274 --- /dev/null +++ b/astro-site/content-data/fidelity-ecg.json @@ -0,0 +1,442 @@ +{ + "schemaVersion": 1, + "modality": "ecg", + "provenance": { + "kind": "preserved-documentation", + "source": "docs/methods/cr_vs_fidelity_ecg.md", + "sha256": "a96e361f74af29463870499e299373a5f6018449f461d3794d4b9f0dacfdb014" + }, + "tables": [ + { + "id": "headline", + "headers": [ + "CR", + "Codec CR", + "Effective CR", + "bits/tok", + "N", + "Faithful PRD%" + ], + "rows": [ + [ + "02x", + "2.00", + "5.76", + "2.78", + "1000", + "2.31" + ], + [ + "04x", + "4.00", + "9.73", + "3.29", + "1000", + "3.63" + ], + [ + "08x", + "8.00", + "15.24", + "4.20", + "1000", + "6.03" + ], + [ + "16x", + "16.00", + "26.88", + "4.76", + "1000", + "9.72" + ], + [ + "32x", + "32.00", + "59.87", + "4.28", + "1000", + "14.59" + ], + [ + "64x", + "64.00", + "118.06", + "4.34", + "1000", + "21.05" + ] + ] + }, + { + "id": "physiology", + "headers": [ + "CR", + "Truth PRD% (clean)", + "PRDN-noise%", + "HR MAE (bpm)", + "QRS-band PSD err", + "Coherence" + ], + "rows": [ + [ + "02x", + "1.38", + "0.00", + "0.48", + "0.0081", + "1.0000" + ], + [ + "04x", + "2.33", + "0.00", + "0.95", + "0.0104", + "1.0000" + ], + [ + "08x", + "3.84", + "0.00", + "1.39", + "0.0144", + "1.0000" + ], + [ + "16x", + "7.28", + "0.04", + "2.05", + "0.0246", + "1.0000" + ], + [ + "32x", + "13.27", + "0.78", + "2.34", + "0.0497", + "1.0000" + ], + [ + "64x", + "20.49", + "3.53", + "3.00", + "0.0835", + "1.0000" + ] + ] + }, + { + "id": "seams", + "headers": [ + "CR", + "Seam ratio" + ], + "rows": [ + [ + "02x", + "\u2014" + ], + [ + "04x", + "\u2014" + ], + [ + "08x", + "\u2014" + ], + [ + "16x", + "\u2014" + ], + [ + "32x", + "\u2014" + ], + [ + "64x", + "\u2014" + ] + ] + }, + { + "id": "noise", + "headers": [ + "CR", + "Tertile", + "N", + "PRD%", + "PRDN-noise%", + "HR MAE" + ], + "rows": [ + [ + "02x", + "clean", + "333", + "2.09", + "0.00", + "0.40" + ], + [ + "02x", + "median", + "334", + "2.26", + "0.00", + "0.45" + ], + [ + "02x", + "noisy", + "333", + "2.57", + "0.00", + "0.59" + ], + [ + "04x", + "clean", + "333", + "3.21", + "0.00", + "0.77" + ], + [ + "04x", + "median", + "334", + "3.62", + "0.00", + "0.91" + ], + [ + "04x", + "noisy", + "333", + "4.05", + "0.00", + "1.18" + ], + [ + "08x", + "clean", + "333", + "5.02", + "0.00", + "1.25" + ], + [ + "08x", + "median", + "334", + "6.11", + "0.00", + "1.27" + ], + [ + "08x", + "noisy", + "333", + "6.97", + "0.00", + "1.67" + ], + [ + "16x", + "clean", + "333", + "8.15", + "0.12", + "1.67" + ], + [ + "16x", + "median", + "334", + "9.76", + "0.01", + "2.19" + ], + [ + "16x", + "noisy", + "333", + "11.27", + "0.00", + "2.28" + ], + [ + "32x", + "clean", + "333", + "12.78", + "1.93", + "1.93" + ], + [ + "32x", + "median", + "334", + "14.70", + "0.31", + "2.22" + ], + [ + "32x", + "noisy", + "333", + "16.28", + "0.11", + "2.86" + ], + [ + "64x", + "clean", + "333", + "18.59", + "7.98", + "2.57" + ], + [ + "64x", + "median", + "334", + "20.97", + "1.75", + "3.09" + ], + [ + "64x", + "noisy", + "333", + "23.58", + "0.88", + "3.32" + ] + ] + }, + { + "id": "noise-spectral", + "headers": [ + "CR", + "Tertile", + "QRS-band PSD err", + "Coherence" + ], + "rows": [ + [ + "02x", + "clean", + "\u2014", + "1.0000" + ], + [ + "02x", + "median", + "\u2014", + "1.0000" + ], + [ + "02x", + "noisy", + "\u2014", + "1.0000" + ], + [ + "04x", + "clean", + "\u2014", + "1.0000" + ], + [ + "04x", + "median", + "\u2014", + "1.0000" + ], + [ + "04x", + "noisy", + "\u2014", + "1.0000" + ], + [ + "08x", + "clean", + "\u2014", + "1.0000" + ], + [ + "08x", + "median", + "\u2014", + "1.0000" + ], + [ + "08x", + "noisy", + "\u2014", + "1.0000" + ], + [ + "16x", + "clean", + "\u2014", + "1.0000" + ], + [ + "16x", + "median", + "\u2014", + "1.0000" + ], + [ + "16x", + "noisy", + "\u2014", + "1.0000" + ], + [ + "32x", + "clean", + "\u2014", + "1.0000" + ], + [ + "32x", + "median", + "\u2014", + "1.0000" + ], + [ + "32x", + "noisy", + "\u2014", + "1.0000" + ], + [ + "64x", + "clean", + "\u2014", + "1.0000" + ], + [ + "64x", + "median", + "\u2014", + "1.0000" + ], + [ + "64x", + "noisy", + "\u2014", + "1.0000" + ] + ] + } + ] +} diff --git a/astro-site/content-data/fidelity-ppg.json b/astro-site/content-data/fidelity-ppg.json new file mode 100644 index 0000000..b2a35da --- /dev/null +++ b/astro-site/content-data/fidelity-ppg.json @@ -0,0 +1,380 @@ +{ + "schemaVersion": 1, + "modality": "ppg", + "provenance": { + "kind": "preserved-documentation", + "source": "docs/methods/cr_vs_fidelity_ppg.md", + "sha256": "f91134163b1eff783a06db940458a8c411e452cbf1e2bb2b4eb63070c144134a" + }, + "tables": [ + { + "id": "headline", + "headers": [ + "CR", + "Codec CR", + "Effective CR", + "bits/tok", + "N", + "Faithful PRD%" + ], + "rows": [ + [ + "02x", + "2.00", + "\u2014", + "\u2014", + "9788", + "2.59" + ], + [ + "04x", + "4.00", + "\u2014", + "\u2014", + "9789", + "3.44" + ], + [ + "08x", + "8.00", + "\u2014", + "\u2014", + "9789", + "5.10" + ], + [ + "16x", + "16.00", + "\u2014", + "\u2014", + "9789", + "7.54" + ], + [ + "32x", + "32.00", + "\u2014", + "\u2014", + "6336", + "12.08" + ] + ] + }, + { + "id": "physiology", + "headers": [ + "CR", + "Truth PRD% (clean)", + "PRDN-noise%", + "HR MAE (bpm)", + "Pulse-band PSD err", + "Coherence" + ], + "rows": [ + [ + "02x", + "0.62", + "0.15", + "0.19", + "0.0155", + "0.9928" + ], + [ + "04x", + "1.14", + "0.23", + "0.29", + "0.5885", + "0.9861" + ], + [ + "08x", + "2.66", + "0.64", + "0.49", + "0.6623", + "0.9565" + ], + [ + "16x", + "5.75", + "0.79", + "0.88", + "12.5676", + "0.8991" + ], + [ + "32x", + "12.35", + "0.20", + "1.79", + "0.0356", + "0.8014" + ] + ] + }, + { + "id": "seams", + "headers": [ + "CR", + "Seam ratio" + ], + "rows": [ + [ + "02x", + "\u2014" + ], + [ + "04x", + "\u2014" + ], + [ + "08x", + "\u2014" + ], + [ + "16x", + "\u2014" + ], + [ + "32x", + "\u2014" + ] + ] + }, + { + "id": "noise", + "headers": [ + "CR", + "Tertile", + "N", + "PRD%", + "PRDN-noise%", + "HR MAE" + ], + "rows": [ + [ + "02x", + "clean", + "3263", + "4.98", + "0.46", + "0.22" + ], + [ + "02x", + "median", + "3262", + "1.37", + "0.00", + "0.14" + ], + [ + "02x", + "noisy", + "3263", + "1.42", + "0.00", + "0.22" + ], + [ + "04x", + "clean", + "3263", + "6.34", + "0.69", + "0.33" + ], + [ + "04x", + "median", + "3263", + "1.99", + "0.00", + "0.24" + ], + [ + "04x", + "noisy", + "3263", + "1.98", + "0.00", + "0.30" + ], + [ + "08x", + "clean", + "3263", + "8.60", + "1.92", + "0.52" + ], + [ + "08x", + "median", + "3263", + "3.18", + "0.00", + "0.47" + ], + [ + "08x", + "noisy", + "3263", + "3.51", + "0.00", + "0.49" + ], + [ + "16x", + "clean", + "3263", + "10.36", + "2.32", + "0.75" + ], + [ + "16x", + "median", + "3263", + "5.77", + "0.01", + "0.86" + ], + [ + "16x", + "noisy", + "3263", + "6.49", + "0.04", + "1.04" + ], + [ + "32x", + "clean", + "2112", + "11.17", + "0.59", + "1.54" + ], + [ + "32x", + "median", + "2112", + "12.16", + "0.01", + "1.72" + ], + [ + "32x", + "noisy", + "2112", + "12.90", + "0.00", + "2.11" + ] + ] + }, + { + "id": "noise-spectral", + "headers": [ + "CR", + "Tertile", + "Pulse-band PSD err", + "Coherence" + ], + "rows": [ + [ + "02x", + "clean", + "\u2014", + "0.9862" + ], + [ + "02x", + "median", + "\u2014", + "0.9963" + ], + [ + "02x", + "noisy", + "\u2014", + "0.9959" + ], + [ + "04x", + "clean", + "\u2014", + "0.9784" + ], + [ + "04x", + "median", + "\u2014", + "0.9906" + ], + [ + "04x", + "noisy", + "\u2014", + "0.9894" + ], + [ + "08x", + "clean", + "\u2014", + "0.9449" + ], + [ + "08x", + "median", + "\u2014", + "0.9655" + ], + [ + "08x", + "noisy", + "\u2014", + "0.9592" + ], + [ + "16x", + "clean", + "\u2014", + "0.8928" + ], + [ + "16x", + "median", + "\u2014", + "0.9123" + ], + [ + "16x", + "noisy", + "\u2014", + "0.8922" + ], + [ + "32x", + "clean", + "\u2014", + "0.8367" + ], + [ + "32x", + "median", + "\u2014", + "0.8015" + ], + [ + "32x", + "noisy", + "\u2014", + "0.7660" + ] + ] + } + ] +} diff --git a/astro-site/external-link-audit.json b/astro-site/external-link-audit.json new file mode 100644 index 0000000..bf98175 --- /dev/null +++ b/astro-site/external-link-audit.json @@ -0,0 +1,407 @@ +{ + "checkedAt": "2026-10-02T22:43:52.119Z", + "count": 81, + "results": [ + { + "url": "https://ambiq.com/", + "status": 200, + "final": "https://ambiq.com/" + }, + { + "url": "https://ambiqai.github.io/compressionkit-demo/", + "status": 200, + "final": "https://ambiqai.github.io/compressionkit-demo/" + }, + { + "url": "https://colab.research.google.com/github/AmbiqAI/compressionkit/blob/main/examples/01_quickstart_golden_codec.ipynb", + "status": 200, + "final": "https://colab.research.google.com/github/AmbiqAI/compressionkit/blob/main/examples/01_quickstart_golden_codec.ipynb" + }, + { + "url": "https://colab.research.google.com/github/AmbiqAI/compressionkit/blob/main/examples/02_evaluate_on_your_data.ipynb", + "status": 200, + "final": "https://colab.research.google.com/github/AmbiqAI/compressionkit/blob/main/examples/02_evaluate_on_your_data.ipynb" + }, + { + "url": "https://colab.research.google.com/github/AmbiqAI/compressionkit/blob/main/examples/03_quickstart_golden_codec_ecg.ipynb", + "status": 200, + "final": "https://colab.research.google.com/github/AmbiqAI/compressionkit/blob/main/examples/03_quickstart_golden_codec_ecg.ipynb" + }, + { + "url": "https://docs.astral.sh/uv/getting-started/installation/", + "status": 200, + "final": "https://docs.astral.sh/uv/getting-started/installation/" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/configs/ppg_rvq.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/configs/ppg_rvq.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/datasets/ppg.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/datasets/ppg.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/evaluation/artifacts.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/evaluation/artifacts.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/evaluation/metrics.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/evaluation/metrics.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/export/tflite.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/export/tflite.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/models/decoder.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/models/decoder.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/models/encoder.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/models/encoder.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/models/rvq_autoencoder.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/models/rvq_autoencoder.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/preprocessing/ppg.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/preprocessing/ppg.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/base.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/base.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/codec.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/codec.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/hybrid.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/hybrid.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/loader.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/loader.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/prior.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/prior.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/spiht.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/spiht.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/two_stage.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/69b94d836dd8a24f227d411e99ef4ff2a7de2b7d/compressionkit/runtime/two_stage.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/compressionkit/export/family_registry.py", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/compressionkit/export/family_registry.py" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_02x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_02x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_04x_golden_prior.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_04x_golden_prior.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_04x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_04x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_08x_golden_prior.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_08x_golden_prior.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_08x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_08x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_16x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_16x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_32x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_32x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_64x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ecg_rvq_256hz_64x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_02x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_02x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_04x_golden_prior.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_04x_golden_prior.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_04x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_04x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_08x_golden_prior.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_08x_golden_prior.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_08x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_08x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_16x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_16x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_32x_golden.yaml", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/configs/ppg_rvq_64hz_32x_golden.yaml" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/examples/01_quickstart_golden_codec.ipynb", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/examples/01_quickstart_golden_codec.ipynb" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/examples/02_evaluate_on_your_data.ipynb", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/examples/02_evaluate_on_your_data.ipynb" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/blob/main/examples/03_quickstart_golden_codec_ecg.ipynb", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/blob/main/examples/03_quickstart_golden_codec_ecg.ipynb" + }, + { + "url": "https://github.com/AmbiqAI/compressionkit/tree/main/examples", + "status": 200, + "final": "https://github.com/AmbiqAI/compressionkit/tree/main/examples" + }, + { + "url": "https://github.com/AmbiqAI/helia-developer-hub/blob/main/src/content/docs/demos/signal-compression.mdx", + "status": 404, + "final": "https://github.com/AmbiqAI/helia-developer-hub/blob/main/src/content/docs/demos/signal-compression.mdx" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-16x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-16x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-2x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-2x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-32x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-32x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-4x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-4x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-64x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-64x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-8x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-8x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-16x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-16x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-2x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-2x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-32x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-32x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-4x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-4x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-64x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-64x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-8x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-hybrid-8x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-16x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-16x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-2x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-2x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-32x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-32x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-4x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-4x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-64x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-64x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-8x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ecg-spiht-8x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-16x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-16x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-2x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-2x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-32x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-32x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-4x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-4x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-8x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-8x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-hybrid-16x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-hybrid-16x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-hybrid-2x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-hybrid-2x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-hybrid-32x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-hybrid-32x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-hybrid-4x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-hybrid-4x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-hybrid-8x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-hybrid-8x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-spiht-16x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-spiht-16x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-spiht-2x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-spiht-2x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-spiht-32x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-spiht-32x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-spiht-4x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-spiht-4x-v1.0" + }, + { + "url": "https://huggingface.co/Ambiq/compressionkit-ppg-spiht-8x-v1.0", + "status": 200, + "final": "https://huggingface.co/Ambiq/compressionkit-ppg-spiht-8x-v1.0" + }, + { + "url": "https://physionet.org/", + "error": "fetch failed" + }, + { + "url": "https://physionet.org/content/ptb-xl/", + "error": "fetch failed" + }, + { + "url": "https://physionet.org/content/ptb-xl/1.0.3/", + "error": "fetch failed" + }, + { + "url": "https://sleepdata.org/", + "error": "fetch failed" + } + ] +} diff --git a/astro-site/legacy-anchor-dispositions.json b/astro-site/legacy-anchor-dispositions.json new file mode 100644 index 0000000..88bf3a3 --- /dev/null +++ b/astro-site/legacy-anchor-dispositions.json @@ -0,0 +1,962 @@ +[ + { + "page": "adding-a-codec-family", + "id": "two-different-meanings-of-family-dont-conflate-them", + "disposition": "alias", + "heading": "Codec family and experiment structure" + }, + { + "page": "api/evaluation", + "id": "compressionkit.evaluation.metrics.PRD", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/evaluation/metrics/#compressionkit.evaluation.metrics.PRD" + }, + { + "page": "api/evaluation", + "id": "compressionkit.evaluation.metrics.TruePRD", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/evaluation/metrics/#compressionkit.evaluation.metrics.TruePRD" + }, + { + "page": "api/evaluation", + "id": "compressionkit.evaluation.metrics.compute_signal_metrics", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/evaluation/metrics/#compressionkit.evaluation.metrics.compute_signal_metrics" + }, + { + "page": "api/evaluation", + "id": "compressionkit.evaluation.metrics.compute_ppg_physiokit_metrics", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/evaluation/metrics/#compressionkit.evaluation.metrics.compute_ppg_physiokit_metrics" + }, + { + "page": "api/evaluation", + "id": "compressionkit.evaluation.metrics.summarize_physiokit_alignment", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/evaluation/metrics/#compressionkit.evaluation.metrics.summarize_physiokit_alignment" + }, + { + "page": "api/evaluation", + "id": "compressionkit.evaluation.artifacts.save_sample_artifacts", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/evaluation/artifacts/#compressionkit.evaluation.artifacts.save_sample_artifacts" + }, + { + "page": "api/export", + "id": "compressionkit.export.tflite.export_encoder_tflite", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/export/tflite/#compressionkit.export.tflite.export_encoder_tflite" + }, + { + "page": "api/datasets", + "id": "compressionkit.datasets.ppg.load_ppg_signal", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/datasets/ppg/#compressionkit.datasets.ppg.load_ppg_signal" + }, + { + "page": "api/datasets", + "id": "compressionkit.datasets.ppg.load_ppg_splits", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/datasets/ppg/#compressionkit.datasets.ppg.load_ppg_splits" + }, + { + "page": "api/datasets", + "id": "compressionkit.datasets.ppg.load_ppg_file_splits", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/datasets/ppg/#compressionkit.datasets.ppg.load_ppg_file_splits" + }, + { + "page": "api/datasets", + "id": "compressionkit.datasets.ppg.build_ppg_tfrecord_cache", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/datasets/ppg/#compressionkit.datasets.ppg.build_ppg_tfrecord_cache" + }, + { + "page": "api/datasets", + "id": "compressionkit.datasets.ppg.make_ppg_inmemory_dataset", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/datasets/ppg/#compressionkit.datasets.ppg.make_ppg_inmemory_dataset" + }, + { + "page": "api/datasets", + "id": "compressionkit.datasets.ppg.make_ppg_tfrecord_dataset", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/datasets/ppg/#compressionkit.datasets.ppg.make_ppg_tfrecord_dataset" + }, + { + "page": "api/datasets", + "id": "compressionkit.datasets.ppg.make_ppg_stream_dataset", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/datasets/ppg/#compressionkit.datasets.ppg.make_ppg_stream_dataset" + }, + { + "page": "api/datasets", + "id": "compressionkit.datasets.ppg.collect_random_samples", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/datasets/ppg/#compressionkit.datasets.ppg.collect_random_samples" + }, + { + "page": "api/datasets", + "id": "compressionkit.datasets.ppg.bandpass_filter_batch", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/datasets/ppg/#compressionkit.datasets.ppg.bandpass_filter_batch" + }, + { + "page": "api/configs", + "id": "compressionkit.configs.ppg_rvq.PpgRvqConfig", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/configs/ppg_rvq/#compressionkit.configs.ppg_rvq.PpgRvqConfig" + }, + { + "page": "api/configs", + "id": "compressionkit.configs.ppg_rvq.PpgRvqConfig.from_yaml", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/configs/ppg_rvq/#compressionkit.configs.ppg_rvq.PpgRvqConfig.from_yaml" + }, + { + "page": "api/configs", + "id": "compressionkit.configs.ppg_rvq.DataConfig", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/configs/ppg_rvq/#compressionkit.configs.ppg_rvq.DataConfig" + }, + { + "page": "api/configs", + "id": "compressionkit.configs.ppg_rvq.ModelConfig", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/configs/ppg_rvq/#compressionkit.configs.ppg_rvq.ModelConfig" + }, + { + "page": "api/configs", + "id": "compressionkit.configs.ppg_rvq.TrainingConfig", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/configs/ppg_rvq/#compressionkit.configs.ppg_rvq.TrainingConfig" + }, + { + "page": "api/configs", + "id": "compressionkit.configs.ppg_rvq.EvaluationConfig", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/configs/ppg_rvq/#compressionkit.configs.ppg_rvq.EvaluationConfig" + }, + { + "page": "api/configs", + "id": "compressionkit.configs.ppg_rvq.EvaluationConfig.num_plot_samples", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/configs/ppg_rvq/#compressionkit.configs.ppg_rvq.EvaluationConfig.num_plot_samples" + }, + { + "page": "api/configs", + "id": "compressionkit.configs.ppg_rvq.EvaluationConfig.num_samples", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/configs/ppg_rvq/#compressionkit.configs.ppg_rvq.EvaluationConfig.num_samples" + }, + { + "page": "api/configs", + "id": "compressionkit.configs.ppg_rvq.OutputConfig", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/configs/ppg_rvq/#compressionkit.configs.ppg_rvq.OutputConfig" + }, + { + "page": "api/preprocessing", + "id": "compressionkit.preprocessing.ppg.build_preprocessor", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/preprocessing/ppg/#compressionkit.preprocessing.ppg.build_preprocessor" + }, + { + "page": "api/preprocessing", + "id": "compressionkit.preprocessing.ppg.build_augmenter", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/preprocessing/ppg/#compressionkit.preprocessing.ppg.build_augmenter" + }, + { + "page": "api/preprocessing", + "id": "compressionkit.preprocessing.ppg.generate_synthetic_ppg_batch", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/preprocessing/ppg/#compressionkit.preprocessing.ppg.generate_synthetic_ppg_batch" + }, + { + "page": "api/models", + "id": "compressionkit.models.rvq_autoencoder.build_rvq_autoencoder", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/models/rvq_autoencoder/#compressionkit.models.rvq_autoencoder.build_rvq_autoencoder" + }, + { + "page": "api/models", + "id": "compressionkit.models.rvq_autoencoder.build_encoder_2d", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/models/encoder/#compressionkit.models.encoder.build_encoder_2d" + }, + { + "page": "api/models", + "id": "compressionkit.models.rvq_autoencoder.build_decoder_2d", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/models/decoder/#compressionkit.models.decoder.build_decoder_2d" + }, + { + "page": "api/models", + "id": "compressionkit.models.rvq_autoencoder.compute_compression_stats", + "disposition": "reference-link", + "target": "/compressionkit/reference/api/compressionkit/models/rvq_autoencoder/#compressionkit.models.rvq_autoencoder.compute_compression_stats" + }, + { + "page": "cli", + "id": "usage_1", + "disposition": "alias" + }, + { + "page": "cli", + "id": "arguments_1", + "disposition": "alias" + }, + { + "page": "cli", + "id": "example_1", + "disposition": "alias" + }, + { + "page": "cli", + "id": "configuration_1", + "disposition": "alias" + }, + { + "page": "cli", + "id": "outputs_1", + "disposition": "alias" + }, + { + "page": "customer-evidence", + "id": "release-decision-overview", + "disposition": "alias", + "heading": "What these results cover" + }, + { + "page": "customer-evidence", + "id": "compression-and-deploy-ladder", + "disposition": "alias", + "heading": "Compression and quality" + }, + { + "page": "customer-evidence", + "id": "ppg-release-ladder", + "disposition": "alias", + "heading": "PPG quality" + }, + { + "page": "customer-evidence", + "id": "ecg-release-ladder", + "disposition": "alias", + "heading": "ECG quality" + }, + { + "page": "customer-evidence", + "id": "how-to-use-this-page", + "disposition": "alias", + "heading": "Choose a candidate" + }, + { + "page": "demo/ppg-codec", + "id": "overview", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "what-the-demo-shows", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "architecture", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "dashboard-walkthrough", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "original-and-reconstruction-views", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "control-panel", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "compression-intelligence", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "live-noise-controls", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "live-stream-experience", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "recordings-experience", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "demo-setup", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "hardware-and-software", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "supported-platform-today", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "flashing-firmware", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "running-the-demo", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "why-this-matters", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "demo/ppg-codec", + "id": "positioning-summary", + "disposition": "retired", + "reason": "Demo instructions moved to maintained hub reference" + }, + { + "page": "datasets", + "id": "ecg-ptb-xl", + "disposition": "alias" + }, + { + "page": "datasets", + "id": "ppg-mesa-open-sources", + "disposition": "alias" + }, + { + "page": "deployment", + "id": "mcu-edge-device-path", + "disposition": "alias" + }, + { + "page": "experiment-architecture", + "id": "codebase-audit", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "experiment-architecture", + "id": "refactoring-direction", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "experiment-architecture", + "id": "heliaedge-candidates", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "experiment-architecture", + "id": "review-checklist", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "experiments/ecg-hybrid-2x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-hybrid-32x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-hybrid-16x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-hybrid-4x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-hybrid-64x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-hybrid-8x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-rvq-2x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-rvq-32x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-rvq-16x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-rvq-4x-prior", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-rvq-64x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-rvq-4x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-rvq-8x-prior", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-rvq-8x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-spiht-16x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-spiht-2x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-spiht-4x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-spiht-32x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-spiht-64x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments", + "id": "v1-registry", + "disposition": "alias", + "heading": "Choose an experiment" + }, + { + "page": "experiments", + "id": "reproduce-every-experiment-in-a-modality", + "disposition": "alias", + "heading": "Reproduce a group" + }, + { + "page": "experiments/ppg-hybrid-16x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-hybrid-2x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ecg-spiht-8x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-hybrid-32x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-hybrid-8x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-hybrid-4x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-rvq-16x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-rvq-32x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-rvq-2x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-rvq-4x-prior", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-rvq-4x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-rvq-8x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-spiht-16x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-rvq-8x-prior", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-spiht-32x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-spiht-2x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-spiht-4x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "experiments/ppg-spiht-8x", + "id": "dataset-license", + "disposition": "alias" + }, + { + "page": "huggingface", + "id": "3-two-stage-codec-codec-entropy-prior", + "disposition": "alias" + }, + { + "page": "", + "id": "what-compressionkit-is", + "disposition": "alias", + "heading": "Explore the toolkit" + }, + { + "page": "", + "id": "where-compressionkit-fits", + "disposition": "alias", + "heading": "Explore the toolkit" + }, + { + "page": "", + "id": "what-current-goldens-show", + "disposition": "alias", + "heading": "Explore the toolkit" + }, + { + "page": "", + "id": "how-to-read-the-evidence", + "disposition": "alias", + "heading": "Explore the toolkit" + }, + { + "page": "", + "id": "guiding-principles", + "disposition": "alias", + "heading": "Explore the toolkit" + }, + { + "page": "", + "id": "high-level-getting-started", + "disposition": "alias", + "heading": "Explore the toolkit" + }, + { + "page": "", + "id": "current-v1-artifacts", + "disposition": "alias", + "heading": "Explore the toolkit" + }, + { + "page": "", + "id": "where-to-go-next", + "disposition": "alias", + "heading": "Explore the toolkit" + }, + { + "page": "methods/cr_vs_fidelity_ppg", + "id": "noise-stratified-detail-clean-median-noisy-tertiles", + "disposition": "alias" + }, + { + "page": "methods/cr_vs_fidelity_ppg", + "id": "how-to-read-this-table", + "disposition": "alias", + "heading": "How to read these results" + }, + { + "page": "methods/cr_vs_fidelity_ecg", + "id": "noise-stratified-detail-clean-median-noisy-tertiles", + "disposition": "alias" + }, + { + "page": "methods/cr_vs_fidelity_ecg", + "id": "how-to-read-this-table", + "disposition": "alias", + "heading": "How to read these results" + }, + { + "page": "models", + "id": "current-release-surface", + "disposition": "alias", + "heading": "Choose a signal" + }, + { + "page": "models", + "id": "evidence-router", + "disposition": "alias", + "heading": "Compare candidates" + }, + { + "page": "models", + "id": "what-each-model-page-should-answer", + "disposition": "alias", + "heading": "Compare candidates" + }, + { + "page": "models", + "id": "standard-comparison-rule", + "disposition": "alias", + "heading": "Compare candidates" + }, + { + "page": "models", + "id": "deployment-artifacts", + "disposition": "alias", + "heading": "Load or validate a package" + }, + { + "page": "release-contract", + "id": "composition-principle", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "release-contract", + "id": "goals", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "release-contract", + "id": "golden-matrix", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "release-contract", + "id": "repository-implications", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "release-contract", + "id": "milestones", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "release-contract", + "id": "milestone-1-unified-package-contract", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "release-contract", + "id": "milestone-2-cross-runtime-validation", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "release-contract", + "id": "milestone-3-imu-goldens", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "release-contract", + "id": "milestone-4-docs-and-release-automation", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "release-contract", + "id": "non-goals-for-v1", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "release-contract", + "id": "decision-summary", + "disposition": "retired", + "reason": "Internal planning or superseded guidance removed; page retained" + }, + { + "page": "validation-scorecard", + "id": "core-claim", + "disposition": "alias", + "heading": "Compare like with like" + }, + { + "page": "validation-scorecard", + "id": "evidence-layers", + "disposition": "alias", + "heading": "Compare like with like" + }, + { + "page": "validation-scorecard", + "id": "measurement-philosophy", + "disposition": "alias", + "heading": "Compare like with like" + }, + { + "page": "validation-scorecard", + "id": "agreement-vs-accuracy", + "disposition": "alias", + "heading": "Agreement is different from accuracy" + }, + { + "page": "validation-scorecard", + "id": "algorithm-repeatability-baseline", + "disposition": "alias", + "heading": "Agreement is different from accuracy" + }, + { + "page": "validation-scorecard", + "id": "noise-preservation-vs-noise-removal", + "disposition": "alias", + "heading": "Signal condition buckets" + }, + { + "page": "validation-scorecard", + "id": "implementation-tiers", + "disposition": "alias", + "heading": "Compare like with like" + }, + { + "page": "validation-scorecard", + "id": "hr-hrv-preservation", + "disposition": "alias", + "heading": "ECG validation" + }, + { + "page": "validation-scorecard", + "id": "morphology-preservation", + "disposition": "alias", + "heading": "ECG validation" + }, + { + "page": "validation-scorecard", + "id": "downstream-task-preservation", + "disposition": "alias", + "heading": "ECG validation" + }, + { + "page": "validation-scorecard", + "id": "hr-pulse-rate-preservation", + "disposition": "alias", + "heading": "PPG validation" + }, + { + "page": "validation-scorecard", + "id": "morphology-preservation_1", + "disposition": "alias", + "heading": "PPG validation" + }, + { + "page": "validation-scorecard", + "id": "spo2-sensitive-preservation", + "disposition": "alias", + "heading": "PPG validation" + }, + { + "page": "validation-scorecard", + "id": "downstream-task-preservation_1", + "disposition": "alias", + "heading": "PPG validation" + }, + { + "page": "validation-scorecard", + "id": "cross-cutting-validation", + "disposition": "alias", + "heading": "Package and runtime validation" + }, + { + "page": "validation-scorecard", + "id": "stitching-and-streaming-behavior", + "disposition": "alias", + "heading": "Package and runtime validation" + }, + { + "page": "validation-scorecard", + "id": "noise-and-artifact-behavior", + "disposition": "alias", + "heading": "Signal condition buckets" + }, + { + "page": "validation-scorecard", + "id": "adaptive-bitrate-and-fallback", + "disposition": "alias", + "heading": "Package and runtime validation" + }, + { + "page": "validation-scorecard", + "id": "versioning-and-compatibility", + "disposition": "alias", + "heading": "Package and runtime validation" + }, + { + "page": "validation-scorecard", + "id": "ecg-buckets", + "disposition": "alias", + "heading": "Signal condition buckets" + }, + { + "page": "validation-scorecard", + "id": "ppg-buckets", + "disposition": "alias", + "heading": "Signal condition buckets" + }, + { + "page": "validation-scorecard", + "id": "positioning-guidance", + "disposition": "alias", + "heading": "Compare like with like" + }, + { + "page": "validation-scorecard", + "id": "passfail-summary-per-modality-and-profile", + "disposition": "alias", + "heading": "Package and runtime validation" + }, + { + "page": "use-cases", + "id": "who-benefits", + "disposition": "alias", + "heading": "Where compression can help" + }, + { + "page": "use-cases", + "id": "headline-benefits", + "disposition": "alias", + "heading": "Where compression can help" + }, + { + "page": "use-cases", + "id": "benefit-1-ondevice-memory", + "disposition": "alias", + "heading": "Estimate the payload" + }, + { + "page": "use-cases", + "id": "ppg-continuous-recording-capacity", + "disposition": "alias", + "heading": "Estimate the payload" + }, + { + "page": "use-cases", + "id": "ecg-continuous-recording-capacity", + "disposition": "alias", + "heading": "Estimate the payload" + }, + { + "page": "use-cases", + "id": "benefit-2-radio-bandwidth-energy", + "disposition": "alias", + "heading": "Estimate the payload" + }, + { + "page": "use-cases", + "id": "benefit-3-cloud-storage-ingestion", + "disposition": "alias", + "heading": "Estimate the payload" + }, + { + "page": "use-cases", + "id": "benefit-4-fidelity-that-survives-downstream-algorithms", + "disposition": "alias", + "heading": "Choose quality requirements before a ratio" + }, + { + "page": "use-cases", + "id": "choosing-an-operating-point", + "disposition": "alias", + "heading": "Choose quality requirements before a ratio" + }, + { + "page": "use-cases", + "id": "getting-started", + "disposition": "alias", + "heading": "Try the workflow" + } +] diff --git a/astro-site/migration-manifest.json b/astro-site/migration-manifest.json new file mode 100644 index 0000000..faac247 --- /dev/null +++ b/astro-site/migration-manifest.json @@ -0,0 +1,994 @@ +{ + "baseline": "69b94d836dd8a24f227d411e99ef4ff2a7de2b7d", + "items": [ + { + "source": "docs/EVALUATION_PLAN.md", + "sha256": "0a98c7130343d3adbdd02bae2a9f141d06c3b5fd675842d1a8f5589c948a4a31", + "disposition": "excluded", + "review": "pending", + "reason": "Internal evaluation planning retained in repository.", + "retiredSource": true, + "retainedAt": "maintainer-notes/EVALUATION_PLAN.md" + }, + { + "source": "docs/adding-a-codec-family.md", + "sha256": "40843bbc7f7dce24f4369c7e2608c13f1c6463e8cfabd0f46e3d4af53f4e26db", + "destination": "astro-site/src/content/docs/adding-a-codec-family.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/api/configs.md", + "sha256": "f1b6f5c4f7a968f39f29c4eb1063b655d7592f60d461488e22ea4e0f81850b86", + "destination": "astro-site/src/content/docs/api/configs.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/api/datasets.md", + "sha256": "a6abdbffa18a7d933d1491570ac67f462532a943e1be953a9563094c4d74c2be", + "destination": "astro-site/src/content/docs/api/datasets.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/api/evaluation.md", + "sha256": "71f8a7ace8ac52cca43794f5379b2eb4256c4f2e300afff6092768392f908604", + "destination": "astro-site/src/content/docs/api/evaluation.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/api/export.md", + "sha256": "ba59d2e024f4a221f633ca188b46c0324ade0a588620d79b31dd30f3ea009f28", + "destination": "astro-site/src/content/docs/api/export.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/api/models.md", + "sha256": "05f1f387b54201dfa4f9bdb0c78f0ac6b711b83de9507b292b1d329de1f6a4b1", + "destination": "astro-site/src/content/docs/api/models.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/api/preprocessing.md", + "sha256": "db5de45666063d7f2c485447d8c52cdc67d71d138c6daf108a417f36c34dbad1", + "destination": "astro-site/src/content/docs/api/preprocessing.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/assets/compressionkit-dark.png", + "sha256": "50cdc40c02f9d489adfff763e3bf14070dee52a57caafb0c2dadf821b09f12b1", + "destination": "astro-site/public/assets/compressionkit-dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/compressionkit-dashboard-full.jpeg", + "sha256": "6580cd489b29d6e7e8ec65f62925ebd2d89e7028210d50fadb575339b30679b7", + "destination": "astro-site/public/assets/compressionkit-dashboard-full.jpeg", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/compressionkit-icon-white.png", + "sha256": "29fb28e962f746f8c46f44aab790703b891377efffdd3c2e53b1c6ba45001214", + "destination": "astro-site/public/assets/compressionkit-icon-white.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/compressionkit-icon.png", + "sha256": "f9b024d793c78e2c18f6a7b25081c51350ba79c2cfa7ff8b3558ef7818a53cb5", + "destination": "astro-site/public/assets/compressionkit-icon.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/compressionkit-icon.svg", + "sha256": "16d27136d25744d3b378657aa8d367266cbae3cfcb25a9b57ebf463d1ecb8fa9", + "destination": "astro-site/public/assets/compressionkit-icon.svg", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/compressionkit-light.png", + "sha256": "da9d22b2c84f6b052874fe65698a8bc4368e0d16c2a7aa63764b8dbe27998c36", + "destination": "astro-site/public/assets/compressionkit-light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/compressionkit-live-stream.jpeg", + "sha256": "64aeb9bedc68f85f86edc610650e0cbe65eaa4582387c6849f49dfe471d5ed0d", + "destination": "astro-site/public/assets/compressionkit-live-stream.jpeg", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/compressionkit-ppg-overview.jpeg", + "sha256": "f7765a9ea0604fe03d974481b4ce4bb0f06647c3e298892b7bc87ebfbea40cc1", + "destination": "astro-site/public/assets/compressionkit-ppg-overview.jpeg", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/compressionkit-ppg-recordings.jpeg", + "sha256": "001a06ebba0acd61fbc3004b19fd4b86f9c037f0d9fc6135854f06b996cb1c83", + "destination": "astro-site/public/assets/compressionkit-ppg-recordings.jpeg", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/favicon.png", + "sha256": "29fb28e962f746f8c46f44aab790703b891377efffdd3c2e53b1c6ba45001214", + "destination": "astro-site/public/assets/favicon.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ecg_cos_dark.png", + "sha256": "fe94c6b6289ae39f30d77d41ed2e37be0ed3c822a6abe811fbf5ca080c0c4f7c", + "destination": "astro-site/public/assets/plots/ecg_cos_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ecg_cos_light.png", + "sha256": "f165487e081deadba214622b64ee2a4ad4f16ee294888a73949068035cf28933", + "destination": "astro-site/public/assets/plots/ecg_cos_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ecg_effective_rate_dark.png", + "sha256": "2ad17796cd9e6f8b162414034649fea81c1fb9992a24652e991aa18c5b8a201b", + "destination": "astro-site/public/assets/plots/ecg_effective_rate_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ecg_effective_rate_light.png", + "sha256": "0f41c81b55a2130eeaf89a715992bb1ce936b6126acbb17e4a58c63f8497aa3d", + "destination": "astro-site/public/assets/plots/ecg_effective_rate_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ecg_mse_dark.png", + "sha256": "52f730903558366ca2ccc5f5d13f18bc6ec2d227ded3ea6af8efee2c830d9c14", + "destination": "astro-site/public/assets/plots/ecg_mse_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ecg_mse_light.png", + "sha256": "f332808b79d7da4f316ea87d29c3e950ac568ee2c9c3548eaadf863f319d13f9", + "destination": "astro-site/public/assets/plots/ecg_mse_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ecg_prd_dark.png", + "sha256": "a7e70af3ed1c816d061015b82baa3e059035f705718c3018f0947e3fd6e56e5b", + "destination": "astro-site/public/assets/plots/ecg_prd_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ecg_prd_light.png", + "sha256": "3b9995ee0c6007e2dd6a68e65c5d20a494b86fdcfe06177c6ffb5b9c9d2018e9", + "destination": "astro-site/public/assets/plots/ecg_prd_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ecg_robustness_winners_artifacts.png", + "sha256": "5534422aa006c560d2874b4665ff732292efcd56b536d8e58260b9539ab8b1dc", + "destination": "astro-site/public/assets/plots/ecg_robustness_winners_artifacts.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ecg_robustness_winners_snr.png", + "sha256": "99f33a263c2162465ae389c6ee3c08a3fd5d16849f8830a0f47c831e050758a1", + "destination": "astro-site/public/assets/plots/ecg_robustness_winners_snr.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_cos_dark.png", + "sha256": "322334b90696919425f4478d28a4410fa97a156165f4fd31bbad585b9d7c24b0", + "destination": "astro-site/public/assets/plots/ppg_cos_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_cos_light.png", + "sha256": "420c17ae136b196246960e7596e25fcefe804a36b3dcff6a9854122d5334135a", + "destination": "astro-site/public/assets/plots/ppg_cos_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_effective_rate_dark.png", + "sha256": "03a872d0af505caf7d45a970ee8163bc325d66763de0dec71da38b93e424b8a8", + "destination": "astro-site/public/assets/plots/ppg_effective_rate_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_effective_rate_light.png", + "sha256": "f4035a8662883adcd85e2740cfcf00b374b1db25564acd27eb5853ced8e8c533", + "destination": "astro-site/public/assets/plots/ppg_effective_rate_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_hr_dark.png", + "sha256": "2e56b0918074ffb5a51e5e66bddb873f389cce67e4629e8c5eab4f64de6692ab", + "destination": "astro-site/public/assets/plots/ppg_hr_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_hr_light.png", + "sha256": "0911339b36c21470d314a7d66989ee2ff09f40cca2c658739dc9c8512e25beb5", + "destination": "astro-site/public/assets/plots/ppg_hr_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_mse_dark.png", + "sha256": "b76da9c44485fd3c2abb5a90201ccd671cd5e332639ceec5965dd107f71866cd", + "destination": "astro-site/public/assets/plots/ppg_mse_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_mse_light.png", + "sha256": "11444666bcd30fe71c8dd43dc961ae32fc3c7842a4272d3a003a3e46779c835f", + "destination": "astro-site/public/assets/plots/ppg_mse_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_prd_dark.png", + "sha256": "24464b733c2773a30e246eb6153e8091d7cc968b59f025c2eb624339b3caaad3", + "destination": "astro-site/public/assets/plots/ppg_prd_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_prd_light.png", + "sha256": "4da4940ef337529398666f596da3be68250f20ee498ac204c22a19ee136ea592", + "destination": "astro-site/public/assets/plots/ppg_prd_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_rmssd_dark.png", + "sha256": "6ec897e9682379e55e75d45f0c3ce20f42d606470de6e9b02246d933a73efdfc", + "destination": "astro-site/public/assets/plots/ppg_rmssd_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_rmssd_light.png", + "sha256": "995809e9529bef71244fd51c8c1779a1967de9170b1208d97cdc980ed147caff", + "destination": "astro-site/public/assets/plots/ppg_rmssd_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_robustness_winners_artifacts.png", + "sha256": "5ddebda11872fc34d6498f749959988fb671aeed2f52b76202f89c55630b5463", + "destination": "astro-site/public/assets/plots/ppg_robustness_winners_artifacts.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_robustness_winners_snr.png", + "sha256": "7ae071f1e66514b92d61421071c9c814595381db6ce9e688de1c3077a5eecbe1", + "destination": "astro-site/public/assets/plots/ppg_robustness_winners_snr.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_sdnn_dark.png", + "sha256": "febe1b01c51d0c12c6dd40fab79698503c16aabe98dbe4dfbce607af0d44f7ba", + "destination": "astro-site/public/assets/plots/ppg_sdnn_dark.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/assets/plots/ppg_sdnn_light.png", + "sha256": "a542ef353b66ab3e028484a39a6b766e16a4c069f4b66258ccc1bb5def882473", + "destination": "astro-site/public/assets/plots/ppg_sdnn_light.png", + "disposition": "copied", + "retiredSource": true + }, + { + "source": "docs/cli.md", + "sha256": "8c8bb36515e54e602227afe8422007f52db60c93df11f6d1f8f21ce830f9f394", + "destination": "astro-site/src/content/docs/cli.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/customer-evidence.md", + "sha256": "9d4ab36ac67c8f2a73946506c54f928f5e33469100d294d462d916fea04b4024", + "destination": "astro-site/src/content/docs/customer-evidence.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/datasets.md", + "sha256": "1390884eca57e57ad9c96dfecd06bc086dc8b85baaabee83013f38313745dd45", + "destination": "astro-site/src/content/docs/datasets.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/demo/ppg-codec.md", + "sha256": "c4d46ad973a397a29f226541b36b2da9ef35d8c60a82d3cf2f1df5a3bb44b0a0", + "destination": "astro-site/src/content/docs/demo/ppg-codec.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/deployment.md", + "sha256": "dc685193a3e563177654824da68a1b2457f7ccdcdb2498f71459667728aeef37", + "destination": "astro-site/src/content/docs/deployment.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/entropy-coding-research.md", + "sha256": "52add63999841ed4155eeebfcacc502b73d7cd8edc1ac1d5ba6c30d7e3933d9c", + "disposition": "excluded", + "reason": "Internal roadmap or research planning; retain in repository, exclude from public site.", + "retiredSource": true, + "retainedAt": "maintainer-notes/entropy-coding-research.md" + }, + { + "source": "docs/examples.md", + "sha256": "a4163ffdc8b7a7888e7e3e514cfa4c514a0abb83b08c84818b51baf5b2af55b4", + "destination": "astro-site/src/content/docs/examples.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiment-architecture.md", + "sha256": "79dad357f1a6b23cdce465a904a4c4b06f8394b6f5a5ff1d4584d577d704d818", + "destination": "astro-site/src/content/docs/experiment-architecture.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-hybrid-16x.md", + "sha256": "58422eddec0828f0d88ba4e662d08721e8eb88fa7f39f2fa67091fc0e674e706", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-16x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-hybrid-2x.md", + "sha256": "2241a2b016884fa0ed12986bf33ecb13d825035c5ce4c36de16774b8447cd509", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-2x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-hybrid-32x.md", + "sha256": "7077d93672842b8bf298855517a6dc3e7fb6e53c1043b41fdacaac8aef68af1a", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-32x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-hybrid-4x.md", + "sha256": "c0dc2781f598a03bad47a8b163e8dcb9d208f3c07487b3995f2e9a350c6a244b", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-4x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-hybrid-64x.md", + "sha256": "62aef0c56e9b5e432c1b31b5a47f62b6b8fbb236b79354af625c096c4154d6a6", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-64x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-hybrid-8x.md", + "sha256": "7625bf96b1ede7bea8e03c99c1a6901318ec606129056c09e638e242f9c4f56f", + "destination": "astro-site/src/content/docs/experiments/ecg-hybrid-8x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-rvq-16x.md", + "sha256": "8ed3c7503378a51dd3f4f312bf81ddfc570269a0dfbb8f3384db79b5f83802cd", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-16x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-rvq-2x.md", + "sha256": "3ca932666b36e7feb1b6d3615f6b4ad7d8dde47f3d58fc1deef41dc4edcabd28", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-2x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-rvq-32x.md", + "sha256": "2e5b57cb9fdc71b6fa88840372a849d8c530e76d18365364ab77fd1525a1a335", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-32x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-rvq-4x-prior.md", + "sha256": "a46ffec8dec919b1b1decbe9c7fc8eb91d55244771a57c5db750101e36a0d9a2", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-4x-prior.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-rvq-4x.md", + "sha256": "3e4c7e0396c42fbb51ada3126436dbe7d8d031dc678a7a31e2efb5804a1a8a46", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-4x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-rvq-64x.md", + "sha256": "056de6e863cdbfaeed7a34a9141406dcecdf012470c314e7775d174eb4a168e2", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-64x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-rvq-8x-prior.md", + "sha256": "2b215473f8b60efcb5f391e52e02e756cf48fc5384d11a19e88b89f46a585095", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-8x-prior.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-rvq-8x.md", + "sha256": "7533438e56df3ebe4783b9d8a4e3b71980623886b68b7ab1a665dd4d5c536dda", + "destination": "astro-site/src/content/docs/experiments/ecg-rvq-8x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-spiht-16x.md", + "sha256": "bc2130934da4c2a8ce46cfb369b4e84d75c27402a471ad4154e9d992c34dabb9", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-16x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-spiht-2x.md", + "sha256": "49bca3e68c46e4ac31e6b3160167c365547a40e40bcef8a9362a9b7b5fbe7e8d", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-2x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-spiht-32x.md", + "sha256": "962af791d3042f12a405f8338ea5d355636162d9785f2b97cb8f9abac08405e2", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-32x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-spiht-4x.md", + "sha256": "323312ba1ac1e1d8f5d747a1036bf19a43c0b1aaedd637c96a5aec3f1f44d287", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-4x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-spiht-64x.md", + "sha256": "d194a59bfb5e70f3e86aa959786ab25e0582ccd1f8b773c770cdbc78a1dc0c98", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-64x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ecg-spiht-8x.md", + "sha256": "d838f2b7fb1b091659f81188aa8346acffcbc07738aa807a397dd55c92180b1f", + "destination": "astro-site/src/content/docs/experiments/ecg-spiht-8x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/index.md", + "sha256": "6e86ff9daf15253db7c7831e95921cd90f4d262b719386c569d12f3e2648ee04", + "destination": "astro-site/src/content/docs/experiments/index.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-hybrid-16x.md", + "sha256": "b05cbfddcd7a35f5443b5930922b207d246cda9e6692a5933709822b048c757e", + "destination": "astro-site/src/content/docs/experiments/ppg-hybrid-16x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-hybrid-2x.md", + "sha256": "d8c71490fecb37ba8cfc597fd871f0069779b3fb44d64977751ee46a92a2b4ba", + "destination": "astro-site/src/content/docs/experiments/ppg-hybrid-2x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-hybrid-32x.md", + "sha256": "442a53764211d1d4b5811e760c5b41f3162c037030b999064f2b02edb12916d8", + "destination": "astro-site/src/content/docs/experiments/ppg-hybrid-32x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-hybrid-4x.md", + "sha256": "ad619dc6f26f9b28a967fe400b4e87004283b6da97783ca6b423da3557f23a46", + "destination": "astro-site/src/content/docs/experiments/ppg-hybrid-4x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-hybrid-8x.md", + "sha256": "b753951159da5f0c4db297267f11d76381c04e0431acff6ec2c8647b6b49715c", + "destination": "astro-site/src/content/docs/experiments/ppg-hybrid-8x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-rvq-16x.md", + "sha256": "7c14516ccbfa57f7e0a3db4fcb467b597a1cb38ee75011eff68b2143606ed5ef", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-16x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-rvq-2x.md", + "sha256": "589e24a60a2af4db5d48ceef336f59cb17457e8a37140223585e7995efae9cc0", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-2x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-rvq-32x.md", + "sha256": "4cd73fa89fb87512b54c76acd57db7e14a331bcf748bb5d420d6215084c102c9", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-32x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-rvq-4x-prior.md", + "sha256": "a72c5eb78320c3860fa9f2847f2194e1f1bf3303d30e27a606ab5b6299a9b05a", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-4x-prior.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-rvq-4x.md", + "sha256": "579ec4488dbb2b2eeef8cc4dcf9a6ef56058d9f16d72a4aafdc135899291e797", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-4x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-rvq-8x-prior.md", + "sha256": "4becb313d1fba60d1bd2fa20f3361947804d2e82872b0bcc942deb06d35ca1f1", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-8x-prior.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-rvq-8x.md", + "sha256": "ad6c71d8e8d2d5a84fe9547e782b401b4433eadadb4a76468127ad480c50ab0b", + "destination": "astro-site/src/content/docs/experiments/ppg-rvq-8x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-spiht-16x.md", + "sha256": "81bb4bf32b42a1e9a59515624fbaf85b146d979d1656df333346a5f94bf1e35d", + "destination": "astro-site/src/content/docs/experiments/ppg-spiht-16x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-spiht-2x.md", + "sha256": "934d51afae3abbfe23f9421f62958c70f274f69abb4b1854419edd460dff5bc5", + "destination": "astro-site/src/content/docs/experiments/ppg-spiht-2x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-spiht-32x.md", + "sha256": "64c12c5a4d86d0bcda20776725f2b402624721f214209d858fa58b17ab001224", + "destination": "astro-site/src/content/docs/experiments/ppg-spiht-32x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-spiht-4x.md", + "sha256": "6885c07766c97366d93bdf1f2bc19d96cc1537517edc1a728329f5dde53a5352", + "destination": "astro-site/src/content/docs/experiments/ppg-spiht-4x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/experiments/ppg-spiht-8x.md", + "sha256": "af35a4cf8cc2cc933cc1941f5a6be09bb29a6dd82c4293eceb6677f6d31789ea", + "destination": "astro-site/src/content/docs/experiments/ppg-spiht-8x.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/getting-started.md", + "sha256": "c3d91ce82ac70c4f290caca0c3ae3bc40a5d1b48bd86ae185716ce768dfea386", + "destination": "astro-site/src/content/docs/getting-started.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/huggingface.md", + "sha256": "80b0f912b3a69d1d8e72017c494eae8f28d49afb445fd566c7eaac26edad8257", + "destination": "astro-site/src/content/docs/huggingface.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/index.md", + "sha256": "899a54840c736901a2c0ecb946ac205b8cc86a45e0542e68b9e6dcf3d4f4fb3c", + "destination": "astro-site/src/content/docs/index.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/javascripts/math.js", + "sha256": "3867725481a1ca94634e87b3ab884d7b3b82c8d3f3200ec971f01b4acb21030a", + "disposition": "excluded", + "reason": "Zensical-specific presentation file; replaced by shared UI.", + "retiredSource": true + }, + { + "source": "docs/methods/cr_vs_fidelity_ecg.md", + "sha256": "a96e361f74af29463870499e299373a5f6018449f461d3794d4b9f0dacfdb014", + "destination": "astro-site/src/content/docs/methods/cr_vs_fidelity_ecg.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/methods/cr_vs_fidelity_ppg.md", + "sha256": "f91134163b1eff783a06db940458a8c411e452cbf1e2bb2b4eb63070c144134a", + "destination": "astro-site/src/content/docs/methods/cr_vs_fidelity_ppg.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/methods/index.md", + "sha256": "86e4dad01121551b03e3910fb676d894ca67fde1733579ebb06b286a1fc3b674", + "destination": "astro-site/src/content/docs/methods/index.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/methods/rvq.md", + "sha256": "199828b67fc89687932dcbff4651e0bae8ba177e4c9af50688ea58d66d890852", + "destination": "astro-site/src/content/docs/methods/rvq.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/models/ecg.md", + "sha256": "5142bc4d42432b4576c23db1ab78739c9f6853647ed9d5ade24a8010f0ee499d", + "destination": "astro-site/src/content/docs/models/ecg.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/models/index.md", + "sha256": "3a2f97ed4700b407e886224d764daaa0993983d292ad4dc05d695268f1b03881", + "destination": "astro-site/src/content/docs/models/index.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/models/ppg.md", + "sha256": "691fa879f9aa2cc6038a25be0fb1ec117af4c899d3030f3b5583769d46dbea59", + "destination": "astro-site/src/content/docs/models/ppg.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/overrides/main.html", + "sha256": "5acd21523371f27b919975b601d87c569e72bce6da00e4544294f6e02fa8eb73", + "disposition": "excluded", + "reason": "Zensical-specific presentation file; replaced by shared UI.", + "retiredSource": true + }, + { + "source": "docs/release-contract.md", + "sha256": "f1f8587933eebba2f497debfc0f58616369aaa230a0d087fed4be55e82141599", + "destination": "astro-site/src/content/docs/release-contract.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/signals/ecg.md", + "sha256": "298cc3b6f9427dec2037486e64a91e325d2ed33778aec216c461728afd30788c", + "destination": "astro-site/src/content/docs/signals/ecg.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/signals/index.md", + "sha256": "6b104aff5c102e53462f7400c4dec39622d31a3d51f8057b0c1d103b1113874a", + "destination": "astro-site/src/content/docs/signals/index.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/signals/ppg-workflow.md", + "sha256": "907052f4608ef6dc585f1f342fbb0bca74e0c66cf711bf1981f9f8b4fd9c517b", + "destination": "astro-site/src/content/docs/signals/ppg-workflow.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/signals/ppg.md", + "sha256": "1be3f7ac87ceeec202da2593333f97bb78d6ad22b8e03b7d27eb2552fded6621", + "destination": "astro-site/src/content/docs/signals/ppg.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/stylesheets/brand.css", + "sha256": "8973a061a0835054c193b61eb7ca3d3daafe6b0f2fbde297f080bdc840a053c7", + "disposition": "excluded", + "reason": "Zensical-specific presentation file; replaced by shared UI.", + "retiredSource": true + }, + { + "source": "docs/stylesheets/custom.css", + "sha256": "e5dfaabed71e8b9b3d529f45076d35382966fff245a664deb80d3f8ee2fb6d4c", + "disposition": "excluded", + "reason": "Zensical-specific presentation file; replaced by shared UI.", + "retiredSource": true + }, + { + "source": "docs/use-cases.md", + "sha256": "2c293c84c3c99034fc7aefef5d4bdaae27047a71da859a783ca6694a58fe0391", + "destination": "astro-site/src/content/docs/use-cases.mdx", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "docs/v1-roadmap.md", + "sha256": "1b39118e2af5a703e0ae424f441e416527d233a125d9d2f6a21b4000b265a8d3", + "disposition": "excluded", + "reason": "Internal roadmap or research planning; retain in repository, exclude from public site.", + "retiredSource": true, + "retainedAt": "maintainer-notes/v1-roadmap.md" + }, + { + "source": "docs/validation-scorecard.md", + "sha256": "f4f8751da8f07793857d888c2f4d1063b2e9ceb5cb7cd2f152deb2ddaecd07b8", + "destination": "astro-site/src/content/docs/validation-scorecard.md", + "disposition": "migrated", + "review": "content-and-render-audited", + "review_evidence": "astro-site/AUDIT.md", + "retiredSource": true + }, + { + "source": "examples/01_quickstart_golden_codec.ipynb", + "sha256": "7db614615625ab25e5c654eff9510b862db338469186d06acd4a94e7b321edac", + "disposition": "migrated", + "reason": "Preserve canonical notebook; guide rendering and execution audit pending.", + "destination": "generated notebook guide and byte-identical download", + "review": "execution not verified" + }, + { + "source": "examples/02_evaluate_on_your_data.ipynb", + "sha256": "8271881efdb6267c94f3b1ec58574b0c108ebb4b83efeb0df03580d1c708af94", + "disposition": "migrated", + "reason": "Preserve canonical notebook; guide rendering and execution audit pending.", + "destination": "generated notebook guide and byte-identical download", + "review": "execution not verified" + }, + { + "source": "examples/03_quickstart_golden_codec_ecg.ipynb", + "sha256": "87552e8780c280c675bf340ea26c541c3ee323f0be71388bb37c5d6764b9947c", + "disposition": "migrated", + "reason": "Preserve canonical notebook; guide rendering and execution audit pending.", + "destination": "generated notebook guide and byte-identical download", + "review": "execution not verified" + } + ], + "watchedSources": { + "compressionkit/experiments/registry.py": "f5c1061d3ffbf395e7a59418e3c614f3a9e426a64543917f25cb193f03dd238f", + "scripts/build_customer_evidence_summary.py": "0b851664c750874d46ad0a4b8ddcda926f4bdd141fbc63d416bbe5e592d505e2", + "scripts/build_cr_vs_fidelity.py": "191ad45d6e7a74a1380b7810a7a4fb0fff954a7487df88979e1588d5532d0bad", + "configs/ecg_rvq_256hz_02x_golden.yaml": "1df9d1fec0bf94f754eb7dcf963c6244224381d5c77cf677c9f43f53ed76ccf0", + "configs/ecg_rvq_256hz_02x_golden_hier.yaml": "51124d1af33803d53a77fe7797cffae921e7f6d90af7a74cb28d97912dbbc9ed", + "configs/ecg_rvq_256hz_02x_golden_spectral_lo.yaml": "b259e16efd961aac9b70c5fda932354fe1a2269e28a22b4097ad248f75553c06", + "configs/ecg_rvq_256hz_04x_golden.yaml": "80c711327a1efa4e47d75229ea1b41449a679ed9b168555e9f42ced3fce80e0d", + "configs/ecg_rvq_256hz_04x_golden_hier.yaml": "f57921d5befee9dc83a56794cf98b3f0be909ae997da6810054809e55f38ae9d", + "configs/ecg_rvq_256hz_04x_golden_prior.yaml": "c44e3ef81e5ed8e3cf5410e02f48d92296fd727790df047d576235b23da520db", + "configs/ecg_rvq_256hz_04x_golden_spectral_lo.yaml": "ef393a259f2ff038555c8d0e2706dcb8a30d60af6b440cf209e0d90b7f50c0b3", + "configs/ecg_rvq_256hz_08x_golden.yaml": "d91738246a7ef43e0c2bd06245648bfb5309aaa2af1a80e84eb7ed8e8ca183bd", + "configs/ecg_rvq_256hz_08x_golden_empirical_midpoint.yaml": "929481e5af7f793d591f2801e340686d9b6af552a05f87388769874ab3c17c72", + "configs/ecg_rvq_256hz_08x_golden_hier.yaml": "0742e5b05f4d5b34e0e810dd3040d61165e673b71b5896598c22b78486a1d824", + "configs/ecg_rvq_256hz_08x_golden_prior.yaml": "55a1a7607ba1358b1448fd16dca9453d14c98ec579cd73d02fd77476c3a588d7", + "configs/ecg_rvq_256hz_08x_golden_spectral_lo.yaml": "79e00bdd4b2448232f92594ab98a1a0b68bc51ac4ce6a6a6aca1cdf845661e64", + "configs/ecg_rvq_256hz_16x_golden.yaml": "93499daa7765d4a7e1912493e70806a69c8af87d96b1ac036fe5f2c7db0416a2", + "configs/ecg_rvq_256hz_16x_golden_hier.yaml": "bfbb59f688a7821b993096d9d594e72f5e9079fde11a5ab96677343f8846d6b5", + "configs/ecg_rvq_256hz_16x_golden_spectral_lo.yaml": "efed36b09df76284d4fd96a8b4e579618938b29f643875ba16784a9735122245", + "configs/ecg_rvq_256hz_32x_golden.yaml": "6163d01cfb9b61a482b6c066cc2aae7baf0d6dfa37b60d9b6bcc94c62a89cc8c", + "configs/ecg_rvq_256hz_32x_golden_spectral_lo.yaml": "b0f0cef4567fb838d93630e1dbafa3a226a9f3bcdf15101f34f7edd292a47101", + "configs/ecg_rvq_256hz_64x_golden.yaml": "e5a2151dfffdc919d0d45d15df85fb28c61b82ca0fefcb59589b7ac2de3640c8", + "configs/ecg_rvq_256hz_64x_golden_spectral_lo.yaml": "3536de446753dbb13d1a55f02abab474ce6a8da78d4f81ee65c19ef20d70a798", + "configs/ppg_h5_rvq_16x_mixed_golden_sched.yaml": "a81822c0d8194eafd9a921bd50660cfb2b53167b411991d8f9f3ad9f652642c4", + "configs/ppg_h5_rvq_16x_mixed_golden_sched_spectral_lo.yaml": "c58dcc260f9c6eb6219fdf9ee570bd79331c9cdefde7b803f085f47d70188f1c", + "configs/ppg_h5_rvq_2x_mixed_golden_sched.yaml": "3ec74c299baec861371fd451ca02813ebb92fb7bda5a8567b215a13069993656", + "configs/ppg_h5_rvq_2x_mixed_golden_sched_spectral_lo.yaml": "be2c1166b1b05a0c4a13c39529289a15c63da5dcecfc67ed401457f5426f9431", + "configs/ppg_h5_rvq_4x_mixed_golden_sched.yaml": "63f463e89e6fe35c0657110317c4854d641456debbe3ee18b668125090167537", + "configs/ppg_h5_rvq_4x_mixed_golden_sched_spectral_lo.yaml": "42857f3b4b602fb0764a55376e8830946777ac047807c01e1d628b2d7b7454d7", + "configs/ppg_h5_rvq_8x_mixed_golden_sched.yaml": "e34b0a080cc9c585cfe9b268b7d62958c686c2f60d3af1d1e4cb40e160fe8450", + "configs/ppg_h5_rvq_8x_mixed_golden_sched_spectral_lo.yaml": "1e83a1af39866c29a65a966c6bde45d5a21247e67954dbe369ff98f80760cf83", + "configs/ppg_rvq_64hz_02x_golden.yaml": "e2fe2da650680467832fb468cdb95fe3e3540a1e59c9d04d624137446428da56", + "configs/ppg_rvq_64hz_04x_golden.yaml": "8df153f3cea0ea8b700f6507f9d28bcba1f61c27652a76fef93c9080e9c6e36e", + "configs/ppg_rvq_64hz_04x_golden_prior.yaml": "fe36e577d9e6f83301cd1b838a111ed9b2bd3246fa98e3af328036db40f44de7", + "configs/ppg_rvq_64hz_08x_golden.yaml": "59b87675dcbad058637d1ad86dea17452780d35e30ced081d68b17adad76baf1", + "configs/ppg_rvq_64hz_08x_golden_prior.yaml": "c1681bccfc6d3ff06687387735687e31c2d22683f4f137e3af3dbd717909cbdd", + "configs/ppg_rvq_64hz_16x_golden.yaml": "902f10f4edea20e0482d3b3616c0aca3c1a5693772d182e333e62a373d22a47c", + "configs/ppg_rvq_64hz_32x_golden.yaml": "94bf4a91a5b7d154cb510138e07dcc77ec1189e7f48a8df958f4528723782340" + } +} diff --git a/astro-site/notebook-execution-audit.json b/astro-site/notebook-execution-audit.json new file mode 100644 index 0000000..2dd95e0 --- /dev/null +++ b/astro-site/notebook-execution-audit.json @@ -0,0 +1,31 @@ +{ + "date": "2026-10-02", + "environment": "Local Linux ARM64 CPU container, Python 3.12, locked dependencies", + "command": "uv run --frozen jupyter nbconvert --to notebook --execute --ExecutePreprocessor.timeout=300 --output-dir=/tmp/ck-notebook-results examples/01_quickstart_golden_codec.ipynb examples/02_evaluate_on_your_data.ipynb examples/03_quickstart_golden_codec_ecg.ipynb", + "notebooks": [ + { + "source": "examples/01_quickstart_golden_codec.ipynb", + "sha256": "7db614615625ab25e5c654eff9510b862db338469186d06acd4a94e7b321edac", + "codeCells": 8, + "errors": 0 + }, + { + "source": "examples/02_evaluate_on_your_data.ipynb", + "sha256": "8271881efdb6267c94f3b1ec58574b0c108ebb4b83efeb0df03580d1c708af94", + "codeCells": 7, + "errors": 0 + }, + { + "source": "examples/03_quickstart_golden_codec_ecg.ipynb", + "sha256": "87552e8780c280c675bf340ea26c541c3ee323f0be71388bb37c5d6764b9947c", + "codeCells": 7, + "errors": 0 + } + ], + "limitations": [ + "Default notebook codec selections only", + "No GPU, training, hardware or population-scale evaluation", + "Executed outputs kept separate from canonical notebook sources" + ], + "additionalValidation": "Executed the getting-started codec snippet using target_cr; printed ppg 4.0 and reconstruction shape (320,)." +} diff --git a/astro-site/package-lock.json b/astro-site/package-lock.json new file mode 100644 index 0000000..b93e63a --- /dev/null +++ b/astro-site/package-lock.json @@ -0,0 +1,10208 @@ +{ + "name": "compressionkit-site", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "compressionkit-site", + "version": "0.0.0", + "dependencies": { + "@ambiqai/helia-ui": "https://codeload.github.com/AmbiqAI/helia-ui/tar.gz/a62e8d45505dd3bbcdf1c4a03dfd1ec863322ecf", + "@astrojs/markdown-remark": "^7.3.1", + "@astrojs/react": "7.0.0", + "@astrojs/starlight": "^0.41.5", + "@fontsource-variable/inter": "5.3.0", + "@types/react": "19.3.0", + "@types/react-dom": "19.3.0", + "astro": "7.3.3", + "react": "19.3.0", + "react-dom": "19.3.0", + "rehype-katex": "^7.0.1", + "rehype-mermaid": "^3.0.0", + "remark-math": "^6.0.0", + "sharp": "^0.35.3" + }, + "devDependencies": { + "@astrojs/check": "^0.9.6", + "@playwright/test": "1.63.0", + "linkedom": "0.18.13", + "typescript": "^5.9.3" + }, + "engines": { + "node": ">=24", + "npm": ">=11" + } + }, + "node_modules/@ambiqai/helia-ui": { + "version": "0.1.0-alpha.22", + "resolved": "https://codeload.github.com/AmbiqAI/helia-ui/tar.gz/a62e8d45505dd3bbcdf1c4a03dfd1ec863322ecf", + "integrity": "sha512-xd8Bc86JSkJDrY7r6HhMJ5OBPvT+XVWOYLVQNiFg40rsJdPDMXuiqOV3dlQaoilThm9EG3JDS4oCBY6YjK1uwQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@fontsource-variable/roboto": "5.3.0", + "@fortawesome/fontawesome-svg-core": "^7.3.1", + "@fortawesome/free-solid-svg-icons": "^7.3.1", + "@observablehq/plot": "^0.6.17", + "linkedom": "^0.18.13", + "shiki": "^4.3.1" + }, + "bin": { + "helia-ui-check-discoverability": "scripts/check-discoverability.mjs", + "helia-ui-check-islands": "scripts/check-islands.mjs", + "helia-ui-check-spdx": "scripts/check-spdx.mjs", + "helia-ui-check-spelling": "scripts/check-spelling.mjs", + "helia-ui-check-styles": "scripts/check-style-literals.mjs", + "helia-ui-doxyref": "scripts/doxyref.mjs", + "helia-ui-mkdocs-convert": "scripts/mkdocs-convert.mjs", + "helia-ui-notices": "scripts/third-party-notices.mjs", + "helia-ui-pyref": "scripts/pyref.mjs", + "helia-ui-serve-dist": "scripts/serve-dist.mjs", + "helia-ui-tsref": "scripts/tsref.mjs" + }, + "engines": { + "node": ">=24", + "npm": ">=11" + }, + "peerDependencies": { + "@astrojs/starlight": "^0.41.5", + "@astrojs/starlight-tailwind": "^5.0.0", + "@tailwindcss/vite": "^4.3.3", + "@tanstack/react-table": "^8.21.3", + "astro": "^7.0.2", + "class-variance-authority": "^0.7.1", + "cmdk": "^1.1.1", + "cn": "^0.3.0", + "echarts": "^6.1.0", + "lucide-react": "^1.45.0", + "radix-ui": "^1.6.7", + "react": "^19", + "react-dom": "^19", + "recharts": "^3.8.0", + "sonner": "^2.0.8", + "tailwindcss": "^4.3.3" + }, + "peerDependenciesMeta": { + "@astrojs/starlight-tailwind": { + "optional": true + }, + "@tailwindcss/vite": { + "optional": true + }, + "@tanstack/react-table": { + "optional": true + }, + "class-variance-authority": { + "optional": true + }, + "cmdk": { + "optional": true + }, + "cn": { + "optional": true + }, + "echarts": { + "optional": true + }, + "lucide-react": { + "optional": true + }, + "radix-ui": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "recharts": { + "optional": true + }, + "sonner": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@antfu/install-pkg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-2.1.0.tgz", + "integrity": "sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.8.0", + "tinyexec": "^1.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@astrojs/astro2tsx": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@astrojs/astro2tsx/-/astro2tsx-0.1.2.tgz", + "integrity": "sha512-Uj/M9zbrhu5cIZEvWAGTbQJRKSxXWJ/E59BZwt7F+chrKhbfttW+9rkS/l+1QxoJP1KU3UnpM62M7yszfAI0WA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emnapi/core": "1.11.3", + "@napi-rs/wasm-runtime": "1.2.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/check": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.10.tgz", + "integrity": "sha512-zgx/UQMozdjOa3bOxjgeCFdtpE3c9rRX6xHwa+2QXvy8z8Akifu2AtubHyv/zzC2znO8dl8fFWL4K+Ba9kS8HQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/language-server": "^2.16.7", + "chokidar": "^4.0.3", + "kleur": "^4.1.5", + "yargs": "^18.0.0" + }, + "bin": { + "astro-check": "bin/astro-check.js" + }, + "peerDependencies": { + "typescript": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/@astrojs/compiler-binding": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding/-/compiler-binding-0.4.1.tgz", + "integrity": "sha512-ZYVDW1P58OXyxqZbOMp+/2U9KA7y2esIx9r4pWdpZ/l6fCZhaw4ul+D7EgpRVxYLkyTWqzANbTTUFGPFP8zDHA==", + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@astrojs/compiler-binding-android-arm64": "0.4.1", + "@astrojs/compiler-binding-darwin-arm64": "0.4.1", + "@astrojs/compiler-binding-darwin-x64": "0.4.1", + "@astrojs/compiler-binding-linux-arm64-gnu": "0.4.1", + "@astrojs/compiler-binding-linux-arm64-musl": "0.4.1", + "@astrojs/compiler-binding-linux-x64-gnu": "0.4.1", + "@astrojs/compiler-binding-linux-x64-musl": "0.4.1", + "@astrojs/compiler-binding-wasm32-wasi": "0.4.1", + "@astrojs/compiler-binding-win32-arm64-msvc": "0.4.1", + "@astrojs/compiler-binding-win32-x64-msvc": "0.4.1" + } + }, + "node_modules/@astrojs/compiler-binding-android-arm64": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-android-arm64/-/compiler-binding-android-arm64-0.4.1.tgz", + "integrity": "sha512-Wtx2DZORuNTLASLLZ8hlrjFaJe1LUloatcCn9EPq7knBhRpjMGXeJANIJMeBZG4igvz7x+3nyAJM2iwCSW9xog==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-darwin-arm64": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-arm64/-/compiler-binding-darwin-arm64-0.4.1.tgz", + "integrity": "sha512-7iwXcU+hB60Y1SvOfnWHNioT72gDsDQKaDipXh2Onwp/TvQMozhbvhy13wJR8Af940a0h6PbddCeJFpj791UDA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-darwin-x64": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-x64/-/compiler-binding-darwin-x64-0.4.1.tgz", + "integrity": "sha512-pifjICos49RXhSVKSDu5gDB0/8j0O7DmxSp1DaWW2PyLG5ekwSkcrfOZto5JqhdI7QYMZB3XOiXpsdOXpS4npA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-arm64-gnu": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-gnu/-/compiler-binding-linux-arm64-gnu-0.4.1.tgz", + "integrity": "sha512-hsZMlNWc6LqWHh9LlSwTq1/XCY7pxA5rkkKIdZRV8mgbOz9OwLvjEoe5Jry13eIZjMUQO8XnQyzk8o/Pjw2YFA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-arm64-musl": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-musl/-/compiler-binding-linux-arm64-musl-0.4.1.tgz", + "integrity": "sha512-a3EW27f+Z9uf57vYmpLgUriA1y9wDhKz57PT8D8XlFZt2HZEWhUxKuxI1jvKVI9p8okYee11WXEm/FHY1G9yoQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-x64-gnu": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-gnu/-/compiler-binding-linux-x64-gnu-0.4.1.tgz", + "integrity": "sha512-XruPTKB/SS4DFzeAjQ1ZyM0ieHDjapHkOSnnzRApZ4FXY2YAI7UY3mETjfJiIS/acyZyrnPH5jObv1gATTdUJQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-linux-x64-musl": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-musl/-/compiler-binding-linux-x64-musl-0.4.1.tgz", + "integrity": "sha512-E8j7lGanqNpudtkUbsFaOLJhmwFe4Ecqux7K9hkj4wULIPNZRM2bYZNcMSj8r1oWvaUiwZl8LaaNwv3+14jqhw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-wasm32-wasi": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-wasm32-wasi/-/compiler-binding-wasm32-wasi-0.4.1.tgz", + "integrity": "sha512-vNLxIv41ZE+nmPFtw24cRW5ZXG+ZPcAGtgigtjCP8lvcxKI7u2GrXoMsCgEH5fMw8WCEJpwLvsVBg15rJKAkyA==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.2.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@astrojs/compiler-binding-win32-arm64-msvc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-arm64-msvc/-/compiler-binding-win32-arm64-msvc-0.4.1.tgz", + "integrity": "sha512-/xTDgRsFDoTh0/+KFXJ74DY4Jqn8CoSHwa8UP5RAblHfnRHkenwfSl4zYDET61O9vXKLk09UzHjjq09yP20/AQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-binding-win32-x64-msvc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-x64-msvc/-/compiler-binding-win32-x64-msvc-0.4.1.tgz", + "integrity": "sha512-0x5J6iHZO0Fjo/CVzoIbXKzWnGESftDbEUQ/oXQ61HhUAFoR7+T1jfToZSNAS+gYyBXHSTpMWYC7lzarbhClcg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@astrojs/compiler-rs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-rs/-/compiler-rs-0.4.1.tgz", + "integrity": "sha512-//NmAuRhy7eU9iP0ceI5Pymy55M+nUZ//kS6XeOyhBWdDib2KbJOyFaVJ52k7sDkJwTKVox7oPu3SpYiVnGm5A==", + "license": "MIT", + "dependencies": { + "@astrojs/compiler-binding": "0.4.1" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.11.0.tgz", + "integrity": "sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.4", + "@types/mdast": "^4.0.4", + "js-yaml": "^4.3.0", + "picomatch": "^4.0.4", + "retext-smartypants": "^6.2.0", + "shiki": "^4.0.2", + "smol-toml": "^1.6.0", + "unified": "^11.0.5" + } + }, + "node_modules/@astrojs/language-server": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.17.1.tgz", + "integrity": "sha512-gG7bvMVNIXgoSe1pM9dI1HsSDLU1EIc/dSAYQ0DuReLyLkOBjsiqvaRYgQltWaldLxh0bNEqjgreLfjd9OnUxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/astro2tsx": "^0.1.0", + "@astrojs/yaml2ts": "^0.2.4", + "@volar/kit": "~2.4.28", + "@volar/language-core": "~2.4.28", + "@volar/language-server": "~2.4.28", + "@volar/language-service": "~2.4.28", + "muggle-string": "^0.4.1", + "tinyglobby": "^0.2.17", + "volar-service-css": "0.0.71", + "volar-service-emmet": "0.0.71", + "volar-service-html": "0.0.71", + "volar-service-prettier": "0.0.71", + "volar-service-typescript": "0.0.71", + "volar-service-typescript-twoslash-queries": "0.0.71", + "volar-service-yaml": "0.0.71", + "vscode-html-languageservice": "^5.6.2", + "vscode-uri": "^3.2.0" + }, + "bin": { + "astro-ls": "bin/nodeServer.js" + }, + "peerDependencies": { + "prettier": "^3.0.0", + "prettier-plugin-astro": ">=0.11.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + } + } + }, + "node_modules/@astrojs/markdown-remark": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.3.1.tgz", + "integrity": "sha512-QCjsjZQl0+Cgb91+T3Ip9hyUe1r5aLm4udi584rML9YO3syupbAYE+jWpAxYg+z4lFLNUugPrylFxZ+8qFTClg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/prism": "4.0.2", + "@mdx-js/mdx": "^3.1.1", + "acorn": "^8.16.0", + "estree-util-visit": "^2.0.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-html": "^9.0.5", + "hast-util-to-text": "^4.0.2", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "source-map": "^0.7.6", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.1.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + }, + "node_modules/@astrojs/markdown-satteri": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-satteri/-/markdown-satteri-0.3.8.tgz", + "integrity": "sha512-n8ItpFTCmlDsVR5+rwDmehSf+jFCYLWmZiisZNGuF7xILqYhsVeBfcha4qgS2Seq3fAc9Tm58ZVrvqFQ6RQgRQ==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.10.4", + "@astrojs/prism": "4.0.2", + "github-slugger": "^2.0.0", + "satteri": "^0.10.3" + } + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@astrojs/internal-helpers": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.4.tgz", + "integrity": "sha512-nozZSy/mKYLqe4YrqbKtdOszedAfXYCtw3wZ0d+CAjz4GqQ4L9rl1ltIL5BlgwmYVinJg/RZ0MgGuWOdlyRZlA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.4", + "@types/mdast": "^4.0.4", + "js-yaml": "^4.3.0", + "picomatch": "^4.0.4", + "retext-smartypants": "^6.2.0", + "shiki": "^4.0.2", + "smol-toml": "^1.6.0", + "unified": "^11.0.5" + } + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@bruits/satteri-darwin-arm64": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.10.5.tgz", + "integrity": "sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@bruits/satteri-darwin-x64": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-x64/-/satteri-darwin-x64-0.10.5.tgz", + "integrity": "sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@bruits/satteri-linux-arm64-gnu": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-gnu/-/satteri-linux-arm64-gnu-0.10.5.tgz", + "integrity": "sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@bruits/satteri-linux-arm64-musl": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-musl/-/satteri-linux-arm64-musl-0.10.5.tgz", + "integrity": "sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@bruits/satteri-linux-x64-gnu": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-gnu/-/satteri-linux-x64-gnu-0.10.5.tgz", + "integrity": "sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@bruits/satteri-linux-x64-musl": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-musl/-/satteri-linux-x64-musl-0.10.5.tgz", + "integrity": "sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@bruits/satteri-wasm32-wasi": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-wasm32-wasi/-/satteri-wasm32-wasi-0.10.5.tgz", + "integrity": "sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.11.1", + "@emnapi/runtime": "1.11.1", + "@napi-rs/wasm-runtime": "^1.2.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@bruits/satteri-win32-arm64-msvc": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-arm64-msvc/-/satteri-win32-arm64-msvc-0.10.5.tgz", + "integrity": "sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@bruits/satteri-win32-x64-msvc": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-x64-msvc/-/satteri-win32-x64-msvc-0.10.5.tgz", + "integrity": "sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@astrojs/markdown-satteri/node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@astrojs/markdown-satteri/node_modules/satteri": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/satteri/-/satteri-0.10.5.tgz", + "integrity": "sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.5", + "@types/hast": "^3.0.5", + "@types/mdast": "^4.0.4", + "@types/unist": "^3.0.3" + }, + "optionalDependencies": { + "@bruits/satteri-darwin-arm64": "0.10.5", + "@bruits/satteri-darwin-x64": "0.10.5", + "@bruits/satteri-linux-arm64-gnu": "0.10.5", + "@bruits/satteri-linux-arm64-musl": "0.10.5", + "@bruits/satteri-linux-x64-gnu": "0.10.5", + "@bruits/satteri-linux-x64-musl": "0.10.5", + "@bruits/satteri-wasm32-wasi": "0.10.5", + "@bruits/satteri-win32-arm64-msvc": "0.10.5", + "@bruits/satteri-win32-x64-msvc": "0.10.5" + } + }, + "node_modules/@astrojs/mdx": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-7.0.8.tgz", + "integrity": "sha512-RNuwq2ccTSi7NX9YqlR0noaWoVdOrZuJvdfWXotAzdhMVB0b0zEMLnNU+xar7le0GwTMlTObD/QAu8jeHA/3nA==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.10.4", + "@astrojs/markdown-remark": "7.2.4", + "@mdx-js/mdx": "^3.1.1", + "acorn": "^8.16.0", + "es-module-lexer": "^2.0.0", + "estree-util-visit": "^2.0.0", + "hast-util-to-html": "^9.0.5", + "piccolore": "^0.1.3", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.1", + "remark-smartypants": "^3.0.2", + "source-map": "^0.7.6", + "unist-util-visit": "^5.1.0", + "vfile": "^6.0.3" + }, + "engines": { + "node": ">=22.12.0" + }, + "peerDependencies": { + "@astrojs/markdown-satteri": "^0.3.1", + "astro": "^7.0.0" + }, + "peerDependenciesMeta": { + "@astrojs/markdown-satteri": { + "optional": true + } + } + }, + "node_modules/@astrojs/mdx/node_modules/@astrojs/internal-helpers": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.4.tgz", + "integrity": "sha512-nozZSy/mKYLqe4YrqbKtdOszedAfXYCtw3wZ0d+CAjz4GqQ4L9rl1ltIL5BlgwmYVinJg/RZ0MgGuWOdlyRZlA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.4", + "@types/mdast": "^4.0.4", + "js-yaml": "^4.3.0", + "picomatch": "^4.0.4", + "retext-smartypants": "^6.2.0", + "shiki": "^4.0.2", + "smol-toml": "^1.6.0", + "unified": "^11.0.5" + } + }, + "node_modules/@astrojs/mdx/node_modules/@astrojs/markdown-remark": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.2.4.tgz", + "integrity": "sha512-MvspGMynWKAjTe4/lTUdmBPHIFKNVLTCF6UlyWGogTGzNrTvjD+D4n48k7h8swxsEPKHK2TwxkZO7uoaCv1Pow==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.10.4", + "@astrojs/prism": "4.0.2", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.1.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + }, + "node_modules/@astrojs/prism": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.2.tgz", + "integrity": "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==", + "license": "MIT", + "dependencies": { + "prismjs": "^1.30.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@astrojs/react": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-7.0.0.tgz", + "integrity": "sha512-BUs2jVvuUnPBA/vtp9y1PvvoYeZZtjmwphu0TJX0wSQ6xzR31/OyflQ9Gmm4rn9IRZNFObCJG7wWsZSqr4OMUA==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "@vitejs/plugin-react": "^6.1.1", + "devalue": "^5.9.4", + "ultrahtml": "^1.7.0", + "vite": "^8.3.0" + }, + "engines": { + "node": ">=22.12.0" + }, + "peerDependencies": { + "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", + "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", + "oxc-transform-react": "^0.145.0", + "react": "^17.0.2 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "oxc-transform-react": { + "optional": true + } + } + }, + "node_modules/@astrojs/sitemap": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.4.tgz", + "integrity": "sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==", + "license": "MIT", + "dependencies": { + "sitemap": "^9.0.0", + "zod": "^4.3.6" + } + }, + "node_modules/@astrojs/starlight": { + "version": "0.41.11", + "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.41.11.tgz", + "integrity": "sha512-hM95Mbsl4l60SBwaNQA/HTxpOLGfeB5EfR9qY3kr0SsAVKUspCssjO0RVBsLiPAE6EA5xuORcCoz/Q6DTX+MuQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@astrojs/markdown-satteri": "^0.3.5", + "@astrojs/mdx": "^7.0.5", + "@astrojs/sitemap": "^3.7.3", + "@pagefind/default-ui": "^1.3.0", + "@types/hast": "^3.0.4", + "@types/js-yaml": "^4.0.9", + "@types/mdast": "^4.0.4", + "astro-expressive-code": "^0.44.0", + "bcp-47": "^2.1.0", + "hast-util-from-html": "^2.0.3", + "hast-util-select": "^6.0.4", + "hast-util-to-string": "^3.0.1", + "hastscript": "^9.0.1", + "i18next": "^26.0.7", + "js-yaml": "^4.1.1", + "klona": "^2.0.6", + "magic-string": "^0.30.21", + "mdast-util-directive": "^3.1.0", + "mdast-util-to-markdown": "^2.1.2", + "mdast-util-to-string": "^4.0.0", + "pagefind": "^1.5.2", + "rehype": "^13.0.2", + "rehype-format": "^5.0.1", + "remark-directive": "^4.0.0", + "satteri": "^0.9.1", + "ultrahtml": "^1.6.0", + "unified": "^11.0.5", + "unist-util-visit": "^5.1.0", + "vfile": "^6.0.3" + }, + "peerDependencies": { + "@astrojs/markdown-remark": "^7.2.0", + "astro": "^7.0.2" + }, + "peerDependenciesMeta": { + "@astrojs/markdown-remark": { + "optional": true + } + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.3.tgz", + "integrity": "sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^4.4.0", + "dset": "^3.1.4", + "is-docker": "^4.0.0", + "package-manager-detector": "^1.6.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@astrojs/yaml2ts": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.4.tgz", + "integrity": "sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==", + "dev": true, + "license": "MIT", + "dependencies": { + "yaml": "^2.8.3" + } + }, + "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==", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.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==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", + "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", + "license": "MIT" + }, + "node_modules/@bruits/satteri-darwin-arm64": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.9.5.tgz", + "integrity": "sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@bruits/satteri-darwin-x64": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-x64/-/satteri-darwin-x64-0.9.5.tgz", + "integrity": "sha512-6T26Z5Kf3cFW2PSlk9p7zT7yVxvuBSiJvYyz9u8KjYwMTqZyIDOj2wDyNpxKV4+6yUVG7rddq2QwvG/8LJA2+Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@bruits/satteri-linux-arm64-gnu": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-gnu/-/satteri-linux-arm64-gnu-0.9.5.tgz", + "integrity": "sha512-u51id17uJwNEMK9nBlICsq6U31c+XVqQueVBkwRIzZG+gMpS8TOJctt5h5Wz33Z8xnMdTd+adtACVz0yHgGuOA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-linux-arm64-musl": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-musl/-/satteri-linux-arm64-musl-0.9.5.tgz", + "integrity": "sha512-v39HxiwGC5Rqm01HksP6+5Y+xKLPlsuVFgIgpEAo+SiQ22c+mJVhS3u7Z6ePAKdhL5NJoK1xq70kLz3L13AhpQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-linux-x64-gnu": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-gnu/-/satteri-linux-x64-gnu-0.9.5.tgz", + "integrity": "sha512-F3uO8uFp3pAP5ZGXttwvh57GS7s0lL953tnNdyI2gRyP4kOOkp6pyGojNJzCjkDvWI2Cvb9iNrKok3aqQPauAw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-linux-x64-musl": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-musl/-/satteri-linux-x64-musl-0.9.5.tgz", + "integrity": "sha512-bicEqglLlz++mWyADaZoP0JY20s4vDfLjaPYgQqC+NI4zZLTOOg1T4GB8aqtc822Pqji8SQBmSrTb7CrP8i08Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@bruits/satteri-wasm32-wasi": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-wasm32-wasi/-/satteri-wasm32-wasi-0.9.5.tgz", + "integrity": "sha512-zauAuMwfPnKPUkd4AFixRFpXdgKwP2mKgxrIIo2gJzW0/ZneF9dbHnLkojSpaBnCCp7VUL1hIi5WWZvB1CqmAQ==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.11.1", + "@emnapi/runtime": "1.11.1", + "@napi-rs/wasm-runtime": "^1.1.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@bruits/satteri-win32-arm64-msvc": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-arm64-msvc/-/satteri-win32-arm64-msvc-0.9.5.tgz", + "integrity": "sha512-SrfE7NEsgZjBvU3c+RR6oQRu0ToXY5uVJEbieXEF0YTctIV2zAVlbaMjWLts074QCgh3a+XHWkR/lWh2VH2LUg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@bruits/satteri-win32-x64-msvc": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-x64-msvc/-/satteri-win32-x64-msvc-0.9.5.tgz", + "integrity": "sha512-5Kw9ZAtTGS8WHizyn+CJhjjfIQrw+7jcZodpmpXJjefnO15M8UexIi6JR2E5thyvsmHyhL6ZDDMUNR4bKJPd4g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@capsizecss/unpack": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-4.0.1.tgz", + "integrity": "sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==", + "license": "MIT", + "dependencies": { + "fontkitten": "^1.0.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@chevrotain/types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", + "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", + "license": "Apache-2.0" + }, + "node_modules/@clack/core": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.5.1.tgz", + "integrity": "sha512-iHTrHA8MtVuLl2TfZySmcKv1qO2PoyC9Z7pfSDozEuV5vtY3/wcOPKJXlqJ5Oq2Cx5DDGQGAMVx6HZfRRoVEbQ==", + "license": "MIT", + "dependencies": { + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "node_modules/@clack/prompts": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.8.1.tgz", + "integrity": "sha512-dlT1m5e/0yUL0kRNcQn7yGLVThkgbB0Ga/1AmfDDC/8ik6AIiSf2QLQO2zPYvefsHP0aFgxO93cVLCCfDp7kzQ==", + "license": "MIT", + "dependencies": { + "@clack/core": "1.5.1", + "fast-string-width": "^3.0.2", + "fast-wrap-ansi": "^0.2.0", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 20.12.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.2.1.tgz", + "integrity": "sha512-Vh5uy9Y1JBMId6J1f68TMXnZrTCvNdo9Fu2k0d1YnJngR+sM5kWTKl441c/3TFs+cG0NWOjRWgQ/iaWhbYx+7A==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@emmetio/abbreviation": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", + "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/css-abbreviation": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz", + "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/css-parser": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.1.tgz", + "integrity": "sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emmetio/stream-reader": "^2.2.0", + "@emmetio/stream-reader-utils": "^0.1.0" + } + }, + "node_modules/@emmetio/html-matcher": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emmetio/html-matcher/-/html-matcher-1.3.0.tgz", + "integrity": "sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@emmetio/scanner": "^1.0.0" + } + }, + "node_modules/@emmetio/scanner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz", + "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emmetio/stream-reader": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz", + "integrity": "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emmetio/stream-reader-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz", + "integrity": "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz", + "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", + "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@expressive-code/core": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.44.2.tgz", + "integrity": "sha512-Yw5KonQCD1HoOO2P89y4wifqS9qrJcGVY0LkVMUsVZjhi++bhz4WwQ37inenKFNOEVo50P7cjoVsCdaVnUbq8w==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^4.0.4", + "hast-util-select": "^6.0.2", + "hast-util-to-html": "^9.0.1", + "hast-util-to-text": "^4.0.1", + "hastscript": "^9.0.0", + "postcss": "^8.4.38", + "postcss-nested": "^6.0.1", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1" + } + }, + "node_modules/@expressive-code/plugin-frames": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.44.2.tgz", + "integrity": "sha512-gVLm6TQMNIRWIaM7o+mCtxkGNjLZY5/2faSTLoXeo9wv/Pkj/0QAtZyXPVPrRsPARqiipATNFmfvQFLJudxPHQ==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.44.2" + } + }, + "node_modules/@expressive-code/plugin-shiki": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.44.2.tgz", + "integrity": "sha512-ebWIvCDzXvjyD8rH6T6DfytYJw1GoArLR4nusIAE4VxXrCQf3d+owytiv010KU/dUg+SRLZskDn0N+HaFXeuSg==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.44.2", + "shiki": "^4.0.2" + } + }, + "node_modules/@expressive-code/plugin-text-markers": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.44.2.tgz", + "integrity": "sha512-SNI7EgUSiADqbqUzzMbj1ZeC/r2pa5eg3KyFOGAd3a7EsIA4qzjXQLp+ODWQtHVDKFCdGs4J3ovSJUqvKIK96g==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.44.2" + } + }, + "node_modules/@fontsource-variable/inter": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.3.0.tgz", + "integrity": "sha512-OupL48va4JNofb97w6NYeF9S7W/kHNKM0Er8Dem5nqi4jeOLrVJDoE8tZEpnMJmtkvNbB1EIPPwHcdkF6b1oUA==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fontsource-variable/roboto": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource-variable/roboto/-/roboto-5.3.0.tgz", + "integrity": "sha512-BoaaZiQf8fgtxv07KXkTwx1bKz/EoqIlTXq2OOKKXINxp6qXWdnlChqV+hSaDANS49yyUASFl3OVBMMDTCIHFA==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.3.1.tgz", + "integrity": "sha512-k0C0sdHmZtAo6dRDtd1Z/qcpyHbL0CKsjV8seMY/21xGhY5Wsv0XRmiI/xEEH4y2c9b1+jvgNs/3EqhV27yUEA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.3.1.tgz", + "integrity": "sha512-BoxVN3PKnMbgStHhjoaky/oWdxHomDqmBVA24IA3KEmssFGeI7u9YT/BJceOjIum/t6TpPa/vcMKaVYQeIQ/3Q==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "7.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.3.1.tgz", + "integrity": "sha512-v0BLa0eqg7ubvVWeNSHVBs8fWH/GJicERZoJaxJ3FE/lj67VSqzoMg9pzfZVOfLMX10y0pGwQAuxoRVVH2patg==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "7.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.7.tgz", + "integrity": "sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^2.0.1", + "@iconify/types": "^2.0.0", + "import-meta-resolve": "^4.2.0" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.5.tgz", + "integrity": "sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.5.tgz", + "integrity": "sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", + "integrity": "sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==", + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.4.tgz", + "integrity": "sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.4.tgz", + "integrity": "sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.4.tgz", + "integrity": "sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.4.tgz", + "integrity": "sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.4.tgz", + "integrity": "sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.4.tgz", + "integrity": "sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.4.tgz", + "integrity": "sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.4.tgz", + "integrity": "sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.4.tgz", + "integrity": "sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.4.tgz", + "integrity": "sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.5.tgz", + "integrity": "sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.5.tgz", + "integrity": "sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.5.tgz", + "integrity": "sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.5.tgz", + "integrity": "sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.5.tgz", + "integrity": "sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.5.tgz", + "integrity": "sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.5.tgz", + "integrity": "sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.5.tgz", + "integrity": "sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", + "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", + "integrity": "sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.5.tgz", + "integrity": "sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.5.tgz", + "integrity": "sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.5.tgz", + "integrity": "sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mermaid-js/parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.2.1.tgz", + "integrity": "sha512-n12NohV3mrUyUL2o93IgG/ifeW9FTyeJn3zDxkhwa8MJ9Fxg3HQMlA3RiGmD/3UnJvheztkjjQAjA2T4LmUcpw==", + "license": "MIT", + "dependencies": { + "@chevrotain/types": "~11.1.2" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz", + "integrity": "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=23.5.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" + } + }, + "node_modules/@observablehq/plot": { + "version": "0.6.17", + "resolved": "https://registry.npmjs.org/@observablehq/plot/-/plot-0.6.17.tgz", + "integrity": "sha512-/qaXP/7mc4MUS0s4cPPFASDRjtsWp85/TbfsciqDgU1HwYixbSbbytNuInD8AcTYC3xaxACgVX06agdfQy9W+g==", + "license": "ISC", + "dependencies": { + "d3": "^7.9.0", + "interval-tree-1d": "^1.0.0", + "isoformat": "^0.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" + }, + "node_modules/@oxc-project/types": { + "version": "0.151.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.151.0.tgz", + "integrity": "sha512-J1yXrIlNDZVzE3ada310xeAw7nH8yCAyLPuUIsjKatFPmfn5bS1oW+cM+QsGOtVWd5nhSpbwZWx/rue+r5Z+PA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/oxc-project" + } + }, + "node_modules/@pagefind/darwin-arm64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.5.2.tgz", + "integrity": "sha512-MXpI+7HsAdPkvJ0gk9xj9g541BCqBZOBbdwj9g6lB5LCj6kSV6nqDSjzcAJwvOsfu0fjwvC8hQU+ecfhp+MpiQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/darwin-x64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.5.2.tgz", + "integrity": "sha512-IojxFWMEJe0RQ7PQ3KXQsPIImNsbpPYpoZ+QUDrL8fAl/O27IX+LVLs74/UzEZy5uA2LD8Nz1AiwKr72vrkZQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/default-ui": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.5.2.tgz", + "integrity": "sha512-pm1LMnQg8N2B3n2TnjKlhaFihpz6zTiA4HiGQ6/slKO/+8K9CAU5kcjdSSPgpuk1PMuuN4hxLipUIifnrkl3Sg==", + "license": "MIT" + }, + "node_modules/@pagefind/freebsd-x64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/freebsd-x64/-/freebsd-x64-1.5.2.tgz", + "integrity": "sha512-7EVzo9+0w+2cbe671BtMj10UlNo83I+HrLVLfRxO731svHRJKUfJ/mo05gU14pe9PCfpKNQT8FS3Xc/oDN6pOA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@pagefind/linux-arm64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.5.2.tgz", + "integrity": "sha512-Ovt9+K35sqzn8H3ZMXGwls4TD/wMJuvRtShHIsmUQREmaxjrDEX7gHckRCrwYJ4XE1H1p6HkLz3wukrAnsfXQw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/linux-x64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.5.2.tgz", + "integrity": "sha512-V+tFqHKXhQKq/WqPBD67AFy7scn1/aZID00ws4fSDd+1daSi5UHR9VVlRrOUYKxn3VuFQYRD7lYXdZK1WED1YA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/windows-arm64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/windows-arm64/-/windows-arm64-1.5.2.tgz", + "integrity": "sha512-hN9Nh90fNW61nNRCW9ZyQrAj/mD0eRvmJ8NlTUzkbuW8kIzGJUi3cxjFkEcMZ5h/8FsKWD/VcouZl4yo1F7B6g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@pagefind/windows-x64": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.5.2.tgz", + "integrity": "sha512-Fa2Iyw7kaDRzGMfNYNUXNW2zbL5FQVDgSOcbDHdzBrDEdpqOqg8TcZ68F22ol6NJ9IGzvUdmeyZypLW5dyhqsg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@playwright/test": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.63.0.tgz", + "integrity": "sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.63.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.11.tgz", + "integrity": "sha512-A5kXfGKvKWWZE0TtPrfsvT+q4Y5d1QG8gGUzpYjGydM+fARM9MuX90PrXYXe0XbsDVgyxxNzHo6giCj90bsFNw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.11.tgz", + "integrity": "sha512-z6cTycz+iJ4PVkuL4HHW4DfTfoeU/2nqYYuSOrTmH7yHK5Y0LCOnA03V4ZNxavyVaU1oOqUgIg2klN/s+USGOA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.11.tgz", + "integrity": "sha512-jShvqNtP6vDC6/A5JOAzbVV+DkgHqhl/ScVCJEbt+TUY6QYz7YnXcrg3sLtFBniro0f/Ld50ZwCWA6f7KYD1nQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.11.tgz", + "integrity": "sha512-f2i2xiNWq1Z1l2++q2fuhZRdLAT3aqxD6vRNm1RAxpUoBcdqNB3C0s1Bt+K+PbEx2F5F4gQp6hqKkphCY/xF9w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.11.tgz", + "integrity": "sha512-4Ir5FSOKIAMr4r0kExpt1s3bMgzJU3rA45AYOHtQpls0oNeqcYBKrWMlckrYH4KCfGLfkfn1tN1dmZPMVsdXow==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.11.tgz", + "integrity": "sha512-/gnRDM+39BROzAN/k1OZjDPnDMcZxB/0EUxKjONO5yVkNEvlsoMDrxGNKgZi/ttFriS2gwlDNzB65pvNbFOXIQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.11.tgz", + "integrity": "sha512-PFaK8HwvAHbaKbBcDNQihjMKYvFnA5hiENx/l5tphTDz1E0WFp32l0A7aq7lyUwGsRw/xSrNIy/gIK4thrSCrw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.11.tgz", + "integrity": "sha512-AskzJUIKRLPxkruR1wLKewGbOw+EYfU/9lOrBFj4AFrEA8hPpKFnODWNu2WLaNs0QNkEb9QIJufmVZZIL/bJlg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.11.tgz", + "integrity": "sha512-qlUGAheh2yh8afH7QBgx0PrRHN85hKnNd78x8MeMhXivuevgd8vgf6/CstOzmNKY/lLTHvNTrPy98cLnAugzJw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.11.tgz", + "integrity": "sha512-secpEad+0vCbSfn8upFySkDskv+bGPk3THSDS9Y89yc4rb4kzqHp8Dmyd9BkQW4SnhNXBZCl/6CrO//hZahNJQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.11.tgz", + "integrity": "sha512-mOVBT3dPpkWm8XBWPmU4bf+U6dYDLeMo/9ojUmis4N0L5uu10qra5vOyngZ7/PSdoE4G9KvRt4bloRxNjLas7A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.11.tgz", + "integrity": "sha512-Is78i9A8Ui4SqcxUwFJ9uMmjDn58IbVTjFWYdQestFEgeuEmHMLGNriXnVJKkwG2YiZjw8cP0zCTyDMdDGtOOg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.11.tgz", + "integrity": "sha512-dUCXneZ87INUMyQ0D+C0HrEBNUPNXHaPmU5GTjyKTJEiussw9Kaj5Ln8UztPe4epV/ffvgNBEadksdYhmW6xJA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.11.tgz", + "integrity": "sha512-jByxb6qfd+bH1xUd0qnfFnb17i9sWBPY2tOavJ0l3tdr3OTu+Kvtm8cd/JV5nFt657b1VqGltxg9olOEfofXWw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.11.tgz", + "integrity": "sha512-/PzKqzAJ03i19oy2ItPvyvaVjOjBCNnfaJs8yvUdGBKmiESgnrJSQ2awd81QzFbbnAmu7YO9ZnJrDCb9VSJPRA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "license": "MIT" + }, + "node_modules/@shikijs/core": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.4.3.tgz", + "integrity": "sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==", + "license": "MIT", + "dependencies": { + "@shikijs/primitive": "4.4.3", + "@shikijs/types": "4.4.3", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5", + "hast-util-to-html": "^9.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.4.3.tgz", + "integrity": "sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.4.3", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.6" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.4.3.tgz", + "integrity": "sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.4.3", + "@shikijs/vscode-textmate": "^10.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/langs": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.4.3.tgz", + "integrity": "sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.4.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/primitive": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.4.3.tgz", + "integrity": "sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.4.3", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/themes": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.4.3.tgz", + "integrity": "sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.4.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/types": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.4.3.tgz", + "integrity": "sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.4.tgz", + "integrity": "sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-65Emv9fQiQQqphLlRkuQ5ypPsOmWPhtBGCMv61JDPEPMvsx+gzhGf74yw1a78xFKPj6zw4AgQICJoQv0vK9M2w==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.4.tgz", + "integrity": "sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.12.tgz", + "integrity": "sha512-Qe/KWYhEiIIxGs7HrAAjMfShxKldx19SJtr5zu53f3afPsdZNz7HHtdTLXo/kqeiWNXVycI24kSnfzBYkTzpgw==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-kVd74ta9eof3eJOvbNd1vGKS/XERRyQbT26Og63hIsvDO84cjD5gEOhsXf26w3FSoNlPVz84DOFcKv/oou+fMw==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.9.tgz", + "integrity": "sha512-0sE1406XBYJGiqD3AusTl9ZqC//2mIXix51tbom25gDCA8ri4xnSZg28CaSE8Srl6FClqABUKfsn0qghgdepMA==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", + "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", + "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.14.tgz", + "integrity": "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "24.19.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.19.0.tgz", + "integrity": "sha512-zY+5tKxXdhGh1PYI0ac+7juvEu4OI6vWtVVoj5i2m42jxAY1U+zHGt6QCyOFwykdP62sM3MJ9stoYYUw5aCWew==", + "license": "MIT", + "dependencies": { + "undici-types": ">=7.24.0 <7.24.7" + } + }, + "node_modules/@types/react": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.3.0.tgz", + "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "^19.3.0" + } + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.4.0.tgz", + "integrity": "sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==", + "license": "ISC" + }, + "node_modules/@upsetjs/venn.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz", + "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==", + "license": "MIT", + "optionalDependencies": { + "d3-selection": "^3.0.0", + "d3-transition": "^3.0.1" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.1.1.tgz", + "integrity": "sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==", + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.0.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "oxc-transform-react": "^0.145.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "oxc-transform-react": { + "optional": true + } + } + }, + "node_modules/@volar/kit": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.28.tgz", + "integrity": "sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-service": "2.4.28", + "@volar/typescript": "2.4.28", + "typesafe-path": "^0.2.2", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz", + "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.28" + } + }, + "node_modules/@volar/language-server": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.28.tgz", + "integrity": "sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "@volar/language-service": "2.4.28", + "@volar/typescript": "2.4.28", + "path-browserify": "^1.0.1", + "request-light": "^0.7.0", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@volar/language-service": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.28.tgz", + "integrity": "sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz", + "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.28.tgz", + "integrity": "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.28", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vscode/emmet-helper": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.11.0.tgz", + "integrity": "sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "emmet": "^2.4.3", + "jsonc-parser": "^2.3.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vscode/emmet-helper/node_modules/jsonc-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", + "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vscode/l10n": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", + "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", + "dev": true, + "license": "MIT" + }, + "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", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "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", + "peer": true, + "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-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-i18n": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ajv-i18n/-/ajv-i18n-4.2.0.tgz", + "integrity": "sha512-v/ei2UkCEeuKNXh8RToiFsUclmU+G57LO1Oo22OagNMENIw+Yb8eMwvHu7Vn9fmkjJyv6XclhJ8TbuigSglPkg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.0.0-beta.0" + } + }, + "node_modules/am-i-vibing": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/am-i-vibing/-/am-i-vibing-0.4.0.tgz", + "integrity": "sha512-MxT4XZL7pzLHpuvhDKdMaQHMGGkJDLluKBLsbstn+8wv9sWcFT6h+0ve9qkml95amVTZtZV83gQe2hY+ojgHLg==", + "license": "MIT", + "dependencies": { + "process-ancestry": "^0.1.0" + }, + "bin": { + "am-i-vibing": "dist/cli.mjs" + } + }, + "node_modules/ansi-regex": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz", + "integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "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==", + "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==", + "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==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/astro": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/astro/-/astro-7.3.3.tgz", + "integrity": "sha512-NF08hk3edFkVmr9avf9HW/rQyf6NrpbVDyYj2cVN3JfijDhfJYh1ivWVTY5PUd5+rRZn/Vtu4iaeyNlP0Iv6mg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@astrojs/compiler-rs": "^0.4.0", + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/markdown-satteri": "0.4.1", + "@astrojs/telemetry": "3.3.3", + "@capsizecss/unpack": "^4.0.0", + "@clack/prompts": "^1.1.0", + "@oslojs/encoding": "^1.1.0", + "am-i-vibing": "^0.4.0", + "aria-query": "^5.3.2", + "axobject-query": "^4.1.0", + "ci-info": "^4.4.0", + "clsx": "^2.1.1", + "common-ancestor-path": "^2.0.0", + "cookie": "^2.0.1", + "devalue": "^5.8.1", + "diff": "^9.0.0", + "dset": "^3.1.4", + "es-module-lexer": "^2.0.0", + "esbuild": "^0.28.0", + "find-proc": "0.2.0", + "flattie": "^1.1.1", + "fontace": "~0.4.1", + "get-tsconfig": "5.0.0-beta.4", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.2.0", + "js-yaml": "^4.3.0", + "jsonc-parser": "^3.3.1", + "magic-string": "^1.0.0", + "magicast": "^0.5.2", + "mrmime": "^2.0.1", + "neotraverse": "^1.0.1", + "obug": "^2.1.1", + "p-limit": "^7.3.0", + "p-queue": "^9.1.0", + "package-manager-detector": "^1.6.0", + "piccolore": "^0.1.3", + "picomatch": "^4.0.4", + "shiki": "^4.0.2", + "smol-toml": "^1.6.0", + "svgo": "^4.0.2", + "tinyclip": "^0.1.12", + "tinyexec": "^1.0.4", + "tinyglobby": "^0.2.15", + "ultrahtml": "^1.6.0", + "unifont": "~0.7.5", + "unstorage": "^1.17.5", + "verkit": "^0.4.0", + "vite": "^8.0.13", + "vitefu": "^1.1.2", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^22.0.0", + "zod": "^4.5.4" + }, + "bin": { + "astro": "bin/astro.mjs" + }, + "engines": { + "node": ">=22.12.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, + "optionalDependencies": { + "sharp": "^0.35.4" + }, + "peerDependencies": { + "@astrojs/markdown-remark": "^7.3.0" + }, + "peerDependenciesMeta": { + "@astrojs/markdown-remark": { + "optional": true + } + } + }, + "node_modules/astro-expressive-code": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.44.2.tgz", + "integrity": "sha512-avop7nZcRwC7quvIxVguhwEZ9Tp6IoTzKUCLwP30Fb7+er+pWQgcysP01dcuzRIJo81kLGg30q/YAI2Yb1Sdzg==", + "license": "MIT", + "dependencies": { + "rehype-expressive-code": "^0.44.2", + "url-extras": "^0.1.0" + }, + "peerDependencies": { + "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0" + } + }, + "node_modules/astro/node_modules/@astrojs/markdown-satteri": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-satteri/-/markdown-satteri-0.4.1.tgz", + "integrity": "sha512-EniHbFNa6SQHDih7JnpPos3NWXO6hdt4raBcOosfGmlfc3gP9CI/sESA3VOf1PgJZ7SFfewlZW9Livn0JugEZg==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/prism": "4.0.2", + "github-slugger": "^2.0.0", + "satteri": "^0.10.3" + } + }, + "node_modules/astro/node_modules/@bruits/satteri-darwin-arm64": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.10.5.tgz", + "integrity": "sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/astro/node_modules/@bruits/satteri-darwin-x64": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-x64/-/satteri-darwin-x64-0.10.5.tgz", + "integrity": "sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/astro/node_modules/@bruits/satteri-linux-arm64-gnu": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-gnu/-/satteri-linux-arm64-gnu-0.10.5.tgz", + "integrity": "sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/astro/node_modules/@bruits/satteri-linux-arm64-musl": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-musl/-/satteri-linux-arm64-musl-0.10.5.tgz", + "integrity": "sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/astro/node_modules/@bruits/satteri-linux-x64-gnu": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-gnu/-/satteri-linux-x64-gnu-0.10.5.tgz", + "integrity": "sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/astro/node_modules/@bruits/satteri-linux-x64-musl": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-musl/-/satteri-linux-x64-musl-0.10.5.tgz", + "integrity": "sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/astro/node_modules/@bruits/satteri-wasm32-wasi": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-wasm32-wasi/-/satteri-wasm32-wasi-0.10.5.tgz", + "integrity": "sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.11.1", + "@emnapi/runtime": "1.11.1", + "@napi-rs/wasm-runtime": "^1.2.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/astro/node_modules/@bruits/satteri-win32-arm64-msvc": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-arm64-msvc/-/satteri-win32-arm64-msvc-0.10.5.tgz", + "integrity": "sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/astro/node_modules/@bruits/satteri-win32-x64-msvc": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-x64-msvc/-/satteri-win32-x64-msvc-0.10.5.tgz", + "integrity": "sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/astro/node_modules/@emnapi/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/astro/node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/astro/node_modules/@emnapi/wasi-threads": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/astro/node_modules/magic-string": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.2.tgz", + "integrity": "sha512-vG+rjFRj1PqdIBozIxAGMjPlOhaVe+GXpbttY/iSK7rGcJRMlwNJO7dcUwmUqkymsFLJiNGI06t4D7Fr7yRC9g==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.6.0" + } + }, + "node_modules/astro/node_modules/satteri": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/satteri/-/satteri-0.10.5.tgz", + "integrity": "sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.5", + "@types/hast": "^3.0.5", + "@types/mdast": "^4.0.4", + "@types/unist": "^3.0.3" + }, + "optionalDependencies": { + "@bruits/satteri-darwin-arm64": "0.10.5", + "@bruits/satteri-darwin-x64": "0.10.5", + "@bruits/satteri-linux-arm64-gnu": "0.10.5", + "@bruits/satteri-linux-arm64-musl": "0.10.5", + "@bruits/satteri-linux-x64-gnu": "0.10.5", + "@bruits/satteri-linux-x64-musl": "0.10.5", + "@bruits/satteri-wasm32-wasi": "0.10.5", + "@bruits/satteri-win32-arm64-msvc": "0.10.5", + "@bruits/satteri-win32-x64-msvc": "0.10.5" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.1.tgz", + "integrity": "sha512-KLw+H/gd2p4zly1X7Yh/qziuyae5/w/QFnvTng9eZL5fvszL7Whl3MBoWF8yxL7ksUjBfOD+OxkytiqbBpG+Fw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/binary-search-bounds": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-2.0.5.tgz", + "integrity": "sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==", + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-2.0.0.tgz", + "integrity": "sha512-DkVaaQHymRhpYEYo9x1oo7Q7B0Y6KJUsjm3c9eTyFDby4MHLBTwZ6ZDWBel5zrYxj1WsZgC5oLpiz+93MluXeA==", + "license": "ISC", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/common-ancestor-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-2.0.0.tgz", + "integrity": "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">= 18" + } + }, + "node_modules/cookie": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-2.0.1.tgz", + "integrity": "sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==", + "license": "MIT", + "engines": { + "node": ">=22" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cookie-es": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz", + "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==", + "license": "MIT" + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-select": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-7.0.0.tgz", + "integrity": "sha512-snmjEVXy+1LnwXdxhYvTMj1d9tOh4HxkA1YmoayVBeeyR2C14Pum7fcxJIm4SswYspVy866eYNwlH6xC3/VH5g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^2.0.0", + "css-what": "^8.0.0", + "domhandler": "^6.0.1", + "domutils": "^4.0.2", + "nth-check": "^3.0.1" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select/node_modules/nth-check": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-3.0.1.tgz", + "integrity": "sha512-GX0gsdbGVCgnRgbeGaubfjpBXyYRWOOCVeYh08bSQvDZqxz5ndXs1OTfAt/h36G1xvI94YIspsI0sVFqAV9+RQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^2.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/css-selector-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.3.0.tgz", + "integrity": "sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "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": "8.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-8.0.0.tgz", + "integrity": "sha512-DH0Bqq3DNp5tdOReuNyAA+Ev4Y2GS5FMbZpeTLP6C4CDi0h5nL0BmUPChXw3o/qbHLDWHl49sbNqQVY7bMSDdw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + }, + "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==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/cytoscape": { + "version": "3.34.3", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.34.3.tgz", + "integrity": "sha512-yfYGhRcGAntq6YBD583j4n0Eg3jIxvWmZtz/5uz9UYkeIStSlMxuUja+ec5j3iBD8nv1rwaOAYMW09tBdkSeaQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz", + "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } + }, + "node_modules/dayjs": { + "version": "1.11.23", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz", + "integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "license": "MIT" + }, + "node_modules/delaunator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", + "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.9.4.tgz", + "integrity": "sha512-sPAT4pztbu6586/hrhOnMKS17IJrvg12mXiSPSS3W5qDeN2RGgvZ0diZCm31dBbnevfVmujNO3IM2wrS4Y2Rhg==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "license": "MIT", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dom-serializer": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-3.1.1.tgz", + "integrity": "sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==", + "license": "MIT", + "dependencies": { + "domelementtype": "^3.0.0", + "domhandler": "^6.0.0", + "entities": "^8.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-3.0.0.tgz", + "integrity": "sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/domhandler": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-6.0.1.tgz", + "integrity": "sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^3.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.4.16", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.16.tgz", + "integrity": "sha512-sqo+pNp3qRhCIpbgRi1y8Tgk27Bo2Ry7w0dC1NBeNTdZChWjz9Xb/KOoZbRP/R6pQZ80Qw8YhXw13hWWBbMRnQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/domutils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-4.0.2.tgz", + "integrity": "sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^3.0.0", + "domelementtype": "^3.0.0", + "domhandler": "^6.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/emmet": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz", + "integrity": "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==", + "dev": true, + "license": "MIT", + "workspaces": [ + "./packages/scanner", + "./packages/abbreviation", + "./packages/css-abbreviation", + "./" + ], + "dependencies": { + "@emmetio/abbreviation": "^2.3.3", + "@emmetio/css-abbreviation": "^2.1.8" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz", + "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/es-toolkit": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.52.0.tgz", + "integrity": "sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks", + "tests/types", + "tests/browser-compat" + ] + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esbuild": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" + } + }, + "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-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.1.tgz", + "integrity": "sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/expressive-code": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.44.2.tgz", + "integrity": "sha512-MLNghkvhyFgVW4oCD5DxBuYnnTXIf0PygzGmfT6OZeOOYWh/D4sH1j931biElkA5RG/J9wY/iuSMGAPF5vzHOg==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.44.2", + "@expressive-code/plugin-frames": "^0.44.2", + "@expressive-code/plugin-shiki": "^0.44.2", + "@expressive-code/plugin-text-markers": "^0.44.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "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-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==", + "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==", + "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==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "node_modules/fastdom": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastdom/-/fastdom-1.0.12.tgz", + "integrity": "sha512-LB+xjSTEbjHE1cWsxu+tN2Xqr1kpi+V9aADI7sVM5ZMaXyYGPHULQMzpJMYqOTULK/73pUkWVzzObFRBkPr+hg==", + "license": "MIT", + "dependencies": { + "strictdom": "^1.0.1" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/find-proc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/find-proc/-/find-proc-0.2.0.tgz", + "integrity": "sha512-a6h2nTrgB3g5Wrn4au9Ux4kMk7IJtyF6oA8uGn+mk3weLZssUtc1cp6meHIzzuW2o1srrBAxzkmXLbqjRkgB6w==", + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fontace": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.1.tgz", + "integrity": "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==", + "license": "MIT", + "dependencies": { + "fontkitten": "^1.0.2" + } + }, + "node_modules/fontkitten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.3.tgz", + "integrity": "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==", + "license": "MIT", + "dependencies": { + "tiny-inflate": "^1.0.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.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-tsconfig": { + "version": "5.0.0-beta.4", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-5.0.0-beta.4.tgz", + "integrity": "sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "engines": { + "node": ">=20.20.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/h3": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz", + "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.3", + "crossws": "^0.3.5", + "defu": "^6.1.6", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" + }, + "node_modules/hast-util-embedded": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", + "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-format": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-format/-/hast-util-format-1.1.0.tgz", + "integrity": "sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-minify-whitespace": "^1.0.0", + "hast-util-phrasing": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "html-whitespace-sensitive-tag-names": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-dom": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", + "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", + "license": "ISC", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^9.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-body-ok-link": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", + "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-minify-whitespace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", + "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-is-body-ok-link": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", + "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "nth-check": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-whitespace-sensitive-tag-names": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz", + "integrity": "sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "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/htmlparser2/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==", + "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/htmlparser2/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==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/htmlparser2/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/htmlparser2/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/htmlparser2/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==", + "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/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/i18next": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.4.2.tgz", + "integrity": "sha512-RX+R0VLg13IbvRuJSxnqykUFS9vQZTl8wYpWPCIUDWVrSGjsQywB5Y+pjzrkboxGAuYfJZVH1InFTdgBdxq6ug==", + "funding": [ + { + "type": "individual", + "url": "https://www.locize.com/i18next" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + }, + { + "type": "individual", + "url": "https://www.locize.com" + } + ], + "license": "MIT", + "peerDependencies": { + "typescript": "^5 || ^6 || ^7" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "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==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/interval-tree-1d": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/interval-tree-1d/-/interval-tree-1d-1.0.4.tgz", + "integrity": "sha512-wY8QJH+6wNI0uh4pDQzMvl+478Qh7Rl4qLmqiluxALlNvl+I+o5x38Pw3/z7mDPTPS1dQalZJXsmbvxx5gclhQ==", + "license": "MIT", + "dependencies": { + "binary-search-bounds": "^2.0.0" + } + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-4.0.0.tgz", + "integrity": "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isoformat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/isoformat/-/isoformat-0.2.1.tgz", + "integrity": "sha512-tFLRAygk9NqrRPhJSnNGh7g7oaVWDwR0wKh/GM2LgmPa50Eg4UfyaCO4I8k6EqJHl1/uh2RAD6g06n5ygEnrjQ==", + "license": "ISC" + }, + "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==", + "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/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/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==", + "license": "MIT" + }, + "node_modules/katex": { + "version": "0.16.47", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz", + "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/linkedom": { + "version": "0.18.13", + "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.18.13.tgz", + "integrity": "sha512-ES/o9qotMpzpN2MHs+Iq/JcVoOj8Fa5wiQYrTdFpvAnwXL0g66XHHUc9WUMk6nAlBtGsFQ24ne+SYnvnaQ2FSw==", + "license": "ISC", + "dependencies": { + "css-select": "^7.0.0", + "cssom": "^0.5.0", + "html-escaper": "^3.0.3", + "htmlparser2": "^10.1.0", + "uhyphen": "^0.2.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "canvas": ">= 2" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/lodash-es": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.5.tgz", + "integrity": "sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "source-map-js": "^1.2.1" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/mdast-util-definitions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", + "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.1.tgz", + "integrity": "sha512-OuJHqvr455pwu2OaOrir7dbzqs4jlWKOtlu9L6GjcIjjQwNyw02VntQsr/Ek6/A13vgnXfUhBekWRUP1OkNivw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", + "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "longest-streak": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.1.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.3.tgz", + "integrity": "sha512-wgyJtgUkUcdU7zci7uuwc/tzoAhm0TswWhaXuvnWolqug+8jY7bgNkBBL0dYBnHgc/tHL7lCzRdPsdUxUKKBqw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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/mermaid": { + "version": "11.17.2", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.17.2.tgz", + "integrity": "sha512-V6K3C8EBdEsPFZXSKMJe6ppQOENxuHARr9GvHX4hh47lAbhMRD9qf4oEK7LoaRQxULMa80/qt5gHO73aCleBBg==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.1.2", + "@iconify/utils": "^3.0.2", + "@mermaid-js/parser": "^1.2.1", + "@types/d3": "^7.4.3", + "@upsetjs/venn.js": "^2.0.0", + "cytoscape": "^3.34.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.14", + "dayjs": "^1.11.21", + "dompurify": "^3.3.3", + "es-toolkit": "^1.45.1", + "fastdom": "1.0.12", + "katex": "^0.16.47", + "khroma": "^2.1.0", + "marked": "^16.3.0", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" + } + }, + "node_modules/mermaid-isomorphic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mermaid-isomorphic/-/mermaid-isomorphic-3.1.0.tgz", + "integrity": "sha512-mzrvfEVjnJIkJlEqxp3eMuR1wS0TeLCH1VK5E/T5yzWaBwI3JqjJuw70yUIThSCDJ5bRs6O3rgfp00oBAbvSeQ==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-free": "^6.0.0", + "katex": "^0.16.0", + "mermaid": "^11.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "playwright": "1" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + } + } + }, + "node_modules/micromark": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.3.tgz", + "integrity": "sha512-oGYfQzHSG5dOMovQcJ3fyTmZlWAWpi0XA0sJwJs+i6OT88o1+Jtw/8z0CmdowSLxGhhFK89rQ/oXph/wN02PNw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-edit-map": "^1.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.4.tgz", + "integrity": "sha512-wxEeE8v8XVvOrxn1TZj74qYhAtTQsSqufHVS3uNVyT1MupXxhyaHk8/9xDNPh9BmL77QNDgWTkZ3RsYHB2ry7w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.1.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-edit-map": "^1.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.3" + } + }, + "node_modules/micromark-extension-directive": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz", + "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.2.tgz", + "integrity": "sha512-pRzm4kDTu0MjlmBkxmS9yYhw60nncfcEwu9NNdPFSQEFXS95ZKyIIyTSHu/o3ReBUrLKYEq+7YaXCRn/bPB4MA==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.1.0.tgz", + "integrity": "sha512-fS8hnLIjnjvdQIj39Geug8wWsR0HrYZ43KShKxNfwT7t2LOHo/LbWZEzEaSOjwtjdCsjoE6syHhonEzW0zv0+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-edit-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-edit-map/-/micromark-util-edit-map-1.0.0.tgz", + "integrity": "sha512-Pa2ljlsEL6sVwFaYeyrOLSYbQt73JvGbPOYFq+9AElXiSnfI5Q4465RRZ1sHv7lDjDOnGRDDaqPXqClqWK/q1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.3.tgz", + "integrity": "sha512-oxB2Ik03hI0gv+VNn9tnh1t1YEe9MDPptViAEgfdf3YQHsn0pzGTgCdlSCJXcwhqm8phaEuM7zeEu3QQzVBrPg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "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==", + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true, + "license": "MIT" + }, + "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==", + "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/neotraverse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-1.0.1.tgz", + "integrity": "sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-mock-http": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.5.tgz", + "integrity": "sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==", + "license": "MIT" + }, + "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==", + "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==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nth-check/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==", + "license": "ISC" + }, + "node_modules/obug": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.2.1.tgz", + "integrity": "sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==", + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/ohash": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.12.tgz", + "integrity": "sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==", + "license": "MIT" + }, + "node_modules/oniguruma-parser": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz", + "integrity": "sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz", + "integrity": "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==", + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.2", + "regex": "^6.1.0", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/p-limit": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.3.tgz", + "integrity": "sha512-SKgVvDU5TNIxQ4r30U75BNLC6a+6GOEjngrk/ysM5+Zu3oJuk1SC5ApzIzY/7PjCEjoVPMWJ0zho/4QUiEB7TQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.2.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.3.3.tgz", + "integrity": "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.4", + "p-timeout": "^7.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.2.tgz", + "integrity": "sha512-prbX4Z3YszrFNgH+MW5Zoeq3baXrMtP/MQnFeET90UB/GtGcGDQ5Usg9OCy6ETjTTntOw1SL2z9fMPUppN3Guw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.8.0.tgz", + "integrity": "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==", + "license": "MIT" + }, + "node_modules/pagefind": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.5.2.tgz", + "integrity": "sha512-XTUaK0hXMCu2jszWE584JGQT7y284TmMV9l/HX3rnG5uo3rHI/uHU56XTyyyPFjeWEBxECbAi0CaFDJOONtG0Q==", + "license": "MIT", + "bin": { + "pagefind": "lib/runner/bin.cjs" + }, + "optionalDependencies": { + "@pagefind/darwin-arm64": "1.5.2", + "@pagefind/darwin-x64": "1.5.2", + "@pagefind/freebsd-x64": "1.5.2", + "@pagefind/linux-arm64": "1.5.2", + "@pagefind/linux-x64": "1.5.2", + "@pagefind/windows-arm64": "1.5.2", + "@pagefind/windows-x64": "1.5.2" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" + }, + "node_modules/piccolore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", + "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==", + "license": "ISC" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz", + "integrity": "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==", + "devOptional": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "playwright-core": "1.63.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright-core": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz", + "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.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==", + "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", + "peer": true, + "dependencies": { + "nanoid": "^3.3.18", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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==", + "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-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==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.9.tgz", + "integrity": "sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-ancestry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/process-ancestry/-/process-ancestry-0.1.0.tgz", + "integrity": "sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/property-information": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", + "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" + }, + "node_modules/react": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", + "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.28.0" + }, + "peerDependencies": { + "react": "^19.3.0" + } + }, + "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/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/rehype": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-expressive-code": { + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.44.2.tgz", + "integrity": "sha512-jvjQpsfWKBquDrEl5YQA3CJybRRIuDOYsui1BJTs5oKDUK8pPkJSSxY8FjxNlIFIdtgrTjC1zuahuY4Cc1j9SQ==", + "license": "MIT", + "dependencies": { + "expressive-code": "^0.44.2" + } + }, + "node_modules/rehype-format": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-5.0.1.tgz", + "integrity": "sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-format": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-katex": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", + "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/katex": "^0.16.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "katex": "^0.16.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-mermaid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-mermaid/-/rehype-mermaid-3.0.0.tgz", + "integrity": "sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "mermaid-isomorphic": "^3.0.0", + "mini-svg-data-uri": "^1.0.0", + "space-separated-tokens": "^2.0.0", + "unified": "^11.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "playwright": "1" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + } + } + }, + "node_modules/rehype-parse": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-directive": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-4.0.0.tgz", + "integrity": "sha512-7sxn4RfF1o3izevPV1DheyGDD6X4c9hrGpfdUpm7uC++dqrnJxIZVkk7CoKqcLm0VUMAuOol7Mno3m6g8cfMuA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-math": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", + "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-math": "^3.0.0", + "micromark-extension-math": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.3.tgz", + "integrity": "sha512-gCaK+ndZ0hYezlqFegHFCVh2CQemsi0Npdh1qVM9bxlUFknjkbP6VmojWhddOCrbK0PbbacmYLWfTULRiT1eWA==", + "license": "MIT", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/request-light": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz", + "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==", + "dev": true, + "license": "MIT" + }, + "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/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/retext": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", + "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==", + "license": "Unlicense" + }, + "node_modules/rolldown": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.11.tgz", + "integrity": "sha512-qpSwIyz0jHQq5qXBTNxFmE6664rJ7O+4TvPFOiOaBSrz8IOHc1koKKSqTM2H6u1UG1+TveuC6vaDHKXFOvb1Kw==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.151.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm-eabi": "1.2.11", + "@rolldown/binding-android-arm64": "1.2.11", + "@rolldown/binding-darwin-arm64": "1.2.11", + "@rolldown/binding-darwin-x64": "1.2.11", + "@rolldown/binding-freebsd-x64": "1.2.11", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.11", + "@rolldown/binding-linux-arm64-gnu": "1.2.11", + "@rolldown/binding-linux-arm64-musl": "1.2.11", + "@rolldown/binding-linux-ppc64-gnu": "1.2.11", + "@rolldown/binding-linux-s390x-gnu": "1.2.11", + "@rolldown/binding-linux-x64-gnu": "1.2.11", + "@rolldown/binding-linux-x64-musl": "1.2.11", + "@rolldown/binding-openharmony-arm64": "1.2.11", + "@rolldown/binding-win32-arm64-msvc": "1.2.11", + "@rolldown/binding-win32-x64-msvc": "1.2.11" + } + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/satteri": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/satteri/-/satteri-0.9.5.tgz", + "integrity": "sha512-ZuWVl+vnM64y+/TtX8Kosv2c00W+hLQiiwnEL6H0UKVVrxFqMw4D2CJHHQaouVd89OAhtBBfjWLqhKi3TVUV4w==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.5", + "@types/hast": "^3.0.4", + "@types/mdast": "^4.0.4", + "@types/unist": "^3.0.3" + }, + "optionalDependencies": { + "@bruits/satteri-darwin-arm64": "0.9.5", + "@bruits/satteri-darwin-x64": "0.9.5", + "@bruits/satteri-linux-arm64-gnu": "0.9.5", + "@bruits/satteri-linux-arm64-musl": "0.9.5", + "@bruits/satteri-linux-x64-gnu": "0.9.5", + "@bruits/satteri-linux-x64-musl": "0.9.5", + "@bruits/satteri-wasm32-wasi": "0.9.5", + "@bruits/satteri-win32-arm64-msvc": "0.9.5", + "@bruits/satteri-win32-x64-msvc": "0.9.5" + } + }, + "node_modules/sax": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz", + "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.5.tgz", + "integrity": "sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==", + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.35.5", + "@img/sharp-darwin-x64": "0.35.5", + "@img/sharp-freebsd-wasm32": "0.35.5", + "@img/sharp-libvips-darwin-arm64": "1.3.4", + "@img/sharp-libvips-darwin-x64": "1.3.4", + "@img/sharp-libvips-linux-arm": "1.3.4", + "@img/sharp-libvips-linux-arm64": "1.3.4", + "@img/sharp-libvips-linux-ppc64": "1.3.4", + "@img/sharp-libvips-linux-riscv64": "1.3.4", + "@img/sharp-libvips-linux-s390x": "1.3.4", + "@img/sharp-libvips-linux-x64": "1.3.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4", + "@img/sharp-libvips-linuxmusl-x64": "1.3.4", + "@img/sharp-linux-arm": "0.35.5", + "@img/sharp-linux-arm64": "0.35.5", + "@img/sharp-linux-ppc64": "0.35.5", + "@img/sharp-linux-riscv64": "0.35.5", + "@img/sharp-linux-s390x": "0.35.5", + "@img/sharp-linux-x64": "0.35.5", + "@img/sharp-linuxmusl-arm64": "0.35.5", + "@img/sharp-linuxmusl-x64": "0.35.5", + "@img/sharp-webcontainers-wasm32": "0.35.5", + "@img/sharp-win32-arm64": "0.35.5", + "@img/sharp-win32-ia32": "0.35.5", + "@img/sharp-win32-x64": "0.35.5" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/shiki": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.4.3.tgz", + "integrity": "sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "4.4.3", + "@shikijs/engine-javascript": "4.4.3", + "@shikijs/engine-oniguruma": "4.4.3", + "@shikijs/langs": "4.4.3", + "@shikijs/themes": "4.4.3", + "@shikijs/types": "4.4.3", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/sitemap": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-9.0.1.tgz", + "integrity": "sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==", + "license": "MIT", + "dependencies": { + "@types/node": "^24.9.2", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.4.1" + }, + "bin": { + "sitemap": "dist/esm/cli.js" + }, + "engines": { + "node": ">=20.19.5", + "npm": ">=10.8.2" + } + }, + "node_modules/smol-toml": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.9.0.tgz", + "integrity": "sha512-hpd+HLON7HdZXqYchMM/+LaTTbdK0AU3NngIJ4KVyWbY9bfQqdL9cD+4yf6dUoU2Ap4VsU0JkQi6FxAI1B2mXQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "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/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strictdom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strictdom/-/strictdom-1.0.1.tgz", + "integrity": "sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg==", + "license": "MIT" + }, + "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/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/stylis": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.4.0.tgz", + "integrity": "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.1.0.tgz", + "integrity": "sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==", + "license": "MIT", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^6.0.0", + "css-tree": "^3.0.1", + "css-what": "^7.0.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "1.6.1" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/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==", + "license": "ISC" + }, + "node_modules/svgo/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/svgo/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==", + "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/svgo/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/svgo/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==", + "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/svgo/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/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==", + "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/svgo/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/tinyclip": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-0.1.15.tgz", + "integrity": "sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A==", + "license": "MIT", + "engines": { + "node": "^16.14.0 || >= 17.3.0" + } + }, + "node_modules/tinyexec": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz", + "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "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/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "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==", + "devOptional": true, + "license": "0BSD" + }, + "node_modules/typesafe-path": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz", + "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==", + "dev": true, + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-auto-import-cache": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.6.tgz", + "integrity": "sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.8" + } + }, + "node_modules/ufo": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz", + "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==", + "license": "MIT" + }, + "node_modules/uhyphen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.2.0.tgz", + "integrity": "sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==", + "license": "ISC" + }, + "node_modules/ultrahtml": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.7.0.tgz", + "integrity": "sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==", + "license": "MIT" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" + }, + "node_modules/undici": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.11.2.tgz", + "integrity": "sha512-u4UB2/IrKdU6lFxumHmmo1a3fCQO5tzQllRorfoRS63txhrB7xTpSn1PftwC4qEHkOaqP95fCWW4lJzwErwzhQ==", + "license": "MIT", + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/undici-types": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", + "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unifont": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.5.tgz", + "integrity": "sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.1.0", + "ohash": "^2.0.11", + "undici": "^8.0.0" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unstorage": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.5.tgz", + "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.10", + "lru-cache": "^11.2.7", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/unstorage/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/unstorage/node_modules/readdirp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/url-extras": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/url-extras/-/url-extras-0.1.0.tgz", + "integrity": "sha512-8tzwTeXFPuX/5PHuCDQE5Dd9Ts4rwoq2t9aIT+HS4iAVpmj5l4Ao7Q+BuuFjvWRqrLswBhQDk8O96ZicgCqQqw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.2.tgz", + "integrity": "sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/verkit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/verkit/-/verkit-0.4.1.tgz", + "integrity": "sha512-mMVzj0TXExtVdlDEq+Mzp0eyOuyznNpFobNM3uAqe3HVm/Ps2c+u17BligMkZjZCA6EiXpoon8iRTer3iu40SQ==", + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.1.tgz", + "integrity": "sha512-/bvH9E9tmCXRGp2uXY3WbOldqpTwFkbha/8ANaEQ6VkxhH60KyqLwgZq6lG2y+4uT55x9+9eUHMpQ7uGnOCKjA==", + "license": "MIT", + "peer": true, + "dependencies": { + "lightningcss": "^1.33.0", + "picomatch": "^4.0.7", + "postcss": "^8.5.28", + "rolldown": "~1.2.9", + "tinyglobby": "^0.2.17" + }, + "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", + "@vitejs/devtools": "^0.7.1", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.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 + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "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/vitefu": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.3.tgz", + "integrity": "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/volar-service-css": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.71.tgz", + "integrity": "sha512-wRRFt9BpjMKCazcgOh67MSjUjiWUCAh99DyYSDIOTuxaRjEtDC7PpB0k1Y1wbJIW/pVtMUSVbpPo3UGSm0Byxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-css-languageservice": "^6.3.0", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-emmet": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.71.tgz", + "integrity": "sha512-zqjzt6bN95e3CUstBm0PBFAJnrfz0ZAARka87fart46/gNCLLuP3Vujy8V/J8HEziTFLnfkgIASLFYPUhonJcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emmetio/css-parser": "^0.4.1", + "@emmetio/html-matcher": "^1.3.0", + "@vscode/emmet-helper": "^2.9.3", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-html": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.71.tgz", + "integrity": "sha512-e8tHPhgQ7ooLfudAEIku+kgd9pWkq3SSz8RbnQDI1+Eb8wbenkLGHqoirLqz5ORLV6wIMr2Iv08RWBG5eOcgpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-html-languageservice": "^5.3.0", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-prettier": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.71.tgz", + "integrity": "sha512-Rz7JVH3qD108UCdmIEiZvOBNljMt2nLFdbN8AXcDfn7xD9F5I2aCIsDVqBbXw21PsnxG0b7MfwtNF+zPS/NKUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0", + "prettier": "^2.2 || ^3.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + }, + "prettier": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.71.tgz", + "integrity": "sha512-yTtM/BVT6hoyEYnDtaCyAtNhdNeS/mhTTABlBOdw3NNiRBUin3IznFJpgfjer4c6RYopiPjjQjc9VFhxVl1mLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-browserify": "^1.0.1", + "semver": "^7.6.2", + "typescript-auto-import-cache": "^0.3.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-nls": "^5.2.0", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript-twoslash-queries": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.71.tgz", + "integrity": "sha512-9K2k72s4n7rV9s4bX0MyjbX9iBribvKZbBJKuEmTCZfeWJXs6Yh7bGpY4eoc7UufAjvpheBqwyZCOIPBvxCv0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-yaml": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.71.tgz", + "integrity": "sha512-qYGWGuVpUTnZGu5P/CR4KLK4aIR8RrcVnmfZ2eRcj9q/I8VZCoC5yy9FtEvfNvnDp4MU17yhdJcvpQPIqhJS2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8", + "yaml-language-server": "~1.23.0" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/vscode-css-languageservice": { + "version": "6.3.10", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.10.tgz", + "integrity": "sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "3.17.5", + "vscode-uri": "^3.1.0" + } + }, + "node_modules/vscode-css-languageservice/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-html-languageservice": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.6.2.tgz", + "integrity": "sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "^3.17.5", + "vscode-uri": "^3.1.0" + } + }, + "node_modules/vscode-json-languageservice": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz", + "integrity": "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonc-parser": "^3.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-nls": "^5.0.0", + "vscode-uri": "^3.0.2" + }, + "engines": { + "npm": ">=7.0.0" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.3.tgz", + "integrity": "sha512-qETYf9PCl1lVfwR+oBmMfc4vP2nqLNA35ABxorw3j06+xlKRgDVxbLgKm4Y/xPL0YWdeDjLoI4ImICIT3nB0zQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.4.tgz", + "integrity": "sha512-CCXbyr99dafRJzJH/0Ryk7ly5T8XPmSR0//OuF2w4m+9JiOin7zcAT5iET8GRE7Z9taFBejb3GbM0a0mbjdbrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "9.0.3", + "vscode-languageserver-types": "3.18.4" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.15.tgz", + "integrity": "sha512-Gsfr9S8LU3S6885cS+NaleasJ0n3V5y/SOTqHCifQiXWFw3G9w9/YItDfwHrlCz+dSZWWZ8ilYVMcJe7Sz7Sxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.4.tgz", + "integrity": "sha512-nQsacoiijvl0fRf2q28uFDrAVwRhdCa3QveiF7/CX0r18mLR5FU/1WskSsCKOjmEbtteKUnY8x8Yzxop+k0zwg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-languageserver/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-nls": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz", + "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.2.0.tgz", + "integrity": "sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/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/xxhash-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", + "license": "MIT" + }, + "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/yaml": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz", + "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==", + "devOptional": true, + "license": "ISC", + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yaml-language-server": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.23.0.tgz", + "integrity": "sha512-3qVyCOexLCWw06PQa5kRPwvMWMZ/eZeCRWUvgD6a0OkqL/4iCnxy2WumbWifa937Uo5xhyWJ0uxlU39ljhNh7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/l10n": "^0.0.18", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "ajv-i18n": "^4.2.0", + "prettier": "^3.8.1", + "request-light": "^0.5.7", + "vscode-json-languageservice": "4.1.8", + "vscode-languageserver": "^9.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-uri": "^3.0.2", + "yaml": "2.8.3" + }, + "bin": { + "yaml-language-server": "bin/yaml-language-server" + } + }, + "node_modules/yaml-language-server/node_modules/request-light": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz", + "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==", + "dev": true, + "license": "MIT" + }, + "node_modules/yaml-language-server/node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "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==", + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "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/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/astro-site/package.json b/astro-site/package.json new file mode 100644 index 0000000..5169b04 --- /dev/null +++ b/astro-site/package.json @@ -0,0 +1,50 @@ +{ + "name": "compressionkit-site", + "description": "compressionKIT documentation and Python API", + "private": true, + "type": "module", + "version": "0.0.0", + "engines": { + "node": ">=24", + "npm": ">=11" + }, + "scripts": { + "prepare:docs": "uv run --no-project --with pydantic==2.12.4 python scripts/export-experiments.py && python3 scripts/build-notebooks.py && node scripts/build-reference.mjs", + "predev": "npm run prepare:docs", + "dev": "astro dev", + "prebuild": "npm run prepare:docs", + "build": "astro build --force", + "postbuild": "node scripts/publish-reference.mjs", + "precheck": "npm run prepare:docs", + "check": "astro check", + "check:links": "node scripts/check-links.mjs", + "check:layout": "node scripts/audit-layout.mjs", + "check:content": "node --test scripts/*.test.mjs", + "check:migration": "node scripts/check-migration.mjs", + "check:external": "node scripts/check-external-links.mjs", + "refresh:evidence": "python3 scripts/refresh-evidence.py", + "refresh:fidelity": "python3 scripts/refresh-fidelity.py" + }, + "dependencies": { + "@ambiqai/helia-ui": "https://codeload.github.com/AmbiqAI/helia-ui/tar.gz/a62e8d45505dd3bbcdf1c4a03dfd1ec863322ecf", + "@astrojs/markdown-remark": "^7.3.1", + "@astrojs/react": "7.0.0", + "@astrojs/starlight": "^0.41.5", + "@fontsource-variable/inter": "5.3.0", + "@types/react": "19.3.0", + "@types/react-dom": "19.3.0", + "astro": "7.3.3", + "react": "19.3.0", + "react-dom": "19.3.0", + "rehype-katex": "^7.0.1", + "rehype-mermaid": "^3.0.0", + "remark-math": "^6.0.0", + "sharp": "^0.35.3" + }, + "devDependencies": { + "@astrojs/check": "^0.9.6", + "@playwright/test": "1.63.0", + "linkedom": "0.18.13", + "typescript": "^5.9.3" + } +} diff --git a/docs/assets/compressionkit-dark.png b/astro-site/public/assets/compressionkit-dark.png similarity index 100% rename from docs/assets/compressionkit-dark.png rename to astro-site/public/assets/compressionkit-dark.png diff --git a/docs/assets/compressionkit-dashboard-full.jpeg b/astro-site/public/assets/compressionkit-dashboard-full.jpeg similarity index 100% rename from docs/assets/compressionkit-dashboard-full.jpeg rename to astro-site/public/assets/compressionkit-dashboard-full.jpeg diff --git a/docs/assets/compressionkit-icon-white.png b/astro-site/public/assets/compressionkit-icon-white.png similarity index 100% rename from docs/assets/compressionkit-icon-white.png rename to astro-site/public/assets/compressionkit-icon-white.png diff --git a/docs/assets/compressionkit-icon.png b/astro-site/public/assets/compressionkit-icon.png similarity index 100% rename from docs/assets/compressionkit-icon.png rename to astro-site/public/assets/compressionkit-icon.png diff --git a/docs/assets/compressionkit-icon.svg b/astro-site/public/assets/compressionkit-icon.svg similarity index 100% rename from docs/assets/compressionkit-icon.svg rename to astro-site/public/assets/compressionkit-icon.svg diff --git a/docs/assets/compressionkit-light.png b/astro-site/public/assets/compressionkit-light.png similarity index 100% rename from docs/assets/compressionkit-light.png rename to astro-site/public/assets/compressionkit-light.png diff --git a/docs/assets/compressionkit-live-stream.jpeg b/astro-site/public/assets/compressionkit-live-stream.jpeg similarity index 100% rename from docs/assets/compressionkit-live-stream.jpeg rename to astro-site/public/assets/compressionkit-live-stream.jpeg diff --git a/docs/assets/compressionkit-ppg-overview.jpeg b/astro-site/public/assets/compressionkit-ppg-overview.jpeg similarity index 100% rename from docs/assets/compressionkit-ppg-overview.jpeg rename to astro-site/public/assets/compressionkit-ppg-overview.jpeg diff --git a/docs/assets/compressionkit-ppg-recordings.jpeg b/astro-site/public/assets/compressionkit-ppg-recordings.jpeg similarity index 100% rename from docs/assets/compressionkit-ppg-recordings.jpeg rename to astro-site/public/assets/compressionkit-ppg-recordings.jpeg diff --git a/docs/assets/favicon.png b/astro-site/public/assets/favicon.png similarity index 100% rename from docs/assets/favicon.png rename to astro-site/public/assets/favicon.png diff --git a/docs/assets/plots/ecg_cos_dark.png b/astro-site/public/assets/plots/ecg_cos_dark.png similarity index 100% rename from docs/assets/plots/ecg_cos_dark.png rename to astro-site/public/assets/plots/ecg_cos_dark.png diff --git a/docs/assets/plots/ecg_cos_light.png b/astro-site/public/assets/plots/ecg_cos_light.png similarity index 100% rename from docs/assets/plots/ecg_cos_light.png rename to astro-site/public/assets/plots/ecg_cos_light.png diff --git a/docs/assets/plots/ecg_effective_rate_dark.png b/astro-site/public/assets/plots/ecg_effective_rate_dark.png similarity index 100% rename from docs/assets/plots/ecg_effective_rate_dark.png rename to astro-site/public/assets/plots/ecg_effective_rate_dark.png diff --git a/docs/assets/plots/ecg_effective_rate_light.png b/astro-site/public/assets/plots/ecg_effective_rate_light.png similarity index 100% rename from docs/assets/plots/ecg_effective_rate_light.png rename to astro-site/public/assets/plots/ecg_effective_rate_light.png diff --git a/docs/assets/plots/ecg_mse_dark.png b/astro-site/public/assets/plots/ecg_mse_dark.png similarity index 100% rename from docs/assets/plots/ecg_mse_dark.png rename to astro-site/public/assets/plots/ecg_mse_dark.png diff --git a/docs/assets/plots/ecg_mse_light.png b/astro-site/public/assets/plots/ecg_mse_light.png similarity index 100% rename from docs/assets/plots/ecg_mse_light.png rename to astro-site/public/assets/plots/ecg_mse_light.png diff --git a/docs/assets/plots/ecg_prd_dark.png b/astro-site/public/assets/plots/ecg_prd_dark.png similarity index 100% rename from docs/assets/plots/ecg_prd_dark.png rename to astro-site/public/assets/plots/ecg_prd_dark.png diff --git a/docs/assets/plots/ecg_prd_light.png b/astro-site/public/assets/plots/ecg_prd_light.png similarity index 100% rename from docs/assets/plots/ecg_prd_light.png rename to astro-site/public/assets/plots/ecg_prd_light.png diff --git a/docs/assets/plots/ecg_robustness_winners_artifacts.png b/astro-site/public/assets/plots/ecg_robustness_winners_artifacts.png similarity index 100% rename from docs/assets/plots/ecg_robustness_winners_artifacts.png rename to astro-site/public/assets/plots/ecg_robustness_winners_artifacts.png diff --git a/docs/assets/plots/ecg_robustness_winners_snr.png b/astro-site/public/assets/plots/ecg_robustness_winners_snr.png similarity index 100% rename from docs/assets/plots/ecg_robustness_winners_snr.png rename to astro-site/public/assets/plots/ecg_robustness_winners_snr.png diff --git a/docs/assets/plots/ppg_cos_dark.png b/astro-site/public/assets/plots/ppg_cos_dark.png similarity index 100% rename from docs/assets/plots/ppg_cos_dark.png rename to astro-site/public/assets/plots/ppg_cos_dark.png diff --git a/docs/assets/plots/ppg_cos_light.png b/astro-site/public/assets/plots/ppg_cos_light.png similarity index 100% rename from docs/assets/plots/ppg_cos_light.png rename to astro-site/public/assets/plots/ppg_cos_light.png diff --git a/docs/assets/plots/ppg_effective_rate_dark.png b/astro-site/public/assets/plots/ppg_effective_rate_dark.png similarity index 100% rename from docs/assets/plots/ppg_effective_rate_dark.png rename to astro-site/public/assets/plots/ppg_effective_rate_dark.png diff --git a/docs/assets/plots/ppg_effective_rate_light.png b/astro-site/public/assets/plots/ppg_effective_rate_light.png similarity index 100% rename from docs/assets/plots/ppg_effective_rate_light.png rename to astro-site/public/assets/plots/ppg_effective_rate_light.png diff --git a/docs/assets/plots/ppg_hr_dark.png b/astro-site/public/assets/plots/ppg_hr_dark.png similarity index 100% rename from docs/assets/plots/ppg_hr_dark.png rename to astro-site/public/assets/plots/ppg_hr_dark.png diff --git a/docs/assets/plots/ppg_hr_light.png b/astro-site/public/assets/plots/ppg_hr_light.png similarity index 100% rename from docs/assets/plots/ppg_hr_light.png rename to astro-site/public/assets/plots/ppg_hr_light.png diff --git a/docs/assets/plots/ppg_mse_dark.png b/astro-site/public/assets/plots/ppg_mse_dark.png similarity index 100% rename from docs/assets/plots/ppg_mse_dark.png rename to astro-site/public/assets/plots/ppg_mse_dark.png diff --git a/docs/assets/plots/ppg_mse_light.png b/astro-site/public/assets/plots/ppg_mse_light.png similarity index 100% rename from docs/assets/plots/ppg_mse_light.png rename to astro-site/public/assets/plots/ppg_mse_light.png diff --git a/docs/assets/plots/ppg_prd_dark.png b/astro-site/public/assets/plots/ppg_prd_dark.png similarity index 100% rename from docs/assets/plots/ppg_prd_dark.png rename to astro-site/public/assets/plots/ppg_prd_dark.png diff --git a/docs/assets/plots/ppg_prd_light.png b/astro-site/public/assets/plots/ppg_prd_light.png similarity index 100% rename from docs/assets/plots/ppg_prd_light.png rename to astro-site/public/assets/plots/ppg_prd_light.png diff --git a/docs/assets/plots/ppg_rmssd_dark.png b/astro-site/public/assets/plots/ppg_rmssd_dark.png similarity index 100% rename from docs/assets/plots/ppg_rmssd_dark.png rename to astro-site/public/assets/plots/ppg_rmssd_dark.png diff --git a/docs/assets/plots/ppg_rmssd_light.png b/astro-site/public/assets/plots/ppg_rmssd_light.png similarity index 100% rename from docs/assets/plots/ppg_rmssd_light.png rename to astro-site/public/assets/plots/ppg_rmssd_light.png diff --git a/docs/assets/plots/ppg_robustness_winners_artifacts.png b/astro-site/public/assets/plots/ppg_robustness_winners_artifacts.png similarity index 100% rename from docs/assets/plots/ppg_robustness_winners_artifacts.png rename to astro-site/public/assets/plots/ppg_robustness_winners_artifacts.png diff --git a/docs/assets/plots/ppg_robustness_winners_snr.png b/astro-site/public/assets/plots/ppg_robustness_winners_snr.png similarity index 100% rename from docs/assets/plots/ppg_robustness_winners_snr.png rename to astro-site/public/assets/plots/ppg_robustness_winners_snr.png diff --git a/docs/assets/plots/ppg_sdnn_dark.png b/astro-site/public/assets/plots/ppg_sdnn_dark.png similarity index 100% rename from docs/assets/plots/ppg_sdnn_dark.png rename to astro-site/public/assets/plots/ppg_sdnn_dark.png diff --git a/docs/assets/plots/ppg_sdnn_light.png b/astro-site/public/assets/plots/ppg_sdnn_light.png similarity index 100% rename from docs/assets/plots/ppg_sdnn_light.png rename to astro-site/public/assets/plots/ppg_sdnn_light.png diff --git a/astro-site/scripts/audit-layout.mjs b/astro-site/scripts/audit-layout.mjs new file mode 100644 index 0000000..c063c2c --- /dev/null +++ b/astro-site/scripts/audit-layout.mjs @@ -0,0 +1,50 @@ +import { chromium } from '@playwright/test'; +import { globSync, readFileSync } from 'node:fs'; + +const base = process.env.DOCS_AUDIT_URL || 'http://127.0.0.1:8778'; +const routes = globSync('dist/**/*.html') + .filter(file => !file.endsWith('404.html')) + .filter(file => !readFileSync(file, 'utf8').includes('http-equiv="refresh"')) + .map(file => '/compressionkit/' + file.slice(5).replace(/index.html$/, '')); +const browser = await chromium.launch({ headless: true }); +const failures = []; +let checked = 0; +try { + for (const width of [390, 1440]) { + for (const theme of ['light', 'dark']) { + const page = await browser.newPage({ viewport: { width, height: 900 }, colorScheme: theme }); + await page.addInitScript(theme => localStorage.setItem('starlight-theme', theme), theme); + let resourceFailures = []; + page.on('response', response => { + if (response.status() >= 400) resourceFailures.push({ url: response.url(), status: response.status() }); + }); + page.on('requestfailed', request => { + resourceFailures.push({ url: request.url(), error: request.failure()?.errorText }); + }); + for (const route of routes) { + resourceFailures = []; + const response = await page.goto(base + route, { waitUntil: 'load' }); + const issues = await page.evaluate(() => { + const main = document.querySelector('main'); + const visible = element => element.getBoundingClientRect().height > 0; + return { + overflow: document.documentElement.scrollWidth > innerWidth + 1, + images: [...main.querySelectorAll('img')].filter(image => visible(image) && (!image.complete || !image.naturalWidth)).map(image => image.getAttribute('src')), + headings: main.querySelectorAll('h1').length, + emptyLinks: [...main.querySelectorAll('a')].filter(link => visible(link) && !link.textContent.trim() && !link.getAttribute('aria-label') && !link.querySelector('img[alt],svg')).map(link => link.getAttribute('href')), + codeCards: [...main.querySelectorAll('.helia-card')].filter(card => card.querySelector('pre')).length, + }; + }); + checked++; + if (resourceFailures.length || response.status() !== 200 || issues.overflow || issues.images.length || issues.headings !== 1 || issues.emptyLinks.length || issues.codeCards) { + failures.push({ width, theme, route, status: response.status(), resourceFailures, ...issues }); + } + } + await page.close(); + } + } +} finally { + await browser.close(); +} +console.log(JSON.stringify({ routes: routes.length, checked, failures }, null, 2)); +if (failures.length) process.exitCode = 1; diff --git a/astro-site/scripts/build-notebooks.py b/astro-site/scripts/build-notebooks.py new file mode 100644 index 0000000..67a8334 --- /dev/null +++ b/astro-site/scripts/build-notebooks.py @@ -0,0 +1,94 @@ +"""Render saved notebook outputs without executing training code.""" + +import base64 +import html +import json +import re +import shutil +from pathlib import Path + +def action_icon(paths: str) -> str: + return ( + '' + ) + + +download_icon = action_icon('') +source_icon = action_icon('') +launch_icon = action_icon('') + +marker = "" +pages = Path("src/content/docs/guides") +pages.mkdir(parents=True, exist_ok=True) +for page in pages.glob("*.md"): + if marker in page.read_text()[:500]: + page.unlink() + +assets = Path("public/notebooks") +shutil.rmtree(assets, ignore_errors=True) +assets.mkdir(parents=True) +for source in sorted(Path("../examples").glob("*.ipynb")): + notebook = json.loads(source.read_text()) + shutil.copyfile(source, assets / source.name) + title = next( + ( + re.search(r"^# (.+)", "".join(c.get("source", [])), re.MULTILINE).group(1) + for c in notebook["cells"] + if c["cell_type"] == "markdown" and re.search(r"^# (.+)", "".join(c.get("source", [])), re.MULTILINE) + ), + source.stem.replace("-", " ").title(), + ) + parts = [ + f"---\ntitle: {json.dumps(title)}\ndescription: Saved compressionKIT notebook example with code and outputs.\n---", + marker, + f'', + "Open in Colab opens the source notebook only. Before running cells, use a Python 3.12 runtime and install compressionKIT into that runtime. See [notebook environment setup](/compressionkit/examples/#notebook-environment-setup). Hosted execution has not been validated by this documentation build.", + "This example displays saved outputs. Building the documentation does not run training. Check dataset paths for your notebook working directory before running.", + ] + for ci, cell in enumerate(notebook["cells"]): + text = "".join(cell.get("source", [])) + if cell["cell_type"] == "markdown": + text = re.sub( + r']*class="grid cards"[^>]*>.*?', + lambda match: "" if "View in Colab" in match[0] or "colab-badge.svg" in match[0] else match[0], + text, + flags=re.DOTALL, + ) + text = re.sub(r"^# .+\n?", "", text, flags=re.MULTILINE) + text = re.sub(r":(?:material|simple|fontawesome|octicons)-[\w-]+:", "", text) + text = re.sub(r"\{\s*\.[^}]+\}", "", text) + parts.append(text) + elif cell["cell_type"] == "code": + parts.append('
\n\n```python title="Python"\n' + text.rstrip() + "\n```\n\n
") + for oi, output in enumerate(cell.get("outputs", [])): + data = output.get("data", {}) + if "image/png" in data: + alt = output.get("metadata", {}).get("alt") or cell.get("metadata", {}).get("alt") + if not isinstance(alt, str) or not alt.strip(): + raise ValueError(f"Missing plot alternative text: {source.name}, cell {ci + 1}") + alt = html.escape(alt, quote=True) + name = f"{source.stem}-{ci}-{oi}.png" + (assets / name).write_bytes(base64.b64decode("".join(data["image/png"]))) + parts.append( + f'
{alt}
Saved output · cell {ci + 1}
' + ) + else: + raw = "".join(output.get("text", data.get("text/plain", []))) + raw = re.sub(r"\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)", "", raw) + raw = re.sub(r"\x1b\[[0-?]*[ -/]*[@-~]", "", raw) + if raw.strip(): + if len(raw.splitlines()) > 12: + parts.append( + '
Saved output\n\n' + + "```text\n" + raw.rstrip() + "\n```\n\n
" + ) + else: + parts.append( + '
\n\n```text title="Saved output"\n' + + raw.rstrip() + "\n```\n\n
" + ) + + Path(f"src/content/docs/guides/{source.stem}.md").write_text("\n\n".join(parts) + "\n") diff --git a/astro-site/scripts/build-reference.mjs b/astro-site/scripts/build-reference.mjs new file mode 100644 index 0000000..c2cf9bb --- /dev/null +++ b/astro-site/scripts/build-reference.mjs @@ -0,0 +1,140 @@ +import { docstringMarkdown } from "./docstring-markdown.mjs"; +const isPrivateModule = (name) => name.startsWith("_"); +import { execFileSync } from "node:child_process"; +import { mkdirSync, readFileSync, writeFileSync, rmSync } from "node:fs"; +import { resolve } from "node:path"; +const repo = resolve(".."); +const run = (cmd, args) => + execFileSync(cmd, args, { + cwd: repo, + encoding: "utf8", + maxBuffer: 128 * 1024 * 1024, + }); +rmSync("public/reference", { recursive: true, force: true }); +const commit = run("git", ["rev-parse", "HEAD"]).trim(); +mkdirSync(".cache", { recursive: true }); +mkdirSync("src/data", { recursive: true }); +rmSync("src/content/docs/reference/api", { recursive: true, force: true }); +const dump = JSON.parse( + run("uv", [ + "tool", + "run", + "--from", + "griffe==1.7.3", + "griffe", + "dump", + "compressionkit", + "--docstyle", + "google", + "-f", + ]), +); +function clean(node) { + if (node.docstring) { + node.docstring.value = docstringMarkdown(node.docstring.value); + for (const section of node.docstring.parsed ?? []) { + if (section.kind === "text") section.value = docstringMarkdown(section.value); + } + } + for (const [name, child] of Object.entries(node.members ?? {})) { + if (child.kind === "module" && isPrivateModule(name)) delete node.members[name]; + else clean(child); + } +} +clean(dump.compressionkit); +const allowed = JSON.parse(readFileSync("scripts/public-api.json", "utf8")); +function prune(node, path) { + for (const [name, child] of Object.entries(node.members ?? {})) { + if (child.kind !== "module") continue; + const full = `${path}.${name}`; + if (!allowed.some(p => p === full || p.startsWith(full + "."))) delete node.members[name]; + else prune(child, full); + } +} +prune(dump.compressionkit, "compressionkit"); +writeFileSync(".cache/griffe.json", JSON.stringify(dump)); +run(process.execPath, [ + resolve("node_modules/@ambiqai/helia-ui/scripts/pyref.mjs"), + "--input", + resolve(".cache/griffe.json"), + "--out", + resolve("src/content/docs/reference/api"), + "--public", + resolve("public"), + "--base", + "/compressionkit/", + "--site", + "https://ambiqai.github.io", + "--source-root", + repo, + "--source-url", + `https://github.com/AmbiqAI/compressionkit/blob/${commit}/{path}#L{line}`, + "--commit", + commit, + "--quiet", +]); +const model = JSON.parse( + readFileSync("public/reference/api/reference.json", "utf8"), +); +const modules = []; +function visit(m) { + modules.push(m); + (m.submodules ?? []).forEach(visit); +} +model.modules.forEach(visit); +const route = (m) => + "reference/api/" + m.path.toLowerCase().replaceAll(".", "/"); +for (const m of modules) { + if ((m.symbols ?? []).length || !(m.submodules ?? []).length) continue; + const path = `src/content/docs/${route(m)}/index.mdx`; + const children = m.submodules.map(child => `- [${child.name ?? child.path}](/compressionkit/${route(child)}/)`).join("\n"); + writeFileSync(path, `---\ntitle: ${JSON.stringify(m.path)}\ndescription: ${JSON.stringify(`Public modules in ${m.path}.`)}\n---\n\nBrowse the documented modules in this package.\n\n${children}\n`); +} +const rows = modules.flatMap((m) => + (m.symbols ?? []) + .filter((s) => ["class", "function"].includes(s.kind)) + .map((s) => ({ + id: s.id, + name: s.name, + kind: s.kind, + module: m.path, + href: `/compressionkit/${route(m)}/#${s.id}`, + summary: (s.description ?? "").split("\n")[0], + facets: { kind: [s.kind], category: [m.path.split(".")[1] ?? "package"] }, + })), +); +writeFileSync( + "src/data/api-sidebar.json", + JSON.stringify(modules.filter(m => (m.symbols ?? []).some(s => ["class", "function"].includes(s.kind))).map((m) => ({ label: m.path.replace(/^compressionkit\./, ""), slug: route(m) }))), +); +writeFileSync( + "src/data/api-index.json", + JSON.stringify({ + rows, + filters: [ + { id: "kind", label: "Symbol type", values: ["class", "function"] }, + { + id: "category", + label: "Category", + values: [...new Set(rows.flatMap((r) => r.facets.category))].sort(), + }, + ], + }), +); +writeFileSync( + "src/data/redirects.json", + JSON.stringify({ + ...JSON.parse(readFileSync("src/redirects.json", "utf8")), + ...Object.fromEntries(modules.map((m) => [ + "/api/" + m.path.replaceAll(".", "/"), + "/compressionkit/" + route(m) + "/", + ])), + }), +); +writeFileSync( + "src/content/docs/reference/index.mdx", + `---\ntitle: Python API catalog\ndescription: Search compressionKIT classes, functions, signatures and parameter documentation.\n---\nimport ReferenceBrowser from '@ambiqai/helia-ui/astro/ReferenceBrowser';\nimport catalog from '../../../data/api-index.json';\n\nSearch classes and functions by name or module. Documentation is generated from the Python source without importing training dependencies.\n\n\n`, +); +console.log( + `Generated ${modules.length} API modules and ${rows.length} searchable symbols.`, +); diff --git a/astro-site/scripts/check-external-links.mjs b/astro-site/scripts/check-external-links.mjs new file mode 100644 index 0000000..015833e --- /dev/null +++ b/astro-site/scripts/check-external-links.mjs @@ -0,0 +1,35 @@ +import { globSync, readFileSync, writeFileSync } from 'node:fs'; +import { parseHTML } from 'linkedom'; +const urls = new Set(); +for (const file of globSync('dist/**/*.html')) { + const { document } = parseHTML(readFileSync(file, 'utf8')); + for (const anchor of document.querySelectorAll('main a[href]')) { + const href = anchor.getAttribute('href'); + if (!/^https?:/.test(href)) continue; + const url = new URL(href); + if (url.hostname === 'ambiqai.github.io' && url.pathname.startsWith('/compressionkit/')) continue; + url.hash = ''; + urls.add(url.href); + } +} +const queue = [...urls].sort(); +const results = []; +async function worker() { + while (queue.length) { + const url = queue.shift(); + try { + const response = await fetch(url, { signal: AbortSignal.timeout(15000), redirect: 'follow' }); + await response.body?.cancel(); + results.push({ url, status: response.status, final: response.url }); + } catch (error) { + results.push({ url, error: error.message }); + } + } +} +await Promise.all(Array.from({ length: 6 }, worker)); +results.sort((a, b) => a.url.localeCompare(b.url)); +const report = { checkedAt: new Date().toISOString(), count: results.length, results }; +writeFileSync('external-link-audit.json', JSON.stringify(report, null, 2) + '\n'); +const unresolved = results.filter(r => !r.status || r.status >= 400); +console.log(JSON.stringify({ count: results.length, unresolved }, null, 2)); +if (unresolved.length) process.exitCode = 1; diff --git a/astro-site/scripts/check-links.mjs b/astro-site/scripts/check-links.mjs new file mode 100644 index 0000000..2701fe5 --- /dev/null +++ b/astro-site/scripts/check-links.mjs @@ -0,0 +1,26 @@ +import {globSync,readFileSync,existsSync} from 'node:fs'; +import {parseHTML} from 'linkedom'; +import { resolve } from 'node:path'; +const root=resolve('dist'); +let failures=[];let count=0; +for(const file of globSync(root+'/**/*.html')){ + const {document}=parseHTML(readFileSync(file,'utf8')); + if(document.querySelector('meta[http-equiv="refresh"]'))continue; + const route='/compressionkit/'+file.slice(root.length+1).replace(/index.html$/,''); + for(const el of document.querySelectorAll('main a[href],main img[src]')){ + const ref=el.getAttribute('href')||el.getAttribute('src');if(!ref||/^(mailto:|data:)/.test(ref))continue; + const u=new URL(ref,'https://local'+route); + if (u.origin !== 'https://local' && !(u.hostname === 'ambiqai.github.io' && u.pathname.startsWith('/compressionkit/'))) continue; + if(!u.pathname.startsWith('/compressionkit/')){failures.push([route,ref,'base']);continue;} + let target=root+decodeURIComponent(u.pathname.slice('/compressionkit'.length));if(target.endsWith('/'))target+='index.html'; + if(!existsSync(target)){failures.push([route,ref,'missing']);continue;} + if(u.hash && target.endsWith('.html') && !['#only-light','#only-dark'].includes(u.hash)){ + const {document:d}=parseHTML(readFileSync(target,'utf8'));const id=decodeURIComponent(u.hash.slice(1));if(!d.getElementById(id))failures.push([route,ref,'anchor']); + } + count++; + } + const body=document.querySelector('.sl-markdown-content')?.textContent||''; + if(/:material-|\{\s*\.\w|!!! |::: compressionkit|=== "/.test(body))failures.push([route,'raw syntax']); +} +console.log(JSON.stringify({count,failures},null,2)); +if(failures.length) process.exitCode=1; diff --git a/astro-site/scripts/check-migration.mjs b/astro-site/scripts/check-migration.mjs new file mode 100644 index 0000000..9d6bbd0 --- /dev/null +++ b/astro-site/scripts/check-migration.mjs @@ -0,0 +1,56 @@ +import { createHash } from 'node:crypto'; +import { readFileSync, existsSync, globSync } from 'node:fs'; +import { basename } from 'node:path'; +const manifest = JSON.parse(readFileSync('migration-manifest.json', 'utf8')); +const failures = []; +const hash = path => createHash('sha256').update(readFileSync(path)).digest('hex'); +const sources = new Set(manifest.items.map(item => item.source)); +for (const path of globSync('../examples/*.ipynb')) { + if (!sources.has(path.slice(3))) failures.push(`Uninventoried source: ${path}`); +} +for (const item of manifest.items) { + const source = '../' + item.source; + if (item.retiredSource) { + if (existsSync(source)) failures.push(`Retired source restored: ${item.source}`); + if (item.retainedAt && (!existsSync('../' + item.retainedAt) || hash('../' + item.retainedAt) !== item.sha256)) failures.push(`Retained note differs: ${item.retainedAt}`); + } else if (!existsSync(source) || hash(source) !== item.sha256) failures.push(`Source changed; review migration disposition: ${item.source}`); + if (item.disposition === 'excluded') continue; + if (item.source.endsWith('.ipynb')) { + const name = basename(item.source); + if (!existsSync(`public/notebooks/${name}`) || hash(source) !== hash(`public/notebooks/${name}`)) failures.push(`Notebook download differs: ${name}`); + if (!existsSync(`dist/guides/${name.replace('.ipynb', '')}/index.html`)) failures.push(`Notebook route missing: ${name}`); + continue; + } + if (!existsSync('../' + item.destination)) failures.push(`Destination missing: ${item.destination}`); + if (item.source.endsWith('.md')) { + const route = item.source.slice(5).replace(/(?:\/)?index\.md$/, '').replace(/\.md$/, ''); + if (!existsSync(`dist/${route}/index.html`)) failures.push(`Original route missing: ${route}`); + } +} +for (const [path, sha] of Object.entries(manifest.watchedSources ?? {})) { + if (!existsSync('../' + path) || hash('../' + path) !== sha) failures.push(`Generator input changed; review affected Astro pages: ${path}`); +} +console.log(JSON.stringify({ inventoried: manifest.items.length, failures }, null, 2)); +if (failures.length) process.exitCode = 1; + +const { parseHTML } = await import('linkedom'); +const dispositions = JSON.parse(readFileSync('legacy-anchor-dispositions.json', 'utf8')); +const legacy = JSON.parse(readFileSync('anchor-review.json', 'utf8')).results.flatMap(page => page.missing.map(anchor => ({page: page.route, id: anchor.id}))); +const anchorFailures = []; +for (const anchor of legacy) { + const matches = dispositions.filter(item => item.page === anchor.page && item.id === anchor.id); + if (matches.length !== 1) { anchorFailures.push(`Missing/duplicate disposition: ${anchor.page}#${anchor.id}`); continue; } + const item = matches[0]; + if (item.disposition === 'retired' && item.reason) continue; + const { document } = parseHTML(readFileSync(`dist/${item.page}/index.html`, 'utf8')); + if (!document.getElementById(item.id)) anchorFailures.push(`Missing legacy alias: ${item.page}#${item.id}`); + if (item.target) { + const url = new URL(item.target, 'https://local'); + const path = 'dist/' + url.pathname.replace(/^\/compressionkit\//, '') + 'index.html'; + if (!existsSync(path)) {anchorFailures.push(`Missing legacy target: ${item.target}`);continue;} + const { document: target } = parseHTML(readFileSync(path, 'utf8')); + if (!target.getElementById(decodeURIComponent(url.hash.slice(1)))) anchorFailures.push(`Missing legacy target fragment: ${item.target}`); + } +} +console.log(JSON.stringify({legacyAnchors: legacy.length, anchorFailures}, null, 2)); +if (anchorFailures.length) process.exitCode = 1; diff --git a/astro-site/scripts/docstring-markdown.mjs b/astro-site/scripts/docstring-markdown.mjs new file mode 100644 index 0000000..ca70c06 --- /dev/null +++ b/astro-site/scripts/docstring-markdown.mjs @@ -0,0 +1,23 @@ +export function docstringMarkdown(value) { + const lines = value.replace(/:(?:material|simple|fontawesome|octicons)-[\w-]+:/g, '').split('\n'); + const output = []; + let fenced = false; + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + if (/^\s*```/.test(line)) fenced = !fenced; + if (!fenced && line.endsWith('::') && lines[i + 1]?.trim() === '') { + let start = i + 1; + while (start < lines.length && !lines[start].trim()) start++; + if (/^ {4}\S/.test(lines[start] ?? '')) { + let end = start; + while (end < lines.length && (!lines[end].trim() || /^ {4}/.test(lines[end]))) end++; + const code = lines.slice(start, end).map(line => line.slice(4)).join('\n').trimEnd(); + output.push(line.slice(0, -1), '', '```python', code, '```', ''); + i = end - 1; + continue; + } + } + output.push(line); + } + return output.join('\n'); +} diff --git a/astro-site/scripts/docstring-markdown.test.mjs b/astro-site/scripts/docstring-markdown.test.mjs new file mode 100644 index 0000000..29e18a4 --- /dev/null +++ b/astro-site/scripts/docstring-markdown.test.mjs @@ -0,0 +1,12 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { docstringMarkdown } from './docstring-markdown.mjs'; + +test('fences reStructuredText examples so Python comments are not headings in MDX', () => { + const input = 'Example::\n\n codec = load_codec(path)\n\n # Encode a frame\n result = codec.compress(frame)\n\nNext paragraph.'; + assert.equal(docstringMarkdown(input), 'Example:\n\n```python\ncodec = load_codec(path)\n\n# Encode a frame\nresult = codec.compress(frame)\n```\n\nNext paragraph.'); +}); +test('preserves existing fences and prose without a literal block', () => { + const input = 'Example::\n\nNo code here.\n\n```text\nExample::\n\n keep this indentation\n```'; + assert.equal(docstringMarkdown(input), input); +}); diff --git a/astro-site/scripts/evidence-data.mjs b/astro-site/scripts/evidence-data.mjs new file mode 100644 index 0000000..131a160 --- /dev/null +++ b/astro-site/scripts/evidence-data.mjs @@ -0,0 +1,25 @@ +export const tableIds = ['ppg-quality', 'ecg-quality', 'ppg-files', 'ecg-files', 'ppg-detail', 'ecg-detail']; +const headers = { + quality: ['CR', 'N', 'Truth PRD (%)', 'Faithful PRD (%)', 'HR error (bpm)'], + files: ['CR', 'Total', 'Encoder', 'Decoder', 'Codebook'], + detail: ['CR', 'PRDN-noise (%)', 'Band error', 'Coherence', 'Seam ratio'], +}; +export function validateEvidence(data) { + if (data.schemaVersion !== 1 || !['preserved-documentation', 'scorecards'].includes(data.provenance?.kind)) throw Error('Unsupported evidence schema or provenance'); + if (!data.provenance.source || !/^[a-f0-9]{64}$/.test(data.provenance.sha256 ?? '')) throw Error('Evidence requires a source and SHA-256 provenance'); + if (!Array.isArray(data.tables) || data.tables.length !== tableIds.length) throw Error('Expected six evidence tables'); + for (const id of tableIds) { + const matches = data.tables.filter(table => table.id === id); + if (matches.length !== 1) throw Error(`Missing or duplicate evidence table: ${id}`); + const table = matches[0]; + const ratios = id.startsWith('ppg') ? ['2x','4x','8x','16x','32x'] : ['2x','4x','8x','16x','32x','64x']; + const kind = id.split('-')[1]; + if (JSON.stringify(table.headers) !== JSON.stringify(headers[kind])) throw Error(`Invalid headers: ${id}`); + if (table.rows.length !== ratios.length) throw Error(`Incomplete evidence rows: ${id}`); + table.rows.forEach((row, i) => { + const numeric = kind === 'files' ? /^\d+(?:\.\d+)? KiB$/ : /^\d+(?:\.\d+)?$/; + if (row.length !== 5 || row[0] !== ratios[i] || row.slice(1).some(x => typeof x !== 'string' || (x !== '-' && !numeric.test(x)))) throw Error(`Invalid evidence row: ${id} ${i}`); + }); + } + return data; +} diff --git a/astro-site/scripts/evidence-data.test.mjs b/astro-site/scripts/evidence-data.test.mjs new file mode 100644 index 0000000..2c28d49 --- /dev/null +++ b/astro-site/scripts/evidence-data.test.mjs @@ -0,0 +1,42 @@ +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { readFileSync, mkdtempSync, mkdirSync, writeFileSync, rmSync, existsSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { spawnSync } from 'node:child_process'; +import { validateEvidence } from './evidence-data.mjs'; +const snapshot = () => JSON.parse(readFileSync('content-data/customer-evidence.json', 'utf8')); +test('preserved evidence includes both modalities and missing-value markers', () => { + const fixture = snapshot(); + fixture.tables.find(t=>t.id==='ecg-detail').rows[4][4]='0.176'; + fixture.tables.find(t=>t.id==='ppg-detail').rows[0][4]='-'; + const data = validateEvidence(fixture); + assert.equal(data.tables.reduce((n,t) => n+t.rows.length,0),33); + assert.equal(data.tables.find(t=>t.id==='ecg-detail').rows[4][4],'0.176'); + assert.equal(data.tables.find(t=>t.id==='ppg-detail').rows[0][4],'-'); +}); +test('rejects incomplete, duplicate and nonfinite evidence', () => { + const missing=snapshot();missing.tables[0].rows.pop();assert.throws(()=>validateEvidence(missing)); + const duplicate=snapshot();duplicate.tables[1]=duplicate.tables[0];assert.throws(()=>validateEvidence(duplicate)); + const wrongHeader=snapshot();wrongHeader.tables[0].headers[2]='Different metric';assert.throws(()=>validateEvidence(wrongHeader)); + const prose=snapshot();prose.tables[0].rows[0][2]='unknown';assert.throws(()=>validateEvidence(prose)); + const invalid=snapshot();invalid.tables[0].rows[0][2]='NaN';assert.throws(()=>validateEvidence(invalid)); +}); +test('refresh requires every scorecard and keeps absent measurements missing', () => { + const dir=mkdtempSync(join(tmpdir(),'ck-evidence-')), output=join(dir,'snapshot.json'); + try { + for(const modality of ['ppg','ecg'])for(const cr of modality==='ppg'?[2,4,8,16,32]:[2,4,8,16,32,64]){ + const run=`${modality}_rvq_${modality==='ppg'?64:256}hz_${String(cr).padStart(2,'0')}x_golden`; + mkdirSync(join(dir,run));writeFileSync(join(dir,run,'quality_scorecard.json'),JSON.stringify({num_samples:10,bitrate:{cr_codec_uniform:{mean:cr}},time_domain:{prd_percent:{mean:1.25}}})); + } + const deploy=join(dir,'ppg_rvq_64hz_02x_golden','deploy');mkdirSync(deploy); + writeFileSync(join(deploy,'encoder.tflite'),Buffer.alloc(1024)); + writeFileSync(join(deploy,'deploy_manifest.json'),JSON.stringify({artifacts:{encoder_tflite:'encoder.tflite'}})); + const run=()=>spawnSync('python3',['scripts/refresh-evidence.py','--results-dir',dir,'--output',output],{encoding:'utf8'}); + const good=run();assert.equal(good.status,0,good.stderr); + const data=validateEvidence(JSON.parse(readFileSync(output,'utf8')));assert.equal(data.tables[0].rows[0][2],'-');assert.equal(data.tables[0].rows[0][3],'1.25'); + const partial=data.tables.find(t=>t.id==='ppg-files').rows[0];assert.equal(partial[1],'-');assert.equal(partial[2],'1 KiB'); + rmSync(output);rmSync(join(dir,'ppg_rvq_64hz_02x_golden','quality_scorecard.json')); + assert.notEqual(run().status,0);assert.equal(existsSync(output),false); + } finally {rmSync(dir,{recursive:true,force:true});} +}); diff --git a/astro-site/scripts/export-experiments.py b/astro-site/scripts/export-experiments.py new file mode 100644 index 0000000..6bc5721 --- /dev/null +++ b/astro-site/scripts/export-experiments.py @@ -0,0 +1,15 @@ +"""Export documentation facts without importing the training package.""" + +import importlib.util +import json +import sys +from pathlib import Path + +repo = Path(__file__).resolve().parents[2] +spec = importlib.util.spec_from_file_location("docs_experiment_registry", repo / "compressionkit/experiments/registry.py") +module = importlib.util.module_from_spec(spec) +sys.modules[spec.name] = module +spec.loader.exec_module(module) +output = Path("src/data/experiments.json") +output.parent.mkdir(parents=True, exist_ok=True) +output.write_text(json.dumps([entry.model_dump(mode="json") for entry in module.GOLDEN_REGISTRY], indent=2) + "\n") diff --git a/astro-site/scripts/fidelity-data.mjs b/astro-site/scripts/fidelity-data.mjs new file mode 100644 index 0000000..2737364 --- /dev/null +++ b/astro-site/scripts/fidelity-data.mjs @@ -0,0 +1,27 @@ +const ids = ['headline', 'physiology', 'seams', 'noise', 'noise-spectral']; +export function validateFidelity(data) { + if (data.schemaVersion !== 1 || !['ppg','ecg'].includes(data.modality)) throw Error('Invalid fidelity schema/modality'); + if (!['preserved-documentation','scorecards'].includes(data.provenance?.kind) || !data.provenance.source || !/^[a-f0-9]{64}$/.test(data.provenance.sha256 ?? '')) throw Error('Invalid fidelity provenance'); + const band = data.modality === 'ppg' ? 'Pulse-band PSD err' : 'QRS-band PSD err'; + const headers = [ + ['CR','Codec CR','Effective CR','bits/tok','N','Faithful PRD%'], + ['CR','Truth PRD% (clean)','PRDN-noise%','HR MAE (bpm)',band,'Coherence'], + ['CR','Seam ratio'], + ['CR','Tertile','N','PRD%','PRDN-noise%','HR MAE'], + ['CR','Tertile',band,'Coherence'], + ]; + if (data.tables.length !== ids.length) throw Error('Expected five fidelity tables'); + const ratios = data.modality === 'ppg' ? ['02x','04x','08x','16x','32x'] : ['02x','04x','08x','16x','32x','64x']; + for (const [index,id] of ids.entries()) { + const matches=data.tables.filter(table=>table.id===id); + if(matches.length!==1)throw Error(`Missing/duplicate table: ${id}`); + const table=matches[0], noise=index>=3; + if(JSON.stringify(table.headers)!==JSON.stringify(headers[index]))throw Error(`Invalid columns: ${id}`); + const keys=noise?ratios.flatMap(r=>['clean','median','noisy'].map(t=>[r,t])):ratios.map(r=>[r]); + if(table.rows.length!==keys.length)throw Error(`Incomplete rows: ${id}`); + table.rows.forEach((row,i)=>{ + if(row.length!==table.headers.length || keys[i].some((key,j)=>row[j]!==key) || row.slice(noise?2:1).some(value=>typeof value!=='string'||!(/^(?:\d+(?:\.\d+)?|-|—)$/.test(value))))throw Error(`Invalid fidelity row: ${id} ${i}`); + }); + } + return data; +} diff --git a/astro-site/scripts/fidelity-data.test.mjs b/astro-site/scripts/fidelity-data.test.mjs new file mode 100644 index 0000000..30b66de --- /dev/null +++ b/astro-site/scripts/fidelity-data.test.mjs @@ -0,0 +1,30 @@ +import {test} from 'node:test'; +import assert from 'node:assert/strict'; +import {readFileSync,mkdtempSync,mkdirSync,writeFileSync,rmSync,existsSync} from 'node:fs'; +import {join} from 'node:path'; +import {tmpdir} from 'node:os'; +import {spawnSync} from 'node:child_process'; +import {validateFidelity} from './fidelity-data.mjs'; +const snapshot=m=>JSON.parse(readFileSync(`content-data/fidelity-${m}.json`)); +test('fidelity snapshots retain complete ratio and noise-bucket coverage',()=>{ + for(const m of ['ppg','ecg'])validateFidelity(snapshot(m)); + const invalid=snapshot('ecg');invalid.tables[3].rows.pop();assert.throws(()=>validateFidelity(invalid)); + const duplicate=snapshot('ppg');duplicate.tables[0].rows[1][0]='02x';assert.throws(()=>validateFidelity(duplicate)); +}); +test('refresh preserves zero, distinguishes missing and refuses incomplete input',()=>{ + const dir=mkdtempSync(join(tmpdir(),'ck-fidelity-')),out=join(dir,'output'); + try{ + for(const m of ['ppg','ecg'])for(const cr of m==='ppg'?[2,4,8,16,32]:[2,4,8,16,32,64]){ + const name=`${m}_rvq_${m==='ppg'?64:256}hz_${String(cr).padStart(2,'0')}x_golden`; + mkdirSync(join(dir,name));writeFileSync(join(dir,name,'quality_scorecard.json'),JSON.stringify({num_samples:10,bitrate:{cr_codec_uniform:cr},long_recording:{seam_ratio:0,stitching:{seam_ratio:7}},time_domain:{prd_percent:{mean:0}}})); + } + const run=()=>spawnSync('python3',['scripts/refresh-fidelity.py','--results-dir',dir,'--output-dir',out],{encoding:'utf8'}); + const good=run();assert.equal(good.status,0,good.stderr); + for(const m of ['ppg','ecg']){ + const d=validateFidelity(JSON.parse(readFileSync(join(out,`fidelity-${m}.json`)))); + assert.equal(d.tables[2].rows[0][1],'0.000');assert.equal(d.tables[1].rows[0][1],'—');assert.equal(d.tables[0].rows[0][5],'0.00'); + } + rmSync(out,{recursive:true});rmSync(join(dir,'ecg_rvq_256hz_64x_golden','quality_scorecard.json')); + assert.notEqual(run().status,0);assert.equal(existsSync(out),false); + }finally{rmSync(dir,{recursive:true,force:true});} +}); diff --git a/astro-site/scripts/link-audit.test.mjs b/astro-site/scripts/link-audit.test.mjs new file mode 100644 index 0000000..65cfe7c --- /dev/null +++ b/astro-site/scripts/link-audit.test.mjs @@ -0,0 +1,32 @@ +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { spawnSync } from 'node:child_process'; +const script = new URL('./check-links.mjs', import.meta.url); +function audit(href) { + const dir = mkdtempSync(join(tmpdir(), 'ck-link-audit-')); + try { + mkdirSync(join(dir, 'dist')); + writeFileSync(join(dir, 'dist/index.html'), `

Intro

Link
`); + const result = spawnSync(process.execPath, [script.pathname], { cwd: dir, encoding: 'utf8' }); + assert.ok(result.stdout, result.stderr); + return { status: result.status, ...JSON.parse(result.stdout) }; + } finally { rmSync(dir, { recursive: true, force: true }); } +} +test('same-site absolute links validate their local fragments', () => { + assert.equal(audit('https://ambiqai.github.io/compressionkit/#intro').status, 0); + const missing = audit('https://ambiqai.github.io/compressionkit/#missing'); + assert.equal(missing.status, 1); + assert.equal(missing.failures[0][2], 'anchor'); +}); +test('same-site absolute links validate local destination pages', () => { + const result = audit('https://ambiqai.github.io/compressionkit/missing/'); + assert.equal(result.status, 1); + assert.equal(result.failures[0][2], 'missing'); +}); +test('other product and external URLs stay outside the local audit', () => { + assert.equal(audit('https://ambiqai.github.io/heartkit/').count, 0); + assert.equal(audit('https://example.org/compressionkit/').count, 0); +}); diff --git a/astro-site/scripts/notebook-render.test.mjs b/astro-site/scripts/notebook-render.test.mjs new file mode 100644 index 0000000..bedea16 --- /dev/null +++ b/astro-site/scripts/notebook-render.test.mjs @@ -0,0 +1,29 @@ +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, rmSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { spawnSync } from 'node:child_process'; +const script = new URL('./build-notebooks.py', import.meta.url); +function render(metadata) { + const dir = mkdtempSync(join(tmpdir(), 'ck-notebook-')); + try { + mkdirSync(join(dir, 'examples')); + mkdirSync(join(dir, 'site')); + const source = JSON.stringify({ cells: [{cell_type: 'code', source: ['plot()'], outputs: [{data: {'image/png': ['AA==']}, metadata}]}] }); + writeFileSync(join(dir, 'examples/example.ipynb'), source); + const result = spawnSync('python3', [script.pathname], {cwd: join(dir, 'site'), encoding: 'utf8'}); + return { ...result, page: result.status === 0 ? readFileSync(join(dir, 'site/src/content/docs/guides/example.md'), 'utf8') : '', download: result.status === 0 ? readFileSync(join(dir, 'site/public/notebooks/example.ipynb'), 'utf8') : '', source }; + } finally { rmSync(dir, {recursive: true, force: true}); } +} +test('notebook plot descriptions are escaped and downloads preserve source bytes', () => { + const result = render({alt: 'Original "ECG" & reconstructed over time'}); + assert.equal(result.status, 0, result.stderr); + assert.match(result.page, /alt="Original "ECG" & reconstructed <signal> over time"/); + assert.equal(result.download, result.source); +}); +test('notebook plots without descriptions fail the build', () => { + const result = render({}); + assert.notEqual(result.status, 0); + assert.match(result.stderr, /Missing plot alternative text/); +}); diff --git a/astro-site/scripts/public-api.json b/astro-site/scripts/public-api.json new file mode 100644 index 0000000..fdcb898 --- /dev/null +++ b/astro-site/scripts/public-api.json @@ -0,0 +1,19 @@ +[ + "compressionkit.configs.ecg_rvq", + "compressionkit.configs.ppg_rvq", + "compressionkit.datasets.ppg", + "compressionkit.evaluation.artifacts", + "compressionkit.evaluation.metrics", + "compressionkit.export.tflite", + "compressionkit.models.decoder", + "compressionkit.models.encoder", + "compressionkit.models.rvq_autoencoder", + "compressionkit.preprocessing.ppg", + "compressionkit.runtime.base", + "compressionkit.runtime.codec", + "compressionkit.runtime.hybrid", + "compressionkit.runtime.loader", + "compressionkit.runtime.prior", + "compressionkit.runtime.spiht", + "compressionkit.runtime.two_stage" +] diff --git a/astro-site/scripts/publish-reference.mjs b/astro-site/scripts/publish-reference.mjs new file mode 100644 index 0000000..fd75188 --- /dev/null +++ b/astro-site/scripts/publish-reference.mjs @@ -0,0 +1,46 @@ +import { globSync, readFileSync, writeFileSync } from "node:fs"; +import { + RENDER_DEFAULTS, + buildIndex, + renderModuleMarkdown, +} from "../node_modules/@ambiqai/helia-ui/scripts/lib/reference-render.mjs"; + +const model = JSON.parse( + readFileSync("dist/reference/api/reference.json", "utf8"), +); +const options = { + ...RENDER_DEFAULTS, + base: "/compressionkit/", + site: "https://ambiqai.github.io", +}; +const index = buildIndex(model, options); +let full = readFileSync("dist/llms-full.txt", "utf8"); +function publish(module) { + const page = `${options.base}reference/api/${module.path.toLowerCase().replaceAll(".", "/")}/`; + const markdown = renderModuleMarkdown(module, { index, options }); + const marker = ``; + const start = full.indexOf(marker); + if (start < 0) throw new Error(`Missing API export section: ${page}`); + const next = full.indexOf("\n