From ae3f38daa60dcb92df29f842f2fb271a9b581d14 Mon Sep 17 00:00:00 2001 From: lostmartian Date: Thu, 3 Sep 2026 12:04:28 +0530 Subject: [PATCH] chore: extract website to kerrshift/agentdiff-website --- AGENTS.md | 6 +- CHANGELOG.md | 10 + CONTRIBUTING.md | 6 +- Makefile | 18 +- README.md | 4 +- website/.gitignore | 41 - website/AGENTS.md | 9 - .../2026-08-24-the-gate-that-grades-itself.md | 73 - .../01-Getting Started/01-Introduction.md | 47 - .../docs/01-Getting Started/02-Quickstart.md | 100 - .../docs/01-Getting Started/03-Init Wizard.md | 141 - .../02-Core Concepts/01-Trajectory DAGs.md | 106 - .../02-Core Concepts/02-Divergence Metrics.md | 72 - .../02-Core Concepts/03-Ingestion Adapters.md | 190 - .../02-Core Concepts/04-Regression Gates.md | 84 - .../docs/03-Guides/01-Reading the Report.md | 71 - .../docs/03-Guides/02-Baseline Rotation.md | 59 - website/docs/03-Guides/03-pytest Plugin.md | 68 - website/docs/03-Guides/04-PR Comments.md | 54 - website/docs/03-Guides/05-Configuration.md | 114 - website/docs/03-Guides/06-Scenario Suites.md | 80 - .../docs/03-Guides/07-A-B Benchmark Mode.md | 76 - .../03-Guides/08-Statistical Baselines.md | 98 - website/docs/03-Guides/09-Approve Bot.md | 84 - .../01-GitHub Actions Setup.md | 160 - .../02-CI CD in Action.md | 135 - .../docs/05-Development/01-Contributing.md | 79 - website/docs/05-Development/02-Cookbooks.md | 60 - website/docs/05-Development/03-Releasing.md | 66 - .../docs/05-Development/04-Custom Adapters.md | 76 - .../05-Performance Benchmarks.md | 36 - website/eslint.config.mjs | 18 - website/next-env.d.ts | 7 + website/next.config.ts | 16 - website/package.json | 40 - website/pnpm-lock.yaml | 8907 ----------------- website/pnpm-workspace.yaml | 3 - website/postcss.config.mjs | 7 - website/public/favicon.svg | 13 - website/public/file.svg | 1 - website/public/globe.svg | 1 - website/public/logo.png | Bin 5693 -> 0 bytes website/public/next.svg | 1 - website/public/og.png | Bin 86485 -> 0 bytes website/public/robots.txt | 4 - website/public/sitemap.xml | 15 - website/public/vercel.svg | 1 - website/public/window.svg | 1 - .../src/app/(site)/action/opengraph-image.tsx | 66 - website/src/app/(site)/action/page.tsx | 504 - .../app/(site)/adapters/AdaptersClient.tsx | 639 -- .../app/(site)/adapters/opengraph-image.tsx | 66 - website/src/app/(site)/adapters/page.tsx | 43 - .../(site)/blog/[slug]/opengraph-image.tsx | 143 - website/src/app/(site)/blog/[slug]/page.tsx | 206 - .../src/app/(site)/blog/opengraph-image.tsx | 131 - website/src/app/(site)/blog/page.tsx | 98 - .../app/(site)/compare/opengraph-image.tsx | 66 - website/src/app/(site)/compare/page.tsx | 514 - .../app/(site)/features/opengraph-image.tsx | 66 - website/src/app/(site)/features/page.tsx | 1174 --- website/src/app/(site)/layout.tsx | 50 - .../app/(site)/quickstart/opengraph-image.tsx | 66 - website/src/app/(site)/quickstart/page.tsx | 358 - website/src/app/docs/DocContent.tsx | 193 - website/src/app/docs/DocsShell.tsx | 332 - .../src/app/docs/[slug]/opengraph-image.tsx | 125 - website/src/app/docs/[slug]/page.tsx | 111 - website/src/app/docs/layout.tsx | 50 - website/src/app/docs/opengraph-image.tsx | 112 - website/src/app/docs/page.tsx | 34 - website/src/app/globals.css | 497 - website/src/app/layout.tsx | 173 - website/src/app/not-found.tsx | 10 - website/src/app/page.tsx | 53 - website/src/app/robots.ts | 16 - website/src/app/sitemap.ts | 66 - website/src/components/ActionSection.tsx | 282 - website/src/components/AdapterLogos.tsx | 49 - .../src/components/AnimatedTelemetryHub.tsx | 304 - website/src/components/BlogGradient.tsx | 90 - website/src/components/BlogGrid.tsx | 125 - website/src/components/BlogToc.tsx | 45 - website/src/components/BlueprintWorkspace.tsx | 123 - website/src/components/ClosingCTA.tsx | 138 - website/src/components/CodeBlock.tsx | 99 - website/src/components/CompareHeroAsset.tsx | 799 -- website/src/components/CopyCommand.tsx | 48 - website/src/components/FAQSection.tsx | 135 - .../components/FeaturesEngineHeroAsset.tsx | 324 - website/src/components/FeaturesGrid.tsx | 221 - website/src/components/Footer.tsx | 133 - website/src/components/Header.tsx | 226 - website/src/components/Hero.tsx | 133 - website/src/components/HeroBackground.tsx | 139 - .../src/components/IntegrationShowcase.tsx | 274 - website/src/components/LogoMark.tsx | 41 - website/src/components/NotFoundReport.tsx | 156 - website/src/components/OpenTelemetry.tsx | 16 - website/src/components/PRCommentShowcase.tsx | 716 -- website/src/components/ProblemSolution.tsx | 168 - website/src/components/ProofBand.tsx | 54 - website/src/components/Reveal.tsx | 55 - website/src/components/ScaleSection.tsx | 104 - website/src/components/ScrollToTop.tsx | 10 - website/src/components/StackFitSection.tsx | 139 - website/src/components/SurfacesTabs.tsx | 74 - website/src/components/TerminalWindow.tsx | 70 - website/src/components/ThemeToggle.tsx | 50 - website/src/lib/blog.ts | 158 - website/src/lib/docs.ts | 124 - website/src/lib/scenarios.ts | 87 - website/src/lib/types.ts | 22 - website/tsconfig.json | 34 - website/tsconfig.tsbuildinfo | 1 + 115 files changed, 32 insertions(+), 22954 deletions(-) delete mode 100644 website/.gitignore delete mode 100644 website/AGENTS.md delete mode 100644 website/content/blog/2026-08-24-the-gate-that-grades-itself.md delete mode 100644 website/docs/01-Getting Started/01-Introduction.md delete mode 100644 website/docs/01-Getting Started/02-Quickstart.md delete mode 100644 website/docs/01-Getting Started/03-Init Wizard.md delete mode 100644 website/docs/02-Core Concepts/01-Trajectory DAGs.md delete mode 100644 website/docs/02-Core Concepts/02-Divergence Metrics.md delete mode 100644 website/docs/02-Core Concepts/03-Ingestion Adapters.md delete mode 100644 website/docs/02-Core Concepts/04-Regression Gates.md delete mode 100644 website/docs/03-Guides/01-Reading the Report.md delete mode 100644 website/docs/03-Guides/02-Baseline Rotation.md delete mode 100644 website/docs/03-Guides/03-pytest Plugin.md delete mode 100644 website/docs/03-Guides/04-PR Comments.md delete mode 100644 website/docs/03-Guides/05-Configuration.md delete mode 100644 website/docs/03-Guides/06-Scenario Suites.md delete mode 100644 website/docs/03-Guides/07-A-B Benchmark Mode.md delete mode 100644 website/docs/03-Guides/08-Statistical Baselines.md delete mode 100644 website/docs/03-Guides/09-Approve Bot.md delete mode 100644 website/docs/04-CI CD Integration/01-GitHub Actions Setup.md delete mode 100644 website/docs/04-CI CD Integration/02-CI CD in Action.md delete mode 100644 website/docs/05-Development/01-Contributing.md delete mode 100644 website/docs/05-Development/02-Cookbooks.md delete mode 100644 website/docs/05-Development/03-Releasing.md delete mode 100644 website/docs/05-Development/04-Custom Adapters.md delete mode 100644 website/docs/05-Development/05-Performance Benchmarks.md delete mode 100644 website/eslint.config.mjs create mode 100644 website/next-env.d.ts delete mode 100644 website/next.config.ts delete mode 100644 website/package.json delete mode 100644 website/pnpm-lock.yaml delete mode 100644 website/pnpm-workspace.yaml delete mode 100644 website/postcss.config.mjs delete mode 100644 website/public/favicon.svg delete mode 100644 website/public/file.svg delete mode 100644 website/public/globe.svg delete mode 100644 website/public/logo.png delete mode 100644 website/public/next.svg delete mode 100644 website/public/og.png delete mode 100644 website/public/robots.txt delete mode 100644 website/public/sitemap.xml delete mode 100644 website/public/vercel.svg delete mode 100644 website/public/window.svg delete mode 100644 website/src/app/(site)/action/opengraph-image.tsx delete mode 100644 website/src/app/(site)/action/page.tsx delete mode 100644 website/src/app/(site)/adapters/AdaptersClient.tsx delete mode 100644 website/src/app/(site)/adapters/opengraph-image.tsx delete mode 100644 website/src/app/(site)/adapters/page.tsx delete mode 100644 website/src/app/(site)/blog/[slug]/opengraph-image.tsx delete mode 100644 website/src/app/(site)/blog/[slug]/page.tsx delete mode 100644 website/src/app/(site)/blog/opengraph-image.tsx delete mode 100644 website/src/app/(site)/blog/page.tsx delete mode 100644 website/src/app/(site)/compare/opengraph-image.tsx delete mode 100644 website/src/app/(site)/compare/page.tsx delete mode 100644 website/src/app/(site)/features/opengraph-image.tsx delete mode 100644 website/src/app/(site)/features/page.tsx delete mode 100644 website/src/app/(site)/layout.tsx delete mode 100644 website/src/app/(site)/quickstart/opengraph-image.tsx delete mode 100644 website/src/app/(site)/quickstart/page.tsx delete mode 100644 website/src/app/docs/DocContent.tsx delete mode 100644 website/src/app/docs/DocsShell.tsx delete mode 100644 website/src/app/docs/[slug]/opengraph-image.tsx delete mode 100644 website/src/app/docs/[slug]/page.tsx delete mode 100644 website/src/app/docs/layout.tsx delete mode 100644 website/src/app/docs/opengraph-image.tsx delete mode 100644 website/src/app/docs/page.tsx delete mode 100644 website/src/app/globals.css delete mode 100644 website/src/app/layout.tsx delete mode 100644 website/src/app/not-found.tsx delete mode 100644 website/src/app/page.tsx delete mode 100644 website/src/app/robots.ts delete mode 100644 website/src/app/sitemap.ts delete mode 100644 website/src/components/ActionSection.tsx delete mode 100644 website/src/components/AdapterLogos.tsx delete mode 100644 website/src/components/AnimatedTelemetryHub.tsx delete mode 100644 website/src/components/BlogGradient.tsx delete mode 100644 website/src/components/BlogGrid.tsx delete mode 100644 website/src/components/BlogToc.tsx delete mode 100644 website/src/components/BlueprintWorkspace.tsx delete mode 100644 website/src/components/ClosingCTA.tsx delete mode 100644 website/src/components/CodeBlock.tsx delete mode 100644 website/src/components/CompareHeroAsset.tsx delete mode 100644 website/src/components/CopyCommand.tsx delete mode 100644 website/src/components/FAQSection.tsx delete mode 100644 website/src/components/FeaturesEngineHeroAsset.tsx delete mode 100644 website/src/components/FeaturesGrid.tsx delete mode 100644 website/src/components/Footer.tsx delete mode 100644 website/src/components/Header.tsx delete mode 100644 website/src/components/Hero.tsx delete mode 100644 website/src/components/HeroBackground.tsx delete mode 100644 website/src/components/IntegrationShowcase.tsx delete mode 100644 website/src/components/LogoMark.tsx delete mode 100644 website/src/components/NotFoundReport.tsx delete mode 100644 website/src/components/OpenTelemetry.tsx delete mode 100644 website/src/components/PRCommentShowcase.tsx delete mode 100644 website/src/components/ProblemSolution.tsx delete mode 100644 website/src/components/ProofBand.tsx delete mode 100644 website/src/components/Reveal.tsx delete mode 100644 website/src/components/ScaleSection.tsx delete mode 100644 website/src/components/ScrollToTop.tsx delete mode 100644 website/src/components/StackFitSection.tsx delete mode 100644 website/src/components/SurfacesTabs.tsx delete mode 100644 website/src/components/TerminalWindow.tsx delete mode 100644 website/src/components/ThemeToggle.tsx delete mode 100644 website/src/lib/blog.ts delete mode 100644 website/src/lib/docs.ts delete mode 100644 website/src/lib/scenarios.ts delete mode 100644 website/src/lib/types.ts delete mode 100644 website/tsconfig.json create mode 100644 website/tsconfig.tsbuildinfo diff --git a/AGENTS.md b/AGENTS.md index 6c11f4ba3..8bd690c5b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,7 +11,11 @@ Instructions for AI coding agents and humans working in this repository. git checkout -b / ``` - **One logical change per branch, one branch per PR.** Unrelated fixes get their own branch/PR. -- **Product and website are never mixed.** `website/` changes get their own branch/PR, separate from product code (`src/`, `tests/`, `cookbooks/`, `schema/`). +- **This repo is product-only (Python).** The website lives in + [`kerrshift/agentdiff-website`](https://github.com/kerrshift/agentdiff-website) with + its own CI/CD (deploys agentdiff.app on merge to `main`); site changes + never land here. The `worker/` (token service) is product infrastructure + and stays here. - Branch naming: `feat|fix|docs|chore|test|refactor/` (e.g. `feat/recovery-step-ratio`, `docs/readme-faq`). ## Commits & PRs diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d1449af1..ed2d219b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to **AgentDiff** (`agent-trajectory-diff`) are documented he The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed +- **Website extracted to [`kerrshift/agentdiff-website`](https://github.com/kerrshift/agentdiff-website)** + (full git history preserved): this repository is now product-only Python. + The site owns its own CI/CD — GitHub Actions builds and deploys agentdiff.app + to Cloudflare Pages on every merge there. `Makefile` `website-*` targets and + the product/website PR-split rules are retired; the token-service `worker/` + remains here as product infrastructure. + ## [0.5.0] - 2026-09-02 AgentDiff v0.5.0 — the **Circuit Breaker** release: statistical baselines, an diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b669c83e7..05aef5e32 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,9 +11,9 @@ sent back. 1. **Never commit directly to `main`.** Every change lands through a branch + PR. 2. **One change per branch, one branch per PR.** If you spot an unrelated issue, open a separate branch/PR — never ride it along. -3. **Product and website don't mix.** Changes to `website/` (marketing/docs site) - get their own branch/PR, separate from product (`src/`, `tests/`, `cookbooks/`) - changes. +3. **This repo is product-only (Python).** The website lives in + [`kerrshift/agentdiff-website`](https://github.com/kerrshift/agentdiff-website) + with its own CI/CD — site changes never land here. 4. **Branch off the latest `main`:** ```bash git checkout main && git pull origin main diff --git a/Makefile b/Makefile index 0d3a43736..4342e45de 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: lint format test bench build website-dev website-build website-install ci all +.PHONY: lint format test bench build ci all # ── Python ────────────────────────────────────────────────────────────────── @@ -17,22 +17,12 @@ bench: build: uv build -# ── Website ────────────────────────────────────────────────────────────────── - -website-install: - cd website && pnpm install - -website-dev: - cd website && pnpm dev - -website-build: - cd website && pnpm build - # ── CI / Full pipeline ──────────────────────────────────────────────────────── -# Runs everything: lint → tests → Python build → website build. +# Runs everything: lint → tests → Python build. # This mirrors what GitHub Actions does on every push to main. +# (The website lives in kerrshift/agentdiff-website with its own pipeline.) -ci: lint test build website-install website-build +ci: lint test build # Alias so `make all` does the same as `make ci` all: ci diff --git a/README.md b/README.md index 895d7b65d..4fa16b046 100644 --- a/README.md +++ b/README.md @@ -199,8 +199,8 @@ make test # Build package distributions make build -# Launch the website & docs locally -make website-dev +# Website & docs (separate repo, deploys agentdiff.app) +# → github.com/kerrshift/agentdiff-website ``` ## License diff --git a/website/.gitignore b/website/.gitignore deleted file mode 100644 index 5ef6a5207..000000000 --- a/website/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/versions - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# env files (can opt-in for committing if needed) -.env* - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts diff --git a/website/AGENTS.md b/website/AGENTS.md deleted file mode 100644 index 643577dfa..000000000 --- a/website/AGENTS.md +++ /dev/null @@ -1,9 +0,0 @@ - - -# This is NOT the Next.js you know - -This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices. - -This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean. - - diff --git a/website/content/blog/2026-08-24-the-gate-that-grades-itself.md b/website/content/blog/2026-08-24-the-gate-that-grades-itself.md deleted file mode 100644 index 4bed74e4f..000000000 --- a/website/content/blog/2026-08-24-the-gate-that-grades-itself.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: "Goodhart's Law in Agent Evaluation: The Gate That Grades Itself" -date: 2026-08-24 -type: engineering -description: Goodhart's Law in AI agent evaluation - why trajectory thresholds drift, how green checks lose meaning when the metric becomes the target, and why naming the problem matters. -keywords: Goodhart's Law, agent evaluation, AI agents, trajectory evaluation, regression testing, evals, AgentDiff, thresholds, CI gates ---- - -Every agent team eventually builds the same ritual. You capture a golden trace - the agent doing the right thing - and you diff the next run against it. Some number comes out. Below the threshold, the gate opens. Above it, the PR blocks. - -It feels rigorous. The number is computed deterministically, the baseline is committed next to the code, the config lives in `agentdiff.toml` and gets reviewed like anything else. - -The fragility is not in the math. It is in what happens next, when the number blocks a release someone needs to ship. - -## A threshold is a social contract - -AgentDiff today gates on a handful of structural measures - divergence against the baseline, loop detection, cost deltas, wasted effort. Each one has a threshold. That threshold is a judgment call: how much change is acceptable before we call it a regression. - -On the first day that threshold gets set, it is calibrated honestly. Someone runs a few known-good PRs, notes where the scores land, and picks a number with a little headroom. It ships, it is reviewed, it lands in `main`. - -From that moment on, the threshold is not just a number. It is a contract between the team that owns the agent and the team that owns the gate. And like any contract, it can be renegotiated under pressure. - -## Goodhart, in plain language - -Goodhart's Law is often quoted - *when a measure becomes a target, it ceases to be a good measure* - but rarely described operationally. - -There are two flavors relevant here. - -**Regressional Goodhart** is slow and accidental. The threshold was chosen based on a snapshot of behavior. Over weeks, the agent drifts - new prompts, new tools, new model versions. Scores creep up. The gate still passes because the threshold had headroom. No one notices the drift until a real incident reveals how far the baseline has moved. - -**Adversarial Goodhart** is fast and intentional. A PR turns the gate red. The diff is not obviously wrong - the agent still answers correctly, just through a slightly different path. Rather than chase the cause, the threshold is bumped: `0.25 → 0.40`. The gate turns green. The PR merges. - -Both have the same signature from the outside: a green check. - -## How it plays in AgentDiff - -AgentDiff makes the transaction explicit, which also makes the failure mode explicit. - -A developer compares `baseline.json` against `candidate.json`. The terminal reports divergence `0.31` against a threshold of `0.25`. The CI comment renders a collapsed tree and a red status. The signal is unambiguous. - -The next action is where Goodhart enters. The developer has three options: - -1. Fix the trajectory - remove the redundant tool loop, tighten the prompt, revert the change that introduced extra recovery steps. -2. Update the baseline - accept that the agent's behavior has legitimately changed and promote the candidate to the new golden trace. -3. Loosen the threshold - leave the behavior and the baseline alone, but move the line so the same diff passes. - -Only the first two are evaluations of the agent. The third is an evaluation of the evaluation. In code review it looks similar - a one-line diff in `agentdiff.toml` - but it changes what every future PR is measured against. - -The configuration being versioned helps. You can see *who* changed the number and *when*. You can see the diff it was changed next to, if you go looking. The question Goodhart forces is whether anyone *will* go looking, and what the system does to make that comparison unavoidable. - -## What happens when gates drift - -The consequence is not dramatic. That is why it is hard to catch. - -No one announces that quality has been redefined. The suite still runs. The PR comment still posts its tidy report. The numbers are still precise to two decimals. The only thing that has changed is the mapping between those numbers and the decision to ship. - -Over time, a few dull effects accumulate. - -**Baselines age without anyone noticing.** A golden trace from three sprints ago still anchors the comparison, but the product it represented no longer exists. The diff grows not because the candidate is wrong, but because the reference is stale. Failures become noisy, which is the most effective way to make a team stop trusting a gate. - -**Green checks lose information.** When thresholds have been adjusted a few times to keep the suite quiet, a passing run no longer answers `has the agent regressed?` It answers `has the agent regressed *by more than we most recently decided to tolerate?`* The check is still green. The question it answers has changed. - -**Incidents look surprising in retrospect.** After a user-facing failure, the post-mortem pulls the traces and computes the scores. The regression was visible - extra recovery steps, a new loop entry - at a divergence of `0.34`. The threshold at the time was `0.40`. The gate had done exactly what it was told to do. - -None of these are bugs in the diff engine. They are the normal, predictable consequences of a metric under pressure without a counter-pressure that makes its own drift visible. - -## Why this is worth naming - -Most evaluation tooling treats threshold selection as a setup step - something you do once and then forget. Agent evaluation makes that framing unreliable, because the artifact being measured - an agent's trajectory - changes faster than most code, and because the teams tuning the threshold are often the same teams being measured by it. - -Naming Goodhart does not solve the problem. It just makes it discussable in a PR description without sounding accusatory, and measurable in a system that otherwise only measures the agent. - -Naming the drift is a start - the rest is keeping it visible. diff --git a/website/docs/01-Getting Started/01-Introduction.md b/website/docs/01-Getting Started/01-Introduction.md deleted file mode 100644 index c5765f534..000000000 --- a/website/docs/01-Getting Started/01-Introduction.md +++ /dev/null @@ -1,47 +0,0 @@ -# Introduction - -**AgentDiff** is a developer-first Python library and CLI for **regression-testing multi-turn, tool-using AI agents** by comparing execution paths (trajectories) head-to-head. - -AI agents are non-deterministic. They plan, call tools, retry, and loop - producing a **path** (a trace of steps) rather than a flat output. Traditional tests compare strings or use an LLM as a judge; neither can tell you *how* the agent got to an answer, or whether it got there wastefully. AgentDiff instead: - -1. **Parses** each run into a directed acyclic graph (DAG) of steps - from your own JSON, OpenInference/OTel, Langfuse, or LangSmith. -2. **Compares** a baseline run and a candidate run, computing how structurally different the two paths are. -3. **Explains** *why* they diverged and points at the **culprit step**. -4. **Gates** the change in CI/CD so regressions can't merge. - -You feed AgentDiff two runs of the same task - say, one from your `main` branch and one from a pull request - and it tells you what changed, why it matters, and whether to block the merge. - -## What it does - -- **Trajectory comparison (TDI).** A deterministic measure of how far the candidate's path diverged from the baseline's - independent of the exact words the model produced. -- **Loop detection.** Flags redundant, repeating tool-calling sequences and wasteful retries. -- **Recovery Step Ratio.** Measures how many steps a run spends getting back on track after errors, candidate versus baseline - so you catch agents that fail *cheaply* but limp back expensively. -- **Resource deltas.** Quantifies changes in cost, token usage, and latency. -- **Explanations & culprit location.** Human-readable "why" plus the specific step responsible. -- **Bring-your-own-telemetry.** Native adapters for the Generic format, OpenInference/OTel, Langfuse, LangSmith, and the OpenAI Agents SDK. Frameworks including **LangGraph**, **CrewAI**, and OpenAI Agents SDK flow in through OpenInference instrumentation or their own tracing - see the live cookbooks for working examples. -- **CI/CD native gates.** A CLI gate, a **pytest plugin**, baseline rotation, and one-command **PR comments**. - -## What it is not - -- **Not an observability dashboard.** AgentDiff doesn't store logs or act as a real-time APM. It's a test-time comparison and regression engine. -- **Not an LLM-as-a-judge framework.** It doesn't score semantic quality. It mathematically analyzes *how* the agent reached its answer - the structure, loops, and efficiency. -- **Not an agent framework.** It doesn't orchestrate or run agents; it evaluates the trajectories your existing agents already produce. - -## Local-first by design - -Agent trajectories contain your prompts, tool outputs, and often customer data. -AgentDiff makes **no network calls at diff time**, collects nothing, and needs -no account: parsing, alignment, and scoring are pure local computation. -Baselines are ordinary files committed to your repo, and CI runs entirely -inside your own perimeter. Works on a plane, in air-gapped CI, behind strict -egress firewalls. - -## Where it fits - -```text -baseline run ──┐ - ├──> AgentDiff compare ──> report (TDI, loops, cost) ──> gate / PR comment -candidate run ──┘ -``` - -Give it two runs, get an answer you can act on in CI. \ No newline at end of file diff --git a/website/docs/01-Getting Started/02-Quickstart.md b/website/docs/01-Getting Started/02-Quickstart.md deleted file mode 100644 index 6cfd08d39..000000000 --- a/website/docs/01-Getting Started/02-Quickstart.md +++ /dev/null @@ -1,100 +0,0 @@ -# Quickstart - -Get AgentDiff running in your terminal or test suite in a few minutes. - -## 1. Install - -```bash -pip install agent-trajectory-diff -# or with uv -uv add agent-trajectory-diff -``` - -This installs the `agentdiff` CLI and the `agentdiff` Python package. - -## 2. Initialize with `agentdiff init` - -Run the zero-config setup wizard in your project root. It auto-detects your agent framework (LangGraph, CrewAI, OpenAI Agents SDK, OpenTelemetry, etc.) and generates your config plus CI gate workflow: - -```bash -agentdiff init --scenario customer_support --runs 3 --with-approve -``` - -## 3. Record a statistical baseline envelope - -Capture an N-run baseline envelope so variance bands prevent false-positive CI failures: - -```bash -agentdiff record my_agent:run \ - --input '{"question": "What is AgentDiff?"}' \ - --runs 3 \ - --out baselines/customer_support.envelope.json -``` - -- `--input` takes a JSON object or `@file.json` -- `--runs 3` captures a statistical envelope with empirical mean ± k·sigma bands - -## 4. Compare candidate runs - -Run candidate executions against your baseline envelope: - -```bash -agentdiff diff baselines/customer_support.envelope.json traces/candidate.json -``` - -AgentDiff compares the candidate with min-TDI-of-N matching and variance bands: - -```text -Baseline: customer_support.envelope.json (3 runs) -Candidate: traces/candidate.json -TDI (min-of-3): 0.00 [PASS] -Step Count: 6 (band: 6.3 ± 0.9) [PASS] -Cost Delta: +2.1% [PASS] -Loops: 0 [PASS] -Status: PASSED -``` - -**Why did it diverge?** Add `--explain` for a breakdown and `--tree` for a visual comparison: - -```bash -agentdiff diff baselines/customer_support.envelope.json traces/candidate.json --explain --tree -``` - -**Gate it in CI.** Add `--fail-on-regression` to exit non-zero when hard invariants or thresholds are breached: - -```bash -agentdiff diff baselines/customer_support.envelope.json traces/candidate.json --fail-on-regression --pr 12 -``` - -The full CLI surface - including baseline rotation and PR comments - is covered -in the Guides. - -## 4. Gate it in pytest - -The pytest plugin compares each test's run against a committed baseline and -fails the test on regression: - -```bash -pytest --agentdiff -``` - -Record your current runs as the new baselines with: - -```bash -pytest --agentdiff --agentdiff-update-baselines -``` - -See the **pytest Plugin** guide for the full setup, and the `cookbooks/` -directory for runnable end-to-end examples. - -## Next steps - -Tip: enable tab-completion for the CLI: - -```bash -agentdiff --install-completion -``` - -- **Reading the Report** - what the metrics mean. -- **Regression Gates** - thresholds. -- **Ingestion Adapters** - formats you can load. \ No newline at end of file diff --git a/website/docs/01-Getting Started/03-Init Wizard.md b/website/docs/01-Getting Started/03-Init Wizard.md deleted file mode 100644 index 6e1a51870..000000000 --- a/website/docs/01-Getting Started/03-Init Wizard.md +++ /dev/null @@ -1,141 +0,0 @@ -# `agentdiff init` — Zero-Config Setup Wizard - -`agentdiff init` is the fastest way to add AgentDiff to an existing AI agent codebase. It inspects your project, auto-detects which agent framework or telemetry format you use, and generates a tailored `agentdiff.toml` policy file alongside a production-ready GitHub Actions regression gate workflow. - ---- - -## 1. Quick Usage - -Run in your project root: - -```bash -agentdiff init -``` - -The wizard scans your environment, identifies installed packages, and outputs: - -```text -Detected framework: LangGraph (StateGraph checkpoint parser) -Wrote agentdiff.toml -Wrote .github/workflows/agentdiff.yml - -Next steps: - 1. Record a baseline envelope: - agentdiff record --runs 3 --out baselines/default.envelope.json - 2. Commit agentdiff.toml, the workflow(s), and the baseline. - 3. Open a PR — AgentDiff gates it automatically. - 4. Reviewers bless accepted drift with: /agentdiff approve -``` - ---- - -## 2. Auto-Detection Matrix - -`agentdiff init` automatically detects the following frameworks by checking installed packages in your virtual environment: - -| Framework / Adapter | Package Checked | Generated Config Adapter | Generated Workflow Step | -|---|---|---|---| -| **LangGraph** | `langgraph` | `adapter.name = "langgraph"` | Ingests native LangGraph StateGraph snapshots | -| **CrewAI** | `crewai` | `adapter.name = "crewai"` | Ingests multi-agent task hierarchy & CrewOutput dumps | -| **OpenAI Agents SDK** | `agents` | `adapter.name = "openai_agents"` | Ingests official OpenAI Agents SDK run trees | -| **OpenTelemetry / OpenInference** | `opentelemetry-api` | `adapter.name = "openinference"` | Standard GenAI span ingestion | -| **Generic Python** | *(fallback)* | `adapter.name = "auto"` | Ingests canonical AgentTrace JSON | - -### Overriding Detection with `--adapter` - -If you are using multiple frameworks or want to specify an adapter explicitly, pass `--adapter`: - -```bash -agentdiff init --adapter crewai -``` - ---- - -## 3. CLI Flags & Options - -```bash -agentdiff init [OPTIONS] -``` - -| Flag | Default | Description | -|---|---|---| -| `--scenario ` | `default` | Scenario name written into `agentdiff.toml` and workflow files. | -| `--runs ` | `3` | Number of sample runs configured for statistical baseline envelopes. | -| `--adapter ` | *(auto-detected)* | Override framework detection (`langgraph`, `crewai`, `openai_agents`, `openinference`, `generic`). | -| `--with-approve` | `false` | Also generate `.github/workflows/agentdiff-approve.yml` for in-PR `/agentdiff approve` re-baselining. | -| `--force` | `false` | Overwrite existing `agentdiff.toml` or workflow files if they already exist. | - ---- - -## 4. Generated Artifacts - -### 1. `agentdiff.toml` (v0.5 Spec) - -```toml -[scenario.customer_support] -mode = "statistical" -sample_runs = 3 -max_cost_increase_pct = 5.0 - -[scenario.customer_support.hard_invariants] -fail_on_identical_loops = true -max_tool_repeats = 3 - -[scenario.customer_support.tolerances] -step_count_std_dev = 2.0 -divergence_ceiling = 0.35 -``` - -### 2. `.github/workflows/agentdiff.yml` - -```yaml -name: AgentDiff Gate - -on: - pull_request: - -permissions: - contents: read - pull-requests: write - -jobs: - gate: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: "3.11" - - - name: Install dependencies - run: | - pip install agent-trajectory-diff - - - name: Record Candidate Run - run: | - agentdiff record my_agent:run \ - --input '{"query": "sample query"}' \ - --out traces/candidate.json - - - name: Run AgentDiff Gate - uses: kerrshift/agentdiff/.github/actions/agentdiff-check@v0.5.0 - with: - baseline: baselines/customer_support.envelope.json - candidate: traces/candidate.json - pr: ${{ github.event.number }} - github-token: ${{ secrets.GITHUB_TOKEN }} -``` - -### 3. `.github/workflows/agentdiff-approve.yml` (when `--with-approve` is used) - -Writes the command listener workflow that reacts to `/agentdiff approve` comments by repository maintainers, authenticating with the hosted `token.agentdiff.app` identity service and flipping the Checks API result. - ---- - -## Next Steps - -- Learn how [Statistical Baselines](08-Statistical%20Baselines.md) prevent flaking on non-deterministic agents. -- Explore the interactive [Approve Bot](09-Approve%20Bot.md) workflow. -- Review [Regression Gates](../02-Core%20Concepts/04-Regression%20Gates.md) for hard invariant details. diff --git a/website/docs/02-Core Concepts/01-Trajectory DAGs.md b/website/docs/02-Core Concepts/01-Trajectory DAGs.md deleted file mode 100644 index 99be48dd9..000000000 --- a/website/docs/02-Core Concepts/01-Trajectory DAGs.md +++ /dev/null @@ -1,106 +0,0 @@ -# Trajectory DAGs - -AgentDiff translates a multi-turn execution sequence into a **directed acyclic graph (DAG)** of steps. Each node is a step (a tool call, an LLM call, a routing decision, or a thought); edges follow the parent-child flow of execution. - -## Canonical data model - -AgentDiff uses Pydantic (v2+) for strongly-typed trace schemas. - -### `AgentTrace` - one run - -| Field | Type | Notes | -| --- | --- | --- | -| `schema_version` | `str` | Format version (`"1.0.0"`). | -| `trace_id` | `str` | Unique ID for the run. | -| `agent_name` | `str` | Name of the agent. | -| `agent_version` | `str?` | Optional agent version. | -| `task_input` | `dict` | The task given to the agent. | -| `final_output` | `dict?` | The agent's final answer. | -| `steps` | `list[TraceStep]` | Ordered execution steps. | -| `total_latency_ms` | `float?` | Total duration in ms. | -| `total_tokens` | `TokenUsage?` | Aggregated token/cost metadata. | -| `metadata` | `dict?` | Free-form extra data. | - -### `TraceStep` - one node - -| Field | Type | Notes | -| --- | --- | --- | -| `step_id` | `str` | Unique identifier. | -| `parent_id` | `str?` | Parent step id (defines hierarchy). | -| `step_index` | `int` | Sequential position in the run. | -| `step_type` | `StepType` | `tool_call`, `llm_call`, `routing`, or `thought`. | -| `name` | `str` | Action name, e.g. `web_search`. | -| `input_payload` | `dict` | Arguments to the step. | -| `output_payload` | `dict?` | Return values. | -| `status` | `StepStatus` | `success`, `error`, `retry`, or `abandoned`. | -| `error_message` | `str?` | Set when the step errored. | -| `latency_ms` | `float?` | Duration in ms. | -| `tokens` | `TokenUsage?` | Token counts and cost. | -| `metadata` | `dict?` | Free-form extra data. | - -### `TokenUsage` - -`prompt_tokens`, `completion_tokens`, `total_tokens`, `estimated_cost_usd`. - -## Example (Generic format) - -```json -{ - "schema_version": "1.0.0", - "trace_id": "run-101", - "agent_name": "WeatherAgent", - "task_input": { "query": "weather in NYC" }, - "final_output": { "answer": "It is sunny and 75F in NYC." }, - "steps": [ - { - "step_id": "step-1", - "step_index": 0, - "step_type": "tool_call", - "name": "geocode_city", - "input_payload": { "city": "NYC" }, - "output_payload": { "lat": 40.71, "lng": -74.0 }, - "status": "success", - "latency_ms": 120.0, - "tokens": { "prompt_tokens": 0, "completion_tokens": 0, "total_tokens": 0, "estimated_cost_usd": 0.0 } - }, - { - "step_id": "step-2", - "parent_id": "step-1", - "step_index": 1, - "step_type": "llm_call", - "name": "generate_report", - "input_payload": { "lat": 40.71, "lng": -74.0 }, - "output_payload": { "report": "sunny, 75 degrees" }, - "status": "success", - "latency_ms": 1100.0, - "tokens": { "prompt_tokens": 150, "completion_tokens": 80, "total_tokens": 230, "estimated_cost_usd": 0.0035 } - } - ], - "total_latency_ms": 1220.0, - "total_tokens": { "prompt_tokens": 150, "completion_tokens": 80, "total_tokens": 230, "estimated_cost_usd": 0.0035 } -} -``` - -## Working with the graph in Python - -Load a trace and inspect it as a NetworkX graph: - -```python -import networkx as nx -from agentdiff import load_trace - -trace = load_trace("run.json") # auto-detects the format -digraph: nx.DiGraph = trace.to_networkx() - -print(list(nx.topological_sort(digraph))) -``` - -You can also parse raw dict data without a file: - -```python -from agentdiff.loader import parse_trace_data - -trace = parse_trace_data(raw_dict, adapter_name="generic") -``` - -See [Ingestion Adapters](03-Ingestion-Adapters.md) for the supported formats. \ No newline at end of file diff --git a/website/docs/02-Core Concepts/02-Divergence Metrics.md b/website/docs/02-Core Concepts/02-Divergence Metrics.md deleted file mode 100644 index 7d87a4c72..000000000 --- a/website/docs/02-Core Concepts/02-Divergence Metrics.md +++ /dev/null @@ -1,72 +0,0 @@ -# Divergence & Regression Metrics - -AgentDiff computes deterministic metrics that compare how an agent's execution -path and resource use change between a baseline and a candidate run. - -## 1. Trajectory Divergence Index (TDI) - -TDI measures the structural difference between two execution paths, computed -from the Longest Common Subsequence (LCS) of their steps: - -$$TDI = 1.0 - \frac{2 \times \vert{}\text{LCS}(\text{Steps}_A, \text{Steps}_B)\vert{}}{\vert{}\text{Steps}_A\vert{} + \vert{}\text{Steps}_B\vert{}}$$ - -- **Range:** `0.0` (identical path) to `1.0` (completely different path). -- **Equivalence:** two steps match in the LCS when their step type, action - name, and input-payload keys are equal. This ignores exact wording and only - cares about *how* the agent navigated. - -## 2. Wasted Effort Index (WEI) - -WEI is the share of a run spent on error, retry, or abandoned steps: - -$$\text{WEI} = \frac{\text{Count}(\text{steps with status} \in \{\text{error, retry, abandoned}\})}{\text{Total steps}}$$ - -- **Range:** `0.0` (no waste) to `1.0` (fully wasted). -- AgentDiff reports WEI for **both** the baseline and the candidate so you can - see whether a refactor made the agent fail or retry more often. - -## 3. Loop detection - -A loop is a subsequence of steps that repeats consecutively (often with -stagnant inputs/outputs) - a sign of redundant tool calls or near-infinite -retries. The report lists each detected loop; the pytest plugin and CLI gate -fail when the loop count exceeds your threshold. - -## 4. Recovery Step Ratio (RSR) - -WEI tells you a run failed; RSR tells you how *expensive* it was to get back -on track afterward. - -A **recovery window** opens at every step whose status is `error`, `retry`, or -`abandoned`. Successful steps executed while the window is open count as -recovery effort; the window closes at the first step that re-aligns with the -other trace (the same matches TDI's LCS counts). If the run ends before it -re-aligns, all remaining successful steps count as unrecovered effort. - -$$\text{RSR} = \frac{\text{Recovery}_{\text{Candidate}}}{\text{Recovery}_{\text{Baseline}}}$$ - -- **Range:** `0.0` (no recovery needed anywhere) upward; `1.0` means the - candidate recovered in the same number of steps as the baseline, and values - above `1.0` mean recovery got more expensive. -- When the baseline is clean but the candidate needed recovery, there is no - denominator — the raw candidate step count is reported instead, since every - recovery step is pure regression overhead. -- The report includes both sides (`baseline_recovery_steps`, - `candidate_recovery_steps`) plus the ratio (`recovery_step_ratio`). -- Gate on it with the opt-in `--max-recovery-ratio` CLI flag / - `[cli] max_recovery_ratio` config key, or - `assert_no_regressions(..., max_recovery_step_ratio=...)`. - -## 5. Resource deltas - -Percentage change in cost, tokens, and latency between candidate and baseline: - -$$\Delta\text{Cost} = \frac{\text{Cost}_{\text{Candidate}} - \text{Cost}_{\text{Baseline}}}{\text{Cost}_{\text{Baseline}}} \times 100$$ - -Analogous deltas are reported for **total tokens** and **latency**. - -## Seeing it all together - -The **Reading the Report** guide shows the -full report, plus the `--explain` and `--tree` views that make these numbers -actionable. \ No newline at end of file diff --git a/website/docs/02-Core Concepts/03-Ingestion Adapters.md b/website/docs/02-Core Concepts/03-Ingestion Adapters.md deleted file mode 100644 index 04f08f05f..000000000 --- a/website/docs/02-Core Concepts/03-Ingestion Adapters.md +++ /dev/null @@ -1,190 +0,0 @@ -# Ingestion Adapters - -AgentDiff is telemetry-agnostic: it normalizes traces from your favorite LLM -observability tools into the canonical `AgentTrace` format, so you can diff runs -from any source. - -## Loading a trace - -`load_trace()` auto-detects the source format: - -```python -from agentdiff import load_trace - -trace = load_trace("run_data.json") # auto-detects the format -``` - -Force a specific adapter with `adapter_name`: - -```python -trace = load_trace("run_data.json", adapter_name="openinference") -``` - -To parse raw dict data without a file, use `parse_trace_data`: - -```python -from agentdiff.loader import parse_trace_data - -trace = parse_trace_data(raw_dict, adapter_name="langfuse") -``` - -## Supported adapters - -| Adapter name | `adapter_name` | Input | -| --- | --- | --- | -| Generic | `generic` | JSON matching the canonical `AgentTrace` schema 1-to-1. | -| OpenInference / OTel | `openinference` | Standard OTel span collections (e.g. Arize Phoenix, Traceloop). | -| Langfuse | `langfuse` | Exported Langfuse observation dumps. | -| LangSmith | `langsmith` | LangSmith run-trees (nested `run` objects). | -| OpenAI Agents SDK | `openai_agents` | OpenAI Agents SDK trace exports (a `trace` of `spans`). | -| LangGraph | `langgraph` | Native state snapshots, checkpoint dumps, and message lists - no OTel needed. | -| CrewAI | `crewai` | Native kickoff output (`CrewOutput.model_dump()`) - no OTel needed. | -| *Your own* | *(registered)* | Anything - register a custom adapter at runtime or via entry points. | - -### LangGraph (`langgraph`) - -Ingests what LangGraph users actually have on disk: - -- **Message lists** - `result["messages"]` serialized via - `langchain_core.messages.message_to_dict`, as LangChain constructor dumps - (`{"lc": 1, "id": [...], "kwargs": ...}`), or plain OpenAI-style role dicts. -- **State snapshots** - `{"values": {"messages": [...]}}`. -- **Checkpoint dumps** - `{"channel_values": {"messages": [...]}}`. - -Mapping mirrors real graph execution: AI tool calls become `routing` steps, -tool results become `tool_call` steps (the message's own `status` field is -honored), and the final AI answer becomes a `response` step. Token usage is -read from `usage_metadata` / `response_metadata.token_usage`. - -### CrewAI (`crewai`) - -Ingests `crew.kickoff()` output serialized with `model_dump()`: - -- Each task's embedded message log maps to fine-grained steps prefixed by the - agent's role (`Reporter/db_stats`), so multi-task crews stay unambiguous. -- Simplified exports without logs degrade gracefully to one step per task. -- Aggregate `token_usage` populates trace totals. - -Both direct-ingestion adapters share one tested conversation-parsing engine, -so role messages are interpreted identically across frameworks. Real captured -fixtures ship as cookbooks - see `cookbooks/ingestion_langgraph.py` and -`cookbooks/ingestion_crewai.py`. - -## Custom adapters & plugins - -Teams with proprietary trace formats can register their own adapters: - -```python -from agentdiff import BaseAdapter, register_adapter - -@register_adapter("acme", aliases=("acme_tracer",)) -class AcmeAdapter(BaseAdapter): - @classmethod - def from_dict(cls, data): - return build_trace_from_acme(data) # your mapping - - @classmethod - def detect(cls, data): # optional: join auto-detection - return data.get("vendor") == "acme" -``` - -```python -trace = load_trace("run.json", adapter_name="acme") # explicit... -trace = load_trace("run.json") # ...or auto-detected -``` - -Third-party packages can also expose adapters through the standard Python -entry-point group so they are discovered automatically: - -```toml -[project.entry-points."agentdiff.adapters"] -acme = "acme_sdk.agentdiff:AcmeAdapter" -``` - -Built-ins always win detection priority, and plugins can never shadow them - -registering an adapter never changes how existing telemetry is classified. -See [Custom Adapters](../05-Development/04-Custom-Adapters.md) for the full -guide. - -### Generic (`generic`) - -Maps your JSON directly onto `AgentTrace` / `TraceStep`. Use this when you -record your own runs (as in the live SDK cookbooks) or when your framework -exports the canonical schema. - -### OpenInference / OTel (`openinference`) - -Parses OTel span collections: - -- Root spans are identified by an empty `parent_span_id`. -- Attributes prefixed with `openinference.span.kind`, `input.value`, and - `output.value` are mapped to step type, input, and output. -- LLM token metrics (`llm.token_count.prompt`, `llm.token_count.completion`) - are read into token usage. - -### Langfuse (`langfuse`) - -Parses exported Langfuse observation dumps: - -- `type: "GENERATION"` → `llm_call`. -- `type: "SPAN"` with a name containing `tool` → `tool_call`. -- `startTime` / `endTime` ISO timestamps → duration latency. - -### LangSmith (`langsmith`) - -Parses LangSmith run-trees (nested `run` objects) into ordered steps: - -- `run_type`: `tool`/`retriever` → `tool_call`; `llm`/`prompt`/`embedding` → - `llm_call`; `agent`/`chain` → `routing`. -- `child_runs` are flattened recursively while preserving the hierarchy. -- Token usage comes from `usage_metadata` / `extra.metadata.usage`; errored - runs are marked via the `error` field. - -### OpenAI Agents SDK (`openai_agents`) - -Parses OpenAI Agents SDK trace exports - a top-level `trace` object with a flat -list of `spans`, each carrying a `span_data.type`: - -- `agent` / `guardrail` / `handoff` → `routing`. -- `generation` / `response` → `llm_call` (tokens from `usage`). -- `function` → `tool_call`. -- `custom` → `thought`. -- `task` and `turn` are internal bookkeeping wrappers and are skipped. -- Spans are ordered chronologically by `started_at`; latency comes from the - span timestamps; errored spans are marked via the `error` field. - -The `openai_agents` name also works from the CLI and is auto-detected from the -`spans`/`span_data` structure. - -## Load any two runs and compare - -```python -from agentdiff import load_trace, compare - -baseline = load_trace("baseline.json") # e.g. a Langfuse export -candidate = load_trace("candidate.json") # e.g. a LangSmith run-tree - -report = compare(baseline, candidate) -``` - -You can mix formats: the baseline and candidate are both normalized to -`AgentTrace` first, so comparing a Langfuse run against a LangSmith run "just -works." Runnable examples live in the `cookbooks/ingestion_*.py` scripts. - -### `compare()` options - -```python -report = compare( - baseline, - candidate, - detect_loops=True, # scan for repeating tool-calling loops - strict_tool_signatures=False, # match steps on exact tool signatures -) -``` - -- `detect_loops` (default `True`): whether to search the candidate run for - repeating tool sequences. Disable if your agent legitimately calls a tool in - a loop. -- `strict_tool_signatures` (default `False`): when `True`, two steps only match - if their action name *and* input payload keys are identical. `False` matches - on step type + name only. \ No newline at end of file diff --git a/website/docs/02-Core Concepts/04-Regression Gates.md b/website/docs/02-Core Concepts/04-Regression Gates.md deleted file mode 100644 index 1785d1b99..000000000 --- a/website/docs/02-Core Concepts/04-Regression Gates.md +++ /dev/null @@ -1,84 +0,0 @@ -# Regression Gates - -AgentDiff lets you define thresholds so a change either **passes** or **blocks** -in CI. There are two ways to gate: the `assert_no_regressions` helper in Python, -and the CLI's `--fail-on-regression` flag. - -## Python: `assert_no_regressions` - -```python -from agentdiff.testing import assert_no_regressions - -assert_no_regressions( - report, - max_divergence=0.25, # max TDI (default 0.25) - max_cost_increase_pct=5.0, # max cost increase %, default 5.0 - allow_loops=False, # reject any detected loop - max_wasted_effort=0.10, # max WEI, default 0.10 - max_recovery_step_ratio=1.5, # opt-in: max RSR (None = disabled) -) -``` - -Raises an `AssertionError` naming each violated threshold if any metric exceeds -its boundary: - -```text -AssertionError: AgentDiff Regression Verification Failed: - - Trajectory Divergence Index (TDI) of 0.3333 exceeded threshold of 0.2500. - - Candidate Wasted Effort Index (WEI) of 0.2500 exceeded threshold of 0.1000. -``` - -## Hard Invariants vs. Soft Findings - -In AgentDiff 0.5.0, regression gates decouple **fatal architectural bugs** (hard invariants) from **evaluative drift** (soft findings): - -| Gate Category | Rule | Severity | Exit Code | Blessable in PR? | -|---|---|---|---|---| -| **Hard Invariant** | Identical Cyclical Loops (`fail_on_identical_loops = true`) | `BLOCK` | Exit `1` | ❌ Never | -| **Hard Invariant** | Tool Repeat Cap (`max_tool_repeats = 3`) | `BLOCK` | Exit `1` | ❌ Never | -| **Hard Invariant** | Error Recovery Cascade (Recovery ratio $\ge 3\times$) | `BLOCK` | Exit `1` | ❌ Never | -| **Soft Finding** | Trajectory Divergence Index ($> \text{ceiling}$) | `WARN` / `FAIL` | Exit `1` | ✅ Yes (`/agentdiff approve`) | -| **Soft Finding** | Token Cost Delta ($> \text{max\_cost\_delta}$) | `WARN` / `FAIL` | Exit `1` | ✅ Yes (`/agentdiff approve`) | - -## CLI: `agentdiff diff` - -```bash -agentdiff diff baselines/default.envelope.json traces/candidate.json --fail-on-regression -``` - -Exits with code `1` when a regression is detected. The CLI default thresholds are: - -| Flag | Default | Meaning | -| --- | --- | --- | -| `--max-divergence` | `0.3` | Max TDI before regression. | -| `--max-loops` | `0` | Max loop count before regression. | -| `--max-cost-delta` | `10.0` | Max cost increase % before regression. | -| `--max-recovery-ratio` | `3.0` | Max Recovery Step Ratio before blocking (default hard gate at 3.0×). | - -```bash -agentdiff diff baselines/default.envelope.json traces/candidate.json \ - --fail-on-regression \ - --max-divergence 0.25 \ - --max-cost-delta 5.0 -``` - -These defaults can also be committed in an `agentdiff.toml` (see -[Configuration](../03-Guides/05-Configuration.md)) - explicit flags still win. - -## pytest plugin - -The same gating is available as a pytest plugin: - -```bash -pytest --agentdiff --agentdiff-max-divergence 0.2 -``` - -See the **pytest Plugin** guide. - -## Tuning the thresholds - -There's no universal "right" value. Start conservative (low `max_divergence`, -`allow_loops=False`) and loosen as you learn what changes are intentional. Use -`--max-drift` and baseline rotation to control how often the baseline advances -instead of letting gates creep silently - see -[Baseline Rotation]. \ No newline at end of file diff --git a/website/docs/03-Guides/01-Reading the Report.md b/website/docs/03-Guides/01-Reading the Report.md deleted file mode 100644 index 9b99ba268..000000000 --- a/website/docs/03-Guides/01-Reading the Report.md +++ /dev/null @@ -1,71 +0,0 @@ -# Reading the Report - -`compare()` returns a `DiffReport`, but the numbers only help if you can act on -them. AgentDiff ships three views that turn the metrics into an answer. - -## The terminal report - -```text -Trajectory Divergence Index (TDI): 0.33 -Loops Detected: 1 -Candidate Wasted Effort (WEI): 0.00 -Recovery Steps (base/cand): 0 / 2 (RSR 2.00) -Cost Delta: +41.0% -Status: REGRESSION -``` - -The recovery line shows how many successful steps each run spent getting back -on track after errors - see [Divergence Metrics](../02-Core%20Concepts/02-Divergence-Metrics.md) -for the exact definition of RSR. - -## `--explain` - why did it diverge? - -Human-readable findings that describe the concrete differences between the two -runs - added, removed, or modified steps, new loops, and resource changes. - -```bash -agentdiff baseline.json candidate.json --explain -``` - -```text -Finding: step "search_database" was added 2 times in the candidate run. -Finding: a tool-calling loop of length 1 repeats 3 times. -Finding: candidate needed 2 successful step(s) to recover from errors vs 0 in the baseline (Recovery Step Ratio 2.00). -Finding: candidate cost increased by 41.0% over baseline. -``` - -In Python, use `generate_explanations(report)` (returns structured findings) or -`format_explanations(report)` (returns the formatted text). - -## `--tree` - where did it diverge? - -A collapsed, capped visual comparison of the two paths, side by side. Matched -runs are collapsed so you can focus on the parts that actually changed. - -```bash -agentdiff baseline.json candidate.json --tree -``` - -In Python: `render_tree(report)`. - -## Culprit step - what to fix first - -AgentDiff can point at the single step most responsible for the divergence, -prioritizing loop entries, then added steps, then errored steps, then modified -steps. - -```python -from agentdiff import compare, load_trace -from agentdiff.engine.explanations import locate_culprit - -report = compare(load_trace("base.json"), load_trace("cand.json")) -culprit = locate_culprit(report) # Culprit | None -if culprit: - print(culprit.step_id, culprit.reason) -``` - -## Pull-request format - -`--format pr` produces paste-ready markdown (status, metrics, divergence tree, -culprit) for a pull request. See [PR Comments](04-PR-Comments.md) for posting it -automatically. \ No newline at end of file diff --git a/website/docs/03-Guides/02-Baseline Rotation.md b/website/docs/03-Guides/02-Baseline Rotation.md deleted file mode 100644 index 204142f77..000000000 --- a/website/docs/03-Guides/02-Baseline Rotation.md +++ /dev/null @@ -1,59 +0,0 @@ -# Baseline Rotation - -As your agent legitimately changes over time, the baseline must advance too - -but it should advance **deliberately**, not silently. Baseline rotation -controls when the committed baseline is replaced. - -## Persistent baseline - -Point at a persistent baseline file that AgentDiff establishes and advances: - -```bash -# first run: establish the baseline (with --update-baseline) -agentdiff baseline.json candidate.json --baseline prod.json --update-baseline - -# later runs: compare against the stored baseline, no candidate file needed -agentdiff candidate.json --baseline prod.json -``` - -- `--baseline ` (or `-b`): the persistent baseline trace file. -- `--update-baseline`: overwrite the persistent baseline with the candidate - *after* a clean diff. - -## Rotation policies - -`--baseline-rotation` selects how a clean run may become the new baseline: - -| Policy | Behavior | -| --- | --- | -| `manual` (default) | The baseline only changes when you pass `--update-baseline`. | -| `auto` | A clean run automatically replaces the baseline. | -| `staged` | A clean run replaces the baseline only if it's close enough to the current one (guarded by `--max-drift`). | - -`--max-drift` sets the max TDI a clean run may have for `staged` auto-rotation -(default `0.05`), preventing large jumps from silently re-baselining. - -## Guarding against drift creep - -Without rotation, thresholds never move and intentional changes fail forever. -Without **drift guards**, baselines silently chase every small change and -regressions slip through. The combination you want is usually: - -- `manual` + `--update-baseline` for most workflows, or -- `staged` with a small `--max-drift` for fully automated pipelines. - -## In Python - -```python -from agentdiff.ci.baseline import decide_rotation - -decision = decide_rotation( - report, - policy="staged", # manual | auto | staged - max_drift=0.05, - explicit_update=False, -) -# decision tells you whether/how to advance the baseline -``` - -See the `cookbooks/baseline_rotation.py` example for a complete walkthrough. \ No newline at end of file diff --git a/website/docs/03-Guides/03-pytest Plugin.md b/website/docs/03-Guides/03-pytest Plugin.md deleted file mode 100644 index f119436ad..000000000 --- a/website/docs/03-Guides/03-pytest Plugin.md +++ /dev/null @@ -1,68 +0,0 @@ -# pytest Plugin - -The AgentDiff pytest plugin turns your test suite into a trajectory regression -gate. Each test records its run; on teardown the plugin compares it against a -committed baseline (keyed by the test's nodeid) and **fails the test** on -regression. - -## Enable it - -The plugin registers itself when AgentDiff is installed. Enable per run: - -```bash -pytest --agentdiff -``` - -## Record a run - -Use the `agentdiff_trace` fixture to record your test's trace: - -```python -def test_returns_orders(agentdiff_trace): - agentdiff_trace.record(build_candidate_trace()) - # ... your assertion ... -``` - -The trace can be a dict in any supported format, or an `AgentTrace` instance. - -## Committed baselines - -Baselines live in a directory (default `baselines/`), one JSON file per test, -named from the test's nodeid: - -```text -baselines/ - test_agent.py_test_returns_orders.json -``` - -Generate them once, then commit them: - -```bash -pytest --agentdiff --agentdiff-update-baselines -``` - -## Options - -| Flag | Default | Meaning | -| --- | --- | --- | -| `--agentdiff` | off | Enable trajectory regression checks. | -| `--agentdiff-baselines` | `baselines` | Directory of committed baseline JSONs. | -| `--agentdiff-max-divergence` | `0.3` | Max TDI before regression. | -| `--agentdiff-max-loops` | `0` | Max loop count before regression. | -| `--agentdiff-max-cost-delta` | `10.0` | Max cost increase % before regression. | -| `--agentdiff-update-baselines` | off | Record current runs as the new baselines. | - -## A note on loops - -A loop is flagged on the run itself, independent of the baseline. So a test -whose candidate loops will keep failing even after you re-baseline, unless you -raise `--agentdiff-max-loops` or remove the loop. - -## Full example - -A complete, runnable mini-project lives in `cookbooks/pytest_plugin_demo/`. -Run it with: - -```bash -cd cookbooks/pytest_plugin_demo -pytest --agentdiff --agentdiff-baselines baselines # expect a regression \ No newline at end of file diff --git a/website/docs/03-Guides/04-PR Comments.md b/website/docs/03-Guides/04-PR Comments.md deleted file mode 100644 index 9c2691f65..000000000 --- a/website/docs/03-Guides/04-PR Comments.md +++ /dev/null @@ -1,54 +0,0 @@ -# PR Comments - -Send the report straight to a GitHub pull request so reviewers see the -regression without leaving their terminal. - -## Generate PR-ready markdown - -`--format pr` produces a clean, paste-ready report: pass/fail status, metrics, -a divergence tree, and the culprit step. - -```bash -agentdiff baseline.json candidate.json --format pr -``` - -Or write it to a file: - -```bash -agentdiff baseline.json candidate.json --format pr --output-file pr_comment.md -``` - -## Post it automatically - -Post the markdown as a comment to a GitHub PR number: - -```bash -agentdiff baseline.json candidate.json --format pr --pr 42 -``` - -AgentDiff uses the standard `GITHUB_TOKEN` environment variable to authenticate -(no extra dependencies). The endpoint is the repository of the current git -remote. - -## The Python helpers - -```python -from agentdiff.reporters.pr import generate_pr_markdown -from agentdiff.ci.github import post_pr_comment - -md = generate_pr_markdown(report, baseline_name="main", candidate_name="pr") -post_pr_comment(repo, pr_number, md, token) -``` - -## Pair with the CI gate - -Post the report **and** gate the pipeline on the same run: - -```bash -agentdiff baseline.json candidate.json \ - --format pr \ - --pr 42 \ - --fail-on-regression -``` - -If the change regresses, the pipeline fails *and* the PR comment explains why. \ No newline at end of file diff --git a/website/docs/03-Guides/05-Configuration.md b/website/docs/03-Guides/05-Configuration.md deleted file mode 100644 index 7c4c493c6..000000000 --- a/website/docs/03-Guides/05-Configuration.md +++ /dev/null @@ -1,114 +0,0 @@ -# Configuration (`agentdiff.toml`) - -Commit your regression thresholds, adapter, and baseline path next to your -traces instead of repeating them as CLI flags. AgentDiff auto-discovers an -`agentdiff.toml` file from the current directory upward, or you can point at it -explicitly with `--config`. - -## Example (`agentdiff.toml` v0.5) - -```toml -[compare] -detect_loops = true -strict_tool_signatures = false - -[adapter] -name = "auto" # auto, generic, langgraph, crewai, openai_agents, openinference, langfuse, langsmith - -# Default scenario configuration -[scenario.default] -mode = "statistical" # "statistical" (envelope mode) or "strict" (single run) -sample_runs = 3 # Rolling window size for envelopes -max_cost_increase_pct = 5.0 - -[scenario.default.hard_invariants] -fail_on_identical_loops = true -max_tool_repeats = 3 - -[scenario.default.tolerances] -step_count_std_dev = 2.0 -divergence_ceiling = 0.35 - -[cli] -format = "terminal" # terminal, json, markdown, pr -baseline = "baselines/default.envelope.json" -max_loops = 0 -max_divergence = 0.3 -max_cost_delta = 10.0 -max_recovery_ratio = 3.0 -``` - -## Precedence - -Values in the TOML are *defaults*. Any explicit CLI flag still wins over the -config file. This lets you commit sensible team-wide defaults while still -overriding them for a one-off run: - -```bash -agentdiff baseline.json candidate.json --max-divergence 0.5 -``` - -## Gate governance (Goodhart guard) - -A threshold tuned until CI goes green stops being a control. Pass -`--baseline-config` to compare the gate values the *baseline* was recorded -with against the ones this run uses — any change is flagged right next to -the diff it let through: - -```bash -# In CI: fetch the config the baseline was recorded against, then diff -git show origin/main:agentdiff.toml > /tmp/baseline-agentdiff.toml -agentdiff baseline.json candidate.json --baseline-config /tmp/baseline-agentdiff.toml --format pr -``` - -The PR comment renders a warning block above the gate table: - -```text -> [!WARNING] -> Gate thresholds changed in this PR — the diff below was judged -> against this PR's rules, not the baseline's. -> - max_divergence: `0.25` → `0.4` -``` - -The same summary prints with `--explain`. Loosening a gate is now as -visible in review as the code it guards. - -Every report also self-describes its rules: a one-line gate provenance -(`Gate: max_divergence=0.3, max_loops=0, ... - source: agentdiff.toml`) -appears in the terminal summary, the JSON (`gate_provenance` field), and -the PR comment footer - so a diff always answers "what rules judged me?". - -### Stale baselines - -Thresholds aren't the only thing that drifts - baselines age too. A golden -trace from three sprints ago still anchors every diff, but the behavior it -represents may be long gone. With `--explain`, AgentDiff warns when the -baseline file is older than `stale_baseline_days` (default 30): - -```text -! Baseline is 47 days old (last modified 2026-07-10). Stale threshold is - 30 days - consider re-recording it if the agent's expected behavior has - legitimately changed (agentdiff record ... --update-baseline). -``` - -Tune or disable per project: - -```toml -[cli] -stale_baseline_days = 14 # any positive number; advisory only, never blocks -``` - -## From the SDK - -You can load config programmatically with `load_config()`, which returns an -`AgentDiffConfig` populated with defaults overlaid with your file: - -```python -from agentdiff import load_config - -cfg = load_config("agentdiff.toml") -print(cfg.cli.max_divergence) # 0.3 if unset in the file -``` - -`find_config_file()` walks the directory tree looking for `agentdiff.toml`, so -a config at your project root applies to runs in any subdirectory. \ No newline at end of file diff --git a/website/docs/03-Guides/06-Scenario Suites.md b/website/docs/03-Guides/06-Scenario Suites.md deleted file mode 100644 index 5ec0f9b26..000000000 --- a/website/docs/03-Guides/06-Scenario Suites.md +++ /dev/null @@ -1,80 +0,0 @@ -# Scenario Suites - -One baseline/candidate pair covers one behavior. Real agent systems gate whole -families of flows - checkout, refunds, support - each with its own risk -tolerance. The scenario runner (`agentdiff.run_scenarios`) executes many -comparisons in one call with per-scenario gates, and never aborts on the first -failure. - -## Basic usage - -```python -from agentdiff import GateThresholds, Scenario, run_scenarios - -suite = run_scenarios( - [ - Scenario("checkout_flow", "traces/checkout_base.json", - "traces/checkout_cand.json"), - Scenario("refunds", "traces/refund_base.json", - "traces/refund_cand.json"), - ] -) - -if not suite.passed: - print(suite.summary()) -``` - -Traces can be file paths or `AgentTrace` objects; loading errors become -per-scenario `ERROR` results instead of exceptions, so one corrupt file fails -its scenario - not the suite. - -## Per-scenario gates - -Each scenario takes its own `GateThresholds` (mirroring -`assert_no_regressions`): - -```python -Scenario( - "refunds", - "traces/refund_base.json", - "traces/refund_cand.json", - thresholds=GateThresholds( - max_divergence=0.10, # refunds must stay near-identical - allow_loops=True, # ...but retries are expected there - max_recovery_step_ratio=1.5, - ), -) -``` - -A scenario's report is marked `passed=False` when its gates fail - consistent -with `assert_no_regressions` semantics. - -## Reading results - -`suite.counts` returns `{"passed": n, "failed": n, "errors": n}`; -each `ScenarioResult` carries `.status` (`PASSED` / `FAILED` / `ERROR`), -`.violations` (the exact failed thresholds), and `.report`. - -```text -========================================= - AGENTDIFF SUITE SUMMARY -========================================= -Status: FAILED (2/3 passed, 1 failed, 0 errors) ------------------------------------------ - [PASSED] checkout_flow - [FAILED] refunds - - Trajectory Divergence Index (TDI) of 0.3333 exceeded threshold of 0.1000. - [PASSED] support_flow -========================================= -``` - -## Parallel execution - -Suites over many flows (or large trace files) can fan out to a thread pool: - -```python -suite = run_scenarios(scenarios, workers=4) -``` - -Results always come back in input order regardless of completion order. -Sequential execution remains the zero-overhead default (`workers=None`). diff --git a/website/docs/03-Guides/07-A-B Benchmark Mode.md b/website/docs/03-Guides/07-A-B Benchmark Mode.md deleted file mode 100644 index df788078d..000000000 --- a/website/docs/03-Guides/07-A-B Benchmark Mode.md +++ /dev/null @@ -1,76 +0,0 @@ -# A/B Benchmark Mode - -Regression diffing answers "did the candidate break?". The A/B benchmark mode -(`agentdiff.run_benchmark`) answers a different question: **which of two -agents runs the same task more efficiently?** Both sides are treated as peers, -so you can compare a CrewAI run against a LangGraph run, or two versions of -the same agent - any pairing that normalizes to traces. - -```python -from agentdiff import BenchmarkCase, run_benchmark - -report = run_benchmark( - [ - BenchmarkCase( - name="user_lookup", - agent_a="runs/crewai_ny.json", # CrewAI kickoff output - agent_b="runs/langgraph_ny.json", # LangGraph state snapshot - ), - BenchmarkCase( - name="refund_flow", - agent_a="runs/crewai_refund.json", - agent_b="runs/langgraph_refund.json", - ), - ] -) - -print(report.summary()) # CI-friendly text -print(report.to_markdown()) # paste-ready table for a PR or doc -``` - -## How winners are decided - -Each case is scored on four deterministic efficiency dimensions - **steps** -(leaner path), **wasted effort** (fewer failed/retried steps), **tokens**, and -**latency**. Lower wins each dimension; the case winner is the side taking the -majority. Equal values never count as wins, and ties are first-class outcomes, -never coin flips. - -The per-case diff (TDI between the two runs) is included as structural -context in the output. - -!!! note - Verdicts are *structural efficiency* only. Judging answer semantics would - require an LLM judge, which is an explicit AgentDiff non-goal. - -## Output - -`summary()` renders a log-friendly block: - -```text -========================================= - AGENTDIFF A/B BENCHMARK -========================================= -Overall: agent A (A 1 - B 0, 0 tied) ------------------------------------------ - [ A] user_lookup (A won 3, B won 0) - steps A= 2 B= 5 - tokens A= 60 B= 225 - latency A= 100ms B= 1000ms - TDI(a,b)=0.429 -========================================= -``` - -`to_markdown()` renders the same data as a table with an overall tally: - -| Case | Steps A | Steps B | Tokens A | Tokens B | Latency A | Latency B | TDI | Winner | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | -| user_lookup | 2 | 5 | 60 | 225 | 100ms | 1000ms | 0.429 | A | - -**Overall:** agent A - A 1 / B 0 / tied 0 - -## Parallel execution - -Like scenario suites, benchmarks accept `workers=N` to fan cases out across a -thread pool; results keep input order and `workers=None` (default) stays -sequential. diff --git a/website/docs/03-Guides/08-Statistical Baselines.md b/website/docs/03-Guides/08-Statistical Baselines.md deleted file mode 100644 index 0c84d7ed7..000000000 --- a/website/docs/03-Guides/08-Statistical Baselines.md +++ /dev/null @@ -1,98 +0,0 @@ -# Statistical Baselines & N-Run Envelopes - -Modern AI agents often exhibit non-deterministic execution paths: step orders can vary slightly, tool responses may require extra or fewer tokens, and latency fluctuates. - -If CI diffs a candidate run against a single strict baseline trace, harmless non-determinism can trigger false-positive gate failures. **Statistical Baselines** (introduced in AgentDiff 0.5.0) solve this with **N-run baseline envelopes** and empirical variance bands. - ---- - -## 1. How It Works - -Instead of capturing a single execution trace, you record $N$ representative runs (e.g. $N=3$ or $N=5$) into a versioned **Baseline Envelope** (`agentdiff_baseline_envelope` artifact, schema 2.0.0): - -```bash -agentdiff record my_agent:run \ - --input '{"query": "Generate Q3 sales analysis"}' \ - --runs 3 \ - --out baselines/sales_analysis.envelope.json -``` - -When gating in CI, AgentDiff performs: -1. **Min-TDI-of-$N$ Matching**: If *any* of the $N$ recorded baseline runs explains the candidate's trajectory within tolerance, the sequence is considered valid. -2. **Variance Band Boundaries**: Calculates the empirical mean and standard deviation ($\mu \pm k\sigma$) across step count, latency, and token consumption. -3. **Hard Invariant Gating**: Infinite retry loops and repetitive stagnant failures are still strictly blocked regardless of variance bands. - ---- - -## 2. Baseline Envelope Structure - -The envelope JSON holds all $N$ canonical traces alongside computed statistical boundaries: - -```json -{ - "schema_version": "2.0.0", - "artifact_type": "agentdiff_baseline_envelope", - "scenario": "sales_analysis", - "runs": 3, - "statistics": { - "step_count": { "mean": 6.33, "std_dev": 0.47, "min": 6, "max": 7 }, - "cost_usd": { "mean": 0.0142, "std_dev": 0.0011 }, - "total_latency_ms": { "mean": 1820.0, "std_dev": 140.5 } - }, - "traces": [ ... ] -} -``` - ---- - -## 3. Configuration in `agentdiff.toml` - -Declare statistical tolerances in `agentdiff.toml`: - -```toml -[scenario.sales_analysis] -mode = "statistical" # Enables envelope gating mode -sample_runs = 3 # Target envelope size -max_cost_increase_pct = 5.0 - -[scenario.sales_analysis.hard_invariants] -fail_on_identical_loops = true # Zero-tolerance: loops always block -max_tool_repeats = 3 - -[scenario.sales_analysis.tolerances] -step_count_std_dev = 2.0 # Candidate must be within mean ± 2.0 * sigma -divergence_ceiling = 0.35 # Max acceptable sequence TDI -``` - ---- - -## 4. Comparing Against an Envelope - -Run the comparator explicitly against the envelope: - -```bash -agentdiff diff baselines/sales_analysis.envelope.json traces/candidate.json --fail-on-regression -``` - -Output: - -```text -Baseline: sales_analysis.envelope.json (3 runs, mode: statistical) -Candidate: traces/candidate.json - -TDI (min-of-3): 0.00 (matched Run 2) [PASS] -Step Count: 7 (envelope: 6.3 ± 0.9) [PASS] -Cost Delta: +2.1% (band: ≤ +5.0%) [PASS] -Loops: 0 loops [PASS] - -Verdict: PASSED (Candidate within baseline envelope variance bands) -``` - ---- - -## 5. Rolling Window Baseline Rotation - -When you update a baseline envelope (via CLI `--update-baseline` or `/agentdiff approve`), AgentDiff rotates the rolling window of `sample_runs`: the oldest run drops off and the candidate run joins, automatically recalculating the empirical $\mu$ and $\sigma$ bands. - -### Backward Compatibility -Existing single-trace baselines (`agent_trace.schema.json` v1.0.0) remain fully supported. When AgentDiff loads a single-run baseline, it wraps it as an envelope with $N=1$ in `strict` mode. diff --git a/website/docs/03-Guides/09-Approve Bot.md b/website/docs/03-Guides/09-Approve Bot.md deleted file mode 100644 index 0c2c4a17f..000000000 --- a/website/docs/03-Guides/09-Approve Bot.md +++ /dev/null @@ -1,84 +0,0 @@ -# The Interactive Approve Bot (`/agentdiff approve`) - -When an engineer improves an agent's execution path (e.g. optimizing a 5-step workflow into 2 steps, or changing a prompt's tool call order), the trajectory intentionally diverges from the golden baseline. - -Rather than checking out the branch locally, recording a new baseline, and committing manual JSON files, reviewers can approve the candidate run directly from the GitHub Pull Request thread by commenting: - -```text -/agentdiff approve -``` - ---- - -## 1. How the Flow Works - -```mermaid -sequenceDiagram - autonumber - actor Reviewer as PR Reviewer - participant GitHub as GitHub PR Thread - participant Bot as AgentDiff Approve Bot - participant Token as token.agentdiff.app - participant Repo as Git Repository - - Reviewer->>GitHub: Comments "/agentdiff approve" - GitHub->>Bot: Triggers approve workflow - Bot->>Token: Authenticates as agentdiff[bot] - Bot->>Bot: Verifies D3 Invariants (No loops) - Bot->>Repo: Commits candidate trace to baseline envelope - Bot->>GitHub: Flips Check status to PASSED (Checks API) - Bot->>GitHub: Posts approval confirmation comment -``` - ---- - -## 2. Setting Up the Approve Bot - -### Option A: `agentdiff init --with-approve` (Recommended) - -When initializing your repository, pass `--with-approve`: - -```bash -agentdiff init --with-approve -``` - -This generates `.github/workflows/agentdiff-approve.yml` configured with permissions, commenter write-access checks, concurrency guards, and artifact handoff. - -### Option B: Three Identity Tiers - -The approve bot supports three authentication tiers that degrade gracefully: - -1. **Hosted Identity (Zero Config)**: When the [AgentDiff CI GitHub App](https://github.com/apps/agentdiff-ci) is installed on your repository, the workflow mints a short-lived (≤1 hour) token from `token.agentdiff.app`. Comments appear branded as **`agentdiff[bot]`**. -2. **Self-Managed GitHub App**: Set `AGENTDIFF_APP_ID` and `AGENTDIFF_APP_PRIVATE_KEY` repository secrets for dedicated organization-owned bots. -3. **Default `GITHUB_TOKEN`**: If no App is installed, the bot operates seamlessly using the repository's native `GITHUB_TOKEN` and posts comments as `github-actions[bot]`, flipping the check result green via the Checks API. - ---- - -## 3. D3 Safety Policy: Invariants Are Never Blessable - -AgentDiff enforces a strict separation between soft variations and structural bugs: - -| Condition | Example | Blessable via `/agentdiff approve`? | -|---|---|---| -| **Path Drift** | New tool sequence, alternative valid route | ✅ **Yes** (Human judgment) | -| **Cost / Token Increase** | +15% token usage due to better context | ✅ **Yes** (Human judgment) | -| **Cyclical Loops** | Same tool repeated with stagnant arguments | ❌ **NEVER** (Strictly blocked) | -| **Error Cascades** | ≥ 3× recovery steps spent looping on errors | ❌ **NEVER** (Strictly blocked) | - -If a PR contains an infinite loop, commenting `/agentdiff approve` will output an error refusing to bless the broken run until the underlying bug is fixed. - ---- - -## 4. CLI Command Reference - -The approve bot workflow executes the `agentdiff approve` CLI command behind the scenes: - -```bash -agentdiff approve [--scenario ] [--runs ] [--pr ] -``` - -Example: - -```bash -agentdiff approve baselines/customer_support.envelope.json traces/pr_candidate.json --pr 42 -``` diff --git a/website/docs/04-CI CD Integration/01-GitHub Actions Setup.md b/website/docs/04-CI CD Integration/01-GitHub Actions Setup.md deleted file mode 100644 index 24b556311..000000000 --- a/website/docs/04-CI CD Integration/01-GitHub Actions Setup.md +++ /dev/null @@ -1,160 +0,0 @@ -# GitHub Actions Integration - -Catch agent regressions automatically on every pull request. - -## The pieces - -1. **Generate two traces** - one from `main`, one from the PR - in your test - run (see the [pytest Plugin](03-Guides/03-pytest-Plugin.md) or the ingestion - cookbooks). -2. **Compare them** with the `agentdiff` CLI. -3. **Gate** with `--fail-on-regression` and **post** the result as a PR comment. - -> A working end-to-end example (a real Gemini agent, the reusable action, and -> auto-posted PR comments) lives in the -> [`agentdiff-demo`](https://github.com/lostmartian/agentdiff-demo) repository. - -## Workflow example - -```yaml -name: Agent Regression Testing - -on: - pull_request: - branches: [ main ] - -jobs: - agentdiff: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up uv - uses: astral-sh/setup-uv@v5 - - - name: Install - run: uv sync - - - name: Gate agent trajectories - run: | - uv run agentdiff \ - tests/traces/baseline.json \ - tests/traces/candidate.json \ - --fail-on-regression \ - --max-divergence 0.25 \ - --max-cost-delta 10.0 \ - --explain \ - --tree \ - --format pr \ - --output-file pr_comment.md - - - name: Post PR comment - uses: actions/github-script@v7 - if: always() - env: - COMMENT: ${{ env.COMMENT }} - with: - script: | - const fs = require('fs'); - const body = fs.readFileSync('pr_comment.md', 'utf8'); - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body, - }); -``` - -## Letting AgentDiff post the comment - -Instead of a separate action step, you can have AgentDiff post the comment -directly (uses `GITHUB_TOKEN`): - -```yaml - - name: Gate and comment - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - uv run agentdiff \ - tests/traces/baseline.json \ - tests/traces/candidate.json \ - --fail-on-regression \ - --format pr \ - --pr ${{ github.event.pull_request.number }} -``` - -See [PR Comments](03-Guides/04-PR-Comments.md) for details. - -## Reusable action - -For a drop-in gate, use the composite action. It installs the package, runs -`agentdiff --fail-on-regression`, and fails the job on divergence, loops, or -cost spikes. Setting `pr` also posts the PR-ready report onto the PR (even when -the gate blocks): - -```yaml -permissions: - contents: read - pull-requests: write # needed to post the PR comment - -jobs: - agentdiff: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.11" - - uses: kerrshift/agentdiff/.github/actions/agentdiff-check@v0.5.0 - with: - baseline: baselines/customer_support.envelope.json - candidate: traces/candidate.json - pr: ${{ github.event.pull_request.number }} # optional - github-token: ${{ secrets.GITHUB_TOKEN }} # required with pr -``` - -**Inputs:** - -| Input | Default | Description | -| --- | --- | --- | -| `baseline` | *(required)* | Path to the stored baseline trace JSON or statistical envelope. | -| `candidate` | *(required)* | Path to the candidate trace JSON. | -| `package` | `agent-trajectory-diff` | Package spec (PyPI name, `git+https://…`, or a local path). | -| `adapter` | `auto` | `auto`, `generic`, `langgraph`, `crewai`, `openinference`, `langfuse`, `langsmith`, `openai_agents`. | -| `max-divergence` | `0.3` | Maximum Trajectory Divergence Index (TDI). | -| `max-loops` | `0` | Maximum loop count. | -| `max-cost-delta` | `10.0` | Maximum cost increase percentage. | -| `update-baseline` | `false` | Overwrite the stored baseline when the run is clean. | -| `pr` | *(empty)* | PR number to post the report comment to. | -| `github-token` | *(empty)* | Token for the PR comment (required when `pr` is set). | - -Pin the action to a release tag (`@v0.5.0`) for reproducible gates. - -## In-PR Approvals (`/agentdiff approve`) - -When developers alter an agent's expected trajectory, reviewers can re-baseline directly on GitHub by commenting `/agentdiff approve`. - -Generate the approve bot workflow with: - -```bash -agentdiff init --with-approve -``` - -The bot authenticates via the hosted [AgentDiff CI GitHub App](https://github.com/apps/agentdiff-ci) (or repository `GITHUB_TOKEN`), commits the blessed candidate run to the baseline envelope, and flips the GitHub Check result to green. - -## Baseline rotation in CI - -For automated pipelines, pair the gate with a `staged` baseline rotation so the -baseline advances safely over time: - -```bash -uv run agentdiff candidate.json \ - --baseline tests/traces/baseline.json \ - --update-baseline \ - --baseline-rotation staged \ - --max-drift 0.05 -``` - -See [Baseline Rotation](03-Guides/02-Baseline-Rotation.md). \ No newline at end of file diff --git a/website/docs/04-CI CD Integration/02-CI CD in Action.md b/website/docs/04-CI CD Integration/02-CI CD in Action.md deleted file mode 100644 index 267e55b0e..000000000 --- a/website/docs/04-CI CD Integration/02-CI CD in Action.md +++ /dev/null @@ -1,135 +0,0 @@ -# CI/CD in Action - -How AgentDiff gates a real agent in a real pipeline - and posts the result -straight onto the pull request. Everything here was run against live model -calls and genuine GitHub Actions. - -## The live demo - -[`agentdiff-demo`](https://github.com/lostmartian/agentdiff-demo) is a small, -real project: a `gemini-3.6-flash` tool-calling agent, a committed baseline -trace, and a workflow that gates every run. It shows the whole lifecycle: - -- a **clean** PR passes the gate; -- a **regressive** PR (the agent's prompt now forces a redundant call) is - **blocked** - `TDI 0.1429`, a `get_user_database_stats` loop - and the - failure report is posted as a comment; -- a **feature** PR auto-posts the report onto the PR that triggered it, with no - manually supplied PR number. - -## The workflow - -A real workflow generated the candidate trace in CI, then gated it: - -```yaml -name: Agent Gate - -permissions: - contents: read - pull-requests: write # lets the action post the PR comment - -on: - pull_request: - workflow_dispatch: - -jobs: - gate: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.11" - - name: Run live agent - env: - GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} - run: python scripts/run_agent.py --prompt "${{ github.event.inputs.prompt }}" --out run.json - - uses: kerrshift/agentdiff/.github/actions/agentdiff-check@v0.5.0 - with: - baseline: baselines/customer_support.envelope.json - candidate: traces/candidate.json - pr: ${{ github.event.pull_request.number }} - github-token: ${{ secrets.GITHUB_TOKEN }} -``` - -On `pull_request`, `github.event.pull_request.number` is the PR being built - so -the report is posted to the right PR automatically. - -## Anatomy of a posted comment - -Here is a real comment from a run whose candidate **regressed** (the agent -looped a tool call). AgentDiff posted it automatically: - -> **AgentDiff - Trajectory Regression Check** -> -> **Status:** ⛔ **FAILED** -> -> | Gate | Value | Threshold | -> | :--- | :--- | :--- | -> | TDI | `0.1429` | ≤ `0.3` | -> | Loops | `1` | ≤ `0` | -> | Cost delta | `+54.21%` | ≤ `10.0%` | -> -> **Root cause** - *Culprit:* `get_user_database_stats` `[loop]` - entered a -> loop repeating 'get_user_database_stats' (2 times). -> -> **Divergence tree** -> -> ```text -> baseline [3 steps] vs candidate [4 steps] -> 1 ~ gemini_tool_decision (changed) -> 2 + get_user_database_stats (added - absent in baseline) -> 3 · get_user_database_stats -> 4 ~ gemini_synthesis (changed) -> ``` - -Three things to notice: - -1. **Status + gate table** - the pass/fail verdict and the three gates (TDI, - loops, cost) with your thresholds. -2. **Root cause** - `locate_culprit` points at the step and the kind of change - (here a `loop`). -3. **Collapsed divergence tree** - long runs of matched steps are folded into - `· · · N matched step(s) · · ·`; only divergent steps are shown (`+` added, - `−` removed, `~` changed). The comment stays small even for big traces. - -The comment is posted **even when the gate blocks**, so reviewers see *why* the -build is red without leaving GitHub. - -## Gate + comment in one step - -```bash -agentdiff baseline.json candidate.json \ - --fail-on-regression \ - --format pr \ - --pr ${{ github.event.pull_request.number }} -``` - -`--pr` posts the report and `--fail-on-regression` still exits `1` on a -regression - the pipeline fails *and* the PR explains itself. - -## Required permission - -The default `GITHUB_TOKEN` is read-only, so posting a comment needs: - -```yaml -permissions: - pull-requests: write -``` - -No manual token is required; this just grants the built-in token the ability to -write to the PR. - -## Generating the report locally - -To see the same output without GitHub: - -```bash -pip install agent-trajectory-diff google-genai -export GEMINI_API_KEY=... -python scripts/run_agent.py --prompt "Retrieve the database count of active users for state NY." --out run.json -agentdiff traces/gemini_baseline.json run.json --format pr --output-file pr_comment.md -``` - -See [GitHub Actions Setup](01-GitHub-Actions-Setup) for the full input reference -and [PR Comments](../03-Guides/04-PR-Comments) for the CLI. \ No newline at end of file diff --git a/website/docs/05-Development/01-Contributing.md b/website/docs/05-Development/01-Contributing.md deleted file mode 100644 index 1b1c0b34b..000000000 --- a/website/docs/05-Development/01-Contributing.md +++ /dev/null @@ -1,79 +0,0 @@ -# Contributing - -Thanks for helping build AgentDiff. These rules keep the history clean and -every PR reviewable in minutes. They are non-negotiable - PRs that ignore them -get sent back. The same rules live in [`CONTRIBUTING.md`](https://github.com/kerrshift/agentdiff/blob/main/CONTRIBUTING.md) -and are mirrored for coding agents in `AGENTS.md` at the repo root. - -## Ground rules - -1. **Never commit directly to `main`.** Every change lands through a branch + PR. -2. **One change per branch, one branch per PR.** Spot an unrelated issue? Open - a separate branch - never ride it along. -3. **Product and website don't mix.** Changes to `website/` get their own - branch/PR, separate from product (`src/`, `tests/`, `cookbooks/`) changes. -4. **Branch off the latest `main`:** - - ```bash - git checkout main && git pull origin main - git checkout -b / - ``` - -5. **Green before you open.** A red PR is a rejected PR: - - ```bash - make lint # ruff check + format check - uv run python -m pytest # full suite (must stay green) - ``` - -## Branch naming - -`/` - short, lowercase, hyphenated: - -| Type | Use for | Example | -| --- | --- | --- | -| `feat/` | New functionality | `feat/recovery-step-ratio` | -| `fix/` | Bug fixes | `fix/langfuse-v4-types` | -| `docs/` | Documentation only | `docs/readme-faq` | -| `chore/` | Tooling, housekeeping, release prep | `chore/release-0.3.0` | -| `test/` | Test-only changes | `test/aligner-property-cases` | -| `refactor/` | No-behavior-change restructuring | `refactor/split-reporters` | - -## Commits & PR titles - -[Conventional Commits](https://www.conventionalcommits.org/) for both commits -and PR titles - imperative mood, at most 72 characters: - -```text -feat(cli): add --explain flag for divergence explanations -fix(langfuse): sort v4 observations chronologically -docs(readme): add FAQ and non-goals -``` - -## PR description - -Every PR uses the repository's pull-request template with five sections - -**What / Why / How / Testing / Checklist** - and links the roadmap item the -change belongs to. - -## PR lifecycle - -1. Push the branch to `origin` and open the PR against `main`. -2. CI must pass: lint, format, tests on Python 3.10-3.13, build. -3. Squash-merge (one logical commit per PR), then delete the branch. -4. Start the next piece of work from freshly pulled `main`. - -## Quality bar - -- Any behavior change ships with tests; coverage must not drop. -- New adapters need round-trip losslessness + fuzz-input tests. -- Public API changes update `src/agentdiff/__init__.py` docstring surface, the - docs site, and the README. - -## Releases - -- Every user-facing change adds a `CHANGELOG.md` entry under `[Unreleased]` - (Keep a Changelog format, SemVer). -- Version bumps + changelog finalization happen in their own `chore/release-*` - branch; tagging triggers the publish pipeline - see - [Releasing](03-Releasing.md). diff --git a/website/docs/05-Development/02-Cookbooks.md b/website/docs/05-Development/02-Cookbooks.md deleted file mode 100644 index e2a7d4e55..000000000 --- a/website/docs/05-Development/02-Cookbooks.md +++ /dev/null @@ -1,60 +0,0 @@ -# Cookbooks & Live Examples - -The [`cookbooks/`](https://github.com/kerrshift/agentdiff/tree/main/cookbooks) -directory ships standalone recipes in two flavors: - -- **Offline (no API keys, deterministic)** - the product story and per-adapter - ingestion against bundled sample traces. Safe to run anywhere, including CI. -- **Live (real SDKs, real APIs)** - capture genuine agent runs from OpenAI, - Gemini, LangGraph, CrewAI, or the OpenAI Agents SDK and diff them through - AgentDiff. - -Run any recipe with `uv` (dependencies are declared inline via PEP 723): - -```bash -uv run cookbooks/moat_diff_workflow.py -uv run cookbooks/live_langgraph.py -``` - -## Offline recipes - -| Recipe | What it shows | -| --- | --- | -| `moat_diff_workflow.py` | The core story: `compare` -> why (`--explain`) -> where (`--tree` + culprit step). | -| `baseline_rotation.py` | Baseline rotation policies (manual / auto / staged) + the drift-creep guard. | -| `pr_markdown.py` | Paste-ready PR comment (gate, divergence tree, culprit). | -| `ingestion_*.py` | Per-adapter ingestion: Generic, OpenInference/OTel, Langfuse, LangSmith. | -| `pytest_plugin_demo/` | A mini-project running the `--agentdiff` pytest plugin against a committed baseline. | - -## Live recipes - -| Recipe | Requires | What it shows | -| --- | --- | --- | -| `openai_sdk_generic.py` | `OPENAI_API_KEY` | A live multi-turn tool loop via `gpt-4o-mini`, captured to the Generic format, then diffed. Run 2 deliberately loops. | -| `gemini_sdk_generic.py` | `GEMINI_API_KEY` | Same workflow with Google Gemini. | -| `live_openai_agents.py` | `OPENAI_API_KEY` | Runs the **OpenAI Agents SDK** and feeds its own trace straight through the `openai_agents` adapter. | -| `live_openinference.py` | `OPENAI_API_KEY` | Instruments OpenAI with **OpenInference (OTel)** and diffs real exported spans. | -| `live_langgraph.py` | `OPENAI_API_KEY` | Builds a real **LangGraph** ReAct agent (`create_react_agent`), instruments it with OpenInference, and diffs two live graph executions - extra tool calls raise TDI, flag loops, and block the gate. | -| `live_crewai.py` | `OPENAI_API_KEY` | Runs a real **CrewAI** crew under OpenInference instrumentation; scope creep shows up as added steps, a loop flag, and a blocked gate. | -| `live_langfuse.py` | Langfuse keys | Creates a real trace via the Langfuse v4 SDK, fetches it back, and ingests it through the `langfuse` adapter. | -| `live_gemini_cases.py` | `GEMINI_API_KEY` | Four cases: clean run, prompt-change regression, forced loop (gate blocked), baseline-rotation decisions. | - -### Framework integration notes - -Real frameworks needed two fixes worth knowing when you instrument your own -agents with OpenInference: - -- **LangGraph**: instrument with `openinference-instrumentation-langchain`. - Graph nodes surface as `routing` steps, chat-model calls as `llm_call`, tool - runs as `tool_call` - AgentDiff's `openinference` adapter maps them natively. -- **CrewAI**: use `openinference-instrumentation-crewai` plus - `openinference-instrumentation-openai` (CrewAI 1.x calls the OpenAI SDK - directly for LLM spans). Define tools as `BaseTool` subclasses overriding - `_run`; tools built with the `@tool` decorator override `run()` and silently - bypass instrumentation. Disable CrewAI's own telemetry with - `CREWAI_DISABLE_TELEMETRY=true` and pass `tracing=False` to `Crew`. - -> **See it in CI:** the [`agentdiff-demo`](https://github.com/lostmartian/agentdiff-demo) -> repository wires a real Gemini agent into GitHub Actions that runs the -> `agentdiff-check` action and auto-posts the PR-ready report onto pull -> requests. diff --git a/website/docs/05-Development/03-Releasing.md b/website/docs/05-Development/03-Releasing.md deleted file mode 100644 index e512cccc7..000000000 --- a/website/docs/05-Development/03-Releasing.md +++ /dev/null @@ -1,66 +0,0 @@ -# Releasing - -AgentDiff follows [Semantic Versioning](https://semver.org/) and -[Keep a Changelog](https://keepachangelog.com/en/1.1.0/). The PyPI package is -[`agent-trajectory-diff`](https://pypi.org/project/agent-trajectory-diff/). - -## Release checklist - -1. **Finalize the changelog.** Every user-facing change since the last tag - should already have a `[Unreleased]` entry (that is part of each PR). - Rename the section to the new version with today's date and summarize the - release in one line for minor/major bumps: - - ```markdown - ## [0.3.0] - 2026-08-22 - - AgentDiff v0.3.0 - recovery-effort metrics and live framework cookbooks. - - ### Added - - ... - ``` - -2. **Branch, don't commit to `main`.** Releases get their own branch per the - contribution rules: - - ```bash - git checkout main && git pull origin main - git checkout -b chore/release-0.3.0 - ``` - -3. **Bump the version** in `src/agentdiff/__init__.py` (`__version__`). The - docs site reads it from there at build time. - -4. **Verify green:** - - ```bash - make lint - uv run python -m pytest - make build # sdist + wheel build cleanly - ``` - -5. **Open the PR** (`chore(release): bump version to 0.3.0`), get it merged, - then tag the merge commit on `main`: - - ```bash - git checkout main && git pull origin main - git tag v0.3.0 && git push origin v0.3.0 - ``` - -6. **CI publishes on tag** - the release workflow builds and uploads to PyPI. - Verify with: - - ```bash - pip install agent-trajectory-diff==0.3.0 - ``` - -7. **GitHub release notes** come from the changelog section; delete any stale - release branches. - -## Version semantics - -- **Patch** (`0.2.1 -> 0.2.2`): bug fixes, no new API surface. -- **Minor** (`0.2.2 -> 0.3.0`): new features - new metrics, flags, config keys, - adapters, cookbooks. Additive report fields count here. -- **Major** (`1.0.0`): breaking changes, including trace-schema version bumps - (see `schema/` and `context/schema_migration.md`). diff --git a/website/docs/05-Development/04-Custom Adapters.md b/website/docs/05-Development/04-Custom Adapters.md deleted file mode 100644 index d94712590..000000000 --- a/website/docs/05-Development/04-Custom Adapters.md +++ /dev/null @@ -1,76 +0,0 @@ -# Custom Adapters - -AgentDiff ships adapters for the major telemetry sources, but teams often have -proprietary trace formats - an internal tracing SDK, a vendor export, a -bespoke event log. The adapter registry lets you teach AgentDiff your format -without forking anything. - -## Registering at runtime - -```python -from agentdiff import BaseAdapter, register_adapter, load_trace -from agentdiff.models import AgentTrace - - -@register_adapter("acme", aliases=("acme_tracer",)) -class AcmeAdapter(BaseAdapter): - @classmethod - def from_dict(cls, data: dict) -> AgentTrace: - steps = [ - build_step(span) for span in data["spans"] # your mapping - ] - return AgentTrace(trace_id=..., agent_name=..., steps=steps, ...) - - @classmethod - def detect(cls, data: dict) -> bool: - # Optional: lets load_trace(path) auto-detect this format. - return isinstance(data, dict) and data.get("vendor") == "acme" -``` - -After registration the adapter resolves everywhere by name: - -```python -trace = load_trace("run.json", adapter_name="acme") # explicit -trace = load_trace("run.json") # auto-detected via detect() -``` - -It also flows through configuration - `[adapter] name = "acme"` in -`agentdiff.toml` works with zero extra wiring. - -## Entry-point plugins (third-party packages) - -If you maintain a separate package, expose adapters through the standard -Python entry-point group and they are discovered automatically on first use - -no registration call required in user code: - -```toml -# acme-sdk's pyproject.toml -[project.entry-points."agentdiff.adapters"] -acme = "acme_sdk.agentdiff:AcmeAdapter" -``` - -Discovery is lazy and failure-tolerant: a broken plugin is skipped silently, -and built-ins can never be shadowed. - -## Rules of the registry - -- Names are normalized (case-insensitive; `-` and spaces fold to `_`). -- Re-registering a name requires `override=True`. -- `detect()` hooks are dict-only and consulted **after** all built-ins, so - registering an adapter never changes how existing telemetry is classified. -- A broken `detect()` hook is swallowed by contract - ingestion never crashes - because of plugin code. -- Inspect what's available with `agentdiff.available_adapters()`; tests can - reset state between cases with `agentdiff.adapters.reset_registry()`. - -## Building a good adapter - -- Map tool executions to `tool_call`, model calls to `llm_call`, and - decisions/handoffs to `routing` steps - that vocabulary drives loop - detection, explanations, and the culprit locator. -- Populate token usage when the source has it; cost deltas and resource gates - depend on it. -- Honor error/retry/abandoned statuses in the source so WEI and the Recovery - Step Ratio stay meaningful. -- Ship round-trip and fuzz tests like the built-in adapters do (see - `tests/test_adapter_roundtrip.py` for the pattern). diff --git a/website/docs/05-Development/05-Performance Benchmarks.md b/website/docs/05-Development/05-Performance Benchmarks.md deleted file mode 100644 index 926b26126..000000000 --- a/website/docs/05-Development/05-Performance Benchmarks.md +++ /dev/null @@ -1,36 +0,0 @@ -# Performance Benchmarks - -AgentDiff ships a pytest-benchmark suite that measures the engine at scale. -It is deliberately **excluded from the regular test run** - invoke it with: - -```bash -make bench -``` - -Results are autosaved under `.benchmarks/` (gitignored), so you can compare a -branch against `main` with `--benchmark-compare`. - -## What is measured - -| Benchmark | Scales | What it tells you | -| --- | --- | --- | -| `align_traces` | 100 / 500 / 1000 steps | The core LCS alignment - the engine's dominant cost. | -| `compare` end-to-end | 100 / 500 / 1000 steps | Everything combined: align + metrics + loops. | -| Loop detection | 100 / 500 / 1000 steps, plus a pathological single-tool repeat | Sequence/cycle scanning cost. | -| Recovery metrics | 1000 steps with error clusters | WEI + Recovery Step Ratio overhead. | -| OpenInference parsing | 1000 spans | Adapter ingestion cost at OTel-export scale. | -| Report serialization | 500-step diff | JSON export cost. | - -## Baseline findings (2026-08, M-series laptop) - -- **LCS alignment dominates everything**: ~16ms at 100 steps grows to ~1.6s at - 1000 steps - quadratic-ish growth, as expected for sequence alignment. -- Everything else is noise by comparison: loop detection ~3ms and adapter - parsing ~17ms at 1000 elements; recovery/WEI computation is sub-millisecond. -- Practical implication: trace *ingestion* is never the bottleneck - very - large traces strain the aligner first. That is why incremental/streaming - ingestion was descoped in favor of these measurements. - -If you touch the aligner or add per-step work to `compare()`, run -`make bench` before and after - a regression here is invisible to the unit -suite's runtime but real for users gating large trajectories in CI. diff --git a/website/eslint.config.mjs b/website/eslint.config.mjs deleted file mode 100644 index 05e726d1b..000000000 --- a/website/eslint.config.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import { defineConfig, globalIgnores } from "eslint/config"; -import nextVitals from "eslint-config-next/core-web-vitals"; -import nextTs from "eslint-config-next/typescript"; - -const eslintConfig = defineConfig([ - ...nextVitals, - ...nextTs, - // Override default ignores of eslint-config-next. - globalIgnores([ - // Default ignores of eslint-config-next: - ".next/**", - "out/**", - "build/**", - "next-env.d.ts", - ]), -]); - -export default eslintConfig; diff --git a/website/next-env.d.ts b/website/next-env.d.ts new file mode 100644 index 000000000..ce4e94a6b --- /dev/null +++ b/website/next-env.d.ts @@ -0,0 +1,7 @@ +/// +/// +import "./.next/types/routes.d.ts"; +import "./.next/types/root-params.d.ts"; + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/website/next.config.ts b/website/next.config.ts deleted file mode 100644 index f74efac5e..000000000 --- a/website/next.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { NextConfig } from "next"; - -/** - * Static export applies at BUILD time only (`STATIC_EXPORT=1 pnpm build`). - * Running `next dev` without it keeps normal framework behavior locally — - * e.g. unmatched doc slugs render a clean 404 instead of tripping - * output:export's strict param validation. - */ -const nextConfig: NextConfig = { - ...(process.env.STATIC_EXPORT === "1" ? { output: "export" as const } : {}), - images: { - unoptimized: true, - }, -}; - -export default nextConfig; diff --git a/website/package.json b/website/package.json deleted file mode 100644 index e43dd38a1..000000000 --- a/website/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "frontend", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev", - "build": "STATIC_EXPORT=1 next build", - "start": "next start", - "lint": "eslint" - }, - "dependencies": { - "@lobehub/icons": "^5.16.0", - "@types/prismjs": "^1.26.6", - "framer-motion": "^13.1.1", - "katex": "^0.18.4", - "lucide-react": "^1.31.0", - "marked": "^18.0.9", - "next": "16.3.1", - "prismjs": "^1.30.0", - "react": "19.2.8", - "react-dom": "19.2.8", - "react-markdown": "^10.1.0", - "react-syntax-highlighter": "^16.1.1", - "rehype-katex": "^7.0.1", - "remark-gfm": "^4.0.1", - "remark-math": "^6.0.0" - }, - "devDependencies": { - "@tailwindcss/postcss": "^4", - "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "@types/react-syntax-highlighter": "^15.5.13", - "eslint": "^9", - "eslint-config-next": "16.3.1", - "tailwindcss": "^4", - "typescript": "^5" - }, - "packageManager": "pnpm@11.21.0" -} \ No newline at end of file diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml deleted file mode 100644 index a3ae7ee93..000000000 --- a/website/pnpm-lock.yaml +++ /dev/null @@ -1,8907 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@lobehub/icons': - specifier: ^5.16.0 - version: 5.16.0(@lobehub/ui@5.31.1)(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0) - '@types/prismjs': - specifier: ^1.26.6 - version: 1.26.6 - framer-motion: - specifier: ^13.1.1 - version: 13.1.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - katex: - specifier: ^0.18.4 - version: 0.18.4 - lucide-react: - specifier: ^1.31.0 - version: 1.31.0(react@19.2.8) - marked: - specifier: ^18.0.9 - version: 18.0.9 - next: - specifier: 16.3.1 - version: 16.3.1(@babel/core@7.29.7(supports-color@7.2.0))(@types/node@20.19.43)(babel-plugin-macros@3.1.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - prismjs: - specifier: ^1.30.0 - version: 1.30.0 - react: - specifier: 19.2.8 - version: 19.2.8 - react-dom: - specifier: 19.2.8 - version: 19.2.8(react@19.2.8) - react-markdown: - specifier: ^10.1.0 - version: 10.1.0(@types/react@19.2.18)(react@19.2.8)(supports-color@7.2.0) - react-syntax-highlighter: - specifier: ^16.1.1 - version: 16.1.1(react@19.2.8) - rehype-katex: - specifier: ^7.0.1 - version: 7.0.1 - remark-gfm: - specifier: ^4.0.1 - version: 4.0.1(supports-color@7.2.0) - remark-math: - specifier: ^6.0.0 - version: 6.0.0(supports-color@7.2.0) - devDependencies: - '@tailwindcss/postcss': - specifier: ^4 - version: 4.3.3 - '@types/node': - specifier: ^20 - version: 20.19.43 - '@types/react': - specifier: ^19 - version: 19.2.18 - '@types/react-dom': - specifier: ^19 - version: 19.2.4(@types/react@19.2.18) - '@types/react-syntax-highlighter': - specifier: ^15.5.13 - version: 15.5.13 - eslint: - specifier: ^9 - version: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - eslint-config-next: - specifier: 16.3.1 - version: 16.3.1(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - tailwindcss: - specifier: ^4 - version: 4.3.3 - typescript: - specifier: ^5 - version: 5.9.3 - -packages: - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@ant-design/colors@8.0.1': - resolution: {integrity: sha512-foPVl0+SWIslGUtD/xBr1p9U4AKzPhNYEseXYRRo5QSzGACYZrQbe11AYJbYfAWnWSpGBx6JjBmSeugUsD9vqQ==} - - '@ant-design/cssinjs-utils@2.1.2': - resolution: {integrity: sha512-5fTHQ158jJJ5dC/ECeyIdZUzKxE/mpEMRZxthyG1sw/AKRHKgJBg00Yi6ACVXgycdje7KahRNvNET/uBccwCnA==} - peerDependencies: - react: '>=18' - react-dom: '>=18' - - '@ant-design/cssinjs@2.1.2': - resolution: {integrity: sha512-2Hy8BnCEH31xPeSLbhhB2ctCPXE2ZnASdi+KbSeS79BNbUhL9hAEe20SkUk+BR8aKTmqb6+FKFruk7w8z0VoRQ==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - - '@ant-design/fast-color@3.0.1': - resolution: {integrity: sha512-esKJegpW4nckh0o6kV3Tkb7NPIZYbPnnFxmQDUmL08ukXZAvV85TZBr70eGuke/CIArLaP6aw8lt9KILjnWuOw==} - engines: {node: '>=8.x'} - - '@ant-design/icons-svg@4.5.0': - resolution: {integrity: sha512-1BTUFyKPTBZ53MuTP8s0k5SFEXL7o3VHEOwLgzaoWKwnBeqIcqUtVshc4SKzhI6uACfqhJqBwBUE9FsWR3uULA==} - - '@ant-design/icons@6.3.2': - resolution: {integrity: sha512-B6O5a5XJ4wjtNOfZejXYwHW5zvKV5gYkjGf11dHGLEbKn0ABDGndo41+gfIiXyTFhvESj4XTotuud33mUFid0g==} - engines: {node: '>=8'} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - - '@ant-design/react-slick@2.0.0': - resolution: {integrity: sha512-HMS9sRoEmZey8LsE/Yo6+klhlzU12PisjrVcydW3So7RdklyEd2qehyU6a7Yp+OYN72mgsYs3NFCyP2lCPFVqg==} - peerDependencies: - react: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - '@babel/code-frame@7.29.7': - resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.29.7': - resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.29.7': - resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.29.8': - resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.29.7': - resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-globals@7.29.7': - resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.29.7': - resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.29.7': - resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-string-parser@7.29.7': - resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.29.7': - resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.29.7': - resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.29.7': - resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.29.8': - resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/runtime@7.29.7': - resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@8.0.0': - resolution: {integrity: sha512-sL6cvO2IfkSu/iU+zs2S/w01B7A8V7suXSIKEN4hPFFdZoiPGxrj5pAG0lCaqLWiEIrjKzdznIWuaLcxPR53qw==} - - '@babel/template@7.29.7': - resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.29.8': - resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.29.8': - resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} - engines: {node: '>=6.9.0'} - - '@base-ui/react@1.6.0': - resolution: {integrity: sha512-/jzjTWJYXhRFO45Bev9lc3cHbmjzCMpUqbMZ2AgKy/z25mY9B6shGSNcXcjQar9n5doM0KYW1W8fcFv2jZBuMw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@date-fns/tz': ^1.2.0 - '@types/react': ^17 || ^18 || ^19 - date-fns: ^4.0.0 - react: ^17 || ^18 || ^19 - react-dom: ^17 || ^18 || ^19 - peerDependenciesMeta: - '@date-fns/tz': - optional: true - '@types/react': - optional: true - date-fns: - optional: true - - '@base-ui/utils@0.3.1': - resolution: {integrity: sha512-gFFiltORVmW/N6IILTGxizP3PBpVpysqML1ALY5Vk0mH+7faVkCknOU31goYHN5Aoek2dkjxva1XOD2Ce9WuIg==} - peerDependencies: - '@types/react': ^17 || ^18 || ^19 - react: ^17 || ^18 || ^19 - react-dom: ^17 || ^18 || ^19 - peerDependenciesMeta: - '@types/react': - optional: true - - '@dnd-kit/accessibility@3.1.1': - resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} - peerDependencies: - react: '>=16.8.0' - - '@dnd-kit/core@6.3.1': - resolution: {integrity: sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@dnd-kit/modifiers@9.0.0': - resolution: {integrity: sha512-ybiLc66qRGuZoC20wdSSG6pDXFikui/dCNGthxv4Ndy8ylErY0N3KVxY2bgo7AWwIbxDmXDg3ylAFmnrjcbVvw==} - peerDependencies: - '@dnd-kit/core': ^6.3.0 - react: '>=16.8.0' - - '@dnd-kit/sortable@10.0.0': - resolution: {integrity: sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg==} - peerDependencies: - '@dnd-kit/core': ^6.3.0 - react: '>=16.8.0' - - '@dnd-kit/utilities@3.2.2': - resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} - peerDependencies: - react: '>=16.8.0' - - '@emnapi/core@1.10.0': - resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - - '@emnapi/runtime@1.11.3': - resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} - - '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - - '@emoji-mart/data@1.2.1': - resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==} - - '@emoji-mart/react@1.1.1': - resolution: {integrity: sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g==} - peerDependencies: - emoji-mart: ^5.2 - react: ^16.8 || ^17 || ^18 - - '@emotion/babel-plugin@11.13.5': - resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} - - '@emotion/cache@11.14.0': - resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} - - '@emotion/css@11.13.5': - resolution: {integrity: sha512-wQdD0Xhkn3Qy2VNcIzbLP9MR8TafI0MJb7BEAXKp+w4+XqErksWR4OXomuDzPsN4InLdGhVe6EYcn2ZIUCpB8w==} - - '@emotion/hash@0.8.0': - resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} - - '@emotion/hash@0.9.2': - resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - - '@emotion/is-prop-valid@1.4.0': - resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} - - '@emotion/memoize@0.9.0': - resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - - '@emotion/react@11.14.0': - resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/serialize@1.3.3': - resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} - - '@emotion/sheet@1.4.0': - resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - - '@emotion/unitless@0.10.0': - resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} - - '@emotion/unitless@0.7.5': - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0': - resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} - peerDependencies: - react: '>=16.8.0' - - '@emotion/utils@1.4.2': - resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} - - '@emotion/weak-memoize@0.4.0': - resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - - '@eslint-community/eslint-utils@4.10.1': - resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.21.2': - resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.6': - resolution: {integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.39.5': - resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@floating-ui/core@1.8.0': - resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} - - '@floating-ui/dom@1.8.0': - resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} - - '@floating-ui/react-dom@2.1.9': - resolution: {integrity: sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/react@0.27.20': - resolution: {integrity: sha512-CMqMy7OaXl9W0eq1Uy7L7i2Y/anPvHmFmESd2CEw0t5YvZhcVCeo4MBevAmswRllX7Y2dEidA4ozGPunLSTQpw==} - peerDependencies: - react: '>=17.0.0' - react-dom: '>=17.0.0' - - '@floating-ui/utils@0.2.12': - resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} - - '@giscus/react@3.1.0': - resolution: {integrity: sha512-0TCO2TvL43+oOdyVVGHDItwxD1UMKP2ZYpT6gXmhFOqfAJtZxTzJ9hkn34iAF/b6YzyJ4Um89QIt9z/ajmAEeg==} - peerDependencies: - react: ^16 || ^17 || ^18 || ^19 - react-dom: ^16 || ^17 || ^18 || ^19 - - '@humanfs/core@0.19.2': - resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.8': - resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} - engines: {node: '>=18.18.0'} - - '@humanfs/types@0.15.0': - resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - - '@img/colour@1.1.0': - resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} - engines: {node: '>=18'} - - '@img/sharp-darwin-arm64@0.35.3': - resolution: {integrity: sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==} - engines: {node: '>=20.9.0'} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-x64@0.35.3': - resolution: {integrity: sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==} - engines: {node: '>=20.9.0'} - cpu: [x64] - os: [darwin] - - '@img/sharp-freebsd-wasm32@0.35.3': - resolution: {integrity: sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==} - engines: {node: '>=20.9.0'} - os: [freebsd] - - '@img/sharp-libvips-darwin-arm64@1.3.2': - resolution: {integrity: sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.3.2': - resolution: {integrity: sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.3.2': - resolution: {integrity: sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-arm@1.3.2': - resolution: {integrity: sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-ppc64@1.3.2': - resolution: {integrity: sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-riscv64@1.3.2': - resolution: {integrity: sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-s390x@1.3.2': - resolution: {integrity: sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linux-x64@1.3.2': - resolution: {integrity: sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@img/sharp-libvips-linuxmusl-arm64@1.3.2': - resolution: {integrity: sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@img/sharp-libvips-linuxmusl-x64@1.3.2': - resolution: {integrity: sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@img/sharp-linux-arm64@0.35.3': - resolution: {integrity: sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==} - engines: {node: '>=20.9.0'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-arm@0.35.3': - resolution: {integrity: sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==} - engines: {node: '>=20.9.0'} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-ppc64@0.35.3': - resolution: {integrity: sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==} - engines: {node: '>=20.9.0'} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-riscv64@0.35.3': - resolution: {integrity: sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==} - engines: {node: '>=20.9.0'} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-s390x@0.35.3': - resolution: {integrity: sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==} - engines: {node: '>=20.9.0'} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@img/sharp-linux-x64@0.35.3': - resolution: {integrity: sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==} - engines: {node: '>=20.9.0'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@img/sharp-linuxmusl-arm64@0.35.3': - resolution: {integrity: sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==} - engines: {node: '>=20.9.0'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@img/sharp-linuxmusl-x64@0.35.3': - resolution: {integrity: sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==} - engines: {node: '>=20.9.0'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@img/sharp-wasm32@0.35.3': - resolution: {integrity: sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==} - engines: {node: '>=20.9.0'} - - '@img/sharp-webcontainers-wasm32@0.35.3': - resolution: {integrity: sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==} - engines: {node: '>=20.9.0'} - cpu: [wasm32] - - '@img/sharp-win32-arm64@0.35.3': - resolution: {integrity: sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==} - engines: {node: '>=20.9.0'} - cpu: [arm64] - os: [win32] - - '@img/sharp-win32-ia32@0.35.3': - resolution: {integrity: sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==} - engines: {node: ^20.9.0} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.35.3': - resolution: {integrity: sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==} - engines: {node: '>=20.9.0'} - cpu: [x64] - os: [win32] - - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - - '@lit-labs/ssr-dom-shim@1.6.0': - resolution: {integrity: sha512-VHb0ALPMTlgKjM6yIxxoQNnpKyUKLD04VzeQdsiXkMqkvYlAHxq9glGLmgbb889/1GsohSOAjvQYoiBppXFqrQ==} - - '@lit/reactive-element@2.1.2': - resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} - - '@lobehub/emojilib@1.0.0': - resolution: {integrity: sha512-s9KnjaPjsEefaNv150G3aifvB+J3P4eEKG+epY9zDPS2BeB6+V2jELWqAZll+nkogMaVovjEE813z3V751QwGw==} - - '@lobehub/fluent-emoji@4.1.0': - resolution: {integrity: sha512-R1MB2lfUkDvB7XAQdRzY75c1dx/tB7gEvBPaEEMarzKfCJWmXm7rheS6caVzmgwAlq5sfmTbxPL+un99sp//Yw==} - peerDependencies: - react: ^19.0.0 - react-dom: ^19.0.0 - - '@lobehub/icons@5.16.0': - resolution: {integrity: sha512-EYiHGyo7FZ4VPvsDx6Q8STN+erAwyeAFgwDaSgn547FrBsZ6NNFwUTwvgim7jruGErLJEKpd1IFgw4mD8DaW/A==} - peerDependencies: - '@lobehub/ui': ^5.0.0 - antd: ^6.1.1 - react: ^19.0.0 - react-dom: ^19.0.0 - - '@lobehub/ui@5.31.1': - resolution: {integrity: sha512-VNUoyiFiDIxB+0n5T19XVqGzS1FCVbZQcxPbikb+nhvrq7TP58Mz9UtZ8/ibaf3Ct/CBDhQ0iJP6xWtnbwjIlw==} - engines: {node: '>=22.22.0'} - peerDependencies: - '@lobehub/fluent-emoji': ^4.0.0 - '@lobehub/icons': ^5.0.0 - antd: ^6.1.1 - motion: ^12.0.0 - react: ^19.0.0 - react-dom: ^19.0.0 - - '@mdx-js/mdx@3.1.1': - resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - - '@mdx-js/react@3.1.1': - resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - - '@napi-rs/wasm-runtime@1.2.3': - resolution: {integrity: sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==} - engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} - peerDependencies: - '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 - '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - - '@next/env@16.3.1': - resolution: {integrity: sha512-35G3xwkQUb2oETSDjFXGrVugknoayLFBh7vSE+yAcl9IP2zT9wyGwq7297AYHR11kJld807t5f8AJBs6WBzXsQ==} - - '@next/eslint-plugin-next@16.3.1': - resolution: {integrity: sha512-B4SznlXwVpaLDa7Tbi6zLuueria2d/PmFDhXyDymPGrk2r1n/RMJmcn5FZq1L64k+Jsyte1lKvOr7lP9Xo80mQ==} - - '@next/swc-darwin-arm64@16.3.1': - resolution: {integrity: sha512-ABMIu2zQ7cnNIHm5ivKGwZwUrm0pAai3yiJ/gK/rF1c1VP9UOnj7XECbMKFdVKp9I9eMYq9NoDs1WXOoowxzJw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@next/swc-darwin-x64@16.3.1': - resolution: {integrity: sha512-gNG21e/UnrroeScbY/QndUEdl0mF1FRibW7BBeYUz/5ABCepjqDdEdgr592vpzMtCn/m7FTjYq3TN4TpyDnutw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@next/swc-linux-arm64-gnu@16.3.1': - resolution: {integrity: sha512-6B6Lw016iwNUQuaJoraMMTLh6TwHzFUtxipSScD1F3YyymcrRWkobodRS2ftIOkF5vrs4zNlyUrTC5YZQ9Lz5w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@next/swc-linux-arm64-musl@16.3.1': - resolution: {integrity: sha512-JUiPXZKK9wOhjf4MgDiH29GZLxfqOesbLtHq2pDxwH/WwscTRV2ToymnOTh1egzaZf0ueUf8T2+CeYTGHjW0Iw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@next/swc-linux-x64-gnu@16.3.1': - resolution: {integrity: sha512-Uog9jsrmIRIL/lfvIp9htmskSNC7JcQsMVucXL2V2YY1y/D9IUN3LPEafqy0zRJ2cIU1SQ0V6F6TlffQ+pLAGg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@next/swc-linux-x64-musl@16.3.1': - resolution: {integrity: sha512-6yy3FT13KgUFOj5H8bl8w/6nKiJwHIvbtwh1V+1acsu+7y4tJjnemSa6mhsh53BeoVrlozE+fMgZhXH46WmjMA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@next/swc-win32-arm64-msvc@16.3.1': - resolution: {integrity: sha512-iOoN1QecUoGNZik536U/vtK43YwgyrCsGIkth52yIkl612n+0C9MjSnJbQAikISpb+WYRooBVhaDlUW7iZoKog==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@next/swc-win32-x64-msvc@16.3.1': - resolution: {integrity: sha512-d/k+PpAriUPaeMJJOG7HUSdqfEX46FEPWU1p3/nm2ACmXhj9hFEWdFODUBIpkuijXYkfL90qZzTqVPRp4BW/hw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@nolyfill/is-core-module@1.0.39': - resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} - engines: {node: '>=12.4.0'} - - '@pierre/diffs@1.2.12': - resolution: {integrity: sha512-pY/gmgWL03WnagqCyCnBi3QtRXUv4hCIY6FYqd5b1ZGaoI6a4Bsji8j+yRl2RfzPh/8Hf19rCl1GE80G6a1cLQ==} - peerDependencies: - react: ^18.3.1 || ^19.0.0 - react-dom: ^18.3.1 || ^19.0.0 - - '@pierre/theme@1.1.0': - resolution: {integrity: sha512-GC2OWTAfTIIWWYhPCygwG8t2EtePQkRfON4MI2rwIkJylmiyqIttJID2dCL8sUD8cNdEvYkEyfEHHKMeCiDLoQ==} - engines: {vscode: ^1.0.0} - - '@pierre/theming@0.0.2': - resolution: {integrity: sha512-QM1M4stXfnzfaE8I8YbjXSApV8c+2dBsXJj8eYg9WTpBR/cTmCZIcfGnN4p13iRrYu2Br/R/OJfEL7uR8Qjctw==} - peerDependencies: - '@pierre/theme': ^1.1.0 - '@shikijs/themes': ^3.0.0 || ^4.0.0 - react: ^18.3.1 || ^19.0.0 - react-dom: ^18.3.1 || ^19.0.0 - shiki: ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - '@pierre/theme': - optional: true - '@shikijs/themes': - optional: true - react: - optional: true - react-dom: - optional: true - shiki: - optional: true - - '@primer/octicons@19.33.0': - resolution: {integrity: sha512-kYrlutFnNVWDgckjQwOv9kXiFIPjTD/N+DIx6qzMBAk82nGTE85UKSvFvbt/RUhviNEoCjFoEr4fn5EAbkkUzQ==} - - '@radix-ui/primitive@1.1.7': - resolution: {integrity: sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==} - - '@radix-ui/react-arrow@1.1.15': - resolution: {integrity: sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-compose-refs@1.1.5': - resolution: {integrity: sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.2.2': - resolution: {integrity: sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dismissable-layer@1.1.19': - resolution: {integrity: sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-id@1.1.4': - resolution: {integrity: sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-popper@1.3.7': - resolution: {integrity: sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-portal@1.1.17': - resolution: {integrity: sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.1.10': - resolution: {integrity: sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@2.1.10': - resolution: {integrity: sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.3.3': - resolution: {integrity: sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-tooltip@1.2.16': - resolution: {integrity: sha512-6EamKFRRnlpdadndbZ6LMwycfwkwPte1B42hs6QA0gYhjaOKqW4PZ4pjaW9UrlDX5eVt/OjncE7BFTPL5nmZhg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.4': - resolution: {integrity: sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.2.6': - resolution: {integrity: sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-effect-event@0.0.5': - resolution: {integrity: sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.4': - resolution: {integrity: sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.1.4': - resolution: {integrity: sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.1.4': - resolution: {integrity: sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.2.11': - resolution: {integrity: sha512-NFS86RYYZb4/exihaESBGOpMJFz8MGLAfu3mOBSGByVnVPC9JPASfYubxd/8KbkQK0sYAv8lVQDEQukDX/qXvQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/rect@1.1.3': - resolution: {integrity: sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==} - - '@rc-component/async-validator@6.0.0': - resolution: {integrity: sha512-D3AGQwdyE58gmvx6waVSXJ80JGO+IY5L2O8HDnSOex7JNlzB3GuN/4hyHNTdhy2qtOhkpbIjmeAN3tL993wKbA==} - engines: {node: '>=14.x'} - - '@rc-component/cascader@1.22.0': - resolution: {integrity: sha512-SffrA57aS9oub3VuI7ajPhJTPtaNxngSvtRhD40Rd8dwJ5vfWPSrVanWgeepdWFGBt7EHftIK5RUU0u3rCTwWw==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/checkbox@2.0.0': - resolution: {integrity: sha512-3CXGPpAR9gsPKeO2N78HAPOzU30UdemD6HGJoWVJOpa6WleaGB5kzZj3v6bdTZab31YuWgY/RxV3VKPctn0DwQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/collapse@1.2.0': - resolution: {integrity: sha512-ZRYSKSS39qsFx93p26bde7JUZJshsUBEQRlRXPuJYlAiNX0vyYlF5TsAm8JZN3LcF8XvKikdzPbgAtXSbkLUkw==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/color-picker@3.1.1': - resolution: {integrity: sha512-OHaCHLHszCegdXmIq2ZRIZBN/EtpT6Wm8SG/gpzLATHbVKc/avvuKi+zlOuk05FTWvgaMmpxAko44uRJ3M+2pg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/context@2.0.2': - resolution: {integrity: sha512-uiGpAlblCNlziHPwj4S4Iy/oemeuz/hR03mbiEjTCXwsqOIN3BOzsRMyDwpyO5Fm0vIEEJRUf9ZtbRLbhksuTA==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/dialog@1.10.0': - resolution: {integrity: sha512-eDukNlz9vNszAGv7i3zKXdxEd3wgVmNxuJijYt8zvTh17QwTu8KK/bdURRd/lU4qaMzhO1HKKmMrwOnkaw0BvQ==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/drawer@1.4.2': - resolution: {integrity: sha512-1ib+fZEp6FBu+YvcIktm+nCQ+Q+qIpwpoaJH6opGr4ofh2QMq+qdr5DLC4oCf5qf3pcWX9lUWPYX652k4ini8Q==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/dropdown@1.0.3': - resolution: {integrity: sha512-YTST/N6kpqpDz3IMuM/PSSZnrDpSOA6dgHv12gPA90ZTSLv2CoqkZ0+9NtwTY6BeO7dstPblSic2QJg7dSFy/g==} - peerDependencies: - react: '>=16.11.0' - react-dom: '>=16.11.0' - - '@rc-component/form@1.8.6': - resolution: {integrity: sha512-1EXVsSKPZC6kGrIqxVck7kAWM6T65b6et/n5wIcyiaIa41VrDshD0nVLHoBDEIZr2ATQsOP6icb4XQkNFMLBAw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/image@1.10.0': - resolution: {integrity: sha512-BjeZCRQ+hw+4WAhvrw8rJvy5fckA2xpf/X2XQEOABUHvLTNB9inB98X3Mp54jYQ7g10DfWERQWHXeC4ylxp1Uw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/input-number@1.6.2': - resolution: {integrity: sha512-Gjcq7meZlCOiWN1t1xCC+7/s85humHVokTBI7PJgTfoyw5OWF74y3e6P8PHX104g9+b54jsodFIzyaj6p8LI9w==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/input@1.3.1': - resolution: {integrity: sha512-iFvTUT9W+JC/MSin2aGAk8NqsVlTzcExNC9DZariON1IWirju9NoNeEk47an4Q8iHazkoVI/y1LnDi88+CPcig==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - - '@rc-component/listy@1.2.3': - resolution: {integrity: sha512-IXiMjV5s0rczLBlfh7G5nB4M3365mrEeedjwKtf5I+Ns3PqRUsebR2h5u8CeFarsVfLUPC2I5p0h09TNoOWyvQ==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/mentions@1.11.0': - resolution: {integrity: sha512-IC2qXuEBMFHxPIXEFfYWj6Sr7UiDZnOqJHCYQBbwPzopBJOPZIR6mV9U4QH1bYQRlKYlYnIsajWDMgVGgWQyWQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/menu@1.4.1': - resolution: {integrity: sha512-3GsVRoQ4cnF/AoIQ4P+Z1haBfgfBPQfLT1RJY3Nu4DzOnheTslfCiGSPj7bv/cLj5sW5pHqN25dDXGP3JELAlQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/mini-decimal@1.1.4': - resolution: {integrity: sha512-xiuXcaCwyOWpD8a8scdExFl+bntNphAW8XeenL1ig2en0AAZY0Pcp4pC0dI22qJ+NvxKn9RoNIoRdqYU3BLH4w==} - engines: {node: '>=8.x'} - - '@rc-component/motion@1.3.3': - resolution: {integrity: sha512-Xh3IszxvlSv3/PLYFyC2UZi9LNB83yOnkB/LNmRzaypZLvkhqUIPS7MQpGZcCMWrNsXV2p6YTSWbSGvFpEle9A==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/mutate-observer@2.0.1': - resolution: {integrity: sha512-AyarjoLU5YlxuValRi+w8JRH2Z84TBbFO2RoGWz9d8bSu0FqT8DtugH3xC3BV7mUwlmROFauyWuXFuq4IFbH+w==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/notification@2.0.7': - resolution: {integrity: sha512-nqZzpf6BPdaj+3ILx7si79LLmqPKyUmQoXa+/9gg0SkH0v1DbD66oJgRMSBEVnd/zUT3D4gwxWIHUKebYf2ZXQ==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/overflow@1.0.1': - resolution: {integrity: sha512-syfmgAABaHCnCDzPwHZ/2tuvIcpOO3jefYZMmfkN+pmo8HKTzsfhS57vxo4ksPdN0By+uWVJhJWNFozNBxi2eA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/pagination@1.4.0': - resolution: {integrity: sha512-CW1g7P9V8u+e8JQdUsl2RWg+GCsoee0mtJjZUCCxn/vb3jzOwDKm6hAdwddHCVBfWJ58eGUBZz3IvnU8rRktjw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/picker@1.12.0': - resolution: {integrity: sha512-0FZGgDiDZFMm2hcfGv4jyjm7yWIj2MiwfeTzLL0vWkO+8cCSKdiM9XhWpkn1aAsoI2EwUy48Oz2cGfvL8ZKrfw==} - engines: {node: '>=12.x'} - peerDependencies: - date-fns: '>= 2.x' - dayjs: '>= 1.x' - luxon: '>= 3.x' - moment: '>= 2.x' - react: '>=16.9.0' - react-dom: '>=16.9.0' - peerDependenciesMeta: - date-fns: - optional: true - dayjs: - optional: true - luxon: - optional: true - moment: - optional: true - - '@rc-component/portal@1.1.2': - resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/portal@2.2.1': - resolution: {integrity: sha512-ck+r1kW/JSv0wxPji3KN2ss9K6Z0qqwusw/mf/0JobXhZ8hC2ejZwCJObW/SvDi0uhA0VzmCnx0CaCci95tcmA==} - engines: {node: '>=12.x'} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/progress@1.0.2': - resolution: {integrity: sha512-WZUnH9eGxH1+xodZKqdrHke59uyGZSWgj5HBM5Kwk5BrTMuAORO7VJ2IP5Qbm9aH3n9x3IcesqHHR0NWPBC7fQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/qrcode@2.0.0': - resolution: {integrity: sha512-aAv3QhPP1xyafuTZOxub6a54pCeBnN3IwQkpETrBtthq4BL5IgxnCbuoBWPDpdLw1y1j6BgBUCAKV92+yX06Dw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/rate@1.0.1': - resolution: {integrity: sha512-bkXxeBqDpl5IOC7yL7GcSYjQx9G8H+6kLYQnNZWeBYq2OYIv1MONd6mqKTjnnJYpV0cQIU2z3atdW0j1kttpTw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/resize-observer@1.1.2': - resolution: {integrity: sha512-t/Bb0W8uvL4PYKAB3YcChC+DlHh0Wt5kM7q/J+0qpVEUMLe7Hk5zuvc9km0hMnTFPSx5Z7Wu/fzCLN6erVLE8Q==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/segmented@1.3.0': - resolution: {integrity: sha512-5J/bJ01mbDnoA6P/FW8SxUvKn+OgUSTZJPzCNnTBntG50tzoP7DydGhqxp7ggZXZls7me3mc2EQDXakU3iTVFg==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - - '@rc-component/select@1.10.1': - resolution: {integrity: sha512-H+yQsl+qED9NilQ3g6zdpsMwUgwVjrcMTkNHAWRVU/MoNCYgTbDgU+MIMgZDK+rVdd2JUfI/MkysMcZZ0cyQKw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '*' - react-dom: '*' - - '@rc-component/slider@1.1.1': - resolution: {integrity: sha512-LSzgWGYDgeCDgR4r1XlU29gbYws6HpLnvJd/uMhLeW/vQgxldeR+Wb4uzHDCHiYEbr1bnEHWdjkPxjJRHxuiig==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/steps@1.2.2': - resolution: {integrity: sha512-/yVIZ00gDYYPHSY0JP+M+s3ZvuXLu2f9rEjQqiUDs7EcYsUYrpJ/1bLj9aI9R7MBR3fu/NGh6RM9u2qGfqp+Nw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/switch@1.0.3': - resolution: {integrity: sha512-Jgi+EbOBquje/XNdofr7xbJQZPYJP+BlPfR0h+WN4zFkdtB2EWqEfvkXJWeipflwjWip0/17rNbxEAqs8hVHfw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/table@1.11.1': - resolution: {integrity: sha512-OWdS6DMmeWb7bJBGqPxYZpQbzBlBiXZUu2sqo6Ii7Sjs9GeK1IsrXrWk26SL2c6KEseabswdxrRj7WUm9LdECw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/tabs@1.12.0': - resolution: {integrity: sha512-XL7Kqy5fnUE2WTlO1/fCGrrfNlGFebdr7JseGkEIjzcVMAtIFQJ8sqCSOmxcXstjU6fonD/4rnhZHxj7sDTajQ==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/tooltip@1.5.0': - resolution: {integrity: sha512-agQ/+mBqrEQfTX4D3KhQ7j+ZbX4/VHjoJ7Noa2wIdZ1/FbQTOd7Sn92rp+jtCoqAVTLUgSOydePIgZ204gi2EQ==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/tour@2.4.0': - resolution: {integrity: sha512-aui4r4TqmTzwaBgcQxHYep8kM8PTjZFufjokObpy35KfFeZ0k9ArquWFZqegQlH24P14t+F0qO0mGTgzlav1yg==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/tree-select@1.16.1': - resolution: {integrity: sha512-a1Oi6EJhqAhdOxxupdJi6fP0RPHMKn5TcfkX2+llaQ4lF4nwfH7b6SCHcnsybaa2s+pk1yZYwVyeOYkDnEBRdg==} - peerDependencies: - react: '*' - react-dom: '*' - - '@rc-component/tree@1.4.0': - resolution: {integrity: sha512-dGsJGDJQedA0BqqVgj3F8BvHXTSZijyhTXdbAdkcx8lynzZkty/CV3Z3LOm/fxz+BCfl3dfGiAQpb7Q5XNvl0Q==} - engines: {node: '>=10.x'} - peerDependencies: - react: '*' - react-dom: '*' - - '@rc-component/trigger@2.3.1': - resolution: {integrity: sha512-ORENF39PeXTzM+gQEshuk460Z8N4+6DkjpxlpE7Q3gYy1iBpLrx0FOJz3h62ryrJZ/3zCAUIkT1Pb/8hHWpb3A==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/trigger@3.10.1': - resolution: {integrity: sha512-mXlDN0IXdtV8Yqqm8195ECCyrbmfvvfKvwVvSlH0+qvKD6BUF8gRhEjSy0FOcD1+CcDRHgTiX99LoxfQrmh3Cw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/upload@1.1.1': - resolution: {integrity: sha512-GvYWSKeaJTOxxC5p6+nOSadzfvXA1h8C/iHFPFZX+szH3JUXrvs+DLiW8YUTBgvMh8m63mJeHrlYlJzAlg+pDA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@rc-component/util@1.12.0': - resolution: {integrity: sha512-AEjPL8JVdohIITaiXokyjL9WQ6tKWWjAYK9QU16tGNE9JaQABBQy+hA4H2Lup5MgXy9yY3iLrbZJheuU13hTdQ==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rc-component/virtual-list@1.5.1': - resolution: {integrity: sha512-boqHxdtyWC88u8quYgEO49bcBy5fzRiOcnBge+N4nLzs2k8hUQ/yw7JE9dM6yCBE4jSm5YSHVCVMS+suBuJGKA==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - - '@shikijs/core@4.4.3': - resolution: {integrity: sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==} - engines: {node: '>=20'} - - '@shikijs/engine-javascript@4.4.3': - resolution: {integrity: sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==} - engines: {node: '>=20'} - - '@shikijs/engine-oniguruma@4.4.3': - resolution: {integrity: sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==} - engines: {node: '>=20'} - - '@shikijs/langs@4.4.3': - resolution: {integrity: sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==} - engines: {node: '>=20'} - - '@shikijs/primitive@4.4.3': - resolution: {integrity: sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==} - engines: {node: '>=20'} - - '@shikijs/stream@4.4.3': - resolution: {integrity: sha512-nG30byPDdyua1R9danJjQjv60PlNHTi1q2O0tzW+ocAFqb63Y/5DK5URpbuGt0jEidpRNx3+OgJ+aEMUBWqRNA==} - engines: {node: '>=20'} - peerDependencies: - react: ^19.0.0 - solid-js: ^1.9.0 - svelte: ^5.0.0-0 - vue: ^3.2.0 - peerDependenciesMeta: - react: - optional: true - solid-js: - optional: true - svelte: - optional: true - vue: - optional: true - - '@shikijs/themes@4.4.3': - resolution: {integrity: sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==} - engines: {node: '>=20'} - - '@shikijs/transformers@4.4.3': - resolution: {integrity: sha512-oJSARV6NaWd+rnNJbtnpAdj3Zg0ZVyzsnMgb3vi3HA+35y8lBWUCpOnWsmyiXZIikY+x1BDqrQUgmxfzWh7Jvw==} - engines: {node: '>=20'} - - '@shikijs/types@4.4.3': - resolution: {integrity: sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==} - engines: {node: '>=20'} - - '@shikijs/vscode-textmate@10.0.2': - resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - - '@splinetool/runtime@1.12.98': - resolution: {integrity: sha512-UWZH/+4XtNgMMgmDiWhZS55WOwUDGuTj4uH6fiZV6Jol3d3v3z1RRBObspx8GMio0HajOYGg7FJ8TZdyBdpW4A==} - - '@stitches/react@1.2.8': - resolution: {integrity: sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==} - peerDependencies: - react: '>= 16.3.0' - - '@swc/helpers@0.5.23': - resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} - - '@tailwindcss/node@4.3.3': - resolution: {integrity: sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==} - - '@tailwindcss/oxide-android-arm64@4.3.3': - resolution: {integrity: sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [android] - - '@tailwindcss/oxide-darwin-arm64@4.3.3': - resolution: {integrity: sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [darwin] - - '@tailwindcss/oxide-darwin-x64@4.3.3': - resolution: {integrity: sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==} - engines: {node: '>= 20'} - cpu: [x64] - os: [darwin] - - '@tailwindcss/oxide-freebsd-x64@4.3.3': - resolution: {integrity: sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==} - engines: {node: '>= 20'} - cpu: [x64] - os: [freebsd] - - '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3': - resolution: {integrity: sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==} - engines: {node: '>= 20'} - cpu: [arm] - os: [linux] - - '@tailwindcss/oxide-linux-arm64-gnu@4.3.3': - resolution: {integrity: sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@tailwindcss/oxide-linux-arm64-musl@4.3.3': - resolution: {integrity: sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@tailwindcss/oxide-linux-x64-gnu@4.3.3': - resolution: {integrity: sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==} - engines: {node: '>= 20'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@tailwindcss/oxide-linux-x64-musl@4.3.3': - resolution: {integrity: sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==} - engines: {node: '>= 20'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@tailwindcss/oxide-wasm32-wasi@4.3.3': - resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - bundledDependencies: - - '@napi-rs/wasm-runtime' - - '@emnapi/core' - - '@emnapi/runtime' - - '@tybys/wasm-util' - - '@emnapi/wasi-threads' - - tslib - - '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': - resolution: {integrity: sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [win32] - - '@tailwindcss/oxide-win32-x64-msvc@4.3.3': - resolution: {integrity: sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==} - engines: {node: '>= 20'} - cpu: [x64] - os: [win32] - - '@tailwindcss/oxide@4.3.3': - resolution: {integrity: sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==} - engines: {node: '>= 20'} - - '@tailwindcss/postcss@4.3.3': - resolution: {integrity: sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==} - - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - - '@types/debug@4.1.13': - resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} - - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - - '@types/estree@1.0.9': - resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - - '@types/hast@3.0.5': - resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} - - '@types/js-cookie@3.0.6': - resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/katex@0.16.8': - resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/mdx@2.0.14': - resolution: {integrity: sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==} - - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - - '@types/node@20.19.43': - resolution: {integrity: sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/prismjs@1.26.6': - resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} - - '@types/react-dom@19.2.4': - resolution: {integrity: sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==} - peerDependencies: - '@types/react': ^19.2.0 - - '@types/react-syntax-highlighter@15.5.13': - resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==} - - '@types/react@19.2.18': - resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} - - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - - '@typescript-eslint/eslint-plugin@8.67.0': - resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.67.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/parser@8.67.0': - resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/project-service@8.67.0': - resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/scope-manager@8.67.0': - resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.67.0': - resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/type-utils@8.67.0': - resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/types@8.67.0': - resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.67.0': - resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/utils@8.67.0': - resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/visitor-keys@8.67.0': - resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@ungap/structured-clone@1.3.3': - resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} - - '@unrs/resolver-binding-android-arm-eabi@1.12.2': - resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} - cpu: [arm] - os: [android] - - '@unrs/resolver-binding-android-arm64@1.12.2': - resolution: {integrity: sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==} - cpu: [arm64] - os: [android] - - '@unrs/resolver-binding-darwin-arm64@1.12.2': - resolution: {integrity: sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==} - cpu: [arm64] - os: [darwin] - - '@unrs/resolver-binding-darwin-x64@1.12.2': - resolution: {integrity: sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==} - cpu: [x64] - os: [darwin] - - '@unrs/resolver-binding-freebsd-x64@1.12.2': - resolution: {integrity: sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==} - cpu: [x64] - os: [freebsd] - - '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': - resolution: {integrity: sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': - resolution: {integrity: sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': - resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-arm64-musl@1.12.2': - resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': - resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-loong64-musl@1.12.2': - resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} - cpu: [loong64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': - resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': - resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': - resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': - resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-x64-gnu@1.12.2': - resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-x64-musl@1.12.2': - resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-openharmony-arm64@1.12.2': - resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} - cpu: [arm64] - os: [openharmony] - - '@unrs/resolver-binding-wasm32-wasi@1.12.2': - resolution: {integrity: sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': - resolution: {integrity: sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==} - cpu: [arm64] - os: [win32] - - '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': - resolution: {integrity: sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==} - cpu: [ia32] - os: [win32] - - '@unrs/resolver-binding-win32-x64-msvc@1.12.2': - resolution: {integrity: sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==} - cpu: [x64] - os: [win32] - - '@use-gesture/core@10.3.1': - resolution: {integrity: sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==} - - '@use-gesture/react@10.3.1': - resolution: {integrity: sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==} - peerDependencies: - react: '>= 16.8.0' - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} - engines: {node: '>=0.4.0'} - hasBin: true - - ahooks@3.9.7: - resolution: {integrity: sha512-S0lvzhbdlhK36RFBkGv+RbOM/dbbweym+BIHM/bwwuWVSVN5TuVErHPMWo4w0t1NDYg5KPp2iEf7Y7E5LASYiw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - ajv@6.15.0: - resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - antd-style@4.1.0: - resolution: {integrity: sha512-vnPBGg0OVlSz90KRYZhxd89aZiOImTiesF+9MQqN8jsLGZUQTjbP04X9jTdEfsztKUuMbBWg/RmB/wHTakbtMQ==} - peerDependencies: - antd: '>=6.0.0' - react: '>=18' - - antd@6.6.1: - resolution: {integrity: sha512-QHIHYoUk9N9nJy1T9fyxWKjY0qApdTEDd/6lzqYng8Uryv9FejNmbhKvYF7obGqB+TuLXQsPVF7fOVgyzM1KrQ==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} - - array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} - - array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.6: - resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - - assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - - astring@1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} - hasBin: true - - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - - attr-accept@2.2.5: - resolution: {integrity: sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==} - engines: {node: '>=4'} - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - axe-core@4.13.0: - resolution: {integrity: sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==} - engines: {node: '>=4'} - - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - - babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - balanced-match@4.0.4: - resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} - engines: {node: 18 || 20 || >=22} - - baseline-browser-mapping@2.11.14: - resolution: {integrity: sha512-JyJ954WzuIR8/FFzX0o5krdSTrBAkcCSRfWSleRsIHSWV+cZe2FI1PKggVkFke1hBldRs+LRxUczzE9iPmgZww==} - engines: {node: '>=6.0.0'} - hasBin: true - - beautiful-mermaid@1.1.3: - resolution: {integrity: sha512-TItrtrAyHp1vwFfFVYauWGrquouk/6SS21Aq3RsxindSYZODcN4xYrPZD6BiZRU+o5mKJzDPz9MUSMvELdylyg==} - - brace-expansion@1.1.18: - resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} - - brace-expansion@5.0.9: - resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} - engines: {node: 20 || >=22} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.28.8: - resolution: {integrity: sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - call-bind@1.0.9: - resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} - engines: {node: '>= 0.4'} - - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - caniuse-lite@1.0.30001809: - resolution: {integrity: sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - chroma-js@3.2.0: - resolution: {integrity: sha512-os/OippSlX1RlWWr+QDPcGUZs0uoqr32urfxESG9U93lhUfbnlyckte84Q8P1UQY/qth983AS1JONKmLS4T0nw==} - - class-variance-authority@0.7.1: - resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} - - classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - compute-scroll-into-view@3.1.1: - resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - - dayjs@1.11.23: - resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==} - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decode-named-character-reference@1.3.0: - resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - - decode-uri-component@0.5.0: - resolution: {integrity: sha512-1BiQVoK8C9gUbQU6NzAtO/tkz2qOFpEObMWpcFvhx4fYnj4Oc5yzaJN/LD36ihkVUdXyh5ZekzX+yM+ty/SrPg==} - engines: {node: '>=14.16'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - diff@9.0.0: - resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} - engines: {node: '>=0.3.1'} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - electron-to-chromium@1.5.407: - resolution: {integrity: sha512-4R8XgQOdfxexCd/u63lRm6wCHjECwI45MV9wxAs2ggtfWe2hwlo1ql97jKsju2IcJ+jFSTwBssyYoiWhh7mauQ==} - - elkjs@0.11.1: - resolution: {integrity: sha512-zxxR9k+rx5ktMwT/FwyLdPCrq7xN6e4VGGHH8hA01vVYKjTFik7nHOxBnAYtrgYUB1RpAiLvA1/U2YraWxyKKg==} - - emoji-mart@5.6.0: - resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==} - - emoji-regex@10.6.0: - resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - enhanced-resolve@5.24.5: - resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==} - engines: {node: '>=10.13.0'} - - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} - - entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} - - error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - - es-abstract-get@1.0.0: - resolution: {integrity: sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==} - engines: {node: '>= 0.4'} - - es-abstract@1.24.2: - resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-iterator-helpers@1.4.0: - resolution: {integrity: sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==} - engines: {node: '>= 0.4'} - - es-object-atoms@1.1.2: - resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} - - es-to-primitive@1.3.4: - resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==} - engines: {node: '>= 0.4'} - - es-toolkit@1.51.0: - resolution: {integrity: sha512-zC2lQGkM7QX+Gm6iM3+WIdZJzthsEd14LvRNJneSO2hzyz/zNBENR8+YXWo1cKxgPBtV6ksPYHELbcwBRzmdCw==} - - esast-util-from-estree@2.0.0: - resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} - - esast-util-from-js@2.0.1: - resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - eslint-config-next@16.3.1: - resolution: {integrity: sha512-0vtrpwFVHFEkycUgV/DyrG29OS+HSRdah5Yu8YuZoiBMtlAT6NIiWzaLwDkJZxr2kGfx+9LIvfQ7KHAlEs0VsA==} - peerDependencies: - eslint: '>=9.0.0' - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - - eslint-import-resolver-node@0.3.10: - resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} - - eslint-import-resolver-typescript@3.10.1: - resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - - eslint-module-utils@2.14.0: - resolution: {integrity: sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-import@2.32.0: - resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-jsx-a11y@6.10.2: - resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-react-hooks@7.1.1: - resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} - engines: {node: '>=18'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 - - eslint-plugin-react@7.37.5: - resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@5.0.1: - resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - eslint@9.39.5: - resolution: {integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - - estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-util-scope@1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} - - estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} - - fault@1.0.4: - resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} - - fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - file-selector@0.5.0: - resolution: {integrity: sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA==} - engines: {node: '>= 10'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - filter-obj@5.1.0: - resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} - engines: {node: '>=14.16'} - - find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.4.4: - resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} - - for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} - - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - - format@0.2.2: - resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} - engines: {node: '>=0.4.x'} - - framer-motion@12.43.0: - resolution: {integrity: sha512-1eaL3RvR/kAlbG7UYcpMptEyzPoENO0c6w7ZnB3/hh2vSAz/6uGAFn6fdoqTBguNstf3MsFhJHsD/0DHiclG+g==} - peerDependencies: - '@emotion/is-prop-valid': '*' - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@emotion/is-prop-valid': - optional: true - react: - optional: true - react-dom: - optional: true - - framer-motion@13.1.1: - resolution: {integrity: sha512-B/xn2TPS4f61cEBLFjiYlQFnBZUW1YVj/LM+C+N4OP8Rs95VLEI2ot/RlfBg111la/EiyECFaJJi/A3FWA8MUA==} - peerDependencies: - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.2.0: - resolution: {integrity: sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - generator-function@2.0.1: - resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} - engines: {node: '>= 0.4'} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-east-asian-width@1.6.0: - resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} - engines: {node: '>=18'} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.14.2: - resolution: {integrity: sha512-XpwZALwwl/BaKTAyC6+c5T8y6kCg2jk+XGqOVrKIQmW49pNypYLMRjCUXqa28tQgJlhS2RlzP7sc+Rx7W6qsfw==} - - get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - - giscus@1.6.0: - resolution: {integrity: sha512-Zrsi8r4t1LVW950keaWcsURuZUQwUaMKjvJgTCY125vkW6OiEBkatE7ScJDbpqKHdZwb///7FVC21SE3iFK3PQ==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} - engines: {node: '>=18'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.4: - resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} - engines: {node: '>= 0.4'} - - hast-util-from-dom@5.0.1: - resolution: {integrity: sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==} - - hast-util-from-html-isomorphic@2.0.0: - resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} - - hast-util-from-html@2.0.3: - resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} - - hast-util-from-parse5@8.0.3: - resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} - - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-raw@9.1.0: - resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} - - hast-util-to-estree@3.1.3: - resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} - - hast-util-to-html@9.0.5: - resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} - - hast-util-to-jsx-runtime@2.3.6: - resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - - hast-util-to-parse5@8.0.1: - resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} - - hast-util-to-text@4.0.2: - resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@9.0.1: - resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} - - hermes-estree@0.25.1: - resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} - - hermes-parser@0.25.1: - resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} - - highlight.js@10.7.3: - resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} - - highlightjs-vue@1.0.0: - resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - html-url-attributes@3.0.1: - resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - ignore@7.0.6: - resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} - engines: {node: '>= 4'} - - immer@11.1.17: - resolution: {integrity: sha512-8Vu44Y0MuMBlTQz/jQ8HEMYNq/bBqk87MnBwYR5mC8AthfhEXidZ5aT/oA/CUqboa8THKltnD9L3xyqhU/Sy1Q==} - - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inline-style-parser@0.2.7: - resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - - internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - - intersection-observer@0.12.2: - resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} - deprecated: The Intersection Observer polyfill is no longer needed and can safely be removed. Intersection Observer has been Baseline since 2019. - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - - is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - - is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} - - is-bun-module@2.0.0: - resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.16.2: - resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - - is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-document.all@1.0.0: - resolution: {integrity: sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==} - engines: {node: '>= 0.4'} - - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - - is-generator-function@1.1.2: - resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - is-mobile@5.0.0: - resolution: {integrity: sha512-Tz/yndySvLAEXh+Uk8liFCxOwVH6YutuR74utvOcu7I9Di+DwM0mtdPVZNaVvvBUM2OXxne/NhOs1zAO7riusQ==} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - - is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - - is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - - is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - - jiti@2.7.0: - resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} - hasBin: true - - js-cookie@3.0.8: - resolution: {integrity: sha512-yeJd4aNAdYZQjaon2bpD/Gb0B/omw7HQOsynXXcOiWVCacbBcPlgn8S/d1X6blFSaHao7ozqtW7NZW19xpCtIw==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@4.3.1: - resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} - hasBin: true - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json2mq@0.2.0: - resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - katex@0.16.47: - resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} - hasBin: true - - katex@0.18.4: - resolution: {integrity: sha512-IMPntbRLOU+eu88XDiFKqQ8Akhr9Tv7jDMXqPhjG9SI1JMA4DIgXk4x9k4skJz2NZJXBRbC+2pYBLj9olqcZow==} - hasBin: true - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - - leva@0.10.1: - resolution: {integrity: sha512-BcjnfUX8jpmwZUz2L7AfBtF9vn4ggTH33hmeufDULbP3YgNZ/C+ss/oO3stbrqRQyaOmRwy70y7BGTGO81S3rA==} - peerDependencies: - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lightningcss-android-arm64@1.32.0: - resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [android] - - lightningcss-darwin-arm64@1.32.0: - resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - - lightningcss-darwin-x64@1.32.0: - resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - - lightningcss-freebsd-x64@1.32.0: - resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - - lightningcss-linux-arm-gnueabihf@1.32.0: - resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - - lightningcss-linux-arm64-gnu@1.32.0: - resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - lightningcss-linux-arm64-musl@1.32.0: - resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [musl] - - lightningcss-linux-x64-gnu@1.32.0: - resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [glibc] - - lightningcss-linux-x64-musl@1.32.0: - resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [musl] - - lightningcss-win32-arm64-msvc@1.32.0: - resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [win32] - - lightningcss-win32-x64-msvc@1.32.0: - resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - - lightningcss@1.32.0: - resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} - engines: {node: '>= 12.0.0'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lit-element@4.2.2: - resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} - - lit-html@3.3.3: - resolution: {integrity: sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA==} - - lit@3.3.3: - resolution: {integrity: sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw==} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash@4.18.1: - resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lowlight@1.20.0: - resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru_map@0.4.1: - resolution: {integrity: sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==} - - lucide-react@0.469.0: - resolution: {integrity: sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - lucide-react@0.562.0: - resolution: {integrity: sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - lucide-react@1.31.0: - resolution: {integrity: sha512-G8u2eEtoHUnUa9f8lbvqDhCiORMnYLdUEo06EEG9MQvHQrInKcX3Pa2TH39MM5qyzRcWETxB0+aOwAPI1g1kEg==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - - markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - - markdown-table@3.0.4: - resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - - marked@18.0.9: - resolution: {integrity: sha512-/Sa4qiiHZxf0/FQdBBowr9q4r10krCwMvpK48FUBdXdUXScDxiQGR9zCPrFgRVR5LU3iySOiIjy09ZQvADir1w==} - engines: {node: '>= 20'} - hasBin: true - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mdast-util-find-and-replace@3.0.2: - resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - - mdast-util-from-markdown@2.0.3: - resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} - - mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - - mdast-util-gfm-footnote@2.1.0: - resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.1.0: - resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - - mdast-util-math@3.0.0: - resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} - - mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - - mdast-util-mdx-jsx@3.2.0: - resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} - - mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-newline-to-break@2.0.0: - resolution: {integrity: sha512-MbgeFca0hLYIEx/2zGsszCSEJJ1JSCdiY5xQxRcLDDGa8EPvlLPupJ4DSajbMPAnC0je8jfb9TiUATnxxrHUog==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@13.2.1: - resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} - - mdast-util-to-markdown-cjk-friendly@1.0.0: - resolution: {integrity: sha512-BoaAm8mlJ+LAYz0Qs532Y3ciTuQYgBUPZcSFbvC/ZKmEMAKgulw84YvQK1gI34t/vL2euSfuaWlqczkTBgamkw==} - engines: {node: '>=18'} - peerDependencies: - '@types/mdast': '*' - peerDependenciesMeta: - '@types/mdast': - optional: true - - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - merge-value@1.0.0: - resolution: {integrity: sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ==} - engines: {node: '>=0.10.0'} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromark-core-commonmark@2.0.3: - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - - micromark-extension-cjk-friendly-util@3.0.1: - resolution: {integrity: sha512-GcbXqTTHOsiZHyF753oIddP/J2eH8j9zpyQPhkof6B2JNxfEJabnQqxbCgzJNuNes0Y2jTNJ3LiYPSXr6eJA8w==} - engines: {node: '>=18'} - peerDependencies: - micromark-util-types: '*' - peerDependenciesMeta: - micromark-util-types: - optional: true - - micromark-extension-cjk-friendly@2.0.1: - resolution: {integrity: sha512-OkzoYVTL1ChbvQ8Cc1ayTIz7paFQz8iS9oIYmewncweUSwmWR+hkJF9spJ1lxB90XldJl26A1F4IkPOKS3bDXw==} - engines: {node: '>=18'} - peerDependencies: - micromark: ^4.0.0 - micromark-util-types: ^2.0.0 - peerDependenciesMeta: - micromark-util-types: - optional: true - - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - - micromark-extension-gfm-table@2.1.1: - resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-extension-math@3.1.0: - resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} - - micromark-extension-mdx-expression@3.0.1: - resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - - micromark-extension-mdx-jsx@3.0.2: - resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} - - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - - micromark-factory-mdx-expression@2.0.3: - resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} - - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - - micromark-util-events-to-acorn@2.0.3: - resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} - - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - - micromark-util-subtokenize@2.1.0: - resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - minimatch@10.2.6: - resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} - engines: {node: 18 || 20 || >=22} - - minimatch@3.1.5: - resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - - motion-dom@12.43.0: - resolution: {integrity: sha512-azKON4d9S65PEoFUiQTMTgPheEmzf2QngdRc50AKfJp9Q9mmcBVw22c8eMq9k8kxOFHdL7+WZY7N/5F/lwiDag==} - - motion-dom@13.1.1: - resolution: {integrity: sha512-XSf8VYWSB6G/0IY3rWVbyLcxWXtAVHkN1PQE2agTaCv3u8RGvbwu56TyyR/MNzBqqNavEBTZzErcxI1TxBrjcA==} - - motion-utils@12.39.0: - resolution: {integrity: sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==} - - motion-utils@13.0.0: - resolution: {integrity: sha512-7DnN7TmbLcYXcG4RVadXIihWlyuM9afoUww8Y5Agg431kGKiuL2/OMyP4mJ5wLz+pvN3t5ySClLOaVXJ+wekRQ==} - - motion@12.43.0: - resolution: {integrity: sha512-BQgQbSa9Hn3/mtbib0MK53y6JSANa+YKUKlaYnWzAVDH424RYQ5LVpV3pNiWH00BA2z4ojsSdMzqT7g2FQwjuQ==} - peerDependencies: - '@emotion/is-prop-valid': '*' - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@emotion/is-prop-valid': - optional: true - react: - optional: true - react-dom: - optional: true - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.18: - resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - napi-postinstall@0.3.4: - resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - next@16.3.1: - resolution: {integrity: sha512-hsAp0i7Rh+/dhe7DGIeN2YlpLM1DP4MNxti9EtDMtqcO612X81MvvEj388/oTce9U1EcEIOWDlGq0zRwrBKvuA==} - engines: {node: '>=20.9.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.51.1 - babel-plugin-react-compiler: '*' - react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - babel-plugin-react-compiler: - optional: true - sass: - optional: true - - node-exports-info@1.6.2: - resolution: {integrity: sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==} - engines: {node: '>= 0.4'} - - node-releases@2.0.53: - resolution: {integrity: sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==} - engines: {node: '>=18'} - - numeral@2.0.6: - resolution: {integrity: sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - - object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - - on-change@4.0.0: - resolution: {integrity: sha512-PTu7C9Jsz4b+sNMDpH0eZFTr7uxdOtoDWRnhaVNK50bgrrnW5nvbWI0jm5DG9qOoTnIhBzE9xoKVFPD9xgtbdg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - oniguruma-parser@0.12.2: - resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} - - oniguruma-to-es@4.3.6: - resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - own-keys@1.0.2: - resolution: {integrity: sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==} - engines: {node: '>= 0.4'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-entities@4.0.2: - resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.2: - resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} - engines: {node: '>=8.6'} - - picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} - engines: {node: '>=12'} - - polished@4.3.1: - resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} - engines: {node: '>=10'} - - possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} - - postcss@8.5.23: - resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.5.26: - resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prismjs@1.30.0: - resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} - engines: {node: '>=6'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - property-information@7.2.0: - resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - query-string@9.5.0: - resolution: {integrity: sha512-YlJmwNyi0RGYjlxYcuDncMsxFU7YyutbuI7gTm8ySxIGBlwx5yiBCOD5ig9ZNoHkawk/1Dey0N5mEfcUybMVAA==} - engines: {node: '>=18'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - rc-collapse@4.0.0: - resolution: {integrity: sha512-SwoOByE39/3oIokDs/BnkqI+ltwirZbP8HZdq1/3SkPSBi7xDdvWHTp7cpNI9ullozkR6mwTWQi6/E/9huQVrA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - rc-dialog@9.6.0: - resolution: {integrity: sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - rc-footer@0.6.8: - resolution: {integrity: sha512-JBZ+xcb6kkex8XnBd4VHw1ZxjV6kmcwUumSHaIFdka2qzMCo7Klcy4sI6G0XtUpG/vtpislQCc+S9Bc+NLHYMg==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - - rc-image@7.12.0: - resolution: {integrity: sha512-cZ3HTyyckPnNnUb9/DRqduqzLfrQRyi+CdHjdqgsyDpI3Ln5UX1kXnAhPBSJj9pVRzwRFgqkN7p9b6HBDjmu/Q==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - rc-input-number@9.5.0: - resolution: {integrity: sha512-bKaEvB5tHebUURAEXw35LDcnRZLq3x1k7GxfAqBMzmpHkDGzjAtnUL8y4y5N15rIFIg5IJgwr211jInl3cipag==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - rc-input@1.8.0: - resolution: {integrity: sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - - rc-menu@9.16.1: - resolution: {integrity: sha512-ghHx6/6Dvp+fw8CJhDUHFHDJ84hJE3BXNCzSgLdmNiFErWSOaZNsihDAsKq9ByTALo/xkNIwtDFGIl6r+RPXBg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - rc-motion@2.9.5: - resolution: {integrity: sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - rc-overflow@1.5.0: - resolution: {integrity: sha512-Lm/v9h0LymeUYJf0x39OveU52InkdRXqnn2aYXfWmo8WdOonIKB2kfau+GF0fWq6jPgtdO9yMqveGcK6aIhJmg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - rc-resize-observer@1.4.3: - resolution: {integrity: sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - rc-util@5.44.4: - resolution: {integrity: sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - re-resizable@6.11.2: - resolution: {integrity: sha512-2xI2P3OHs5qw7K0Ud1aLILK6MQxW50TcO+DetD9eIV58j84TqYeHoZcL9H4GXFXXIh7afhH8mv5iUCXII7OW7A==} - peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - react-avatar-editor@15.1.0: - resolution: {integrity: sha512-Zto7u9l6Wd5LPPtjeFJ+7uwoT4bs01OSgkN2kxD18lWl8IiZ0GY3nWCbKPx4qIU7Au1vENsMJm19rfVWHHayaQ==} - peerDependencies: - react: ^0.14.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^0.14.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - react-colorful@5.8.0: - resolution: {integrity: sha512-Wy9OzPfjSN9bF12OB8N7UQvlsZ0I+7wHxpN+bV5BjNQGxOj6IiwkRjevJK9yOBjJWGQvAaf1OXtn8rUeEatAng==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - react-dom@19.2.8: - resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} - peerDependencies: - react: ^19.2.8 - - react-draggable@4.7.1: - resolution: {integrity: sha512-wa3tzfFnYt3yaZLuyU58fl1TNunfWfBekDgWhZA1+gb2jnp42wZ0ymuopR6M5kqDYmm4hKmzGlcKWjZf3Zb6RQ==} - peerDependencies: - react: '>= 16.3.0' - react-dom: '>= 16.3.0' - - react-dropzone@12.1.0: - resolution: {integrity: sha512-iBYHA1rbopIvtzokEX4QubO6qk5IF/x3BtKGu74rF2JkQDXnwC4uO/lHKpaw4PJIV6iIAYOlwLv2FpiGyqHNog==} - engines: {node: '>= 10.13'} - peerDependencies: - react: '>= 16.8' - - react-error-boundary@6.1.3: - resolution: {integrity: sha512-GnSKpCohFi2nQmJCWwP8O8wub7zexlePvpsejvQr35vS5RTouS1+utTNOmyc540yw5vyOXnSL1rBWsCQDmkyUA==} - peerDependencies: - '@types/react': ^18.0.0 || ^19.0.0 - react: ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-fast-compare@3.2.2: - resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - - react-hotkeys-hook@5.3.3: - resolution: {integrity: sha512-aswgyWUnE25hmhzHTfKDmKzsaSE5DJ4LKaU/o6rQSXkDd/1Bh9TfAFQbHkf6fLy11HvlYkp+cDDarGdhmCDhoQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - react-is@19.2.8: - resolution: {integrity: sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==} - - react-markdown@10.1.0: - resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} - peerDependencies: - '@types/react': '>=18' - react: '>=18' - - react-merge-refs@3.0.2: - resolution: {integrity: sha512-MSZAfwFfdbEvwkKWP5EI5chuLYnNUxNS7vyS0i1Jp+wtd8J4Ga2ddzhaE68aMol2Z4vCnRM/oGOo1a3V75UPlw==} - peerDependencies: - react: '>=16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0' - peerDependenciesMeta: - react: - optional: true - - react-rnd@10.5.3: - resolution: {integrity: sha512-s/sIT3pGZnQ+57egijkTp9mizjIWrJz68Pq6yd+F/wniFY3IriML18dUXnQe/HP9uMiJ+9MAp44hljG99fZu6Q==} - peerDependencies: - react: '>=16.3.0' - react-dom: '>=16.3.0' - - react-syntax-highlighter@16.1.1: - resolution: {integrity: sha512-PjVawBGy80C6YbC5DDZJeUjBmC7skaoEUdvfFQediQHgCL7aKyVHe57SaJGfQsloGDac+gCpTfRdtxzWWKmCXA==} - engines: {node: '>= 16.20.2'} - peerDependencies: - react: '>= 0.14.0' - - react-zoom-pan-pinch@4.0.4: - resolution: {integrity: sha512-P0D7lfNHyJCNuUozoVdt0WNWcQ34ZbbD71B8pb+UtF7Th8MKBnxYiPApDfPZZmr+Gk0l0WmGTXL8R36JirHcQQ==} - engines: {node: '>=8', npm: '>=5'} - peerDependencies: - react: '*' - react-dom: '*' - - react@19.2.8: - resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} - engines: {node: '>=0.10.0'} - - recma-build-jsx@1.0.0: - resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - - recma-jsx@1.0.1: - resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - recma-parse@1.0.0: - resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} - - recma-stringify@1.0.0: - resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - - refractor@5.0.0: - resolution: {integrity: sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw==} - - regex-recursion@6.0.2: - resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} - - regex-utilities@2.3.0: - resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - - regex@6.1.0: - resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} - - regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - - rehype-github-alerts@4.2.0: - resolution: {integrity: sha512-6di6kEu9WUHKLKrkKG2xX6AOuaCMGghg0Wq7MEuM/jBYUPVIq6PJpMe00dxMfU+/YSBtDXhffpDimgDi+BObIQ==} - - rehype-katex@7.0.1: - resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-recma@1.0.0: - resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} - - remark-breaks@4.0.0: - resolution: {integrity: sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ==} - - remark-cjk-friendly@2.3.1: - resolution: {integrity: sha512-f+pKZRxCRwNEGFBKNRAZAqU91GIK1SAo3ZyFHWRUgC9zcxRR0BXKd6YwqgSsxtW0rNpUDtONj7H5nje2WL3fcA==} - engines: {node: '>=18'} - peerDependencies: - '@types/mdast': ^4.0.0 - unified: ^11.0.0 - peerDependenciesMeta: - '@types/mdast': - optional: true - - remark-gfm@4.0.1: - resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - - remark-github@12.0.0: - resolution: {integrity: sha512-ByefQKFN184LeiGRCabfl7zUJsdlMYWEhiLX1gpmQ11yFg6xSuOTW7LVCv0oc1x+YvUMJW23NU36sJX2RWGgvg==} - - remark-math@6.0.0: - resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} - - remark-mdx@3.1.1: - resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.1.2: - resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - remend@1.3.0: - resolution: {integrity: sha512-iIhggPkhW3hFImKtB10w0dz4EZbs28mV/dmbcYVonWEJ6UGHHpP+bFZnTh6GNWJONg5m+U56JrL+8IxZRdgWjw==} - - reselect@5.2.0: - resolution: {integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==} - - resize-observer-polyfill@1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} - engines: {node: '>= 0.4'} - hasBin: true - - resolve@2.0.0-next.7: - resolution: {integrity: sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==} - engines: {node: '>= 0.4'} - hasBin: true - - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-array-concat@1.1.4: - resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} - engines: {node: '>=0.4'} - - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - - screenfull@5.2.0: - resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} - engines: {node: '>=0.10.0'} - - scroll-into-view-if-needed@3.1.0: - resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} - - semver-compare@1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.8.5: - resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} - engines: {node: '>=10'} - hasBin: true - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - - set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - - sharp@0.35.3: - resolution: {integrity: sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==} - engines: {node: '>=20.9.0'} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shiki@4.4.3: - resolution: {integrity: sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==} - engines: {node: '>=20'} - - side-channel-list@1.0.1: - resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.1: - resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} - engines: {node: '>= 0.4'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - - source-map@0.7.6: - resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} - engines: {node: '>= 12'} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - split-on-first@3.0.0: - resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} - engines: {node: '>=12'} - - split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - - stable-hash@0.0.5: - resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} - - stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} - engines: {node: '>= 0.4'} - - string-convert@0.2.1: - resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} - - string.prototype.includes@2.0.1: - resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} - engines: {node: '>= 0.4'} - - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - - string.prototype.trim@1.2.11: - resolution: {integrity: sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.10: - resolution: {integrity: sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - style-to-js@1.1.21: - resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - - style-to-object@1.0.14: - resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} - - styled-jsx@5.1.6: - resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - - stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - - stylis@4.4.0: - resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - swr@2.5.1: - resolution: {integrity: sha512-BRw55e8r0B7SpDN20CAzoQAHl7y1yP7/Zt7oqUjMv0vSt2u2Xnkm88Ws+VypbV9BXHQVuSuyVq7zMjO16wSExw==} - peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - tabbable@6.5.0: - resolution: {integrity: sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA==} - - tailwindcss@4.3.3: - resolution: {integrity: sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==} - - tapable@2.3.3: - resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} - engines: {node: '>=6'} - - throttle-debounce@5.0.2: - resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} - engines: {node: '>=12.22'} - - tinyglobby@0.2.17: - resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} - engines: {node: '>=12.0.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - to-vfile@8.0.0: - resolution: {integrity: sha512-IcmH1xB5576MJc9qcfEC/m/nQCFt3fzMHz45sSlgJyTWjRbKW1HAkJpuf3DgE57YzIlZcwcBZA5ENQbBo4aLkg==} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - - ts-api-utils@2.5.0: - resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - ts-md5@2.0.1: - resolution: {integrity: sha512-yF35FCoEOFBzOclSkMNEUbFQZuv89KEQ+5Xz03HrMSGUGB1+r+El+JiGOFwsP4p9RFNzwlrydYoTLvPOuICl9w==} - engines: {node: '>=18'} - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.8: - resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==} - engines: {node: '>= 0.4'} - - typescript-eslint@8.67.0: - resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unist-util-find-after@5.0.0: - resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - - unist-util-is@6.0.1: - resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} - - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.2: - resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} - - unist-util-visit@5.1.0: - resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - - unrs-resolver@1.12.2: - resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==} - - update-browserslist-db@1.3.1: - resolution: {integrity: sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url-join@5.0.0: - resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - use-merge-value@1.2.0: - resolution: {integrity: sha512-DXgG0kkgJN45TcyoXL49vJnn55LehnrmoHc7MbKi+QDBvr8dsesqws8UlyIWGHMR+JXgxc1nvY+jDGMlycsUcw==} - peerDependencies: - react: '>= 16.x' - - use-sync-external-store@1.6.0: - resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - uuid@14.0.1: - resolution: {integrity: sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==} - hasBin: true - - v8n@1.5.1: - resolution: {integrity: sha512-LdabyT4OffkyXFCe9UT+uMkxNBs5rcTVuZClvxQr08D5TUgo1OFKkoT65qYRCsiKBl/usHjpXvP4hHMzzDRj3A==} - - vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - - vfile-message@4.0.3: - resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - - virtua@0.49.3: - resolution: {integrity: sha512-k1Yn988Vz/L40uDtEWPjfdVo15Suumh4tU4/z5Srs0elNcU9DgBskqdh3llpHyAlXrCeHWTfcclYvY1uU4MmIg==} - peerDependencies: - react: '>=16.14.0' - react-dom: '>=16.14.0' - solid-js: '>=1.0' - svelte: '>=5.0' - vue: '>=3.2' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - solid-js: - optional: true - svelte: - optional: true - vue: - optional: true - - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - - which-typed-array@1.1.22: - resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yaml@1.10.3: - resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} - engines: {node: '>= 6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zod-validation-error@4.0.2: - resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.25.0 || ^4.0.0 - - zod@4.4.3: - resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} - - zustand@3.7.2: - resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} - engines: {node: '>=12.7.0'} - peerDependencies: - react: '>=16.8' - peerDependenciesMeta: - react: - optional: true - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@alloc/quick-lru@5.2.0': {} - - '@ant-design/colors@8.0.1': - dependencies: - '@ant-design/fast-color': 3.0.1 - - '@ant-design/cssinjs-utils@2.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@ant-design/cssinjs': 2.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@babel/runtime': 7.29.7 - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@ant-design/cssinjs@2.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 7.29.7 - '@emotion/hash': 0.8.0 - '@emotion/unitless': 0.7.5 - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - csstype: 3.2.3 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - stylis: 4.4.0 - - '@ant-design/fast-color@3.0.1': {} - - '@ant-design/icons-svg@4.5.0': {} - - '@ant-design/icons@6.3.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@ant-design/colors': 8.0.1 - '@ant-design/icons-svg': 4.5.0 - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@ant-design/react-slick@2.0.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 7.29.7 - clsx: 2.1.1 - json2mq: 0.2.0 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - throttle-debounce: 5.0.2 - - '@babel/code-frame@7.29.7': - dependencies: - '@babel/helper-validator-identifier': 7.29.7 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.29.7': {} - - '@babel/core@7.29.7(supports-color@7.2.0)': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.8 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@7.2.0))(supports-color@7.2.0) - '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.8 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@7.2.0) - '@babel/types': 7.29.8 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@7.2.0) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.29.8': - dependencies: - '@babel/parser': 7.29.8 - '@babel/types': 7.29.8 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.29.7': - dependencies: - '@babel/compat-data': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.8 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-globals@7.29.7': {} - - '@babel/helper-module-imports@7.29.7(supports-color@7.2.0)': - dependencies: - '@babel/traverse': 7.29.8(supports-color@7.2.0) - '@babel/types': 7.29.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@7.2.0))(supports-color@7.2.0)': - dependencies: - '@babel/core': 7.29.7(supports-color@7.2.0) - '@babel/helper-module-imports': 7.29.7(supports-color@7.2.0) - '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@7.2.0) - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.29.7': {} - - '@babel/helper-validator-identifier@7.29.7': {} - - '@babel/helper-validator-option@7.29.7': {} - - '@babel/helpers@7.29.7': - dependencies: - '@babel/template': 7.29.7 - '@babel/types': 7.29.8 - - '@babel/parser@7.29.8': - dependencies: - '@babel/types': 7.29.8 - - '@babel/runtime@7.29.7': {} - - '@babel/runtime@8.0.0': {} - - '@babel/template@7.29.7': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.8 - '@babel/types': 7.29.8 - - '@babel/traverse@7.29.8(supports-color@7.2.0)': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.8 - '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.8 - '@babel/template': 7.29.7 - '@babel/types': 7.29.8 - debug: 4.4.3(supports-color@7.2.0) - transitivePeerDependencies: - - supports-color - - '@babel/types@7.29.8': - dependencies: - '@babel/helper-string-parser': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 - - '@base-ui/react@1.6.0(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 7.29.7 - '@base-ui/utils': 0.3.1(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@floating-ui/utils': 0.2.12 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - use-sync-external-store: 1.6.0(react@19.2.8) - optionalDependencies: - '@types/react': 19.2.18 - - '@base-ui/utils@0.3.1(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 7.29.7 - '@floating-ui/utils': 0.2.12 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - reselect: 5.2.0 - use-sync-external-store: 1.6.0(react@19.2.8) - optionalDependencies: - '@types/react': 19.2.18 - - '@dnd-kit/accessibility@3.1.1(react@19.2.8)': - dependencies: - react: 19.2.8 - tslib: 2.8.1 - - '@dnd-kit/core@6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@dnd-kit/accessibility': 3.1.1(react@19.2.8) - '@dnd-kit/utilities': 3.2.2(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - tslib: 2.8.1 - - '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)': - dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@dnd-kit/utilities': 3.2.2(react@19.2.8) - react: 19.2.8 - tslib: 2.8.1 - - '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)': - dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@dnd-kit/utilities': 3.2.2(react@19.2.8) - react: 19.2.8 - tslib: 2.8.1 - - '@dnd-kit/utilities@3.2.2(react@19.2.8)': - dependencies: - react: 19.2.8 - tslib: 2.8.1 - - '@emnapi/core@1.10.0': - dependencies: - '@emnapi/wasi-threads': 1.2.1 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.10.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.1': - dependencies: - tslib: 2.8.1 - optional: true - - '@emoji-mart/data@1.2.1': {} - - '@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@19.2.8)': - dependencies: - emoji-mart: 5.6.0 - react: 19.2.8 - - '@emotion/babel-plugin@11.13.5(supports-color@7.2.0)': - dependencies: - '@babel/helper-module-imports': 7.29.7(supports-color@7.2.0) - '@babel/runtime': 7.29.7 - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/serialize': 1.3.3 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 - transitivePeerDependencies: - - supports-color - - '@emotion/cache@11.14.0': - dependencies: - '@emotion/memoize': 0.9.0 - '@emotion/sheet': 1.4.0 - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - stylis: 4.2.0 - - '@emotion/css@11.13.5(supports-color@7.2.0)': - dependencies: - '@emotion/babel-plugin': 11.13.5(supports-color@7.2.0) - '@emotion/cache': 11.14.0 - '@emotion/serialize': 1.3.3 - '@emotion/sheet': 1.4.0 - '@emotion/utils': 1.4.2 - transitivePeerDependencies: - - supports-color - - '@emotion/hash@0.8.0': {} - - '@emotion/hash@0.9.2': {} - - '@emotion/is-prop-valid@1.4.0': - dependencies: - '@emotion/memoize': 0.9.0 - - '@emotion/memoize@0.9.0': {} - - '@emotion/react@11.14.0(@types/react@19.2.18)(react@19.2.8)(supports-color@7.2.0)': - dependencies: - '@babel/runtime': 7.29.7 - '@emotion/babel-plugin': 11.13.5(supports-color@7.2.0) - '@emotion/cache': 11.14.0 - '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.8) - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - hoist-non-react-statics: 3.3.2 - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - transitivePeerDependencies: - - supports-color - - '@emotion/serialize@1.3.3': - dependencies: - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/unitless': 0.10.0 - '@emotion/utils': 1.4.2 - csstype: 3.2.3 - - '@emotion/sheet@1.4.0': {} - - '@emotion/unitless@0.10.0': {} - - '@emotion/unitless@0.7.5': {} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.8)': - dependencies: - react: 19.2.8 - - '@emotion/utils@1.4.2': {} - - '@emotion/weak-memoize@0.4.0': {} - - '@eslint-community/eslint-utils@4.10.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))': - dependencies: - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))': - dependencies: - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.2': {} - - '@eslint/config-array@0.21.2(supports-color@7.2.0)': - dependencies: - '@eslint/object-schema': 2.1.7 - debug: 4.4.3(supports-color@7.2.0) - minimatch: 3.1.5 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.4.2': - dependencies: - '@eslint/core': 0.17.0 - - '@eslint/core@0.17.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.6(supports-color@7.2.0)': - dependencies: - ajv: 6.15.0 - debug: 4.4.3(supports-color@7.2.0) - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.3.1 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.5': {} - - '@eslint/object-schema@2.1.7': {} - - '@eslint/plugin-kit@0.4.1': - dependencies: - '@eslint/core': 0.17.0 - levn: 0.4.1 - - '@floating-ui/core@1.8.0': - dependencies: - '@floating-ui/utils': 0.2.12 - - '@floating-ui/dom@1.8.0': - dependencies: - '@floating-ui/core': 1.8.0 - '@floating-ui/utils': 0.2.12 - - '@floating-ui/react-dom@2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@floating-ui/dom': 1.8.0 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@floating-ui/react@0.27.20(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@floating-ui/utils': 0.2.12 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - tabbable: 6.5.0 - - '@floating-ui/utils@0.2.12': {} - - '@giscus/react@3.1.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - giscus: 1.6.0 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@humanfs/core@0.19.2': - dependencies: - '@humanfs/types': 0.15.0 - - '@humanfs/node@0.16.8': - dependencies: - '@humanfs/core': 0.19.2 - '@humanfs/types': 0.15.0 - '@humanwhocodes/retry': 0.4.3 - - '@humanfs/types@0.15.0': {} - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.4.3': {} - - '@img/colour@1.1.0': - optional: true - - '@img/sharp-darwin-arm64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.3.2 - optional: true - - '@img/sharp-darwin-x64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.3.2 - optional: true - - '@img/sharp-freebsd-wasm32@0.35.3': - dependencies: - '@img/sharp-wasm32': 0.35.3 - optional: true - - '@img/sharp-libvips-darwin-arm64@1.3.2': - optional: true - - '@img/sharp-libvips-darwin-x64@1.3.2': - optional: true - - '@img/sharp-libvips-linux-arm64@1.3.2': - optional: true - - '@img/sharp-libvips-linux-arm@1.3.2': - optional: true - - '@img/sharp-libvips-linux-ppc64@1.3.2': - optional: true - - '@img/sharp-libvips-linux-riscv64@1.3.2': - optional: true - - '@img/sharp-libvips-linux-s390x@1.3.2': - optional: true - - '@img/sharp-libvips-linux-x64@1.3.2': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.3.2': - optional: true - - '@img/sharp-libvips-linuxmusl-x64@1.3.2': - optional: true - - '@img/sharp-linux-arm64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.3.2 - optional: true - - '@img/sharp-linux-arm@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.3.2 - optional: true - - '@img/sharp-linux-ppc64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.3.2 - optional: true - - '@img/sharp-linux-riscv64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.3.2 - optional: true - - '@img/sharp-linux-s390x@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.3.2 - optional: true - - '@img/sharp-linux-x64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.3.2 - optional: true - - '@img/sharp-linuxmusl-arm64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 - optional: true - - '@img/sharp-linuxmusl-x64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.3.2 - optional: true - - '@img/sharp-wasm32@0.35.3': - dependencies: - '@emnapi/runtime': 1.11.3 - optional: true - - '@img/sharp-webcontainers-wasm32@0.35.3': - dependencies: - '@img/sharp-wasm32': 0.35.3 - optional: true - - '@img/sharp-win32-arm64@0.35.3': - optional: true - - '@img/sharp-win32-ia32@0.35.3': - optional: true - - '@img/sharp-win32-x64@0.35.3': - optional: true - - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/sourcemap-codec@1.5.5': {} - - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - - '@lit-labs/ssr-dom-shim@1.6.0': {} - - '@lit/reactive-element@2.1.2': - dependencies: - '@lit-labs/ssr-dom-shim': 1.6.0 - - '@lobehub/emojilib@1.0.0': {} - - '@lobehub/fluent-emoji@4.1.0(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)': - dependencies: - '@lobehub/emojilib': 1.0.0 - antd-style: 4.1.0(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0) - emoji-regex: 10.6.0 - es-toolkit: 1.51.0 - lucide-react: 0.562.0(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - url-join: 5.0.0 - transitivePeerDependencies: - - '@types/react' - - antd - - supports-color - - '@lobehub/icons@5.16.0(@lobehub/ui@5.31.1)(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)': - dependencies: - '@lobehub/ui': 5.31.1(@lobehub/fluent-emoji@4.1.0(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0))(@lobehub/icons@5.16.0)(@shikijs/themes@4.4.3)(@types/mdast@4.0.4)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(motion@12.43.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0) - antd: 6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - antd-style: 4.1.0(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0) - es-toolkit: 1.51.0 - lucide-react: 0.469.0(react@19.2.8) - polished: 4.3.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - transitivePeerDependencies: - - '@types/react' - - supports-color - - '@lobehub/ui@5.31.1(@lobehub/fluent-emoji@4.1.0(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0))(@lobehub/icons@5.16.0)(@shikijs/themes@4.4.3)(@types/mdast@4.0.4)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(motion@12.43.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)': - dependencies: - '@ant-design/cssinjs': 2.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@base-ui/react': 1.6.0(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@dnd-kit/core': 6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@dnd-kit/modifiers': 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8) - '@dnd-kit/sortable': 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8) - '@dnd-kit/utilities': 3.2.2(react@19.2.8) - '@emoji-mart/data': 1.2.1 - '@emoji-mart/react': 1.1.1(emoji-mart@5.6.0)(react@19.2.8) - '@emotion/is-prop-valid': 1.4.0 - '@floating-ui/react': 0.27.20(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@giscus/react': 3.1.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@lobehub/fluent-emoji': 4.1.0(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0) - '@lobehub/icons': 5.16.0(@lobehub/ui@5.31.1)(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0) - '@mdx-js/mdx': 3.1.1(supports-color@7.2.0) - '@mdx-js/react': 3.1.1(@types/react@19.2.18)(react@19.2.8) - '@pierre/diffs': 1.2.12(@shikijs/themes@4.4.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) - '@shikijs/core': 4.4.3 - '@shikijs/stream': 4.4.3(react@19.2.8) - '@shikijs/transformers': 4.4.3 - '@splinetool/runtime': 1.12.98 - ahooks: 3.9.7(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - antd: 6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - antd-style: 4.1.0(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0) - beautiful-mermaid: 1.1.3 - chroma-js: 3.2.0 - class-variance-authority: 0.7.1 - clsx: 2.1.1 - dayjs: 1.11.23 - emoji-mart: 5.6.0 - es-toolkit: 1.51.0 - fast-deep-equal: 3.1.3 - hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0) - html-url-attributes: 3.0.1 - immer: 11.1.17 - katex: 0.18.4 - leva: 0.10.1(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - lucide-react: 1.31.0(react@19.2.8) - marked: 18.0.9 - motion: 12.43.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - numeral: 2.0.6 - polished: 4.3.1 - query-string: 9.5.0 - rc-collapse: 4.0.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-footer: 0.6.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-image: 7.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-input-number: 9.5.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-menu: 9.16.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - re-resizable: 6.11.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-avatar-editor: 15.1.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react-dom: 19.2.8(react@19.2.8) - react-error-boundary: 6.1.3(@types/react@19.2.18)(react@19.2.8) - react-hotkeys-hook: 5.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react-markdown: 10.1.0(@types/react@19.2.18)(react@19.2.8)(supports-color@7.2.0) - react-merge-refs: 3.0.2(react@19.2.8) - react-rnd: 10.5.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react-zoom-pan-pinch: 4.0.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rehype-github-alerts: 4.2.0 - rehype-katex: 7.0.1 - rehype-raw: 7.0.0 - remark-breaks: 4.0.0 - remark-cjk-friendly: 2.3.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(unified@11.0.5) - remark-gfm: 4.0.1(supports-color@7.2.0) - remark-github: 12.0.0 - remark-math: 6.0.0(supports-color@7.2.0) - remark-parse: 11.0.0(supports-color@7.2.0) - remark-rehype: 11.1.2 - remend: 1.3.0 - shiki: 4.4.3 - swr: 2.5.1(react@19.2.8) - ts-md5: 2.0.1 - unified: 11.0.5 - url-join: 5.0.0 - use-merge-value: 1.2.0(react@19.2.8) - uuid: 14.0.1 - vfile: 6.0.3 - virtua: 0.49.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - transitivePeerDependencies: - - '@date-fns/tz' - - '@shikijs/themes' - - '@types/mdast' - - '@types/react' - - '@types/react-dom' - - date-fns - - micromark - - micromark-util-types - - solid-js - - supports-color - - svelte - - vue - - '@mdx-js/mdx@3.1.1(supports-color@7.2.0)': - dependencies: - '@types/estree': 1.0.9 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdx': 2.0.14 - acorn: 8.18.0 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.0 - estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0) - markdown-extensions: 2.0.0 - recma-build-jsx: 1.0.0 - recma-jsx: 1.0.1(acorn@8.18.0) - recma-stringify: 1.0.0 - rehype-recma: 1.0.0(supports-color@7.2.0) - remark-mdx: 3.1.1(supports-color@7.2.0) - remark-parse: 11.0.0(supports-color@7.2.0) - remark-rehype: 11.1.2 - source-map: 0.7.6 - unified: 11.0.5 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@mdx-js/react@3.1.1(@types/react@19.2.18)(react@19.2.8)': - dependencies: - '@types/mdx': 2.0.14 - '@types/react': 19.2.18 - react: 19.2.8 - - '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@next/env@16.3.1': {} - - '@next/eslint-plugin-next@16.3.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) - fast-glob: 3.3.1 - transitivePeerDependencies: - - eslint - - '@next/swc-darwin-arm64@16.3.1': - optional: true - - '@next/swc-darwin-x64@16.3.1': - optional: true - - '@next/swc-linux-arm64-gnu@16.3.1': - optional: true - - '@next/swc-linux-arm64-musl@16.3.1': - optional: true - - '@next/swc-linux-x64-gnu@16.3.1': - optional: true - - '@next/swc-linux-x64-musl@16.3.1': - optional: true - - '@next/swc-win32-arm64-msvc@16.3.1': - optional: true - - '@next/swc-win32-x64-msvc@16.3.1': - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.20.1 - - '@nolyfill/is-core-module@1.0.39': {} - - '@pierre/diffs@1.2.12(@shikijs/themes@4.4.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@pierre/theme': 1.1.0 - '@pierre/theming': 0.0.2(@pierre/theme@1.1.0)(@shikijs/themes@4.4.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(shiki@4.4.3) - '@shikijs/transformers': 4.4.3 - diff: 9.0.0 - hast-util-to-html: 9.0.5 - lru_map: 0.4.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - shiki: 4.4.3 - transitivePeerDependencies: - - '@shikijs/themes' - - '@pierre/theme@1.1.0': {} - - '@pierre/theming@0.0.2(@pierre/theme@1.1.0)(@shikijs/themes@4.4.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(shiki@4.4.3)': - optionalDependencies: - '@pierre/theme': 1.1.0 - '@shikijs/themes': 4.4.3 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - shiki: 4.4.3 - - '@primer/octicons@19.33.0': - dependencies: - object-assign: 4.1.1 - - '@radix-ui/primitive@1.1.7': {} - - '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.4(@types/react@19.2.18) - - '@radix-ui/react-compose-refs@1.1.5(@types/react@19.2.18)(react@19.2.8)': - dependencies: - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - '@radix-ui/react-context@1.2.2(@types/react@19.2.18)(react@19.2.8)': - dependencies: - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.4(@types/react@19.2.18) - - '@radix-ui/react-id@1.1.4(@types/react@19.2.18)(react@19.2.8)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/rect': 1.1.3 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.4(@types/react@19.2.18) - - '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.4(@types/react@19.2.18) - - '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.4(@types/react@19.2.18) - - '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.4(@types/react@19.2.18) - - '@radix-ui/react-slot@1.3.3(@types/react@19.2.18)(react@19.2.8)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - '@radix-ui/react-tooltip@1.2.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.4(@types/react@19.2.18) - - '@radix-ui/react-use-callback-ref@1.1.4(@types/react@19.2.18)(react@19.2.8)': - dependencies: - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - '@radix-ui/react-use-controllable-state@1.2.6(@types/react@19.2.18)(react@19.2.8)': - dependencies: - '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - '@radix-ui/react-use-effect-event@0.0.5(@types/react@19.2.18)(react@19.2.8)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - '@radix-ui/react-use-layout-effect@1.1.4(@types/react@19.2.18)(react@19.2.8)': - dependencies: - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - '@radix-ui/react-use-rect@1.1.4(@types/react@19.2.18)(react@19.2.8)': - dependencies: - '@radix-ui/rect': 1.1.3 - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - '@radix-ui/react-use-size@1.1.4(@types/react@19.2.18)(react@19.2.8)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - optionalDependencies: - '@types/react': 19.2.18 - '@types/react-dom': 19.2.4(@types/react@19.2.18) - - '@radix-ui/rect@1.1.3': {} - - '@rc-component/async-validator@6.0.0': - dependencies: - '@babel/runtime': 7.29.7 - - '@rc-component/cascader@1.22.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/select': 1.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/tree': 1.4.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/checkbox@2.0.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/collapse@1.2.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 7.29.7 - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/color-picker@3.1.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@ant-design/fast-color': 3.0.1 - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/context@2.0.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/dialog@1.10.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/portal': 2.2.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/drawer@1.4.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/portal': 2.2.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/dropdown@1.0.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/trigger': 3.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/form@1.8.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/async-validator': 6.0.0 - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/image@1.10.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/portal': 2.2.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/input-number@1.6.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/mini-decimal': 1.1.4 - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/input@1.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/resize-observer': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/listy@1.2.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/portal': 2.2.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/resize-observer': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/virtual-list': 1.5.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/mentions@1.11.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/input': 1.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/menu': 1.4.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/trigger': 3.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/menu@1.4.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/overflow': 1.0.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/trigger': 3.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/mini-decimal@1.1.4': - dependencies: - '@babel/runtime': 7.29.7 - - '@rc-component/motion@1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/mutate-observer@2.0.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/notification@2.0.7(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/overflow@1.0.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 7.29.7 - '@rc-component/resize-observer': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/pagination@1.4.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/picker@1.12.0(dayjs@1.11.23)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/overflow': 1.0.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/resize-observer': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/trigger': 3.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - optionalDependencies: - dayjs: 1.11.23 - - '@rc-component/portal@1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 7.29.7 - classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/portal@2.2.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/progress@1.0.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/qrcode@2.0.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 7.29.7 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/rate@1.0.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/resize-observer@1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/segmented@1.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 7.29.7 - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/select@1.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/overflow': 1.0.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/trigger': 3.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/virtual-list': 1.5.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/slider@1.1.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/steps@1.2.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/switch@1.0.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/table@1.11.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/context': 2.0.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/resize-observer': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/virtual-list': 1.5.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/tabs@1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/dropdown': 1.0.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/menu': 1.4.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/resize-observer': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/tooltip@1.5.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/trigger': 3.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/tour@2.4.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/portal': 2.2.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/trigger': 3.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/tree-select@1.16.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/select': 1.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/tree': 1.4.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/tree@1.4.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/virtual-list': 1.5.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/trigger@2.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 7.29.7 - '@rc-component/portal': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-resize-observer: 1.4.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/trigger@3.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/portal': 2.2.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/resize-observer': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/upload@1.1.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rc-component/util@1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - is-mobile: 5.0.0 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - react-is: 19.2.8 - - '@rc-component/virtual-list@1.5.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@babel/runtime': 8.0.0 - '@rc-component/resize-observer': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - '@rtsao/scc@1.1.0': {} - - '@shikijs/core@4.4.3': - 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 - - '@shikijs/engine-javascript@4.4.3': - dependencies: - '@shikijs/types': 4.4.3 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.6 - - '@shikijs/engine-oniguruma@4.4.3': - dependencies: - '@shikijs/types': 4.4.3 - '@shikijs/vscode-textmate': 10.0.2 - - '@shikijs/langs@4.4.3': - dependencies: - '@shikijs/types': 4.4.3 - - '@shikijs/primitive@4.4.3': - dependencies: - '@shikijs/types': 4.4.3 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - - '@shikijs/stream@4.4.3(react@19.2.8)': - dependencies: - '@shikijs/core': 4.4.3 - optionalDependencies: - react: 19.2.8 - - '@shikijs/themes@4.4.3': - dependencies: - '@shikijs/types': 4.4.3 - - '@shikijs/transformers@4.4.3': - dependencies: - '@shikijs/core': 4.4.3 - '@shikijs/types': 4.4.3 - - '@shikijs/types@4.4.3': - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - - '@shikijs/vscode-textmate@10.0.2': {} - - '@splinetool/runtime@1.12.98': - dependencies: - on-change: 4.0.0 - semver-compare: 1.0.0 - - '@stitches/react@1.2.8(react@19.2.8)': - dependencies: - react: 19.2.8 - - '@swc/helpers@0.5.23': - dependencies: - tslib: 2.8.1 - - '@tailwindcss/node@4.3.3': - dependencies: - '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.24.5 - jiti: 2.7.0 - lightningcss: 1.32.0 - magic-string: 0.30.21 - source-map-js: 1.2.1 - tailwindcss: 4.3.3 - - '@tailwindcss/oxide-android-arm64@4.3.3': - optional: true - - '@tailwindcss/oxide-darwin-arm64@4.3.3': - optional: true - - '@tailwindcss/oxide-darwin-x64@4.3.3': - optional: true - - '@tailwindcss/oxide-freebsd-x64@4.3.3': - optional: true - - '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3': - optional: true - - '@tailwindcss/oxide-linux-arm64-gnu@4.3.3': - optional: true - - '@tailwindcss/oxide-linux-arm64-musl@4.3.3': - optional: true - - '@tailwindcss/oxide-linux-x64-gnu@4.3.3': - optional: true - - '@tailwindcss/oxide-linux-x64-musl@4.3.3': - optional: true - - '@tailwindcss/oxide-wasm32-wasi@4.3.3': - optional: true - - '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': - optional: true - - '@tailwindcss/oxide-win32-x64-msvc@4.3.3': - optional: true - - '@tailwindcss/oxide@4.3.3': - optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.3.3 - '@tailwindcss/oxide-darwin-arm64': 4.3.3 - '@tailwindcss/oxide-darwin-x64': 4.3.3 - '@tailwindcss/oxide-freebsd-x64': 4.3.3 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.3 - '@tailwindcss/oxide-linux-arm64-gnu': 4.3.3 - '@tailwindcss/oxide-linux-arm64-musl': 4.3.3 - '@tailwindcss/oxide-linux-x64-gnu': 4.3.3 - '@tailwindcss/oxide-linux-x64-musl': 4.3.3 - '@tailwindcss/oxide-wasm32-wasi': 4.3.3 - '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 - '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 - - '@tailwindcss/postcss@4.3.3': - dependencies: - '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.3.3 - '@tailwindcss/oxide': 4.3.3 - postcss: 8.5.26 - tailwindcss: 4.3.3 - - '@tybys/wasm-util@0.10.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@types/debug@4.1.13': - dependencies: - '@types/ms': 2.1.0 - - '@types/estree-jsx@1.0.5': - dependencies: - '@types/estree': 1.0.9 - - '@types/estree@1.0.9': {} - - '@types/hast@3.0.5': - dependencies: - '@types/unist': 3.0.3 - - '@types/js-cookie@3.0.6': {} - - '@types/json-schema@7.0.15': {} - - '@types/json5@0.0.29': {} - - '@types/katex@0.16.8': {} - - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/mdx@2.0.14': {} - - '@types/ms@2.1.0': {} - - '@types/node@20.19.43': - dependencies: - undici-types: 6.21.0 - - '@types/parse-json@4.0.2': {} - - '@types/prismjs@1.26.6': {} - - '@types/react-dom@19.2.4(@types/react@19.2.18)': - dependencies: - '@types/react': 19.2.18 - - '@types/react-syntax-highlighter@15.5.13': - dependencies: - '@types/react': 19.2.18 - - '@types/react@19.2.18': - dependencies: - csstype: 3.2.3 - - '@types/trusted-types@2.0.7': {} - - '@types/unist@2.0.11': {} - - '@types/unist@3.0.3': {} - - '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/type-utils': 8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.67.0 - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - ignore: 7.0.6 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.67.0 - debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.67.0(supports-color@7.2.0)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.9.3) - '@typescript-eslint/types': 8.67.0 - debug: 4.4.3(supports-color@7.2.0) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.67.0': - dependencies: - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/visitor-keys': 8.67.0 - - '@typescript-eslint/tsconfig-utils@8.67.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/type-utils@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.67.0': {} - - '@typescript-eslint/typescript-estree@8.67.0(supports-color@7.2.0)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.67.0(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@5.9.3) - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/visitor-keys': 8.67.0 - debug: 4.4.3(supports-color@7.2.0) - minimatch: 10.2.6 - semver: 7.8.5 - tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@7.2.0)(typescript@5.9.3) - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.67.0': - dependencies: - '@typescript-eslint/types': 8.67.0 - eslint-visitor-keys: 5.0.1 - - '@ungap/structured-clone@1.3.3': {} - - '@unrs/resolver-binding-android-arm-eabi@1.12.2': - optional: true - - '@unrs/resolver-binding-android-arm64@1.12.2': - optional: true - - '@unrs/resolver-binding-darwin-arm64@1.12.2': - optional: true - - '@unrs/resolver-binding-darwin-x64@1.12.2': - optional: true - - '@unrs/resolver-binding-freebsd-x64@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-arm64-musl@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-loong64-musl@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-x64-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-x64-musl@1.12.2': - optional: true - - '@unrs/resolver-binding-openharmony-arm64@1.12.2': - optional: true - - '@unrs/resolver-binding-wasm32-wasi@1.12.2': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - optional: true - - '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': - optional: true - - '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': - optional: true - - '@unrs/resolver-binding-win32-x64-msvc@1.12.2': - optional: true - - '@use-gesture/core@10.3.1': {} - - '@use-gesture/react@10.3.1(react@19.2.8)': - dependencies: - '@use-gesture/core': 10.3.1 - react: 19.2.8 - - acorn-jsx@5.3.2(acorn@8.18.0): - dependencies: - acorn: 8.18.0 - - acorn@8.18.0: {} - - ahooks@3.9.7(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - '@types/js-cookie': 3.0.6 - dayjs: 1.11.23 - intersection-observer: 0.12.2 - js-cookie: 3.0.8 - lodash: 4.18.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - react-fast-compare: 3.2.2 - resize-observer-polyfill: 1.5.1 - screenfull: 5.2.0 - tslib: 2.8.1 - - ajv@6.15.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - antd-style@4.1.0(@types/react@19.2.18)(antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0): - dependencies: - '@ant-design/cssinjs': 2.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@babel/runtime': 7.29.7 - '@emotion/cache': 11.14.0 - '@emotion/css': 11.13.5(supports-color@7.2.0) - '@emotion/react': 11.14.0(@types/react@19.2.18)(react@19.2.8)(supports-color@7.2.0) - '@emotion/serialize': 1.3.3 - '@emotion/utils': 1.4.2 - antd: 6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - use-merge-value: 1.2.0(react@19.2.8) - transitivePeerDependencies: - - '@types/react' - - react-dom - - supports-color - - antd@6.6.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@ant-design/colors': 8.0.1 - '@ant-design/cssinjs': 2.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@ant-design/cssinjs-utils': 2.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@ant-design/fast-color': 3.0.1 - '@ant-design/icons': 6.3.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@ant-design/react-slick': 2.0.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@babel/runtime': 7.29.7 - '@rc-component/cascader': 1.22.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/checkbox': 2.0.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/collapse': 1.2.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/color-picker': 3.1.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/dialog': 1.10.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/drawer': 1.4.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/dropdown': 1.0.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/form': 1.8.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/image': 1.10.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/input': 1.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/input-number': 1.6.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/listy': 1.2.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/mentions': 1.11.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/menu': 1.4.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/motion': 1.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/mutate-observer': 2.0.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/notification': 2.0.7(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/pagination': 1.4.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/picker': 1.12.0(dayjs@1.11.23)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/progress': 1.0.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/qrcode': 2.0.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/rate': 1.0.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/resize-observer': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/segmented': 1.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/select': 1.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/slider': 1.1.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/steps': 1.2.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/switch': 1.0.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/table': 1.11.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/tabs': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/tooltip': 1.5.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/tour': 2.4.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/tree': 1.4.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/tree-select': 1.16.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/trigger': 3.10.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/upload': 1.1.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@rc-component/util': 1.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - clsx: 2.1.1 - dayjs: 1.11.23 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - scroll-into-view-if-needed: 3.1.0 - throttle-debounce: 5.0.2 - transitivePeerDependencies: - - date-fns - - luxon - - moment - - argparse@2.0.1: {} - - aria-query@5.3.2: {} - - array-buffer-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 - - array-includes@3.1.9: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 - is-string: 1.1.1 - math-intrinsics: 1.1.0 - - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - es-shim-unscopables: 1.1.0 - - array.prototype.findlastindex@1.2.6: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - es-shim-unscopables: 1.1.0 - - array.prototype.flat@1.3.3: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-shim-unscopables: 1.1.0 - - array.prototype.flatmap@1.3.3: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-shim-unscopables: 1.1.0 - - array.prototype.tosorted@1.1.4: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-shim-unscopables: 1.1.0 - - arraybuffer.prototype.slice@1.0.4: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - - assign-symbols@1.0.0: {} - - ast-types-flow@0.0.8: {} - - astring@1.9.0: {} - - async-function@1.0.0: {} - - attr-accept@2.2.5: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.1.0 - - axe-core@4.13.0: {} - - axobject-query@4.1.0: {} - - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.29.7 - cosmiconfig: 7.1.0 - resolve: 1.22.12 - - bail@2.0.2: {} - - balanced-match@1.0.2: {} - - balanced-match@4.0.4: {} - - baseline-browser-mapping@2.11.14: {} - - beautiful-mermaid@1.1.3: - dependencies: - elkjs: 0.11.1 - entities: 7.0.1 - - brace-expansion@1.1.18: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@5.0.9: - dependencies: - balanced-match: 4.0.4 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.28.8: - dependencies: - baseline-browser-mapping: 2.11.14 - caniuse-lite: 1.0.30001809 - electron-to-chromium: 1.5.407 - node-releases: 2.0.53 - update-browserslist-db: 1.3.1(browserslist@4.28.8) - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bind@1.0.9: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - - callsites@3.1.0: {} - - caniuse-lite@1.0.30001809: {} - - ccount@2.0.1: {} - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - character-entities@2.0.2: {} - - character-reference-invalid@2.0.1: {} - - chroma-js@3.2.0: {} - - class-variance-authority@0.7.1: - dependencies: - clsx: 2.1.1 - - classnames@2.5.1: {} - - client-only@0.0.1: {} - - clsx@2.1.1: {} - - collapse-white-space@2.1.0: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - colord@2.9.3: {} - - comma-separated-tokens@2.0.3: {} - - commander@8.3.0: {} - - compute-scroll-into-view@3.1.1: {} - - concat-map@0.0.1: {} - - convert-source-map@1.9.0: {} - - convert-source-map@2.0.0: {} - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.3 - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - csstype@3.2.3: {} - - damerau-levenshtein@1.0.8: {} - - data-view-buffer@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-offset@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - dayjs@1.11.23: {} - - debug@3.2.7(supports-color@7.2.0): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 7.2.0 - - debug@4.4.3(supports-color@7.2.0): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 7.2.0 - - decode-named-character-reference@1.3.0: - dependencies: - character-entities: 2.0.2 - - decode-uri-component@0.5.0: {} - - deep-is@0.1.4: {} - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - dequal@2.0.3: {} - - detect-libc@2.1.2: {} - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - diff@9.0.0: {} - - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - electron-to-chromium@1.5.407: {} - - elkjs@0.11.1: {} - - emoji-mart@5.6.0: {} - - emoji-regex@10.6.0: {} - - emoji-regex@9.2.2: {} - - enhanced-resolve@5.24.5: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.3 - - entities@6.0.1: {} - - entities@7.0.1: {} - - error-ex@1.3.4: - dependencies: - is-arrayish: 0.2.1 - - es-abstract-get@1.0.0: - dependencies: - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - is-callable: 1.2.7 - object-inspect: 1.13.4 - - es-abstract@1.24.2: - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.9 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.4 - function.prototype.name: 1.2.0 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.4 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-negative-zero: 2.0.3 - is-regex: 1.2.1 - is-set: 2.0.3 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.2 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.4 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - stop-iteration-iterator: 1.1.0 - string.prototype.trim: 1.2.11 - string.prototype.trimend: 1.0.10 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.8 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.22 - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-iterator-helpers@1.4.0: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - math-intrinsics: 1.1.0 - - es-object-atoms@1.1.2: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.4 - - es-shim-unscopables@1.1.0: - dependencies: - hasown: 2.0.4 - - es-to-primitive@1.3.4: - dependencies: - es-abstract-get: 1.0.0 - es-define-property: 1.0.1 - es-errors: 1.3.0 - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - - es-toolkit@1.51.0: {} - - esast-util-from-estree@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - unist-util-position-from-estree: 2.0.0 - - esast-util-from-js@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - acorn: 8.18.0 - esast-util-from-estree: 2.0.0 - vfile-message: 4.0.3 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - escape-string-regexp@5.0.0: {} - - eslint-config-next@16.3.1(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3): - dependencies: - '@next/eslint-plugin-next': 16.3.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - eslint-import-resolver-node: 0.3.10(supports-color@7.2.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) - eslint-plugin-react: 7.37.5(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) - eslint-plugin-react-hooks: 7.1.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - globals: 16.4.0 - typescript-eslint: 8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-webpack - - eslint-plugin-import-x - - supports-color - - eslint-import-resolver-node@0.3.10(supports-color@7.2.0): - dependencies: - debug: 3.2.7(supports-color@7.2.0) - is-core-module: 2.16.2 - resolve: 2.0.0-next.7 - transitivePeerDependencies: - - supports-color - - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - get-tsconfig: 4.14.2 - is-bun-module: 2.0.0 - stable-hash: 0.0.5 - tinyglobby: 0.2.17 - unrs-resolver: 1.12.2 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10(supports-color@7.2.0))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): - dependencies: - debug: 3.2.7(supports-color@7.2.0) - optionalDependencies: - '@typescript-eslint/parser': 8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - eslint-import-resolver-node: 0.3.10(supports-color@7.2.0) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - transitivePeerDependencies: - - supports-color - - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7(supports-color@7.2.0) - doctrine: 2.1.0 - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - eslint-import-resolver-node: 0.3.10(supports-color@7.2.0) - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10(supports-color@7.2.0))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - hasown: 2.0.4 - is-core-module: 2.16.2 - is-glob: 4.0.3 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.10 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)): - dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.13.0 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - hasown: 2.0.4 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-react-hooks@7.1.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): - dependencies: - '@babel/core': 7.29.7(supports-color@7.2.0) - '@babel/parser': 7.29.8 - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - hermes-parser: 0.25.1 - zod: 4.4.3 - zod-validation-error: 4.0.2(zod@4.4.3) - transitivePeerDependencies: - - supports-color - - eslint-plugin-react@7.37.5(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.4.0 - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - estraverse: 5.3.0 - hasown: 2.0.4 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.5 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.7 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.1: {} - - eslint-visitor-keys@5.0.1: {} - - eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0): - dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2(supports-color@7.2.0) - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.6(supports-color@7.2.0) - '@eslint/js': 9.39.5 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.8 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.9 - ajv: 6.15.0 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@7.2.0) - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.7.0 - transitivePeerDependencies: - - supports-color - - espree@10.4.0: - dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) - eslint-visitor-keys: 4.2.1 - - esquery@1.7.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - estree-util-attach-comments@3.0.0: - dependencies: - '@types/estree': 1.0.9 - - estree-util-build-jsx@3.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-walker: 3.0.3 - - estree-util-is-identifier-name@3.0.0: {} - - estree-util-scope@1.0.0: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - - estree-util-to-js@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - astring: 1.9.0 - source-map: 0.7.6 - - estree-util-visit@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.9 - - esutils@2.0.3: {} - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - - extend-shallow@3.0.2: - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - - extend@3.0.2: {} - - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.1: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.20.1: - dependencies: - reusify: 1.1.0 - - fault@1.0.4: - dependencies: - format: 0.2.2 - - fdir@6.5.0(picomatch@4.0.5): - optionalDependencies: - picomatch: 4.0.5 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - file-selector@0.5.0: - dependencies: - tslib: 2.8.1 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - filter-obj@5.1.0: {} - - find-root@1.1.0: {} - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.4.4 - keyv: 4.5.4 - - flatted@3.4.4: {} - - for-each@0.3.5: - dependencies: - is-callable: 1.2.7 - - for-in@1.0.2: {} - - format@0.2.2: {} - - framer-motion@12.43.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - motion-dom: 12.43.0 - motion-utils: 12.39.0 - tslib: 2.8.1 - optionalDependencies: - '@emotion/is-prop-valid': 1.4.0 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - framer-motion@13.1.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - motion-dom: 13.1.1 - motion-utils: 13.0.0 - tslib: 2.8.1 - optionalDependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - function-bind@1.1.2: {} - - function.prototype.name@1.2.0: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - es-define-property: 1.0.1 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - hasown: 2.0.4 - is-callable: 1.2.7 - is-document.all: 1.0.0 - - functions-have-names@1.2.3: {} - - generator-function@2.0.1: {} - - gensync@1.0.0-beta.2: {} - - get-east-asian-width@1.6.0: {} - - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.4 - math-intrinsics: 1.1.0 - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.2 - - get-symbol-description@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - - get-tsconfig@4.14.2: - dependencies: - resolve-pkg-maps: 1.0.0 - - get-value@2.0.6: {} - - giscus@1.6.0: - dependencies: - lit: 3.3.3 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - globals@14.0.0: {} - - globals@16.4.0: {} - - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - - gopd@1.2.0: {} - - graceful-fs@4.2.11: {} - - has-bigints@1.1.0: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.1 - - has-proto@1.2.0: - dependencies: - dunder-proto: 1.0.1 - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - hasown@2.0.4: - dependencies: - function-bind: 1.1.2 - - hast-util-from-dom@5.0.1: - dependencies: - '@types/hast': 3.0.5 - hastscript: 9.0.1 - web-namespaces: 2.0.1 - - hast-util-from-html-isomorphic@2.0.0: - dependencies: - '@types/hast': 3.0.5 - hast-util-from-dom: 5.0.1 - hast-util-from-html: 2.0.3 - unist-util-remove-position: 5.0.0 - - hast-util-from-html@2.0.3: - dependencies: - '@types/hast': 3.0.5 - devlop: 1.1.0 - hast-util-from-parse5: 8.0.3 - parse5: 7.3.0 - vfile: 6.0.3 - vfile-message: 4.0.3 - - hast-util-from-parse5@8.0.3: - dependencies: - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - devlop: 1.1.0 - hastscript: 9.0.1 - property-information: 7.2.0 - vfile: 6.0.3 - vfile-location: 5.0.3 - web-namespaces: 2.0.1 - - hast-util-is-element@3.0.0: - dependencies: - '@types/hast': 3.0.5 - - hast-util-parse-selector@4.0.0: - dependencies: - '@types/hast': 3.0.5 - - hast-util-raw@9.1.0: - dependencies: - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.3.3 - hast-util-from-parse5: 8.0.3 - hast-util-to-parse5: 8.0.1 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.1 - parse5: 7.3.0 - unist-util-position: 5.0.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-estree@3.1.3(supports-color@7.2.0): - dependencies: - '@types/estree': 1.0.9 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - comma-separated-tokens: 2.0.3 - devlop: 1.1.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.1(supports-color@7.2.0) - mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) - mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0) - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - style-to-js: 1.1.21 - unist-util-position: 5.0.0 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - - hast-util-to-html@9.0.5: - dependencies: - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.1 - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - - hast-util-to-jsx-runtime@2.3.6(supports-color@7.2.0): - dependencies: - '@types/estree': 1.0.9 - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0) - mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) - mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0) - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - style-to-js: 1.1.21 - unist-util-position: 5.0.0 - vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color - - hast-util-to-parse5@8.0.1: - dependencies: - '@types/hast': 3.0.5 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-text@4.0.2: - dependencies: - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - hast-util-is-element: 3.0.0 - unist-util-find-after: 5.0.0 - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.5 - - hastscript@9.0.1: - dependencies: - '@types/hast': 3.0.5 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - - hermes-estree@0.25.1: {} - - hermes-parser@0.25.1: - dependencies: - hermes-estree: 0.25.1 - - highlight.js@10.7.3: {} - - highlightjs-vue@1.0.0: {} - - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - - html-url-attributes@3.0.1: {} - - html-void-elements@3.0.0: {} - - ignore@5.3.2: {} - - ignore@7.0.6: {} - - immer@11.1.17: {} - - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imurmurhash@0.1.4: {} - - inline-style-parser@0.2.7: {} - - internal-slot@1.1.0: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.4 - side-channel: 1.1.1 - - intersection-observer@0.12.2: {} - - is-alphabetical@2.0.1: {} - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - - is-array-buffer@3.0.5: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - - is-arrayish@0.2.1: {} - - is-async-function@2.1.1: - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-bigint@1.1.0: - dependencies: - has-bigints: 1.1.0 - - is-boolean-object@1.2.2: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-bun-module@2.0.0: - dependencies: - semver: 7.8.5 - - is-callable@1.2.7: {} - - is-core-module@2.16.2: - dependencies: - hasown: 2.0.4 - - is-data-view@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - - is-date-object@1.1.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-decimal@2.0.1: {} - - is-document.all@1.0.0: - dependencies: - call-bound: 1.0.4 - - is-extendable@0.1.1: {} - - is-extendable@1.0.1: - dependencies: - is-plain-object: 2.0.4 - - is-extglob@2.1.1: {} - - is-finalizationregistry@1.1.1: - dependencies: - call-bound: 1.0.4 - - is-generator-function@1.1.2: - dependencies: - call-bound: 1.0.4 - generator-function: 2.0.1 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-hexadecimal@2.0.1: {} - - is-map@2.0.3: {} - - is-mobile@5.0.0: {} - - is-negative-zero@2.0.3: {} - - is-number-object@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-number@7.0.0: {} - - is-plain-obj@4.1.0: {} - - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - - is-regex@1.2.1: - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.4 - - is-set@2.0.3: {} - - is-shared-array-buffer@1.0.4: - dependencies: - call-bound: 1.0.4 - - is-string@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-symbol@1.1.1: - dependencies: - call-bound: 1.0.4 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 - - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.22 - - is-weakmap@2.0.2: {} - - is-weakref@1.1.1: - dependencies: - call-bound: 1.0.4 - - is-weakset@2.0.4: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - - isarray@2.0.5: {} - - isexe@2.0.0: {} - - isobject@3.0.1: {} - - iterator.prototype@1.1.5: - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - - jiti@2.7.0: {} - - js-cookie@3.0.8: {} - - js-tokens@4.0.0: {} - - js-yaml@4.3.1: - dependencies: - argparse: 2.0.1 - - jsesc@3.1.0: {} - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json2mq@0.2.0: - dependencies: - string-convert: 0.2.1 - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - - json5@2.2.3: {} - - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.9 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - - katex@0.16.47: - dependencies: - commander: 8.3.0 - - katex@0.18.4: - dependencies: - commander: 8.3.0 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - - leva@0.10.1(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-tooltip': 1.2.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@stitches/react': 1.2.8(react@19.2.8) - '@use-gesture/react': 10.3.1(react@19.2.8) - colord: 2.9.3 - dequal: 2.0.3 - merge-value: 1.0.0 - react: 19.2.8 - react-colorful: 5.8.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react-dom: 19.2.8(react@19.2.8) - react-dropzone: 12.1.0(react@19.2.8) - v8n: 1.5.1 - zustand: 3.7.2(react@19.2.8) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lightningcss-android-arm64@1.32.0: - optional: true - - lightningcss-darwin-arm64@1.32.0: - optional: true - - lightningcss-darwin-x64@1.32.0: - optional: true - - lightningcss-freebsd-x64@1.32.0: - optional: true - - lightningcss-linux-arm-gnueabihf@1.32.0: - optional: true - - lightningcss-linux-arm64-gnu@1.32.0: - optional: true - - lightningcss-linux-arm64-musl@1.32.0: - optional: true - - lightningcss-linux-x64-gnu@1.32.0: - optional: true - - lightningcss-linux-x64-musl@1.32.0: - optional: true - - lightningcss-win32-arm64-msvc@1.32.0: - optional: true - - lightningcss-win32-x64-msvc@1.32.0: - optional: true - - lightningcss@1.32.0: - dependencies: - detect-libc: 2.1.2 - optionalDependencies: - lightningcss-android-arm64: 1.32.0 - lightningcss-darwin-arm64: 1.32.0 - lightningcss-darwin-x64: 1.32.0 - lightningcss-freebsd-x64: 1.32.0 - lightningcss-linux-arm-gnueabihf: 1.32.0 - lightningcss-linux-arm64-gnu: 1.32.0 - lightningcss-linux-arm64-musl: 1.32.0 - lightningcss-linux-x64-gnu: 1.32.0 - lightningcss-linux-x64-musl: 1.32.0 - lightningcss-win32-arm64-msvc: 1.32.0 - lightningcss-win32-x64-msvc: 1.32.0 - - lines-and-columns@1.2.4: {} - - lit-element@4.2.2: - dependencies: - '@lit-labs/ssr-dom-shim': 1.6.0 - '@lit/reactive-element': 2.1.2 - lit-html: 3.3.3 - - lit-html@3.3.3: - dependencies: - '@types/trusted-types': 2.0.7 - - lit@3.3.3: - dependencies: - '@lit/reactive-element': 2.1.2 - lit-element: 4.2.2 - lit-html: 3.3.3 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.merge@4.6.2: {} - - lodash@4.18.1: {} - - longest-streak@3.1.0: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lowlight@1.20.0: - dependencies: - fault: 1.0.4 - highlight.js: 10.7.3 - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lru_map@0.4.1: {} - - lucide-react@0.469.0(react@19.2.8): - dependencies: - react: 19.2.8 - - lucide-react@0.562.0(react@19.2.8): - dependencies: - react: 19.2.8 - - lucide-react@1.31.0(react@19.2.8): - dependencies: - react: 19.2.8 - - magic-string@0.30.21: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - markdown-extensions@2.0.0: {} - - markdown-table@3.0.4: {} - - marked@18.0.9: {} - - math-intrinsics@1.1.0: {} - - mdast-util-find-and-replace@3.0.2: - dependencies: - '@types/mdast': 4.0.4 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.2 - - mdast-util-from-markdown@2.0.3(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.2(supports-color@7.2.0) - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-autolink-literal@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.2 - micromark-util-character: 2.1.1 - - mdast-util-gfm-footnote@2.1.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - micromark-util-normalize-identifier: 2.0.1 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-strikethrough@2.0.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@2.0.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@2.0.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.1.0(supports-color@7.2.0): - dependencies: - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.1.0(supports-color@7.2.0) - mdast-util-gfm-strikethrough: 2.0.0(supports-color@7.2.0) - mdast-util-gfm-table: 2.0.0(supports-color@7.2.0) - mdast-util-gfm-task-list-item: 2.0.0(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-math@3.0.0(supports-color@7.2.0): - dependencies: - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - longest-streak: 3.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - unist-util-remove-position: 5.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-expression@2.0.1(supports-color@7.2.0): - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.2.0(supports-color@7.2.0): - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx@3.0.0(supports-color@7.2.0): - dependencies: - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0) - mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) - mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdxjs-esm@2.0.1(supports-color@7.2.0): - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-newline-to-break@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-find-and-replace: 3.0.2 - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.1 - - mdast-util-to-hast@13.2.1: - dependencies: - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.3 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.1 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - - mdast-util-to-markdown-cjk-friendly@1.0.0(@types/mdast@4.0.4)(micromark-util-types@2.0.2): - dependencies: - mdast-util-to-markdown: 2.1.2 - micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2) - micromark-util-symbol: 2.0.1 - optionalDependencies: - '@types/mdast': 4.0.4 - transitivePeerDependencies: - - micromark-util-types - - mdast-util-to-markdown@2.1.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-classify-character: 2.0.1 - micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.1.0 - zwitch: 2.0.4 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - - merge-value@1.0.0: - dependencies: - get-value: 2.0.6 - is-extendable: 1.0.1 - mixin-deep: 1.3.2 - set-value: 2.0.1 - - merge2@1.4.1: {} - - micromark-core-commonmark@2.0.3: - dependencies: - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - micromark-factory-destination: 2.0.1 - micromark-factory-label: 2.0.1 - micromark-factory-space: 2.0.1 - micromark-factory-title: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-html-tag-name: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-cjk-friendly-util@3.0.1(micromark-util-types@2.0.2): - dependencies: - get-east-asian-width: 1.6.0 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - optionalDependencies: - micromark-util-types: 2.0.2 - - micromark-extension-cjk-friendly@2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0)): - dependencies: - devlop: 1.1.0 - micromark: 4.0.2(supports-color@7.2.0) - micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2) - micromark-util-chunked: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-symbol: 2.0.1 - optionalDependencies: - micromark-util-types: 2.0.2 - - micromark-extension-gfm-autolink-literal@2.1.0: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-footnote@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-strikethrough@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-table@2.1.1: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.2 - - micromark-extension-gfm-task-list-item@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.1.0 - micromark-extension-gfm-footnote: 2.1.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.1 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-math@3.1.0: - dependencies: - '@types/katex': 0.16.8 - devlop: 1.1.0 - katex: 0.16.47 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-expression@3.0.1: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-jsx@3.0.2: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - - micromark-extension-mdx-md@2.0.0: - dependencies: - micromark-util-types: 2.0.2 - - micromark-extension-mdxjs-esm@3.0.0: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - - micromark-extension-mdxjs@3.0.0: - dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) - micromark-extension-mdx-expression: 3.0.1 - micromark-extension-mdx-jsx: 3.0.2 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-destination@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-label@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-mdx-expression@2.0.3: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - - micromark-factory-space@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-types: 2.0.2 - - micromark-factory-title@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-whitespace@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-character@2.1.1: - dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-chunked@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-classify-character@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-combine-extensions@2.0.1: - dependencies: - micromark-util-chunked: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-decode-numeric-character-reference@2.0.2: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-decode-string@2.0.1: - dependencies: - decode-named-character-reference: 1.3.0 - micromark-util-character: 2.1.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-symbol: 2.0.1 - - micromark-util-encode@2.0.1: {} - - micromark-util-events-to-acorn@2.0.3: - dependencies: - '@types/estree': 1.0.9 - '@types/unist': 3.0.3 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - - micromark-util-html-tag-name@2.0.1: {} - - micromark-util-normalize-identifier@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-resolve-all@2.0.1: - dependencies: - micromark-util-types: 2.0.2 - - micromark-util-sanitize-uri@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 - - micromark-util-subtokenize@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-symbol@2.0.1: {} - - micromark-util-types@2.0.2: {} - - micromark@4.0.2(supports-color@7.2.0): - dependencies: - '@types/debug': 4.1.13 - debug: 4.4.3(supports-color@7.2.0) - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-combine-extensions: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-encode: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.2 - - minimatch@10.2.6: - dependencies: - brace-expansion: 5.0.9 - - minimatch@3.1.5: - dependencies: - brace-expansion: 1.1.18 - - minimist@1.2.8: {} - - mixin-deep@1.3.2: - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - - motion-dom@12.43.0: - dependencies: - motion-utils: 12.39.0 - - motion-dom@13.1.1: - dependencies: - motion-utils: 13.0.0 - - motion-utils@12.39.0: {} - - motion-utils@13.0.0: {} - - motion@12.43.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - framer-motion: 12.43.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - tslib: 2.8.1 - optionalDependencies: - '@emotion/is-prop-valid': 1.4.0 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - ms@2.1.3: {} - - nanoid@3.3.18: {} - - napi-postinstall@0.3.4: {} - - natural-compare@1.4.0: {} - - next@16.3.1(@babel/core@7.29.7(supports-color@7.2.0))(@types/node@20.19.43)(babel-plugin-macros@3.1.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@next/env': 16.3.1 - '@swc/helpers': 0.5.23 - baseline-browser-mapping: 2.11.14 - caniuse-lite: 1.0.30001809 - postcss: 8.5.23 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - styled-jsx: 5.1.6(@babel/core@7.29.7(supports-color@7.2.0))(babel-plugin-macros@3.1.0)(react@19.2.8) - optionalDependencies: - '@next/swc-darwin-arm64': 16.3.1 - '@next/swc-darwin-x64': 16.3.1 - '@next/swc-linux-arm64-gnu': 16.3.1 - '@next/swc-linux-arm64-musl': 16.3.1 - '@next/swc-linux-x64-gnu': 16.3.1 - '@next/swc-linux-x64-musl': 16.3.1 - '@next/swc-win32-arm64-msvc': 16.3.1 - '@next/swc-win32-x64-msvc': 16.3.1 - sharp: 0.35.3(@types/node@20.19.43) - transitivePeerDependencies: - - '@babel/core' - - '@types/node' - - babel-plugin-macros - - node-exports-info@1.6.2: - dependencies: - array.prototype.flatmap: 1.3.3 - es-errors: 1.3.0 - object.entries: 1.1.9 - semver: 6.3.1 - - node-releases@2.0.53: {} - - numeral@2.0.6: {} - - object-assign@4.1.1: {} - - object-inspect@1.13.4: {} - - object-keys@1.1.1: {} - - object.assign@4.1.7: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - has-symbols: 1.1.0 - object-keys: 1.1.1 - - object.entries@1.1.9: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.2 - - object.groupby@1.0.3: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - - object.values@1.2.1: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - - on-change@4.0.0: {} - - oniguruma-parser@0.12.2: {} - - oniguruma-to-es@4.3.6: - dependencies: - oniguruma-parser: 0.12.2 - regex: 6.1.0 - regex-recursion: 6.0.2 - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - own-keys@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-entities@4.0.2: - dependencies: - '@types/unist': 2.0.11 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.3.0 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.29.7 - error-ex: 1.3.4 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse5@7.3.0: - dependencies: - entities: 6.0.1 - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-type@4.0.0: {} - - picocolors@1.1.1: {} - - picomatch@2.3.2: {} - - picomatch@4.0.5: {} - - polished@4.3.1: - dependencies: - '@babel/runtime': 7.29.7 - - possible-typed-array-names@1.1.0: {} - - postcss@8.5.23: - dependencies: - nanoid: 3.3.18 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - postcss@8.5.26: - dependencies: - nanoid: 3.3.18 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - prelude-ls@1.2.1: {} - - prismjs@1.30.0: {} - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - property-information@7.2.0: {} - - punycode@2.3.1: {} - - query-string@9.5.0: - dependencies: - decode-uri-component: 0.5.0 - filter-obj: 5.1.0 - split-on-first: 3.0.0 - - queue-microtask@1.2.3: {} - - rc-collapse@4.0.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - rc-dialog@9.6.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - '@rc-component/portal': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - rc-footer@0.6.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - classnames: 2.5.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - rc-image@7.12.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - '@rc-component/portal': 1.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - classnames: 2.5.1 - rc-dialog: 9.6.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-motion: 2.9.5(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - rc-input-number@9.5.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - '@rc-component/mini-decimal': 1.1.4 - classnames: 2.5.1 - rc-input: 1.8.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - rc-input@1.8.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - rc-menu@9.16.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - '@rc-component/trigger': 2.3.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-overflow: 1.5.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - rc-motion@2.9.5(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - rc-overflow@1.5.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - rc-resize-observer@1.4.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - resize-observer-polyfill: 1.5.1 - - rc-util@5.44.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - react-is: 18.3.1 - - re-resizable@6.11.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - react-avatar-editor@15.1.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - react-colorful@5.8.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - react-dom@19.2.8(react@19.2.8): - dependencies: - react: 19.2.8 - scheduler: 0.27.0 - - react-draggable@4.7.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - clsx: 2.1.1 - prop-types: 15.8.1 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - react-dropzone@12.1.0(react@19.2.8): - dependencies: - attr-accept: 2.2.5 - file-selector: 0.5.0 - prop-types: 15.8.1 - react: 19.2.8 - - react-error-boundary@6.1.3(@types/react@19.2.18)(react@19.2.8): - dependencies: - react: 19.2.8 - optionalDependencies: - '@types/react': 19.2.18 - - react-fast-compare@3.2.2: {} - - react-hotkeys-hook@5.3.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - react-is@16.13.1: {} - - react-is@18.3.1: {} - - react-is@19.2.8: {} - - react-markdown@10.1.0(@types/react@19.2.18)(react@19.2.8)(supports-color@7.2.0): - dependencies: - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - '@types/react': 19.2.18 - devlop: 1.1.0 - hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0) - html-url-attributes: 3.0.1 - mdast-util-to-hast: 13.2.1 - react: 19.2.8 - remark-parse: 11.0.0(supports-color@7.2.0) - remark-rehype: 11.1.2 - unified: 11.0.5 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - react-merge-refs@3.0.2(react@19.2.8): - optionalDependencies: - react: 19.2.8 - - react-rnd@10.5.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - re-resizable: 6.11.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - react-draggable: 4.7.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - tslib: 2.6.2 - - react-syntax-highlighter@16.1.1(react@19.2.8): - dependencies: - '@babel/runtime': 7.29.7 - highlight.js: 10.7.3 - highlightjs-vue: 1.0.0 - lowlight: 1.20.0 - prismjs: 1.30.0 - react: 19.2.8 - refractor: 5.0.0 - - react-zoom-pan-pinch@4.0.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - dependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - react@19.2.8: {} - - recma-build-jsx@1.0.0: - dependencies: - '@types/estree': 1.0.9 - estree-util-build-jsx: 3.0.1 - vfile: 6.0.3 - - recma-jsx@1.0.1(acorn@8.18.0): - dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) - estree-util-to-js: 2.0.0 - recma-parse: 1.0.0 - recma-stringify: 1.0.0 - unified: 11.0.5 - - recma-parse@1.0.0: - dependencies: - '@types/estree': 1.0.9 - esast-util-from-js: 2.0.1 - unified: 11.0.5 - vfile: 6.0.3 - - recma-stringify@1.0.0: - dependencies: - '@types/estree': 1.0.9 - estree-util-to-js: 2.0.0 - unified: 11.0.5 - vfile: 6.0.3 - - reflect.getprototypeof@1.0.10: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - - refractor@5.0.0: - dependencies: - '@types/hast': 3.0.5 - '@types/prismjs': 1.26.6 - hastscript: 9.0.1 - parse-entities: 4.0.2 - - regex-recursion@6.0.2: - dependencies: - regex-utilities: 2.3.0 - - regex-utilities@2.3.0: {} - - regex@6.1.0: - dependencies: - regex-utilities: 2.3.0 - - regexp.prototype.flags@1.5.4: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - - rehype-github-alerts@4.2.0: - dependencies: - '@primer/octicons': 19.33.0 - hast-util-from-html: 2.0.3 - hast-util-is-element: 3.0.0 - unist-util-visit: 5.1.0 - - rehype-katex@7.0.1: - dependencies: - '@types/hast': 3.0.5 - '@types/katex': 0.16.8 - hast-util-from-html-isomorphic: 2.0.0 - hast-util-to-text: 4.0.2 - katex: 0.16.47 - unist-util-visit-parents: 6.0.2 - vfile: 6.0.3 - - rehype-raw@7.0.0: - dependencies: - '@types/hast': 3.0.5 - hast-util-raw: 9.1.0 - vfile: 6.0.3 - - rehype-recma@1.0.0(supports-color@7.2.0): - dependencies: - '@types/estree': 1.0.9 - '@types/hast': 3.0.5 - hast-util-to-estree: 3.1.3(supports-color@7.2.0) - transitivePeerDependencies: - - supports-color - - remark-breaks@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-newline-to-break: 2.0.0 - unified: 11.0.5 - - remark-cjk-friendly@2.3.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(unified@11.0.5): - dependencies: - mdast-util-to-markdown-cjk-friendly: 1.0.0(@types/mdast@4.0.4)(micromark-util-types@2.0.2) - micromark-extension-cjk-friendly: 2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0)) - unified: 11.0.5 - optionalDependencies: - '@types/mdast': 4.0.4 - transitivePeerDependencies: - - micromark - - micromark-util-types - - remark-gfm@4.0.1(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - mdast-util-gfm: 3.1.0(supports-color@7.2.0) - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0(supports-color@7.2.0) - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-github@12.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-find-and-replace: 3.0.2 - mdast-util-to-string: 4.0.0 - to-vfile: 8.0.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - - remark-math@6.0.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - mdast-util-math: 3.0.0(supports-color@7.2.0) - micromark-extension-math: 3.1.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-mdx@3.1.1(supports-color@7.2.0): - dependencies: - mdast-util-mdx: 3.0.0(supports-color@7.2.0) - micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color - - remark-parse@11.0.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - micromark-util-types: 2.0.2 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-rehype@11.1.2: - dependencies: - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.1 - unified: 11.0.5 - vfile: 6.0.3 - - remark-stringify@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.2 - unified: 11.0.5 - - remend@1.3.0: {} - - reselect@5.2.0: {} - - resize-observer-polyfill@1.5.1: {} - - resolve-from@4.0.0: {} - - resolve-pkg-maps@1.0.0: {} - - resolve@1.22.12: - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.2 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@2.0.0-next.7: - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.2 - node-exports-info: 1.6.2 - object-keys: 1.1.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - reusify@1.1.0: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-array-concat@1.1.4: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - - safe-push-apply@1.0.0: - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - - safe-regex-test@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - - scheduler@0.27.0: {} - - screenfull@5.2.0: {} - - scroll-into-view-if-needed@3.1.0: - dependencies: - compute-scroll-into-view: 3.1.1 - - semver-compare@1.0.0: {} - - semver@6.3.1: {} - - semver@7.8.5: {} - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-proto@1.0.0: - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - - set-value@2.0.1: - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - - sharp@0.35.3(@types/node@20.19.43): - dependencies: - '@img/colour': 1.1.0 - detect-libc: 2.1.2 - semver: 7.8.5 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.35.3 - '@img/sharp-darwin-x64': 0.35.3 - '@img/sharp-freebsd-wasm32': 0.35.3 - '@img/sharp-libvips-darwin-arm64': 1.3.2 - '@img/sharp-libvips-darwin-x64': 1.3.2 - '@img/sharp-libvips-linux-arm': 1.3.2 - '@img/sharp-libvips-linux-arm64': 1.3.2 - '@img/sharp-libvips-linux-ppc64': 1.3.2 - '@img/sharp-libvips-linux-riscv64': 1.3.2 - '@img/sharp-libvips-linux-s390x': 1.3.2 - '@img/sharp-libvips-linux-x64': 1.3.2 - '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 - '@img/sharp-libvips-linuxmusl-x64': 1.3.2 - '@img/sharp-linux-arm': 0.35.3 - '@img/sharp-linux-arm64': 0.35.3 - '@img/sharp-linux-ppc64': 0.35.3 - '@img/sharp-linux-riscv64': 0.35.3 - '@img/sharp-linux-s390x': 0.35.3 - '@img/sharp-linux-x64': 0.35.3 - '@img/sharp-linuxmusl-arm64': 0.35.3 - '@img/sharp-linuxmusl-x64': 0.35.3 - '@img/sharp-webcontainers-wasm32': 0.35.3 - '@img/sharp-win32-arm64': 0.35.3 - '@img/sharp-win32-ia32': 0.35.3 - '@img/sharp-win32-x64': 0.35.3 - '@types/node': 20.19.43 - optional: true - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shiki@4.4.3: - 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 - - side-channel-list@1.0.1: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - - side-channel@1.1.1: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.1 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - source-map-js@1.2.1: {} - - source-map@0.5.7: {} - - source-map@0.7.6: {} - - space-separated-tokens@2.0.2: {} - - split-on-first@3.0.0: {} - - split-string@3.1.0: - dependencies: - extend-shallow: 3.0.2 - - stable-hash@0.0.5: {} - - stop-iteration-iterator@1.1.0: - dependencies: - es-errors: 1.3.0 - internal-slot: 1.1.0 - - string-convert@0.2.1: {} - - string.prototype.includes@2.0.1: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.1 - - string.prototype.repeat@1.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.24.2 - - string.prototype.trim@1.2.11: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.2 - has-property-descriptors: 1.0.2 - safe-regex-test: 1.1.0 - - string.prototype.trimend@1.0.10: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - - strip-bom@3.0.0: {} - - strip-json-comments@3.1.1: {} - - style-to-js@1.1.21: - dependencies: - style-to-object: 1.0.14 - - style-to-object@1.0.14: - dependencies: - inline-style-parser: 0.2.7 - - styled-jsx@5.1.6(@babel/core@7.29.7(supports-color@7.2.0))(babel-plugin-macros@3.1.0)(react@19.2.8): - dependencies: - client-only: 0.0.1 - react: 19.2.8 - optionalDependencies: - '@babel/core': 7.29.7(supports-color@7.2.0) - babel-plugin-macros: 3.1.0 - - stylis@4.2.0: {} - - stylis@4.4.0: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - swr@2.5.1(react@19.2.8): - dependencies: - dequal: 2.0.3 - react: 19.2.8 - use-sync-external-store: 1.6.0(react@19.2.8) - - tabbable@6.5.0: {} - - tailwindcss@4.3.3: {} - - tapable@2.3.3: {} - - throttle-debounce@5.0.2: {} - - tinyglobby@0.2.17: - dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - to-vfile@8.0.0: - dependencies: - vfile: 6.0.3 - - trim-lines@3.0.1: {} - - trough@2.2.0: {} - - ts-api-utils@2.5.0(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - - ts-md5@2.0.1: {} - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tslib@2.6.2: {} - - tslib@2.8.1: {} - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - typed-array-buffer@1.0.3: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - - typed-array-byte-length@1.0.3: - dependencies: - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - - typed-array-byte-offset@1.0.4: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - - typed-array-length@1.0.8: - dependencies: - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - - typescript-eslint@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.67.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - typescript@5.9.3: {} - - unbox-primitive@1.1.0: - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - - undici-types@6.21.0: {} - - unified@11.0.5: - dependencies: - '@types/unist': 3.0.3 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.3 - - unist-util-find-after@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - - unist-util-is@6.0.1: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position-from-estree@2.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-remove-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-visit: 5.1.0 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@6.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - - unist-util-visit@5.1.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.2 - - unrs-resolver@1.12.2: - dependencies: - napi-postinstall: 0.3.4 - optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.12.2 - '@unrs/resolver-binding-android-arm64': 1.12.2 - '@unrs/resolver-binding-darwin-arm64': 1.12.2 - '@unrs/resolver-binding-darwin-x64': 1.12.2 - '@unrs/resolver-binding-freebsd-x64': 1.12.2 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2 - '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-arm64-musl': 1.12.2 - '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-loong64-musl': 1.12.2 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2 - '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2 - '@unrs/resolver-binding-linux-x64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-x64-musl': 1.12.2 - '@unrs/resolver-binding-openharmony-arm64': 1.12.2 - '@unrs/resolver-binding-wasm32-wasi': 1.12.2 - '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2 - '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 - '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 - - update-browserslist-db@1.3.1(browserslist@4.28.8): - dependencies: - browserslist: 4.28.8 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - url-join@5.0.0: {} - - use-merge-value@1.2.0(react@19.2.8): - dependencies: - react: 19.2.8 - - use-sync-external-store@1.6.0(react@19.2.8): - dependencies: - react: 19.2.8 - - uuid@14.0.1: {} - - v8n@1.5.1: {} - - vfile-location@5.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile: 6.0.3 - - vfile-message@4.0.3: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile@6.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.3 - - virtua@0.49.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8): - optionalDependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - - web-namespaces@2.0.1: {} - - which-boxed-primitive@1.1.1: - dependencies: - is-bigint: 1.1.0 - is-boolean-object: 1.2.2 - is-number-object: 1.1.1 - is-string: 1.1.1 - is-symbol: 1.1.1 - - which-builtin-type@1.2.1: - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.2.0 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.2 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.22 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.4 - - which-typed-array@1.1.22: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.9 - call-bound: 1.0.4 - for-each: 0.3.5 - get-proto: 1.0.1 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - word-wrap@1.2.5: {} - - yallist@3.1.1: {} - - yaml@1.10.3: {} - - yocto-queue@0.1.0: {} - - zod-validation-error@4.0.2(zod@4.4.3): - dependencies: - zod: 4.4.3 - - zod@4.4.3: {} - - zustand@3.7.2(react@19.2.8): - optionalDependencies: - react: 19.2.8 - - zwitch@2.0.4: {} diff --git a/website/pnpm-workspace.yaml b/website/pnpm-workspace.yaml deleted file mode 100644 index c2da90eb4..000000000 --- a/website/pnpm-workspace.yaml +++ /dev/null @@ -1,3 +0,0 @@ -allowBuilds: - sharp: false - unrs-resolver: false diff --git a/website/postcss.config.mjs b/website/postcss.config.mjs deleted file mode 100644 index 61e36849c..000000000 --- a/website/postcss.config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -const config = { - plugins: { - "@tailwindcss/postcss": {}, - }, -}; - -export default config; diff --git a/website/public/favicon.svg b/website/public/favicon.svg deleted file mode 100644 index 9b5aabc8f..000000000 --- a/website/public/favicon.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/website/public/file.svg b/website/public/file.svg deleted file mode 100644 index 004145cdd..000000000 --- a/website/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/website/public/globe.svg b/website/public/globe.svg deleted file mode 100644 index 567f17b0d..000000000 --- a/website/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/website/public/logo.png b/website/public/logo.png deleted file mode 100644 index fa3e508482b969ff611fccfdc089d79e48a039ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5693 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 J \ No newline at end of file diff --git a/website/public/og.png b/website/public/og.png deleted file mode 100644 index a02d17d669fb28226ee7ff4b3fe433297140db2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86485 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

p`yO~^ux3|G0cU~}? z`H5_*jpsXF=EBPihe3-L^k%o22F3@mHN27~}~0;`QDB2y3Z)2$GA z!t)PBPp~L37y{*?K;vf9tt#FhuKw;Gr9*Ua^|ZJL^e}FyYEOP*)FmfcY!<{JX?L+& zJs5*8o0f^hlaqNt$@@cV-1EEndany(8g_nq22lmQ!IuACaTXq#b0~2+eRzgD0;3KV zE=Mz84twM_@ss(q8A-`Ep(MKJE24t^GUSc~i}{_O0JfIK7~PHAtZ9*obBl17iGtDpY|*3}%I`T93aJOtw;n zmt|DwluKH&7CmXJcZ7bsL&-mMCAwUI4N(qp{N_Ml^AKg{fG(;!R(7Zk^zOaEmmd5I zdeGK}u}7(uG*^DvWb(>m28<$MpJ`r36*0k-$9g&IjzE8LW}P1`c2;CagBpOI|K)2p zz5jGFLux`~Wu4I039jS!4bbDOs2}gPho0)8*s0_@%8NARM%vUO zO5gxC$sj$gqNl0MoL5u3 zGx2rm^B61&D<@u@kzojj)9;=Fjvj%X*0@c1LDcepSo?c{LGnNf9Ce?Ld2+yDk>J}B;K<*O`2WJFyCmrlN; zAMa`B_`qf*qy8s(@CT5m6l7{o*w94*UV1{(`dl`uHmle%L1QN>%^gDA5dVx(k|i!+ zvhKN{TSvUx$Ka8K#Db3f9u?6A8Oy>tok}ddH9x^w_uV;>EfHX1NgBVz7FUn*bROy} zU{j@;!YSLmy8PK%nLXDm_`bxL~CYV zC_X}Qb`QuSrJk>W!~q!&pn=G+2a)Uj@D2>@;8Dw$+3O81dIYV$wd{_KN`j{-%Jm0j z{>Pe>mecL~7554569C$0cvhhC32FqHjJb^xIR&Z??GDUZ1IzLtCg|Tq=1@E|EWJ@q z(O-iAYFM{zcMW)TXcN1^+{DZC3V^D775LkV6_y^G2|m}2xSFjNtEVulxlmXT#0oTg zM6^fSSy+0a^oQAZ{!J&ig(hWIX(q!Lc*D?Jm}LiHu~8YkaSr}d+6I{Wg2g*A&&V!2 z?))(w0Su>XpMxN`b?#7o{Ex|pL-SiG5y8B;);H6{p(1Di^7)GyQ2l$x-=&brG!)tjuxawY2;BP>3Svvcx%a!j(_sJmc*cEdz?gbZs-558T={2S zwP)xz<^1<_6%KOwmqkN4(HMaHXFF{F_xo3Cc>rkph~NkR68un#CypqEWjwahFxC*nDY+!1`3FoifL$nDCB8AcIf6f5fVTia z`9r2f#XHpEV*|-93Bd63-Q#J~JW(l< zn4Cz8HvXG^4%bs)iDTKaOq+~}3$3xNc{;UBLhl_v5DVMAe`6Bb3STM%@oV3f6rMFL z(=RM>d-bN&y#80H;A)(cTVBBITHeo}A9#ntFTRj`#ng^OG1gtQQ=T@RSow9@PlX1BfplnoWKM zh5|>2QGn=rB>t<*<+@3^fHMI!r*~^sSUVz%?&{}?DzD8Lvlp(equp3;gV)iwd^&$D z)|bF+Fz8;z_77kZcyr^{4QlzDpoiB2^Ke`_k0vY33CC;g@Z7!!Vy5gb_@t1qEAUWh zmYbjfO4w|KUJsQ|`d+`olK=JdRZw5|Z9FOs#|wlQQ~;>yS+Z+)>$IK!oN^9qWmI`PlXID=DTs9Gs5ST@qt?31m#Q7mfI(BQ&Se-Htc5no z4&XY0cYtj=Lr~D!NQT(bZ({h-{+;;yf!bm_Ch#54?DB)$_zqwmKE%;(txp^BJY*=4 zzw*Y}MjU9&63!)^o;6)xVfLk5JmePy+FM)H#4=V`Eo6st+wGUtf1RRq+kYNGu^;*r zg;Vny>ys_^AcFcTzwhd)rqNW$^Ex4?#fy=>M}RUs1ipKlMYH{1fe(0so)p)wC|)-I zSjc~ncDZ|VB@49&Q5}^PLMDa@TVcV0L6)WlhA%SRkkhn z4YTwgX`~2101JZUT5XSRrX|Olz53(pI6r>}&tU0=-v%}{O4%*iUX5A;QHrr%n4igA ztWzqm!hB!^I&yvhXD3~mNOJr==KrVrOSGGL2-XG`nA zs!lX;8*iemS5lB70O$9Sq1E9jNR-5t{?Vfaot3=D6r$>u|HLE-hKh>MG?DZ zwq0L^oPU284d|~DcISE(-)W9J2~}s^$_vDc!2x+YTYL3OwXJb@Yl`Put(O4P&EoJ7 zT7Uh@&X?V!xl{C@{oTuNAM*tKe0!p@SaREd-GF3ZdR7ovSgH|oO8Mz`JXk*nZ2Qn= zk=}UmOQ1^rUQ8#&QHw2mIG7_O*d1{Wodq4{PU7p3CtFEXS)K8OD#?071~p9bLZ``= zQOdK!4(2!x&3t37HRMR@;+y_umX5cgNeqL+a;w`lom!#-F#EpdQS-aVER0bf*EcK3NZVR=G6WKshy++oc)#S>g-fisvWib9StQx$<#?t;jk>sOh`gk$V(R zNjZ$->mSixE4+AeIP?x2&lrA;8U^<)- zn^NRtKaNJ4Fjm^1Y|`zepGQibz2&xy66jBCNk4miw3VNg8o|-n=?+_DWv}*LacBdf z4crx+e+8rnqY)o;AOU7O|4j}(JJ`^5HjXHNR#Uo3)rK)%-gc$qC?S2FYj_aEUmNEr zYB$yFM5;1dSInLDda6MO9mf`#YFEbEEA%F3phgb9pVL~E5&{Th0((%;z8}pLbL2K# zLrqmmvD(0Tsv3=3(h#75rmJt>G05GK#tN7E29c0dht>6;p+R9{Xx7$vXKIobwzMyq%nw=zo^Dyg`26pm}q>RH9Nr}LGuY1_VC$n5Oi2oCmTma?34?VLf_luA`z1>r*MOIa^Or6R5!Jkl;IQ07D#kB+Q-)6cGaw^i&*2zU zi|)ps=lmYutr;~@M&7IXfs>&T88_{uA*qX0qbaq+D0i>MPF;%jcWV$ z!Cz|}kb>DJ#SaaYm>gI%6-++u0&7S$5#03&@ip=f##g^-YMi>I%^lWV?p6NT{re5yOPLtzxiez6;o!1Sy^#8 z5vRKx*tPZADfQgtcL(+^p~6xMO?SfWvA0!6Wsgb$!BiGd3TbD&-{pfJnEJu_chYXK zL4`~rZ9^+!d#7eY$aCK~@QN5SyhtO^n;Yz=E$QeISJpjB={cV=+O}v(gtDFlDcq^k zF7|UEN>l1k8L3@ooO;nXg+pVuFJ~w)j1n^% zy?DGo-_X=>v$-HnAz&Yr@!XT8SW1R?Wty7v;z`od*9pQq1WA+YpIv$k%{8Xq+op%n z81w3y`jrxYd^aRgau5z+jRFJIsgo_zdB$!?QPCf;}})%RZdzYDFv=vawq3)5jwy&)U(B zd1T0#{dTh7-8+RFt4TUzKL;TdE52zxSH!p4NOx<69ggQ`QNEcEp)P~7%at#05Uh+z z-zuDn`+Q<4g_=1QJRUjg^P#CO1w2CkQQk~l!rbeyE~URVF(QDN=q@m~6Y_z-bk$Ni zn<>N(xepOM)(+`|o&{kuzHF{X9FFHH;!!A*LF&?}B?x4z zQ#@~~n+vXaNdn!Qd(9Wem}RnG{it{;J9dGy&&_>E(b6Tl5ZsA&4uGbpvH4bU z-LlXGKBV|{@=TtQzDuR|hQPI8+^}3Ki$5reterKC=HD$33!pB6cH)Xoc z`h0*TC?K!i=saJS{oX=%BDMybCT{wxxbo=ZN$-Vb9t%E*T~8Wn$H4n=du+gCZ#e6>ajZhcCx* zYC*BqJlGbCf+7%J>}t@n+_J1}OCshqF`12+!3%k_V~RHLq^tQ2+*UI})fqNHrupo9 z^%}W;n_P#at?S_fE=0xs4wIS$DV;^Km7mVTJ^>Quyle(YnUsFcEE^1#OAh>J8xrsd z-oa5>YA4&t#leY12RvTSeNngW2OA6${q*be{?{FHewEXU$QkY@9Y!mU2Y0=;eObX0 z=c;?MgHN^APvMm-DqM6jR4E?*hol0Hqvl#}$vZ#!s3KWyC0@fSvs%h8+Waqgk1EZG zci!E|h{#(%fn~vS4)BGN|JpRzu-sqwaQO+2UUa*(2kAnF%(PQRf%;Fuh0FL+vD{Ul| zpL=#F*fQN?0X1>D(PPJ^3u_PNI|a6~L(WQg&hp3O0lyd$8b6;XYVn!FXc?-N8Jr7* zu4%#!O;A`#{e|o7B2ytcrQff{^&?Yj$1>Z7SQi?E9A3=z3|nulEABOH%nWzBj)>pu zSD`ldE%jQonohOBV3RPl0wxjdAa3%WQT%q33L@)D^C7c6gLAvHXABsYCEJK!Q6h1% z&ble+{6oA4 z{rxv*X~OW6_)8Vh!`$?Bg^jHw9wA^+FtF$6g6xp!ae8xdp*@NnfT4XgjR4T~K7H8y zWRshDZwt{c(>@00M0o;jy&O~HY~1|VeyQ!e(9~vIWCevOa<&-7G~ASXB0yY}%lY~~ zijC3C#-(T?D;uMxGaybycyiwF47F)QCn%VRiOXV2|;&@&kgaYv5Iza8b$0cYs|pJ04_){oK4)Y51gSU>)h>y|{dKDYC7R)AREb4s6d z?%27GmGZQYwY(nM)hV=LWbe0TpCx|jJ6^vex!w^`CO6a{8f)1H=QjKPeYH8)c zmh&oGN#WayFUfhqV%V+`3wwqw5mopy(bQH`nuCPs3mD|owCBOvmk#n?8_Wo|_c_x> zIW$5{&O`%?;%Oy zQsMJ+^}u6p3e*WHu=AwfWVG~k#-Je{zLI8Szo6iEv<+rv|6Y6Wy7S#iPu2?wP4sw; zG6t}Xd8t6H@k+87(xhq0u?c2_9JMgPwR3Qqsi-6lC~H`M$x8pkB8<+yP!*eAA@5_w z4`8_B&^%gfC;2%ZW#)x3Wb>oAA7(s~tt5cqha{YyVd{g(zLbwRLn(B|&pngiHXlbG zyTY9qth}q*762A{q=!6o{k%~2k!IT1KTYVU*K+TaO3VkkvZi^i_`1ol1Og7M;S|u(`=Y z0vraaLWh(fp24v3y3TQ^Q(I5?^Kb%<&L}c+zReLnkduQS#7%>;9_aQA&6PUR>J;Z= z<=p2F2}_43U{*=Smcf;6J!0eG%Bj@Y0!QUT{V9UjW~s9I(JC2D3|-7U)8tK>mZg&K zWOUF)Hqs;P>9e|X59LJN%1Tkt@aj-wd5Y4F%f@?DuP0n| z*tD9C8W4xak?V#luGOzQ@hu(v9iSdu(Q=~E-@rD z<29tG+F5c7oj-eu0_&gA2|zPuI@73VuKXI**O`=7qINi;sS2$xBp!d~FW^@1xFEa~ z|K$7=xI4d1W$j3y%}A**cd-?5x|gMUGdk|4(-D#7Pduun1U&OV8`i1`Nl%>?VoFfO z#dK5vc0XXJVci}b*jBNOl)@g$LZ%MmLOa%e zu!6guQd-D+8KqG_8%@-jhumcdR=c9ysp`1g0m;U?`G zd@-J))h`#wSyAj(dq*+C!V7E@2j`hD`#AZPm^D)tpC%VGKkJ8@LhJU9!_#rAgxuC4 zCwT@c=XE<)#t?Uev2wgN&FrbWH5Y zEB`QC5O@uE02N8P{!NOS^uzsB-K%vn*mm_gAu^}|u}v{PC2zY3PKYECKI~)`XpxK1 zm;DeEx~iO|x%!^YjQOpU1Z$*xtZ)=_k=^=$;qH~et`F(%qJfSHO25st;f43+4?0%q zc2`_J9^z3Q+tlMGa3qlxor~(I+)*_zh|*_LTX1HRO1eWX-8tfM_)Kip!qu3O(B*sl zim`J|)EwI8`MrL6o^xWfGlVko)dvOk1hpR|&dnfar7R(bq_C&{`OV)>nsoKBg~fY` zMstA?CSvv6g1VzvOI}Uzy*0)?>WPqT9Sm$eg5mhN4ayMTm3`S`1{8S*V8w_*fP7d; zR{}*56+(M4@0N2s3Q`F-j|pHf*NwH|EzhvR5D3$CR9CeLYm~VdQl~8fkus(p8{v-c zh<Zpeg;0m+;e$0$?~pZ|g!U-9Y`ew_)1S zvXOw>dTk{^#f7byc0PvHr*)OC<;$oC;=Z}1vpI4p&!TRc_Vd$xPH$<8JRb_9I>^K` zCkX}q38?gOC9t{;sVNQ>YvcYo>A>!%SJxIodyB$=dWK#n8tNQ@5*ZHHI%hh?( zT&Uo=@mAU*7LPQye6m_8Yoz{`@!Wdoa})n>^kYGU6>l#KE z7of1K9d8EQH7aE3f=QYyBY+{!Y_j}X(!*Y1BmPYhpN@kjkx5LzTBzkYj-JA|c)ZRx zGdnn}9KTK|CV3AnidN^On}2cvcsz@`0lp%>kqbeEmcMkZCq02&jan86cl?p!nLs;$ zjOp*OpmsEs+XiZPVP1!)i?j?p#XZcnG^}CbmZcV(f@mxFBDV4~yt1NAQJi`J8rBTx zNbKqIw0xMSYm8FHnmZ6ornpBgG@TG847P=kiy>W3_1-hlL=HcmyoEqC%wXU<9QCXCxbuSPJVQ2&xH5HSz^XE#a z;XZ+7sm~RfTuF)zM2mHXmzaZU9oiP-g{6H89M#Hz0ZGSeG&~m1bo5Vs_barTp_dKl zn2beo8|8E6`+MPFm+o>Vn)=Y}P1Z?U*RgFr>P4bwlP_G+-}_>)F%AwGf1k&vy40AM z2NmnK1yZJIq75?Rl-PW)o zNGcr?64Kq>NOyOaw6wI8NF&|d-Q5aE3mm$UPU(hk74R=oHJ(Kmk* z(|RsFon20K$y9utcYQ2<>5QnM+k842jt8RGB_8;u$40EoS5e-tT&w z`H~@#_FWE(L*QbwLNkTwaG36Oab1hwVw2&8JHxai>rS2g@Etj&n!f>n{a0d4Fi9Fp zCL_QIY(T1(^X|_oCW+ehEMNn7d0uun_9ui7U{v1i=CWBrYP**@-<*vH6oP$%+_beZ z{#21xR17PgyaYHMCFJe#J;rxf#R8Pw0}E5pQRLb&A!_P!O3J*Loig*KdoraDhI<%< z>RPD*IHC(56zQu3d&V%&vtdf!<6vq{LoL!pQ7VZe8i*c9e2OL_Kki3m?S|8kGE@mk zL1^Srqy)uE@}jt37|GCUe8!*o9BQ?n^G?+faxML-+(ple7DRV24d0HgpYibad~lcem#b;odJqZnw~g5HD~m-jeTo2|j}qwzrFF1l*vbDrfmrVT}Q zx4m!&OrPgH}N*yvtHRSXZ&lV^3tSj&Ie{OK(OdvEzEJ-)F_IDn8iMyUub< zyee7LZYgd&cIUJYVdGkkIC3Hg6@_oHltztT8#|7%Y_MnvuoguvrmM>1VCCiqUMJBz zuM#Kn)3l4S5x#s@)$$#E^Vlb%vzk_XhT5h%V27H+(HwX!?MVzn3sP^bvqY~r2V(4P z5F^@e>Fc8EOJ{Q4vU*Qqjgz!9Z^>N%>}6hfYPO!v&zhb8}^_$rqZ=a0(h=39e>z5YBGSj6{i$VfboJ{Certue~H)cKL z!Qwaih|2I-)awVdyLBk)W9Fj9RL=dVQ21TKh!*g;TAX{1bvf({Yf>O~+E6h|l7yZ% zy?;45aC|nlUM8r`Lfj4@kTP*ZBB98H|%$CDO#Ih zx_;3Chy||>3VzqgddI+#3UEWkz9ZdD1@=!S?#Anw>N+X=`aMHw-ScuPQSTt1?(-YY zslp*#YCX&6X401~1rM<@7FIVyv+1EAa%WQ54_T;ZXS~yp4ErYWF5|20IhF5Lafz*r z7>g-dWvZL~<|L}-28Y1&!HAvD4{Dqf54#@wRp{2bbOnUrLThQgq%LF_J2+`UHIY9^ zF&EYGB0lDNrH-0}{BaD>Hs??M-9{B)DNj{8QiZlkdKHK5|F}eNFVk%aw)dRkA}!Xm z)bjeTP~ZX~Nvn`!<(f`MMZB;Yx)gNabv;Z9%=g40xJkDv3=`2AValSJ19hpI_g2== zQX{X=>Nmf;UKDXhK&?twC>0IOZVuW28YqX24s{*&#ldMmzmkL8WdvPF;4E&N9 z3ied<-9xT(d!O{4Aq`(!Nc?NB)OD#{pC1y%2<9~;Ut_wfH^+?UT24{V=fizFMwhFH zig48rR?wQ^7M979@e8#yY(mUZ|02l>&rKK{81n15L~}hIcJkyzdOn7#S@M8K*g!P# zCjR3l{n-Iqurk`jLPr1e#Z0g4f!n9Zu?z5|Y0|8>7BXD_xPRFfdup-3TERbYd}tn$ zJ^o;eT6mXerN!Sym69amnC%F^_MHj7Z%IqX_TkPm>!(2YY#M^rhY2qs#c!CC{8(wo zQYe+h(;_PX&SnFKuMKvwN?oRHWpvXdokF46?&rAqv}%A<^aFT9?D$NZM@20nMP9ar zFQ;L5@FsxUIpq1y!)Aeji(U^T2fS&W3rBY$&Wcx)>iY8>$EIjj7^)nA{MhWpv#Yo8 z@n-9ANNULxy@`?Mw}Hv_f6dM5lnc@GIEXn8j}!XlFO>pGAysXWs%z**fI`!E-M^yB zlf|sRJmm4Xz_0PX|KgWY-cd|xaE-}3jgL(-r+7(dH!npO-tu|FD`yqBwiz!M&SZ&f z{TiYUIRFgK(0tHSTD68&X%Z5xG@#UeAR(cE5t`k6X2vI)Qb-?#kW|x2`yg6BK8m54 z`?aF5&o58Uqj?HLbR*(fSSVEw+x7;EhW$TqH{aDx#nO`K58$eaRU0W8Lw-wNP9xHZ z%d+`lIWRilSzdYJ+iAc-3)khrXo4e?q>me^6rH_Ei;XC?s601zwqu@BknYayvjCH45}8Of%)>n0UsA%ow55tb#no$ z<#S%Gg23?!=<*u4<-OCG^lDCormc`vnHq$pZ{9|ux!cu}NI)o2nHyL~ebSAzeO8rF z4iKNOC$P@C05vxzZ#P2d2&|NE%uLZw?oDDnTIvufJ8TtFRfus{al$`m!9R8UcPrvo z@B7!Z9|#>c7ru=LWoH8pZ+w3B4oe~g;TPV1HD4s?>ZZSdnj#LuPp&@FbzLOjGM}BR zHf0d!cWs&hJz7TTpVo>5k7Waw5Elzb)JC}Xbe1_jQ#XG+n5)~kP|wwxQRxV&1{cjF zWbW*+WV_XKRHQq%LATATIuVAp!t3_nl6`L4!^deq-Q%!K&hrJ94W59PrB$>Emoase@G z*+E@V4HLQ)U7nZfOdGqV>i$yRYb+onSDoznU=?s5p8HB`*CCG2l&|zx&T_@_A4uOR zJ7SeI;tr>X%#N!qqvEnSX;LZhfGp#|s_K(ZL+Ao&`*b@`&=KRN;-w+c#vv;w=rPpM z(rwjTAx#t7FEIHg3*-eRnjAT_k-PyY?6|9LVOG5J`(Rr4mo9H4KG$6JQkk}V3e;Sq zJqz&E<8j=bkgrv>%<&+E(XjpcFD*cx?oD1tk(p}wDVd?-c~^1FXHeW0U9wGDE7LXW zjCLIzd|~crwp9eVx`=9(i*CV5P2%wRjf$4dO!oQHZ5lBBH^rlB2kZ~v@0?!!Sz*-tq{nz2Z;rUcF&v&1;jUZ)z1z zg5VM5B=QJUsXE4&P%;_)D2%;$>$X0&?ozjxaFbAi!w6jDV(Wo?DY|;OP*FU0-?a+{ zdy7{;6q`YEiDRyA&)_v@W<~fEB3fOs-{*4>3U1pojaIuwVPpwo6LD*ORG{MZZMqys zhwqFcGC6E-f)B4xp2V&{GybYG&HhWK2VJT(dg)jf(J9r?Ih|5*61?!uW~sFYYw@DK ztXU%|;=E*Qy=*IHr_;?G{Q#T zzc5tuUv3QQpYt8*VE5Z+v;fb7KZ}>ZOK;2REm~x&4V~_dNs|{w|JtJYOeHGUd4bW% zQoUH@TXafJw>O#%hc%_Qv2YaM$YeS|qmWzD*tLmAndv)&{@C=rMg1{vsqjIUyQ9|A z^fJwO_li_Jp67ejgGv*|=dk`dBlAbeR+E;?t!_`kqxI2eP*{lOSR;Q8CR|?v9c{5U zvX|DAnc9r&YPl12utHP5LO1~reV%L{0}#}>zKOiNrSW06v$tAqR~|Ta|E^xYWA0sN z+YOFJ+)%?yCD4w96#%SlN429MoIK9ExbBMD5}^)<7<}uC>WZR?S`AvzFc$S}9Y7E_osI{>d!G8EgAqahSXhu3@>#^Fan#m7Z=I zfM5+|WNec@SAw~(k=!^O&l8v8k)o32AXJ3cc)T9PUFOQ*JT~!I+@NVz`!V?XNqRW@ zpKczITa5VS3i2_U(n&s!9vp%#Y&!u(f5y8H~x`1Y9i%~av_ z&0cs`ggSS6#@9{uyt`bh-vQ|4H~DiWzXz>hN;65enK5Pb8f$c8)hqD zZ7eK$9C@|hmNZ^~G61dk5vbO*QNPcBu{3g;78opl)P?F@!1w8ejf22c2{W_Nf{BvK$lay*Wtbe9nG(VXN8)ffD z@Epo`SjUPk_&;ph1N>ZM`lB)*XC9*ayh4C_JMR;lc4GeT*K|3EzinrrBD2NA(BpKt zW~f-T#D@68WtCPeP1{jc(Az3Sb#GL`2sl)BYT+U^Z=3CKi<^=*%i$09hwQH5v~3}a zM^~>2xKk+7KT-b)chPbhNp-W4+Rf2-3dPcISmx)+v+Fx-oe*divoPki9n0=h8tKAo z`UVQp!thMsH!x5$%0F7FaqQj{nD6~WeU(z8vifM1s=o{kOy}uvf@C%+&wHOw<1b5o zj{CY5E^~K2y*$)%^e}&Mq~6M>dr+BqO848gP!s6KQkJ%`_|I!XJgicdQx;P9=yXXH z6atbr_3dl{2w+}@vvsIkl-i7ZCECxWC?X`lj4aNMQ!+5rhV|vKV^sRme zhzzY5pAJK`XxFtrKD|v%|KZq?Lk(^q-S-HjecfQ6O#PmaiyHTzXJKPT0& zq@QSFJ;6lwFD^Yqv5s2&K2l~%rT2D8DXbRNUd}BIW^p`uqGJL=-4P8(9oWV5vJ?4q z)!eWZC_qa<=J9xs?6nu^Rwfy<*)BS9|Gt5M$GbSTM=)zkZYN48)TW~;1_!U#b%gB~ zaMPc=NaHAh5zVJ8{@@s_QG$InwH*v??#u?UrM#eD;`+&NBA0&Us8|I5IzI&@nJSz|LKzgc& zSpH266dJ@W${&cC*PR@4Qm%I|HiaAptfYm-42c%~ynvpwKGBiic-gLl-|Wd;(4&ul zgWsx3@SBYyoQ7QZ+oKc|N2WZ)4W&#jLYlJ$0%r)5=I~;QUAu1Op5WL=;Ed}wcY42( zpl?&FKztMPtGKY7(L4Spx6^iI>uoG!jkRXu*?0&F$TDvF&4vO&9$0L%sUAe59kYU4 zzoZ3$ikCq(3p7x3c>)H*xc>^8-u?&SI7uaxQdMs_Pdia4+GN>@bOoXnkRCb}en=!D z78d@h&ve4b4l?5Ubfx_6O(8Fy3m_yB4rKz$Dife(Vh0pa)Wo$kugY9X_G-2U>xaYY z@NUFpp2-I#cWrjZf;}RA`>os<@+4p;iLvV$7gAD))v*{PGH`igTh zy=4Cu@o8`P{(Wy?xi7zmDm|Q;Q616jvLso;5cu3d(+Fa$Jy&FFz);MFqon)gKkn=o z0GDS=#YPr}lf4}WgsRY3GzmENOK#Y?wQ*Fs(!%55JvV#jOX^4ET)_-Yd#NK8i^P&J zw*^ry=*h+k-+TaMXO$h)kn3UWOKz{5S*r7t@!_=b+p`PlVeOd@g2xqmVs()YTw70u z>Ve;hx`s#3;w2|_lu6ag+v9ykxVAj;nBL^ePi|>7ezc#mOD~~(KFFjig0>#3RlLV4 z!AlRiHQT1T;VhaHb^@W2Ppxl*LxIaI)Wp5)PNZSdWUIb?Puyn9QMHFQ=@W$K@E=vq zm}|shP*GUN)Ul;-{s0V2ddugY0<4oYl%c;smjIE6;ia-o8YjO2_4xZDL#=JAta9N= zcje5G7^{8i;3in*hpSeQFam?81mW|?G^QorJ%R(6UW zS5S@87TrEgmtXlzntn~3`xdBVhpZ~fSOJk)wUu|OoI!1HbXN4?M`6;}7Ah!(z&~VR zlDW~yY(8j;=0H$PtN&oB=Vz=VD|!bEM&W6A6Ld>V?_`o3ioIG&v&&Rg(ww@sw-CO= z?ts-XS{>?s^JIp$HX;a*s=+(-M-cJwLS7KpUMb@6P!dPVAbm@37(QF?ezn!`IvCrq)HmWg z-MwU2x$s2TVBWuY0k-x3=>9;dL})178?P&P(hUqB|CVR}E{>17n~3@@lC>{_hq#He z?eQTH4jLvE9XRd-XGOSD0 z4i@*Xp=~QvTXY~28ZkcO*M(xkTKN~Y9=QYw7w{7ay#@CyhsrefshHzVhkEw!7O$ls zlTr~HJv3|@fix_pn?=;MnU(GL((`!DaczPd%HW!|ebfG= zhNxW4@fub4PUp0jY8vHnKD0f84^LsO>A2kC>3ouToJRT_Dy{MwJxTyWaGIC@-hV_r zBy96D%Fyg$|8{86b(912!>1$xiNmeiqSx;HR|HWr3*ur(rpo~jMI;`JS!x}CHt7c9 z(sO%CBbs*dxi*2ug`#24JY48^v+<$73t_O8;W)bU{(65w%2-Y$`?Ma%VEt+?$Bt{A z^C%zk?89Q{ExBw;3aBOKY^NI|2z{cHIPEP@uK4!$ZM-IGrXMzUOYCImrvPzp_9Qa7 z;7szKGM8%^xwt*__+i`ea5FDkvspHf2XA>?VRLd?Yq3S9TnA}j!9KkHI5&PRLHcnt zr#EjKdpPexQA(YjL`=gLlHr+GHCPd{GQq3sJQ-g9_(YJW=V&*+;c;nA;&Dx1^ag5_ z#OE(yDH;e}@7_P@^kUJuN{-~k49;Mwme&@VB({rOJz+pYp zsDtPK`mGU&dnC7~PbvaAp8I`4{ZNmzAPvX4$t#RD%B+I@L~R?4wEC7netXr3d;S*# z$0er#$*EMCixr{;~IWaTOfmjz=7nXz~l zGo6f+CQr7D8Tboa2cM-{P3d``pa|WAqwik`4a;vc7)V{r(0Z!6ul|B^|K9ebk_Sf{ zEHAa8*oFtMAon8xIt}E~5CnQ4EMQcY=bIQxb~bld-N}7sN@F0K;q9y2=(@Kwc=1Ho z9~iYbCNTR7hCXmP9@d;U?(VBjBfJJ!T$ygIx#c{U8p+om&%#?wOQzIjIDxXEEECc$ zVopOZ@xuYS4&(se>2I`at!Y9h^V@fTj@p{HTs? z19XZEUhJI_A4~09lsn4>y&|}NtZ_{rQ^L?~Z0|U_mno!-uE7@)WPBC^CxOO7@^w8m z1_25xnguG_|Fhp$u22#qXi-t7&`faJJiE1=r7BtoT*bJ&NASkFYlR456EJ zN-w3P07ogpum<5CDW=;*#9rL@LNG#X4(l4SVR&p>NBl3?*n7iM@QJ5!XfAbTMmwXe zVT26=AG?Xj`B9MIUP8a{d*1cgK#-9L2L+18Q79sTwo5{`c|DpYM+G?kL#M$MOiCto zk`NUTtjD?X1fc(jhhKyL*@h4vk6k||9PrkkcW(^_Pt6Z4eH}5gL+$Y&k z@Wf<)r=iE%g<&&~*3yyIZGIq&vXEaSu26y(HtUw1s7Awak7craBLWrC{4? zT}u`>NjC^Vc(eHNT2tR@k);+{aoC6l;AkayW7W-&dWi;aE(p-NDy&`; zw;{boII8(D9`w75^^)+m&5}~ZF3K-KZ;CjJkoX(dlIk9UaG2Ku%kfPnL3`lBS@Be( zoF@_&yqji=oUUw?NV9{F>5CkrM^q?jJ**8=#itejpA8^dW{N67p!GA388Hhpm`7pM zJAHY{?i+~uJ_pJ7W7Z$$=dB6QU&Rfo7WoPLvO?B;S{{(Q*etZjzcyH5yY0P6B3iUE z+b=gJ{4R59EIO>>S2 zlKwx>i@s4VOH?o;;7+Fs2H>E5w>lH>zQd5eZBo2F4&tkzcO1sQc{3r#3*Gc z4&ozTSa$yD$etg}U@gMf72^1$2fxx$>rV7i_r{$aoOI>Z0ruKpR9N6CCQr~Ncjxom z!e!p*8`v=mV>GgvDB>Knwazf?wXr2w@7XQ&l2<2Ksn{d)GnCbnQ8nyt@ZUn$!pvow zNBNl=kP+VdVm=`HCtm$M)&H}`f^elX27v}|qkF7!i?g~b8$7I-W}&fuyjXv3iQ?xx zo}=&snyiwuz>B{(9v%wOG=8x`(&Ox1rG&OohE3RM@gr5RwLaQeA6aGd`P7!f`JRpV zFF9OnQrvaFgcV<;%nP(#mR-@Y4EU2AxKe2zXwu5f-1i1en}~Vggz0x9edb5!vp-O$ zLz)pB;KpBz;#rum`?48yew2k1+DtTB3+sD}cq$x{9NH;-upw?>xPrHaP@1D4yip*T z`Dhq>Cg!0hn@sbYEkww;bfNFut-;>wODFR#l@j)WcX;(Eo4z9SR2~5un#R>|pd`!1 zrkjXx%iUvCaN<|NmJj-@9JH za_UMYwv;eIH&G(1p9o0Nl$5?3=8*NQGy)ls4>+RIBv3TzO%ZvN^=ZOCoxk<|wDf|+ z2(zupB9n%XQhMH%Bl`ugQrRI8pZjhHxr;zhcb9VPAW{xr@Uu2CL$K_$u=}!ge64G? zpdDVG49eAI%e^6uw|X5zT*>U4LimEv)r*y{XP)t{0T0X4rUYV~cx&~#cL=Y}wRtKhi}>=AtMugpJau+y3e)k<@(W73H^^8icEj!WI_V0m1iE z@&A*V*vdx{7LzQEkx=lFqc3OOkiU>(Jy}FRm{dCvUf3XsHO&MNzm!WTwH`Ilnwph0gXy)P}ZKlz{$- zQwJIg$1sl1`e)R)8-^c64PSW>VJi)uO^bF!rD3F)w|bv$^ssuri%TFmLm4nY^6`Js zYZ=mN?Cw+advZhF2?A|HLg*gMH^%~tFV9VkLq0hXWnh4{aGJEoXc21NFdU_|634ar z=J}2^H5FA-R41=~wXb5;Bb+Z8L+D90<^LHp1sS7`a42^WXu~k4h%_|1!a8G`MInvE z8ujqBQ07n?P?{|gbv77uK|h$C!-zbQ3=LuTlZYy1EHUd`hPWhYYOT%`J|;J-Y ziQptn{<*_2i!yfHqz^um#w8UkZFBY^>K^j``9`gP<+frUIElS56WC&D1I1*OU-?zk^c)Pt^laXa2U$7}+Q+nClvQxhS~NS11}-J)9puVE^a2|9jnq4NL_jcvgSJs7zY2<&3X0n^N*@ z&sR`7<-h8A)y2L`dE^pH6eY0~hpJeE@&Qj(gV*0W3weAHZd~`47?UVdhL6HS2MD+V zk~794_CB7g;)h+EEuoj0C4>m^uHsGe<{BBmkSU|+=d{1eLx;i1DB^*I57Qd34JC=R zCs(5BWl@oiN=xl??Lgl2(;%iVu`ta{P>`9Hn1?wkY+#mqS$vg|%!g(WB*4+rqkxs2E^OGl8(nyyfRi*AF<}2oatY$i=el$Ach7SBZ9?0&$uyCt#`C{^5c}x|`v;?2 z84>@lYz%3g<0W{=ybZ|zm8l6E5Y)G4Jj%~7z!_a{_}||OC{=W{a}2bD2|vI3$jJG> z2KoBK3Pg03RXsT~8(+;f933P+0JCJfu7VZizX=Bh)60O)=uS;2^S@C)Y7d7J1tz|g zs9)N_h3QwFm8@xWaoe5bd6)k<%7068wuk-C zB3^%a4%QTT=)aE^Tmo6KU;#dT!f%=`K|s5Ld#~d70aeFaV2zy zgAW4uzD>U1*GWIdcWVCq@2zvc{IAzrqyNGeMPqf;SHpoH2UJixP$fD|A-hk!>{tE3 zPBhPfdn#}q)?b3}gCM|&{;w@1u6(V%Jeu7(;G2-^S*-&9)aNOm=B$=OX{?Pi&FFPA zlvuUDaILf5PWRgEwoJF>A}f+AUD0Q^c0w*v+Q5)Ty?o^7HTX=Qk<*@aF02RquN(Eq z|Gs8wR}4r-Wb?3#Eteti4|W~*5dnQd4jWPjrHVP_k#7c#Bl%F9?Lz%$z5OfUJ!Fo< z-0J#}cFgRoCh~Q~Mkt`wt{l@D$VaQ5mZ!ms2>jhQ>Ay1;U+0+{Z!8$K*R7-*G2!@b zx-x$rf4++({yqIPv;2u%j&d?99ahtW@R8_HB__>M8JC_+Pk+3qTKKy)ux3VUFaF6Lpr;J?ZZ$D9xc)@P%Ga9> z&n0&HJU&FCy#?R1zjE!p!M8cfNY{l%c=zSoqYlEFqx~AZ5}yaI)G4k&u+mGXJx>e% z`iH|jtgwOP3a#%yx9g`f5(Wrdci1nhq7Oh{m?tOspU2gpjQ{yuUGM8S`$@my6n&f; zpUXq_aqfbrL*vn&_|Ms~y#-0%pBF4l$G-nnCW7M{!*$USuo6r0P{}*gFcmlz_o{S!N#_ zryF|uFcyS80z8R^nGnQ0rLNB?8fcu-EC0mbr^uGw8J&R7;Pze?Prb^lVzSV_xEWk* z=gJIQLEmE|0njb4TA}CPxJCAhfc1lfR7fNc773m2OfU@SdDz&g;6e5D#}pI;RpL#A z?`Q9uGtJ}`M0eYt4cmJkR;^#4l>5L)Hd*9>Geh4-Ebm1U|WGh69Qy&NA`41n+d(I&((jL_rdYy4cx z>2f@5fsH|Rl>|NaCUP+!pw1xaX-vE#g8P3&xN3Z1Mu!R67}cH-)wOod+iz0P2Su&; z=(%8x8*)d3ox#8?bld*a!NV7(fwQ9w8>+=B$e!LmV}Ua@d8JQVU-Xv^%Y+a@YiYL6 zvg;)(w5Um6=8Stn;&wr=g>>@~P5E{v|J_F)scCVk1+Fbt$(`h<$-ZR+Cwud%+q{^F z?`Ev$SmPVL&nKsi=j!ZyB*j!|4be2B20;g;>iFr4;OQE3yK`Waknd?Lf%7xQWF)kL zC`E>ly+5tA+3skG10ss8n|gLG0?9;^HctU-hB(em zQIhj*4sG4D+~7;C#04r`o`biytk3$lKB%Nj&=PMP>3+|lj^Q=B|e@~mU7I~ zUrw^DXAvyYutl-1=p>=Bs3p{WUDW3%OQwI+9)JK`^{!H3MYUXquFS1l960Cbjc<{& zaiy!hr)8x&oGknbbNS>53E8X)0YR-n?DC5d?&Dj!0x5&vy&* zCpq3PM3XgOUEkA_^Z)q{uG{K=2(IawY?$Yv8Q)%l9Y#4OR09lTi^8C3*O5;4nYFmt13GLhI#+HpQ{DXgPV?F+=e?3&wjK0{E^+h z)$;?E9^_bLzBSMze-lumX(k0Cgwi|D;A=3-q0X=WoLSaDTe)0exfd@3wa{NB0PRE)t0gDrkL9fiEKb~mz>J5(ftKc_uy?A@1I);&zUQ$i{JkvR#M|o5$(JYnRtY+2DaqaJEoswW z7Rh04)$=Zs%e~^zFMiZZ8aj2wi3OhqXvQai!$q$DX@dR|dLWNL9nw7dS1aA~vkMOV$gYf^fN=8jsvYfs7C59R4!&0CxJ*?`t}AQWNHvQ@}NskY&W{ zcIkpIAC!l_!2vq&DjVrL%;5vBetw&_2vlJnC1NC4UjRbCT87|(Q}aJ7S-U_IIKBn_ z2&ODF(x)Ct&4U>j_>-lYr@8R7)5V2Lkj}kwyqtb7gy|e+BcvL$;d8GCL&%zxOZs(J zj@9&`;xZ59TetX1WGM=LazFk^Qi$)KY@cALiAF^cr=* zU_!;m8|1(_!1Bj_G-cl1Y>X%<*Wg8q>Ao%hO*!`nUZY;VBk&6SCbee#8vcGdb*}`a z`X+mC>8mRe&G*?pLH8|gUl=j#@xGa>V~(PyhL#O;g>0kc++lZk#|k0$KRV&Ayz8K? z?2=QvKMqbCFxgGynmSUw*QeM&bjc#!m7`keH&B0P*6T2z$_&%6Jg|&f=VEpRZ$|dK z)p^ja{UG^`uTRh2BEb>KGl(=izSnHMIiWF&=9PWNU1WWH=mB0pR!`XWn{oI#dtO`n8r@ z>3c>z}yJAhdt4=%PZ22~W@nt#V=YBYB6$(h7Zdb7nJ~@B5 zgQN8;_*DENp$gJMlSVNiBrN%^Qb!1H$AhvYnjlgdK8U+#5{q`urVG(B)?`F7B$DPH z(NxBstWp8LNo_f|S3cXg#r5coqYgDpQD}6hL*81QjfbKE6weY1ob?rIRa8Sc#Oh<} zKHJCFhbiC?stq|#-b<04$JBC8Un^3Ov5abvY{c6@@SV;bS30{$+#;IP2uK$>llZTQ z17MyhsYV9}BUcCdM#~xKx?HOktL}vg69)Y&FVBteg;F%wm<~m8R@Ld^t&>yQi9DlL zH!y>Rx#K=Si1jaD!zTR{ks!7$ZcwJv#J%Gv(%ASlOeIuf>xJ+6?U4`XM8S|$R6lMP zb&25IebdJ~Af@KCBFJ;lQ>P{_QtyfD1o}>^p(~ z{)LO1mMzw^CyDiisFE}?8w-$NsrXI@)SppIMK=@L9Ro9!hVNpMw@S*Jx$_)jn5{2G z4Ii?JDkZ#R5(2(s(KeFh6YhGN;$9l9`Gap5$6pkd%Vq; zwEhPr0HvIyr@&Snl-1o;uw=n3ND)*-@NYJ98uJMec<4~Ua|Sy71LJdj{^xKE4#QyA{^X?c z!!_82>}Z*GB69k^Do(K0>#Mhs@6mx3l4XWgbi~7Vi)%9OQmsrY28}oo zpxfj9hyLCBhQAeMJQeW&TB8+R95ASZfw+*|2{0s71(Xx2G2~k%8-vq(HWLM->LB?I z$9L=wrYKr{XREL`y_|PBn%3~1?Zc;tCG|3Q**b$R<~Faf>^RGZyS(CuH|D!uF%+Xp z*sOMWk4Dye({^8X7n(eBj{v(>KH7H-NQQ0|)uw?CsdBZl`66vQ-JHv1mw7C}U4`#9 zDhZne610Nq1Ny~vxG#WhPPX!bwB*YL-v&y}7)wuStnnqeGt)!SD2}a~ytwQmT#g^J zqLqY>FFDkTQtexN6Ih^oKCNSOFgY)Cd}Xqi5l0F&DEbU|D6$vvzx6shPUJ5fjSXuq zYeds1H&+0bM#giB@o|-W0SYmDC@xwiysDCk3LGV8s8E#-GU=&8_j5c;Rpn8=7m$HCJV>K`jOsN) zoXV^Nrc+9lF@qjdu`1qVR922^crr{e@SWRn zq|>O>De0nCEzXuKb2*?_#iUkKdxe``*0;1;Jdy=#_fOqUlmT)uXtjsdKl}5SE<>TN zPpN3ElxnP)fuI-7c%25-Hx(RgRB_pO6Sz_^3^|vVT#Z1617!dk3ej`cd3+$DB3Jo? zo{yK^zy%md-4_P$SoT3|F0q8}2bObV;aHp<*o_F3Ts3B|C~x%|Ga(rPjB9#HaQH`w z)Qbs9rt)~mr&)%PwGpvs!z`rdw74$`H>G~3aoBmUxXGzL-;|OB0U&fMeos^QhSVaj zDB1zUEl=V~P&eXUhxs9#6e<2bC7GwUo|FU8R`D?sE%d$)VfXzxi|K&%WYzCFdu2G{ z%2rF7l+Na2;{-TO(~AWD9TPUE8Ruk~67>q-!^;44Y4MAkJIjS!i|wwIf8zX4b0h%u z#|eB9rbHJ_s4!))Z1o#KM)+y8OTpfy%Wyh7dtYeK=aBNxu<8^03ai zx8H#?OR2KheMD9~dXW(17YQ5fU?jlMF2Ci_1{?e8>84t3&7x!ZZm9E&;FKt5%ZL;?FMA;uiUjc^!VH2%&>^b? zf=aaOeUgk33&?xB-;bxGc3F>vOb%hV>~}X`zp=xOtxpFLSMFoNwn1YJ&`bmkDmV_gzx8?KqCV@C{U^y==Xr?`&^eHikZKL1w1cw~T8N7iR3azCOb)Gf zu}PKI8M$^LipgsXpn_}$3lRk2U)~xv)*wx_98Rv=1+Yl&eoH2)h$3z%?ac3DwX*#5 zEt6qYbhvSf!eTmWs8Dw=jAx@$EZY%0?4~OB7W=>$<#iaH`ha7-HF$@8x0=8`L|G`) z>dBYCc{9C~BhFCw=@^Zo3lu~@F_G4(eMNBzO=72U)7|8>pt06fd7%(Xe)0%;RTj&BT##%xN36I2Js@`Aca7t0sF z0XtfhcPpfE-ioTUTD9-NKr0T(YkJCl1r;$V3g_Z#K4ggQfGJcct`gAwX-;Jb&EBj& zLnEWCZ+1OWHMu0*Lf{?+k9IfF2Vy^EVm{5Dc;gA;UhsZi3mPb%7Jq!SP`p>T48hg# z_JSs^ln~0@ZgD015i=O8if)^nzo)Ngv@$-({r+OicKv5nv!43Q|2~5ZLgn2Jg%lwU zNEq~QxlWpM^{>FFvuyZ))$ig(m^5ldbym|b2yeqB5e(f=U(7l+w)zv-3*`Cu+0xoTlD61)+buJp$m%2w`+sjg-Z=qeomi<8ZXbPZ@MMlgkK~tkR91G0b=CsTHv180Juj zcswrINS~f53-o}_?1SCOhLX2@w?*R=af%xQ z>JZU|ts%`^WtfzP4`u3a1AeaILwbzP-zy=1f4%e%qAbX7oCz?zJGZ7RxT<@oMesC{ z@Cd+oR5WeQ1u&eS?{Pp5^5xRX5v@CJ4_ml(d*`t&aD-kIbQ6hK8sxFK?m&A(K37G8 z0FlfMKo>RIq&OI2l?J=zEVGf+oPM2NOx7!WE(a$fG@7SsMU+GW=BK(t){F)_B*aOXWjFDRQhxLgJ(vK0`wk= z#z)UUr-VWgy|8dZ{w7X8a~`y?q^;r9u9WR*fjhmlkcWO%r9==Ie(>9o$>0`fhn!K5 zz-w+5Cs(Fb_xojf!(x5A2C7EK{Y8sf6ef%>CPY9K*s5vFv&oHjCLZw|wGK9gn1ZnV z(-oVk8Pt}w<)(L6DNx3tJ@6nK>yxKd+K+RB8jLHx1x4!)?uV$wW2|oyXZL`Uprir; zU(8)Uu6S}1p9n^vmpm!63I|4DK{;~CSrgm~ z?WCANXsi%1b=(QiS5y!uwgb%nssg*`8#-9c;b?E1CTT3^FG$XTkE)4@s(ObxO5MwY z`e}Uu_6;i`u5GQTPGs#A4!d9rkAu3!5DbrNF@q-S<@Sd2-T2&`=JwFg?<|U?CbvWh z@U;I8D{Vzfp-nb7mkYVA$#TN#k1s_sqMOscBu5-2LW%>%<$W2UV#%^E?_ z`O!d?=6HRADQtjAY&-ty4p^5EI`S5=8!jXF&wyU910-&JZ#VfW;z}aA{o}L!SsvrA zrbUk2AQ%IS%fGOF^c-|nCfWOX`*<@cu`whtaffLSHu&97_8vu7l zw(Lkw*kZ_`r#jkaS}tF;DHZThfOL+w`Wnz+jf_tmL69)YUq0+FN05uMIW0Z3(j~(3 zwzC-mgCeuU9z!nMUkH_@TwoQ@Ni7B)Zv`_X%^+(>#%>8mR{ZXLmxHBt-G?!$iaXI? zOHZb_qmrn0x7-@|S>TYDrfal&_Qa|qA{k*&G~8wg_z20NXwV1Z)Qu_~REPvc_+|)U zM7ZYJ3SUroEXfP-t&<9@8HPHsCqTJOmnTe|>;U{Kkpmhl(PTtZX8nmc0Dx_=RNU?^ zs1sy&aBbV&w1zY&>oY7C{#BFz8+vyAxPFRA&{cdtE~6z&O~s0HZd7P!df88Hx8&mg z@>Q?}m?4@RJ0huQqAp7&Nj#(rMMEhU%~Vs3D`evT(tM}W;c&rC(Pn!&58(#5E-P~v zAoc~vnluR;*mukt`>JHotL2Y$Sz2FkC9`q~P{5VaRJ2kXuM=3-D9cf0Kv;gN1|g&{ zn`*6K(h*l^pbk#TlUO%-w@L&tf}y4fPK3OnlIA8l2|5lbzbKuPy^SwVAk1{Qo4r|2nG7ac{?a#ssPo-Piu}d0271{W z&$B@d-7f8?THD#m769OsPx?vEAq`+Fo~%L$>NkgCkSdV-iyToW(&p}>5DI*V0IeoVcH_5 zW1aPuXmR{z7@SU38ZleBIy>?kJeNgYTduU9R=s)d&t{s{h2UvLINe^I1RI?dT}^EG zn++#Zu#Jk!8sy#L=jbJS@gj_>l>4q7y66+|xQuWff+w}#;6G70snZCw0&&p27bZ8W z3FZk1zH^K&^8gr&K^;ee>SOp6svg@2Qmyi4LqKUF!LYEH4Mn^e1V*AUyI>gXCD(B@ zZPNQiR&~WI;5Ivvq%_mwx|~>_J5E-tYl>GSoJ%z4^+c}NM>=B8Kdgls&@7q`D9|+@ zCIM4i40uK8F#>kq4U+aCWWqQnfzqXf0T#F%iH1-Gw!{F8H7+E#aBgdW0yl3rgkEJY z88Aa*0e8yVL}Q6ES*%D(0^R9Ki;2zL&89;5Ql|`KddzoXvehOPz7VgL4AggG;&nn) z1I|rI!pswwUqNyTM+=`y_7UqZ=iKxU7O{+o=-Wt>*jcC=N0|r5)(QMLQqP?vHiXa7 z)_Vww6~3Y)oA+URt$MYsiSXS zNDZk#?1HT~1}2%d{C=GBs4JpsC>O}NQb#=zVxKlTvP8sl?~s^5%LX!6Mp{1(HUIP} zF{V$=1{&%Ob+wmA{cZvj(~t{0VQ_}wwJ50qBReDu~^G-bCf-jzILo!1siv@W6P3B3f>&o|F zT36mobomqR>EGSo)c7Z@Nf=yHnXhR^5z)t#$o8@b1U?JFhFW^xm*e!Yh`_pK#SaU9 zQX9n_16>}1ErsysbyJiC+4mXi@j+9A$+~Sp-of?OwzF~iEv|80U;1>#!9M_z6kK-z$E`DR_*+Nj1{oPp8+uV>_Uc%NxFZW^{~4K*fIDEC(oS)@MED-kqd z-zmLqBmL8Mxs>szwMo#xbdBpJ(`1{6H63rlF@9H29JQ+K%+&ckF|?XXy1dZ?|NlnE zxvjkfLZJqKBViErznrE=ROtdQWM=_koMzxOXR-{*I(ok0ADdnr{-4tTimelNeajE8%H?_ z>G6c`q?HPOH<(KD8*iX3GN^qw$egJ1<=rdw^`p)y6^S!i`|_K+$%;M~mW{U|6S*A( zqC2E@4*YOLdd$ik`cVU2M^a2btr6HcFmfshdbR(ZN0ZhwgX%3nDTupTd`rW>gO|#lPjT983 zbncSO=9~9z0vMlnP&D*Rk&DbD1=?i`strM9q6;i&6Gkqgd@r~Z-;n!DD!nUFzoZyh zn+5)-D2?8U%e+BC2By1QVj)aaqdO25e+8c#i^o8WryQ6?YUtp_e-^5E>h%^CVN|ro zO~Z+4p#A|&yv&VgRA;c3mXN;$)O)oCqigqRhE+tYh3pp`cHw2w?+xAn|9>v8rOjam z2$f7Zx5zAcCF8ELBHkC3|Bth`4vTVa+rAY+Qt6g%L=X^=ZUpH@Bn3oT7`lf}0TGby z7={*5I+Ribg`rbYx|@OToE7)|JnOliZ+qYOzqPR~hv7QoI?rSO?fY>bVP4SpX{aoS zjPfOmnASiL`%TTgn0sECr~<%nMYx>wHa)DGV*JI3P=zSXGSOqXShu5*OkL#p9Y1Xj zegS>NvCGjlaJg90u%VP^VW(oXu@E&gb1`Llry!yeF}MNck0ZRGFEWuB3=1vzpbYU= zpqJYxBgNQVeh3+Ff=g-i(Ge-tnxi3pQeS@iz8bn7YqkYfDfHTt6_cf6mjO5Tlb-5P z8n_EL1$>zXb6FY98ao36#eqvzfV&on!9L@nH^b^!zz`Y?LpIm;O6~naCG!1Hv0j~X zLirkoVsEOl^nC>`Pzd-QZrc1cF;|a|W5LQT{;i>)dVfZ++BUMgd5Jy4SxL zk3c5>W9=V9y6l?T5oRt6U(%UYfq>d}H)6Fv6%ML#&PSlM6}nAVy?GkAut+ld(j5H& zFYmYHU=t{Wer}+U&a)=Kd9-sp(`5Qn{$P!qvDWJ#+4~pNwR?+`b>LKc3*Y5U^;jc)(@kEC^LYSn5(Ras1=a1e($NPTBl`&#qcRe!Sp1sDOl6FBhN>YI#vAY09B;6qPcAaARGE(>@tftq7t^$ z*;`V^lMw;v)O~a0sCrn36yT)xYuI>v{zCiWjq&2MR!ghp9@L_gehs>U5`Y45EGL=$ zRoEvmkV(eYG~iRx0=iDC8Mt0^d8Hf+-1ISl+V7%Z09av^;PrkU!Vg3QOMK`yj zKrhtv`bl!WJ=`MH^vbU%k#Z;;-#+FrUM1?M3?6h`KfUGVp>*Z30BE@Jd$ zhvxc;$>EZ``d_ep=a+U+goi1_4k$-{DmAE%V(st;KIV?~lCQUKC|s8g}GWEDz(B>!AXKYi5Yay;db~U85Fy;gZuA6 z|IhF@fM@@Guf>A8F|X}dgF6v4h55hy7&W5M=|2Qe1Du9`Gmm-g|MAP9__mIOzjd@F zZd9@HZ3>H*`Jac`zh*8N0w+8a@bzD%XVlA88OI!;aQ`~y{e@mG-31ThpDg1aT;AVY z+P{EN)Xx9r?-~QW2deP>zf+w5tGKrv4Qg03H3n%LMLVo)n zg9%(fDC{KsFKr-&SE|%x99@^uA_icmed8XD1q5Gl^U$&XHB^88A~4?K6r_K`mwjgR zS!eSR{Y6C2EkVRqs2$ zs9vu7oKCyKx2t4}EyMHe`egaXG(M~PG=A#@DuHzc-H+Rpxu%r{dneM2XfXMS{q;N- zQj7knmChPc1V-_@XyM~a&`B#eQEl{kOd_||*0>@F+-p7u=!0>?Wc}wtr@zK3n-ZEU z&zj!z#e;Ua#|#RoXBO&}&*Zqb?nX84YPO-$>M`Q4G0K% zAOxlIx>BpI5hVk20x#K*o+P+?e{~P6FVPx?ftw5iY&EL(9eOMG@_>x!Sj z+4(O9*^L!wUb!WB7t24_-3TGhf71fGIgONPs}EnxdT-hNGz6OSuK-D0Xwt33e_GVy z>CltMZr`EIjpXzZof==A(OY@vV*CAE6fx>Ur*$p7{;EY4tL#-9N|)6wMeOmS>y^51 zI``NquTbc?^sul`;yttMUIV^b=RxDg^;#S|AGh}Ji;!p0*ByjCL1V8{cA@??UE#PcuS1XP~CD9{OXF z>TCT9Eo0S;N3tj3dy;%kFH6O@n&8~3{V68ssWflO99THeI((od>yQXWYIF#-bQ z;bTfB2QX(V*AX!CiMa-dhug%mK8!*3$%Y_sSuqLxBJPl?qtdisdQdrEE7E!a3J3*X z^&`~QAe0hoqb=(F$1ll^N=CHydTW(=Hgb}=p5?2RyBXp^M`~>#BSj9NxIw{WlW9&& z|Kd#5%t7>HDwR=wGLgb81GfkIfbHNah3Jm}RnK zC?SbzZlV_%tfjVfX=yP*ilBNDg7XE3lRo0TE?lrwA$BnO6k#t~{Iek~!m!G$feOf9 zrJ5g-1+Pp$z4ns(Dc7c)QZWK^2gX(Cti-DyuTe!xV;@{JJS}S=x4KegX>zD$is;AE zNy?9KmgM&UUY?*_jZdJzgs#qYO=JYrXDe)Y(snxLslwGF@EL_&`}FN^H8$kgu_%Z$EQKaoNY3l6Z5@5@V>7k}0tfN`pn( z5gTyBjf*R?=qmW_(d4)Su*)Do5W;+JT(F+ySt9~>r94uCAD>qi5YYD7B$9OAdyoE) zy&AlDrMQU=zUj{tIc7Xmy5>RGGq+_~!d*(*(`0z|s7J|c&#OJqJZ*`0iy@aDs$rEm zS5|1)a_(;2)VCR)^MV?kJbTRp^dU_^7QT_xB<3rLZH5R~_Lg8lyC^7%KeCG~hEUke z6#0d;%j7O^SuFKZ3n+D6mm8WEVDk)|?2Nw|i+a$@bqt}IMRWi)Yh<-tzb%*NF2j%A zIQ=^-svef6pZNzPC&KsfhTcr-`Kkc`TyO%WEmZgNJ8OAsjqYo3aJ45eFs*HP{B^v$ zm7{J0_TBm#-ss(|#4k{INp~N8^!ifsI)-1s zW`V`+;n1&3tTNE++IA%VSrWn95|l^w8l+3C8EO!4nOIPla>|-%THGg+)31bGRO-N< zA}CZCT(2bCC}E!I7UwKS0|ndCX1QPYk2|a(G_~okhaZ`WRfFr;*q4mpgSY#?J?=46 zEV8u>C1v$VywjWAigzktU5=Fdp6Ii*^-PHFMi2*YCH;b_jc44G^a_Na2LBpW7Ha8t!re+!V4cgJxGHZ+1s5 zsy$8ANol(Jf^vx{B)uiG+RM)xZ-iosGM(~dzJuvV5aECr*eCL`FTQg{w$FMonCx2( z3=_x8_hI;k^&@aRs{EXb+|eyvxC<$G{ocDesUk2Cp11!Wv$032g2;gBNu1`OSevL8 zzmgUfE^dAzqjm8o)hw}ZDeaw#R!uewt|R-Mf+Delh=?H1XAPVpq4BzOngl2aDY3m1 zxK_&m22Hz$={5%5E{x!BCbKBfsMbO_BNi5@z#EW6*0j~v4>4YngaMOh@Hi$fBDi|~ zI`bOlVAZ{CO_Gx>3^7+J=d$%tO&1g@61PdIAKGZ#=-#j^*d{BW+$z;6uW)Q~P?l=} zewtnkG&@aXn62t($cy^9xe{2K=|^Z{yLXcn^~mA78cn^n!#?buKr7r63^%HfE5Bz5 zR-Cf`WgQY2d|2ht+Tw1MGe%r#jpTa-)Y&f^wxIp$O1Xl+B}9Y&z$aiOP%H}y?+jm9 z_m`iJ-2tLrQDo(_4`ij>#@^mo*;~Z zkok!&z4Bn;E}<(3loEi+ikEz={9Q79VIcev3o4)B9@VV%^nbGa{dxWfU-`0n+U%jTJ^(&`q3||bofd# zfX%1S^}d4}?1f>iW+ta@w2fqe0@NFBMLpBaTD56tIDRN{1g^|rWhS&0G@mYfvuzJd zm^_u-Oesap{PIJm*$6q&=+5=Kh z37kr?n?9i9*2tI0;gNP|{-MM`Hq6evkhI&5()kSa?7e^hGz+40APQ;VCf zszj$Vzu%%!O))kec zxov^uRPz`ROBFG0Nh8!7%qBWLfLCXKxJWfUzoM};UGNIuM@)JP1a;{^R=I})w)_AE zsi|-DQywJ4@yI*|0>7du(-d!S2JmKytr#q|ZCLBU1qT)#gq&tyv}Bt88b9e}QkOd} zH}+|o6|zM zFzRZa5_D>PVv0XTdVGp1sK}T_S`A>bXJ`=WmKg|JAd@OJG*7If-u3V+@@ru!2`%wQ zvG=CW`rYoXwPKMWF_Q-87wW~JPam|e@=o+!x7B@Tl5{|rl~s~d!xP9AC8;1U3pzOE zU;7VSkjUsL5by)q4AFgEzt658o72bR$pBW3RC*NF;y-OmhzK#@>CH9Xe6_R>2H;ILza{y(CO|br})5^GCH&B|3ei zF6tywS5T5K|J5vSQu~if7J&im1*+V3W?i5{5GZzpxa)8^Snt_$349^zN%|)G zfF-hLK1G5>a2S2f({{Ncwt_r4fdiDoe@Y z5FL4*eY4&*~2^($v{rnV>R*j%`e{XmD30q6NR%T=__ zO<>c|oBAjTKi-_6Ui-{i6;p{_-z-gT@&2*1p(UPu58dV5hgB(umvbI-NCG#mA{^+E2?4q;j1FR?d2@ z`iVQmr^bky_*A6o7!Osnf`+Co-}@84?ZouWFMy0O?Y7H(_yLa|P59$)a1wD$-FJBNN{0BR8m{n>dqMw-gov$&}S@b~GK^~$es%gly z#UB1(1Bj1Rkc2G6rU-L1W4f=mE{Y2U&GG=j@}lWZMj&~XB=A;3rtRb!qSdQq!(WWF zre@Jq?SV*aJ9|ESSp4wXymXo68K|i-kZNJG#t9!kc3XKC`-h9Pw#9Np9X0k+E)-bL zpRwSSG09&cGfr^IHY&4oz=f>Bbei|dIz9U{R$imq2A$I9&)sp^d3~&7JbR$*6iOxR zVz1+)V*(H$?EvJFht6|Fsu=omkDU(9o_JbWvlo-zCtlw(B*89(1YR=3I@hC-nS87} zi8Akh8*MV(aM@B8e0{q6`IgA{pHojxwvlc(UJ@G|ZnX#|9>1WTisk!Uzc!4!aWJoK zYh~=UT&H>Ab4ZbMYg5OO6HVVX)axSu8Uxoc79@4$%m>;*IJ)T(kBb7X2@{Z}0myQ- zxR|lZSeBrETJhToTHGI<0=kt9shA$Wlsv_ADMz0t2tI!QIEB2DV$8XR=DEPE%G6z& z#&t--_FCtiI#2r;x3!@uCBAgK5Q5*+4f+USAWUvkTowd9hnPa|z z5h$Alq96BR6?CgKxB|=cy+I4yQ;Pis&muU@$&9-Vsob^waBMYSL%{oY%N-u zbP=|YYcB_IbsW$+v;WszAPP}L6-->{Zs|e-GoD(;@ID_iMLA&jg6Mftp?ly3aPuv% z31R}Xq1NhKiy_7bt8e1xkT(C%d05PNS`k~#H?*mvq?W3CvSJ7f?GKIzzn$br=eub@ z7b3m632>SNhp)1HXd`Nu#qK$s|KblbWMGGeQj+5EZ2L<;Myh2?=sPt5zK3!31znp< zQ@45XNf*DC;2n;~KF2aMYzkG7qY-h}byG34=)tg(yowacTT^?O*V;|E{1ndg1_tA|OB!~jpm>=%D`t?!wLAHIynoU1m2QrB6_ z7O+~z(}%EI(o!;&YGxG&W15mPkX&YkM!w_kJLjUM_4NNqj*eeS<7?4Md|I(fYk??Z zQi#!v6R&@;p86Syqv#T|)(EXldoXi|B+cdGtm?$s&2kbD&p!a!-nm5xNE}eo5ot~S- z1H)@6sbNWJ^Tla@bfv0U_0y~~x7jJ$WzrCAz&`u1v7XiiJOCAvU!R>6n{FpNupV_k z-<>86NpJ5i)KL0()!*pm@q1B|Wn3cseRZ&TdOP3C#DvHo0Z2KzpZn8Hr3Y>><%NkN zRgaBDEX6H5-hz;4zi^2H2g@>kQ;|a)t8OPOQ^kEW;PI_Khg2gI*pm^h~|mF^__2d@-WB>>(;<8 zmR~W3ohH)XOTL0LXqNjOE{N&Tj^uQzL=p~kx$}m^!nwxsQl}Bceuo~5O#SXAwV07&%3=$@=Ezin#g@NKCS@!+@tw z{QS4z%s>;TsV1?35%t)XmZ+vES2{WwRH&f9m~90JJ0m!c)5}yW51*K=b-m+72!ujs zaFCSyp*ivML+M$a!Zt$gn*}BQnrfQV-z!b2mF*!T?2PgJIJ`UVvL(`;7!7*e*bPfh z%Xz=#?*%IAP#e^Jt^WL<$RE*WP-OJ=vOk&CvSFk#;%L@ zt%l2Wf_mjTRq9 zi8@L40R(8L6?uXGMa&1-9ZPqN_3u0!T8w?lnRsB4m0BS$)=oXxEO*q%2gR&@yZqk($)b*_3_v_ z^mkA3BIR@J)3H}h=vCF*UvOsqoHqQ?w6afy75yjku$ zPP}(d;6U(^!%T_PQYA9Rb?Y*MI1U{&kG)VNal&D<%p1!#q3hZh>n55qTH=^er~#Z)vhw<+l{n4zkYSy$W{VS z?x1{0fvnjC2V`$M6KEhp4*e8$6PJp;c^SC+*Xm-`#vg;r=$F6JT8p853suU0yLT*o z=VATcrtAoDoQm2iCCL}-$X&Dh?hXP(wnjd5C$yyxvO3~r^A%#Fy~3oMU+)~`<6J4+ zTxF~V_WI!K86Jy_lV}*rN_lz`7XYOkzMo_W#U?+}yj-Qiw5h3m0?k-E#P zXMgU&`qwT7atma#P$Ebd=B<(p#gT8JX$CRSYD;aeBUD{glE1@TEI(G&>};f?3Y0)h zpCTkz9#HJyyl%Oukv26p9uL(c-!P`$*>SmuQ3l|LtD9UKZPi zLfJG89`0TNZDo$$OY5}u{mQ6@d#zo=z2c9&C;xVU|7q=Ij=0} zaL4K?ADm%@3as$GT-I-7(4_AT?JM7(mwlA3(O@G;%3@G|Y%Pcd`V$=f>}kYm*yDjs zn1rfw4(3?;CS&2pGglyslC!+@QZepp=;U58t4iz5e;zEc^zJYv`TS#v@- zKhg2J2#ag|2Z3iJ4oLgUs*S zW4iXUm2+|+0m!S%po0-(m|?TzGx3rL_GY_SM=AVe%(H@abl-yB)XrbCwem4&BMN(F zyYe|sdaIC35CifVA75^ypbrD>8wuj$E#u3s5A@XNdiASlL7{`kj6^HbFO!;7hztr4 zGVE28nc1ezrNx%n(%{fSNUL}aDO5;vb2t#%Q zzNduL+s1C_`nOh7uv_hMnWvY(^DtXh~K@LS1a0g$85Zwh2+HCw~=G6UHXQ7fY zE<{t&w>+Ye>?&Kp4m$h9k8Fq6)c;vYSdgMz>@rTCN?SqQ?KL4#Hj}mvRu3}QN3u&= z9Es!$ez^5g8*jE^%MwRv(WxT*BAi63mjrU{xraf!DYHefL=WkE-y-c&0}7KYQ;C`r zER0n#L$Wuw?d5o~l2N;x^{-)0h$-&5fEtAG)-Qag%4n3kf>n@6wNvFD&qf(pPaH z7l4dWs1KHJIyPg);`;EGXD;&?((k*&tmVxrD*5tii_YRaA>Ow)Zhj zPGqT~&pI8+yb;-o#TfIV16{9#NyU)aVsG?h-l#%E9Sp`VHru2hnD^5NLtexL+cA~& z>fz)vU}G&YFkzP&G}2nhn$w@yYK@^ef*eF{;IlVT{gLWWLTvPjNkd4$Q6p>ofRKEg?G##F*H*p>M6~qd9}B2BXK0z7^@VQgV?3McibcFPaGX- zfbf)?ebvJ;7hFX%qRiHo#m>;k$k63doq06ers-O!Y?d3r3yVAqe!BN7oNi3u%_r8& z4HgSU8!qO#+rRDFJ-7wbL?oiaF|*1uvKPI=q-qj^?z%HbsrY1lthJ^);b}$hAyDz< z$r)PATJpBRZ+O~v`KnVuIuLr__V(nLga*^`f$3d55KP*1ghuLq(_@D}h?lyPlNgX>{lOxS6|LT~AJcZApI=lJ@L*-kHEN~ik%&!Tb5*)&AT0BjgR)c)j`nO&3%Y4R)P$S@n99cs(L5Vw z-6R77&^moevluBXv}kf)G@Le;j_9;@J`RhQEPNK|B8U(^bR)1OuMp`bdidkzCUNCj z#25;i^(f!{AvtBVRzR`NF`VozSs{2&nQoS`&mVc4q3U5T&TDAY4<~zn_uoHO6WRwT z~O#vFMAb@|=6`KpM^QJB# z(tA+3tsr;8Z&!>~QFJI!|zhL?HU#LnA--q;YAmmYh6GgkPD@!P)(Sci@>A0dg zSG8f`bxR(h$^Pgvf~i_Ym$LNMP;%4|UH@9E-_GxxH{QGzjMIISpa__^*G_bDnGLHZ z8YgbI&NJ=hOWc2NONaiwpHjg6@>1co62bOUY$mMmkkH)&rl0K?me^2c+ghVG{dQsr z^Q+(zRX(eU4BSZtd;7Si44a zxkQIw>eZx+xYg@rBpAvY=1>OTchgc?k$Fge0tFNc0V?YY@IJl70Q$)BWUuUGg%MF& zkf6w!R*+ATRPY(=e2dCp90&@9?eJzx@^qs2y*scdQwzv|dxK(G{@S&t1is zxM%4im%0p1%A$#HEA}zDao`O_kYtPd9IqQ{l4!BD2-*iM!TXFtBr*S}_Bp=zgP{%; zBm7qh=)YXb$xzXJZ~umq{w8HyF#qwDu+lSdYypcyh<1OIocf;{+}lXN$S}Vq+m}Ou zY<_qlsw&t}w}M_&Zb#BB9;H9Ap1(gFS~t~cX- z2ceo+1Y1;(P`kf2;t@zCv48&l*xqiWDD$dquASlBU`pW)EwRnu_39&A#*P49tgCNH zl_elPx9p8%uB##P9-uOSlSRJ-#A?D&48cblw?p1ihbiU5dSFuK*tY{dGhASn7J_>n zq?9@@vcf+MINtk+bS``fgNwLp0&6-@KOSgWbWazokJ?d;tXv~k+1;+r9=Hb7HUNFm z?TnP>s4h%A<;Aa4`UJGn|1-9R9fc$~GX6(>?~=ZXQ?DY=#DD9-NbR%eUO}|oOrGX4 z_qIlL!1@?jie7)%>J)T1T162!4``uBN6LM&YcGWB^c?EU zKkMnPybD+rBi%s2(hZwElTc(3N;PiT`g%8WWT;+xca| zOks-K48_K6n1SqWWtxLh95uy(! zOAXmFDBLz@th3N=C z943wLO$=P~wCsn8R39px^Dm9$Ffc6~10{Rc>+#C?V(r%@Nc!;7wz_I16w#+|DT+Y!AJ0TFd^#3$Igaa|aSwz|F|1+g%yUu+uK&f^`> zHoCDB5tDb)nX;QsHuL|`6dPZ}Qt>;!u)G-GOGG$Of0UEJg_3T3yI;|47)yCjIamc= zcQBatszQQziivxYn$6<%SKU%Lwvg&@0k*&8M#gY z8lKzEPyHm3E0B5*@Rs}@4f>(jY5VDAh} z{A<_wi{r$)9fg0pM%Ap&(I>%sZ@DEw#NdEzw)ExqCi$anAt{H33#ek#gA=imFg$9~ zGoU?}@obDZl|-`UZ$fK>q@airT@5zQJ8$0cN03HPyc5@jk7x)0^a4aJX??Kfi6Sr= zGZr!#dxk=(Ser_;<+I~;fT!bUHba1hhAzy|m~Qxke!xtap*r~Kh#bLUDZq1P1I*#| z=lpVadNO<*KVWf?0>a~GO`Tzr`-jFVUC|jHjvxZT>=~FO-1s8yJQ7@^;?55 zHRHxoeyS{815CKlnIaOdpqi#YXiz{kS^s)(zgd+bBp$f1GFd%O@q|CPEZ-Jz9>UA4 z@2*FoK1+n0rHN`1@?)>|-zpT3il`<&Vy`?^fxdPsoy2C#Dv0}KppV0VPO#1ZhyT0-LckTr-GKz2a-*4l*d2t4B zpByPG^scbMty?SWo^%(ogSltvD>^C>o-hg9q4H3b{uz7Q%Y%ly5A1z3qHaG65+~lI zf&WIdHM*Uxmsl`|{@D5kp~{4lik3t>rad->S99uDlUN}f5+MNJ1J^u$SMt{PqL4rQopqjoWVgMoM z)*OC05X<>njfQL8^k{Qfa-D*qYPwafFiZ=(j>Ixi2_u8wBN8;Ts57j7(V`}7@qCe0 zRe)pZ!EKZ4m=6F-a?37hvOM1c3EjFZ>jMP3cM6 zs_9&!Efk$(8+2L}$`$uc!HH&#al3$(?_<18ykYrN?byXstwZGn3bjYo1gOUv1FU3qfy=S zNl!;++jJb(uBh!)hU8P)o|Ko=ClHOz)uB)P4gtV9*SMO6sdIhB#5gxI4q`6#`K<@W zBo)rYafxC#P+ZW?&2K4yyN*LoX1%RfF?>{6ssksR2t!-$qZx!3XL&Ic-HtaU^x&Gq z=F*WPxHo3<{QcckT{SQ5RYm@gjG%`MTLdm)7SF2jWg-PjLSBA1EQ#yF(ML8t8p4z# zgI@wnCBdy;+E9}p_idB~eWixD*DC2g#(oU)Tgn`nl5xxvGv{gWy+-60Y?QAvdX&dO zWXi*#ZTh$UZn+u2#ZXu8G)LL!RXn3^sb1Vvw_tC1>4>e|y7q*^IrT-Hu%Kr)#S(r`VY&n+RKMY=K;~Ua z9%CNj+X#q?> zMs5b-ro+wSKDYL?gg~6>tBe*03LY4J(z!6}1pP+(YffYl z9|GpvH9;CL7Zl^}>CG(=Z4T1YA1pUN#z%v*y41D>{lC675XFN`-9TLOmT&cR ztqpuOZea;l?Ed>2sf7{G{NcK8Y&IhOjbgfdwB8aznVDy)K*DkEs?2-4Aq4?4CbsOK z1X=`T0PIJ5YZh7R4Gd#$;q2cGrA_pXYn=RuFG zu2B3Hc9oI;>2?!c-b%{g`{?!;7fn0Jec4g;m)dL1%qN1mGP6U?tT5l@*OMA0omjS%VxaEA^#82&NU)UtzG*!Z8 zP%KDT@?L7gFNp;S`tpe#e}S=U6vbrvleWJw>chf*|L$Z*aQ6D1GZIC2DbstdLVach z@VotyM<-Yn?}I^vlc25SC#zPCox@Gxhe4~J5TKqLdz$Vb21Oy+-dn&)JA~Yq984KA z@zIWpq_f)nI5Ru_(d4ZNxG94-)B176>MZmY-Nq{Ul>lT(GTT(a_X0FA?>Z{~X0*5> zyy&MePuCsP(7j;|JoCA&{#ux+`fct7ghO`=-GCWjj<@z%)A4cbwlMIG{t*tL{nwig zUC$SfL=nf_zZt7b+ib!u=#@3R2+Q@ft`4$lB64GyrNN?Sd;NTa?aN_x!1c`;Ot*@K z%xM2t{7$nAKadu9oxwN0JwLeBbw@gu#!@QG48Ubs>oY#D5xfQd6I*A^F3S$QN9`p- zuE5mGB5x*rPb)lfv87Ilo^mS(5!ZeWq7<0q@;$@~!icaYw*VZaI+HS!b$0NU$R9|+ z0f6GYdSb{O9g{fkw>!U)cizRSnwC)8d4n(f(7;I&M9S*}+%Ihye;VJOEn;)b$p9h# z!Ze)0&EBFdl{}>|Z^CYj=f1`gZ#)*leEmxL*FI5)D;l6k{SfS=~`ZOT809 z_^jW(sk}kbv%+(VU-H<`9AR@P%kXN)uN?{e4eReO@QHet^|QwaVpd7vZn3Bcn5YpT+#ij1sK?N?kT%R6KcbCR-~MD_rz0vW z;jFsiFE|Px%b_rBsM>g9_Dgn~uHyUio!BkbnE@Xp!QgQa3;Sd1K@*Ba%x)ZK5)w#- zbNY_w&?7p}c|xS0*||0M1X+R8Hrt!MB88?Hx?*|FL=)zsu$GpEcE` z$Uog|C26PtH!LOoL9QSxF6857l-caMj?JP zeH7Bp0C{yYeh8XUy?a9IC3A=v@g}{07Zu#lmXt7o1A3-V$hS)@G zY8e$56awqr>{`KQ!GXO#15fB?$o68%^|{e-Yj8Saw=P|r(A);3&Fpc``R*e8;`Lce z@I?X&J}i*GVNzti@tJ<9qO~!cwkf)O{ij7BE3rZhMLu9zDpsf6XiCCSpg~J)VA2)^ z$0v5B(||7#GBT0wFC}dwEvq9Yy9r2UA(UP5c2^qvDye+mgahtjKI^(yb54HnB%qf6 z>gyw@RTc{Y=4mj*MSXW7UcKVtmew+W$`D(Co6A#zR1jbLREF2bCmE4TKY}2~Ev62| z`y{rNc&_j!Fn>LLereTtrAfzwmPuenmjV#vVFNw4D)Xpi^~|kbNzh|F;X$F#8+0u|4pfMvt7`DhbrsBOvhlNG;Firg$WylAW^TwJz+&N22bjFFrt^b4X-4RJzs^#6 z&~+*{9!lq#8kgpkLakN?S<@PB%Sw5!4x%FfxJx`j>*DbH$A*PY${LZu{9t_8@nyn_ zPQ)-RVMZRSMTL^7Lg9kLASC3fBXx_q-vqe}0+vTDZ%BVqTIRD+X1`&vYF{ynsi{Sj zO-W!|anY$f`abE=cO(|;rq}%J$36+jAmz{)MF_r0Q1nTI zF8D^0seOxd6n2iL!vvD}#wV`L6hUHwvk`Az^oWnFSRE8M-zl5R&OZ%wl*oTN?-_A# ztl`W}k`gW2P`LuBoLqJeS|XM4K;?Hsf`aMibjfdrhH7H(rZzqeEzNQsfM~%Z=@ZjL zxEFfZogF{@DtdqZgw?F*Rn-hn!R-U{;$Nqf64nw%M<)FOU{otylR->l|D|~al|Ver z>={2);wxs#I`qbr9v4b#yx*rn{x=J-VnGdalz#mc$J#fH;B}o4I@&_4AR_tYOU@O@Dn^j-B0Mza2aR%nQ%nOxfx=NU;{=? z<%|M@#-dg!i<*lV<+`BWB}4e~V>tV<1o35zPfk@_fKmrQ2nh5y)pZV3xy1e;P0aox zO@hqk3-aUcWESl6cPFdfBmd*w%Y~uJP(VhorFc>kuyr!pSVf98yIiIE`YUe3%xuYR zdt8w#*9VGHYJtjuDx6pyG?s*I8B;yPF@!On&L2jx9892llRS2>WBZ{V)?TCQRL|Ic zf%{R_jIe4r%#~lC4&58wiXhqdWj}WkG}|kZ4$U0R1WkxsI`C`o-p??pIQkLY4B-Un z^&jDLzVGe!LHN}t5cd16pN`@{lx#UVRZ<%->ySnNIXUeROO;B_`V+;8$Ayk5bP2z= z2B#&vh5X^tY45D_Hy5*L1* zN6mS0f;~G3$8?CWxcCFW^=Vg}tZt<3;3NO`Wp1a1yDxh z##|r&Kx=OTw00i!{+!j+(wUmNy1FuESAm3}VdaPjOyVl(W)2!(c61lD`)@o41Tr&DJ};!rwUZS)cmaaGZ*Xa&w$rLbDD; ziihaUXcS4GX00sRZvC#aEo4z1J{%3-SKy~93oHzpm99(3fQ`nbXr~k|G zc4oy5873{1Mzm)bTK5!Z80u%BB}Wr!&y+QfLW16%_%QR_{N|_U+QPAUYSFcG3!RH~ zKqbQ*G_$5($Foe3c~2=M50f)nThSI8O6zYh9Wc&ypYdg#8X$e=F7Wgb6k=oklvk-f zQ`sRZD6mlC{v8G4w>jQ|+cplNnK7JJO4s*USYEwd^G{IMZP$8`MsMCz=<3Zz=YLaq zYE6vg7+v1*(<3cX26v8^!Wi|d7_{2zneXNcwwgQRu9QYi8tuf!JFMOGMs|evHPZn8FimLz22B) z9=IH1a*EB*p;9jVm6oemm{Z*Km3iPdWF6i4Wa(Q@@vZguFBG{VIa=6qW&DpIg@zuD zt%{cW*%s31bZ5Gnrqc3lT|wu0SgdWQB+NOAzFM~BA+9Mw?^6N`OElON*83{Fcj~9M zRmO{b){AW;G347gywwr{2F9L34<)d=Qf=KynZMRO#^91iG?cVhCU}}idNJ80VjFDt zlzdo1l>InZl}pOpSM~j3H%ib zqon%xJ~@vP=O1R-+MpvBN=@5IN#}>WI$LcB*yqm<*zG6?vb}H7#~_fGiH2d7k2sNZC~AM zQGW;NjFSvS6w-Ow*)*`lV5m+Xe)E_1ulC3bWzCx9MKF&awSB_iB5%q0jdRWC#|j#H zc)>E_qGND~pwp*bxRp&1H_dmmdx`2nTIvFQ$pnnfKkr`(w-soyedS#%_h7j?oFI#< z_|(RatURfkcIIqbKgb=-KEY1o!&aXB|JZxaps2R4Yg7)yJz>Q>z!Z&m+j0r%c( zueIiybBr?O>#RbLwf5_7zqN|3gq@ZR}KK zrQ?)LjQlHM#jUq@ATFsLh_~f9LF!Py4umvc=ald)BcwdA#R!}C8a2&r$bDPm83Ig` zdj*r*!Jxt%r?Y)_qK6GK)y*z3)+}w-Bcv>N;)P&x)&5$FVy0tt)U5;4SF&6@lFHHk z)(~EwS11*H2{IhkgzV3>Uqwg-WL*bs_6FIa9(-qbiklGP%E$y$XX$)uP@g6ty?Qc< zMBuB#2F%hBCuY8%cqr3t%~{b*&&JBa?$|c1=@FB#dq^$GBgu7W;eCC(DYWHPs260> zw9FItn}Qg$1mLGkMxyoMGEsaK^m7bVunCJogr~&}z0d#!tlZsQ^W)i4=8jT}mPwXO8Vb9GgtG>ynavT^5 zoE{>k$KsAzYnno6^JYnN^D7*u_9p30d@r+?5j(l;^#@6k2v#isNFbt4RxQ{59o92pHP%KIKwFL}A>?AR%;!eO9Vzj3}GG|=wYE&Rt9^7C90)`(L| z8vZU_(Z?!S((rpMwwV?|TJw9khkec|4;&&iw#(Gc*%=`6lr+^mlybS#375xUt9LHY zvq8-Cx@u=c0L-KMGh@tc`(=;Gg9LAo;_l4gLBep24J;ae;rk8XSgbpTIT=wksoVnC z?KTy6hC>giohK5r*MqF{q68x+Z1TPr)Xs;dQC8tvyj%}bf%!d(xNUj*AmW?WJ#{!< zP2Y!T*H1e=vR@dw{S!jkKz?#^^0{*K3WcR?v5vxuGA`?$WR$SY4|_pcq0IeuAV;xL z@)~g7XcQBBBhDr(UWM-c#CuOnj8vFk!ydj%eHt|%iKoskCF2o$eV$fnR-V!Fp^_f? zAW<|dDo)bDvG;rzPtfslw#`hMl`U9@J?4=apI_A%jF%bKrv^mFAyOt1OxO!jZ=5!A znjZ7C4u29fJ)X5m&R>a3T$Fa$$!)Tkmd` z-l}-rMfc$7?%35&YE#yr26e>Y8|<4=q9tVxC+q^97ErNm_%#6ro+b7x!vqQ9WIFcM zo{RhZsu?2e1g?@?TNGiztDIM>as<5C1@;OqgnDwN;?06c#BnkFa zyxc%iFrmIwQ-^;3Ly%vh@8~W|HF{e&V}ei{3X$F$!2r{B1~VOvH^2$(as4}!-{+8W zla}XLEHeF}HJ&bm`FpNa)xkZ1S(2H(I9g0JQ!RdJT9oqkTBf2Upv!s zk=qmTxI`gUA~dznH`wlY8+n|466vRm?&L_5i!g!Rv^e%W)VGk@`?~9(prg0z`R?{l zUfErhg=Z^_*<0zh%+F7TP~%379pY-{&r-Gk7RZFwF^>7Sm_iBjbBXN5%)^jv^-n( zK2@brGNz|&-H@zZ`ShBILi}NX@HKT;krbbo!M7|&l)mq{X)2R}*c z78$800|RZWO%1Ap*2$6t5dQs#klO;ltN;_!bY^0(Ri_Ayw*G#(;H3Kfc>%-Cxf@1l z#c=ZxeYYdCYL+EDd=v#IZe=#pa-Fw+q$L#+Y*7nZv84LtxH9 zsYEl>Z%?z-+M=s=v+zr@+lj<{{fn^!&$qv{0t%N7hY&SLCB zobK~a(lw>(*rgXGFptSXMRM*hs?@Xvg$=d* zcd%Ko-*{u*C&tafd|GZ|Nze4|1zXEjRJn#~8aF**=`7-~=CtpA+EBiFDKmp`13w4ix98rz`dGvZ_y_mREffYm(?kB?9wNl z`o}jCZ*a>8(?byYDx=r7`;!k_-WG44?hz%VF4)_UJ3s zUe|^0v13{2Y&3MB&~M|*kXNNR%c?wLmgn0=8#Dfm&*M_&LyXy0ErN76 z0LS4SLw$0saj2~W*3F~$#1yK;Cw#xrS7OXhXH z)%exYjm{!Xe<3F@J~=E4yM}L)aorYEeL1T`?Kw+R<1!W_I9M!?jyLphaxOi%@#i4k z2@&`)K~%DJ`z_sfbh!0rY<=1ps=^!{LVC}{BST@|K1)O*Rhbdnn+Yjcf zrrM)nQxuM;-o3wSVa#i0J#)UqPRPWDH(Xt1OV50wJoBLoQ1Bdhb1V9DXqWXT2Okf3)*?qpKE5E>! zMpds@XmuVRQE2Et@0DFhviA`TKz?+j)0O0;dSIFOpyAR&6|MG zPS8Q9W71jJXslE^M`d0Hty8!wM5U5``p9Y7{9tsHkuS?jKn*W(Si7htiEkk%B-b++++7CDLF-i`yk zKXc-hYs6k56Q+jka)&EzyigUkKjD($>6da9J~lI4Qa21wFqKu%&9dL?3y_^}v&fSU zl!0;W(e2bVWUnGEQe3-|gbr38`zIB2(%?BB5`WB%pUvI+w8)1i2(`}APKV`Q<~7|c z@IyZzsF;n+zDy6x9BN%ZeYH#Lwt1sWY#$_mf_ZW33#%>3obQX(7&Q)7vJ5*!d!=RbKf%{ISPvAL;R|c@^Ci$rdH$;lh^( ziPwm8%>sVBnF*_Nt=>3SRO9Sr@3pW##J5Kc(Or+ZYpu{IcunK(e_8p!tLOFc)ul$G zS_X=or|agbkvEOwq+e$$WS6q#cs6F<_gTsMUNN-R^VvQH?0g@~w&JC7aViN`@=rdn=a)Z^!V4i9q%6gxEDTu{_%|q#7btIfV2&QVX1Ugq)&0s?#>ZIq+puGCXa*zf7TA@>KnslnAkVot zhP^Q5s@4^jD$s!c$e*}?&U4arWpW?!*1DW_Jo;AVKn>T+_VKyAshFaV&%(>h0;UX+ zO6SO%=r1onDO<1ZSSzD>PIdFKk+^T5U9Ix;miaGC{op4Mp!sw@HkuLZBH$S^jKgWvYGgi)3GsN zge-PIU+P3q;=o^s^I!Y6j|DPWHbboSc+y5QZ;>VaM5lW5X+LXrI=N_cn{#J9)f!6B zl{&D?9BB15YPYOdUNgB$ukcy-b=-O)HqdhSY16Q*M4g?)L`nDkp9~`oMbH@L#D?(4 zW4GKITkhUvdN5(vp3H}x1(aZXfrm$mzi*JM7r~kM%pyHcBp|Pi!;m9BsE!8~Lq`U3V9wHd7i| z1(RRo57Mm3%QKVFxav8U6?dlyzPXF$bbq0Vn*%3jNjyLi-v7D6+g5V2%Ahg-2J6YH zfG1YFp0u=+OSaP`_0db}^iKALfRo-?{FvRjyJX*ysX+P@l>4`xZ)2f=+0-2I4f6rr zmQTX{pS#+C1AJ)wqdu_%v@7*J_s#DO-o?LtQcCU@B-pWjpKjZ)WQw5PgbSqICNFf6lBd z2KhqovE3H!HTczdpY}Cxm-~fWVbL4Y#6E0`<0Z=#vc!vFJ zoi5_3#zoGi}6uS4|{US@PxE{xD~)zm4Z-B939C(7E7P78}X5=Z!7 zq2eteR*D0avTlGdhEt*p!Eu2zPnRn!Zq{TaTT!@fp3wM!(ZEDhSvd2R{lfcN7w zOW;SXApunFjT;EG~rnd6DPIShNN4Mt6%rv?iYFga0=6iq8AC?ty1GIqDIUZ;X<>OFU3Es_HQA zg;fLcf)v+fjmoJ8!h8aB(!WeRg4^4h{G^fW>~KbKz9^9??~%wdg4d8UHfww$iaklJ z^gx~PJfrc*Vf(I|ggw+2W3lRLG4z-k`OxssAdskl2!{vjfSUHuQZ;g+3|JT!j zSW}+s_fLQwxo9gNYs=(U2>OaPL8YnqYZ4Y*!6GZyu{k*ozDx&UY6Ep{jmMwog9=W( zyF0(4%-^;HgNKSg#zb8{eGMYlnEVoK?GL&h(Wn!H9_-y*Zu_gU6;m@!&OmJAzWEs& zPo41bW}wc(c6O5;^^gj}&%MS;3<_q!kORPpAL?w9|^yNtg{ zON5ETMUY(Yz_*#RI^PlVa9JcC66vywMV5>S|t+#T4 zyOe^`clOQH2QbMfxsb~;g}omc6L2rH^McmiDtT5(-gCS`I!f>)%dUqDVu{vYz)CA` z5Q{W%P&nsn17LhSm z!-2Noi>OiLA1)2&X{@BpUs?bWoNESH1_138(Y*hnQro`=H|to&L%a@p2V(oNHI(76 zV+VtYfaFSf+Ou^)bm9D!ySIPiFa%h^RI1kM7=G)o4|tphcT>RQ7%`mJ4^~1@Vypg- ze^s9`h4tkDcRyG1JG5qosTP!W;-31^W#;mt_EHMCp}+&^;Ve1>jndEvu$PW zmFWJ?C=0#f8Fhc?!xGIZ-$9UF#vPvHPWurz=fV}LL}`xdZ^{Tw^!o#q4+bw;#5$AR zbiZ#?@>(P|1;-`0t-FlySWIo#iC5by*`wClJ0C7+Lz)ox4H@Glf@5JvI~>q_`}u^+ z9e9i#JZodle8W1<*-K-&Chi*3p67EH!JHrUpo4zAi6ki)+7s%in)V8G$=-O6W8Xfm zhOn-=$ur?T;FW2ni?FLN4R=^F>oOgxuZdmU^E~|u>=vm0eHS7DA^L5}el5HNM#yC0 ztQ@!f{>`HKrG?JAJ5NYsnP|<|b~qB-^O4T%w$kHOhucq;YQ!W^r_l&T4TUVn@qN6N z7#6*+tU6BNp;M79=?Cl;vr_gbop#b8rRbr{9JR(0TwXNv@seMpF7}Fg+RQ}UbLLSFyn|F>SDV$>1JcabhC)Z!?D zyV-E(>XYK+tb%&s#09k9js9hIketA=RE>gncEZc1`PsC}c)5*J46LhMB|D2z5lEtf1xe=OVNo!kYx{3%V*wtL=Q7C$yZ6IjP+qTj@+|3TloFO?;JeLvTI5 zn5=+VInxv_FFeSqRa%cP0F|NSdHvemrF@&bQMo-9SG4RkXeN1w-9KDZP zwUZE#g+1=9na=ZIwEr0@y@~>}9t<)SKZgdiWedw~;zRSYl*(!nJlZBiu%wxMNMJBt z8{&JQjrwQ_-b$J2=vbawhP5E7mbMJW(^;6GA)9ChiW^#X{{YQlxSrkOW!SZ?-xM9d z$uV);=PiQq@Y^Sr@en$%`JAD08~~L|`nR(|b3sb14(2xhaDIJ`aCCT&il>lRd2e|^ zyt^eD|BLBXpZmebMM^y7yW!Vk9FpVoJo@pKT?O46iJj0adAg<+W-)AW&Qclzm(-*MKB#)sBB!60G2S=)UVr4&RX5WuTWA}E&^FXVyL@>z#j*c5_*J>rt{4}Ucn2rT(Apc465z?Db!NnT&)@FKJT zputA){}j*ZATEd=I{;X%@#Fu! zqi0SJXda9}4XLKxhpUd4sW89}x7C=_b7?GTgYd?Cr$^y89`)|ha5gIEDRw?JK8j<( zU#{9=|C|pxG@4TB%(1z$6KBgN?)yvKVa@bTM>B6r5v#9z)q2x^P*5;()kF9SFrwE6 z9zOdNg*YWyqWdmM76ZI2YSn0^&(3HXWs55f7t=NB#<+}(e3t~-DnGr{DoShj$;>Vh zM8fQ0Wny)0S5F^Z$6~<_`}T_t#2l~Z2tHjr-^2!?_MGkIW0pdAuM0}NKwOIrj_!@R zn6LZVum)w`lNmu?Kqp17^{k|rftsJ~#qmSe)z>U32u{%0{vo!M0G_(kR#fK4=ZN=n zR^v{Wv^~{NzZ$njx~;7Qgu*mGJlo44`>Z@oiWisVJvSt2+={~*dH^82MBD|vYZP(5 zI5|r4kNUOkJ88$&%5+j|&i_=PK0l4IlI1I`=G-f9;v*#x^*tDJRyfmkln33v+7{F5p z6WXCx7pan~+5n$oVzvMfTIstAQddQ=SX49jjM(RT&>Q4w$Jnvvw&iK-u6leHLreRD z=@*^Wh8n^?r-5pJ8!;wWt4es}F`)lDz47L|B$ys_#;$1+3=@Gp z6galmVRAlTEQ3HmN%X+xVmRj;^FdK?JRWdjc68{U;X{ih7RyR%w6L1;q{TwAR}eVS zX1v6suJJLOFK#y2=MGn!&{PtVdk>#xnUo-d7D#9-l9B~XQbsqC<8Uc(2%lE2d-PoM zK7hBkh6(Fe$TG_CV@dPY(XBhIM&E0bP3CI|xo#Vc0R1jP6}LHrk7oNV8)I}?=JMpH zvG62*kmr7?UusGg%M{Rp=552onXK|>Ry1{M#OP7AjjX3Nbc&rR9u*shY#6J4Ya<`O zyUcR%Tg@$@-%)Y&lbF`4S zM>Wky8kTHu*U#ulKq!yAaAnsq3Yqv5rEK+)LT}16cCx4*-w-;|>t^5eVEn0`Y=WzS z`{a}dN=sjc7$POCJo}>ZYO-bV@JlrYp*ePH9M;i^@}1o8bU&UNbQkEq9j9Hl8g~o{ zR$+dfGME+<+K544bU-_9no9S!EyjeV;Em$F#f|5o6-5Oy=G%5!F>V`V`bsEm?=SE!TJ*5BeLpdrIOj}RA@_zDd^V5Kdnuhsw8%-4ySkr#m3%QEW&^(9UmaJ*#fJzcbTl_!eqKnO2I2x*1$g*TG{tG7`AtbI(y{Z2TpGj*Mxd!G+dV;gzkGV49JKsd@qf##AsFW@DMjL*haq+b7 z+gA^EKx{J+7~O&Rdo}!vss^|TD?}wmiree|X#+;U>KcFKhM_&n9cgYr5+4|2Zq z_ipMW;qUnOB#TI1Qh(X5Ci7bU6veol^TrGE@q6lJ0vaQH%sc-v&H1n34RQ`d!#>zJ2i$K4lopz4#&QdGkL^iF`gpJziU+RPqeUV{7ol^(u zWAwq~e#Q0ul3#=@edjr1b#Xu9D{(a|ki*+b*TH*l>!6~O?E#r}{5uVV!mzb*FKz(- z@Q#j-&TrJ7^6^lH#!AX!uC~8EX_EhTy&~`(`H3?*26Dh+S+2)g`JQ^Oz~{#s8U5QJ zZr`!KdU|LWp8Otwe(lE~#aq9d+Kh*i4K&=YJt-Z2ro#w+Z9|tgezs!nSzidO6H5|{ zm)27N`y`Vwlg$-e`!2a{* zMYQ=mH-eiC^t&%(?#Twri>t6E2?CFM9X#&)*BGqQ7GIy;LqhVe_nlz-BvX@J>g}Cv z=+lqA_(Kkp1AF${TPP%;+^OuBUM74ys3T z?^+1_`kxAQf3Iwy7^$1?KIQ1QK34Wtk2nve;VFxIzvJ$~G}Gd(eP_zE0RcsdfkDuh zGd$;)sHn(>u^=wx*f?)+rk?DR_8WlLZB8YBhv4)P@ZT^f z-#!lh-=>3Qtc(vB~H`m6c}0Iu#0 zV;-+|D_hGzuE3Bv2eTBKtvsLKb}Jo3p>hN~hjZPS^s7P6a>L`p?@ydYlbxqx3RZK= zrud{|S+6urg9YN1ftduNf^Ar1a(`7!dA^b}szPOsd44p-LpIlLP6>8sR_&X^kvNta zbhJ^Ye}u2z%x`Wfv?|=_&i~qPNx8%|4{dpas}E|ke(DTJ_)Rae9QUR+xNGhvQaRU^ zZTxM$rJHF&;fH<9qI|)FQQE5`ZE%8>KwXTVq3~^}w9M!n1;a?-!bWMms$>ajUCTO4 zCEF~;V;}IX3njzs#VB`>`YU5w3Yz+io=}upO;&X7E1?}_J%-#a7ENcC0uG>~YPYW) zcgh+NfI~D*yeS6xbnba4E7t{59W1-#*Nc`9lleDt4h4Ym;`c!A7HyPSjejMe5#p+` zY=T~t*;_7=X$X)7S+0{E;O5fBr+>d2sWNYsqn<+e#D|yo#j^ffFV~zru~-oCwk;pv z<|4|f)!XE`?>^Py0-~62u57B!y1FAhcMPU-dMx`43-tI}H$JxIo;h`1a*1cs;&c4G z0a@GZjk2V{FS2^`w37shu?ElOFBB3LNS%g4Z1L1NjyL_uv!nSAk@C~=3HkYa)WZ`- z*DO7UqP09fJhWU>+!>zsN{loGR6=?3fY-sKvjjWYF>)mz{veTI9hON^`V!_nSZd|Q z?Xn$ByQQSS_nFZvxM{{xPJQqw`T|xvUNDKBj@wRW*{T32{P84j4WxD(RXA^$?XQiS z)SLc2@;>=Gff6%&08({pZ>$Ki^{?a&W+hU%?G=fIrA5a&E}Jh$XA|iiAl5xP4v|+n zVe8dv7S$PZgpN!4Wk;SZ&snbOfc|0Hb>>>-SuWMxB1))KbhKb`2zfZ!{d6m#Tbu() zQ$T+6D96}p$9URj-vd49G*)vDCkH4TN9~t2a|05FGJ{+W3Pe@KrTMYiZHne~jF@8} zFhhMDRtX(y`(qhyk1m%>>co%>4HqwByb0B%T4GjqENR~uoSbf_lcekmL&u%nBQLwH zn2wE3fDVZpBw~kpd#D?n`wlVd?VdAXjka{IW^FI$e4gllED zo5Pz7whkODosU6dpfL~g!rZ`!_xr%$CW74TKFg8KEEmvNj&whLcfWnocKR32)lTX@`Fjd}P4{cr`bAzCvy zvNWORX7zEjf|oy7K-g-9777ZpaJ%JAyGL>FpWL?|EeyRO=xRBk=PF#waLqw(yVVzW zp}EYlDswuFJhVNQO^bv!i6>0TrM;bh{jo3dqr-zEDWRy1ZSzyq^sq5#3pfvIF19ws z0FC0x;{ihS#sLD!EH~Q##v<%femjiUQ@}adhRDnFl!9klS_Z+vKG@9xDev|%eAWzl zZu#q&9Bre1E-WG!XuLK|YUluWa5!xS&M%)`(t$dDLl2PWYH?) zo+h|OOi>`9mYYJP;HZ-5wEy7a3LmEipz;j?v}Z6B9S|xT!!_6OPSbG>iOjZQiERy9 z7Es5MrXBrObAHt#d4>PY+e84(`!PcXv&QQ}5+6@?Jn-;&XpLNgdn}}EJx@1;cZ6gt ztK?}m$Rr7ja6Kh_r4|7y1r6F23dL6Brj^kZ@cTl6G@yXOKx=Wk@4)J zq*JPm6A>^k?TG9tD}W+;7F-*~yhW&TtDd?N8j2AD$gO&W@Vw&-j~ zz^#W<>pP#6x=YY~C&$ghZY3+cT*(!CqIF`AMMYR}F%E6a3Dwsbk^;Ep>k+7O?K4n75BDHK#I)#=VsMWGKMnw^oK_lTgRZ?5$}@#g5dn0LvBC(DMa_y{T?nWp3GZnzS}<@PzyMerUjR^E`SyRJ_w!4yoIDO z(1qTeo3p|UbYX&n=FnS?76X}9K;80k<<=1@%Qlkp$B+taWTMx{n z(>FPm%etN{nTAsFOM^CU3cLo5KaP+L3EiN4O@i4N4@*t1yYqVaLX*Gna1DBY+;7LZ z>hV@%)Rv=fmwwOt4_k8^HK>%OscNsQ`5$!T$DP(EI=8RU zxppQ$>K@3^Xto@W)eNoF^E_(0Y1^3TS3_{?@c^rqlL-X>gW)re%L30B-RY?sBF+Ca zc9FR&gWcLAGa^{_)kAKsf|Zi7F1Z`tewlO12LpUIqKW_ zPb{xw-^P+Q3(&iI)7V161?4FA5pL`hHGeTi?4GDp^Il?h`ko?Cp!(*V_lVmp{i2i6 zgOl^*Dw`p0rnSd~F|xV<*}@J<`!4Q1O1{tS^cSws@P4fkGFUb0FPbJoY0gBXz2B`c z--D^vWsSf8j8M!q?lW{;@9n8qfFwLdCj%H zS}qd*oS{`Jx@Of8(%;SBsaeYVvR$RXU?|6h;u~(x$&+xNXQ8PEck7Hu%3SxTV8t}D zTEzgA^FH+c@#f7-5JF_{PG7nf=k3_voUehk(x^tmExb0VGb?|`0XveGok1?iD8*%7 z!{Ql@;J2FES3ewqZ*YZ@r<8Q}p?w!8u#Zr3W#qnKM;@x@2_c14UF7Qz9*@zxnp8T4 zu6saA7&Q;t2KnGAaFURKCThkO`}d@zu|si!Djcas)5`1f4h}>YXo<~dTkdv_l~{CwYDdQN-FlGe9jHTIzD}hRe@3!XMJOe5@niVU z2s61lh2qeCru)x*19swq`=sfql~Iqj8ke@LbOyqaxo9cN%FX)V&gz3HlaG;3t0Vfj zw-=~FL(N|~E)NXySPaqLspe@};GeE~;32y;QLS$R;op*;U##Oy;+qGSy%~i`;7Bh&#Fqh8@ zR#2S&qcAG|ub=uFYp)O1$O*Z`x@*!byewfUD@w zRCDo{3cMiXsO`rD1WQa1$xn*rDdG$Xy5L~1lock}qcTmsz9_@wN8%XGw}?X>Bw_6( zb<}SsA?FfquaRBqgRKhK%~cC>C;6e~dVKZNtJlp>k+Q_v?0uHHJJ;qHE3V|QnGd(R z3%ybo^HY<=tOfqE2qlsaNmm{%U+=fs{NYqCo(rg@&$L4$lH474P6sG<@YNA;qFZh= zW~w1}r*YXYT8k~mTi2C(RYGAUAskVG^buK4*IbRi7bt9*a+r`z4qTLQWMY;cuQ(|) zpKfB8A0h;C2Wewb-`9W6ehWR;aT)hHQ5FNlJGYO|@;}SpIiB7a4>mfr<`Og?SbR+u zmMC+uJU9$hV%K3w@J>IV^Lw3G8o_zjR)loT7hm1Ao5tfO!-SNVQdDNzDS7U!6^Sj6 zPh7!|jf`4quVWsnE4v^*r>pV;1y_&z^K&I=A(HV5sdSvL6UDjLo}_&k1CEr{?s!YY zv)S$O0R-dh@{{H;9hr?Obj}MfeJTAFr$^n7@H_;MH$Rf>vnV{P55`HH$@7`}rs*4A z*6Jl%W6mcj^OqJNqVCfk`Pb-<1(FjwhESSRt=$NsPxk!}v(TvNhs_7VK^ve0Ujgkr zc(pBM7h-=tUwS*W-^!Re=3yFgeA8y?IMvUwDHrD($TyAJJhATo`7sH2LyMfMncaiiS_QS7C zZP=>1On!02mWBs6j0{)i0_{N-SBdrXAbeGFa|@ORn^|#KG{DXJ)~VSv%@X3BevesD zkkfRu)g;NLiE+b?G085B93IUzg0PUwMZ_^Q(SP8%9$xw$U+E(e{M|MtpI`;b8+E?L6vt6Ae0 zwoO_PO*vS)4~JJ5U_zcP`y;PK`VBw!{Rv)lB16i4igt z{13H~4w0rGJtkaNtng?9Xx|;nrUjJ|ZfBq9RUO7^uT(fZVVo(i0e!5}v{#s+vP@A& zc-O}=f?Kv=ac`A@Df%`ytZXl-V6Lf0{Ib>kWHw5E^t36UmI-%IViK{pGCcis9~Uo6 zfL|hgjuGQF7#~CmMl%%Y20vWU`T-8n++3zZa{a-9OKO4w3$vP%YpQR|ERBn;H zb5on;b8Iwz)kQpYs1wq>=atq$TjfbYrxxr;BNr-Br-;rw-KC0tC$wlOv9LaW(lz;n z7)btYtQcgHV;sttrJ1m$i8ZpK965>Am5e)hubc!G+Y_sgh4)?0=oDxluo>a0$+0Zo zHlCljZ0V8r_3pP3r23Qx6Zw6U@xoFkwV36L%P;3lE~y7HHhFk7NPW8qptbbV3viGf zI~*-G;<|TbKBp{&PeoPRd@WgzaKN0|)Sh(jeMZH@uZ=-0E_mw9-`8!Rba+rzNr}2h z?-?6W;=5AB_Pk|q*+;!_N8G`cR_QuLQHvl)Xo^BxT-m<7E-@=EQ2Uzd5UXXR3JpV< zpv890wkQ?N4<~W2NtItuROUgGSG*)DK(9HruXF>m;u$*eHhMA4^SN8mGIjV_iF8pm zmuVrmf}`ClRCwZ3AmJ5_>V9Im>?MIb@_2txbcRIavm7q#hB6Yxdrsm^H>1p~#PFgnQn0V&txJi#S3knsQK`i8A$OTe z@Z;bwrX^oQDXwR7 zP%D)bX(#6Zcg3+@d+bAzZcSi%eLQ|5OCM9ViW|zSsco>M(JUigbxmOW^kVo;s|%sm zt@KuGHW~tO@ztR-idS-~!UmmtF0uGBnM>98>puw#r0}3|ZB*B)%+fxBs`f-e_?G;X z*0|Ddq|A?LSR zpFoyNdPd(7YRQJgM_EhS%ufj}Qxc&Dg;uQORR$~9A(t{zEoC{<6A+7~ie%(3(*>SS zp_#`zsd#6t*lAliAgy{*`2<{Xv1(-4u_;8E=)+Dy4bFsAU_g#*6pSLwGniI#zqC^%Bg@PM;Yll+#UF77Rnn_$yw>dS2Ns`}UOuf;*T&qV)+> zQm;Nks(m=YAVtCa#`B(%o?IBrGHjxc(>*ZA_bh!^sn!GNtxy)#LjUiReA$%;rT$YO z|6KsyM^3M}SQ@} z4zKl8+tB+yrQ_&%e#pqZo%|-`G(1%}!p#vnACR~Ne9q?7 z#~e$xWGeKZmu9)y3s#nc0tQc9us=d8q#gPSZ`fZOd70%kR~j?IYrpQV+Cs^_M2Et8 z!U$2x(H?}8F_TD(!JxHnsgOl};92-zJfpV$p4FUn`6&a+$95&7r)piK?Z*-mn) z#oRDdtWGK&C@`evsRZwH3IpiF6V#bZwV5UxP2brbaF~&-}ilLg0Ru0OxG}4HG zENA)%R?~zO@$1DoV(HAbUs+mqaT7l1S zPR`5rbplpb^j34~$N@R=PuTLkB|-9x13rnb_ad9dXD<%=F-u{!4?f-=))QFCvA0`0 z2;rU|J=h(Vn9Mv~Z?&6pblY9DQkpwvN^*7m)YVDO$^q0Jp9z^mQuLIFU8$e#bsw`O z+>7qumkaCw26;I-Wg_De`(WobpJ3372uIhkv;#ALP)t)!T^{>gD#ajvzZ*$!l`K=j zR0f~x$Dd^A1zD^P`8qpdhu~|ImZ`8Muj`^&5)&$JEZ5qJzYOlWSPkcaG}XUtrvw&8 zi2YmV`q^(|;WW;S->QiovKG3=k3q~Na+dOQc^Xn{+lw_k-jvTp4a+VtT9-2Ubz8OS z)G`mwi{l2}#l$X83m1c2q?-FtBthEk(sh0Nt|T86YomwK@ru*TeN$ekDr3hgc9WIR zevt7EUB*L{_Po2(U`Gyj#$BQ}Uwq7Sq(=2{`#I{909)Lp5B1Zo*zakJifg(giMdE{ zqh}cO+k+SZinBx3X!|n^kG0}fv@W0X`eV1G5{uOPMJB1{7QB*GJ)X&WDuhzP`lD@?&%{GtmVGANe?li%oCutv`>d>iKt)gR8Av>J%=yBAuLHryBvEpkg0 zM+Aync}>_hk9$-o%SbFQOO6RL@*w$^Rac3M4zq@)6Ogj;sT%?`sVFeH!e_~dj0Z608}qYD|VKh|B31hsz0HMpJAOj>7SZ3Mt+Nd&p%O9 zztgUPYNkjinO?}#QF#a6zeM!Cm@Yg9Xkf&>Su3z^IjS}d9xp$E<2iVy$teuf_4O0d zYrhWGwir*B-grKux>rE=l-Fj8>jP0~%IpFTM?xbjo=Daby}p!~|D)+~8$IK@eN~9S ztZI6_IeO(xGq0@AbK*>BmDz~Cb1H<=5{qavXQ}o9m&{wkL%CX=0Q@99q!Sek%C}#z z-m-t!17{p_>8HKS3<2=nGu3nU3VOIMeQ7BZnSq&OB`frskur6WHete^F!Gt>nqEGV zw@EgU$!`^fw92}Ot&EsQ@{nq%14j64Yq(UmLv!Sn>zofjut$F!WR*@JVB5hv_@0v2 z+`+f*UO<)neHq|Xrv35|FnVM0e@NcsZb3X^ z^`@S})01|Y(ai$#JfX4AoyS%rN_qJGRcXGo0=u6oLEz1$CZJk4pUajWNMgnEp^4)r znRArL9yka!eCiYBV$79z;!4$)jcoY@@5?nGfriW2aV%2L4Fbe3)e_Phw+?5aW^J~s zyL3>hnmPh}>7w&9Nq!tP)DRv#)3O%{fvph7+(=(<87HFC{$Zj`*AW#!+1=n+d7gF0HJ2 zJ+6J2x)5yX)tY9YXw?e+*pEN0oeTFl|8@lVT&gvRZ%v$v_tW!KUos>+n=CF$g*3ob#=nJMO45%Mru2p*Tb>F=!SS+g>Kxt8TCL(A2EvEz`a=fW1VxJfWSp~r? zUgeQ{B;+eY`^9NiP|oGiBKgO%xw45)^Aq;nMa0?(BV;;sU7%EX^rl0rgVnk{V?>{x za!P==|7&k=ob%~%m?Vd2Zljln`7?Bu|Q3Tc*kU)vBFv4lGMiG#8lYTnye~A?kO(1D+b%Pd+L8SP` zZGX<=pc`itC5H0_$we~1t`i8vRDKv{`M(7Q;KBH53w}{+1+~GLr|2~X|M~xu3q9(; z3+i=_8lRk?Z07R;o##X(JFK81-%tbp%@qervPWs3X*|R)6b52qJJIn{wB;#aNGWqS z*&aQ5Q9jFKYb%ATSV~K^Jo`I0) z*I(RRoe0r+fShq^2fgbv19`90 zYz-Gn&yu;B@ZgsgMLg068j}Uvr>=bY>q3QqjObjQC=X6JBV^M6@X21}f$HkXpZmqi zvtRfYl4xo^lt+Wa`CD5fN-&V6G#w&5KN3<&(e@mxT|$3tx;C}->>BUUM++xjY5Dta zJ=xC4MG@Qkn~R3oGCz%T6CQBc`km=`0_o0&CYEr4KGx#jCNIDIy+LbfC zY5r}B^fu%OS_z6U|KEu|2KHVIHx<-o{tEXP&P#86>F2TPy+$0|YOxrF$qEyh=Xwtd zku4facA0v^Gk7$WAa$R6zTm zIpEyy)5_zto%~zPC%^Jo4~-3EP1ebAw#8;cu0EXY>0x~IOSj;&Ya}v#2gwe^=UE7q zj2d*9S#QOg^4&s~C#UP}Vejtzmxgtzsjf{WyK`i#8M6yCM6+Gm_ZhNPKNx_k zcq|lkU&R}=+zo!uG>sB-*~Mx5QDPo|dJtg$wtN5Nv;0nMxgFq*i=%z%?=+WxeYqVQ zD|Gw6@}4o-R)2j0??AAyD6s$e!Qa2Z2oKWJ2{Fd?--#T5-T{;y5vlY4E5+u|-+=E1 zW=rR3|MUI+bz{tZe1KSu=+&J+Z~4!6A9YP6uz~+O^#7W2Op@dO&ienj=>C7c;DJ8q z_II&A^WOgWKDzY3+vS&O{nJML`u@L`;vd8K=iB*TBgq4bF%@;%)UI*Wo>WX81OKlF zrKDJD*le?(bg+ivmY-f7`P>iFeLK0JY`M@iy(5Ups}(sUSRE@FKR(`ZDgusB531gg z***0yck0Zv7<@Pcfr6}%JJ66g&-Xq{!T_Z-eYY7=-L2O(a<& z#x^EfmZ8ZqBQwT)?&_TL>3qKb!S`|Ihx>8=a9{U*&s_I4*LA<%@7MD^P7Yx+Yk@H2 z!BzGP59VkYl4ZD^DdK0JyfvHH=k2k%_!N~EDS`x{5I6{P8Q(w$u=0p>-^nf#*#d=m zu7lYEYy#M1aQ5TP%^ju%7D&~>>qMyFaqDM+I^2J#^f<<9+U2Y$^}w(ac<2ZcADk#G zMU%K0QqTmEPy$Zbz1p{g+0=A9@4@KP#+bJd;g5*G`ZnRq{qSB3;{8gDNCYM6?AAOW zfz`4`TLKa7)j*c68{j{W5ZqjisZH47ScrwttvSvu|49M+vHZG=1&C?jgUdkqjY^Od zJRq2jc`*v;Hd(f1mQ`=RVFPk$lyT1&BV888D?m|{)-ymgm`qGLPls6S?+!>mhn7d` zgIph<_qEmp$ED5J#h)yUN>1rgh>nZ%E8GOc?8I;kWTStEj?r~J^pr0(l|>C9V*{xe zLNnkq`vlZTIm4u{07)0mU;oZnNCdKqkP1~*>kRcnOn@oWbDy`OZl)ZHv3#dXf+ZB5 zWUh64E~~QEy6*}p3)VpfNZEawo7MhnUGp9Vvy&|$WA3rx8$B5i=>$rVmVrQIbGA$t z)g9MzsFa-VmE}bT-rsHT?sD6ZYe6iUFTF{W?ak=j*Q7-C)$iJX)N1`O2LCxBU-JjR zZQz4i;*8f{TQ;@c(ptHWkpu%n_}TPvk#|6nqGN~*n?@8~-Sh>p1wlJo7IdOJ944q+ z=|e&AFimAM^3rPzjdx9=e}mUMMMn>)YjdUyvlsIFejlfTYl`!D@+I#wD0a>>9X+eu zC$qZO=3=o32t1}PVXcGCKDa;5Lx*QwXF6VZx3C8h_>px|^>v#G zvcRJa{B{Y?a}$}CaX;2K1yrg))Xiqg$g%8OPD%VBj{89?9VQeCZup1|w$eSFOJ~b2 z(Zb`YPv#o{Zpwa6d5D0cNjo(PG;QO(0)nJgpazgbpKeSe%a6IyDH6Ec;F29Ju+D^z zyNm;Fb`=O~!@XTe7{%(ZTe3LnT31q8pom%T@m*2#gFx2egDQQgT9lBiNP;`H4nS?5 zoj;DR39Hj0_RdGQdd-NlH4aa><8VIkes?>Fcu*G(fbKon+M3tFyKR${FSYv@eKjp| ze_*-B>;+$T!BovxWC;Xhl6iwtezo0C@-f{Bp|-@X%p*g*84PFJHm__JFv$4hVFOg- z1|zjZmm=;fTLU5<$)&0r0|q#&%T56+DEZzwciJVE*ZilHXXMXgg6I?03oGUl_|wE)yiIGkPPHeG;vVNo8?VdRt@%+SrKn34oxuP$m9 zPPKfUe%2tFinTAdZ5S@ITE7_-SZ)(1&4(+VCdk0gZ&2_ydN>lhaf_(7r?6&0v(QSN zpRi)XGz*U&FoIdPC47BawY~CU!ciuWKAO6$GqGjkcuMi2W8pbT-Pi`6M#%{43hxBG za!DeUq+euHX8V6Ctj7VCx1b!w#QLYSL@oG)$%;7%LGCA(rUy%W59qXmX)Et%%*Bt}tR zEIU&?P5<^)5t>CSkv5E>E2oSh$CvbC5@4i<13s`KpISsz>{`0$t7cIvAk@`?AWPx5 zt6yP}ft^=bW;)MjY{{6Vhs=qE&Z9IN$Hi8%ISwhr4*n1j(3ch2>Rj8}dnw!CQSQix zfL`Cm-bF?+o0cw+5o`?j>3?YV-?n_+H#sQnJ$)H(!SagNQ&ELBSltlB zKR?*cZ8>H>-xw0IG#<42n!PM8IqC&>K?eIfPLQ!R{-zIyaUq)WZ>3Ex?A)E1+AhEI zfsK`RtzPIg4)W7|2!vKa&`o?^Mso=qD;_{h)jyd_0AGP!xIJA&S1=|B`HLQI2~P2o zy+P7K|4s}^mkj%ywuHFV3VHGFQ{{FkE!IXd*92rDbwlvOzO$`cRRx%(AVG=6$;AHE zcV{UATt_@-(+TQ4XOJ(4g>v(}=|+?HO)jm2D#Zu<@*mIoT0jh9Ty058G-F%X>>I9- zw|WAXBw*0YD>W$=U*lXcQOA%Wz*K|v3x7PIHpJW6u$h@q$OpS{hiI~*CwD~BPJ@Iq zRf_u1m{RXk15p5#a9c8L^|{b&O6{aKKns`Rf6r2o%;a0{ePyH3ofSFhJAdjunPxmr z37G2@D~=UFw%lCG6z4pQj``CE^{sp3vb43{sB%2(xSyJu<~LUcgaQN`@mND?&UWUL zTj6#Nb}CzUYCX}WpAA(A@&VmEmPiiRdrqw3Vr{S*QGqzd?1AUs@b8wv8xX&kWviQD_<=b{g+=5c2NUD-a1 zRqm5GjtY99{UXGZE9vM)5lk&nl`=3;GXcIL6VMN5B!v~sY>nQIKcikDIXsCmn2^1x zxZED&St?gTRx3$HjVYoUx_EU23rh{hvhUJxR>cyCOnMAB@#GmW}rJ z0<24aYZTR&=-Pms8U2UsB6rzCb|M>;kdO{~(u`+-A6-mT@=S`6^knE-#KVG3Wgm>k z`jRKRB5xHXFHMon`S;(lV~dYy@SDo&T&OxN$Ip^Z{t?9+_Hj750+PoGOc4nHQ%IVaskw$63sJtByTUaV&tzBbr zFx)ipjZCR721q(Uj2505++EmC$* zg8vG?q5$_HWdLAb=n{1{b=bc$7_JurYh&&(J$M$w;Hk zs}g^Bke^sW{tV{)c<250#|IXMqSrZ zz?bbv*o4y1!aM!q9YYsZu^mvBkBsM1?89J;M-|&-eU~) zC0wp$o4(sr6!JGWL7e)K*o&SNxF_E0sw9^!gYC+=J39bTemS77R_piVF+w&gL|HMx z(>6XBe!>9o|CK~+SZ=!}s~fom3E>-Rrw59 zv|AHy=&Bpt0n%HGtTRh8)OJ@EE?dl;3uHT4v6B1qywNh10`?QmmY~sXuGGxD8HK>; z$9N}GUtqc*gnv!AU5Humo?2ShuQ!RVrc3qC+7#j%tZz)iJG-qm5gLob&XQK4)PYZk zt&42%X`^>Azy8MQVa@BG?YZPuOuL(F#{e8|9y-eei;9aYqCD=f+WsVE51sgx!J$ue z1=32HMobVd!|1(lcKz*{lT{`=aSMyRmpajT{=u9n!EvjXSE9sNIPcV>%i)fj4S%BD zf2hC&P7Gjal@$3kN(r0O^kFZ_*1fudC$&jt7+yc=OOd|Vp-TWN3UrA}me@BA5B4+; zh}i}pfzui$9);hkZP_WkWsIB`f8Pysog3S6+y_~jUvT|%=Ek#zO`fYu*^i$=>uvNv z{GN(moIru;k4rpYu(r3021ZE_D7c`)ywOQ@<)zqOyV}Ny00C+laUlwFIRs z?<=JVK@=1FAw8Oc-qF!(ten-ih}-d9cy$GMwK7NQmt{9Ci5c6@WZXu2%EH1@ml~?6 z5mA8?K$8Z=CHSOeySB_kuQ|9W7CwVWbWonlRJ|0o>3koco&5|*Y^=_t5KH|~`M@%K zN`20Roq1tVndibW-yzX&*$m2;C=CG70;3vl1KE}~vy#)Vyb1?-(SQt8@|VMR1qZluF1iYo54F^_9soq9YcPXUKK5>C$` zxM>!SN@)0QDL6O7Bn!cBsOqf`FGF7odVDmo**~MQO2sf7M8Sdk2&kh)QPm8~{&k{` zO?-sW#^4BeMP;Z)40AqV>-2nM)gTfT#whH|QH_~)ekQ(M(w8cFzGctU*_W_x9{?eK zHEUmK)6U{CvD_|&FcH<*JScp49@?1@D>HjSYwzDmTd3tM@W6d%Fob4@=13nnAR?V5 zD>dy>`-sz+t4KwZADqVfW&Wk2sda^E#m8nXQ~6`PBK-d#(L9Lw4E#*rrTXmy(#rC< z;&XD|m>lUNn(r^oy6=RuUg6eXRo9^t<6SH$Cch^NdFxc=+N7~bE$YYsn| zp??gBH0f^|#QzYwf0o1kjbZ#7zWMoi0QUclT>XC!+J&;o6~dXj_#(~-F5^F8D)9$* zdsl|4&YlcbisRUQ;7r@DzcybKZhYKLX%mP!aMb=D$1nfbgdVRvd4=oeqkpu!koeoz zHuXv_vEBbX{#)~td*!$V|9Oe;jryH_(W?Aa?&X{Ry$I0g4aa^?-T&Uw-+SlMLwU<~ v8=O)4KX=CQi&tCN1^%DD$6t-$H@@tW;ZwaX_S*xUUBCybYot?g(LU@yfu-V1 diff --git a/website/public/robots.txt b/website/public/robots.txt deleted file mode 100644 index d1c2294cf..000000000 --- a/website/public/robots.txt +++ /dev/null @@ -1,4 +0,0 @@ -User-agent: * -Allow: / - -Sitemap: https://agentdiff.app/sitemap.xml \ No newline at end of file diff --git a/website/public/sitemap.xml b/website/public/sitemap.xml deleted file mode 100644 index 50c49cd9f..000000000 --- a/website/public/sitemap.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - https://agentdiff.app/ - 2026-08-19 - weekly - 1.0 - - - https://agentdiff.app/docs - 2026-08-19 - weekly - 0.8 - - \ No newline at end of file diff --git a/website/public/vercel.svg b/website/public/vercel.svg deleted file mode 100644 index 770539603..000000000 --- a/website/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/website/public/window.svg b/website/public/window.svg deleted file mode 100644 index b2b2a44f6..000000000 --- a/website/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/website/src/app/(site)/action/opengraph-image.tsx b/website/src/app/(site)/action/opengraph-image.tsx deleted file mode 100644 index a31251d17..000000000 --- a/website/src/app/(site)/action/opengraph-image.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { ImageResponse } from "next/og"; - -export const size = { width: 1200, height: 630 }; -export const dynamic = "force-static"; -export const contentType = "image/png"; - -export default function OgImage() { - return new ImageResponse( - ( -

-
-
-
-
-
-
-
-
-
-
-
-
agentdiff
-
action
-
- -
-
-
- A gate on every -
-
- pull request. -
-
- -
- Trajectory regression testing for AI agents - agentdiff.app/action -
-
- ), - size, - ); -} diff --git a/website/src/app/(site)/action/page.tsx b/website/src/app/(site)/action/page.tsx deleted file mode 100644 index 0fe39b732..000000000 --- a/website/src/app/(site)/action/page.tsx +++ /dev/null @@ -1,504 +0,0 @@ -import type { Metadata } from "next"; -import Link from "next/link"; -import { ArrowRight, Check, Copy, ExternalLink, GitPullRequest, RotateCcw, ShieldCheck, Terminal, AlertTriangle, PlayCircle } from "lucide-react"; -import Reveal from "@/components/Reveal"; -import CodeBlock from "@/components/CodeBlock"; - -const SITE_URL = "https://agentdiff.app"; - -export const metadata: Metadata = { - title: "GitHub Action — Automated Agent Trajectory Regression Gate", - description: - "Block agent trajectory regressions in CI on every PR. Automated diffing against golden baselines, real-time PR comments, root cause blame trees, and Goodhart threshold protection.", - keywords: [ - "agentdiff-check GitHub Action", - "CI/CD agent testing", - "PR trajectory check", - "automated regression gate", - "GitHub Actions AI testing", - ], - authors: [{ name: "AgentDiff", url: SITE_URL }], - creator: "AgentDiff", - publisher: "AgentDiff", - alternates: { canonical: "/action" }, - robots: { index: true, follow: true }, - openGraph: { - title: "GitHub Action | AgentDiff", - description: - "Block agent trajectory regressions in CI on every PR with automated PR commentary, threshold governance, and baseline rotation.", - url: `${SITE_URL}/action`, - siteName: "AgentDiff", - type: "website", - }, - twitter: { - card: "summary_large_image", - title: "GitHub Action | AgentDiff", - description: - "Block agent trajectory regressions in CI on every PR with automated PR commentary, threshold governance, and baseline rotation.", - }, -}; - -const ACTION_INPUTS = [ - { - name: "baseline", - req: true, - desc: "Path to the committed golden baseline trace JSON in your repository.", - }, - { - name: "candidate", - req: true, - desc: "Path to the candidate trace JSON generated by the agent during the current PR workflow run.", - }, - { - name: "pr", - req: false, - desc: "Pull request number (e.g. ${{ github.event.number }}) to post the formatted divergence report and culprit blame tree to.", - }, - { - name: "baseline-config", - req: false, - desc: "Path to the main branch agentdiff.toml. Enables the Goodhart guard to detect if PR authors silently weakened tolerance thresholds.", - }, - { - name: "adapter", - req: false, - desc: "Telemetry parser: auto (default), langgraph, crewai, openai_agents, openinference, langfuse, langsmith, generic.", - }, - { - name: "update-baseline", - req: false, - desc: "When true, automatically advances the stored golden baseline trace if the PR trajectory verdict passes all quality gates.", - }, - { - name: "github-token", - req: false, - desc: "GitHub secret token (e.g. ${{ secrets.GITHUB_TOKEN }}) with pull-requests: write permission for automated commentary.", - }, -]; - -export default function ActionPage() { - return ( -
- - {/* 1. MARKETING HERO */} -
- {/* Subtle top spotlight glow */} -
- -
- -
- - Official GitHub Action - -

- Gate AI agent regressions on every pull request. -

-

- Drop agentdiff-check into your CI pipeline. Diff candidate execution graphs against golden baselines, post rich diagnostic blame trees to PR comments, and lock the merge button if thresholds fail. -

- - {/* High-Impact Proof Points */} -
- - - 30-Second Setup with agentdiff init - - - - - Interactive /agentdiff approve Bot - - - - - Hosted Identity (agentdiff[bot]) - -
- - -
-
-
-
- - {/* 2. PRODUCTION WORKFLOW SPECIFICATION (SIDE-BY-SIDE BLUEPRINT) */} -
- -
- - {/* 3. THREE AUTOMATION DELIVERABLES */} -
-
- -
- - 02 / Core Deliverables - -

- What happens on every pull request. -

-

- Three deterministic safeguards run on every push, giving your team actionable feedback before bad code hits main. -

-
-
- - {/* 3 Value Pillars: High-Converting Open Layout */} - -
-
- - {/* Pillar 1: Rich PR Commentary */} -
-
- - Deliverable 01 - - -
-

- Rich PR Diagnostic Commentary -

-

- Posts an interactive markdown summary directly to the PR with exact divergence ratios, step-by-step diff trees, token spikes, and isolated culprit root-cause lines. -

-
- - Instant team visibility without log parsing -
-
- - {/* Pillar 2: Exit Code 1 Enforcement */} -
-
- - Deliverable 02 - - -
-

- Exit Code 1 Merge Blocker -

-

- Emits strict non-zero exit codes upon regression, automatically failing the GitHub check suite and preventing engineers from merging broken agent behaviors. -

-
- - 100% Deterministic branch protection -
-
- - {/* Pillar 3: Interactive Approve Bot & Baseline Rotation */} -
-
- - Deliverable 03 - - -
-

- Interactive /agentdiff approve Bot -

-

- Reviewers bless intentional improvements directly by commenting /agentdiff approve. Candidate runs join the baseline envelope without local checkouts or manual JSON edits. -

-
- - Hosted identity as agentdiff[bot] via token.agentdiff.app -
-
- -
-
-
- - {/* Approve Bot Spotlight Box */} - -
-
-
- - In-PR Workflow - -

- Bless improvements without leaving GitHub -

-
- - Install AgentDiff CI App - - -
- -
-
-
1. Reviewer Comment
-

- A team member with write access comments /agentdiff approve on a PR flagged for path drift. -

-
-
-
2. D3 Invariant Check
-

- Path drift and cost deltas are blessable; infinite loops are never blessable. The bot refuses to bless cyclical bugs. -

-
-
-
3. Green Checks-API Flip
-

- The bot updates the committed baseline envelope, pushes the commit, and flips the GitHub Check result to green. -

-
-
-
-
-
-
- - {/* 4. GOODHART THRESHOLD GUARD */} -
-
-
- - {/* Left Column: Explanation */} -
- - 03 / Governance & Security - -

- Did the PR pass — or did the gate move? -

-

- When developers weaken test thresholds (e.g. raising max_divergence from 0.25 to 0.75 to force a broken agent to pass), AgentDiff compares the PR configuration against the main branch baseline config. -

- -
-
- - Goodhart's Law Protection Active -
-

- Threshold alterations are flagged as high-priority security warnings in the PR review timeline, preventing silent regression masking. -

-
-
- - {/* Right Column: Governance Yaml */} -
-
- /tmp/baseline-agentdiff.toml - - - name: Gate Against Baseline with Governance Guard - uses: kerrshift/agentdiff/.github/actions/agentdiff-check@v0.5.0 - with: - baseline: baselines/golden_run.json - candidate: traces/pr_candidate.json - baseline-config: /tmp/baseline-agentdiff.toml # Flags loosened thresholds - pr: \${{ github.event.number }} - github-token: \${{ secrets.GITHUB_TOKEN }}`} - /> -
-
- -
-
-
- - {/* 5. COMPLETE ACTION INPUTS SPECIFICATION */} -
-
- -
- - 04 / Parameters & Config - -

- Complete Action inputs specification. -

-

- Everything configurable in agentdiff-check: -

-
-
- - -
-
- - - - - - - - - - {ACTION_INPUTS.map((input) => ( - - - - - - ))} - -
ParameterRequirementDescription
- {input.name} - - {input.req ? ( - - Required - - ) : ( - - Optional - - )} - - {input.desc} -
-
-
-
-
-
- - {/* 6. CTA BANNER */} -
- {/* Top-Right Emerald Flare */} -
- - {/* Center ambient wash */} -
- -
- -
- - Continuous Protection - -

- Record. Diff. Gate. Ship with confidence. -

-

- Add one GitHub Action step to automate trajectory regression testing across your engineering team in under 5 minutes. -

-
- - Install GitHub App → - - - Quickstart Guide - - - Explore Full CLI Docs - -
-
-
-
-
- -
- ); -} diff --git a/website/src/app/(site)/adapters/AdaptersClient.tsx b/website/src/app/(site)/adapters/AdaptersClient.tsx deleted file mode 100644 index 1192d6001..000000000 --- a/website/src/app/(site)/adapters/AdaptersClient.tsx +++ /dev/null @@ -1,639 +0,0 @@ -"use client"; - -import React, { useState } from "react"; -import Link from "next/link"; -import { ArrowRight, Check, Copy, FileCode2, Terminal } from "lucide-react"; -import { OpenAI, Langfuse, LangSmith, LangGraph, CrewAI } from "@lobehub/icons"; -import OpenTelemetry from "@/components/OpenTelemetry"; -import Reveal from "@/components/Reveal"; -import CodeBlock from "@/components/CodeBlock"; -import AnimatedTelemetryHub from "@/components/AnimatedTelemetryHub"; - - - -const ECOSYSTEMS = [ - { - id: "langgraph", - name: "LangGraph", - tag: "Native Direct", - icon: LangGraph, - badge: "Direct State Ingestion", - highlight: "Zero OTel exporter overhead", - desc: "Ingests native LangGraph checkpoint state dumps and node graphs. Automatically maps branch checkpoints and tool node executions into a linear causal DAG.", - format: "LangGraph State Snapshots", - cliCommand: "agentdiff baseline.json cand.json --adapter langgraph", - pythonSnippet: `from agentdiff import load_trace\ntrace = load_trace("checkpoint.json", adapter="langgraph")`, - }, - { - id: "openai", - name: "OpenAI Agents SDK", - tag: "Built-In", - icon: OpenAI, - badge: "Run Tree Parsing", - highlight: "Validated against official SDK outputs", - desc: "Direct support for OpenAI's official Agents SDK telemetry format. Ingests function-calling tool payloads, streaming steps, and token count structures seamlessly.", - format: "OpenAI Agents SDK Run Dump", - cliCommand: "agentdiff baseline.json cand.json --adapter openai_agents", - pythonSnippet: `from agentdiff import load_trace\ntrace = load_trace("run_tree.json", adapter="openai_agents")`, - }, - { - id: "crewai", - name: "CrewAI", - tag: "Multi-Agent", - icon: CrewAI, - badge: "Crew Output Dump", - highlight: "Inter-agent task delegation tracking", - desc: "Ingests CrewOutput dumps from multi-agent crew kickoffs. Maps sequential agent delegations, task outputs, and tool usage into standardized steps.", - format: "CrewOutput Dumps", - cliCommand: "agentdiff crew_v1.json crew_v2.json --adapter crewai", - pythonSnippet: `from agentdiff import load_trace\ntrace = load_trace("crew_output.json", adapter="crewai")`, - }, - { - id: "otel", - name: "OpenTelemetry / OpenInference", - tag: "Industry Standard", - icon: OpenTelemetry, - badge: "OTel Semantic Conventions", - highlight: "LlamaIndex, Phoenix, Traceloop", - desc: "Compatible with any agent runtime instrumented via OpenTelemetry OpenInference standard spans. Ingests span parent-child relationships and transforms them into execution DAGs.", - format: "OTel Span JSON / OTLP", - cliCommand: "agentdiff otel_base.json otel_cand.json --adapter openinference", - pythonSnippet: `from agentdiff import load_trace\ntrace = load_trace("spans.json", adapter="openinference")`, - }, - { - id: "langfuse", - name: "Langfuse", - tag: "Observability", - icon: Langfuse, - badge: "SDK Trace Export", - highlight: "Snake_case normalization & latency maps", - desc: "Ingest trace dumps directly from the Langfuse SDK or API. Normalizes observations, scores, and nested generation steps into strict deterministic nodes.", - format: "Langfuse Trace Dumps", - cliCommand: "agentdiff langfuse_base.json langfuse_cand.json --adapter langfuse", - pythonSnippet: `from agentdiff import load_trace\ntrace = load_trace("langfuse.json", adapter="langfuse")`, - }, - { - id: "langsmith", - name: "LangSmith", - tag: "Observability", - icon: LangSmith, - badge: "Run Tree Sync", - highlight: "Hierarchical run tree reconstruction", - desc: "Converts hierarchical run trees exported from the LangSmith platform into standardized AgentTrace schema ready for regression evaluation in CI.", - format: "LangSmith Run Trees", - cliCommand: "agentdiff smith_base.json smith_cand.json --adapter langsmith", - pythonSnippet: `from agentdiff import load_trace\ntrace = load_trace("smith_run.json", adapter="langsmith")`, - }, - { - id: "generic", - name: "Generic JSON (Canonical)", - tag: "Native Schema", - icon: null, - badge: "Reference Format", - highlight: "Produced via agentdiff record", - desc: "AgentDiff's versioned canonical format. When using custom internal runtimes or Python SDK instrumentation, emit this format for instant, zero-conversion diffing.", - format: "Canonical AgentTrace JSON (v1.0)", - cliCommand: "agentdiff record -- my_agent_script.py", - pythonSnippet: `from agentdiff import load_trace\ntrace = load_trace("trace.json") # auto-detected`, - }, -]; - -export default function AdaptersClient() { - const [selectedId, setSelectedId] = useState("langgraph"); - const [copiedId, setCopiedId] = useState(null); - - const activeEcosystem = ECOSYSTEMS.find((e) => e.id === selectedId) || ECOSYSTEMS[0]; - const ActiveIcon = activeEcosystem.icon; - - const copyCommand = (cmd: string, id: string) => { - navigator.clipboard.writeText(cmd); - setCopiedId(id); - setTimeout(() => setCopiedId(null), 1800); - }; - - return ( -
- {/* 1. MARKETING HERO */} -
- {/* Subtle top spotlight glow */} -
- -
- -
- - Universal Telemetry Adapters - -

- Bring your own telemetry. Zero code rewrites. -

-

- No proprietary SDK wrappers or runtime monkey-patching. Built-in adapters ingest raw JSON traces from LangGraph, CrewAI, OpenAI Agents, OpenTelemetry, Langfuse, and LangSmith in under 2ms. -

- - {/* High-Impact Proof Points */} -
- - - Zero SDK Lock-In - - - - - Automatic Schema Fingerprinting - - - - - Sub-2ms Ingestion Latency - -
-
-
- - {/* Universal Telemetry Hub Visual */} - -
- -
-
-
-
- - {/* 2. VALUE PROPOSITION STRIP (HIGH-HIERARCHY MARKETING PILLARS) */} -
-
- -
- - Architecture Guarantees - -

- Zero ingestion friction. 100% deterministic parity. -

-

- AgentDiff eliminates telemetry lock-in. Regardless of how your agents execute or which framework you swap to next quarter, your CI quality gates remain rock-solid. -

-
-
- - {/* 3 Value Pillars: High-Converting Open Layout */} - -
-
- - {/* Pillar 1 */} -
-
- - 01 · Zero Rewrites - - -
-

- Keep Your Existing Telemetry Stack -

-

- No proprietary SDK wrappers, monkey-patching, or invasive decorators. Feed your existing raw telemetry dumps directly into CI without changing a single line of agent code. -

-
- - Zero runtime latency overhead -
-
- - {/* Pillar 2 */} -
-
- - 02 · Schema Discovery - - -
-

- Automatic Format Sniffing -

-

- AgentDiff inspects incoming JSON structures, identifies unique telemetry fingerprint keys, and auto-selects the appropriate parser with sub-2ms execution latency. -

-
- - Sub-2ms automatic schema resolution -
-
- - {/* Pillar 3 */} -
-
- - 03 · Parity Guarantee - - -
-

- Mathematical Metric Parity -

-

- Every trace resolves into the exact same canonical DAG contract. Trajectory Divergence (TDI), Wasted Effort, Loop Detection, and Recovery Ratios calculate with 100% mathematical parity. -

-
- - Zero floating point or platform drift -
-
- -
-
-
-
-
- - {/* 3. SUPPORTED FRAMEWORKS SHOWCASE */} -
-
- -
- - Supported Ecosystems - -

- Battle-tested on production trace formats. -

-

- Each built-in adapter is continuously verified with regression test suites against live framework dumps, ensuring schema fidelity across new framework releases. -

-
-
- - {/* Master-Detail Interactive Showcase */} - -
- - {/* Left Column: Quick-Select Ecosystem List (5 cols) */} -
- {ECOSYSTEMS.map((eco) => { - const isSelected = eco.id === selectedId; - const EcoIcon = eco.icon; - return ( - - ); - })} - - {/* Custom Adapter Direct CTA */} -
-
-
- -
-
-
Custom Runtime
-
~50 LOC Plugin Protocol
-
-
- - Build - - -
-
- - {/* Right Column: Dynamic Deep-Dive Stage (7 cols) */} -
-
- {/* Header */} -
-
-
- {ActiveIcon ? ( - - ) : ( - - )} -
-
-

- {activeEcosystem.name} -

-
- Ingestion format: {activeEcosystem.format} -
-
-
- - - {activeEcosystem.badge} - -
- - {/* Highlight & Description */} -
-
- {activeEcosystem.highlight} -
-

- {activeEcosystem.desc} -

-
- - {/* Code Examples */} -
- {/* CLI Command */} -
-
- CLI Diff Command - -
-
- {activeEcosystem.cliCommand} -
-
- - {/* Python Snippet */} -
-
- Python SDK Usage -
-
-
{activeEcosystem.pythonSnippet}
-
-
-
-
- - {/* Bottom Guarantee Note */} -
- - - Sub-2ms Execution Latency - - 100% Deterministic DAG Parity -
-
- -
-
-
-
- - {/* 4. EXTENSIBILITY PROTOCOL (DEVELOPER ARCHITECTURE) */} -
-
- -
- - Developer Protocol & Extensibility - -

- Build a custom adapter in ~50 lines of Python. -

-

- Running an in-house agent framework or proprietary telemetry pipeline? AgentDiff's modular plugin architecture lets you normalize custom execution schemas into canonical DAGs with a single Python class. -

-
-
- - {/* 3-Stage Extensibility Pipeline */} - -
-
- - {/* Stage 1: Subclass BaseAdapter */} -
-
- - Stage 1 · Mapping - - -
-

- Subclass BaseAdapter -

-

- Implement the mandatory from_dict() classmethod to map proprietary telemetry keys into standardized TraceStep nodes. -

-
- Single mandatory abstractmethod -
-
- - {/* Stage 2: Format Sniffer */} -
-
- - Stage 2 · Sniffing - - -
-

- Declare Format Sniffer -

-

- Add an optional detect(data) -> bool fingerprint to let the CLI and SDK automatically resolve your format without explicit flags. -

-
- Zero-config format discovery -
-
- - {/* Stage 3: Python Entry-Points */} -
-
- - Stage 3 · Discovery - - -
-

- Zero-Fork Registration -

-

- Register your package under the agentdiff.adapters entry-point. Discovered lazily by CLI runners with no core fork required. -

-
- Published as standalone PyPI packages -
-
- -
-
-
- - {/* Split Spec / Code Block */} - -
- - {/* Left: Plugin Architecture Notes */} -
- - Production Plugin Blueprint - -

- Clean separation between raw traces and graph comparison. -

-

- The comparison engine never needs to know whether an event originated from an HTTP span, JSON log, or database dump. Your adapter handles schema normalization once, and all 5 regression metrics run automatically. -

- -
-
- Entry-Point Declaration in pyproject.toml: -
-
-
[project.entry-points."agentdiff.adapters"]
-
acme_agent = "acme.telemetry:AcmeAdapter"
-
-
- -
- - - Sub-2ms Ingestion Time - - - Zero Memory Copies -
-
- - {/* Right: Python Custom Adapter Implementation */} -
-
- bool: - """Auto-sniffs Acme JSON dumps by signature keys.""" - return "acme_run_id" in data and "execution_spans" in data - - @classmethod - def from_dict(cls, data: dict) -> AgentTrace: - """Transforms arbitrary internal spans into immutable TraceSteps.""" - steps = [] - for idx, span in enumerate(data.get("execution_spans", [])): - steps.append( - TraceStep( - step_id=span["span_id"], - parent_id=span.get("parent_span_id"), - step_index=idx, - step_type=span.get("type", "tool"), - name=span["operation_name"], - input_payload=span.get("inputs", {}), - output_payload=span.get("outputs", {}), - latency_ms=span.get("duration_ms", 0.0), - ) - ) - return AgentTrace(steps=steps)`} - /> -
-
- -
-
-
-
- - {/* 5. CTA SECTION */} -
- {/* Top-Right Emerald Flare */} -
- - {/* Center ambient wash */} -
- -
- -
- - Start In Minutes - -

- Ready to diff your telemetry with zero rewrites? -

-

- Pass existing LangGraph, CrewAI, OpenAI, or OTel traces directly into CI. Block regressions before merge. -

-
- - Get Started with Quickstart → - - - Read Adapter Protocol Docs - -
-
-
-
-
-
- ); -} diff --git a/website/src/app/(site)/adapters/opengraph-image.tsx b/website/src/app/(site)/adapters/opengraph-image.tsx deleted file mode 100644 index 04a4449c3..000000000 --- a/website/src/app/(site)/adapters/opengraph-image.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { ImageResponse } from "next/og"; - -export const size = { width: 1200, height: 630 }; -export const dynamic = "force-static"; -export const contentType = "image/png"; - -export default function OgImage() { - return new ImageResponse( - ( -
-
-
-
-
-
-
-
-
-
-
-
-
agentdiff
-
adapters
-
- -
-
-
- Bring your own -
-
- telemetry. -
-
- -
- Trajectory regression testing for AI agents - agentdiff.app/adapters -
-
- ), - size, - ); -} diff --git a/website/src/app/(site)/adapters/page.tsx b/website/src/app/(site)/adapters/page.tsx deleted file mode 100644 index 3b7640d31..000000000 --- a/website/src/app/(site)/adapters/page.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import type { Metadata } from "next"; -import AdaptersClient from "./AdaptersClient"; - -const SITE_URL = "https://agentdiff.app"; - -export const metadata: Metadata = { - title: "Universal Adapters — Ingest LangGraph, CrewAI, OpenAI, & OTel Traces", - description: - "Zero-rewrite trace ingestion for LangGraph, CrewAI, OpenAI Agents SDK, OpenTelemetry / OpenInference, Langfuse, and LangSmith. Auto-detects schemas and diffs DAGs in CI.", - keywords: [ - "LangGraph trace diff", - "CrewAI testing", - "OpenAI Agents SDK traces", - "OpenTelemetry OpenInference", - "Langfuse trace export", - "LangSmith run trees", - "agent telemetry adapter", - "DAG diffing", - ], - authors: [{ name: "AgentDiff", url: SITE_URL }], - creator: "AgentDiff", - publisher: "AgentDiff", - alternates: { canonical: "/adapters" }, - robots: { index: true, follow: true }, - openGraph: { - title: "Universal Ecosystem Adapters | AgentDiff", - description: - "Ingest traces from LangGraph, CrewAI, OpenAI Agents SDK, OpenTelemetry, Langfuse, and LangSmith with zero rewrite.", - url: `${SITE_URL}/adapters`, - siteName: "AgentDiff", - type: "website", - }, - twitter: { - card: "summary_large_image", - title: "Universal Ecosystem Adapters | AgentDiff", - description: - "Ingest traces from LangGraph, CrewAI, OpenAI Agents SDK, OpenTelemetry, Langfuse, and LangSmith with zero rewrite.", - }, -}; - -export default function AdaptersPage() { - return ; -} diff --git a/website/src/app/(site)/blog/[slug]/opengraph-image.tsx b/website/src/app/(site)/blog/[slug]/opengraph-image.tsx deleted file mode 100644 index 7f7cb8425..000000000 --- a/website/src/app/(site)/blog/[slug]/opengraph-image.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import { ImageResponse } from "next/og"; -import { getAllPosts, getPost, formatDate } from "../../../../lib/blog"; - -/** - * Branded social card prerendered per blog post at build time. Same brand - * treatment as the docs cards (light editorial surface, black logo tile, - * green accent) with a type badge + date so each post's card reads as an - * article, not a doc page. - */ - -export const size = { width: 1200, height: 630 }; -export const dynamic = "force-static"; -export const contentType = "image/png"; - -export function generateStaticParams() { - return getAllPosts().map((p) => ({ slug: p.slug })); -} - -const TYPE_COLORS: Record = { - engineering: "#0fa47f", - guide: "#3b82f6", - product: "#d97706", -}; - -function LogoMark() { - return ( -
-
-
-
-
-
-
-
- ); -} - -export default async function OgImage({ - params, -}: { - params: Promise<{ slug: string }>; -}) { - const { slug } = await params; - const post = getPost(slug); - const typeColor = TYPE_COLORS[post?.type ?? ""] ?? "#a1a1aa"; - - return new ImageResponse( - ( -
-
-
- -
-
- agentdiff -
-
- {post?.type ?? "post"} -
-
- {formatDate(post?.date ?? "")} -
-
- -
-
-
42 ? 54 : post && post.title.length > 24 ? 64 : 76, - fontWeight: 700, - letterSpacing: "-0.03em", - lineHeight: 1.12, - maxWidth: 980, - }} - > - {post?.title ?? slug} -
-
- -
- Trajectory regression testing for AI agents - {`agentdiff.app/blog/${slug}`} -
-
- ), - size, - ); -} diff --git a/website/src/app/(site)/blog/[slug]/page.tsx b/website/src/app/(site)/blog/[slug]/page.tsx deleted file mode 100644 index 75deabe5b..000000000 --- a/website/src/app/(site)/blog/[slug]/page.tsx +++ /dev/null @@ -1,206 +0,0 @@ -import type { Metadata } from "next"; -import Link from "next/link"; -import { notFound } from "next/navigation"; -import DocContent from "../../../docs/DocContent"; -import BlogGradient, { gradientStyle } from "../../../../components/BlogGradient"; -import BlogToc from "../../../../components/BlogToc"; -import ScrollToTop from "../../../../components/ScrollToTop"; -import { getAllPosts, getPost, formatDate, getHeadings } from "../../../../lib/blog"; - -const SITE_URL = "https://agentdiff.app"; - -export const dynamicParams = false; - -export function generateStaticParams(): { slug: string }[] { - return getAllPosts().map((p) => ({ slug: p.slug })); -} - -export async function generateMetadata({ - params, -}: { - params: Promise<{ slug: string }>; -}): Promise { - const { slug } = await params; - const post = getPost(slug); - if (!post) return {}; - const url = `${SITE_URL}/blog/${post.slug}`; - const keywords = post.keywords ? post.keywords.split(",").map((s) => s.trim()) : []; - return { - title: post.title, - description: post.description, - keywords: keywords.length ? keywords : undefined, - authors: [{ name: "AgentDiff", url: SITE_URL }], - creator: "AgentDiff", - publisher: "AgentDiff", - alternates: { canonical: `/blog/${post.slug}` }, - robots: { index: true, follow: true }, - openGraph: { - title: `${post.title} | AgentDiff Blog`, - description: post.description, - url, - siteName: "AgentDiff", - type: "article", - publishedTime: post.date, - authors: ["AgentDiff"], - tags: keywords, - // og:image auto-wired from the per-slug opengraph-image route - }, - twitter: { - card: "summary_large_image", - title: `${post.title} | AgentDiff Blog`, - description: post.description, - creator: "@agentdiff", - }, - }; -} - -export default async function BlogPostPage({ - params, -}: { - params: Promise<{ slug: string }>; -}) { - const { slug } = await params; - const post = getPost(slug); - if (!post) notFound(); - const headings = getHeadings(post.content); - const url = `${SITE_URL}/blog/${post.slug}`; - - const wordCount = post.content.split(/\s+/).filter(Boolean).length; - const jsonLd = { - "@context": "https://schema.org", - "@graph": [ - { - "@type": "BlogPosting", - headline: post.title, - description: post.description, - datePublished: post.date, - dateModified: post.date, - url, - image: `${url}/opengraph-image`, - author: { "@type": "Organization", name: "AgentDiff", url: SITE_URL }, - publisher: { - "@type": "Organization", - name: "AgentDiff", - url: SITE_URL, - logo: { "@type": "ImageObject", url: `${SITE_URL}/favicon.svg` }, - }, - keywords: post.keywords || undefined, - wordCount, - timeRequired: `PT${post.readingTime}M`, - articleSection: post.type, - isPartOf: { "@type": "Blog", name: "AgentDiff Blog", url: `${SITE_URL}/blog` }, - mainEntityOfPage: { "@type": "WebPage", "@id": url }, - }, - { - "@type": "BreadcrumbList", - itemListElement: [ - { "@type": "ListItem", position: 1, name: "Home", item: SITE_URL }, - { "@type": "ListItem", position: 2, name: "Blog", item: `${SITE_URL}/blog` }, - { "@type": "ListItem", position: 3, name: post.title, item: url }, - ], - }, - ], - }; - - return ( - <> - -