From c46646dc9a758d81f11bf9fcba39114be3279af3 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 13:09:22 -0700 Subject: [PATCH 01/31] first pass: - change module -> service occurences - add missing context - modernize --- api/signer-api.yml | 139 ++++++ crates/common/src/config/module.rs | 29 ++ docs/docs/architecture/overview.md | 4 +- docs/docs/developing/commit-module.md | 2 +- docs/docs/developing/commit-modules.md | 171 ++++++++ docs/docs/developing/custom-modules.md | 2 +- docs/docs/developing/extending-pbs.md | 100 +++++ docs/docs/developing/signer-api.md | 410 ++++++++++++++++++ docs/docs/get_started/configuration.md | 28 +- docs/docs/get_started/mux-key-loaders.md | 237 ++++++++++ docs/docs/get_started/overview.md | 6 +- docs/docs/get_started/running/binary.md | 8 +- docs/docs/get_started/running/docker.md | 8 +- docs/docs/get_started/running/k8s.md | 75 ++++ .../get_started/running/metrics-catalog.md | 55 +++ docs/docs/get_started/troubleshooting.md | 192 ++++++++ docs/sidebars.js | 9 +- 17 files changed, 1443 insertions(+), 32 deletions(-) create mode 100644 docs/docs/developing/commit-modules.md create mode 100644 docs/docs/developing/extending-pbs.md create mode 100644 docs/docs/developing/signer-api.md create mode 100644 docs/docs/get_started/mux-key-loaders.md create mode 100644 docs/docs/get_started/running/k8s.md create mode 100644 docs/docs/get_started/running/metrics-catalog.md diff --git a/api/signer-api.yml b/api/signer-api.yml index be44f8fd..b46ea1ff 100644 --- a/api/signer-api.yml +++ b/api/signer-api.yml @@ -619,12 +619,151 @@ paths: type: string example: "Internal error" + /reload: + post: + summary: Hot-reload signer configuration + description: > + Re-reads cb-config.toml and environment variables, rebuilding the signer's + internal state. Accepts optional body overrides for JWT secrets and the + admin secret. + + **Behaviour:** + - New modules in config are registered. + - Removed modules are dropped from the access list. + - JWT secrets and admin secret are reset to env var values. + - Previous runtime changes (from /revoke_jwt or body overrides) are reverted. + + **Body overrides** (applied on top of the config baseline): + - `jwt_secrets`: comma-separated `=` pairs. + - `admin_secret`: string to override the admin JWT secret. + + Body overrides are **not persisted** across restarts. + tags: + - Management + security: + - AdminBearerAuth: [] + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + jwt_secrets: + description: Comma-separated list of MODULE_ID=SECRET pairs to override module JWT secrets + type: string + example: "module_a=newsecret,module_b=anothersecret" + admin_secret: + description: Override for the admin JWT secret + type: string + example: "my-new-admin-secret" + responses: + "200": + description: Configuration reloaded successfully + "400": + description: Body references a module ID not present in the config + content: + application/json: + schema: + type: object + required: + - code + - message + properties: + code: + type: number + example: 400 + message: + type: string + example: "bad request: Module unknown-module not found in config, cannot override JWT secret" + "500": + description: Failed to reload config (previous state preserved) + content: + application/json: + schema: + type: object + required: + - code + - message + properties: + code: + type: number + example: 500 + message: + type: string + example: "internal error: failed to reload config" + + /revoke_jwt: + post: + summary: Immediately revoke a module's access + description: > + Removes a module from the signer's access list. The module will no longer + be able to authenticate with its JWT. + + If the module is still present in cb-config.toml, the next `/reload` will + re-add it. Remove the module from the config to make revocation permanent. + tags: + - Management + security: + - AdminBearerAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - module_id + properties: + module_id: + description: The ID of the module to revoke + type: string + example: "MY_MODULE" + responses: + "200": + description: Module access revoked successfully + "404": + description: Module ID not found + content: + application/json: + schema: + type: object + required: + - code + - message + properties: + code: + type: number + example: 404 + message: + type: string + example: "module id not found" + + /status: + get: + summary: Health check + description: Simple health check endpoint. Returns 200 OK with no body. No authentication required. + tags: + - Management + responses: + "200": + description: Signer service is healthy + content: + text/plain: + schema: + type: string + example: "" + components: securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT + AdminBearerAuth: + type: http + scheme: bearer + bearerFormat: JWT schemas: B256: type: string diff --git a/crates/common/src/config/module.rs b/crates/common/src/config/module.rs index aec45289..d5dd57d9 100644 --- a/crates/common/src/config/module.rs +++ b/crates/common/src/config/module.rs @@ -187,3 +187,32 @@ pub fn load_builder_module_config() -> eyre::Result = toml::from_str("type = \"pbs\""); + let err = result.expect_err("pbs should fail to deserialize"); + let msg = err.to_string(); + assert!( + msg.contains("unknown variant") || msg.contains("\"pbs\""), + "error should mention unknown variant 'pbs', got: {msg}" + ); + } +} diff --git a/docs/docs/architecture/overview.md b/docs/docs/architecture/overview.md index 20137675..48eaebde 100644 --- a/docs/docs/architecture/overview.md +++ b/docs/docs/architecture/overview.md @@ -7,8 +7,8 @@ description: Overview of the architecture of Commit-Boost Below is schematic overview of Commit-Boost. Commit-Boost runs as a single sidecar composed of multiple modules: -- Pbs Module with the [BuilderAPI](https://ethereum.github.io/builder-specs/) for [MEV Boost](https://docs.flashbots.net/flashbots-mev-boost/architecture-overview/specifications) -- A Signer Module implementing the SignerAPI +- Pbs Service with the [BuilderAPI](https://ethereum.github.io/builder-specs/) for [MEV Boost](https://docs.flashbots.net/flashbots-mev-boost/architecture-overview/specifications) +- A Signer Service implementing the SignerAPI - Commit Modules that implement some custom commit protocol logic - Telemetry modules like Prometheus and Grafana diff --git a/docs/docs/developing/commit-module.md b/docs/docs/developing/commit-module.md index 30921be2..0fce01e2 100644 --- a/docs/docs/developing/commit-module.md +++ b/docs/docs/developing/commit-module.md @@ -41,7 +41,7 @@ The loaded `config` also has a few other useful fields: ## Requesting signatures -At its core the Signer Module simply provides a signature on a 32-byte data digest. The signatures are currently provided with either the validator keys (BLS) or a proxy key (BLS or ECDSA) for a given validator key, both on the [builder domain](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/common/src/signature.rs#L88-L96). +At its core the Signer Service simply provides a signature on a 32-byte data digest. The signatures are currently provided with either the validator keys (BLS) or a proxy key (BLS or ECDSA) for a given validator key, both on the [builder domain](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/common/src/signature.rs#L88-L96). In the example we use `TreeHash`, already used in the CL, to create the digest from a custom struct: ```rust diff --git a/docs/docs/developing/commit-modules.md b/docs/docs/developing/commit-modules.md new file mode 100644 index 00000000..4998cc32 --- /dev/null +++ b/docs/docs/developing/commit-modules.md @@ -0,0 +1,171 @@ +--- +sidebar_position: 1 +--- + +# Commit Modules + +Commit-Boost provides an open platform for developers to create and distribute commitment protocol sidecars. **Commit Modules** are the primary way to add custom logic — they run as sidecar processes alongside the PBS and Signer services, and can request signatures from the proposer. + +> **For system context**, see the [Architecture Overview](../architecture/overview.md). + +## Config entry + +Each commit module is declared in the `cb-config.toml` file under a `[[modules]]` entry: + +```toml +[[modules]] +id = "DA_COMMIT" +type = "commit" +docker_image = "my-module-image" +signing_id = "0x6a33a23ef26a4836979edff86c493a69b26ccf0b4a16491a815a13787657431b" +``` + +| Field | Description | +|---|---| +| `id` | A unique identifier for the module (used for JWT scoping and container naming). | +| `type` | **Must be `"commit"`.** This is the only valid value. | +| `docker_image` | The Docker image to run for this module. | +| `signing_id` | A 32-byte identifier used to scope signatures to this module (see [Signing structure](#signing-structure)). | +| (custom) | Additional fields are passed through as opaque config to the module's runtime. | + +### ⚠️ `type = "pbs"` is not supported + +Setting `type = "pbs"` in a `[[modules]]` entry is **not** a supported path. The configuration parser will reject it at parse time with an error like: + +``` +unknown variant 'pbs', expected 'commit' +``` + +If you want to extend the PBS binary itself, see [Extending PBS](./extending-pbs.md). + +## Rust SDK usage + +While a module can be written in any language, we provide Rust utilities to simplify loading and running modules. Add to your `Cargo.toml`: + +```toml +commit-boost = { git = "https://github.com/Commit-Boost/commit-boost-client", version = "..." } +``` + +Import the prelude: + +```rust +use commit_boost::prelude::*; +``` + +### Loading module config + +Your module will likely need a configuration section for the Node Operator to customize. Define it as a struct and pass it to `load_commit_module_config`: + +```rust +#[derive(Debug, Deserialize)] +struct ExtraConfig { + sleep_secs: u64, +} + +let config = load_commit_module_config::().unwrap(); +let to_sleep = config.extra.sleep_secs; +``` + +The returned `StartCommitModuleConfig` also provides: +- `id` — unique module ID +- `chain` — chain spec +- `signer_client` — a pre-configured `SignerClient` to call the [SignerAPI](/api) + +### Requesting signatures + +At its core, the Signer Service provides a signature on a 32-byte data digest. Signatures are provided using either the validator keys (BLS) or a proxy key (BLS or ECDSA), both on the [builder domain](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/common/src/signature.rs#L88-L96). + +Use `TreeHash` to create a digest from a custom struct: + +```rust +#[derive(TreeHash)] +struct Datagram { + data: u64, +} +``` + +To request a signature, you need a public key. Get available keys: + +```rust +let pubkeys = config.signer_client.get_pubkeys().await.unwrap(); +``` + +Requests are authenticated using a JWT, which must be refreshed periodically: + +```rust +config.signer_client.refresh_token().await.unwrap(); +``` + +The `SIGNER_JWT_EXPIRATION` constant gives the expiry duration in seconds. + +#### Consensus key signatures + +```rust +let datagram = Datagram { data: 1 }; +let request = SignConsensusRequest::builder(pubkey).with_msg(&datagram); +let signature = config.signer_client.request_consensus_signature(&request).await.unwrap(); +``` + +Where `pubkey` is the validator (consensus) public key. + +#### Proxy key signatures + +First, generate a proxy key for a given consensus key. We support BLS and ECDSA: + +```rust +// BLS proxy +let proxy_delegation = config.signer_client.generate_proxy_key_bls(pubkey).await?; +let proxy_pubkey = proxy_delegation.message.proxy; + +// ECDSA proxy +let proxy_delegation = config.signer_client.generate_proxy_key_ecdsa(pubkey).await?; +let proxy_address = proxy_delegation.message.proxy; +``` + +Then request a signature using the proxy key: + +```rust +// BLS proxy +let datagram = Datagram { data: 1 }; +let request = SignProxyRequest::builder(proxy_pubkey).with_msg(&datagram); +let signature = config.signer_client.request_proxy_signature_bls(&request).await.unwrap(); + +// ECDSA proxy +let datagram = Datagram { data: 1 }; +let request = SignProxyRequest::builder(proxy_address).with_msg(&datagram); +let signature = config.signer_client.request_proxy_signature_ecdsa(&request).await.unwrap(); +``` + +### Signing structure + +For details on the signing structure — including domain separation, nonces, SSZ Merkle tree construction, and the signing ID format — see [Requesting Proposer Commitment Signatures](./prop-commit-signing.md). + +## Metrics + +Modules can record custom metrics that are automatically scraped by Prometheus. + +### Define metrics + +Use the `prometheus` crate: + +```rust +static ref MY_CUSTOM_REGISTRY: Registry = Registry::new_custom(Some("da_commit".to_string()), None).unwrap(); +static ref SIG_RECEIVED_COUNTER: IntCounter = IntCounter::new("signature_received", "successful signature requests received").unwrap(); +``` + +### Start the metrics provider + +```rust +MY_CUSTOM_REGISTRY.register(Box::new(SIG_RECEIVED_COUNTER.clone())).unwrap(); +MetricsProvider::load_and_run(MY_CUSTOM_REGISTRY.clone()); +``` + +This starts a server with a `/metrics` endpoint on the configured port (default `9090`). + +### Record metrics + +```rust +SIG_RECEIVED_COUNTER.inc(); +``` + +For a full reference of available metrics, see the [Metrics catalog](../get_started/running/metrics.md) (once created; the Prometheus scrape target is already configured by the docker-init setup). diff --git a/docs/docs/developing/custom-modules.md b/docs/docs/developing/custom-modules.md index cf224448..c8b31ab9 100644 --- a/docs/docs/developing/custom-modules.md +++ b/docs/docs/developing/custom-modules.md @@ -9,4 +9,4 @@ Commit-Boost aims to provide an open platform for developers to create and distr There are two ways to leverage Commit-Boost modularity: 1. Commit Modules, which request signatures from the proposer, e.g. for preconfirmations ([example](https://github.com/Commit-Boost/commit-boost-client/tree/78bdc47bf89082f4d1ea302f9a3f86f609966b28/examples/da_commit)). -2. PBS Modules, which tweak the default PBS Module with additional logic, e.g. verifying additional constraints in `get_header` ([example](https://github.com/Commit-Boost/commit-boost-client/tree/78bdc47bf89082f4d1ea302f9a3f86f609966b28/examples/status_api)). +2. Custom PBS binaries, which extend the default PBS Service with additional logic, e.g. by implementing the BuilderAPI with custom constraints in `get_header` ([example](https://github.com/Commit-Boost/commit-boost-client/tree/78bdc47bf89082f4d1ea302f9a3f86f609966b28/examples/status_api)). diff --git a/docs/docs/developing/extending-pbs.md b/docs/docs/developing/extending-pbs.md new file mode 100644 index 00000000..e0ed526c --- /dev/null +++ b/docs/docs/developing/extending-pbs.md @@ -0,0 +1,100 @@ +--- +sidebar_position: 2 +--- + +# Extending PBS + +The PBS (Payload Building Service) binary that ships with Commit-Boost can be extended with custom logic. This is **not** a config-level module declaration like commit modules — instead you replace the PBS binary entirely by implementing the `DefaultBuilderApi` trait. + +## Before you extend PBS + +| You want to... | Use... | +|---|---| +| Request signatures from the proposer's validator keys (BLS/ECDSA) | [Commit Module](./commit-modules.md) — runs as a sidecar alongside PBS | +| Add custom constraints to `get_header`, `submit_block`, or other BuilderAPI methods | Extend PBS — replace the `DefaultBuilderApi` with your own implementation | +| Run custom logic that triggers on each slot but does not modify relay interaction | Commit Module — cheaper to maintain and deploy independently | +| Add new HTTP routes alongside the standard BuilderAPI | Extend PBS — implement `extra_routes()` on your custom `BuilderApi` | + +**Rule of thumb:** if you need to change how relay responses are filtered, validated, or transformed, extend PBS. If you want to request signatures or run slot-triggered logic independently, write a Commit Module. + +## How it works + +The PBS binary ships with the [`DefaultBuilderApi`](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/pbs/src/api.rs) struct, which implements [`BuilderApi`](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/pbs/src/api.rs) with default (MEV-Boost-compatible) behavior for each method. + +The trait covers: + +- `get_header` — fetch the best header from relays +- `get_status` — check relay health +- `submit_block` — publish blinded blocks +- `register_validator` — register validators with relays +- `reload` — hot-reload configuration +- `extra_routes` — add custom HTTP endpoints + +By implementing `BuilderApi` on your own struct, you can override any of these methods while reusing the default MEV-Boost logic by calling the corresponding free functions (`crate::get_header`, etc.) from within your override. + +### Reference example + +See [`examples/status_api/`](https://github.com/Commit-Boost/commit-boost-client/tree/main/examples/status_api) for a complete working example that: + +1. Defines a custom `ExtraConfig` struct with additional TOML fields (`inc_amount`). +2. Creates a custom `BuilderApiState` (`MyBuilderState`) to hold runtime state. +3. Implements `BuilderApi` that overrides `get_status` with custom logging and a counter, and adds a `/check` route via `extra_routes()`. +4. Loads config with `load_pbs_custom_config::()` and starts the service with `PbsService::run::<_, MyBuilderApi>(state)`. + +## Building and running a custom PBS binary + +### Dependencies + +Add the `commit-boost` crate to your `Cargo.toml`: + +```toml +commit-boost = { git = "https://github.com/Commit-Boost/commit-boost-client", version = "..." } +``` + +### Entry point + +Your `main.rs` should: + +1. Define your extra config (if any): + +```rust +#[derive(Debug, Deserialize)] +struct ExtraConfig { + inc_amount: u64, +} +``` + +2. Define your state (if any): + +```rust +#[derive(Clone)] +struct MyBuilderState { /* ... */ } +impl BuilderApiState for MyBuilderState {} +``` + +3. Implement `BuilderApi`: + +```rust +struct MyBuilderApi; + +#[async_trait] +impl BuilderApi for MyBuilderApi { + // Override methods here +} +``` + +4. Load config and run: + +```rust +let (pbs_config, extra) = load_pbs_custom_config::().await?; +let state = PbsState::new(pbs_config, config_path).with_data(MyBuilderState::from_config(extra)); +PbsService::run::(state).await +``` + +### Running + +Compile and run your binary. Set the same environment variables as the default PBS (see [Running with binary](../get_started/running/binary.md)). Your custom PBS handles the same BuilderAPI endpoints plus any extra routes you added. + +## Cross-reference + +For system context on how PBS fits into the Commit-Boost architecture, see [Architecture Overview](../architecture/overview.md). diff --git a/docs/docs/developing/signer-api.md b/docs/docs/developing/signer-api.md new file mode 100644 index 00000000..0651f8ba --- /dev/null +++ b/docs/docs/developing/signer-api.md @@ -0,0 +1,410 @@ +--- +sidebar_position: 4 +description: Full reference for the Commit-Boost Signer API — authentication, endpoints, error codes, and usage examples +--- + +# Signer API + +The Signer Service exposes an HTTP API that commit modules use to request proposer commitment signatures. All requests pass through the signer service's middleware, which validates authentication and routes the request to the appropriate signing backend (local keystore or [Dirk](https://github.com/attestantio/dirk)). + +The Signer Service listens on the port configured by `signer.port` in `cb-config.toml` (default: `20000`). + +For the Merkle tree structure that underlies every proposer commitment signature, see [Requesting Proposer Commitment Signatures](./prop-commit-signing.md#structure-of-a-signature). + +--- + +## Authentication + +Every request (except the health-check endpoint) must present a Bearer token in the `Authorization` header. + +### Module JWT + +Modules authenticate with a **signed JWT** using the pre-shared secret (`CB_SIGNER_JWT`). The JWT is an HS256 token with the following claims: + +| Claim | Type | Required | Description | +|-------|------|----------|-------------| +| `module` | string | always | The module's `id` from the `[[modules]]` entry in `cb-config.toml`. | +| `route` | string | always | The exact request path, e.g. `/signer/v1/get_pubkeys`. | +| `exp` | integer | always | UNIX timestamp for when the token expires. | +| `payload_hash` | string | POST only | Keccak-256 hash of the JSON-encoded request body, with `0x` prefix. Not required for GET requests — the middleware skips `payload_hash` validation when there is no body. | + +The `payload_hash` claim prevents JWT replay attacks: a token issued for one POST request body cannot be reused with a different body on the same route. + +**Lifecycle:** + +- Expiry is controlled by the `SIGNER_JWT_EXPIRATION` environment variable (default from the `commit-boost` crate's constant). +- **Refresh is client-side.** There is no refresh endpoint. The module generates a new JWT locally using the pre-shared secret. The SDK's `SignerClient::refresh_token()` handles this automatically — in production, use the SDK rather than crafting JWTs manually. + +### Admin token + +Administrative endpoints (`/reload`, `/revoke_jwt`) authenticate with a **separate JWT** signed with the `CB_SIGNER_ADMIN_JWT` secret. The admin JWT uses the same HS256 algorithm and includes `admin: true` in its claims, plus `route` and `exp` and optionally `payload_hash`. + +The admin JWT secret is configured via the `CB_SIGNER_ADMIN_JWT` environment variable. + +### Rate limiting + +The signer service rate-limits clients that accumulate too many failed authentication attempts. By default, **3 failed authentications within 5 minutes** locks a client out. These values can be modified in the `[signer]` section of `cb-config.toml`: + +```toml +[signer] +jwt_auth_fail_limit = 3 +jwt_auth_fail_timeout_seconds = 300 +``` + +The rate limit is applied per IP address. If running behind a reverse proxy, configure the [reverse proxy header setup](../get_started/configuration.md#rate-limit) so the correct client IP is extracted. + +--- + +## Quickstart + +### 1. Get a JWT + +An easy way to get a valid module JWT is to inspect the logs after the signer starts (the config output shows the configured modules and JWT secrets), or generate one locally: + +```bash +# Generate a JWT valid for 1 hour for module MY_MODULE +python3 -c " +import jwt, time +claims = { + 'module': 'MY_MODULE', + 'route': '/signer/v1/get_pubkeys', + 'exp': int(time.time()) + 3600 +} +print(jwt.encode(claims, 'my-secret', algorithm='HS256')) +" +``` + +### 2. List available pubkeys (GET — no body) + +Since `GET /signer/v1/get_pubkeys` has no request body, no `payload_hash` is needed in the JWT: + +```bash +export JWT='' +curl -H "Authorization: Bearer $JWT" http://localhost:20000/signer/v1/get_pubkeys +``` + +Example response: + +```json +{ + "keys": [ + { + "consensus": "0xa3366b54f28e4bf1461926a3c70cdb0ec432b5c92554ecaae3742d33fb33873990cbed1761c68020e6d3c14d30a22050", + "proxy_bls": [], + "proxy_ecdsa": [] + } + ] +} +``` + +### 3. Request a signature (POST — requires payload_hash) + +For POST endpoints, the JWT must include a `payload_hash` claim that matches the Keccak-256 hash of the JSON-encoded request body. Use a two-step pattern: generate a token with the correct hash, then use it in the request. + +**Save this as `gen-jwt.sh`:** + +```bash +#!/usr/bin/env bash +python3 -c " +import json, eth_hash, jwt, time + +body = json.dumps({'pubkey': '0x...', 'object_root': '0x...', 'nonce': 0}) +payload_hash = '0x' + eth_hash.keccak256(body.encode()).hex() +claims = { + 'module': 'MY_MODULE', + 'route': '/signer/v1/request_signature/bls', + 'exp': int(time.time()) + 3600, + 'payload_hash': payload_hash +} +print(jwt.encode(claims, 'my-secret', algorithm='HS256')) +" +``` + +Then send the request: + +```bash +curl -X POST \ + -H "Authorization: Bearer $(./gen-jwt.sh)" \ + -d '{"pubkey":"0x...","object_root":"0x...","nonce":0}' \ + http://localhost:20000/signer/v1/request_signature/bls +``` + +**In production**, use the SDK's `SignerClient`, which handles JWT lifecycle (creation, payload hashing, refresh) automatically. See the [Commit Module guide](./commit-module.md#requesting-signatures) for SDK examples. + +--- + +## Module endpoints + +These endpoints are available to commit modules and require a **module JWT** (`jwt_auth` middleware). + +| Method | Path | Auth | Description | +|--------|------|------|-------------| +| `GET` | `/signer/v1/get_pubkeys` | Module JWT | List available validator pubkeys and their proxy keys | +| `POST` | `/signer/v1/generate_proxy_key` | Module JWT | Create a BLS or ECDSA proxy key for a consensus pubkey | +| `POST` | `/signer/v1/request_signature/bls` | Module JWT | Sign data with a consensus BLS key | +| `POST` | `/signer/v1/request_signature/proxy-bls` | Module JWT | Sign data with a proxy BLS key | +| `POST` | `/signer/v1/request_signature/proxy-ecdsa` | Module JWT | Sign data with a proxy ECDSA key | + +### GET /signer/v1/get_pubkeys + +Returns all consensus validator public keys the signer has loaded, along with any proxy keys that have been generated for each consensus key. + +**Response:** + +```json +{ + "keys": [ + { + "consensus": "0x<96-hex-chars>", + "proxy_bls": ["0x<96-hex-chars>", "..."], + "proxy_ecdsa": ["0x<40-hex-chars>", "..."] + } + ] +} +``` + +### POST /signer/v1/generate_proxy_key + +Generates a new proxy keypair for the given consensus pubkey and scheme. The proxy key is authorised by the consensus key via a signed delegation. + +**Request body:** + +```json +{ + "pubkey": "0x<96-hex-chars>", + "scheme": "bls" +} +``` + +`scheme` must be `"bls"` or `"ecdsa"`. + +**Response (BLS example):** + +```json +{ + "message": { + "delegator": "0x<96-hex-chars>", + "proxy": "0x<96-hex-chars>" + }, + "signature": "0x<192-hex-chars>" +} +``` + +**Response (ECDSA example):** + +```json +{ + "message": { + "delegator": "0x<96-hex-chars>", + "proxy": "0x<40-hex-chars>" + }, + "signature": "0x<192-hex-chars>" +} +``` + +### POST /signer/v1/request_signature/bls + +Signs a 32-byte `object_root` with the BLS key corresponding to the given consensus pubkey. + +**Request body:** + +```json +{ + "pubkey": "0x<96-hex-chars>", + "object_root": "0x<64-hex-chars>", + "nonce": 0 +} +``` + +**Response:** + +```json +{ + "pubkey": "0x<96-hex-chars>", + "object_root": "0x<64-hex-chars>", + "module_signing_id": "0x<64-hex-chars>", + "nonce": 0, + "chain_id": 1, + "signature": "0x<192-hex-chars>" +} +``` + +### POST /signer/v1/request_signature/proxy-bls + +Same semantics as BLS consensus signing, but uses a **proxy BLS key** created via `generate_proxy_key` with `scheme: "bls"`. + +**Request body:** + +```json +{ + "proxy": "0x<96-hex-chars>", + "object_root": "0x<64-hex-chars>", + "nonce": 0 +} +``` + +Response has the same shape as `/request_signature/bls`. + +### POST /signer/v1/request_signature/proxy-ecdsa + +Uses a **proxy ECDSA key** created via `generate_proxy_key` with `scheme: "ecdsa"`. The request body specifies the proxy by its Ethereum address. + +**Request body:** + +```json +{ + "proxy": "0x<40-hex-chars>", + "object_root": "0x<64-hex-chars>", + "nonce": 0 +} +``` + +**Response:** + +```json +{ + "address": "0x<40-hex-chars>", + "object_root": "0x<64-hex-chars>", + "module_signing_id": "0x<64-hex-chars>", + "nonce": 0, + "chain_id": 1, + "signature": "0x<130-hex-chars>" +} +``` + +:::tip +ECDSA proxy signing is not available when the signer is using the Dirk backend. Dirk only supports BLS operations. +::: + +--- + +## Admin endpoints + +These endpoints are available for administrative tasks. They are served on the same port as the module endpoints but authenticate with a **separate admin JWT** (`admin_auth` middleware) or, in the case of `/status`, no authentication. + +| Method | Path | Auth | Description | +|--------|------|------|-------------| +| `POST` | `/reload` | Admin JWT | Reload signer configuration and optionally rotate secrets | +| `POST` | `/revoke_jwt` | Admin JWT | Revoke a module's access immediately | +| `GET` | `/status` | None | Health check | + +### POST /reload + +Hot-reloads the signer's configuration without restarting the process. The signer re-reads `cb-config.toml` and environment variables, then rebuilds its internal state: + +- **New modules** added to the config are registered. +- **Removed modules** are dropped from the access list. +- **JWT secrets and admin secret** are reset to their current environment variable values. +- Any runtime changes from previous `/revoke_jwt` or `/reload` body overrides are reverted. + +**Optional request body overrides** (applied on top of the config baseline): + +```json +{ + "jwt_secrets": "module_a=newsecret,module_b=anothersecret", + "admin_secret": "new-admin-secret" +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `jwt_secrets` | string | Comma-separated list of `=` pairs. Only modules present in the config can be overridden. | +| `admin_secret` | string | Override for the admin JWT secret. | + +**Response:** `200 OK` on success. `500` if the config could not be reloaded (previous state is preserved). + +**Common patterns:** + +1. **Add a new module without restarting:** Add the `[[modules]]` entry to `cb-config.toml`, set the module's JWT secret in the environment, then send `POST /reload` with an empty body. +2. **Rotate a JWT secret remotely:** Send `POST /reload` with the new secret in `jwt_secrets`. The module must already exist in the config. +3. **Revoke and later restore a module:** Use `/revoke_jwt` for immediate revocation, then `/reload` to restore if the module is still in the config. + +**Footguns:** +- Body overrides are **not persisted**. If the signer restarts, it falls back to config/environment values. Update the environment variable to match after rotation. +- Override validation is **atomic**. If any referenced module ID does not exist in the config, the entire reload is rejected. + +### POST /revoke_jwt + +Immediately removes a module from the signer's access list. The module will no longer be able to authenticate with its JWT. + +**Request body:** + +```json +{ + "module_id": "MY_MODULE" +} +``` + +**Response:** `200 OK` if the module was found and removed. `404` if the module ID does not exist. + +:::note +If the module is still present in `cb-config.toml`, the next `/reload` will re-add it. Remove the module from the config to make revocation permanent. +::: + +### GET /status + +Simple health check. Returns `200 OK` with no body. No authentication required. + +--- + +## Error codes + +All error responses follow a consistent JSON format: + +```json +{ + "code": , + "message": "" +} +``` + +| HTTP Status | Code | Meaning | +|-------------|------|---------| +| `400` | `bad request` | The request body is malformed, a pubkey format is invalid, the signing ID is missing from config, or the operation is not supported by the current backend (e.g. ECDSA proxy with Dirk). | +| `401` | `unauthorized` | Missing or invalid JWT. The token may be expired, signed with the wrong secret, or missing required claims. | +| `404` | `not found` | The requested consensus signer, proxy signer, or module ID does not exist. | +| `429` | `rate limited` | Too many failed authentication attempts — retry after the timeout period. | +| `500` | `internal error` | Something went wrong on the server side. The request was valid but could not be fulfilled. | +| `502` | `bad gateway` | The signer is running in Dirk mode but Dirk is unreachable. | + +--- + +## Configuration reference + +The signer service is configured in `cb-config.toml`. See the [Configuration](../get_started/configuration.md#signer-service) page for the full reference, including keystore formats, proxy key store, TLS, and Dirk setup. + +--- + +## Common workflows + +### Requesting a BLS consensus signature + +```mermaid +sequenceDiagram + participant Module + participant Signer + participant Local/Dirk + + Module->>Module: Create JWT with payload_hash + Module->>Signer: POST /signer/v1/request_signature/bls + Signer->>Signer: Validate JWT (route, payload_hash) + Signer->>Local/Dirk: Sign(object_root, signing_id, nonce, chain_id) + Local/Dirk-->>Signer: BLS signature + Signer-->>Module: BlsSignResponse +``` + +### Generating and using a proxy key + +```mermaid +sequenceDiagram + participant Module + participant Signer + + Module->>Signer: POST /signer/v1/generate_proxy_key (pubkey, scheme) + Signer->>Signer: Generate proxy keypair + Signer->>Signer: Sign delegation with consensus key + Signer-->>Module: SignedProxyDelegation + Note over Module: Store proxy key securely + Module->>Signer: POST /signer/v1/request_signature/proxy-bls (proxy, object_root) + Signer-->>Module: BlsSignResponse +``` diff --git a/docs/docs/get_started/configuration.md b/docs/docs/get_started/configuration.md index 7eefb277..611514e6 100644 --- a/docs/docs/get_started/configuration.md +++ b/docs/docs/get_started/configuration.md @@ -28,16 +28,16 @@ You can find a list of MEV-Boost Holesky relays [here](https://www.coincashew.co After the sidecar is started, it will expose a port (`18550` in this example), that you need to point your CL to. This may be different depending on which CL you're running, check out [here](https://docs.flashbots.net/flashbots-mev-boost/getting-started/system-requirements#consensus-client-configuration-guides) for a list of configuration guides. :::note -In this setup, the signer module will not be started. +In this setup, the Signer Service will not be started. ::: -## Signer module +## Signer Service -Commit-Boost supports both local and remote signers. The signer module is responsible for signing the transactions that other modules generates. Please note that only one signer at a time is allowed. +Commit-Boost supports both local and remote signers. The Signer Service is responsible for signing the transactions that other modules generates. Please note that only one signer at a time is allowed. ### Local signer -To start a local signer module, you need to include its parameters in the config file +To start a local Signer Service, you need to include its parameters in the config file ```toml [pbs] @@ -221,7 +221,7 @@ All keys have the same password stored in `secrets/password.txt` ### Proxy keys store -Proxy keys can be used to sign transactions with a different key than the one used to sign the block. Proxy keys are generated by the Signer module and authorized by the validator key. Each module have their own proxy keys, that can be BLS or ECDSA. +Proxy keys can be used to sign transactions with a different key than the one used to sign the block. Proxy keys are generated by the Signer Service and authorized by the validator key. Each module have their own proxy keys, that can be BLS or ECDSA. To persist proxy keys across restarts, you must enable the proxy store in the config file. There are 2 options for this: @@ -311,7 +311,7 @@ You might choose to use an external service to sign the transactions. For now, t #### Web3Signer -Web3Signer implements the same API as Commit-Boost, so there's no need to set up a Signer module. The parameters needed for the remote signer are: +Web3Signer implements the same API as Commit-Boost, so there's no need to set up a Signer Service. The parameters needed for the remote signer are: ```toml [signer.remote] @@ -320,7 +320,7 @@ url = "https://remote.signer.url" #### Dirk -Dirk is a distributed key management system that can be used to sign transactions. In this case the Signer module is needed as an intermediary between the modules and Dirk. The following parameters are needed: +Dirk is a distributed key management system that can be used to sign transactions. In this case the Signer Service is needed as an intermediary between the modules and Dirk. The following parameters are needed: ```toml [signer.dirk] @@ -344,7 +344,7 @@ wallets = ["AnotherWallet", "DistributedWallet"] ``` - `cert_path` and `key_path` are the paths to the client certificate and key used to authenticate with Dirk. -- `wallets` is a list of wallets from which the Signer module will load all accounts as consensus keys. Generated proxy keys will have format `///`, so accounts found with that pattern will be ignored. +`wallets` is a list of wallets from which the Signer Service will load all accounts as consensus keys. Generated proxy keys will have format `///`, so accounts found with that pattern will be ignored. - `secrets_path` is the path to the folder containing the passwords of the generated proxy accounts, which will be stored in `////.pass`. Additionally, you can set a proxy store so that the delegation signatures for generated proxy keys are stored locally. As these signatures are not sensitive, the only supported store type is `File`: @@ -466,7 +466,7 @@ sleep_secs = 5 A few things to note: -- We now added a `signer` section which will be used to create the Signer module. +- We now added a `signer` section which will be used to create the Signer Service. - There is now a `[[modules]]` section which at a minimum needs to specify the module `id`, `type` and `docker_image`. For modules with type `commit`, which will be used to access the Signer service and request signatures for preconfs, you will also need to specify the module's unique `signing_id` (see [the propser commitment documentation](../developing/prop-commit-signing.md)). Additional parameters needed for the business logic of the module will also be here. To learn more about developing modules, check out [here](/category/developing). @@ -474,7 +474,7 @@ To learn more about developing modules, check out [here](/category/developing). ## Vouch -[Vouch](https://github.com/attestantio/vouch) is a multi-node validator client built by [Attestant](https://www.attestant.io/). Vouch is particular in that it also integrates an MEV-Boost client to interact with relays. The Commit-Boost PBS module is compatible with the Vouch `blockrelay` since it implements the same Builder-API as relays. For example, depending on your setup and preference, you may want to fetch headers from a given relay using Commit-Boost vs using the built-in Vouch `blockrelay`. +[Vouch](https://github.com/attestantio/vouch) is a multi-node validator client built by [Attestant](https://www.attestant.io/). Vouch is particular in that it also integrates an MEV-Boost client to interact with relays. The Commit-Boost PBS Service is compatible with the Vouch `blockrelay` since it implements the same Builder-API as relays. For example, depending on your setup and preference, you may want to fetch headers from a given relay using Commit-Boost vs using the built-in Vouch `blockrelay`. ### Configuration @@ -485,7 +485,7 @@ For simplicity, assume that in Vouch `blockrelay.listen-address: 127.0.0.0:19550 #### Beacon Node to Vouch -In this setup, the BN Builder-API endpoint will be pointing to the Vouch `blockrelay` (e.g. for Lighthouse you will need the flag `--builder=http://127.0.0.0:19550`). +In this setup, the BN Builder-API endpoint will be pointing to the PBS Service (e.g. for Lighthouse you will need the flag `--builder=http://127.0.0.0:18550`). Modify the `blockrelay.config` file to add Commit-Boost: @@ -518,7 +518,7 @@ Commit-Boost supports hot-reloading the configuration file. This means that you docker compose -f cb.docker-compose.yml exec cb_signer curl -X POST http://localhost:20000/reload ``` -### Signer module reload +### Signer Service reload When the signer receives a reload request it re-reads the configuration file and environment variables, rebuilding its internal state to match: @@ -556,8 +556,8 @@ Send `POST /revoke_jwt` with the module ID. This removes the module from the sig ### Notes -- The hot reload feature is available for PBS modules (both default and custom) and signer module. +- The hot reload feature is available for PBS Service (both default and custom) and Signer Service. - Changes related to listening hosts and ports will not been applied, as it requires the server to be restarted. - If running in Docker containers, changes in `volumes` will not be applied, as it requires the container to be recreated. Be careful if changing a path to a local file as it may not be accessible from the container. -- Custom PBS modules may override the default behaviour of the hot reload feature to parse extra configuration fields. Check the [examples](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/status_api/src/main.rs) for more details. +- Custom PBS Service may override the default behaviour of the hot reload feature to parse extra configuration fields. Check the [examples](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/status_api/src/main.rs) for more details. - In case the reload fails (most likely because of some misconfigured option), the server will return a 500 error and the previous configuration will be kept. diff --git a/docs/docs/get_started/mux-key-loaders.md b/docs/docs/get_started/mux-key-loaders.md new file mode 100644 index 00000000..b28a6b15 --- /dev/null +++ b/docs/docs/get_started/mux-key-loaders.md @@ -0,0 +1,237 @@ +--- +description: Mux (multiplexer) configuration and key loader types +--- + +# Mux key loaders + +The PBS multiplexer — *mux* for short — lets you route different validators to different relay sets or timing game configurations. Instead of a single `[[relays]]` list for all your validators, you declare one or more `[[mux]]` entries that match specific validator pubkeys to custom relay and timing settings. + +Use a mux when you need: + +- **Different relay sets for different validators** — for example, Lido or SSV node operators who send some validators to an operator-specific relay while the rest use the global relay set. +- **Per-group timing game parameters** — `timeout_get_header_ms` and `late_in_slot_time_ms` can be set per-mux, overriding the PBS defaults for those validators. +- **Dynamic key loading from on-chain or external sources** — the mux key loaders (File, URL, Registry) populate the mux's validator set automatically, so you don't have to list hundreds or thousands of pubkeys by hand. + +Mux entries are an optional addition to the `[[relays]]` section. If you don't need per-validator routing, you can ignore this page entirely. + +--- + +## Mux entry matching + +Each `[[mux]]` entry declares a set of validator pubkeys. The mux system enforces that these sets are **disjoint** — a validator pubkey should appear in at most one mux entry. If a pubkey is duplicated across mux entries, the sidecar will refuse to start. + +Matching uses **first-match semantics**: when the PBS receives a request for a validator, it checks each mux entry in the order they appear in the config file. The first mux whose pubkey set contains the validator's key wins. Validators that don't match any mux entry fall through to the global `[[relays]]` configuration. + +```toml +# Global relays — used for validators not matching any mux +[[relays]] +id = "global-relay" +url = "..." + +# First mux entry — checked first +[[mux]] +id = "timing-sensitive" +validator_pubkeys = [ + "0x80c7f782b2467c5898c5516a8b6595d75623960b4afc4f71ee07d40985d20e117ba35e7cd352a3e75fb85a8668a3b745", +] + +[[mux.relays]] +id = "fast-relay" +url = "..." +``` + +### Matching rules summary + +| Condition | Behaviour | +|---|---| +| Pubkey matches a mux entry | That mux's relays and timing config are used | +| Pubkey appears in multiple mux entries | Validation error — sidecar fails to start | +| Pubkey doesn't match any entry | Falls through to global `[[relays]]` | +| A mux has no pubkeys (empty set) | Validation error — each mux must have at least one pubkey | + +The pubkey set for a mux can come from two sources combined: +1. **Inline `validator_pubkeys`** — a list of hex-prefixed BLS pubkeys in the config file itself. +2. **A loader plugin** — loads additional keys from a file, URL, or on-chain registry. Keys from the loader are merged into the mux's pubkey set. + +--- + +## Key loaders + +Key loaders are how you populate a mux with validator pubkeys without listing them manually. They are configured via the `loader` field inside a `[[mux]]` entry. + +### File loader + +Loads pubkeys from a flat JSON file on disk. + +**Schema:** A JSON array of hex-prefixed BLS public key strings. + +```json +[ + "0x8160998addda06f2956e5d1945461f33dbc140486e972b96f341ebf2bdb553a0e3feb127451f5332dd9e33469d37ca67", + "0x87b5dc7f78b68a7b5e7f2e8b9c2115f968332cbf6fc2caaaaa2c9dc219a58206b72c924805f2278c58b55790a2c3bf17", + "0x89e2f50fe5cd07ed2ff0a01340b2f717aa65cced6d89a79fdecc1e924be5f4bbe75c11598bb9a53d307bb39b8223bc52" +] +``` + +**Config:** Specify the path relative to the config file, or as an absolute path. + +```toml +[[mux]] +id = "my-mux" +loader = "./path/to/keys.json" + +[[mux.relays]] +id = "my-relay" +url = "..." +``` + +**Environment variable override:** The path can be overridden at runtime via `CB_MUX_PATH_{id}` where `{id}` is the mux identifier. For a mux with `id = "lido-mux"`, the variable would be `CB_MUX_PATH_lido-mux`. This is useful when you want to keep the config file the same across deployments but point to different key files. + +```bash +export CB_MUX_PATH_lido-mux="/path/to/override.json" +``` + +**Chains supported:** All chains. + +--- + +### URL loader + +Loads the same JSON schema from an HTTP(S) endpoint. The endpoint must return a JSON array of hex-prefixed BLS public keys (identical format to the File loader). + +```toml +[[mux]] +id = "url-mux" +loader = { url = "https://keys.example.com/validators.json" } + +[[mux.relays]] +id = "my-relay" +url = "..." +``` + +**Security:** HTTPS is recommended. HTTP URLs work but trigger a warning at startup. + +**Request behaviour:** +- One-shot GET request — no retry logic. +- Timeout is controlled by `default_pbs.http_timeout_seconds` (default: 10s). +- The response body is read in full and parsed as JSON. + +**Chains supported:** All chains. + +--- + +### Registry loader + +Loads validator pubkeys from an on-chain or network registry. This is the most powerful loader — it resolves pubkeys automatically from a data source that stays in sync as validators are added or removed. + +Two registries are supported: + +| Registry | `registry` value | Key source | Authentication | +|---|---|---|---| +| Lido | `"lido"` | On-chain contract via RPC | RPC URL (from `[pbs]` config) | +| SSV | `"ssv"` | SSV node API or public API | SSV API URLs (from `[pbs]` config) | + +#### Lido registry + +Reads validator pubkeys from Lido's on-chain NodeOperatorsRegistry or CSModule registry, depending on the module type. The sidecar connects to the configured RPC endpoint and calls the contract's `getSigningKeys` method with pagination. + +**Requirements:** `rpc_url` must be set in the `[pbs]` configuration. + +```toml +[pbs] +port = 18550 +rpc_url = "https://ethereum-rpc.publicnode.com" + +[[mux]] +id = "lido-mux" +loader = { registry = "lido", node_operator_id = 8, lido_module_id = 1 } + +[[mux.relays]] +id = "lido-relay" +url = "..." +``` + +**Fields:** + +| Field | Type | Required | Description | +|---|---|---|---| +| `registry` | string | Yes | Must be `"lido"` | +| `node_operator_id` | integer | Yes | Lido node operator ID | +| `lido_module_id` | integer | No (default: `1`) | Lido staking module ID | +| `enable_refreshing` | boolean | No (default: `false`) | Whether to periodically refresh keys at runtime (see below) | + +**Chain support:** + +| Chain | `lido_module_id` | Module type | Contract type | +|---|---|---|---| +| Mainnet | 1 | Curated (NodeOperatorsRegistry) | `NodeOperatorsRegistry` | +| Mainnet | 2 | SimpleDVT | `NodeOperatorsRegistry` | +| Mainnet | 3 | Community Staking (CSM) | `CSModule` | +| Holesky | 1 | Curated (NodeOperatorsRegistry) | `NodeOperatorsRegistry` | +| Holesky | 2 | SimpleDVT | `NodeOperatorsRegistry` | +| Holesky | 3 | Sandbox | `NodeOperatorsRegistry` | +| Holesky | 4 | Community Staking (CSM) | `CSModule` | +| Hoodi | 1 | Curated (NodeOperatorsRegistry) | `NodeOperatorsRegistry` | +| Hoodi | 2 | SimpleDVT | `NodeOperatorsRegistry` | +| Hoodi | 3 | Sandbox | `NodeOperatorsRegistry` | +| Hoodi | 4 | Community Staking (CSM) | `CSModule` | +| Sepolia | 1 | — | `NodeOperatorsRegistry` | + +Module ids 1 and 2 use the `NodeOperatorsRegistry` contract. Module id 3 (Mainnet) and module id 4 (Holesky / Hoodi) use the `CSModule` (Community Staking Module) contract, which has a different ABI. The sidecar detects the module type automatically based on chain and module id. + +**Dynamic refreshing:** When `enable_refreshing = true`, the sidecar periodically re-fetches keys from the on-chain registry at runtime. New validators that register with the node operator are picked up automatically without a restart. This is useful for growing node operator deployments where you don't want to restart the sidecar every time a new validator is added. + +--- + +#### SSV registry + +Loads validator pubkeys from the SSV network. The sidecar first tries to fetch keys from your local SSV node API. If that fails, it falls back to the public SSV API. + +**Requirements:** `ssv_node_api_url` and `ssv_public_api_url` must be set in the `[pbs]` configuration. + +```toml +[pbs] +port = 18550 +ssv_node_api_url = "http://localhost:3030/" +ssv_public_api_url = "https://api.ssv.network/" + +[[mux]] +id = "ssv-mux" +loader = { registry = "ssv", node_operator_id = 200 } + +[[mux.relays]] +id = "ssv-relay" +url = "..." +``` + +**Fields:** + +| Field | Type | Required | Description | +|---|---|---|---| +| `registry` | string | Yes | Must be `"ssv"` | +| `node_operator_id` | integer | Yes | SSV node operator ID | +| `enable_refreshing` | boolean | No (default: `false`) | Whether to periodically refresh keys at runtime | + +**API sources (fallback chain):** + +1. **SSV node API** (preferred): `GET {ssv_node_api_url}validators` with a JSON body `{"operators": [node_operator_id]}`. Response contains a `data` array of validators with hex-encoded `public_key` fields. +2. **Public API** (fallback): `GET {ssv_public_api_url}{chain}/validators/in_operator/{node_operator_id}?perPage=100&page={page}` with pagination. Response contains a `validators` array and `pagination` object. + +If the node API call fails (timeout, connection error, etc.), the sidecar logs a warning and falls back to the public API. + +**Chains supported:** Mainnet, Holesky, and Hoodi. + +--- + +## Reference config + +For a complete working example with multiple mux entries — File loader, Lido registry, and SSV registry — see: + +- [`examples/configs/pbs_mux.toml`](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/configs/pbs_mux.toml) + +--- + +## See also + +- [Configuration reference](./configuration.md) — full config field listing +- [Signer API](../developing/signer-api.md) — key loading for the Signer Service \ No newline at end of file diff --git a/docs/docs/get_started/overview.md b/docs/docs/get_started/overview.md index b5719567..95579693 100644 --- a/docs/docs/get_started/overview.md +++ b/docs/docs/get_started/overview.md @@ -9,12 +9,12 @@ Commit-Boost is primarily based on [Docker](https://www.docker.com/) to enable m Each component roughly maps to a container: from a single `.toml` config file, the node operator can specify which modules they want to run, and Commit-Boost takes care of spinning up the services and creating links between them. Commit-Boost ships with two core services: -- A PBS module which implements the [BuilderAPI](https://ethereum.github.io/builder-specs/) for [MEV Boost](https://docs.flashbots.net/flashbots-mev-boost/architecture-overview/specifications). -- A signer module, which implements the [Signer API](/api) and provides the interface for modules to request proposer commitments. +- A PBS service which implements the [BuilderAPI](https://ethereum.github.io/builder-specs/) for [MEV Boost](https://docs.flashbots.net/flashbots-mev-boost/architecture-overview/specifications). +- A Signer Service, which implements the [Signer API](/api) and provides the interface for modules to request proposer commitments. ## Setup -The Commit-Boost program can create a dynamic `docker-compose` file, with services and ports already set up. +The Commit-Boost binary can create a dynamic `docker-compose` file, with services and ports already set up. Whether you're using Docker or running the binaries natively, you can compile from source directly from the repo, or download binaries and fetch docker images from the official releases. diff --git a/docs/docs/get_started/running/binary.md b/docs/docs/get_started/running/binary.md index 8f51fe65..0c572b0e 100644 --- a/docs/docs/get_started/running/binary.md +++ b/docs/docs/get_started/running/binary.md @@ -21,12 +21,12 @@ Modules need some environment variables to work correctly. - `CB_METRICS_PORT`: optional, port where to expose the `/metrics` endpoint for Prometheus. - `CB_LOGS_DIR`: optional, directory to store logs. This will override the directory in the `.toml` config. -### PBS Module +### PBS Service -- `CB_PBS_ENDPOINT`: optional, override to specify the `IP:port` endpoint where the PBS module will open the port for the beacon node. +- `CB_PBS_ENDPOINT`: optional, override to specify the `IP:port` endpoint where the PBS Service will open the port for the beacon node. - `CB_MUX_PATH_{ID}`: optional, override where to load mux validator keys for mux with `id=\{ID\}`. -### Signer Module +### Signer Service - `CB_SIGNER_ADMIN_JWT`: secret to use for admin JWT. - `CB_SIGNER_ENDPOINT`: optional, override to specify the `IP:port` endpoint to bind the signer server to. @@ -49,7 +49,7 @@ Modules need some environment variables to work correctly. #### Commit modules -- `CB_SIGNER_URL`: required, url to the signer module server. +- `CB_SIGNER_URL`: required, url to the Signer Service server. - `CB_SIGNER_JWT`: required, jwt to use for signature requests. Modules might also have additional envs required, which should be detailed by the maintainers. diff --git a/docs/docs/get_started/running/docker.md b/docs/docs/get_started/running/docker.md index 81fd9f85..12fd2287 100644 --- a/docs/docs/get_started/running/docker.md +++ b/docs/docs/get_started/running/docker.md @@ -13,7 +13,7 @@ commit-boost init --config cb-config.toml ``` This will create up to three files: - `cb.docker-compose.yml` which contains the full setup of the Commit-Boost services. -- `.cb.env` with local env variables, including JWTs for modules, only created if the signer module is enabled. +- `.cb.env` with local env variables, including JWTs for modules, only created if the Signer Service is enabled. - `target.json` which enables dynamic discovery of services for metrics scraping via Prometheus, only created if metrics are enabled. ## Start @@ -133,9 +133,9 @@ Currently, the program will always export the PBS service's API port in one of t ``` -## Example with PBS, Signer, and a Signer Module +## Example with PBS, Signer, and a Commit Module -In this scenario we will be running the PBS service, the Signer service, and a module (`DA_COMMIT`) that interacts with the Signer service's API. +In this scenario we will be running the PBS service, the Signer service, and a commit module (`DA_COMMIT`) that interacts with the Signer service's API. All of both PBS's and the Signer's parameters are controlled via the [Commit-Boost TOML configuration file](../configuration.md); the services cannot currently be controlled with command-line arguments. Therefore it is crucial to ensure that you have a configuration file present with all of the settings you require *before* starting the services, as this file will be mounted within the Docker containers as a volume in read-only mode. @@ -267,7 +267,7 @@ CB_JWT_DA_COMMIT=mwDSSr7chwy9eFf7RhedBoyBtrwFUjSQ CB_JWTS=DA_COMMIT=mwDSSr7chwy9eFf7RhedBoyBtrwFUjSQ ``` -The Signer service needs JWT authentication from each of its modules. The program creates these and embeds them into the containers via environment variables automatically for convenience. This is demonstrated for the Signer module within the `environment` compose block: the `CB_JWTS: ${CB_JWTS}` forwards the `CB_JWTS` environment variable that's present when running Docker compose. The program requests that you do so via the command `docker compose --env-file "./.cb.env" -f "./cb.docker-compose.yml" up -d`; the `--env-file "./.cb.env"` handles loading the program's JWT output into this environment variable. +The Signer service needs JWT authentication from each of its modules. The program creates these and embeds them into the containers via environment variables automatically for convenience. This is demonstrated for the Signer Service within the `environment` compose block: the `CB_JWTS: ${CB_JWTS}` forwards the `CB_JWTS` environment variable that's present when running Docker compose. The program requests that you do so via the command `docker compose --env-file "./.cb.env" -f "./cb.docker-compose.yml" up -d`; the `--env-file "./.cb.env"` handles loading the program's JWT output into this environment variable. Similarly, for the `cb_da_commit` module, the `CB_SIGNER_JWT: ${CB_JWT_DA_COMMIT}` line within its `environment` block will set the JWT that it should use to authenticate with the Signer service. diff --git a/docs/docs/get_started/running/k8s.md b/docs/docs/get_started/running/k8s.md new file mode 100644 index 00000000..4cdd5a4b --- /dev/null +++ b/docs/docs/get_started/running/k8s.md @@ -0,0 +1,75 @@ +--- +description: Deploy Commit-Boost on Kubernetes +--- + +# Kubernetes + +Commit-Boost can be deployed on Kubernetes using the [Helm chart](https://helm.sh/) available in the repository's `provisioning/k8s/commit-boost/` directory. + +## Scope limitation + +:::warning +The current Helm chart supports only the **PBS Service**. It does **not** support the Signer Service or custom commit modules. If you need Signer or module support, please use the [Docker](./docker.md) or [Binary](./binary.md) deployment methods instead. +::: + +## Prerequisites + +- A Kubernetes cluster +- [Helm](https://helm.sh/docs/intro/install/) installed (v3+) + +## Installation + +1. Clone the repository or navigate to the chart directory: + +```bash +git clone https://github.com/Commit-Boost/commit-boost-client.git +cd commit-boost-client/provisioning/k8s/commit-boost +``` + +2. Edit the `values.yaml` file to configure the PBS service according to your needs. The key configuration options are described in the [Values table](#values) below. + +3. Install the chart: + +```bash +helm install commit-boost . -f values.yaml +``` + +This will deploy the Commit-Boost PBS service. By default, the PBS service is available on port `18550`. Point your beacon nodes and validator clients to this port. + +## Values + +The PBS service is configured through the `values.yaml` file. The chart exposes the following key configuration options under the `commitBoost.pbs` section: + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `commitBoost.pbs.enable` | bool | `true` | Enable the PBS service | +| `commitBoost.pbs.image.repository` | string | `ghcr.io/commit-boost/commit-boost` | PBS container image repository | +| `commitBoost.pbs.image.tag` | string | `v0.4.0` | PBS container image tag | +| `commitBoost.pbs.config.chain` | string | `Holesky` | Ethereum network (e.g. Holesky, Hoodi) | +| `commitBoost.pbs.config.pbs.port` | int | `18550` | PBS service port | +| `commitBoost.pbs.config.relays` | list | `[]` | List of relays to connect to | +| `commitBoost.pbs.config.mux` | list | `[]` | Multiplexer configuration for validator-specific relay routing | +| `commitBoost.pbs.config.metrics.server_port` | int | `10000` | Metrics server port | +| `replicaCount` | int | `1` | Number of PBS pod replicas | +| `service.type` | string | `ClusterIP` | Kubernetes service type | +| `service.pbs_port` | int | `18550` | Service port for PBS | +| `resources` | object | `{}` | Pod resource requests and limits | +| `autoscaling.enabled` | bool | `false` | Enable horizontal pod autoscaling | + +For the full list of available values and their descriptions, see the [README.md](https://github.com/Commit-Boost/commit-boost-client/blob/main/provisioning/k8s/commit-boost/README.md) in the chart directory. + +## Upgrading + +To upgrade an existing release after modifying `values.yaml`: + +```bash +helm upgrade commit-boost . -f values.yaml +``` + +## Uninstalling + +To uninstall the release: + +```bash +helm uninstall commit-boost +``` diff --git a/docs/docs/get_started/running/metrics-catalog.md b/docs/docs/get_started/running/metrics-catalog.md new file mode 100644 index 00000000..26035642 --- /dev/null +++ b/docs/docs/get_started/running/metrics-catalog.md @@ -0,0 +1,55 @@ +--- +sidebar_label: "Metrics catalog" +--- + +# Metrics catalog + +This page lists every metric emitted by the Commit-Boost PBS and Signer services together with the runtime-registered build-info metric from the shared telemetry crate. Use this as a reference when building dashboards or writing alerting rules. + +--- + +## PBS metrics + +PBS metrics use a custom Prometheus registry with namespace prefix `cb_pbs_`. The registry is created via `Registry::new_custom(Some("cb_pbs"), None)` in `crates/pbs/src/metrics.rs`. All wire names shown below include this prefix. + +| Metric name (wire) | Type | Labels | Description | +|---|---|---|---| +| `cb_pbs_relay_status_code_total` | Counter | `http_status_code`, `endpoint`, `relay_id` | HTTP status code received by relay. Incremented after each relay HTTP response; `http_status_code` may be `"555"` (the value of `TIMEOUT_ERROR_CODE_STR`) for timeouts. Endpoint values: `get_header`, `register_validator`, `submit_blinded_block`, `status`. | +| `cb_pbs_relay_latency` | Histogram | `endpoint`, `relay_id` | HTTP latency (duration in seconds) by relay. Records duration of relay HTTP requests. Endpoint values: `get_header`, `register_validator`, `submit_blinded_block`, `status`. | +| `cb_pbs_relay_last_slot` | Gauge | `relay_id` | Latest slot for which a relay delivered a header. Only updated in the `get_header` handler. Set to the current slot on each successful header from that relay. | +| `cb_pbs_relay_header_value` | Gauge | `relay_id` | Header value in gwei delivered by a relay. Converted from raw wei (÷ 1e9) in the `get_header` handler. | +| `cb_pbs_beacon_node_status_code_total` | Counter | `http_status_code`, `endpoint` | HTTP status code returned to the beacon node. Tracks what status codes the PBS returns for beacon node-facing requests. Endpoint values: `get_header`, `register_validator`, `submit_blinded_block`, `status`, `reload`. Error status codes (`502` for `NoResponse`/`NoPayload`, `500` for `Internal`) are set via `PbsClientError`. | + +--- + +## Signer metrics + +Signer metrics use a custom Prometheus registry with namespace prefix `cb_signer_`. The registry is created via `Registry::new_custom(Some("cb_signer"), None)` in `crates/signer/src/metrics.rs`. Wire names include this prefix. + +| Metric name (wire) | Type | Labels | Description | +|---|---|---|---| +| `cb_signer_signer_status_code_total` | Counter | `http_status_code`, `endpoint` | HTTP status code returned by signer endpoints. Incremented as responses are sent. Endpoint values: `get_pubkeys`, `generate_proxy_key`, `request_signature_bls`, `request_signature_proxy_bls`, `request_signature_proxy_ecdsa`. | + +--- + +## Build-info metric (all services) + +When each service starts its metrics HTTP server (via the `MetricsProvider` from the `cb-metrics` crate), a runtime-registered gauge is added to its registry: + +| Metric name (wire) | Type | Labels | Description | +|---|---|---|---| +| `info` | Gauge | `version`, `commit`, `network` | Always `1`. Carries build metadata as Prometheus const labels. The `version` label is the crate version (`CARGO_PKG_VERSION`), `commit` is the Git hash at build time (`GIT_HASH`), and `network` is the chain name (e.g. `mainnet`, `holesky`, `ephemery`). | + +This metric appears under the service's own registry prefix — for example, the PBS instance exposes it as `cb_pbs_info{version="...",commit="...",network="..."}` and the Signer exposes it as `cb_signer_info{version="...",commit="...",network="..."}`. + +--- + +## Custom module metrics + +Commit-Modules can register their own metrics via the `prometheus` crate. Each module receives a `ModuleMetricsConfig` at init time which includes the `server_port` for its metrics HTTP server. To expose custom metrics: + +1. Create a custom `Registry` (optionally with a namespace prefix). +2. Register your metrics on that registry. +3. Pass the registry to `MetricsProvider::new()` or `MetricsProvider::load_and_run()` to serve them on the module's `/metrics` endpoint. + +All module metrics are served on a separate port and are **not** aggregated into the PBS or Signer registries. To collect them, add the module's metrics port as an additional scrape target in your Prometheus configuration. diff --git a/docs/docs/get_started/troubleshooting.md b/docs/docs/get_started/troubleshooting.md index bb8623b8..e5f6d5b2 100644 --- a/docs/docs/get_started/troubleshooting.md +++ b/docs/docs/get_started/troubleshooting.md @@ -6,6 +6,198 @@ description: Common issues Commit-Boost was recently audited and going through a phased approach for validators to move to production. If you find any or have any question, please reach out on [X (Twitter)](https://x.com/Commit_Boost). If there are any security related items, please see [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/SECURITY.md). +--- + +## Symptom → service decision matrix + +Real failures often cascade across service boundaries. Before diving into a specific section, use this table to identify the most likely culprit from the observable symptom. + +| If you see… | Likely culprit | Start in section | +|---|---|---| +| Container won't start / exits immediately | Docker (volume, port, image) or missing env vars | [Docker / networking](#docker--networking) | +| HTTP 401 from `POST /signer/*` | JWT auth failure — shared secret mismatch | [Signer Service > JWT auth failures](#jwt-auth-failures) | +| Signer log says `cannot load keys` or `invalid keystore` | Key loading path, format mismatch, or permission error | [Signer Service > Key loading](#key-loading) | +| Module log says `connection refused` reaching signer | Docker networking: wrong URL, port, or network | [Docker / networking > container-to-container connectivity](#container-to-container-connectivity) | +| `POST /reload` returns HTTP 500 | Reload failure — invalid config or body override | [Hot reload > Reload failures](#reload-failures) | +| `POST /reload` reverts a previous `POST /revoke_jwt` | Body override not persisted | [Hot reload > Body overrides and footguns](#body-overrides-and-footguns) | +| Module starts but fails all signature requests | JWT expiration too short for long-running operations | [Signer Service > JWT auth failures](#jwt-auth-failures) | +| Module container runs but PBS returns no headers | Relays unreachable or timing game expiring too early | [PBS](#pbs) | +| `docker compose` exits with `no such file` | Missing or misnamed config file or env file | [Docker / networking > Init failures](#init-failures) | + +--- + +## Docker / networking + +### Init failures + +`commit-boost init --config cb-config.toml` produces `cb.docker-compose.yml`, `.cb.env`, and optionally `target.json`. If you see `no such file` when running Docker Compose: + +1. **Missing config file** — verify `cb-config.toml` exists in the working directory and is TOML-valid. +2. **Missing env file** — if the Signer Service is enabled, `.cb.env` is created alongside the compose file. Pass it with `--env-file ./.cb.env`. +3. **Wrong path** — the volume bindings in the compose file are relative to the working directory. If you moved the config file after `init`, update the `volumes` entry. + +See the [configuration reference](./configuration.md) for a full field listing and [Docker setup](./running/docker.md#init) for init details. + +### Container won't start / exits immediately + +If a container exits immediately after `docker compose up`: + +1. **Port conflict** — try a different `[pbs] port` or `[signer] port` in the config, or stop whatever is already using the port. The `docker compose logs` output will show a `bind: address already in use` error. +2. **Missing image** — the config's `docker_image` field must point to a valid image. For local development images (e.g. `test_da_commit`), build them first with `just docker-build-test-modules`. +3. **Volume mount failure** — the config file, keys, and secrets paths must be accessible at runtime. If a path is wrong, the container will exit. Check logs for `file not found`. +4. **Missing environment variables** — services that need `CB_CONFIG`, `CB_SIGNER_JWT`, or `CB_MODULE_ID` will fail to start if these aren't set. Docker containers get these from `.cb.env` (via `--env-file`); native binaries set them on the command line. + +Check `docker compose logs` for the specific error message. + +### Container-to-container connectivity + +Modules connect to the Signer Service over an internal Docker bridge network. If a module logs `connection refused`: + +1. **Wrong URL** — modules receive `CB_SIGNER_URL` as an env var. The default is `http://cb_signer:20000`. If you override this, verify the hostname matches the Signer container name (`cb_signer` by default) and the port matches `[signer] port`. +2. **Network isolation** — verify the module's compose service is on the `signer_network` (or whatever network the signer is on). The `init` command sets this up automatically; manual compose edits can break it. +3. **Signer not healthy** — the compose file sets `depends_on: cb_signer: condition: service_healthy`. If the signer fails its health check (e.g., because it can't load keys), dependent modules will never start. Check `docker compose logs cb_signer` first. + +--- + +## Signer Service + +If the signer logs an error at startup or signature requests fail at runtime, the likely causes fall into three categories. + +### JWT auth failures + +A `401` response from any `POST /signer/*` endpoint means the request's JWT was rejected. + +1. **Shared secret mismatch (most common)** — each module authenticates with a JWT derived from a shared secret. The signer's `CB_JWTS` env var (or `[signer]` config) and the module's `CB_SIGNER_JWT` env var must carry the **same secret for the same module ID**. Common pitfalls: + - Typo in the module ID or secret string. + - The `.cb.env` file was regenerated (e.g., by re-running `init`) but the running containers still use the old env file. + - A manual override was applied via [`POST /reload` body overrides](#body-overrides-and-footguns) but the environment variable was not updated — after a restart the override is lost. +2. **Clock skew** — JWT validation checks the `iat` (issued-at) and `exp` (expiration) claims. If the signer's system clock differs from the module's clock by more than a few seconds, the JWT may appear invalid. Synchronise clocks across all machines with NTP. +3. **`SIGNER_JWT_EXPIRATION` too short for long-running operations** — if a module holds a JWT for the duration of a slot and the expiration is set too low (e.g., a few seconds), the token expires before the signature request completes. Raise `SIGNER_JWT_EXPIRATION` to cover the expected operation window. The crate constant `SIGNER_JWT_EXPIRATION` is available in the Rust SDK. +4. **Admin endpoint auth failure** — `POST /signer/reload` and `POST /signer/revoke_jwt` require the admin JWT secret (`CB_SIGNER_ADMIN_JWT` environment variable or `admin_secret` body override). If you get a 401 on these endpoints, check that the admin secret matches. + +### Key loading + +If the signer fails to start with errors about keys: + +- **Wrong format** — the `[signer.local.loader] format` must match the actual keystore layout. See the [Signer configuration](./configuration.md#local-signer) for supported formats and their expected file structures. +- **Wrong path** — `keys_path` and `secrets_path` are relative to the container's filesystem, not the host. In Docker, these are volume-mounted from the host; verify the mount paths match what the loader expects. +- **Permission denied** — the signer process runs as a non-root user inside the container. Ensure keys and secrets are world-readable (`chmod 644` for files, `755` for directories) or owned by the container's user. +- **Proxy store path missing** — if `[signer.local.store]` is configured, the proxy directory must exist and be writable. The signer will fail to start if it cannot create proxy key files. +- **Remote signer unavailable** — for Web3Signer or Dirk, the signer must be reachable at startup. A timeout or connection error during the initial handshake will cause the signer to exit. + +See the [Signer configuration](./configuration.md#signer-service) for a full reference and [Docker setup](./running/docker.md#example-with-pbs-signer-and-a-signer-service) for a working example. + +### TLS + +If you enable TLS and the signer fails to start: + +1. **Missing certificate files** — the TLS directory (default `./certs`) must contain `cert.pem` and `key.pem`. See the [TLS section](./configuration.md#tls) for details. +2. **Self-signed certificate** — recommended for testing only. Production setups should use a well-known CA. +3. **Certificate permissions** — the key file must be readable by the signer process (non-root user inside the container). + +--- + +## Modules + +### Signer connectivity + +If a commit module logs errors when calling the signer: + +1. **Wrong JWT** — the module's `CB_SIGNER_JWT` must match the signer's entry for that module ID. See [JWT auth failures](#jwt-auth-failures) above. +2. **Wrong signer URL** — verify `CB_SIGNER_URL` points to the correct host and port. In Docker, the host is the signer container name (`cb_signer` by default); with native binaries, it is the signer's host IP. +3. **Signer not started** — modules depend on the signer via Docker Compose `depends_on`. If the signer fails to start (e.g., key loading error), dependent modules will never leave the `created` state. +4. **Proxy key generation fails** — if using proxy keys, the signer must have the proxy store configured and writable. Check the signer logs for `cannot write proxy key`. + +### Module ID mismatch + +If the signer responds with `unknown module`: + +- The `[[modules]]` entry in `cb-config.toml` uses a different `id` than what the module was started with (`CB_MODULE_ID` env var). These must match exactly. +- After adding a new module to the config, you must send [`POST /reload`](#hot-reload) to the signer before starting the module container. Until then, the signer has no record of the new module and will reject its requests. + +--- + +## Hot reload + +Commit-Boost supports hot-reloading the configuration without restarting containers. The mechanism is fully documented in the [configuration page](./configuration.md#hot-reload); this section covers what to do when it breaks. + +### Reload failures + +If `POST /reload` returns `500`: + +1. **Invalid TOML** — the config file changed on disk since the service started. If the new content has syntax errors, the reload is rejected and the previous configuration is kept. Check `docker compose logs` for the parse error. +2. **Body override references a non-existent module** — the body fields `jwt_secrets` and `admin_secret` (the "body overrides") accept optional overrides applied on top of the config. If the body references a module ID that does not exist in the config file, the entire reload is rejected. +3. **Permission denied** — the service may not be able to re-read the config file if its permissions changed after startup (e.g., file was moved or ownership changed). + +### Body overrides and footguns + +The request body for `POST /reload` accepts two optional fields — collectively called **body overrides** — that are applied on top of the config at runtime but **never persisted to disk**: + +- `jwt_secrets`: a comma-separated list of `=` pairs to override specific module secrets. +- `admin_secret`: a string to override the admin JWT secret. + +Because these are in-memory only, they are lost on container restart. If you rotate a JWT secret via a body override, the environment variable (`CB_JWTS` or the module's `CB_SIGNER_JWT`) still holds the old value. After any restart the signer will fall back to the old secret and authentication will fail until you update the environment variable to match. + +Similarly, if you revoke a module with `POST /revoke_jwt` but leave it in the config, the next `POST /reload` (without a body override) re-adds the module from the config. Always remove revoked modules from `[[modules]]` in the config to make the revocation permanent. + +See the [Hot Reload section in the configuration page](./configuration.md#footguns) for the full list of footguns. + +### Hot reload and custom PBS + +Custom PBS services may override the default reload behaviour to parse extra configuration fields. If a custom PBS returns `500` on reload, check the module's documentation for custom reload handling. See the [custom module examples](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/status_api/src/main.rs) for details. + +--- + +## Cascading diagnostics + +Failures in one service often propagate to others. When debugging, always check the **upstream dependency first**: + +### Scenario 1: Signer fails to load keys → all modules fail + +``` +Signer can't read keystore + ↓ +Signer health check fails + ↓ +Docker Compose never marks cb_signer as healthy + ↓ +Modules (depends_on: condition: service_healthy) never start + ↓ +Modules that need proposer commitments (proxy key generation, signature requests) get connection refused +``` + +**Diagnosis:** Start with the signer log. A `cannot load keys` or `invalid keystore` error at the top means all downstream failures are consequences. Fix the key loading, then restart. + +### Scenario 2: Config file becomes stale after a restart + +``` +Admin rotates JWT secrets via POST /reload body overrides + (overrides are in-memory only) + ↓ +Container crashes or is restarted + ↓ +Signer starts with the old secrets from .cb.env / config file + ↓ +Modules still hold the rotated JWT → 401 on every request +``` + +**Diagnosis:** Look for a pattern where everything worked before a restart, then all modules fail with 401. The fix is to update the environment variable (`.cb.env` or the shell env) to match the rotated secret, then restart cleanly. + +### Scenario 3: Relay timeout causes no-payload cascade + +``` +One relay becomes slow or unresponsive + ↓ +PBS times out waiting for that relay's header + ↓ +PBS returns 502 (NoResponse) to the CL + ↓ +CL falls back to local execution payload → no MEV reward +``` + +**Diagnosis:** Check the PBS logs for relay timeout errors (status code `555` or `TIMEOUT_ERROR_CODE_STR`) on a specific relay. Remove or replace that relay in the `[[relays]]` config, then `POST /reload` the PBS. + +--- If you started the modules correctly you should see the following logs. diff --git a/docs/sidebars.js b/docs/sidebars.js index 7b3fc68d..f468a0ad 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -30,6 +30,7 @@ const sidebars = { items: [ 'get_started/overview', 'get_started/configuration', + 'get_started/mux-key-loaders', { type: 'category', label: 'Running', @@ -39,8 +40,9 @@ const sidebars = { items: [ 'get_started/running/docker', 'get_started/running/binary', + 'get_started/running/k8s', 'get_started/running/metrics', - + 'get_started/running/metrics-catalog', ], }, 'get_started/troubleshooting', @@ -53,8 +55,9 @@ const sidebars = { type: 'generated-index', }, items: [ - 'developing/custom-modules', - 'developing/commit-module', + 'developing/commit-modules', + 'developing/extending-pbs', + 'developing/signer-api', 'developing/environment-setup', ], }, From 1ae26ba7e0fc976a675dae1e62ad8af77a81b9d1 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 13:57:48 -0700 Subject: [PATCH 02/31] modernize overview to reflect unified binary --- docs/docs/get_started/overview.md | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/docs/docs/get_started/overview.md b/docs/docs/get_started/overview.md index 95579693..27d77cfb 100644 --- a/docs/docs/get_started/overview.md +++ b/docs/docs/get_started/overview.md @@ -6,7 +6,7 @@ description: Initial setup Commit-Boost is primarily based on [Docker](https://www.docker.com/) to enable modularity, sandboxing and cross-platform compatibility. It is also possible to run Commit-Boost [natively](/get_started/running/binary) without Docker. -Each component roughly maps to a container: from a single `.toml` config file, the node operator can specify which modules they want to run, and Commit-Boost takes care of spinning up the services and creating links between them. +Each component roughly maps to a container: from a single `.toml` config file, the node operator can specify which services they want to run, and Commit-Boost takes care of spinning up the services and creating links between them. Commit-Boost ships with two core services: - A PBS service which implements the [BuilderAPI](https://ethereum.github.io/builder-specs/) for [MEV Boost](https://docs.flashbots.net/flashbots-mev-boost/architecture-overview/specifications). @@ -38,8 +38,8 @@ Run `rustup update` to update Rust and Cargo to the latest version # Pull the repo git clone https://github.com/Commit-Boost/commit-boost-client -# Stable branch has the latest released version -git checkout stable +# Enter the repo +cd commit-boost-client # Init submodules git submodule update --init --recursive @@ -49,12 +49,24 @@ git submodule update --init --recursive If you get an `openssl` related error try running: `apt-get update && apt-get install -y openssl ca-certificates libssl3 libssl-dev build-essential pkg-config` ::: -Now, build the binary, which will be stored in `build//`, for example `build/206658b/linux_amd64/`: +Each Commit-Boost release commit is located as a versioned file in the `./releases` folder. For example `.releases/v0.10.0-rc1.yml` contains: +```yml +commit: "efda6a67f43b0ddb400c454a65b055d59acc7d6c" +reason: "Substantial change to harden security in the signer service, improve build and release process, quality of life improvements to logging, and more support for SSV integrations. Contains breaking changes to the signer service and how the CLI is invoked." +``` + +To locally build that release version, checkout the commit: ```bash +# Switch the the specific release +git checkout efda6a67f43b0ddb400c454a65b055d59acc7d6c + +# Build the binary just build-bin $(git rev-parse --short HEAD) ``` +The binary will be stored in `build//`, for example `build/efda6a6/linux_amd64/`: + You can confirm the binary was built successfully by navigating to the build directory and checking its version: ```bash ./commit-boost --version @@ -62,11 +74,14 @@ You can confirm the binary was built successfully by navigating to the build dir ### Docker -Building the service images requires the binary to be built using the above instructions first, since it will be copied into those images. Once it's built, create the images with the following: +Building the service images requires the binary to be built using the above instructions first, since it will be copied into those images. The `build-all` command compiles the binary and then creates the image in one step: ```bash -just build-pbs-img $(git rev-parse --short HEAD) -just build-signer-img $(git rev-parse --short HEAD) +# Switch the the specific release +git checkout efda6a67f43b0ddb400c454a65b055d59acc7d6c + +# Build the binary and create the image +just build-all $(git rev-parse --short HEAD) ``` -This will create two local images called `commit_boost/pbs:` and `commit_boost/signer:` for the PBS and Signer services respectively. Make sure to use these images in the `docker_image` field in the `[pbs]` and `[signer]` sections of the `.toml` config file, respectively. +This will create a local image called `commit_boost/commit-boost:` that can be used to run the PBS and Signer services, as well as the CLI. Make sure to use this image in the `docker_image` field in the `[pbs]` and `[signer]` sections of the `.toml` config file. From 82b55ef1b19813cb1f368a342c45ba1a505c24b8 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 14:33:42 -0700 Subject: [PATCH 03/31] fix broken link --- docs/docs/get_started/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/get_started/configuration.md b/docs/docs/get_started/configuration.md index 611514e6..244afa04 100644 --- a/docs/docs/get_started/configuration.md +++ b/docs/docs/get_started/configuration.md @@ -7,7 +7,7 @@ description: Configure Commit-Boost Commit-Boost needs a configuration file detailing all the services that you want to run. Create a `cb-config.toml` and modify it depending on which modules you plan to run. - For a full explanation of all the fields, check out [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/config.example.toml). -- For some additional examples on config presets, check out [here](https://github.com/Commit-Boost/commit-boost-client/tree/main/configs). +- For some additional examples on config presets, check out [here](https://github.com/Commit-Boost/commit-boost-client/tree/main/examples/configs). ## Minimal PBS setup on Holesky From c02da1a887ceec07cdfebf77cf703b41219f0bb7 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 14:57:07 -0700 Subject: [PATCH 04/31] replace occurences of module -> service --- config.example.toml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/config.example.toml b/config.example.toml index 6804faad..67a1311c 100644 --- a/config.example.toml +++ b/config.example.toml @@ -7,12 +7,12 @@ # A custom object, e.g., chain = { genesis_time_secs = 1695902400, slot_time_secs = 12, genesis_fork_version = "0x01017000", chain_id = 17000 }. chain = "Holesky" -# Configuration for the PBS module +# Configuration for the PBS service [pbs] -# Docker image to use for the PBS module. +# Docker image to use for the PBS service. # OPTIONAL, DEFAULT: ghcr.io/commit-boost/commit-boost:latest docker_image = "ghcr.io/commit-boost/commit-boost:latest" -# Whether to enable the PBS module to request signatures from the Signer module (not used in the default PBS image) +# Whether to enable the PBS service to request signatures from the Signer service (not used in the default PBS image) # OPTIONAL, DEFAULT: false with_signer = false # Host to receive BuilderAPI calls from beacon node @@ -62,7 +62,7 @@ extra_validation_enabled = false # a fallback if the user's own SSV node is not reachable. # OPTIONAL, DEFAULT: "https://api.ssv.network/api/v4/" # ssv_public_api_url = "https://api.ssv.network/api/v4/" -# Timeout for any HTTP requests sent from the PBS module to other services, in seconds +# Timeout for any HTTP requests sent from the PBS service to other services, in seconds # OPTIONAL, DEFAULT: 10 http_timeout_seconds = 10 # Maximum number of retries for validator registrations per relay @@ -79,7 +79,7 @@ validator_registration_batch_size = "" # OPTIONAL, DEFAULT: 384 mux_registry_refresh_interval_seconds = 384 -# The PBS module needs one or more [[relays]] as defined below. +# The PBS service needs one or more [[relays]] as defined below. [[relays]] # Relay ID to use in telemetry # OPTIONAL, DEFAULT: URL hostname @@ -167,14 +167,14 @@ timeout_get_header_ms = 900 id = "mux-relay-1" url = "http://0xa119589bb33ef52acbb8116832bec2b58fca590fe5c85eac5d3230b44d5bc09fe73ccd21f88eab31d6de16194d17782e@def.xyz" -# Configuration for the Signer Module, only required if any `commit` module is present, or if `pbs.with_signer = true` -# Currently three types of Signer modules are supported (only one can be used at a time): +# Configuration for the Signer service, only required if any `commit` module is present, or if `pbs.with_signer = true` +# Currently three types of Signer service are supported (only one can be used at a time): # - Remote: a remote Web3Signer instance # - Dirk: a remote Dirk instance # - Local: a local Signer module -# More details on the docs (https://commit-boost.github.io/commit-boost-client/get_started/configuration/#signer-module) +# More details on the docs (https://commit-boost.github.io/commit-boost-client/get_started/configuration/#signer-service) [signer] -# Docker image to use for the Signer module. +# Docker image to use for the Signer service. # OPTIONAL, DEFAULT: ghcr.io/commit-boost/commit-boost:latest docker_image = "ghcr.io/commit-boost/commit-boost:latest" # Host to bind the Signer API server to @@ -247,13 +247,13 @@ jwt_auth_fail_timeout_seconds = 300 # url = "https://localhost:8882" # accounts = ["Wallet2", "DistributedWallet"] -# Configuration for how the Signer module should store proxy delegations. +# Configuration for how the Signer service should store proxy delegations. # OPTIONAL # [signer.dirk.store] # proxy_dir = "/path/to/proxies" # For Local signer: -# Configuration for how the Signer module should load validator keys. Currently two types of loaders are supported: +# Configuration for how the Signer service should load validator keys. Currently two types of loaders are supported: # - File: load keys from a plain text file (unsafe, use only for testing purposes) # - ValidatorsDir: load keys from a `keys` and `secrets` file/folder (ERC-2335 style keystores). More details can be found in the docs (https://commit-boost.github.io/commit-boost-client/get_started/configuration/) [signer.local.loader] @@ -275,7 +275,7 @@ key_path = "./tests/data/keys.example.json" # For lodestar, it's the path to the file containing the decryption password. # For nimbus, it's the path to the directory where the `` files are located. # secrets_path = "" -# Configuration for how the Signer module should store proxy delegations. Supported types of store are: +# Configuration for how the Signer service should store proxy delegations. Supported types of store are: # - File: store keys and delegations from a plain text file (unsafe, use only for testing purposes) # - ERC2335: store keys and delegations safely using ERC-2335 style keystores. More details can be found in the docs (https://commit-boost.github.io/commit-boost-client/get_started/configuration#proxy-keys-store) # OPTIONAL, if missing proxies are lost on restart From ead03425284280b83388366347ad19c4280db838 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 15:06:28 -0700 Subject: [PATCH 05/31] add prop-commit-signing to sidebar --- docs/sidebars.js | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/sidebars.js b/docs/sidebars.js index f468a0ad..49865902 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -56,6 +56,7 @@ const sidebars = { }, items: [ 'developing/commit-modules', + 'developing/prop-commit-signing', 'developing/extending-pbs', 'developing/signer-api', 'developing/environment-setup', From 28a67c7e34e6f63b11db8041d60b6c833be9cf2f Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 15:10:20 -0700 Subject: [PATCH 06/31] Update configuration.md --- docs/docs/get_started/configuration.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/docs/docs/get_started/configuration.md b/docs/docs/get_started/configuration.md index 244afa04..364ab3bb 100644 --- a/docs/docs/get_started/configuration.md +++ b/docs/docs/get_started/configuration.md @@ -9,10 +9,10 @@ Commit-Boost needs a configuration file detailing all the services that you want - For a full explanation of all the fields, check out [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/config.example.toml). - For some additional examples on config presets, check out [here](https://github.com/Commit-Boost/commit-boost-client/tree/main/examples/configs). -## Minimal PBS setup on Holesky +## Minimal PBS setup on Hoodi ```toml -chain = "Holesky" +chain = "Hoodi" [pbs] port = 18550 @@ -24,7 +24,7 @@ url = "" enabled = true ``` -You can find a list of MEV-Boost Holesky relays [here](https://www.coincashew.com/coins/overview-eth/mev-boost/mev-relay-list#holesky-testnet-relays). +You can find a list of MEV-Boost Hoodi relays [here](https://www.coincashew.com/coins/overview-eth/mev-boost/mev-relay-list#hoodi-testnet-relays). After the sidecar is started, it will expose a port (`18550` in this example), that you need to point your CL to. This may be different depending on which CL you're running, check out [here](https://docs.flashbots.net/flashbots-mev-boost/getting-started/system-requirements#consensus-client-configuration-guides) for a list of configuration guides. :::note @@ -33,7 +33,7 @@ In this setup, the Signer Service will not be started. ## Signer Service -Commit-Boost supports both local and remote signers. The Signer Service is responsible for signing the transactions that other modules generates. Please note that only one signer at a time is allowed. +Commit-Boost supports both local and remote signers. The Signer Service is responsible for signing the transactions that commit modules generate (***it is not used by the PBS Service***). Please note that only one signer at a time is allowed. ### Local signer @@ -221,7 +221,7 @@ All keys have the same password stored in `secrets/password.txt` ### Proxy keys store -Proxy keys can be used to sign transactions with a different key than the one used to sign the block. Proxy keys are generated by the Signer Service and authorized by the validator key. Each module have their own proxy keys, that can be BLS or ECDSA. +Proxy keys can be used to sign transactions with a different key than the one used to sign the block. Proxy keys are generated by the Signer Service and authorized by the validator key. Each module can have their own proxy keys, that can be BLS or ECDSA. To persist proxy keys across restarts, you must enable the proxy store in the config file. There are 2 options for this: @@ -361,13 +361,11 @@ A full example of a config file with Dirk can be found [here](https://github.com ### TLS -By default, the Signer service runs in **insecure** mode, so its API service uses HTTP without any TLS encryption. This is sufficient for testing or if you're running locally within your machine's isolated Docker network and only intend to access it within the confines of your machine. However, for larger production setups, it's recommended to enable TLS - especially for traffic that spans across multiple machines. +By default, the Signer Service runs in **insecure** mode, so its API service uses HTTP without any TLS encryption. This is sufficient for testing or if you're running locally within your machine's isolated Docker network and only intend to access it within the confines of your machine. However, for larger production setups, it's recommended to enable TLS - especially for traffic that spans across multiple machines. -The Signer service in TLS mode supports **TLS 1.2** and **TLS 1.3**. Older protocol versions are not supported. +To enable TLS, you must first create a **certificate / key pair**. We **strongly advise** using a well-known Certificate Authority to create and sign the certificate and do not recommend using a self-signed ceriticate / key pair for production environments. -To enable TLS, you must first create a **certificate / key pair**. We **strongly advise** using a well-known Certificate Authority to create and sign the certificate, such as [Let's Encrypt](https://letsencrypt.org/getting-started/) (a free service) or [Bluehost](https://www.bluehost.com/help/article/how-to-set-up-an-ssl-certificate-for-website-security) (free but requires an account). We do not recommend using a self-signed ceriticate / key pair for production environments. - -When configuring TLS support, the Signer service expects a single folder (which you can specify) that contains the following two files: +When configuring TLS support, the Signer Service expects a single folder containing: - `cert.pem`: The SSL certificate file signed by a certificate authority, in PEM format - `key.pem`: The private key corresponding to `cert.pem` that will be used for signing TLS traffic, in PEM format @@ -387,7 +385,7 @@ type = "certificate" path = "path/to/your/cert/folder" ``` -Where `path` is the aforementioned folder. It defaults to `./certs` but can be replaced with whichever directory your certificate and private key file reside in, as long as they're readable by the Signer service (or its Docker container, if using Docker). +Where `path` is the aforementioned folder. It defaults to `./certs` and auto-generates the `.pem` files in self-signed mode if the `type` and `path` are unspecified. ### Rate limit @@ -467,7 +465,7 @@ sleep_secs = 5 A few things to note: - We now added a `signer` section which will be used to create the Signer Service. -- There is now a `[[modules]]` section which at a minimum needs to specify the module `id`, `type` and `docker_image`. For modules with type `commit`, which will be used to access the Signer service and request signatures for preconfs, you will also need to specify the module's unique `signing_id` (see [the propser commitment documentation](../developing/prop-commit-signing.md)). Additional parameters needed for the business logic of the module will also be here. +- There is now a `[[modules]]` section which at a minimum needs to specify the module `id`, `type` and `docker_image`. For modules with type `commit`, which will be used to access the Signer Service and request signatures for preconfs, you will also need to specify the module's unique `signing_id` (see [the propser commitment documentation](../developing/prop-commit-signing.md)). Additional parameters needed for the business logic of the module will also be here. To learn more about developing modules, check out [here](/category/developing). From 7bd433dbdd0df6c5bc082fc21b53086ce58a9d3b Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 15:30:34 -0700 Subject: [PATCH 07/31] Update mux-key-loaders.md --- docs/docs/get_started/mux-key-loaders.md | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/docs/docs/get_started/mux-key-loaders.md b/docs/docs/get_started/mux-key-loaders.md index b28a6b15..9a910eba 100644 --- a/docs/docs/get_started/mux-key-loaders.md +++ b/docs/docs/get_started/mux-key-loaders.md @@ -4,7 +4,7 @@ description: Mux (multiplexer) configuration and key loader types # Mux key loaders -The PBS multiplexer — *mux* for short — lets you route different validators to different relay sets or timing game configurations. Instead of a single `[[relays]]` list for all your validators, you declare one or more `[[mux]]` entries that match specific validator pubkeys to custom relay and timing settings. +The PBS multiplexer (AKA *mux*) lets you route different validators to different relay sets or timing game configurations. Instead of a single `[[relays]]` list for all your validators, you declare one or more `[[mux]]` entries that match specific validator pubkeys to custom relay and timing settings. Use a mux when you need: @@ -35,9 +35,18 @@ validator_pubkeys = [ "0x80c7f782b2467c5898c5516a8b6595d75623960b4afc4f71ee07d40985d20e117ba35e7cd352a3e75fb85a8668a3b745", ] +# A relay used by this mux [[mux.relays]] id = "fast-relay" url = "..." + +# Another relay used by this mux +[[mux.relays]] +id = "robust-relay" +url = "..." + +# ... +# Multiple muxes can be defined repeating this pattern ``` ### Matching rules summary @@ -91,8 +100,6 @@ url = "..." export CB_MUX_PATH_lido-mux="/path/to/override.json" ``` -**Chains supported:** All chains. - --- ### URL loader @@ -116,15 +123,13 @@ url = "..." - Timeout is controlled by `default_pbs.http_timeout_seconds` (default: 10s). - The response body is read in full and parsed as JSON. -**Chains supported:** All chains. - --- ### Registry loader -Loads validator pubkeys from an on-chain or network registry. This is the most powerful loader — it resolves pubkeys automatically from a data source that stays in sync as validators are added or removed. +Loads validator pubkeys from an on-chain or network registry. This resolves pubkeys automatically from a data source that stays in sync as validators are added or removed. -Two registries are supported: +Two registries are currently supported: | Registry | `registry` value | Key source | Authentication | |---|---|---|---| @@ -133,7 +138,7 @@ Two registries are supported: #### Lido registry -Reads validator pubkeys from Lido's on-chain NodeOperatorsRegistry or CSModule registry, depending on the module type. The sidecar connects to the configured RPC endpoint and calls the contract's `getSigningKeys` method with pagination. +Reads validator pubkeys from Lido's on-chain `NodeOperatorsRegistry` or `CSModule registry`, depending on the module type. The sidecar connects to the configured RPC endpoint and calls the contract's `getSigningKeys` method with pagination. **Requirements:** `rpc_url` must be set in the `[pbs]` configuration. @@ -234,4 +239,4 @@ For a complete working example with multiple mux entries — File loader, Lido r ## See also - [Configuration reference](./configuration.md) — full config field listing -- [Signer API](../developing/signer-api.md) — key loading for the Signer Service \ No newline at end of file +- [Signer API](../developing/signer-api.md) — key loading for the Signer Service From 4bd683cea8dd7af1a2a6ca8dc1d44b5ee1fb0f42 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 16:49:09 -0700 Subject: [PATCH 08/31] use ethstaker relay list --- docs/docs/get_started/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/get_started/configuration.md b/docs/docs/get_started/configuration.md index 364ab3bb..7abda689 100644 --- a/docs/docs/get_started/configuration.md +++ b/docs/docs/get_started/configuration.md @@ -24,7 +24,7 @@ url = "" enabled = true ``` -You can find a list of MEV-Boost Hoodi relays [here](https://www.coincashew.com/coins/overview-eth/mev-boost/mev-relay-list#hoodi-testnet-relays). +You can find a list of MEV-Boost Hoodi relays [here](https://github.com/ethstaker/ethstaker-guides/blob/main/MEV-relay-list.md#mev-relay-list-for-hoodi-testnet). After the sidecar is started, it will expose a port (`18550` in this example), that you need to point your CL to. This may be different depending on which CL you're running, check out [here](https://docs.flashbots.net/flashbots-mev-boost/getting-started/system-requirements#consensus-client-configuration-guides) for a list of configuration guides. :::note From b7cfefb4ca8d64e7a0838719107e640af6800d06 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 17:06:52 -0700 Subject: [PATCH 09/31] Update docker.md --- docs/docs/get_started/running/docker.md | 77 +++++++++++++------------ 1 file changed, 41 insertions(+), 36 deletions(-) diff --git a/docs/docs/get_started/running/docker.md b/docs/docs/get_started/running/docker.md index 12fd2287..1a366b8b 100644 --- a/docs/docs/get_started/running/docker.md +++ b/docs/docs/get_started/running/docker.md @@ -11,10 +11,9 @@ First run: ```bash commit-boost init --config cb-config.toml ``` -This will create up to three files: +This will create two files: - `cb.docker-compose.yml` which contains the full setup of the Commit-Boost services. - `.cb.env` with local env variables, including JWTs for modules, only created if the Signer Service is enabled. -- `target.json` which enables dynamic discovery of services for metrics scraping via Prometheus, only created if metrics are enabled. ## Start @@ -23,7 +22,7 @@ To start Commit-Boost run: docker compose --env-file ".cb.env" -f ".cb.docker-compose.yml" up -d ``` -This will run all the configured services, including PBS, signer and modules (if any). +This will run all the configured services, including PBS, signer and commit modules (if any). The MEV-Boost server will be exposed at `pbs.port` from the config, `18550` in our example. You'll need to point your CL/Validator client to this port to be able to source blocks from the builder market. @@ -55,7 +54,7 @@ Below is a simple configuration for running only the PBS service on the Hoodi ne chain = "Hoodi" [pbs] -docker_image = "ghcr.io/commit-boost/commit-boost:v0.8.0" +docker_image = "ghcr.io/commit-boost/commit-boost:v0.9.6" relay_check = true wait_all_registrations = true @@ -68,7 +67,7 @@ id = "def" url = "http://0xa1cec75a3f0661e99299274182938151e8433c61a19222347ea1313d839229cb4ce4e3e5aa2bdeb71c8fcf1b084963c2@def.xyz" ``` -Note that there are many more parameters that Commit-Boost supports, but they are all omitted and thus will use their default options. For a full description of the default options within the config file, go to the [annotated configuration example](../../../../config.example.toml). +Note that there are many more parameters that Commit-Boost supports, but they are all omitted and thus will use their default options. For a full description of the default options within the config file, go to the [annotated configuration example](https://github.com/Commit-Boost/commit-boost-client/blob/main/config.example.toml). The relays here are placeholder for the sake of the example; for a list of actual relays, visit [the EthStaker relay list](https://github.com/eth-educators/ethstaker-guides/blob/main/MEV-relay-list.md). @@ -80,15 +79,13 @@ Run `commit-boost init --config cb-config.toml` with the above configuration, th ``` services: cb_pbs: - command: - - pbs healthcheck: test: curl -f http://localhost:18550/eth/v1/builder/status interval: 30s timeout: 5s retries: 3 start_period: 5s - image: ghcr.io/commit-boost/commit-boost:v0.8.0 + image: ghcr.io/commit-boost/commit-boost:v0.9.6 container_name: cb_pbs ports: - 127.0.0.1:18550:18550 @@ -96,7 +93,9 @@ services: CB_CONFIG: /cb-config.toml CB_PBS_ENDPOINT: 0.0.0.0:18550 volumes: - - ./cb-config.toml:/cb-config.toml:ro + - ./test.toml:/cb-config.toml:ro + command: + - pbs ``` This will run the PBS service in a container named `cb_pbs`. @@ -120,8 +119,8 @@ host = "0.0.0.0" to the `[pbs]` section in the configuration. This will cause the resulting `ports` entry in the Docker compose file to become: ``` - ports: - - 0.0.0.0:18550:18550 +ports: + - 0.0.0.0:18550:18550 ``` though you will need to add an entry to your local machine's firewall software (if applicable) for other machines to access it. @@ -129,7 +128,7 @@ though you will need to add an entry to your local machine's firewall software ( Currently, the program will always export the PBS service's API port in one of these two ways. If you don't want to expose it at all, so it can only be accessed by other Docker containers running within Docker's internal network, you will need to manually remove the `ports` entry from the Docker compose file after it's been created: ``` - ports: [] +ports: [] ``` @@ -145,7 +144,7 @@ Below is a simple configuration for running only the three modules on the Hoodi chain = "Hoodi" [pbs] -docker_image = "ghcr.io/commit-boost/commit-boost:v0.8.0" +docker_image = "ghcr.io/commit-boost/commit-boost:v0.9.6" relay_check = true wait_all_registrations = true @@ -158,6 +157,7 @@ id = "def" url = "http://0xa1cec75a3f0661e99299274182938151e8433c61a19222347ea1313d839229cb4ce4e3e5aa2bdeb71c8fcf1b084963c2@def.xyz" [signer] +docker_image = "ghcr.io/commit-boost/commit-boost:v0.9.6" port = 20000 [signer.local.loader] @@ -169,15 +169,18 @@ secrets_path = "./secrets" id = "DA_COMMIT" type = "commit" docker_image = "test_da_commit" +signing_id = "0x6a33a23ef26a4836979edff86c493a69b26ccf0b4a16491a815a13787657431b" sleep_secs = 5 ``` -Note that there are many more parameters that Commit-Boost supports, but they are all omitted and thus will use their default options. For a full description of the default options within the config file, go to the [annotated configuration example](../../../../config.example.toml). +Note that there are many more parameters that Commit-Boost supports, but they are all omitted and thus will use their default options. For a full description of the default options within the config file, go to the [annotated configuration example](https://github.com/Commit-Boost/commit-boost-client/blob/main/config.example.toml). The relays here are placeholder for the sake of the example; for a list of actual relays, visit [the EthStaker relay list](https://github.com/eth-educators/ethstaker-guides/blob/main/MEV-relay-list.md). In this scenario there are two folders in the same directory as the configuration file (the working directory): `keys` and `secrets`. These correspond to the folders containing the [EIP-2335 keystores](../configuration.md#local-signer) and secrets in Lighthouse format. For your own keys, adjust the `format` parameter within the configuration and directory paths accordingly. +Note that if either the `docker_image` under the `[signer]` or `[pbs]` is left unspecified it will default to `ghcr.io/commit-boost/commit-boost:latest`. Make sure to specify both if you intend to use versions other than the latest release. + ### Commit-Boost Init Output @@ -199,22 +202,20 @@ services: CB_SIGNER_JWT: ${CB_JWT_DA_COMMIT} CB_SIGNER_URL: http://cb_signer:20000 volumes: - - ./cb-config.toml:/cb-config.toml:ro + - ./test.toml:/cb-config.toml:ro networks: - signer_network depends_on: cb_signer: condition: service_healthy cb_pbs: - command: - - pbs healthcheck: test: curl -f http://localhost:18550/eth/v1/builder/status interval: 30s timeout: 5s retries: 3 start_period: 5s - image: ghcr.io/commit-boost/commit-boost:latest + image: ghcr.io/commit-boost/commit-boost:v0.9.6 container_name: cb_pbs ports: - 127.0.0.1:18550:18550 @@ -222,36 +223,39 @@ services: CB_CONFIG: /cb-config.toml CB_PBS_ENDPOINT: 0.0.0.0:18550 volumes: - - ./cb-config.toml:/cb-config.toml:ro - cb_signer: + - ./test.toml:/cb-config.toml:ro command: - - signer + - pbs + cb_signer: healthcheck: - test: curl -f http://localhost:20000/status + test: curl -k -f http://cb_signer:20000/status interval: 30s timeout: 5s retries: 3 start_period: 5s - image: ghcr.io/commit-boost/commit-boost:latest + image: ghcr.io/commit-boost/commit-boost:v0.9.6 container_name: cb_signer ports: - 127.0.0.1:20000:20000 environment: CB_CONFIG: /cb-config.toml CB_JWTS: ${CB_JWTS} + CB_SIGNER_ADMIN_JWT: ${CB_SIGNER_ADMIN_JWT} + CB_SIGNER_TLS_CERTIFICATES: /certs CB_SIGNER_ENDPOINT: 0.0.0.0:20000 CB_SIGNER_LOADER_KEYS_DIR: /keys CB_SIGNER_LOADER_SECRETS_DIR: /secrets volumes: - - ./cb-config.toml:/cb-config.toml:ro + - ./test.toml:/cb-config.toml:ro - ./keys:/keys:ro - ./secrets:/secrets:ro networks: - signer_network + command: + - signer networks: signer_network: driver: bridge - ``` This will create three Docker containers when executed: @@ -263,8 +267,9 @@ This will create three Docker containers when executed: Finally, the `.cb.env` file produced will look like this: ``` -CB_JWT_DA_COMMIT=mwDSSr7chwy9eFf7RhedBoyBtrwFUjSQ -CB_JWTS=DA_COMMIT=mwDSSr7chwy9eFf7RhedBoyBtrwFUjSQ +CB_JWT_DA_COMMIT=hJ0bV40pTMShsRb9QS7fVinAsL9Roxkc +CB_JWTS=DA_COMMIT=hJ0bV40pTMShsRb9QS7fVinAsL9Roxkc +CB_SIGNER_ADMIN_JWT=WbdxlH32hNOMkfc6BfBHaV1WZj3vgODA ``` The Signer service needs JWT authentication from each of its modules. The program creates these and embeds them into the containers via environment variables automatically for convenience. This is demonstrated for the Signer Service within the `environment` compose block: the `CB_JWTS: ${CB_JWTS}` forwards the `CB_JWTS` environment variable that's present when running Docker compose. The program requests that you do so via the command `docker compose --env-file "./.cb.env" -f "./cb.docker-compose.yml" up -d`; the `--env-file "./.cb.env"` handles loading the program's JWT output into this environment variable. @@ -288,16 +293,16 @@ host = "0.0.0.0" to both the `[pbs]` and `[signer]` sections in the configuration. This will cause the resulting `ports` entries in the Docker compose file to become: ``` - cb_pbs: - ... - ports: - - 0.0.0.0:18550:18550 +cb_pbs: + ... + ports: + - 0.0.0.0:18550:18550 - cb_signer: - ... - ports: - - 0.0.0.0:20000:20000 +cb_signer: + ... + ports: + - 0.0.0.0:20000:20000 ``` though you will need to add entries to your local machine's firewall software (if applicable) for other machines to access them. @@ -305,5 +310,5 @@ though you will need to add entries to your local machine's firewall software (i Currently, the program will always export the PBS and Signer services' API ports in one of these two ways. If you don't want to expose them at all, so they can only be accessed by other Docker containers running within Docker's internal network, you will need to manually remove the `ports` entries from the Docker compose files after they've been created: ``` - ports: [] +ports: [] ``` From bfebac7a00ca12028d02ead54543e613c2409b90 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 17:26:17 -0700 Subject: [PATCH 10/31] Update binary.md --- docs/docs/get_started/running/binary.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/docs/get_started/running/binary.md b/docs/docs/get_started/running/binary.md index 0c572b0e..07a1e2ea 100644 --- a/docs/docs/get_started/running/binary.md +++ b/docs/docs/get_started/running/binary.md @@ -12,7 +12,7 @@ Running the modules natively means you opt out of the security guarantees made b Get the binary of the module either by compiling from source or by downloading a [published release](https://github.com/Commit-Boost/commit-boost-client/releases). -Modules need some environment variables to work correctly. +Services need environment variables to work correctly. ### Common @@ -28,12 +28,15 @@ Modules need some environment variables to work correctly. ### Signer Service +- `CB_JWTS`: required if any commit modules are configured, comma-separated list of `module_id=jwt_secret` pairs for module authentication. - `CB_SIGNER_ADMIN_JWT`: secret to use for admin JWT. +- `CB_SIGNER_JWT_AUTH_FAIL_LIMIT`: optional, override the number of failed JWT auth attempts before rate-limiting a client (default: `3`). +- `CB_SIGNER_JWT_AUTH_FAIL_TIMEOUT_SECONDS`: optional, override the rate-limit timeout window in seconds (default: `300`). - `CB_SIGNER_ENDPOINT`: optional, override to specify the `IP:port` endpoint to bind the signer server to. - `CB_SIGNER_TLS_CERTIFICATES`: path to the TLS certificates for the server. - For loading keys we currently support: - `CB_SIGNER_LOADER_FILE`: path to a `.json` with plaintext keys (for testing purposes only). - - `CB_SIGNER_LOADER_FORMAT`, `CB_SIGNER_LOADER_KEYS_DIR` and `CB_SIGNER_LOADER_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Signer config](../configuration/#signer-module) for more info). + - `CB_SIGNER_LOADER_KEYS_DIR` and `CB_SIGNER_LOADER_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Signer config](../configuration/#signer-module) for more info). - For storing proxy keys we currently support: - `CB_PROXY_STORE_DIR`: directory where proxy keys and delegations will be saved in plaintext (for testing purposes only). - `CB_PROXY_KEYS_DIR` and `CB_PROXY_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Proxy keys store](../configuration/#proxy-keys-store) for more info). From 75d75e23d8cb50e301bc6fd5fc146bb1be4523a7 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Tue, 2 Jun 2026 17:26:30 -0700 Subject: [PATCH 11/31] Update metrics.md --- docs/docs/get_started/running/metrics.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/docs/get_started/running/metrics.md b/docs/docs/get_started/running/metrics.md index 58200195..eacd5157 100644 --- a/docs/docs/get_started/running/metrics.md +++ b/docs/docs/get_started/running/metrics.md @@ -12,7 +12,7 @@ Make sure to add the `[metrics]` section to your config file: [metrics] enabled = true ``` -If the section is missing, metrics collection will be disabled. If you generated the `docker-compose.yml` file with `commit-boost init`, metrics ports will be automatically configured, and a sample `target.json` file will be created. If you're running the binaries directly, you will need to set the correct environment variables, as described in the [previous section](/get_started/running/binary#common). +If the section is missing, metrics collection will be disabled. If you generated the `docker-compose.yml` file with `commit-boost init`, metrics ports will be automatically configured. If you're running the binaries directly, you will need to set the correct environment variables, as described in the [previous section](/get_started/running/binary#common). ## Example setup @@ -90,5 +90,3 @@ datasources: ``` Once Grafana is running, you can [import](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/import-dashboards/) the Commit-Boost dashboards from [here](https://github.com/Commit-Boost/commit-boost-client/tree/main/provisioning/grafana), making sure to select the correct `Prometheus` datasource. - - From ff445838972e6c8affaf5db1ab8cc3300fced63d Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 12:43:17 -0700 Subject: [PATCH 12/31] Update troubleshooting.md --- docs/docs/get_started/troubleshooting.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/docs/get_started/troubleshooting.md b/docs/docs/get_started/troubleshooting.md index e5f6d5b2..3fa92e23 100644 --- a/docs/docs/get_started/troubleshooting.md +++ b/docs/docs/get_started/troubleshooting.md @@ -4,7 +4,7 @@ description: Common issues # Troubleshooting -Commit-Boost was recently audited and going through a phased approach for validators to move to production. If you find any or have any question, please reach out on [X (Twitter)](https://x.com/Commit_Boost). If there are any security related items, please see [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/SECURITY.md). +If you find any or have any question, please reach out on [X (Twitter)](https://x.com/Commit_Boost). If there are any security related items, please see [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/SECURITY.md). --- @@ -30,7 +30,7 @@ Real failures often cascade across service boundaries. Before diving into a spec ### Init failures -`commit-boost init --config cb-config.toml` produces `cb.docker-compose.yml`, `.cb.env`, and optionally `target.json`. If you see `no such file` when running Docker Compose: +`commit-boost init --config cb-config.toml` produces `cb.docker-compose.yml`, and `.cb.env`. If you see `no such file` when running Docker Compose: 1. **Missing config file** — verify `cb-config.toml` exists in the working directory and is TOML-valid. 2. **Missing env file** — if the Signer Service is enabled, `.cb.env` is created alongside the compose file. Pass it with `--env-file ./.cb.env`. @@ -71,9 +71,8 @@ A `401` response from any `POST /signer/*` endpoint means the request's JWT was - Typo in the module ID or secret string. - The `.cb.env` file was regenerated (e.g., by re-running `init`) but the running containers still use the old env file. - A manual override was applied via [`POST /reload` body overrides](#body-overrides-and-footguns) but the environment variable was not updated — after a restart the override is lost. -2. **Clock skew** — JWT validation checks the `iat` (issued-at) and `exp` (expiration) claims. If the signer's system clock differs from the module's clock by more than a few seconds, the JWT may appear invalid. Synchronise clocks across all machines with NTP. -3. **`SIGNER_JWT_EXPIRATION` too short for long-running operations** — if a module holds a JWT for the duration of a slot and the expiration is set too low (e.g., a few seconds), the token expires before the signature request completes. Raise `SIGNER_JWT_EXPIRATION` to cover the expected operation window. The crate constant `SIGNER_JWT_EXPIRATION` is available in the Rust SDK. -4. **Admin endpoint auth failure** — `POST /signer/reload` and `POST /signer/revoke_jwt` require the admin JWT secret (`CB_SIGNER_ADMIN_JWT` environment variable or `admin_secret` body override). If you get a 401 on these endpoints, check that the admin secret matches. +2. **Clock skew** — JWT validation checks the `iat` (issued-at) and `exp` (expiration) claims. If the signer's system clock differs from the module's clock, the JWT may appear invalid. +3. **Admin endpoint auth failure** — `POST /signer/reload` and `POST /signer/revoke_jwt` require the admin JWT secret (`CB_SIGNER_ADMIN_JWT` environment variable or `admin_secret` body override). If you get a 401 on these endpoints, check that the admin secret matches. ### Key loading @@ -81,7 +80,7 @@ If the signer fails to start with errors about keys: - **Wrong format** — the `[signer.local.loader] format` must match the actual keystore layout. See the [Signer configuration](./configuration.md#local-signer) for supported formats and their expected file structures. - **Wrong path** — `keys_path` and `secrets_path` are relative to the container's filesystem, not the host. In Docker, these are volume-mounted from the host; verify the mount paths match what the loader expects. -- **Permission denied** — the signer process runs as a non-root user inside the container. Ensure keys and secrets are world-readable (`chmod 644` for files, `755` for directories) or owned by the container's user. +- **Permission denied** — the signer process runs as a non-root user inside the container. Ensure the mounted keys and secrets are readable by the container user. - **Proxy store path missing** — if `[signer.local.store]` is configured, the proxy directory must exist and be writable. The signer will fail to start if it cannot create proxy key files. - **Remote signer unavailable** — for Web3Signer or Dirk, the signer must be reachable at startup. A timeout or connection error during the initial handshake will cause the signer to exit. From 2933e2bafb7beee698b2c7b28387332650e7fd5a Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 12:54:08 -0700 Subject: [PATCH 13/31] Delete commit-module.md --- docs/docs/developing/commit-module.md | 132 -------------------------- 1 file changed, 132 deletions(-) delete mode 100644 docs/docs/developing/commit-module.md diff --git a/docs/docs/developing/commit-module.md b/docs/docs/developing/commit-module.md deleted file mode 100644 index 0fce01e2..00000000 --- a/docs/docs/developing/commit-module.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Commit Module - -While a module can be written in any language, we currently provide some utilities for Rust, with the goal of supporting more generalized APIs and simplify development in languages other than Rust. - -In Rust, we provide utilities to load and run modules. Simply add to your `Cargo.toml`: -```toml -commit-boost = { git = "https://github.com/Commit-Boost/commit-boost-client", version = "..." } -``` - -You will now be able to import the utils with: -```rust -use commit_boost::prelude::*; -``` - - -## Config -Your module will likely need a configuration for the Node Operator to customize. This will have to be in the `cb-config.toml` file, in the correct `[[module]]` section. In the module, you can define and load your config as follows. - -First, define all the parameters needed in a struct: -```rust -#[derive(Debug, Deserialize)] -struct ExtraConfig { - sleep_secs: u64, -} -``` -then pass that struct to the `load_commit_module_config` function, which will load and parse the config. Your custom config will be under the `extra` field. - -```rust -let config = load_commit_module_config::().unwrap(); -let to_sleep = config.extra.sleep_secs; -``` - -The loaded `config` also has a few other useful fields: -- the unique `id` of the module -- chain spec -- a `SignerClient` to call the [SignerAPI](/api), already setup with the correct JWT - - -## Requesting signatures -At its core the Signer Service simply provides a signature on a 32-byte data digest. The signatures are currently provided with either the validator keys (BLS) or a proxy key (BLS or ECDSA) for a given validator key, both on the [builder domain](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/common/src/signature.rs#L88-L96). - -In the example we use `TreeHash`, already used in the CL, to create the digest from a custom struct: -```rust -#[derive(TreeHash)] -struct Datagram { - data: u64, -} -``` - -Furthermore, in order to request a signature, we'd need a public key of the validator. You can get a list of available keys by calling: -```rust -let pubkeys = config.signer_client.get_pubkeys().await.unwrap(); -``` - -Which will call the `get_pubkeys` endpoint of the [SignerAPI](/api), returning all the consensus pubkeys and the corresponding proxy keys, of your module. - -Note that the requests are authenticated using a JWT, that must be regularly refreshed as it expires after a certain time. To do so, you can call: -```rust -config.signer_client.refresh_token().await.unwrap(); -``` -You have the `SIGNER_JWT_EXPIRATION` constant available in the `commit-boost` crate, which is the time in seconds after which the JWT will expire. - -Then, we can request a signature either with a consensus key or with a proxy key: - -### With a consensus key -Requesting a signature is as simple as: -```rust -let datagram = Datagram { data: 1 }; -let request = SignConsensusRequest::builder(pubkey).with_msg(&datagram); -let signature = config.signer_client.request_consensus_signature(&request).await.unwrap(); -``` - -Where `pubkey` is the validator (consensus) public key for which the signature is requested. - -### With a proxy key -You'll have to first request a proxy key be generated for a given consensus key. -We support two signature schemes for proxies: BLS or ECDSA. - -To request a proxy: -```rust -// BLS proxy -let proxy_delegation = self.config.signer_client.generate_proxy_key_bls(pubkey).await?; -let proxy_pubkey = proxy_delegation.message.proxy; - -// or ECDSA proxy -let proxy_delegation = self.config.signer_client.generate_proxy_key_ecdsa(pubkey).await?; -let proxy_address = proxy_delegation.message.proxy; -``` - -Where `pubkey` is the validator (consensus) public key for which a proxy is to be generated. - -Then you can use the generated proxy key to request a signature: -```rust -// if `proxy_pubkey` is a BLS proxy -let datagram = Datagram { data: 1 }; -let request = SignProxyRequest::builder(proxy_pubkey).with_msg(&datagram); -let signature = config.signer_client.request_proxy_signature_bls(&request).await.unwrap(); - -// or for ECDSA proxy -let datagram = Datagram { data: 1 }; -let request = SignProxyRequest::builder(proxy_address).with_msg(&datagram); -let signature = config.signer_client.request_proxy_signature_ecdsa(&request).await.unwrap(); -``` - -## Metrics -We provide support for modules to record custom metrics which are automatically scraped by Prometheus. This involves three steps -### Define metrics -You can use the `prometheus` crate to create a custom registry and metrics, for example: - -```rust -static ref MY_CUSTOM_REGISTRY: Registry = Registry::new_custom(Some("da_commit".to_string()), None).unwrap(); -static ref SIG_RECEIVED_COUNTER: IntCounter = IntCounter::new("signature_received", "successful signature requests received").unwrap(); -``` - -### Start Metrics Provider -When starting the module, you should register all metrics, and start the `MetricsProvider`: -```rust -MY_CUSTOM_REGISTRY.register(Box::new(SIG_RECEIVED_COUNTER.clone())).unwrap(); -MetricsProvider::load_and_run(MY_CUSTOM_REGISTRY.clone()); -``` -The `MetricsProvider` will load the configuration needed and start a server with a `/metrics` endpoint for Prometheus to scrape. - -### Record metrics -All that is left is to use the metrics throughout your code: -```rust -SIG_RECEIVED_COUNTER.inc(); -``` -These will be automatically scraped by the Prometheus service running, and exposed on port `9090`. We plan to allow developers to ship pre-made dashboards together with their modules, to allow Node Operators to have an improved oversight on the modules they are running. From c48dab7fb3521bddc562e3328076ac2cddc4e9c1 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 12:54:11 -0700 Subject: [PATCH 14/31] Delete custom-modules.md --- docs/docs/developing/custom-modules.md | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 docs/docs/developing/custom-modules.md diff --git a/docs/docs/developing/custom-modules.md b/docs/docs/developing/custom-modules.md deleted file mode 100644 index c8b31ab9..00000000 --- a/docs/docs/developing/custom-modules.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Custom Modules - -Commit-Boost aims to provide an open platform for developers to create and distribute commitment protocols sidecars. - -There are two ways to leverage Commit-Boost modularity: - -1. Commit Modules, which request signatures from the proposer, e.g. for preconfirmations ([example](https://github.com/Commit-Boost/commit-boost-client/tree/78bdc47bf89082f4d1ea302f9a3f86f609966b28/examples/da_commit)). -2. Custom PBS binaries, which extend the default PBS Service with additional logic, e.g. by implementing the BuilderAPI with custom constraints in `get_header` ([example](https://github.com/Commit-Boost/commit-boost-client/tree/78bdc47bf89082f4d1ea302f9a3f86f609966b28/examples/status_api)). From 1c0ff0c34169c243f035d9f5bd0fd40ef648850f Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 12:54:14 -0700 Subject: [PATCH 15/31] Update commit-modules.md --- docs/docs/developing/commit-modules.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/docs/developing/commit-modules.md b/docs/docs/developing/commit-modules.md index 4998cc32..ea7062bb 100644 --- a/docs/docs/developing/commit-modules.md +++ b/docs/docs/developing/commit-modules.md @@ -28,15 +28,11 @@ signing_id = "0x6a33a23ef26a4836979edff86c493a69b26ccf0b4a16491a815a13787657431b | `signing_id` | A 32-byte identifier used to scope signatures to this module (see [Signing structure](#signing-structure)). | | (custom) | Additional fields are passed through as opaque config to the module's runtime. | -### ⚠️ `type = "pbs"` is not supported +:::warning +Setting `type = "pbs"` in a `[[modules]]` entry is **not** a supported path. The configuration parser will reject it at parse time. If you want to extend the PBS binary itself, see [Extending PBS](./extending-pbs.md). +::: -Setting `type = "pbs"` in a `[[modules]]` entry is **not** a supported path. The configuration parser will reject it at parse time with an error like: -``` -unknown variant 'pbs', expected 'commit' -``` - -If you want to extend the PBS binary itself, see [Extending PBS](./extending-pbs.md). ## Rust SDK usage @@ -73,7 +69,7 @@ The returned `StartCommitModuleConfig` also provides: ### Requesting signatures -At its core, the Signer Service provides a signature on a 32-byte data digest. Signatures are provided using either the validator keys (BLS) or a proxy key (BLS or ECDSA), both on the [builder domain](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/common/src/signature.rs#L88-L96). +At its core, the Signer Service provides a signature on a 32-byte data digest. Signatures are provided using either the validator keys (BLS) or a proxy key (BLS or ECDSA), both on the [Commit-Boost domain](#signing-structure). Use `TreeHash` to create a digest from a custom struct: From e03355e72f5aef22da46e0d4d459b3b48bb67213 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 13:04:20 -0700 Subject: [PATCH 16/31] Update prop-commit-signing.md --- docs/docs/developing/prop-commit-signing.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/docs/developing/prop-commit-signing.md b/docs/docs/developing/prop-commit-signing.md index 30f70413..c151156b 100644 --- a/docs/docs/developing/prop-commit-signing.md +++ b/docs/docs/developing/prop-commit-signing.md @@ -51,11 +51,8 @@ In terms of implementation, the nonce format conforms to the specification in [E The form proposer commitment signatures take depends on the type of signature being requested. BLS signatures take the [standard form](https://eth2book.info/latest/part2/building_blocks/signatures/) (96-byte values). ECDSA (Ethereum EL) signatures take the [standard Ethereum ECDSA `r,s,v` signature form](https://forum.openzeppelin.com/t/sign-it-like-you-mean-it-creating-and-verifying-ethereum-signatures/697). In both cases, the data being signed is a 32-byte hash - the root hash of a composite two-stage [SSZ Merkle tree](https://thogiti.github.io/2024/05/02/Merkleization.html), described below: -
+![signature structure](../res/img/prop_commit_tree.png) - - -
where, for the sub-tree in blue: From 41a97cc9f13b8104bffd1d41b6d3635a1709bcb3 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 13:07:09 -0700 Subject: [PATCH 17/31] Update extending-pbs.md --- docs/docs/developing/extending-pbs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/developing/extending-pbs.md b/docs/docs/developing/extending-pbs.md index e0ed526c..4bde3ab6 100644 --- a/docs/docs/developing/extending-pbs.md +++ b/docs/docs/developing/extending-pbs.md @@ -4,7 +4,7 @@ sidebar_position: 2 # Extending PBS -The PBS (Payload Building Service) binary that ships with Commit-Boost can be extended with custom logic. This is **not** a config-level module declaration like commit modules — instead you replace the PBS binary entirely by implementing the `DefaultBuilderApi` trait. +The PBS binary that ships with Commit-Boost can be extended with custom logic. This is **not** a config-level module declaration like commit modules — instead you replace the PBS binary entirely by implementing the `DefaultBuilderApi` trait. ## Before you extend PBS From 12f56dea284ca38d21393dfcc7fd9e32d15f9cdf Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 13:37:19 -0700 Subject: [PATCH 18/31] Delete signer-api.md --- docs/docs/developing/signer-api.md | 410 ----------------------------- 1 file changed, 410 deletions(-) delete mode 100644 docs/docs/developing/signer-api.md diff --git a/docs/docs/developing/signer-api.md b/docs/docs/developing/signer-api.md deleted file mode 100644 index 0651f8ba..00000000 --- a/docs/docs/developing/signer-api.md +++ /dev/null @@ -1,410 +0,0 @@ ---- -sidebar_position: 4 -description: Full reference for the Commit-Boost Signer API — authentication, endpoints, error codes, and usage examples ---- - -# Signer API - -The Signer Service exposes an HTTP API that commit modules use to request proposer commitment signatures. All requests pass through the signer service's middleware, which validates authentication and routes the request to the appropriate signing backend (local keystore or [Dirk](https://github.com/attestantio/dirk)). - -The Signer Service listens on the port configured by `signer.port` in `cb-config.toml` (default: `20000`). - -For the Merkle tree structure that underlies every proposer commitment signature, see [Requesting Proposer Commitment Signatures](./prop-commit-signing.md#structure-of-a-signature). - ---- - -## Authentication - -Every request (except the health-check endpoint) must present a Bearer token in the `Authorization` header. - -### Module JWT - -Modules authenticate with a **signed JWT** using the pre-shared secret (`CB_SIGNER_JWT`). The JWT is an HS256 token with the following claims: - -| Claim | Type | Required | Description | -|-------|------|----------|-------------| -| `module` | string | always | The module's `id` from the `[[modules]]` entry in `cb-config.toml`. | -| `route` | string | always | The exact request path, e.g. `/signer/v1/get_pubkeys`. | -| `exp` | integer | always | UNIX timestamp for when the token expires. | -| `payload_hash` | string | POST only | Keccak-256 hash of the JSON-encoded request body, with `0x` prefix. Not required for GET requests — the middleware skips `payload_hash` validation when there is no body. | - -The `payload_hash` claim prevents JWT replay attacks: a token issued for one POST request body cannot be reused with a different body on the same route. - -**Lifecycle:** - -- Expiry is controlled by the `SIGNER_JWT_EXPIRATION` environment variable (default from the `commit-boost` crate's constant). -- **Refresh is client-side.** There is no refresh endpoint. The module generates a new JWT locally using the pre-shared secret. The SDK's `SignerClient::refresh_token()` handles this automatically — in production, use the SDK rather than crafting JWTs manually. - -### Admin token - -Administrative endpoints (`/reload`, `/revoke_jwt`) authenticate with a **separate JWT** signed with the `CB_SIGNER_ADMIN_JWT` secret. The admin JWT uses the same HS256 algorithm and includes `admin: true` in its claims, plus `route` and `exp` and optionally `payload_hash`. - -The admin JWT secret is configured via the `CB_SIGNER_ADMIN_JWT` environment variable. - -### Rate limiting - -The signer service rate-limits clients that accumulate too many failed authentication attempts. By default, **3 failed authentications within 5 minutes** locks a client out. These values can be modified in the `[signer]` section of `cb-config.toml`: - -```toml -[signer] -jwt_auth_fail_limit = 3 -jwt_auth_fail_timeout_seconds = 300 -``` - -The rate limit is applied per IP address. If running behind a reverse proxy, configure the [reverse proxy header setup](../get_started/configuration.md#rate-limit) so the correct client IP is extracted. - ---- - -## Quickstart - -### 1. Get a JWT - -An easy way to get a valid module JWT is to inspect the logs after the signer starts (the config output shows the configured modules and JWT secrets), or generate one locally: - -```bash -# Generate a JWT valid for 1 hour for module MY_MODULE -python3 -c " -import jwt, time -claims = { - 'module': 'MY_MODULE', - 'route': '/signer/v1/get_pubkeys', - 'exp': int(time.time()) + 3600 -} -print(jwt.encode(claims, 'my-secret', algorithm='HS256')) -" -``` - -### 2. List available pubkeys (GET — no body) - -Since `GET /signer/v1/get_pubkeys` has no request body, no `payload_hash` is needed in the JWT: - -```bash -export JWT='' -curl -H "Authorization: Bearer $JWT" http://localhost:20000/signer/v1/get_pubkeys -``` - -Example response: - -```json -{ - "keys": [ - { - "consensus": "0xa3366b54f28e4bf1461926a3c70cdb0ec432b5c92554ecaae3742d33fb33873990cbed1761c68020e6d3c14d30a22050", - "proxy_bls": [], - "proxy_ecdsa": [] - } - ] -} -``` - -### 3. Request a signature (POST — requires payload_hash) - -For POST endpoints, the JWT must include a `payload_hash` claim that matches the Keccak-256 hash of the JSON-encoded request body. Use a two-step pattern: generate a token with the correct hash, then use it in the request. - -**Save this as `gen-jwt.sh`:** - -```bash -#!/usr/bin/env bash -python3 -c " -import json, eth_hash, jwt, time - -body = json.dumps({'pubkey': '0x...', 'object_root': '0x...', 'nonce': 0}) -payload_hash = '0x' + eth_hash.keccak256(body.encode()).hex() -claims = { - 'module': 'MY_MODULE', - 'route': '/signer/v1/request_signature/bls', - 'exp': int(time.time()) + 3600, - 'payload_hash': payload_hash -} -print(jwt.encode(claims, 'my-secret', algorithm='HS256')) -" -``` - -Then send the request: - -```bash -curl -X POST \ - -H "Authorization: Bearer $(./gen-jwt.sh)" \ - -d '{"pubkey":"0x...","object_root":"0x...","nonce":0}' \ - http://localhost:20000/signer/v1/request_signature/bls -``` - -**In production**, use the SDK's `SignerClient`, which handles JWT lifecycle (creation, payload hashing, refresh) automatically. See the [Commit Module guide](./commit-module.md#requesting-signatures) for SDK examples. - ---- - -## Module endpoints - -These endpoints are available to commit modules and require a **module JWT** (`jwt_auth` middleware). - -| Method | Path | Auth | Description | -|--------|------|------|-------------| -| `GET` | `/signer/v1/get_pubkeys` | Module JWT | List available validator pubkeys and their proxy keys | -| `POST` | `/signer/v1/generate_proxy_key` | Module JWT | Create a BLS or ECDSA proxy key for a consensus pubkey | -| `POST` | `/signer/v1/request_signature/bls` | Module JWT | Sign data with a consensus BLS key | -| `POST` | `/signer/v1/request_signature/proxy-bls` | Module JWT | Sign data with a proxy BLS key | -| `POST` | `/signer/v1/request_signature/proxy-ecdsa` | Module JWT | Sign data with a proxy ECDSA key | - -### GET /signer/v1/get_pubkeys - -Returns all consensus validator public keys the signer has loaded, along with any proxy keys that have been generated for each consensus key. - -**Response:** - -```json -{ - "keys": [ - { - "consensus": "0x<96-hex-chars>", - "proxy_bls": ["0x<96-hex-chars>", "..."], - "proxy_ecdsa": ["0x<40-hex-chars>", "..."] - } - ] -} -``` - -### POST /signer/v1/generate_proxy_key - -Generates a new proxy keypair for the given consensus pubkey and scheme. The proxy key is authorised by the consensus key via a signed delegation. - -**Request body:** - -```json -{ - "pubkey": "0x<96-hex-chars>", - "scheme": "bls" -} -``` - -`scheme` must be `"bls"` or `"ecdsa"`. - -**Response (BLS example):** - -```json -{ - "message": { - "delegator": "0x<96-hex-chars>", - "proxy": "0x<96-hex-chars>" - }, - "signature": "0x<192-hex-chars>" -} -``` - -**Response (ECDSA example):** - -```json -{ - "message": { - "delegator": "0x<96-hex-chars>", - "proxy": "0x<40-hex-chars>" - }, - "signature": "0x<192-hex-chars>" -} -``` - -### POST /signer/v1/request_signature/bls - -Signs a 32-byte `object_root` with the BLS key corresponding to the given consensus pubkey. - -**Request body:** - -```json -{ - "pubkey": "0x<96-hex-chars>", - "object_root": "0x<64-hex-chars>", - "nonce": 0 -} -``` - -**Response:** - -```json -{ - "pubkey": "0x<96-hex-chars>", - "object_root": "0x<64-hex-chars>", - "module_signing_id": "0x<64-hex-chars>", - "nonce": 0, - "chain_id": 1, - "signature": "0x<192-hex-chars>" -} -``` - -### POST /signer/v1/request_signature/proxy-bls - -Same semantics as BLS consensus signing, but uses a **proxy BLS key** created via `generate_proxy_key` with `scheme: "bls"`. - -**Request body:** - -```json -{ - "proxy": "0x<96-hex-chars>", - "object_root": "0x<64-hex-chars>", - "nonce": 0 -} -``` - -Response has the same shape as `/request_signature/bls`. - -### POST /signer/v1/request_signature/proxy-ecdsa - -Uses a **proxy ECDSA key** created via `generate_proxy_key` with `scheme: "ecdsa"`. The request body specifies the proxy by its Ethereum address. - -**Request body:** - -```json -{ - "proxy": "0x<40-hex-chars>", - "object_root": "0x<64-hex-chars>", - "nonce": 0 -} -``` - -**Response:** - -```json -{ - "address": "0x<40-hex-chars>", - "object_root": "0x<64-hex-chars>", - "module_signing_id": "0x<64-hex-chars>", - "nonce": 0, - "chain_id": 1, - "signature": "0x<130-hex-chars>" -} -``` - -:::tip -ECDSA proxy signing is not available when the signer is using the Dirk backend. Dirk only supports BLS operations. -::: - ---- - -## Admin endpoints - -These endpoints are available for administrative tasks. They are served on the same port as the module endpoints but authenticate with a **separate admin JWT** (`admin_auth` middleware) or, in the case of `/status`, no authentication. - -| Method | Path | Auth | Description | -|--------|------|------|-------------| -| `POST` | `/reload` | Admin JWT | Reload signer configuration and optionally rotate secrets | -| `POST` | `/revoke_jwt` | Admin JWT | Revoke a module's access immediately | -| `GET` | `/status` | None | Health check | - -### POST /reload - -Hot-reloads the signer's configuration without restarting the process. The signer re-reads `cb-config.toml` and environment variables, then rebuilds its internal state: - -- **New modules** added to the config are registered. -- **Removed modules** are dropped from the access list. -- **JWT secrets and admin secret** are reset to their current environment variable values. -- Any runtime changes from previous `/revoke_jwt` or `/reload` body overrides are reverted. - -**Optional request body overrides** (applied on top of the config baseline): - -```json -{ - "jwt_secrets": "module_a=newsecret,module_b=anothersecret", - "admin_secret": "new-admin-secret" -} -``` - -| Field | Type | Description | -|-------|------|-------------| -| `jwt_secrets` | string | Comma-separated list of `=` pairs. Only modules present in the config can be overridden. | -| `admin_secret` | string | Override for the admin JWT secret. | - -**Response:** `200 OK` on success. `500` if the config could not be reloaded (previous state is preserved). - -**Common patterns:** - -1. **Add a new module without restarting:** Add the `[[modules]]` entry to `cb-config.toml`, set the module's JWT secret in the environment, then send `POST /reload` with an empty body. -2. **Rotate a JWT secret remotely:** Send `POST /reload` with the new secret in `jwt_secrets`. The module must already exist in the config. -3. **Revoke and later restore a module:** Use `/revoke_jwt` for immediate revocation, then `/reload` to restore if the module is still in the config. - -**Footguns:** -- Body overrides are **not persisted**. If the signer restarts, it falls back to config/environment values. Update the environment variable to match after rotation. -- Override validation is **atomic**. If any referenced module ID does not exist in the config, the entire reload is rejected. - -### POST /revoke_jwt - -Immediately removes a module from the signer's access list. The module will no longer be able to authenticate with its JWT. - -**Request body:** - -```json -{ - "module_id": "MY_MODULE" -} -``` - -**Response:** `200 OK` if the module was found and removed. `404` if the module ID does not exist. - -:::note -If the module is still present in `cb-config.toml`, the next `/reload` will re-add it. Remove the module from the config to make revocation permanent. -::: - -### GET /status - -Simple health check. Returns `200 OK` with no body. No authentication required. - ---- - -## Error codes - -All error responses follow a consistent JSON format: - -```json -{ - "code": , - "message": "" -} -``` - -| HTTP Status | Code | Meaning | -|-------------|------|---------| -| `400` | `bad request` | The request body is malformed, a pubkey format is invalid, the signing ID is missing from config, or the operation is not supported by the current backend (e.g. ECDSA proxy with Dirk). | -| `401` | `unauthorized` | Missing or invalid JWT. The token may be expired, signed with the wrong secret, or missing required claims. | -| `404` | `not found` | The requested consensus signer, proxy signer, or module ID does not exist. | -| `429` | `rate limited` | Too many failed authentication attempts — retry after the timeout period. | -| `500` | `internal error` | Something went wrong on the server side. The request was valid but could not be fulfilled. | -| `502` | `bad gateway` | The signer is running in Dirk mode but Dirk is unreachable. | - ---- - -## Configuration reference - -The signer service is configured in `cb-config.toml`. See the [Configuration](../get_started/configuration.md#signer-service) page for the full reference, including keystore formats, proxy key store, TLS, and Dirk setup. - ---- - -## Common workflows - -### Requesting a BLS consensus signature - -```mermaid -sequenceDiagram - participant Module - participant Signer - participant Local/Dirk - - Module->>Module: Create JWT with payload_hash - Module->>Signer: POST /signer/v1/request_signature/bls - Signer->>Signer: Validate JWT (route, payload_hash) - Signer->>Local/Dirk: Sign(object_root, signing_id, nonce, chain_id) - Local/Dirk-->>Signer: BLS signature - Signer-->>Module: BlsSignResponse -``` - -### Generating and using a proxy key - -```mermaid -sequenceDiagram - participant Module - participant Signer - - Module->>Signer: POST /signer/v1/generate_proxy_key (pubkey, scheme) - Signer->>Signer: Generate proxy keypair - Signer->>Signer: Sign delegation with consensus key - Signer-->>Module: SignedProxyDelegation - Note over Module: Store proxy key securely - Module->>Signer: POST /signer/v1/request_signature/proxy-bls (proxy, object_root) - Signer-->>Module: BlsSignResponse -``` From 06dc9d98900db1d21d97dec5233ebab134c5728f Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 13:37:56 -0700 Subject: [PATCH 19/31] Update commit-modules.md --- docs/docs/developing/commit-modules.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docs/docs/developing/commit-modules.md b/docs/docs/developing/commit-modules.md index ea7062bb..855ecc7a 100644 --- a/docs/docs/developing/commit-modules.md +++ b/docs/docs/developing/commit-modules.md @@ -86,13 +86,7 @@ To request a signature, you need a public key. Get available keys: let pubkeys = config.signer_client.get_pubkeys().await.unwrap(); ``` -Requests are authenticated using a JWT, which must be refreshed periodically: - -```rust -config.signer_client.refresh_token().await.unwrap(); -``` - -The `SIGNER_JWT_EXPIRATION` constant gives the expiry duration in seconds. +JWT tokens are created and refreshed internally by `SignerClient` — each method generates a fresh token with the correct `route`, `exp`, and `payload_hash` claims automatically. No manual token management is needed. #### Consensus key signatures From 8a78082cf7f1b2880e1fb5c17990223f599503fd Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 13:38:00 -0700 Subject: [PATCH 20/31] Update sidebars.js --- docs/sidebars.js | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sidebars.js b/docs/sidebars.js index 49865902..a05bfc0b 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -58,7 +58,6 @@ const sidebars = { 'developing/commit-modules', 'developing/prop-commit-signing', 'developing/extending-pbs', - 'developing/signer-api', 'developing/environment-setup', ], }, From 441f5f92715d2f783049a7643a3e1a4433014a1e Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 13:38:11 -0700 Subject: [PATCH 21/31] Update mux-key-loaders.md --- docs/docs/get_started/mux-key-loaders.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/get_started/mux-key-loaders.md b/docs/docs/get_started/mux-key-loaders.md index 9a910eba..7837b972 100644 --- a/docs/docs/get_started/mux-key-loaders.md +++ b/docs/docs/get_started/mux-key-loaders.md @@ -239,4 +239,4 @@ For a complete working example with multiple mux entries — File loader, Lido r ## See also - [Configuration reference](./configuration.md) — full config field listing -- [Signer API](../developing/signer-api.md) — key loading for the Signer Service +- [Signer API](../developing/prop-commit-signing.md#api-quickstart) — signing API quickstart and authentication From 16f0ea97fe554f27aeced34cb5307906158b1c30 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 13:38:25 -0700 Subject: [PATCH 22/31] Update prop-commit-signing.md --- docs/docs/developing/prop-commit-signing.md | 118 ++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/docs/docs/developing/prop-commit-signing.md b/docs/docs/developing/prop-commit-signing.md index c151156b..2e57ac3d 100644 --- a/docs/docs/developing/prop-commit-signing.md +++ b/docs/docs/developing/prop-commit-signing.md @@ -71,3 +71,121 @@ A Merkle tree must be constructed from these four leaf nodes, and its root hash The data signed in a proposer commitment is the 32-byte hash root of this new tree (the green `Root` box). Many languages provide libraries for computing the root of an SSZ Merkle tree, such as [fastssz for Go](https://github.com/ferranbt/fastssz) or [tree_hash for Rust](https://docs.rs/tree_hash/latest/tree_hash/). When verifying proposer commitment signatures, use a library that supports Merkle tree root hashing, the `compute_domain()` operation, and validation for signatures generated by your key of choice. + +--- + +## Authentication + +Every request to the Signer Service (except the health-check endpoint) must present a Bearer token in the `Authorization` header. + +### Module JWT + +Modules authenticate with a **signed JWT** using the pre-shared secret (`CB_SIGNER_JWT` env var). The JWT is an HS256 token with the following claims: + +| Claim | Type | Required | Description | +|-------|------|----------|-------------| +| `module` | string | always | The module's `id` from the `[[modules]]` entry in `cb-config.toml`. | +| `route` | string | always | The exact request path, e.g. `/signer/v1/get_pubkeys`. | +| `exp` | integer | always | UNIX timestamp for when the token expires. | +| `payload_hash` | string | POST only | Keccak-256 hash of the JSON-encoded request body, with `0x` prefix. Skipped for GET requests. | + +The `payload_hash` claim prevents JWT replay attacks: a token issued for one POST request body cannot be reused with a different body on the same route. + +**Token lifecycle:** Expiry is 5 minutes (`SIGNER_JWT_EXPIRATION` crate constant). Refresh is **client-side** — there is no refresh endpoint. The module generates a new JWT locally using the pre-shared secret. The SDK's `SignerClient::refresh_token()` handles this automatically. + +### Admin token + +Administrative endpoints (`/reload`, `/revoke_jwt`) authenticate with a **separate JWT** signed with the `CB_SIGNER_ADMIN_JWT` secret (env var). Same HS256 algorithm, includes `admin: true` in its claims. + +### Rate limiting + +The signer rate-limits by IP address. Default: **3 failed authentications within 5 minutes** locks a client out. Configurable via `[signer]` in `cb-config.toml`: + +```toml +[signer] +jwt_auth_fail_limit = 3 +jwt_auth_fail_timeout_seconds = 300 +``` + +If running behind a reverse proxy, configure the [reverse proxy header setup](../get_started/configuration.md#rate-limit) so the correct client IP is extracted. + +--- + +## API Quickstart + +Below is a walkthrough of the full Signer API flow using the Rust SDK. The `SignerClient` (returned by `load_commit_module_config`) handles JWT creation, payload hashing, and token refresh automatically — you never craft JWTs by hand. + +```rust +use commit_boost::prelude::*; + +// 1. Load the module config — this gives you a pre-configured SignerClient +#[derive(Debug, Deserialize)] +struct ExtraConfig { /* your module's custom fields */ } + +#[tokio::main] +async fn main() -> eyre::Result<()> { + let config = load_commit_module_config::()?; + let mut client = config.signer_client; + + // 2. List available validator pubkeys + let pubkeys = client.get_pubkeys().await?; + println!("Loaded {} validators", pubkeys.keys.len()); + + // 3. Generate a BLS proxy key for a consensus pubkey + let consensus = pubkeys.keys[0].consensus.clone(); + let delegation = client.generate_proxy_key_bls(consensus.clone()).await?; + let proxy_pubkey = delegation.message.proxy; + + // 4. Request a signature with the consensus key + #[derive(TreeHash)] + struct Datagram { data: u64 } + + let datagram = Datagram { data: 42 }; + let request = SignConsensusRequest::builder(consensus).with_msg(&datagram); + let sig = client.request_consensus_signature(request).await?; + + // 5. Or request a signature with the proxy key + let proxy_request = SignProxyRequest::builder(proxy_pubkey).with_msg(&datagram); + let proxy_sig = client.request_proxy_signature_bls(proxy_request).await?; + + Ok(()) +} +``` + +For a complete working example, see [`examples/da_commit/`](https://github.com/Commit-Boost/commit-boost-client/tree/main/examples/da_commit) in the repository. + +--- + +## Common workflows + +### Requesting a BLS consensus signature +![Generating and using a proxy key](../res/img/consensus-key-sign.png) + +### Generating and using a proxy key +![Generating and using a proxy key](../res/img/proxy-key-sign.png) + +:::tip ECDSA proxy signing with Dirk +ECDSA proxy signing is not available when the signer is using the Dirk backend. Dirk only supports BLS operations. +::: + +--- + +## Error codes + +All error responses follow a consistent JSON format: + +```json +{ + "code": , + "message": "" +} +``` + +| HTTP Status | Meaning | +|-------------|---------| +| `400` | Malformed request body, invalid pubkey format, missing signing ID, or operation not supported by current backend (e.g. ECDSA proxy with Dirk). | +| `401` | Missing or invalid JWT. Token may be expired, signed with wrong secret, or missing required claims. | +| `404` | Requested consensus signer, proxy signer, or module ID does not exist. | +| `429` | Too many failed authentication attempts — retry after the timeout period. | +| `500` | Internal server error. The request was valid but could not be fulfilled. | +| `502` | Signer is running in Dirk mode but Dirk is unreachable. | From 53572d89d2ea811bc97fe3a69d0512d53209a2ba Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Wed, 3 Jun 2026 13:41:46 -0700 Subject: [PATCH 23/31] Update signer-api.yml --- api/signer-api.yml | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/api/signer-api.yml b/api/signer-api.yml index b46ea1ff..b70ddbba 100644 --- a/api/signer-api.yml +++ b/api/signer-api.yml @@ -2,7 +2,46 @@ openapi: "3.1.1" info: title: Signer API version: "0.2.0" - description: API that allows commit modules to request generic signatures from validators + description: | + API that allows commit modules to request generic signatures from validators. + + ## Authentication + + All endpoints (except `/status`) require a Bearer JWT in the `Authorization` header. + + ### Module JWT claims + + | Claim | Type | Required | Description | + |-------|------|----------|-------------| + | `module` | string | always | Module `id` from `[[modules]]` in `cb-config.toml`. | + | `route` | string | always | Exact request path, e.g. `/signer/v1/get_pubkeys`. | + | `exp` | integer | always | UNIX expiry timestamp. | + | `payload_hash` | string | POST only | Keccak-256 hash of the JSON request body (`0x`-prefixed). | + + Tokens are HS256-signed with the module's pre-shared secret (`CB_SIGNER_JWT` env var). + Expiry is 5 minutes. Refresh is **client-side** — the module generates a new JWT locally. + The `payload_hash` claim prevents JWT replay attacks. + + ### Admin JWT + + Admin endpoints use a separate secret (`CB_SIGNER_ADMIN_JWT` env var) and include `admin: true` in claims. + + ### Rate limiting + + Per-IP rate limit on JWT auth failures. Default: **3 failures / 5 minutes**. Configurable via `[signer].jwt_auth_fail_limit` and `jwt_auth_fail_timeout_seconds` in `cb-config.toml`. + + ## Error responses + + All errors use `{"code": , "message": "..."}`. + + | Status | Meaning | + |--------|---------| + | `400` | Malformed body, invalid pubkey, unsupported operation (e.g. ECDSA proxy with Dirk). | + | `401` | Missing/invalid/expired JWT. | + | `404` | Pubkey, proxy, or module ID not found. | + | `429` | Rate limited — retry after timeout. | + | `500` | Internal server error. | + | `502` | Dirk backend unreachable. | tags: - name: Signer - name: Management From 5cd41b335ccf9603dee37eee1a083288366de01d Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Fri, 5 Jun 2026 10:35:22 -0700 Subject: [PATCH 24/31] Create consensus-key-sign.png --- docs/docs/res/img/consensus-key-sign.png | Bin 0 -> 103080 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/docs/res/img/consensus-key-sign.png diff --git a/docs/docs/res/img/consensus-key-sign.png b/docs/docs/res/img/consensus-key-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..118903f688bfc490783ff39f0ae03097b433efbc GIT binary patch literal 103080 zcmeFZ2V7Ijwm2NDM~|oo2vWoY2uc+tbZm4Gkdg#KQ>r8s3BB7u2+e?ibPY8L3DN>2 z6brpdNf1KsBosk<^TT`p@9KH)-t*ph@B6;recyLie%X7iS+izl&t7}>nzd&3x6j{3 z0H?LpwbTJjOaK7W{txhNjOnwMii*`;Lw$9vJ8FMrGy?YF&=ml{*~J54sB!y(i7E8L z(UHGOeCOS_aew&z{10Hi+%@X=(gA>O@qdu#kCKns+PT~8XZW)J7ewq=zTa53eVonV zulS|!xb51C1)qk?{$5L z?=3!I=K?a?KmW4-=K;6_3;`N|+uyH$pWX*oGyovC3IH5@@gvPT2>>Vy0RTArf20Y% z1^`Yy0|1B}Khl2m$;11I`+q6!(Ejm&y*&W1oC^Rjn*so=p8$a4W`E)BAO1nxF6^^- z_S@yU|8oF10qg)509pVSfDJ%mAG->;0+0g8e4_zW00$3zhwsOO`*7&Uq3`g^kt2tX z9Q)tKq@#hyMe=96fUA@Uepj zzOx-p1NJN4Z}{;OCk`DrbOLY+z;xi?p~FXxvix#}^|xbe{8Dnayb?;f**Q4R$r?aR z9=OMiofWuhc;C&#^Ko`@sUQ$hbnUkFlMvKJX&HGVaBTdW!p2I{TMq{96;AWXz=?xQ``2-h1#knf`T6Gz|HA*( z1OMuQ|G)JB(}G+6wJWW3!K{x03gV5$N5Fo%J_Bmko;j z2J$@TpL`BZiS)rLh8S;3`|zcp)%cT>$n*pb9kGZdV3Zojs^^i<>qX@^!0rh%#jl8B zO3V+1y7%zjzc~L}`(WKy;#Be|LhYo@^PxGzJ1Moav}!2GFSt{SE9D#DVAr2iqTgpf zY7pb-k~7(Jz1ce1{iS6d1yoh&T4HQmNAm7YmJxB?(RZ9bM#$jr8%~K&&p&yBce+G~ z6cFJM!Jp*oGe_Lb!@W3`cRMMJiE8W8biqXaTniFUjJR>``HEI5h?)i`giK}#{`p>%{k=` z6(7gKNgshem6tGJe>GQ13nvAW{W=qTt#lNT>(;vNE*e*`kqHv&_V1`<_kgcQYt2d> z>J|7&+kVnCxx44QEq`d+(I4vhF$C~0&Odh_7!D}H?9K8`4QGV%t>8tK?pJd$Ap}w@ z9UBp7{7_2_bVY|B*FS}mp#_q*hk1&X^qx3g@I#YiMLAs7X2{&VN3OGS>i2@Sc&0cI z-vCnBt@Uq!3Kf&3M@%>WSQGyt_n`V{@6l4&b>bMO^HS;>efx<5R(WmKI*JhASx_6T zNvWxA*Tp@RJeJR~Mv75;bxPPkE`_oaa|xeZmul&jqO4SqOYF~&FS^@pXaw}Ni8^<@ zl-(dN1-sZ=O%rNN?f6MSqsqSlUV#GLzX1kvqyMoQGx7HR5c>U~`!CMu&3}SE*cCnv zWvChPnkzIU%P-0E^dxK=iLx7geYK7=&v;{Sm$8um6{8*LcJ>Y=CWP)Lbq_pPY|`b@ z;ME1OwMB{e8ew<^EXYI}{&cM_4!px&qO&#-*Y%l$^E5#EA8IOq?dZ81r^;dmsTnsP zWi0T=4~seo8)^7pb8L%Vqmuez!D90dIQV{F<#&82J3J7GZstN+h1j(+HO4BSPJXcO5pjYd+<<+OqI72O-s<&<1 zw5+^or?jcYkNR`oBMG!XunwW`>Qx0%QEoe8)ec$Qc%Vw8ET|+{6dhH==OoW`rXD?; z?v}NAY9!~i361EeHf#c0c*m?WLu8=`q}pdy7F>I18$QDoP zs~Jf4edqDOPfGmuArBA%K64*baXH-UeM99hrs5t->-3kXR$XD22mmADVy*BV?BMqq0}yAt}{h23j1eK9p=E-i>?S@XVoNmL4oyBLxa zesN;BAOqz`WK7N~nWYlTrvj|*D};Dd+4r4yww)~S>uS*e88Bl^q8GUJ@{L1UCnxEP z1v|5Ct?Wqq&k`27^33X@DW73@4ybed%2%{!sed~h1uB5ek>#;?3)0Jl)tb=CueZcM z&$nD96!%;ch=!;(AAhbn!^b6M-tZNeS7j)RuWTYoTKPh%VNr5YU>g^7l_&=CF_U% zV~40$(+n>eSk5O`T@`8!-#oT+!2fV?%omlX)}Nir1jhtSFF(YEOiB2`tx232$5*{2 zJP1P?K%RE5(!5AepLx~S%|YAD z1T(58rlm={hTA}j9+XW^!%?ixYsL&URbyk__OI{SV;v{kG06qBy45YZH?HaQbh0&s6&NY^y;zsV}cS1d$3pO1aEcz6RX+RMobVHj{>M7d8|R>)Wka+_d>xfV&nl7vb=LfS|tototE z(zlv(8m$Y`i-dFotvWL|Gu@L!6?8vO%f>?|Rl#$}Jbu^1OdlJLCFR2k0iq;`|2@{KaW)Ha0NVHqk^|%PbA21d}1NdKEM8p2S*sUi*9hKkyw$L(2RNfab!5@x-5Tv z9jK4Dd2JyNIWhe33iGK?JH=Lr=1Rqr<*N&6WiD7)8e5@tsS_$jH?{YoGna^nPdr;) zi2$?tH$WJV5xa+2GFJ*i2op6+x}MG<)(s3ccdG)-6jh&GjpJ;YGdZku)@(>6xU9wf z$&=xS>eZYAv?M#v+p6^hdR~gWH<;|Qv`v28ewmAcm_^KGu+s-{y9jiN{f&?+RCB+{ zgzd|X`6p&d60pV1(^*CQdoL3l&32BtngD6grFo}zN3s6W#ICMSw(FXXj!C|GCcj0+ z8v-Mpv{$WxEG#T!r?9XTrdQL+c6nSj2>^EVcIc5eW3@{M*Vp-d_eBtNDJ&4@t(U`cz9YMy+d71#x|6m~$P6f>lnPLO%h9BljeBPqPdw9*qRq;q=v+;B_E^c!6FhIMSDOj}R!CK3R5iVXU zm9T!GkW-2X9LlJYHWrUg4`C-S=cm#u>12^>&Ye{*lY@D0A|D<2>p*pcf(ts{e{tJI zYt~812u7(n?0jaoOmKyGxc(4;`5zBvhned2KhBS@d**(+AiVr&TzGVCX`9qNbNUcf z@P{36*!_L)({+|=oq{)zSgDE`A(A!JG`qj>*~D2!m715gy_qLTTh2PbK&yY%VDW0T zI?k+3k)uLGqH%$+eA%tQ_N{(x%^{*wLhR9AyDd|LexSGw`&ZpN)WR5Af#+0+zkDx8*hMUG4?A(PQnxu(-s(g-UrG$&^akZ8jp(bk?v>er_su? zdR|?T|zbQ@Xvx zeJf94-hrxnC7J<`ZP8Khw=4h1eNk%^wK!bk2XtR?~k`EqUKMs?^?Knm&$gKHX+fhvv3P+W}7Mf)18_LeqPrcaPC zg^((N;OA%o?`!|j)Yg4L!MN#jY(ikBBWz6gN5@&g#$pJR;S#A$yJ!B|bBzzW>V^ZXQB zHw8{jtJ7!A@<&A2BE!evA|}(4U*MqN#|E~;o9&l^A7t%)>h3Y|2^k@4E$_Rxv_1TP z^IX>Y9IFeS1k+}-5EnIW_lfWfrDQ@f4Om!7v@|Yk#5+s5m=6*>_q&&lGGjMh&0T%B zn(c8V8^o>Swow#l)H7y^(LQUR@OGAxp}-JjM4?gh3^t=F!s5iSt|ZaNM!8$Dpy zM-g6^XIcm9O5WlzR1;R87VrkU0}U*SGI@*U3vt7qEst91t3v201;yAsmLAQ1Wb=b$ z46o`eaRFSE{k8@#3v!1RFd+QcJjl8FcCuqMG3N})*USncjue@J+vR6@=)2p_2Swn6 zFMCI;S#{N9y<+wc*A33=Z6(EyYuyWNxL?$b=goPXid|F3B4-8N4Oo)~@C!y2FyOv_ zSTya$vrm6B(3r{`Pd$yU+N-;_vd+46bM^=E1r7jwUkmwPhM}*Ehb_2v$7B8OsQ>bl zpYB3(-8-fie=FvwV-9CDZfL>XwqM`2iUJwe;Wdx96SoL1gVlhmh-gBQr)@eT zD!ljKnr^i%Gvn=Ykihpg+TdOzF^14UIG?Wb)YLG}xoqIQ+?%o3LHyYknT!#+qVaO| z>uWk%IsyW=MU9`SG9nFJIDQ+>>C${y!K4Uw9aWRT+P@nHkI&R|+6W;nsa+RU1M-?J z+zCBREUivszox_BrwBBQ)OTg_!t)xNMlD zf6{p@uFSICes@LsB-dyo|A+?2mPC9*oV`~`>gyIDdN``~plpUQHnS|V1FP;?>B=45 z!o9knu6+JBq#Nj?at+W~+N{%pft{sWCni?7YEK}2wp^A)E0QO5yMz#$u1Y?uDrkYs+lDE>>7{*GpFrP#S*M> zjjQJUDXSQG`)`h;e8Qi!Q=CWp4$~RD9_(VF7c-rl(-YJ*s%$kfiH~=uL|pKU#rf8U z9axjSNCtbxT?A4w1VkEUH%8Rm;^tGxe|ueKIdiCfeIR9Ff<9c$V)rGAmkl~wo9&cu zoO~i$y>O|_*Nls5&OXz@7no1q=saQHYw+%H`nneClU;H=Z#@#L@EIlp^0&9?oDbSP zzx|b8V#@!io4iF%fXbvoRRk>uTQso_f3^y4&J{G&)i5xeeTBqBfU#v>SP^%A$*V4T zxax}QrC$z9+?szef3Ary*i)OT5QE;i-Q(KU{&ub7R!iF$&6Q7L#9y)g?JSk(mYppR z&M*e+^NLx#0dFDgLO^ZM=Vi8*rF4|vH-JId(tC&zsCLb^KYUogks8X0Y9UF5s~uQI z`^0&Ic44@2rRM0%=Uy%;-|sd5P$zydr$ONU6PgSBVgi@Cj2@W3!X#GNLNt{Ca-Ec* z@$>WWo!*MFrBvB8uAbt_CghY^Oyqj7fD0qjFuY0zl2@hLVcvH@x~WxWOsW570)2nP z_g&oqLRT^fxE1+UiOD@1(CXqh03s##|A7D+Y^3D_{O~Rzv(tXx;QB!vyz=ub&zFPm z>+u4@zCVBI<6p-hrp1RhcFG%q{SAXnbJ5BPK*W^)VX!tIo~1 z3Mk!*HGlD1{P#-0-!<*JUP=21QW;_lDCPKy%As8s_M?( zrs3%+;G5b(1C{jf*7YiL{DPP2Q9`## zcJlD&FWt#bV2z?dh=nE%eY2_swX#WyoIa|PL zbe&_Hm3t!oiwgxI3XLFp!y$OZnb7W!4eTaV=11lpMy5;WmYuk&Y(4Jes*_+YsDX|c zR69%_`3+DHY@Di!8QgaU%KInlUG}l<{8e|#lBPDaDEa zy+BcUJ$|KRGKTG>#%&Mfq@ja}^fe+3zsUB%5jTaLX1_MngoDMKb~Ucy%qfG*QeolT z1M3TeC}=9J?3m0RtN2!?!I3bFWd`9UO_gy`ttr~+m`;~!3`kG2JIF4^nKr($c7+)* z7JRJ!p;&~*>NIWNW=mUsy}g9@PrT?Cg^A_5B>1`FX|PiZnNg5cP<K@4w?+6C4MM8P$c)sb1e16Mzx9>_)Q z9^SWmY*p8wsgsI)a&2P$H3{^KorN;PVf_y7IlK;pi!ZiK5fe_HA}(%2l9RUrR5MmTNlfXcMPf&enrhf%=T& z+Zj2;F8P+?>>U3ToiYZjx{wz1$R>3pLjc<ZlB!M;fgE=lg zhj)BTKyR9QuQcgJgj8A7uV{cBi(3hy(~w)t?7G)7%j$UIM6+N5pfehUpLJCR~su8;IRE+mr^#!J@#bn^OkhEDHe-Lac+(^ z9N;bc24Ib)E?j%va>Y?PLhVb~+tlk|h2znxw(dPQCkHzP-MmkiHWQ}%Iv|VGeYb_T z@ayFHuvwRQdiALnW(Dl*o0K%_w#UndwHwwbN38XbT|kukzfHfYEGF(!RwPDEo#p~z z6x|aGNXQV@k-JF1#ePdvL?EJ44j@d=ks>J%#l!>r~OHExw1up^McM zWg6fvW0ey+nvIl_@RAr)mYKybi*$7n&$0r%S93|j#n&HJg;`r&Q2OHR$jw{snCLXT zM*;G9sOE~bya9W2lm%*k94j+ke7p(~h+wU-CB=n1O6WTkGY+?R>w`cbY3)t4_3g$H z2Er*)y)dw}W*4-0oq)ij3J$5)TT{P{GuqzO@x@qQu?#!#_EvK82d@k5IqS3;eFHf>XF6b@c9>%OnbJaxqQe#O)IRr>KkCe$m8z? z$}hpsU-@(K`kyOvHb3X1d#|Rn$4{(Yy&jXW({Xa2n`Kn8F21>7k~ zL+I<=N2dG~N|(5D0r22IWdB>jrIS~K_+0tO`0J0EZoK?yErd|vg@1R~{wDJi^8fw} z>!-?phyHK6)4yx@Ux@#EZl5Hlad8j5^t#Ob1kUKY$3+lwZGf=y1cc<{E&uheU%wjIO+iW z4B*Jk|JaNFE@eMz^7mG@>8?Lv1RAZbwZxKub~vsaLd77QC!*8PNG1V{8(KW$E|1yK z+9QB_Ky8XF21T0FXvttZi;pHdH~;(V;eN88bBuyJAo^fTar=i?26Ml zC;r`q{~hx89$eR6n0BQ1^C*_uMJa{k1(fANm!W2g7O%LP4)4K%2x{uQn(?kS2kXoq zt(@YbGSyc5Keds%4$-D4$CTgJ=t4={)Zm*ShXTTtyGK@kQ0M=aW&H3zxxl!?sG^Y+-kWmlZ7TWsAYbO2 zXo@mI%ehV<+7cBLm6y`Eo-5H|u~oL{`C`d%Oc;S`)04{7*Z^9IWb5i`1ADF2$0@Y0uG`A< zq)*(vq%QpwuaM33>T-X);AYtat0V>^l8veA2lf0%miIUR2?cofFpMB?T>G2cCWkkf zrO;%2nd!U-et!+K+Tx0vY<&%PJj4aRCii!g`45wLhY}cI-z;`ube*VU_G^-qKzTob zZ65Om4|6TjVI?Ix_u|<(@J500cSiw#=@&lc|LSnI^e3w5z ztDv}ORA9j;AE6m5)>UY5R#r;hE2?S*GziK6Q1v&ptPkmv+_0_RNs8#g9y`Iz7<3eF zBj4WXurmLly7k8aLq8-w{>XCg^*^J4xBQs9Qfr}KB!91U-4*g-cNB%X1Mceog~6^k zDDqXlUB8pWztMRo><_i@kC{hTd16%rghDm0s>}2A0=>Xk?|6>d+-1NZ#^+r-_7Z0H zYwAHg_hynw7w3ZMb)|k%dz50EDc72NP^lVd5xXBI`X_(7|MY;vry~99Zy!pHZoALx zH%hZ=UtTE3iCSndpBHDnJTdd2%WEaducC#VXxG<9-$=|)3H+ghqwgD@oGc2oplzFJ z8viq@)SrGV=2I;OFzNAU+W?(9f#&cwW{`|Pib-+}W0Ip^4U}@qw^UkZI(;HG0($f>6RyAbs_-8Q`JX3v_TTza`fO9pdF55R>dzyT zhL_IXIjI^U>lN%1718#l;EzJG6RnoRGStr@cx@_cG30i7bsr*1~~C*I8MqBbnCZAf4Z7KC&1+S&~4;teg?#AkJ`m9F?7-- z{Qc0|Cep&xV1LaAYR6ud;D4>a!ww(#PLVu4K1x=q!plTPKaZ#PL*+qDyv8WB=md(D zpq`mpe^sWyYtJ4lF+iZ3HiU*LkiWR-vCla^C%HsHqq0m5nb#m|1-CjyD}pCxWrlGX z_1Df}A8eoFd?o{_>Y;dBYOku&%GYjV=n-3I?A0^g{}Oo|7b$W6?Fl39hSjfX^x!?_ zR>3IV+bPS2En;vnmv9b}lZ(1$bkv|*mAnzgAiwtBr$7g6UU65~Y^auW*_K^Ck*F9D zJ&*L5+01ciqHuY1x=i-5X1Oq^ZXM*o?6QUjvD4r!&a~EM$eqb>!XU)Mew%**H@1XX zQ3;p0Q0#o_6Epwo?*1_RdSq;!UIfBZ$^CkIdU`^j5qL0COeTu4zUMz z-`VDFv&!XgG8}15mu=wce-n|L=bjZMXbmj<>Ml~)W)T;(*)@?0gi{4Cf#1T0yC0e~yY?WSw!P3%$9+EQj{TI<^^&1f}i zwD)C_Ja&O#r*R>mAvZSCe)8&x-^eQp_xklJV?iT*=ei1eqj}8D4$%gV}nqa(!p2cG{vK z@y(M#^LlocRUb}trO7p}UXy!MFJ>|sNQ-@tQ?8=Lg&WJ#devm>HR!B5tqNKac~iL* z^C7h#o~ZG#i&v>ih+FG^G;ti-t7CM6{g`wUKS=|N^NK1I$=T+Y*t_<6jB7EVvs#YN zqdTP}K?{*Z^uO@3vk)Wb-gHK?WxW)C|6&ilcL}oT2I;|s`cYSh} zZ&Pg8j+SH;m}s-!Q4(R~L41Jj;o+aR(GCHB6xUVAx>}()Z;K)GG~Dcu^7V6qlaQP8$MDki>7Yb$m0{3J}?U?4JzE5%!6SQ5}3<=+#? z-BvC_4r zx*~zst{Q)s6y6iz_8OV(I50(VR{;7$P>}d4=RW_J8!_u4=G;dp3tT{}lX)NVS1aOU z<>B~5VYAVB>dH$x-KXz{q-J=xktQ-_J&RUJKEGa=yJv;VAYZyc13L^x&y9aE3)7UE zoj@4bCG@AjN-c`d*z@ai$1A}%5(}>vuRKowl9p>sdQ-5GaLxUVvqh0ecKHB*tYED0 zdp%0LsQ`$bJ;t4z3%x3-RTkN=$iJnG9PvH*+pBx!l%h6Rr9sCn1AQ1eIytHIwDS2r zb^(}d+I*5x&{o!s*Yg`L?=EiywaGp0VZ;+P^WJhY#1j%4CsfmU2Mwu0-vD0~%Leh{7M!f}Vt?|7+Wr5xhVn%*Z%S*0F z9+mOW?wS=>V~!;dLq)YscWHH+%petCr_;>(i+Sh`DRX4Z@X&>At{ zU*zuEF-%`P-Cj-yU&JOoJ14}QosfDYROFXgJ}06A5UB;-(?g6U`xPF~T>D2Ocr?Ndfqc2SNV zM$jk{ijn;=g15pn?(*zq8`F#NjYw=1%#+ZFtiiAi`Y?BJKV9Op&dp1f!(26SDAb!S zh&I;v5WWTWdE>fkWB(~itZcS`qrdc(m7}Tt{caI>$dGI?=5i($p7mH}7uEd@z;-~m z$u06Zb2Z4u)FPQc@kE2O)p*TycnaNt=ZEYIpf0^Yqj5DgVA^kmj3dwBmK?FhGpj?R z-boJ0eGa&s0LgNxd;WqZz40KP`kIu$#CQXCBOC8AGhO`F$J(>VX&LBAe;Hh-*{~6} zk>go8P^{j1LH*03`V79Ymov+Aj4$LOP`K&qxa35(5NZOV#!EpBo$hE+7H-gukfh|+ z9+8K?N9+m7k;(_%ql7A;_ySUwtT6Fbm+a@pgp35~WL5PF?7kzyqS!ay97CL1Mekf6 z@OT=Tnx1*?1A(}6I6<$M2x;pOJB3;@RG!na#1bq~Li>yBvFQTgSsjQSt0G~)dNGc^ z8N4rW56N9B{a^@6)X*Ta(9i{jRfCgyn+4;^8R-K)3#}_3%7n0qXNjhn*es%mEE);Q z&O}tm=sB+^s4=WIU!LSBQVE$%qKxaz`GBPm)#euLQ);6p|P+Ph_w-v_LD)V?ZUR&-(l1KU>2xa*ur z{w6KXy@Ig?SrvjOVoffOX!>S4D2VV^bzduR?mR~+n#*y^_DhUiVtqeVK=ZULEo+{G zhN6kF#0LUS;ho(IKHii2;XK=r!QNm8C+zE+&$S%81J-sU!1inA>a!O2%i3R-LVmeC zuwk9#D`S(I@ij>1dcl_CQflAIsV4*d8M@`tJ$IJTq3MNGu_r|0FT(nDO?R6WE2kn+oT*g*iE%OKg{EMV5e;`~GV94%)xHVME|Wo?2UGd539m-7qMaJU()R1> zRKv+(|YJ&kk4 zX7e+K>}xpzTS(I;bHL+@^kb)%rcOg=q!>0ZZZR2oc-~pm1>Lgn8RVu#YglDFA`@kf z9n#CvIDIapOjT~?U2$WAh=^Ed$6@B(wtkrww&IopZK9O{VJ~hJd;?7OKMGjFW@Fx9 zlaa)9O_9qJ9)@)Spn|A*i_~8JRrEf*$#>LCnSMpU%wE@xvzFCyMsLUUO_YI+yX9X{ zq$pRaunm%i=u(5GCG>)0rP`NmkZFCE2|FQOGq3c>sIFIdr?*}-*K;gYr1-y+{2j7M91yFY9_n{pB33HXp&1yr$Y8UK?-U z7+#hBJg}x~T)a-sxi?^_we>k?SIep$2`u=w2Y*Ag>2n@3dVf9iN|do>w#!VmE4Dw- zp{KgB^eK1agCqznx=-H1!Q|kp6-#G8HuCob>i??QxyRgbv}?5zmrdjQgIv=#~8OcdU++q5vJ~vgEV$>}OFP#a))+N!@qx%fJ zAgEn6`kcfeuqkEo}n}q_am#;uy3|TNRAnF=XxDWrZ5Z1($i=K+ss@D zk+^z$xRx3CFZ~)pcZMAFR*1e}s$!Zno_HLJgf)U?$*5J-?Oyp#G?2IR z&YGlTAPbgEp!+GsDdI35%#Mj z6d~f7NkRv@Y&djO=8?9{AGv9`zqu4a;POGHpeMaD?u3m-Gj3n!k^b6D*2qyk%v(>4 zrR(J`0Uzde51gM5m~ob7PKRpSncPPdHirx1iaD`iWOsR4THed$9qy~$+qrL(s>MAD zA)*TEx2&``ECgi1UyGAi)5xU;JcFHHmPNzkxbQ*4?!dd*-Sg6o!AEEBm8n=+DJx6E zl|grqd8r-#kP0Wa`miWk;6OBlAIRDZU%2&PZzq6j@l zQ0vqGRi@kN8$g#~Q#M`hIrLF_XZNV9;dP;oma?n$lX|8svbq#3h8ptpu|1F7w4YRj zwcp|FLTk=>LR!gQtA>I8iNr&2FOMi_ysObrfqw=!2*l`_=riyiw5cmakRR{loaFCw z#Wl|X--65-)+X6;Z?s0#tJQQP1U;fXtd0K<*lfp zCpz0B@@YyC2sM*hh+ZZ%PpVqH+%0Ys?!jM4zXUw^3;8q2TlBXCLQ-3(gD^A;k^68} z55EcW8X%V(P|5&~e4rt}P+plX&Gm;8AeLQrs%h<}*$|f%czg^h?Rb$IELYSZC5Kif zLej@DS z&clUo=In9?m7P5;mR@vscYi3-ktUFVcsN%N$UPpkuaTaMXVwfpt`SGQgeLm*5^cR0 z(1xxikod2g7worPWg2m(py;4$iPfgbw=mv;{Bu59={AK%q(v2o5%a;^sPm0E$)lfE z$dZOQZh_RWD($>5G8%h6_wkTGsS&tT;cG557bT?QP|=5l8HzM(`iFCE^iQpetC|cn zRIwwGY4b$Jz=anc`pTw%)y6t>5aMmT(}*s=ik41`rm<{98Rg> zKY2Y4M9(GeT(t?hQ#T7b6bea;{RRlVSZi%4}2QYHsp>L6!$E9-y&blLfbT?En)K#4NF%3l z1_n{8HU{R?&NX8C`Uc8kt$Eq$ns!mXNrEom3fvMp7s^KgSy*^1U9NB)kei1ul%5 zovzEdvefZ%Pw`M@XZ59?j21F@YVY8EhDC@G$vvfRSjIcGI8 z^=2hEVyA`m?ZaXJo&a^=lkt25=p`y9ENl})J&%&#@%JjWwcfG#?JEz{%Eu>nQaDcZl)*Dv7`h-rct#Bo_wGPZ2f|;Sw~sARu$rQw>zdUx6Ptt9$TaPF9_z-Cz71OiwxsC<#_4$6FCva-OR!`u5Z zkx|5t`8ty=-3^sq=N{?4yAnF@oh-Khp#dLHi^JTGcJ6lJW~!+z{IaN;FM@QC+Cs24 z6MpuT%~#>>dF@jA`K;+zEpF!4n8eUFH6#A(Z|)(q&NLR)Q`OGT!_zC<>1r_V&F<%_>{H&bs0&EZ*M1daS3pQl7P*WQj!kE#UP|M~2@KaX zQ|P+i0Jj!Brk)?Im|8%C2dVQJXV8*XO9y(!$^_o8=sX{=dNu&zkKXpk z%CiHlE>+YZt+h9YdY22vh6R@eUe!&x+c`-!&1VMdj| zWL?pr+Mr3$O`Uv9fQXt6D9ED4;9O{-1%zE2^176bOR`r7sPT4?YtjPj~XSwl$Unw!7DQ?X?AUiFSM3lxxg1qd@M z1(#5+&p7s(nryOc7Kl^mUNd^v49&#?%?`m2@~o&rR<7R0gZ!an%|X&yUrAR+H^^XrZ^IN6m&5xbFsdI z?e$fVWH}m%A4tZEV5?Z(N)WLU#na6hTOFP&6(_IfNK8lN%HW zURyw;9Mu`9^iF&u-Rk2J*;f{he2O`h;Owg{cVpr^V3JyQ)`dmQBlTweQpOgUB~LMtJ9-_WSJmE7e?u10qvfuk4+vA(vyp zQb_DnkVIN^-{9l|ard5oP$L?>bkVeEJ%2@UU$T5*Q6znhJzQ4*YhvzK`Nr2wE9)k2 z(=^A70PhP1uF$jD6S9 zWWpqC|I;k~^A_aUtyAxgPiy&rieUBeP~g$$gC^KA81I2n$+KIGC%5`zy>-3SXU=ui zM$?j_Ep6Q)cE-jQ#JSi^$Wapkl7sc>p2kPKN;yd;~&;ZtA;S(vc z(_(K%Myl$~daLTEywLytF3(Bcf0rAy#>$GCQ#Lw{@ND`@t47z+ISwsi5&Ih>ny2N1 zfFQJ|M zgY_RX|2ZR(-d{XNT=V(XI@a7cr*b`)N!1;o~l3OSmYQx^}zt%1WHPpR8c~39tDnmu)HkZ-BGSh@tHW$(<)F_p`Freg6t`FL4(}{7#?* z8CYGNx~*%r(X>a~k@2ivfa0Q>m(_LXhhmR!Z>Kxk4)y!bsiJ~7yM!rh4o%dTBe`C_ zt^kW7)zfp_XSmz%8ArAqPpBPFOkLgaDZ+Qwpwlzmcae?g=CKuCj8Px)TCJxkh|~O@ z(-;zHDwmMp*1jto$EvX`?ud$Hxm$0^Vmq^5c!*53lG zWPElG+MO!F_U(>;5HBS~SRvfdm!{0y5vmnt1Qvb;jgku0Nb1+V^hHV|fqd!3Z|T`i z`Jw!AreR3SoAyh^B@<3b6wm@JkZ4Ln{|LyLBebW*Z=R(L;-=h<&dGRk1dV%mRB?x?*{nqz z1D=iz8@R9j{@?j^{@aHg{7ZY?UkYA$^@O$gE9jU}{Bg|+$8YTk+sYS&N{S|M-vZdS&2hhmw~WS>Bom3aEq>v%z-rlO?J6dXA!nvHPKkPEkBr z?b!I4b2W$yKtN!C5m45ffKeF2OzssciTk=6QvOZ4dB2Hg~lnIN$ z=SfVQk#Nmje-IkSSLesRzXp5l%3)#u??3n z<5f=c{>i6Mxb=u%zOd>x72X%WXM9FT>>?+_JEXki2o7SMLAspc&WD zzd|?u_q_AJ9_2*iQ_{hR`#<@rqsaPq4v&3cJ#Kgx#nu@v`2Amh(ZBPV!+%B0^!+8D z_?&k^ySEThuUJysfN8!wqd- zv+yUMx$-H6w#lYSyiR#=$lKUZX=uK5c8lStTY#*OzbFo%03gma+Wy}2kEgjRxA9|# z?4`MQ^7A{&K+C@8k~LeC3+pt;vo)-p#t+6CST1WbCJ0WLI#alnz`yVn#ju z{=+x_&LRD`4msXG5_A@|3y;$iy72abircAux57Uyy(d4I8OruZ!}}{WSya z1GBGsoKv=Ic;oP{#pPmL^G9TS53Pgzo05?|F~H88akd5pF$FMiDMo$ zmc9K=(Su)#pOx!3>FMd|lX+Ed{&T$0rz(@;o@XM>TuU=rPwN+miImw|~5>C{rI5dNpD4dcsDVI_F|ICWFTUgk(*Tc3o@!HIXo& zCfA{A86f)j`^7kKDdq^xvGVT6RAZ%KHp&!XU)J&3 z4*m|BvW+8jNLEIzeXKC5nVZr^O(dF0Eo%aQWJn0{$M)E2qGUCf$Kd_9coV$Yo`W2< zYete8Vc(VSddmu%q22#$2_{xv+v}`*zBF<3dw!FY};AM=Y7!OE&IN$y;qp!q;F3)5(BcE zS86gkm9rXl6ybuBZMaxmss5YOc@{tgHHKGOc%^nD9qyyN7(J)z<)_Hce_7ajsGO|2 z3_M3d!5I*<`+x7n^50+of7>KcwCEr52P9O}X3zSV$6wa%e2V*``&WVII*>_)TI(UF ziSzOqApfFIN}2P=HS1;9Fjd}|PIG0~m_9t`ED6v?58_6$$rc(LoQuPL7r$+n=33cD z{65XIWBcEJ`#-YX@&7VPe_3B1kP}dFPW|``zJ2)f{QF;Z{<6I6%U}7waoB6s(Xgk4 z2TlrsF(DB1-fEuE#1HAC>98YLj%u{82m5lpfBz3j=KRmThyR7On)@IBvp|2}|Nc`h zk^hP-$Nmd&^WXPjd9VIE^8Uh4zF&j1RSUjWTC6Lp^p7AF@GVFHZai_$_leC_VHLmj z-fA1Muoeb!&=N0T0R3Wq*?o5uOt8qjmL{I1*3L$qfh<=#NQS=H?N)SO7W`H4a1 zGL^z>{fpv6N%#1zua8RB!t(BtJK9TrgjX=wm7$_`!l*L~C22-fDJ#kzV!FJ8F$3Ox zQM`kPz))TDwTLfH1BfP@lJjBDN`c@mJRVDOL6-|aG(ai(hOf8~12M4#9FDn(q!x@^ z)wvz%xl!@0ueqBu49D8ac{Ta6+%z;HJuxd~DR&bf`qf3{EnAbzcCa|f1N1aHbIQNOza>BvsJdj=hOqp`Xd*rv zUAGe?Tdz%Mw+zXq4EGZ=50juk@c?zf1n!?`NLxF9LX=@Po+{bFZzx@NB)0o<(+!%c zBKqr*lWlnJtK1y0Jg8*+1Z63k74svw_K(mDx3gHvdG7CEJ94FsjAaxON+ z{V+|B=a_v4%4k-Ymui?x9&xHn8><^p9_%%$J1vYIrXew>wh6zU^_cLS| zcAOe3)zV?Jo!OIU<^po26gqh|sEHovI7lk$KV?a(7*>*r%yXRQvbLFNEN$S)lp?RT z6m^@kKmiBtTTGDNvSR1B)-LNdFx`xBvP~JT*1!W)>f;#Qck$=LdChkNwZH@jkN)}1}uDZ-g3}}hfy@t?!KyeSeD|i zwwhBBk{YO|vnwL}o z!_k(-*Ja*VXK!IT=wYIp13?s>N5WegS^;LtT@Br+w(@x6xqxcx2^%6XkiHZSF4I?^ zC;6i!yOEfvI|852jA+feXTgmxj=mYMp1-yDPNoIwlP> zsQKS1wukhOTO}D$a!+fLb68m`Io8qpFi z&GwUTiXQGMCUMTDBW}dMtr@0ZDV7|p?PgV+u_TaIbFkeHF@N`oS&UeX*jbxGo1ob~ ztRO7|PW6hRE;GgsX8f9m`uZYTMk2;vGdFoM`5rJwX5>}uwwN26C%_h*9L-}XOc!&| zoAK}YRA#qa#((vS`j)HxdpmQivnOs?-U!l|{qiSYGnh?^gjX-9oAhM6*De8lx=6JN z%qOiu{z}ikYAa_PS^`7#kPKA_7>PO865aTl@D~kPlG*pN3%P9A>+xVs6}8t;bU5bK zQUX~q9|-A!>=Kd}AzPHxiA(!AGd7S|ZmRR^qK+xga{Wqsy!01Xvtg4{JzOjm%ac3% zTQwu+NOg-M4~;}?zTc#{^K5!b2~d&tJmRit0>RxQMvoQfYJ&TAhUwTBbU{e~AC&bG&}J zS32_e*26;P-5%ugw-0KJyQE(U$R$>*wI4c7a30rh<&jw-7Njt4<4-;@MdqGh=URar zO=<20-21{YpYT%^t~SbGG;(U9Tvzhi4HqJD^S2Ez zaVVP&P>|nQ#L|zPJ-s=6(N;T!YQr*F)gx5=F^t=Sj)`g+lvS~GCD9qYgPxuXOejFhnwXQS~v0wCu`WsK+t}1ehBoYbn z>(|Q7WebUjC#5`|6TjFUyQhE;xxn!gl|7$X8n1{1p))-z83&b2|{4bgZ!Iwv`RM zTTbscvkF7jcf)mvSz!`S-ZiSb-#>xjF7O3}8>?>87RN*Rp-8=s#aQ)X*Q$FP$>bwyKMbkJ|6pHJE!a zAa|$3Z+Njr=#$T;rgpX2b7FNGrXO@-1F=f6(A?3+*X)TOe0{_-!=nY~IraRhM9)JL zaxBLmbH6yH;mWg~R1CbMoJMn6jHRict1BTlhxo9n5U90~F{oQEP8ydt? zHRMsCWPGD#W#B#K`=K>>i3K4l*hWbR#B&EQTr!R|ZWB4#r|AOEZp~N6SLCmk#J{V( z1NF>1snJKM=xReqme>KQ29>K)E`VfQxW^p+caV9)BYi$9YE!s=O89~YJn3=;l;>;_ zaIgBfF(BAfC2m+5w@NO>)f?g(@&3^6wIeobD- z#^LgL;&PC%N1s1WiK0s4Lfa;;wyX+QFPw_IP;Req5s>f$V0_&D zvvS`#6xf*`V!yj?tH;T4lI~g4kc!c5vrNxq!hv$ZtDREtT%V1yB`Pv zo933%h%Mp&v@-rrxsRpR-u!l(X^y8wAw7@(r`bk1hM#d#lim4q5AxCL`+zPyqO7cD zz{qk&RnkcAq$#4_mIY8lEer`n-N|l{8tm`Bu5iO11-n;ndlHe%&8^>c63IX%O69Ezi$zi>8gBohJapVQR==+)uuIZ&~T9Kl$Dz zIF7qf{j%XIEUkAl)h;vma#*wNAY-1MK?n{$htcRG`6^#rQ#UEFsXBOO0-76VA9zB! z>Ju7U9Gko1OY(2+nwIRIqws%z9t2cZh2kBU<+i0UUEiLqjTTQCl)fgrVuWjsDu9(N z{WpKO^)$PUm1O*e*ZiGw*ynQ7(#6--E-t|)+Rw-Q9y@dorhIY)Z!y|`@+tXnFt@}t zyam2gq~7*FiYkfj8oQET?ey7rUc)x*1yv1PNmOgwEXUzkqUy=|i2Jl|Mpa3Nh@$Uh!xe`i|=AYD3%!<3ac zK*{ar6TG4~@X0-32%;QfSFwm=%&^MYr~Cg70dBlb(r#GFN7&5Lyq=i*h|8uB53 z%+#G#pxOBjzo-xv@=xJBLTLUU2i%@ zaB2{(s6$%ZtZ75~&(9CrBeb5#0A1FIptR!}uC6K-%~W-rU7<<6paa#|p;1c1o+a>!0-# z&bu1-Cf6s{aFUd;?DJVK*s>|f1=j-!2u5%Czq)w-(%}NDt#1P-CHH$$*zlwQ6WE3M z7?m4zSl1TD!ouQ8vJ8ZGC&FL`*hjj(=6FkH&T&79zG({>L3N`xsuN0?O*01PTnvEq zofm9``o$wQ3eE-U1qAPJjnickU#&zvninA+D$Q+8>;sn_UjpaKj}W|)c^kgE#Q=6g zXN~F(>cCe&R5OwIC9Ku4I1?V>rr_KxR#cP-Fuo}=(DtqZ1ep_afU4zOiZ`2a^JO){ zd~@gPTWxkkG9%`RC{rJ}{EwNj!xoRLW+k^y&Kv%FBgtkNs*2PH|z0%@y z-C`!$mry1K*S$q*hNNw=Y=)6vVM=HwzD60cit~w1Sb_-AEO2kXs9BSSr3QE2uXVvP; zcpC>f=^fyN{&6`U;%wK&67L?mSkH4tnmJIGw@q0~?NH^lHYcM*;&q;D<+Z2(fZP;G za&A17l4SCohcd(`j{-LE)W|tQan42r&2J&uk(HhOO6?N=QZ$rw?sTh z-2y|k%>p&22AbPUKYrK7)Q0d&_!^vh&DkN&X&J`#T8CU^$(a2yzh^OixVlUAX>J(% znZOS$S>!}8e4rTV9EWe1QMYJ3_h>T=^2lawtU@N$+Hd~)EEjblbV;RZrMN3bD)#af z-kJ@F6)V&yYb5jYYrJf}nK?dTL(16qD+%gKsLnRatZ2Ntp_G{>Qe5mjc95~E9=mSC z`$=~fmE4hJ`vldA>j*dimw)@R4Vn>qH!zI&l23(C&mj<*Eq7Sj@XBCB{nd7QPOJPJ zMcX~3+swOZ8uY@#Fg|xDhiT^&$u58cKdclqS_b$WK1fhPL%#7B+Xjp1UWRAVm6oAB z@Eo8r1;>i&Z#B^$`%xMyY)aR3s09rW!s9a04L5lPeWau%3k%08rM5j9`}28uL`X`( zTK2Nb3qUcRk@ait@MMDA*0aRx{l7}>9-DD+^&PCpusEahXaQ4Tp_l{u8Yh!uE%4bnBJCeV)zu`$ZpT+1IB|24#jgfvvOdO(LhE+|eP8>liJQ1Mwa&pjG#;fNksLZ>Tx6 zOZ};>lUfzU$evp-Hb*oZSo>@?QR*yHY5N>LKh#-STpSFvUH)M`=fVET2RU;hanY>= zI6fozsdREOcgMGi?HpD-%QCf+^=SN*74UKK`i{d*a{o2DX(OuZ`mNU7%uE4#KlV<{W?)kU!P?5{8mJ=1#XY!F2AdD z`FQU1EfK58#t-vR+_e{^FIORoLbh%izvnpSxaRkGhG|Clo4wi-xzn;$m{38QG~Cd} z3zA?e=t!%~SfT2yfuK93WMdBcb3el_j=?HVH}MDeRttt1(A+i7yHD^tBQf1e7U83c>>T@du$Aq_0w<12eWx1cHD_ThGb3y(onG&3LoxoGN zlTPyO-IXJgV=iNj6WWp`8=9-xjg~&4xyN!Q6d$mDv~t42D1|nj&KaHJ*$IijM18f4 zk+>cXy8=)$rO+@@!HFBHwH(Njycpo!(Tb$?_1=T3>bGI|bwO5wMm==>#;nvxw{`iQ z63aKjjxNePOMx}DO$o;}5A&I)%ZE>2YYc!!`D8CE?@41PU@!LM+txZ|DhS`tz2Tm~ zNPv@KReQFsdF%O1A+uYn4Fw4x)9lvoqTJ5Lh5^p`7q@F+OnardSHr~ZyUY_9)VNFl zW2Kk8cDDK`#6Efog1oX{O-46tu+={-+%$T>+GYNy#^QHanpgw4fowN zOo$l|_V;B~ihP-|yz!IIMJZA=BsTLy4Es$$o`pvn0P1;l6cO-Q5Qtq71@hEh=m@~l zk%}+V-OuLIf7AF}{1C?GZl6TSziAdHn5BS<6Kxn>2wZ-BkS$C-ddXc(0No8S?^B3) zDfesL$f|J5XKqf?EwzoN!2VW?OdT8Tm5DurDVYIUMFLa;CL+G-a| zxON`?V<5s7>)JF`Yknfn|1s1IX2wzrbwjACX_uiP79E6n1P&ao?Fr-0JRC)6BhzdN z$dZkDX(5Zl@Nq;fCTQ2Lz-E~KnBYJLgCXp6Ofcu5)M6MS(khgR9u+c$Ee1(h>H5{* zeo(?DdrC&=X^JDT-IcaWU=F(FU{f_7AsJk{eL*eV6_u{(rt@;-YjuBTM|`o9*|aE7 zFs7l~*$Op=)iKUeIANPr((70AYO;z!-(X*W0Y^{VC7oU3H0(2Fg`!0HvovDbWdFp2)boKk9%cAKwq3 zc@a~(*~PWhTfbG>nPybe0u?#4PMBnHL(s>bkT3^`zH!Q0?7ojfvSW95&6Jt2$$Zjp zDW1<<=+&L^&?4>!2q6QA7Of^)h_AVQ+e|jgJgq0 zPq`8jiMSl0z~|LVRb+4l-gfGlc#)IL6~^B-=Dzev|NP>;nscm<#S?#C3e2((p!t|! zgO6b+3ui_8yIPb8q&a(D@)bNlPR!ZUVKSI{mfb6LA4!j?+Hc4=XoF!)Wdt;iKvaPO6yfj{{~>ZdZX?gQBy&4L3E)dr8u z)@9}f&&MLEC;?K(g*FBSsEgE!L><+-h!1V_JbKOEJRHrFC_) zoDHyJ%)P!^uO<~;vm2(m9|B35aVm8K?6ah6^#fvPTTr-ik(Pyw@U%Z!2(ZY~=DFc< zSREr)&!_ah$k?hm{^S!PtZCfWxy4^w#S$Ki7Lu39o;I(yRk}6wJS-IZ!1)1MdJ>Zq zSKu5fAR;JQ5^B-I5eNcL3&H*Rd~PbWt$j9m+qslL#Jc9vTPQI`5+*h>g$b8p6Z92V zD@ktTM993}P5EP5*T0z$1NKh)SM-NBo^Gw>GT6Y4ip(b~QO}Q?XuB-y=hv4#`&{C) zXS_+$pESR!TN7cyw_o)iQ;hi@;ZZkMm6W96h+Jr@_NX-Ol&a_*&~K>-GF9=)h|P-X zDaVi0uLq3K)^na;{kTt?(7?O(tdB)scWdRcG7-^@-?;WE_6VvQL0i)aLvXfOozl;4Lf{z_fU2j!)#K&FM19=d(Vc<1`tO}Vd95vKM~5Sv2I^u5el>lfl>3~R zRt-}un|(7Y+`3BcK~M;Z`ZQO>dWq%oJHPrQh23b@)sa_ueMF7iV*%2E-~Ti<@9`}C z%F89V3=;b`2luyJ0x!ko@LPn2_R$tgX~CHDOIvcluOE4%YVa z^xwta7P$yWo8h~djluY02t*GwrDwVgfnEDbvAB7hnZV+8krpCOzdo%A0-mtES;30e zJjM*i4E?HY00++79R_hSj;NhF|C*&o3 zp&;)V%=zQP|>p8j5O2GXJ&P1XAEuf9(R7RIUK1unqxcuY-JOzd# z&dB`3diqRp*uTD>4hY-K-)c~gcwgnfCa7O=&T*8ls!ERyi(MH`PR9fx{k4OSEc*|HEtTLsNSAm z*Cs@p#2(k|5E{lj^6_b^?ZftK%gNuxgkzJyURtGb3|b~GHm0M_{qU~&{OPh8)~PE@ zlPYx(UaT6tL4{g=OhgVc0+SWQ1d|e0WV6U@ZX2iCv@cL57vubc_2KzzPi~|Q$f+LE zdk^f~&ot^30DaVOFZp9xD7mizJVc|YPU{5&$f2WGYTc6lG~QuSkky{|pUAi#dPP_4 z?b;UPxiEAFttuu467^S=R7G*$Nl7jTKYU3QDE>f3I^O7zPxkckr;eFb$S(ydf+0#k z$QGlNu`i`LI8PZIi$|y`CUOYX35FD_s4rn1E#!s1H3dUPJlMglRjFW<4&n%8RZSl@Jg(K ziECks$B+r+qJC_vKOSlzXb#@ z(`T5DDU4?gD9M|-_!|i-@`u~~rnjnOGnsZ>=){%v0B0v0IT}x=Lm=?fdM2)9pyBE} z0_rP+wOA0n=UHR=)bgHs{Bt4~=qoA9cCC2!xqU67*<39SQiu3>S z-CsEz|6!TM(4bCoeRu4}&LEvTm9kx3?0qGu!(rZ3v%a#F(-AcGD!?ZMvUz-mV4r@X z2nBKlch;rSjpxL}Hfvz&5b(--KE7X4zL2Z~Kj{*Oh`!nO?$5t1C|Ov~O%$hraRJ#C zhRsl*Z8J>QESd=BajGf4eYCVK#v`0#rd?{$b{LYM5uz* zAh$XIhP8m4;XB|t=6|a-mu%VRlA)3X?qMHWBOj zYj=|Zw|b89@(D;3sOUQL3riLaq@y!?hsx^9ElI{U0D*x(1s9`EL77x{3USPL+Z^=o zjCf$mB!FUWAku(-cK6jg;>!DN`||QAT}Y5_Gv65r`C!Rj>LB}>u?1yh!7PQA4+}?d zHpbQ#EyF$&egwS!mQkDuyI*H|%P5gPVB}YX5-;=O`9y|{V8t@ygHd8p60nB5_s@)` zR9B2CfqNm{rb?puMkixiMHM2{%qmwPFaQsDj%VT;ly~`}N^!BVaTRYTp(8{!i3FD5 zkIbT&x_FzSfNi@K$p!k0c)qLkrV%J-Cs$XO@72Es`iZB=q^Rzij@9M8J@cLqD0hSr zE@M&wSg3w82dCY;j=PSw%#59!Woo#uB?KGN)1-wOx}oc$@||N!y@#JJwS8@!Hh<2e z?e#@%xNq$%*7^rPupjgVvx>)3_44+o4Zi&2nQQ#RnJZgZh(8B8Ctqx2^4x%C)O&c! zGB`XHN3zB4^Bs;#m{&U-Mk|4Op=}jkd{GCc{W{PY+)9W!4y7d%0y~F$DZ<1_-rO4# zDgaC73Eo`elcml47Op-EO`Q}(eiD!y-3;#hJwoo&HA>4?_8=q4$q+ZK*n_qcOHox- zRTSv)#}Q|@dU-jZ6PEd7z6B%#|Hna4H40dkq3R9tMP^kxza3fIY=H52_B`!FVn8-eiDZjmKFN0k z!^?XI9n5O<7o-J6CwB-Um1FBqAx`D%?g}x4=oiISmv> z#*QL|HqTdA zR^i2`GEawQ*Cm<=*|zlFFM|v?dK1`(PKPR+YxTV)@H+g z^35~sh*c2Ze+B)oG5xQUYKZu)e-Zu7E^pcFgsBh?hl8a0i#VZOxJ&y{5sv z+vlyw_;I?Qe)7&(K=R9mOEMy7B_K-bxVXN%yqy|_Qa$G50vdw+mVlCZa?;L#eDLh& z8(ia>emk9`rNW(Z`$gr94y=`6SzroKr%98910n!GH5kSGlPygm9Wk2Q`Zn#1bN+&R zWx7X}_`**GGggP+Tjn$U65lQSlnp(^H z#piV?DDTsz-f0b~E~bMsiqi7}xcbe-s%1n7RZUuUaBV=W4uO$O(K!8NQ=2PmrG{~M zX_gvjDO0^nj!lF(#^Bzd)Ru&mv)%Q)ZCAo6gLAU!l#ElSPNsHYzRQfPITc1+l_iV&d4q6tOmMcA`GCSxgywz7W$KMgNm1*5K$D$T? z#4t<4c6w5RZmo@fp`tV9p$37C{;eXe{V4_wf=2dq2-w=mI++($A`Idi+DX06Uz9sq zgRDP=m6%PdE(S!Vre~$*v~f08xQ!trK*whxYcvN%?enE{Tg2kl)_`8aJ{IQ(^dUo}UkxG)ks1H+-6qYZ!1GG?szhni7ocN+(fXFHy&M37JrWorA z;blCT?hVNfqb~jxm-2+s>j1^J%>sJ{yw9TJ+|>6MsLF?*ll%m>98x8IOzuRz+k4yD zyV`AWRmZ$vL2X~5fg>2{7=r6FaRqGv9bP zI)?_aK*!kf>U+4X63dL-oQHd#pcjjRv?1e~7W0l)FUwQ=tO@4|vIj>QXdy8tgN_*) zb$jBdYPo$poaK5iCGnF`znnqmJ9f{TiPvOMkap7d9SQq(G5vv6#Vg$58L@OX9AGhy z&Qqc)6IS&oV(Be}JpS6KK!pv<33wi64m|{+^QXhTpsh5)4fPxu;mIf^8Ii6;(_|6d zZ(Ng4l{YQACR&MVo8znfW|V*##M%m2?qo#8%S~x|0z2Ksp)vkU#y0C zc5l_IUSDySJH#Lq#}ZO|4L3i?T8b`C%M7-nct~IlmdRKyu^E^fJN_dBOSOn#3WuTf zg3xEY%U-Q3bq!MsOP)!jzHxR6aHR9Po$a(_t0o`qmzl6eR1I6bE|l zCp_9Vcdmp@2Gb(75ig1eR0s%UdSxe|Q>-uEe0=8jM)WiC1C;x)Cq-4brl~buA`oi> z8SXCP{>ftw2Q{i0lHeOt>~vBTKQ|<(&xo+=)BK3h*C}^}Ka@a17tROk8WU}8()TRo zlp7a*|KJyqO^j-C@I)mVP}81JywA7I_$0Uj!~p~z9CN08*?j#m9z7(u{*#YTd*&w} zi5ay~Qq+yU62^G)V6%?NP5EloJLn-*OK&x`1JA+F--S^wB^DzgY+w)wY~CNdmyov# zf3P=nd%xr3H9pj^X>mH&kuIc~JCQJqb`s?wvWZ z^{nLPxX$r+4$Mdf7mIH^yKfNqioQw*u`1RBla&Kkif4bFXga`!N`PU&IIrwvWFsPmTz9VOEB z18WOjH4UKH9F61=!eiXJK91Y3-NwT6j2?_%9Bv9e@%ol@iE4LfZ#b^t+6Ny6XTarq zli{yoH)U+sf@NT-c`Ihl!%5B?pfS|cF&>g!VDr?j*jx|U<5cIZHYGr($Z+C{xRU+V zdrgJK`7hq2xT`0c*39Op_V9>{ct}{XS;^_%hF{hbvBTcQw$GBAUzI7{N~|s@cAjS> zOvA(^W0KozZ1IBeVFmWQy$$7;OTP}ped`Xd^*d(sX4~zyt`jQX2JS~S-U#$ALh>)B zsi3pEDu65gH4y`aAh2mpHP^f_BFVU`SVXjteiDb?UGJ_jK*a{DC*feL;zkO$djT@k zR$5|>9rZ8t&Hb#z~zIcUD(_^E7D=%Z#- zRn$?RwIJf~EY<93Nk(#Dc2-SRdR|10=>|J+Ip<1)Ctx-R3$N<)-S0+U=y2ayMr_m= z^}lZqn%y3&9@&YsT&~`Ok3XZ!of**nWnAITjgdRl8CXA$0^xt(a7_TuW{lK@L>NNLD)2|U4AiUF`yXdAze-qPhxO`RS601Il6NKQA zCa#@*BOe~8yLGZp=&8yMRGGc^S;|YXf$EVGfrTt`c$`zgY8CKOikfVaUH~K*1XA1w zY}pm`&X#3VpGY=(d7lCRUPrp3uZk;a+)9oQ7>sVW6XXBvJRCy>wqfas56$^1^$FE6&nyE2w z`g(~8Ht*=R<1%%5p>F!o{2Kl++?4KxHt(NX^sQv{^#zUH9thOx+_ul|o@S3vn={dJ zsQ%_YIHbWdWz2GA5in5Vvr&UwtC!OXi25`WCC^b%n3CV|ofzEI0)*(#EiVs8?IU2} z26LOoRJD=yZuWo7sAZ7U6_DnpuGLCr#+wZmK zqXe>*oiahLEkGF)e_I+;08?I1kg&_#c1rG=a|Q=kHw9e1G9OJaP)oK5)|7RAu`jSz zV_tSSk3THV#xbnzn)h9(iPmoSW1=&>ul{#l5yMwWESKc0<^TqxgaVd79gd6KVeb{Vu@0G1=12xdn)7w@Wg5JmEtIbq{= zl6AVbqtaA|2^WeND}ZxiuZM)0l%9Yg!Fts|4`zuS2Ig|?`k?QwHX-hLHZnTt<5G^2 zOkvvCgB{)UH&bav*?T&Mb?lAm9e=5*%^%b?`2F5UktHg~j$p4fFTV7grRhv6hnFDk zM$eSf^pf=3SZX;U72gX6R$+ldZ241kw`dr>j?N}RmPG-$Yge^Tz0eB@i=;YjKZ7c#E6I{B6>@*rqv-ZMln*twt!jp` zEV0ydACQ@QODy&?)tA|GsTRuGHQrg`krLmz-dqQ0SFxmY^0EH7RSl?-pr-q(dR-rd zKem+U9*U2BXp-6a=ZaK}G1=#N+PX@badAl)l&)xZ?&4bD-ib!LdnXkwEFc1^;N`db zLPsu!L`a@#ibT1*86!{C7Immh4GFRRl#03$kx005X5QQ4TmNIx<3IZN@PF3c?|AZn11{1psJEZO)yG*U_$pD8XUplpb1nFDqcJ~%Zp93EfC>c17k(dCt$*<1 zY*9;nuD9Flpc5%YO;wIZZlQ)um(O{gA`tkj^x+dfwpi@P@7}(=Ai7 zrN2nV4rnZXtY$p5s9;HhN~Lie`N#eIzD^W0?kDoZezQN`d^%1oaagL=9>*Uu0qI|< zxCPoUC^2T$_flXu$w2tSO&Y0VPb4ar=x53;A>9nB-v4Fi@|MJ6@czjS^I~o;qb$OF z*C(bfdt|rqCAWHvRCm}}1YVt00ha}K&@=Iu4Lvr0@(oA;w1f7vg?N^F<9fn(*$S$; z*T|Dn!P)$OQ_G6sv8BUeH#T> zQCCNAS@XxG9L9W$SRY%S3tcS5F*pLIEsaS8^-e5SK_m6!zS_$v6-A}%3vMYFTX0z< z|BCn9VhDBnNw?)8SYxC06}BBAct^*%#LPp;0gQoQdRbk zBt`a(Uf8mI?+4%nej*K3+q|;Uz&zcR$&O z^ffLtqz-s8O`cm>j)>BBq$K(?D_6{%G<*^-43weCg6-BluE`zsR~DE{#Pr`Ll0>lY zy$0oLJy2PT+Qk~`7GK)?F!n~e|=(5?sM+mJ<~(z z63w?Rsp7c2w<6-2`&H@yg8LUL+Yv~u`IFWx=Pldw+*+d6u-yqm9O?>y!iOipV6a0K zSXr<~+_e?eq3zliFUo!j66PNuq~u}N0$Mv_WW>F^5(G$K9$^v$(x+U^;I~5LC7Ftr zQI&6!z8Zh9cwM32y%>j+X6(sWsJqUkWw=b6rh4~5RP_u(-hT-hWggG5Z(qs8?J2ZB zq~g5~^_2w=yFRgfJtit+-+~ie%_q+_w%}JT>7RHqWs7-b@ioL0>jTSrVpv7Ts`$y~ z2>T@OXcz#om6xU#9Ql`l1vUYvP(4yT0n*pJb@RRDfIv+MPb`8Au{*~PfqC<^`EfWL z1-2$t_+B~tsj0H2esC;ZNvJ5ZhE?=# zGQmC9(xOHShQxWgwt2E7L{Gm2fYXc^a7EzcXG`%E+aUA#xiQ?OXD3`ixk3kv&|2Qk z^WyrX6{zO^1RGtyroZ6$Yeed|AtS3COJL%2N2%G&owg#d z7cpi|Ytb34 znWi?g=+2?HZa?f)GO30H1;F8<|Bb!(j%q6X_kVGm(K#wAA|Ta~s-X=fK&UzpdJ#g1 zv@k5H+6ZKz4-nBF?CjVG`cxF513nl%Ge}Fd~My1JSg6igr=QyRS7`>q5 zyvmy=P+y8<0AYY3%QMjgo;#kMbXk;_Ymi?)FZ#e^yQf@p4b|5`YKqoDiW)WFqv~%f ztCV3WfE76tn{XwIN!u`=Tnv1_jkyFhImy}vMamQ%wYz`i>(vk%GNaj`m?AuMvEB_j zfOl09{t#+^TuQsaoNJzCo8RP5GzHPHo;fjnP?(l&9obr%%r(Kjcr!D z_p+u%AN7Ui*VJ3mGmx9P3dRGL3m{OPEsB>*^X8zoZz_>Hdw_51s%$B`a?WcD<$$8n zEP24Y5w~ii^#LM1ImIPU6Wf)&OpkGY(g9du(sEPB`+jcsEG+V|Uaxi)EXFEC(5Z`D zo~}e8K^8$CE8QDR3#@Gz%k+=a<4rl@Y8+8Ye=C z=n<`BbObg*oncVXkCGm+^3U@EcI+;>nrw&Q1@zXZkY3m)30DV`7lRsg>rJ5G^JSLz z7gchxN08zd2?JK=P16`y8&)NDdqirL`2?A}pJIFRS8N)U3mJ8j+y7Np3VFDa(aA(soST94Z z$1zAIVhp`9if)?~@?*LMOY}!e`CZAaJ3v3et;*@AfbE?|FgVQ#9ec5qPH79uMzG97 zNLr>NzlTH2M#6$>8lKbFc!^uwV`DtRXGu&N6Ve17k)3lDAg*GLHwiPG*6yKwtRBwY zqtDKHTBk%h>thzWFgZZ3%{Z(!Ei#*63Ji%R|YS z1Q(?%l$n=j>zX#wcL$yfE2zwB>!&#Jm`kOR1rn>GJ}%Ssz@d%fJ)Y<81{XA-K2;YD?9AxQ%b%pq$S z%hy=zFci}istXkUUDOXpMz@i{ekd5|iw4z0&t8y(iKQs4$@`0L^FRQ=|!Xc{j3Ux$Z49=2=@F9}}SxphcSl^RV+>Kyk6eEZ5lV>t0j1lEnF9uf_Xb zDL4~Ho+^T&&5LaA*w%t*=M8J;1WE`^3-xDrC-j~Tnd}x<#+i$XV@5DRttVyiglVvo ze-BIVVC%OD1pEGiA=R5e_YaHDc}(7+fLz5+&A+3OaC>wq%WK}9LNlm&Fgv(S%_ zm=pS4h1(^wiiT~qQa61#877v^QkMI!jY0<7;_o7zb=95on#$=$_kawGLF|&rtB{%m z#!mw_UgSYvZ`@umqq34=?9@ae#lfhno{Eq)%fz-IMabRt!XP3Bu>#Z&^Ib`&24QtR zCyBnCf!fXz=!&15?<8ZUQgFCajc(gSI@Qr;2m?HtxuAd>@0u&iaq|TAa#+j6=U#Ij?|_UNF; zy{wSO)!7$0v;@-*i1lQ^mILRh*JzZh*#k61(OZ~sBR?<;ov_|f6(DOJv}M36a9qYh zIg^!&!Aes%53be@R&IkxnKpxGl7vcA3*5TOua&3U!lN0(y9A*SDM|Z(`uAg>aSp7n!M>kq3IbY?MDL1GO^} z(H=m^x#I06_6Y`aO%YX)$|F3Tlu|z-4ZcGq;wFThVS)7jqWgLpKeW zA>-gP2R#OkPca9bqg)fPd!5;}1@Eabn~m>psASc@71mCfe)gl5JdE&K#@mq>YO*=Y z5!8k{254+UInADt;5ATIpkPcPiQaE~uVxg)ctUmPsPa<@9q%^;n>fq5r-14Z($dmE z?V$48F4(dh@dtTzei{xxS|=HGBUV-#Y#c@tu02lq5DdbTGM^x!YaLjGEY2h#gj)+; zriO0CO-ChL#qRLEz8XJ_1XOU${324im{vt%3qp~Ry~vEJcP+wgt|C&;quqb5zePIK zof@HT51cj=>bhs#tx>-OxA-CEC)|io#}J6HGK3fOwheaLoo+x(B)f0swb)!oSyz?+ z#>8tv4`22{j5Pxig>((mYz0Y!FSZ_KzJi# zx4=<>wkUYk&knvSML%B_ow)j*QDxz@EmJW(w?P9UhqrC68ifot3b+s$gB?s;?%NT; znom1gw-B(j2koez}7dg?F)bCg{}K@}y2f*_3yTdz9aLV6_Bc0Ga< zq3U6@RrKvwz6qh2qw*`OXYvGS5eM76#YR@Hkz{|jf)I%4oziQ5g!2-Bg&?Dn%iPl@ zZCJ3~ihg)QFiVQxf47-7t3IVYDh}Sx#TL|!-}9?6C#B3MF5Ku7V;2PlqX~dAhvyTt z#r%3F0tcu)tojQh%f)9!YIFscR9J?)x|{Q4mQy%;_-rhSwmp6Z;z~o1+w+p^F%~ja zA5GaqRRqOHKqIb+@yOihFK;gV3sXx13H{RayJ0uk(Ve0Bl4)`7oUK0;?$jeL)*56W zmTk_Rfp%q=?h2#cxy-uhdFq~Oh(Sc38LFd?1bFM(j*L+Gr{{Gwr+F$Dy+iIHZpXuk zdaFHM^_k~3-In%%r0x=c^r^D)`lhRL z%i%My70^KY=ejdpqxT#>8k&T6cZZaEm2%LljfuHPo-{OVAwWY&z0=dru{NBS}S!PIi=Be!2tJ3a1KMR3G6l`QUh zrJ5P^q!mTLht$nX=|L+rLVbHLf^g$NboAjlLC}+mPKCs~gDwRh8IyOQ(;r`4at_K)K(IZN!Laz79(kDcIB2?<^7$DaLs(2` z`DC(pWp@gh$FOmni;O2u{>Hf|b-`Phl3te3y{x%xlA0RFIk%XnP12J}`pQSyR`{ZD zvS|qQ(>81HT#X?PoSL-~l*0567D^gTS&=lHXUxoJN`2)k3;z8-5zG4DHvMMt)70zJ z&W7ZbBT_No?+R3I{%z;kATq z$`z&;#(Z>;i#4&?=6D2xT@z>@M1Y8(8#%OyG=BpV2%@=w_(|o9l)8N;2uvX9~}Rn*3=FO zt~?$|9-%B9W}H!SiLDzmIeRX!E>$ zI7e^e~pC)Gr&$W$$5y*QdqpL_oR z{5oDpFnYs7(T&Jz9&grM+mcYRcpJ@_w29287SwfL!&-g5ZmFmG16tYA zSb`zei1VUnip`Q&BGO1A%@H;hEVc#fAV(z1tQ)C{zFb`yvH(!mDL|09(}|i$(dJHC zkv+_t6ZLfJ)xX_oSDT=$mufO`l(6C4**dU^-KWPq=d13od|g6Deyhi2iF`+;m6hcI za$v`Psz_A6bffmM!sNg9K3Unm1-q^0rnU8}SEJIVutWle=I~bHKGlMvpjbS!01CCi zmrsMiK>$Bui~PSG^1tx&@6=ZRW2jmGg$w$3UH>6`Se2J>uj<~7WS)g4Uwl_hj|E3% z>9R<)Te8W?Ya1FV3~`?R2}$R!(wlN4-ouVNLjL#?!5gTpROrqy`zc;Q2+(_k;MfSc8o|8k--ec@4qEt z;Ay-^N%xYjd*glt+d5|qRd@J-hu1gag7{7|(hPd#EY7e^2$4q*s50Xu~ z@FqjKtGw9xJ_SkAV}YQ3P93d|yY=8z^tHvCl07_<73G7(gVC)R&5}epGp*}YEE}wl zmI)WM#|t^y)UC?5$6y0n-}M3&C)nWB1;Kqbe=klfZnfT_2w%Q=WIk<&z5M!>Q0rAG zX67@sG3vpsFNeLkGV>7#v5>@qcC`yh)En*icre^pu&#sQda)d5>In3?tju> zV;$59-*dgk&s@cl@%7>eq{{(i!N^po~6zu2JX5x_=x!6rBBGl#7Y#>}q-+ zv_-^#c^+N`zy12}ZkGR!9sfU`QvU(Vn-iYCD8H=OS5n23d*9-6f299`uFHhya7%6P z&zM&8>O5ej0S@w=iu8k28(e2-XTaqx*A76Va2kUC?9SzI6#0o|B|FPyu=Hg6{CqY5+p`IMyY!pO+Upm(^vbO61p3bZ{V}Q!M=W|<#0MhyHiHsB@wS{R#X_eY`f$G9)U#BUK+v!Ul-_FywJSjWKcFZ zTIJ16a)&-3RgzPE*=L1i69~QKDTJytAEZD8j_TlG_-rje_4~}Yl3O@r9_HC_K%G^j zz3Gy-U8GVX)EN@uCx}7Pq<0Kv0+y^TZNC3xx;&lrx|M$rCz;aK9jhC>T*2DA4IX0B zd483JDic3GeeE8R*>ID5Xj7lmr6Xs%;12!PyfxrmPOoPGtt@$JaW`*PO5ncH``woM z5BOq)Q^9rGWpyDok|9#w7L3Qcp@l6wbW=p^8XVYoqiM+x66u zG~F9I((!K0XV&K9^7PcczJoU8e#?bnL#ZBof?~mfx1()oW4Q2Jwt{BTAbBY!xhne{ zGg=y0<|MH_r~7+wWod*kurRjM#&u70#Ub{5ThTc&q&E&z)9PkCyJ<$UB`wwr2q6gxX@iY>KYyTzr2O)}^c}TYQT?o@ zwUhC~1YzVeTNpZ|Yp2lm9T?uSo3PeWal!SkZfN{giRWg=D#Z3OXSEQ!OQ+NY?GH)aO>0p!(q~ZWkOCz;tQXf<7mOS(Q|^24~<<5n2Bd| z_Dr6t4L*NiT4^9_7fz+fu;9C_oGP$aDAbWdq`m$1&pY*`7wPjT^1}I#$U%4ffq?R4 zV{N*)*w~lYRC{o^zy@b_0 z@9Q}^i__EIO^a3doWv?bwSXSEd5ZS-Ca=eR-LoYjqXPsdtS+(h(@Svh0v;)wRP53E zZf;#IakeOr>z*RiIR$6b-Tv^~Fk<_}`E&&DTd=EG2OyV}@a|;%=E{sWyW5Rkj|pld zaADf$k)9xbxeY}Pz5}v?n&?Ad8 zONZ%t#L08drKZ$gnkD)SHNnM;MXoRJh-IA`eEpU0Oo=r9y@m52qr3588Yw)ZIs5_N z=x)|$>Nv=)dMvm`w!Z+;xmwYn8ubopbunoA(47BT2Dfg^-DTa7yK=UK+hKJl+L~if4aJ3 zZK+KzreR9-JHdHwC?WIu;-~1Y>aKQ0H=g2bt1L=4qnStl`P=sY>A3m-xAWVTi=sLkKX!1{bLV|+I;@1h|VjeJolWFrWOvpbqzoF7o*Z2|Ll5d>9xEScCyLR zGefBm5sq+10yORJdOg72&vl%S?`CS z*CBH1s^&SlF;7{@`dJPJAn%;9ra*v(|HzdHJ`5L4WozEY*WWL*Dp57lHg8ik=awJ> z#QfR)z?t1=N0n|4YX*fPh#YyhMe5Se#MH#n5sWwbz1L(=bzg8tlFXe%cFL7an>1p1 z5jsG+J`nU;=q`1(A&S39q5YnzJMci$6VO6;X}zG^h;rM0D{Y#4wc=FHj$OX#}=CDfpF7n~RIyDBeW8Wrte$!E(q0 zW&1@qb=P#c(MvUTzC1MZStB!92SC|FiiS6MHCkCPilu$Qt4u=t3z7J2$a>DUhJM76 z@ID`Vo#r1`_^7(#efdnJ`HUwO;vF1mSw2^|13LY^oBA*Mw|*Jfaxx1fy`VW~o^zr- zpEZ5`Eu~exI86gJ!3@4ah_7HKW|tmh@uZmaYnQy*2^+eca^o~FLh zH2xKJv-!ZmlNS4I$a|x*vV^84iA_@_y5ECl2{! z|0>M=GWC7az-R%{)Ne%e_H4){BF4QjQ&ED%4rN2oW5FGtvn-@1MQn2gS%gNplTiE6 zMdz%<{8pjcqrk=c6$dh!H6QBDq@YO#2geBGp9rV(N3J!!M!o+MrBGustTas4?ezWR zx%|W#UM(YJG~aF`%vppS4MYpox}NH{vaMaS%7BekRIT7#QKboPiSyH*&9X73L*_e- z_~enM@^^{6` zqK|=z5;PW=z6{<$L_LHW29n z2ez=U49eywY3}gEyhH975h~7NbK~1V&~v!gZ;LdSxy4xIJbU#-w#REc`$b$P7Wqq2o}Jy6WMm3eIuQ&yNPz|Oc<{GTPu+ih$3ISWG)0@GBOJEBj3|^1Rj)@n&a8W|ddml&)J<_S| zmRmoUZr*a50J@~j3ZaCcVviy#6yfEpkx<8A_wfzC?AE2Y-ix~!s;jb_@f<9I?2In4 zeB3{l?ue7$2qI2-ThAf|FeV{n?w$k*;YYFyz#~hfO4s;b1TYrhc5(Kj{&)cg(tc*2 zoC{Mc_oo@0oln~PgX_&Y`akq)vC zT`N5NIby}=$V8vLp!*oPVvevF9u!b_WOP_D;mg-kw%=k^QauM1 zj$q!AGnwyL^iZ!$wGaj)0H)+6E-!_Wff{Ib$jWIqs;(&|dqM3pzairFEe6~K(Z_)J zZW^n}$1PYY)g@6sxk~buZ=$}sW+965oQ?IM)qRY?9X@0ez&BK_GMsh)6=kc^ z${l6kM%gZ|kjQR7Il;~;r=zL*rXvK}jo0Z3w`YdQ#(8l6y{Y@e5~{tLPl%>EgQ6P; z627wcaQlw^k<1X9+jwW_+UroGLxr^u!(79pYgvJ3HEWh8iVb~vPGCxOHKA_WdL7vW z5nXIzV)yaa+u;Fk>XLpQweTIxyAiZ_fCe5_ccW_i6jR(Kp1|HE&yOxh?NkdKXydQs zKclbKXW$ZpF*3wdh?=%vbvxN#SMD#MoSm)vpVDACH z%!h!%rlJ?=mZEnp_7He1+r86X+<`}qP1mAn6M$XW(t!Ng(`TmLu{oohIESu%npJVX z(_3L~im0TI{(3-tt4$Z7C5t8BE4-4?U4L;u>Xea0RXGn=X8~0;O(cxoFE;BX)*mti zy*ZmFY9Ex9g~?|ID!V^IUfvOloP3KZ{awuGJh!Ag#aSa?HmQ5>Joe`Z?HTv{p&^<= z&D3c2y!xpH`qD+tcM`Gw_c{J-8HuMUQ!9ipe3qZ>ikbPlKY$mouiG6qs(- zZVAs5So*=CW$G~p=dnh=#jOoy2SRfK*2Y@uAtxU3@sUC}aaf_ZwJrlyZdTqy@%L5N z+s2@UOm?~{LpE4kCTj@P8zBQL?Zt{Qmx2h(d8c09H#)!LE=?LFOQA1ejFGw3L&M|& zs=P_?FuTyK$Qzm6iyL{^x3H&3^IJugG+9GG>00;(PdxD*+v+=A;jJx$97cR zGfkt)WP67brP`}qST^|ZXWN;a3r)I<+*r=m*yF2rl`c)4OSe1#M@;Mv6?j@{NThR`T|_{&dsnz4)voV zs*d6c^I~#WxLtp7zhB7uaFGB?M)98ec$E8Y`5KoZ`#&Td$5p9 zh_@3@&*TgJp@B!Z zOQuu$VqZq$0{M|lVQ&_cxwWl}kfmCEyC7km70SXmlmUoYxH#a5)*@#Lc-$s0l772I ztyl5-qOYIG8AP}ktfSY-$+n%RHq>5n#EPH>h!2Idq2RHMPv4XlCRtOrDXB29zOa~u zR|=6*y;9ad07O4?Jo(|xCgfM^`fGQeI&aCyHO>gB8|Iy*Sk4#b6_hu<|LsWRW;uc7 z#KoDRW#C(m9EGvap z+Rpo-n?kNtV*cfH)z9es0coYBN$F5~KRt!$-*^rc+=s6^YK!7fTJIZbdo|%-4q85K z8+_+i8zlsBy-mFQvASuMr-d0c3rl;4hWC%3TG)0r%tQ#6aQs1v1gF%}u;Pg8D>a~_ z_ffKeK{8o5q|{tv2M&qvyz1&Y^kDBRUye33#=CLf=7zxH`*r4GsSiXyanGkiMKvO$ zc~04ymxy@BuNvQb#h+$WS;qjrTSTaa?AhI1I$1j7*RSjBB>M==b?!|zvGpDy;1D}{ z1bI&Q=l0*pS68%}BI5NYS6rXF^BDU2p*!y@%h(U0Ym_THe)p$?WJ;hgo--U{yOek4 z+#%1&fX7J2+KQ$BL(jhfAK$q6=vVQw(=NcrOL>)!zckW`{T%+RLI$Hm7cAY?DUI--L2RL9Xmz_! zl!$b(iHqn7>%ka!&Upwp%q7hQIH2&VoD9@j_PE^OSohh3VtDseCr83wBV=a5d&WJd zf+7Q7$?!%j0mIc^X?aE3$iGG#ZuocSYmhdz6==>C2&6r3&u?Yu%jPWf+Uz)miJEIOv%;)+QLeZ<5}{+Hj1SV9x6 zEN*$WKSS~R_!A)>VP>C`zaPj^fTCqUEq5x1&Vu!a&V-d(+^ed}yY7vBDs3`@6u4BB zDZnfLhGmwspt0TBxW$CAq9#L!I+(1w*M|AF^o~lfFKV9UxZ5YO(&F;lAwuL_lhNX- z1P?SZ&JQ==@;iU3Yiu2FsygXBPtK%UGE8mzEoVso>AV_+jW`rN6dD7JEO% z=}|rUE8nO5oolP!r48^1kOn!t*{{>URl$&j5?bqRk0Id%e2@k zQPZc3Y=bvh)`$^jrM{0$S%1rN#EZuji!3uW2N-}?g0kZ1o^1B&sBYuIB<5Ud&t!Lz2)RWOaw+$|GDcNt;4 zs<326?Pw{ve2&5{%=v!O*^H_ZT%kQy>LF*0+Co3DkPUGJ63QnMDC#OEBfX{s1{}-F z_j(oq-@vLiF9{$di$7=6Q1B9cZ;%Rq*y_IiSf7*`g*B- z2FuaOr=Bockt@3~j_^q}Qw^D;!2pC~Jk;Nv^DV3FbrN)dLw9=fo!>RnZGQSETyS^lHwByo5{Go+IUjf zTq#5)T-Ko5t(xeG;F;YC39Qcg-Jg?zM3?EM58*^=+a%=!E=quWsF)^)8>xC&NeI3l zBF&JQ3(#79?E@V=KKs%>5=H z#e@OfhN_$nEI)ko$y+c0+VJ&$VPE}RqeAtn54Ri!EPX-}uKNOJ%KV~~`ghD($Z$DF zwr+}{!K=r=^4aSH9#C(QnDtE?h8@%GU#yXtRBDRBlT=^VtLEF(Rj{8mHgSl-MQnk} zc?P^}_}c>gb4w+IeizKpC#9)A=StEoMVMO9xauDN#be9(KJOV@s+YSsp2y>=fkHM1 z5)n_5s)?DSYgfFproaz)CVij4FrpWsED!45WMM<8I=bvAQzeFV6n#N;bqoNzcb zbIFJjvL2E+0}Boz!BNKs`#UG?S+-*2(WrMqTJZxD3)69{_O?r?UXp{noGjPT;_j-n zA_$HfYpy1D4#uPE89#hFYe^V;G&hQWI#I<<)U0f{-ME^V!bPa+Ieb6fR+gON1Op0b zbDBePTo+u?L~P^*o0*1YjvczS5N%`aXJ)A5nbiziFWd@N^l~aB&nHgv)+%1Q`-WZIdPzq`AM3*?UfxuO*uJV;Ws5AmlxI*(Ih-zPs)atu0AK+D7 z?NQp~xo2WfjU;5c)X2EZ7C#Ao9^X!o8J>=?7qDMoW}~;Vw%$hP`hK{qiz(JwA~(O9 zk$M-p{=qRh|Int*{vx8yvAx7tFBXCYpH`WY;Eg6j*d$9ML-3vYb6nh zjfZ(v@#{MEU)KAQzw(*IH1(c-Tp^+L;FlMfLG{p@CkcJyE}bMNfUl$ysmzp`oP_~j z)s^o4(9Kp85-ZPH#LaX!lz%Sb8_3})n^9t&i~hrRZ4_^ec9m^3-?%D1jeU<%bnhVH zOoHL@vml;;k$!jg=xJ6Kj}6xZ)+9&VAPw#og5jlVKb!gSWS_krg9J=w40^cpjSxG+ zV`eNyWOx6Q3?JWRr_6aR{`4;y`Aase9oddR`m<-xEQEg2%1^28Zv>6-5ZFztYh_83 zy5}WyV6W5-eykcgis}L=J%`E^Ti&Udo<>`F#h5NgO(S!=C;{R;23F%dJuHQ-#mlwK zeqpV0(!TPUPDB{oFU#8-o*Qskb`h0(Q3rD{oPAkHFnxk@yaYN3qxYkgPv1 z=KQAZR%IyG^z(pjqn!VBs=C`UM%Ze%%Xguy%&$7661ktxlS5|C$CoE!VcHLo4mG-1 z{VCNSdT&gpBzgDBSEd!YWwGpz%ZUxt|s z)b*pToR=7J!e%zaGJgT0K8buIVjo#dKCbz7I6_v(2l%_YZ%~#zN(yrC5dqCvCtQR5 zG-H>bt7UwMk-IdyoMR<{>CvgPpbSD>0QnkC2wbEMPlzw9pK$Ykg`xkMx&KF*`xE`X z69qHju;;EDIVw}57*`~#k8vm2YjoPFS(_T3GX#VR8QK2HZ^#+`W;_F@%-7qmIPvm9 zH>ze7R7TxH z>CEg91Hp&d3-z2_PTGEWIqF9C6YSZ(2>vD8>(#kdZ&xqY(Qt8jx`ZyGUyye0ok8uw z7*~8pWq>(0T(5$@^}6kG>G-WBtrQ0<|AF`WpAm(bM~W3f)l5jyp}%=4&#c5ltWcWV z*?jQBRbx#r2kIhSychjA!PPq~&LE&RXiOPtzNmRm+Td*T3Ax&s>uMw;w z3-vWiM^$Kku&-VEVl?9M_8@rWsB!u6tx-4ThVh5KP1^;dsbJK5PUl!OV<3x(jUH5X zFT*9-YmCKCq>5g;>p(F3PS-rXJbAtld50&AG=bU-pvRg^qfc9vW@b<)3cNBo)y*Bz z7seO32E>67cO#QcjDnG3BW4V>2Mb8B{oREcSLH-aTp(@=XH0DY*ZX?-H30h=Y^0~MPSp|MBd;6 z{E08B%1%jJt66u>o@SVOeYCS^PmOM> zLP_p65Ax`#y3V@t)dC+wkp1-yYv#d}x7kv`?wYPAmE1ztvRNKE6vR8lGN+A9p3j zSCm56W{MlXb946pq(3XAp$O;*Dpk%s4*>N zY(pt=C1*i|1QkT3hz)WFn+*e(^Tq33fUCDEMcHjEvAVNQI!{kY^5AHm=_1Ac7{!OI z#CSrkwaLi$%O_}of~|MKRa#573T97kdxl|CoaH3bu?sQ|PHJ9WIh$UBcdL7mE`z{w z9Q-SvLzzus?*r z?1Zz!194(F^(5NrQvT_e!|O9>?ieB}$_&V_Y*|@-v+3D59-HVM`fzmr zwb4$j$5%dt#c~7e-8-D_XdIAXKG-$QTQW_?z&poV4htaLy4s1;+iWpyop?LbQy%Vq{ck{u# zJF84<<)_w)ht6g~!6W^UcS&@wAoF&LQ+4Px*p#T(v652GQE+USK&{##L#j+Q>xRnG z#j`ymgUi`hEi?m6EW`%Q#6`szg7{u;P6dm0spF*g=eG&V-H-KJ{nE3psA?%vv`56j z)=A>B!S)ZmvGYlN9r1+3CNda2;z9?yQZ9_@!P^<+{%WT1jwcZDjoyEZ#ajY=kG(X(PN!4Qdo{?V*5 z*SP}%U@ARwZSA`;Vwu)_eR3v&$8(hNLb}8!&Z#PFgw`Mbky_`8fw%Y>Cy^@r*Qz{ywzo6Qj=`-hFWG!{&+rd=Qx;Q7+p842b&i>Z&T~_~Ouew+U1Hj9pxc6K+`r*6D}xshfC{2b zYz{h3_bGqNjQ(LYb$Y+$T@*!ML69=S;{sG~1{B=WHMj~iF2wg{hxpkbl#(bLD`IGR z801!1qWi^nTW7CW8;z9ouJnBjIqnE;@eKky^hU$6NAgEC&13cJdPh-i+~UBqmHUmR zWBvvAcFvLnWi1?1#3c=M8G5~U3XoR_d2)`6YofzEnIKe?9cc*>9Yq@SOZ`(2e>P++*Ug zg7%@2FsC^0=4Gk8wYv=p7e|~JDksM{fAm4Y%P zPf_qnkXzPj3P~GD8f-4CFPNK~-*=WchNIG={)YGPUt4@7-f}V0SR-L+Tii+uWEF3A z4~y!pAT-iSB}*gk^OV1_gf{IA^a$C#er(d^(Q09aXiB7lSYJ6nA3>x@E7--l!Nl6M<6H)w!|w!z0qm zYTcA4&QmNay~`MnwBX>dXEa=iE_+F_f)STkT6-7e`!XN+CfT z|I|jk9vvi2U_9J=;xsZmIut>wOI*B+ z7bX)Q^+~^-4*T z&tBG#5V|UmE5QtpbDJCQDY_yc0g+I0*HEE!Ayvc&>_nbQSq_FKv=jXwMS4fRtNig<|?mRqa)J_}Ng<-2TJvs66(Gs5Y_eK&)^g-fO4DxD8j zN-|kMf%^RDL__!bRlkP%Q;M=A?yfJJmnBY=A8g+Ku@=AT96CN~Y#C`;`EhU|v)JWtMV$8V!gjCt2@ z@@Cox{|&G;Z>A;WO0h}JWAycdBlob6C%yXet})6tIrf_eUyMfr{KUOT?7yuQ^@VvtCQ`9OvZH&g&)|o;qiiIt?lzD#lhYCLrIFkeuM{`Jd`8F^$%8llRMh#_{h>*L z4JhM7?4Wf99XCt86oSQj`;k&) zuy@J{*?!rDr3cUBziBU;niK9;65dxvf8LPl;cl1XpN{*O3sFF!?C=}Egqx5@gvOJ) zh!Y6;j!bQVNQn37akqOy-5Gta%hg3r9PgsEVlP?KAeo6{ry@KFinJFSq!RuN5jDhr z^YWF>e97JK0tT?5{jN@hV=KyD*B2MrV($ml5(kx@q-#^xfdtZmy~_&yu!}G=w^j2b zvB&ro#3E$MmgExi*nATWl{}j@$1F6;6(2X_vA-JydQGWrGq&}9ge2`>m73y^@DszI z+skKa2kKUG-E*&6R@avxFHxLnHU|evj(ys^49PVyNn87hy@`9+sbQSWQw!Jot=FOq z3h}>Sv8C7!W{`hdVM_&eDZCNlPu|aYDSq|5zU^H%&;(JTrtel*HQTkGYBFWK+(rAL$&vxd8E)sb<{nID^HS-<6qHS&;*FJHA=_VkJP zMA$oNR__Ns3CoeB$O}zQ~AhAh}_%$@BR;9rl1|efzENlvq&= ziH;Ek*hZC^*g6A$-jgaIB#1VXCZI~)cee&y@rc=lH@%vN3xuJ!p@b~abkK9A`7CUk zW;q9RVW(wE#K*^P%KUI@^__>1(6}+=({Yz4KXuSktrsuEUuBWn?3|jPJO3^r;Y`3c zRVv&=Mw5FCnH*^UC&2G+ee^dGqPy4r2JnNFt&mxy)UspkpC)Ym(=yg2>&CWLtAG1d zGx`VgZ|E@yR}9y%^D>vguYUtP7FE;PXEGSjAEXhrhxr@V;b1oD@gjQFxikBH1n8+_404~lPPETICh|z+LcE9CH+4Id zt&OjIE>WV$W zf(8u0pHIuS-X~)e@!fR_412c3(^r(&Jg$Rh$oC6+&(lb56ZIGx?NCZ$m(e^Q^=RtX z=_@1^uefm*H;PPl^n9}*m~P^g(@yPU7y%T3F2un^HoM2jLN=A*jps(>4w8eogqR)jz4USd=5DwzRLI3;MdVNB4QEv)p1+fl9AmgRL@2T^CxPA9u^M%( zHMQ0fxn4a5L_cR;fkVDb*vfsz^h+zlkcQWa!gKOQO!PSOu6VEJhzTMaR*~n|>bo0M#hQ5k!=bn&$MB907h#S5zeDr$tQIzD% ztJMd;n!g}3zStGjo!mBh5b-JB%d&@r zoNQ*@Y10@@zd@F)_e)NPturC*eN{oZU7Pgdx))L(?$9Oo&2k2sKbJXJ{4pWclhq+G z@X@+F*X>K=_h{=DayG=iWD0?>+aud++B>{$X$SUhB8_Z|%K)Yp?bFeZRz9K@(j*PfKLL_O{Ut41!|oKD2)ySQGwaA@;fC3~=L+jPK+rxl zNMF7}c_%I{jc=YQ2ltw^y+d!DF33kK>k8BfgYJYbY1R0dZi!Rywy#cBz$@$eQOLQ) zilD8R@AerL?_6(E&Ryt^cJk;}oGYK*5?9jiA!zcdCrM%TR z2mLw%mht;R)vGUXDnuY&Lj6o9xnvp9u@a=Y8!cg*_u}b*@+B754F|nR3zXHu3#0ib z*<`bx`?vMpmq}Zie^_y7BVA#(KkN{7L2j&p^`M3VXV^={nzl8?M83cQF5~sP8x=u5y(n>MZc8 zpjU1b_G{L?edm;v8qp^rk$TKC2RY+yuw);UgAqokSGo_kMN`EC-Rw}3$7$^wrw-$S zuh^BR`_9QZr&;vAR&h4foOFxRe0UXAKw{e4p*!^HoKTMN2Zi@Qd6id_SVXJG`m3ob z(<(51K*-sr8^v@KC{ z0Dw|Ad^-(@Y%+DmbAE4h>$h>y&cn^czFwATKP zsVPWLJjI=T3vLN&@DV?iEL?y|l~#U?S1;V(d4RE`I-J*+QzfcNUdbtLdFrm+)~Mgp z(?r!-hsObr`<_FK#S46kzot!BH>U{3b*va;@Z zsvQ)nG1wMESwQRqK8)!Wrlb#?yk75)d1i76Xd&R{k?gnhiG z&p{)5{Is@z!U(v4d{yM_JD9d#s0#LoKY~ZK>6JWZ~L&Hf22k) zZd&p9yh0auFXvA9n@?HfC9AZnu-O0YM~uUHi+y_EpW2J!JyQ`lNCkr_dG%(Yy~hx!IULPM26 zx6Z0g0dE&(>855dx)e$8j-s|SXv{;sOx$bsUO9e2$H4IqpQHc3(LSh@*nDV3?a1-u zLe8AG_Whk&>=(EWCJ;EmLZ}(HY#=rFp!c) z9>ZI6*`s1kZRR^AHPx|C96vYRtD~M6FUKUa==WJh8BT5BevL?dM+Umsh~?&Ii#Oxw~1> z#J!^}4#8{9-%2Ez9W;-9!4HuB1fQcQ7ST~A1gGI3 zNpZ0^Rfg(sx&csbrP5(|P^etOSobY?o=B@Rg}sv&?kWUGqOPQ5mk+v^-jLu;^fK>2 z1qA?lKtyJzR`#ZiAo-OF-%znzCo=g~pG?zYzlDRPkB@@lQ0pYlOW0H0xe9Bm0JW%4 zNl&M)xh<9(rTH{#u4WwVX5CfAeK6Q;7@`0xc~*S9i@Z`>!92toH!mn*gxx*k-KN;2 zrk?d~yYz_RjYCf;ul0Q&Y{aPVU%YrwKRJps8(0Ok)L0U&c2O4bL|6k^&wQ@$M5W0v zaeIT9)GGddu!m;Y+bX=Pls{Emy@&w%xW_}70Kh$~%VqDA7jF~~D#&h_J2w&V+?kYG zbcfs1+370bFu9@WY-3F)S-e!|w9(b5dxvZ%jFH#eL!J+!1P0ESy-#@9rwzU}Vk&~1 z<2LPxY#rLlPLI>BVt_a~6|diEBddthFZ?LqKbPTB=x=?)z3$ztI1VIgUn=hUY+6^? zUc;s}P#ET3o*hV6WSE!VMK%~@IT*q2E|Q+Sj-a&*SP5uU1c14f6aZEVs`n`0^wpJM z*}1{M>|mRjv*$ODC9n8l``xU^bUmpPRYz(Q*39)vv$ZK>UzKE~0Q|fW3HS=1DRae9 z_9W_sZkfKIQ+bTsO1$nD;4C?2QO+{KfoNY1h->1&J(yKKX8*LUdoL#AU9RLu-V^qT#qgaJ1M*!8 zR9i^ecYEZ3&IwEN(SQzKahCa(xeje z{y^oSXXkqr93H+{SrZ0xwx2EQM3b!NeU=xZ$~E6y2q7t|T1eEF9n-zM4BI30-i(db zCf8s`49v_3z;b~hg7~`uD$#Pvw2HUDC;brqVv6f3ejzHpcUSGz!WDz0e6YV(OIf^* zoU)|}Sg2ADEZ>C-meUz%=c0IfJD13iqHw2GIHCA%?%AWndTW_RsBo9mE3_pCa(f54abgO|%nz%gT;k>5-z)KOmvFC-3LNqF**P%TUnUwbyo! z*BPWJVL)}4p$w6kH&^e(kMlcD#-J_dW`(Nt{LA|~!9v=C2CS!OB23y?oFa;FuW>iU z`ryC6@Nfe^6qT{!hnfiRg_(Pm+wG>ERU9%806*=}OFI`yL$KvxQThX+IS0TnfhWt~ zxMnR;PS0KFwkfj%j@4O7D$}1>BK=MX3@G|6MLkW>A)mAZGK>o`akfIzz{TOJ7JNi^ zL-#j3JX|Rlg1NkhR1w%^Zm&lm&ZE4z)0r<#i0u1Ljc=%yU*qW`K zVD03`DToU^n>gqjdDkvy>lQmZM{jDHodw=(C8=`JM?xSkL8s8Q$D#w@(nrz0*tSIM z0jN1~UeSN7UwNE-yYi#1VQ79Sb1Xk~%wUrOLhK=&Ai_}PaTlo`e6{~n-QPxGM^gVZ) z*Y2ighG|-#@AU%mO=eJcFWn-BK2V&j=LvaR&Ksyrby7a-G{I@-is@X!ShYk>`Lgb) z9%khUyWVQnkRz-WmYH`-YkQD%d$Y0&%tp_m%c1*G7n;d-P}X$3N1GQo2!84ac{d(7 z(?&ih+eXTFCFM;VnI@85b?8v0aG>|S8h8|iFx>A>pl%M{I5*K}C_xEokbEt1wx`e7 z9`d7&iZz>x>9V~yy1gxnD<^#Uzyo5CbKOTC85Vy$hqjkdWVq%!V&PCBeA$-DMD*s} zd`wnK%trIlymdC%J(Hpp8zdhc?ezWU#|!_TvFUx;6i^Jmr@pXlR9w(VK|dKsse)BU zW-1)sIiiHEKJ0ol-)n0oFEKuG*#&0d#`JsZyWX*>UnA_H6>b8uBin?PpP(; zl^08-lrCh@i%qGGXQNVQT`IN%2|xEX(npporwn--0@*|l$Cd>`yyZ)JZkVfFo`IO( zaf^-(%nz^}S^dPp^?~D5yuoUlC7)8M17>@Q!p_G;;@!xK)So4ij#mcu>I@H%J2g!S z<(}jKt5P(;s8CjUq?sFMs+}@Ss=Dxvm7LiwL4hWbj`p777D8eH{82RAZucv; zFI92wewSw_D!T9D5|RKTR|LhA6s2boq!$0@?4zIk{r^1AvpOF1SbOD2gXF{hg^%@d zuk}!`dmBwuY;06a@!4#$z&s|mhCvPth!w*74HOKQIfYyC_55WV-z3x2Kk_VtK0Q^o zfv8omT|h;tYal&fVV;r;i8P3@tD`hbSM^EvDbTm*Rz6ITT`%bcxRX62psC+uG`
%EQT6NJve@4y>s4T+sYBr9a8Rf-DC9E{QP|jCSz+0>p$8=uzlZR!zu*>Se zwXm^gW1#j@UrkR?0Gbovr?HdKaJs%fXUE2Weel}HGHqRv{@B*-7}<7HWi(h1zRO6g zx}#zDY{Zbq8^6vdYRFF^?Mh#Wv^U-Nks~M??6Rbo-u)F`+Q%j0Y!%umTUKw1SnoPs zops26)NSugk~G5i2VX~(m|F$m5k7=Siw5t59=PRKH7Q9Ek#9sO<-lLIoBB?zo>YR?|h-PEp zWmg*uPd|xEv0i+w<4YLpG@tFKYhPgR{IjoO%RU4w#9JM6j5~N?>s3?b744{>XzsLwiI0k;+ zo;rt1>N0j^HbT>**+jY2ewl<_9ME_5lfR2?nHILB7WoVVKN3-2eThAT+b0iecqiyP zcVtDDN|5bvfV1QxVwFnLSuGH1a>egvkv?VrX22KNi|sh11@~9o)V?`RKTdRNxWo{} z4CKQnllS$`p(Se0V5?Nf8VnEAt?tj;b9#SL&T8FS?YkD@Hp|J>En|abMVTYIPsg1# z=WlRL_F1Ba+t7=je~CTajziC#;}Ud<=Mz`B9g+%tgs@5EjS4Z(H<8UU)tORr(76hm zD8nzYmvaA7yWz3SmN`rK3uxhXIG=q9Wqsa~Jxd>DcSbZB3xSFG7Nj9pa4EB&HF#_P zP@ZdTOf&X8pibZxt242d62qoECl2?#i4lH=@?5GJxJ%eAmp}1E20{1bPjdF^DrC!s z3U!pw<8mOz{k7$jOJ?A6(@KerOkj=T{L1C&FEA+glf z4A%sk6$x97lJ%R>lS_0iWUYdn+UM+xT|AyhGe%P=qT8vy&x=aH$YSHSjO zoFuCO$`T;VwCTZ@*c1El=mV^>?!_`k!v^ytcrh(H8a~iJoY8(V zeu+Itj%-QQ3qiuU_kN9TZS#FZPrZ+#u{ufCQDDoAAuO_@DbMNi_T)Ys{gN>C_Dk&L zOmn=I|7@80Gc5iRhW`wUe}=_>5r+Q^i+_g2e-VfO42%C&Vewd>q*PDdZ2U=OVr-s= zQ!CTlt!jX%&mP`1#dvse#?4#LuORAhMmwqhFkyD>v$F=DIpM!titBIJ_d9ItzmHP% zGq?9o9sY9-_&>S^{7sa@-h}5RWbn09%?-or{O6o zo3|%z-BwpP<0E`OBcv}lkRX zI1UdvQktsFM>K)jn8j<0ps&ZlWLlbPqG=l5F(S^98y=oq$G)`$sYLF_ZNyi|+zNUZ z{WWPWX_OHnwJHn(1?ubs?JZM2W}lNJHIboezC@>uvZro253z4c8VwqmFN^7y3K|an z5>xR(_9~zfS>ozda;sFeb^7JlGap%qCF^nzPBpDW8!yx4n%Y!cOcO-zg2_P#Na}k7Z;PG_M}@ohl0rh+@Cls zT01M|W?SQp%CZ%DtLfVpLfrH;Ul(~ul&S;<-0>=RTR?My*<_$hu^=ZQEC|4LgLaB{ zJFhPo8=N;EW1q~sjTki@j_8)hbO)n6spWyr7zY&8BrR3Lu2${o27Ip}^G<`vx#0jz zT#qgcbwl;Ci6-Bm=*>2?S7GD~P|VT-%T_U|dKEBicz5PTea(Pi1sDOiXpr0{Mwiw$ zc%pj@NCshW!drGb7_-IQ9m`C~0j|rLl2=@s%8E?xcB=PA2jyBBnCS7@JuJZ`T!rI+ z+!qx{g9S9GX}%3??#8W}yA!VmPH(1Jt2JD>=S%F6dWtH@R0*0kHCd|0Zx4POR4(rc z;_Sr}b}S1<_Kbdb4o`jb=4jMJI>-S||9RR^BI$G^%nlPJXV#Dt{6wqRpi5&KQ)J!~ z_>9f%+h2u$jLNOPI2&P7FQr1;W@t1wxv2l}I*+8rQSnon~)UcXGTM^0x4FyAfWT_Bn^xY`kugU*XC^Wjg`0z#V1&)~Y8}`p zks{CWiGK0iW{on(EcrZd%45j86!38wf?S@Dh^`sURk^~v|LkCm#p28F%p~b!iQ%<^ z#SFRa=bi3Qkp5CuzJ){0ssvU1{Gzt;s?kYI__UeP7J_eDRtpD&X$ly|Hr?(0o% zVIGUl=8y*$FBQbw7kZ<~tbW4qjMhjTRC9ZamF`Dv4xTn0d6j0Ju zf@fPvc**b=dSZoYMVA1JFaT^$+&w1&CwP_N4sOw1 z528lqET?O@LUXj#m;=({6{!NE3%;Wzm)5a81?P{AeNDd5{Ms9-QJqNl^7K@M-56Se zdisEPWBp`3@k{q_d_P)LEu){GZZr`noYLQF;Z!^9yk|{GF&3j6=>tnMxG1wD(F0_# z-yj^HhQ*TT1**z-Vb2Gj(o&1kCru>l6M`HPQkK!{>oI)i=70icgWCvlj$W{onywa< zCmHe=%d-`LVYxf0P}GESQBIWrlySTbQ(Vt5(7t+JkhlE|nW13WTwKKR0(Y3Y;i((G zAMWt?Z^kH8YiS@io!(aFWFV~3!Vi%uK24-1YgdwK3wq`kC=F2UaObREXH{bEu?1j(3M>i`gBT_ z-7#yR1O9Z@j7OcZ4{0y!@hN^I`)V}^)7kcAuf0EWqac}2&62=pJ?WYnkJ1S60yo#D$4ohw14?e~eQaLlHGrg#a6IJyr7G>DO z>X}-kLH_DaO_nQIy~sED#6d}lUzGuK+bDjKO|I@-7337^9-5UsJv}o&r+gK;yEnPk zpv@T&&l#YvwkDMKaMZnAR)^@@<|jUQvl%Z=x32L(4;N1Rw#2kBQzO$3Ij+bAlI`}L zW_`NWr)AN_vOH=B`gT(pE5&WKBHA^0!Z^dzcj3_;kVA50P%X^60Q#2e20JgUsuiKyh|3GpRQI{FQT~#a|ZO9p!g?6!ax3;PLjeIK;WagyZHw7kGnd5!_2$P{?B(eab@$ zSMaD9{d42DBs-u-ZzE8Mtyq4ShG4bw)hgcBo@fgMXdR~ZP; za)sOny}dc!9Vh^}y6~Y3hDtyKp!3}wx)mg$q~&_aM~^k?cLi@RNf%i(m+&){>v@#()b%pN2zTGOYzNz3boGoLuv8syrmVTMM=!Jy4+vM06a7S`Y3&Mkpl zu(iUtOZdf}PQEnwltEOyxris5cfL?VV>Dx7#oa-9jQhEnKdUhjvU=WKo^y&jwO#Gj z?7R1Iy{vu^icJ91pRE{lfhtthQ`KI(SD5nkT5q?2zI=CtvvtB>CFiQ*G}#zXe=GFdYV3(y zm45ARX1T8y4ec>SsSG`6-m4ujwO?+Dyfuyoxuj1VmCvsC(uUV zL71Bjb1-`iZDo*cpm%gsX^v}J9ZHD_dptmrcHgatGx3*x?bGYiOA9ircC;i8dMeImzM%XQz4olFxgWjd5$FNb{Ug@p8 zt>zaO(F+g*i2i{0jQl(*mG`6)c}}Zr_8`khBFVJ*WGy`ET&v4CD!OIMZX(EXQz3wN zlK|kOQAw=Ye6z~NtSf!wUP+lg3xmvYxw_QyqzJ86QDfmAHnSB!5(Q|9K0sSeX=wTm zx4a)9vjzhyeO2Y(~-l$Eu3JF|>8&CiE8?O!dy{Lw(E@4PRe)g25R8_!DU^3%Mk z_%{X#pE!i_jd+(HQB;;-jT!lWfkf|EcoH1WMpD;0CQ0`09!*h7?2M0r8#B-&d5d?e zP2LgvcT-3{3KBUFldjMmgO@xNinD|E+om)abyY*owH4D8fs9hsMuc!CR!jN#E`rDe zcuPUNQZBaF?zhBg3oXTISeG%mlbi&V^|if2ys$y_^Db}lS&X-MWBh5~W__-uvW=cjXgjTji=CU~S`h{4>8xNGn@+T011fPH z6G)RbzA9hqQ~y_oC`+dZz&8s2^Tb z>TA60*X0ABi+A%{cX!=^N6rajKp2&lJ5^!djfPuZ8Mpl3luX@&f({2yW)`#dT`Omm zKJn!J)c?0#H&_caWWH-Yme*TnSyo7UN2tQR9#47+~{5 zfrHJQ;9T*xya8b}q7b3Wjl5nObQ;FyT|UBRbM~|rA$1yCSg1uXX+nccs&jmbRN>5x zpfeS7q{}}u*e~=55iPN~!+9W&f|{;@3Q+|O&}l7&D5m=qOj=s{r|fiB!-%;Yh{*29f0jCe3 zwsw3+xZ*7hdi9)r0s3Xb3_-{a+8u}$GlA3CjDI;AP?P4Xubp^rRh-^Fq7&R(kgs*i4T_7O~h@A4aoU5~KVX+qP&X}2WSF-I!bJSjwNs$)${ zdRxs}{NIcG@y4M6mt$}GxuyUWy>=ijQt#>TLa{b+kDR6>0>77yEmC2loc^vbcK?s- z`%gLYU&Bz+w`hs5g9{YGA4N~{>bv_$k4ZL)QU`_I{Eo-37|dto`1S#X>f9HjXtY7) zVKcZnao4JFlU_MDZK3TM?50fv;|rnQBhpRR7Bgw1gfw@yUNY1WJ*>HZ6(RO?Ku{;( zjfGUQie#{oo`^G!8W;H1jr?C2*B&0(taEcEKN`C4)-aR*SlUkOb+?@${<=F@X^lJJz)nURQN z8O#NsRhZNHAKpp~d%Ft0=hn|RAExafsX}Ei_@Iet)JX>++V$<8MNCu~3c*eb3WCDy z5o(bJx7i4{9}gmWE6duFweB5L<`XBLr0Q~S05_t{8OIA~OIz0NpE$yrC)ltWdgQvR zZ0PNMMS23EAUDTBpq2WjG3Z&%MTWF@B%RG1Y5X^kn`@%Qs(8rGU4o))dk7CgF{!`H zY||1p#g(F&y*_sYgiGRJIdI;<0s$rKF)HVnrGNo|nyJz9ucQ*R32 zwM(vB6%1Kefb7tL+8}#BV?Vu)sF7s_^@v{pHh1<;=H7F`NX3qy@>Ybw`Fs;3SNyHYfyBr(0XrA9ctLZP1ic-! zaz+m6RN!ERH@n`kAgRu175==J+1SN-%hXY{#d3SNd2y1(EEQZxZ#vXrxwoWfNzf(ZNe7u?$yd6|tuH5KkDY~6YEfnj=+giS&}^}D!y0#K04wN@zWWIBBd3)df7X;O3UCc%^5+csn-zKSU3NLI?dkrZ*m_!8x4fMxqySc@{S7t#B`#(|j=v}Z{0->%Ss$}O z$6pcveu1ohiI3U%@z3`Ef5WVPiI3TU$1m#te}Nx=*2#axJbp?4{|k`(i=6ytnEf-% ze&Jx|&oKLEnEf9fW)*9`8{a7(eH9}9Nb4StXXj6jdZiO1gp_W3S1?6sbqgBy*C?Ct z)9=1nzl!@kgV(>GiRhpDUj2s^%w*WH3x82=-SG2RME+p(Pu0sVd_?cv?f>>cnZYZ~8Fo4~YD%HG_kz>4f7a-~E`RDb=Ct!I8Nab= z{&;DrHLU)k(*JDUtwV;Rtg`tCWj;m0qnHWvJRhiAUX{&!NuW<*PIiK?2r4%sD+M=P z+)AZ`Vcym?o6fg5o*&TA`wVaCj>(N|rmkRT#r6FzL-?8eS4N>MosUQg&$MS?&r(kO zG~-36lNj-c;r;(}iQ`#^e%iwc@08Elq_oa!QxeqE+{1U$Gs^&1zk0M~ti6VOTPK&; zAMYa)rpP?822yhd1|K>0Tg4atZtX2(`}pbKE=BF{*Y_Ov;jG|q6$ky@+D|59zk8yN zsr*)}8VS@Cs`uEEdogl0F8U$x>ZIz0UBzSBg4DG8g{6^ok2^J1 zQzzz5%VA?HSCAI|MFkY*c5sg}YpB&qO;g|CVoAGvoYnAFO&_p|4MD;aD49yXUC#fL z`+R>%{Wk~x=GBM)sm&GMRR|9#vMGi|}womV^ZuivwO^FK<9iZ5NJQ(OR7%bm8vuUh!m4bN2AnIZ-Om&{r?l>>1@ z8JZw*Pe!W9kv>yo7rU~uzy1WK2y(@>TK`NFt~XS3yK8~j+* z_i;g)AW=vx3IIJ9m*4|&U-DeYu)yy-<^SJ$PX6z|)_>^BSCC2{-}Dt-Ff^}14cK_M zuos^cu+mPF)+v+krD^izECxmb+UTxB^rbDPBI`hwkva`B+hkL74}wh`G>@}2EB@m@ z<<3j55M*ue%A$I9!K`2q$w6hB5gIMshMvt-aOIt1G{5A3c3JOZeM6JM+bWHT=r zx+htbMgH_8pcqvjUrXC&gw>3uC|THjic#j`k1Py7bnW96&jR~-MwsO zZ28|#I2_bn4e)l|iqoBwIrl@&%*b(y!d|n;`m=|wJRCIwOtQr%)6Al|tKWOtGyZ`z6hsYkUEi~$ot!k1HKqS24 zJrQeDKAD;Hs`AzSL(l)X{GaXj$G-W4BmaZj@4^Icz2|-}9>K2ysJ214Ow8p*4Bn75 znTYo`a8gvnXZx|?HUuBFD;%d~yB(|Tl`cv2pMW}ajX{=lE?;`@-FI^lt=`HD<)9{H-{=^K0JF9N-26f^CLBR2L&6b zJ7{xHKev7Bj=B|W*6W#7`+gH)e)QwiNxLSFfA2u{?`BRC9!Y;w$g@d_*L>Ef|GS-U z-%NbG1KsFmQyFH0CV$tBeEavZziw>4>lemM`}D#;?AtDe5TgMF37HH{QAlAFfVaq0 ziw;4Er=~5IFKMh~;@E7tg+WjfVxa(6f_?Du@UZs6y5Pdo!&}dvlPCiw@I`Nve$)P2ZGnM-{{6a+7#7OzToaa%jxUIeOvB^9 z7rd_)zICB)d_dPNMImm?x$+gt+4ebZ zL!x``x^r$aCJ1`n5#*VJ3X%2lBTZj(oc#5yfBpB!p(exn#fdGS{I}nWt=^vy8{1sj zqx8*w_jSJr$G7+YcYz~Q@9MoJDi9_!rXtRJ#x*t-K&7Ojkgb*PT&(UQg~#7s5Sofw zvKx#QPn{;UML&h^0WVqFR_o2#l?9ovN?bke6FpSAxk12z3EE12d~m|(B(n#<-LJ&k zZP#~8xNXC>$Y`lp>0R~3Y@p3ubGPT=J>eUC zf&nGP<-sVker&!RMG3?V$~Jz%X*Sx4AD(w(RbTnAn5P^jsGw+q2ZX;kvEk4x!$ zvjZ=vnbM)ckI96sCrCG)8q~JGL-hFWo;W;`)I3Y~HP~HG6#K-na?0c6d)LU=u6Dq# zgmprXA(&V1uoM~f&;^d8NNc54rR^JP;cg&C5u&Ga?H zRGo1X2L5RjY2&p;?eG~|jVMj>`Of&|oG%q;S+v-Gi5mk7NU)rNP=PNfrT46@#Ga-xP95*A06ZS=@d&_LG`hccu)?X7*b_1#vLgevsoixd&HH(u+gfFbyS;-f%McdkGkt9zaT=j>Y{3@-ad#I?} zI~WnjfNKbx;y<2JLOyd-tc96QhgeT7%1H@+6j+~WqZ;NmK?apRdPNHkT~;rXKUZJ* zhW+;5GkL~9KJ}vaL;HK`kEn7MCg=&{Zfg}2-B~k0cD|es9=AAKd35|{N$Ub-LUAYn zlfGEd=^aj%+D^oo%0su)*VzKKlr|-O84KiE2@j5^9i{4Z^))gs4<#@fht;`ktIMgb z;ek<~|6$&<^Wr$~4$dd=@lTDR((Z{BOz;g&fmO#olk4%Cai<<|Wt$4aX%tTqvv`pFAc}<|J(-#NrwXvkV zizBDGK|J4W5x5U8P9RHqjdiuiAg#+==cOBSuF+56>+o4B{V-BAw;O6lpBb<`7UH#9E;(l zHuk=?!vF9B@3`l6Ln3KfP3b_=^MSHU(J|gdy#FK!`B)$~n+$F4?dkR;xSfEE)RxN; z_oSExp2B}+hBql(k*XGU?TqeA7%B2c81;@nq2$%9nO;wSTdok;%H0LQR2S4BM~Q&C zr_oVmD?0?rgWL2Iq3PpQNBRVc;ga%e+J?x25Mi+dP3W{W$|QxTB}3F?A;=6N_k1rb zCF2(Msg*QdL%N6+6 zcc#z-PpH&*=NKqcG$e{3WTt_*Qn->+_?cS>tWhfAr`Vuc`DWp!dC84a)qPE@8RJ{6 zAiR+7#7rO=MzqsO8yLTXUa25bvbk$)UNQ_k0?6iWw{jmQ#f@5s%JCQFMZ;<}P$n5| za{?vQkVN}y8igEx`L);K;P~%8@H|%inv>^BGunhO2sfOUUw5i`#nz&m5I9)WJ#c(* z)AuHr%c_vg@41}|ESh5zBbw?qIt&80eM^+k!gBqetaZ zsi4ACUzxU;ajWzfeo5?XULn^c;vlwFro)j}PwhIeZ@`jeVaPw5si;I;@;DIj0B$VQ zXsZ(}uOe!rt{$7&uAg(pPnzKfb5m~XC3VQ1fOmwpMKqLm-4(;j{%}cqnrwgARL)KN z%F8)Zt`K7Ly*-~e-rRh0+pYm-IXKo8UgkHng!h-tqX&#_~sG6LE~ zxLU&)HemMc0IX$BR8vO~{FSm3kbp^eL!jXC3N53pgNM%eVrDb*Ts6Cb+%xTDhl9Yp zEPS%s%f7zsWJ0DkUI7qD=S`~u^VnNGT~rW!gbMEClQhr`Y!oUg>(T6kLK(n8qbEvD zqDKV%Uxg2$VCBx;tpuy}!}l$<@(uB(Oy5p%VWdM_T4hFzacf>MDk!K|b3|vc1FEAT= zShX+Y5>3*whAPwF!&tFuqtA?t% zk~WZDXHZ=p_Y6;Jb)hYr)Sy&_wk~%E_G@aIFcze>VR6fgwOc)7jjYmumYpdHl2>w> zzfkH`Y#fq12xh;;)a1~4k8?tS3oiT0qrnOI^)}g%zJ;F#KNh}wNz&zSr?2vYlGNMW zq*Kmlf8wA!$<;l8-ZgZ6QF1Q|mt@?4mbMT=kSI3E_QRp!1U~y9I4u)otbkDK)Nb1R=&^rG{V_i^QtuRo zWf`ci>6mo^iw!}pB9^REqX>r5@@2C{9&)=^GH36ZthlJKZkwUQ<~&P~b=R+K2FrKeFv&?brolHCFC(Gx`GbB2Q7)w8-5>c5DZjT= zW!2`5kyA#v;>u^-u$77fLb7>^9js(;3x#4l79V=`YVE2J9=~xJYd5UKiil+OKN(dx z{xAZST-Y@5t~L=u4-pxaCE zLSnFn`#$NOy>!?;a6%8*L=Ox$YPUD4=K?IFm$DzQ^<9D3*;4_g`+zdN&Edq}cRc65W+Cv&YV>pRR~!_GewYpVf9aHtR8?d1>D8`86)HCmgcBo((vCJRm|eZq~OJ?)hzA zj~l6aBIXDssf2RLp)ipwZqa(;!lb!C$L7UOO{-zr$_r@@eD?#C$!p?Uhg~^>p9)k; zEWvnlo_o=R|18dE#8i*BiWM1$PLGbpr+I%<0nd!LA!iQas^R9#^2w=A6IVLNN0Be^ zx~Wg+zg0NtP3PZR6}J*w#QQiqzwlQ|QkWV>-Jgh~130%a)v z4Pd}MRaC!e=af#~y*p5kbQt|E-b#krf5Z0yaEZr7{B~}3+@*~F)!vl{HF<6E z=zCgArB)y;3Alt!0f!5-9r`kR1i|rLU!Rrmvmpo9Ua^ssG(O-#5Q|=G=46cklV#@7!jfs!bsyRc1+l z+*#MQ9LfMibjeokT{SdO0pp#rLCLuAe#chsVu$azQ7%whSj~vtAQjbpSX}p?Fni2fLbnkI(T%op*<>7*MaxrLFH+_rQEei?dfI zu`!ZanQ*jCIiMVJBA{54h&S?y>mXCOrDuxuBe7Uuptm2Q@D#(g@;v}`6Aysa#6{dk z8E%X-efYqsupyy}LU{)V*D{N)f+IeRBGE_s_T5dF z!FsFd9_VJ~%w%E$AJKd^TH0&Uls~${`TuHcI*|ftHkNRZG6SMx~nVe zf{R~G|I&Gl1^ga?@iW5Djlt!GJ!sJOC?U}3+&=e!^;?waki{llnIlPcFFv3&_HI`1 zB~Rm1#@Sdk3Z@v?vp*?G3uV#OPR}mRvMYBmH%Cdixx^skc}F1ZxP^*+Emr`24uK@X z=3P%Yhb=K;vy=%z1DY-rD)6eQuVG`8V(~6RZWnSvI4L)4Em*p41IsEOb&nSo8_msU zoK?LZ7695#?4W5%2Mx(*c@;67GkAOI%utFdO-Z8E+S_6}n?Xw($JI|gNu8&&Yc9Qo zhSMWiD-jJ!l8j7r>`+pb0AbfQT;Z8P)8klH6FBx&5XuqO#LJbXj_>}SNwdCVEL$)u zy^dB=cac=3oB39lal4A3%vxRva@`||)JPi&&T0%nvl*M6Mcw$W=XB=kmh=q$)Z;Z$ zqe{@8r=#cR!Z1L>zzj#9O7O!$G*OPcq!6gwr3-7-^EkSxZsOKVkG5OZh$DPf3DxX^ z-ffdNk43ARQG+{f*vI&AkP++Z!QE;@_G7DeqZF<$JdMgI6U-j^rj%&%PUnryU?0g{ z6_vn1_9qiH2PZ4qF2o`QL+scEwK#<{$pzcV*NB?vG=*D~ZK1BU1h!sZ6UKlfBHznb zp4!qIgJ!AqQmzQ3Aoc_ZpSrgw7-PE>#jR{}yTv#5fKr(o|5^oYC~1Wc;w`;M88Wjy zq=;*eAmyw|h^K_Y$X#=ZSk!5=ut|~G`#4l5)I`uXFR^QNU*1rfv`Zm`?8lKp$V??G z(bI2J#LbRuLEVKc2mCQ43;PUi88Y?gPzc)~E#1MFW5YSDz74c3R0Nn=)}Md$0IysC zPK$34*1g^53>KoTgQmekOPSJ>IjF93|L>l^vXdm9Ix1q1a`D)*9m)$(KNt|b41V6u zaqYg;p#Y3W?oa#FwAh0dU|VNV&a3w`SFvKQ(hdN8;1@Ix%&^LxZJ#TTTd(;kErY1k z(9L*`#(zjxgBtDw_k!`WXk-O?^=+nqqD6DaU`^-0^|z=!4BAz6ShHT5+8#$hl$B~&xJJIeNx z#CB6@U@(9EIZdAF2iCEgq;7ICgR3sDkZ^3bc=Fu+m4F_H%oOF<3&AYi6RlH4Mr37| z_5pIvKtml^+8r)G)Hq4k&46PtlPH{aVqgj62w#!6x@qxkD~&)~5G@9pU9YGXiG~rl zm*p{0O9LBe1YOgVxyy$^_2cd*-1M9m%1YWAiZNk|5^_pnAvrT?+POs6CsW)ttsBFr zWhE=f7Td} z87$Ow2)cxjw~R(;l5!||*f>Agwu^j){>V1vn|@Iot#vL%?3zFW!!U<>Q6~~` zUH?!m9>oB?yAENfAvp(;THkJ$Iunzest0LUsEHI%1X0=MP6WSEI_K@tShtwbVwJp6 zCGvLPi@`7PM?9I8z{SeLi&5ylq%wR}i4qV;m%8u zW*(nqAMfscUZ*uK^SriSzFD%Hn{7o&e=YpcXQ9V?D)tV?7|g%5t_d6N6*dhCQ zbbB7}wfjex{c{PG-wr%#+@r5O*;U`=9ZDMsIVSNzhyUsyi(DUag)jLRPQFI6sDqla zS+#={63TRQBGN3af07Rzhb*6zraDMhQp-vdh1 zTi*8OTb;@grNtc@IdGs!hB4}GL~kGSuhTo8pB9_`dN>CkT2~dT6}w5As~AIfpU=Ap zc69TAy-AwhO7Wfi$CX4%dQ4+&9!$Y?HC??;HL4&6lDN)mjI> z$1cM<-)L}K_g1N*PsQC*QFcvbykJjYvzI*kQ}{!!mxapy)9z~j4%Fxl_P*Me^qoN) zcBD8MdD~?N3crIbDY&&UPm@y0btjjfS6-F!OF*MILoKjFCmQ(1y7&l$$ z98RgR~VXIKk28=z*?nFsPjnD!18)E(CB`Z^ z=KI`yPKIf-8MfCmAO-!9tzc(7sAU)3cj4a#!~A4t?o>b8!w(+tr<$#}NWsDghHng$ z+I$?7U_WGUAh&L|uT+yt%?%RAW1j|QWCxffURZKY-}>jrE6i)u#aqx?J1JNA-dUQ@lB-`r;yp?Dm9W zkd7myd_;`DMD7{#IE>ke1Ue|>BroxHt1TQIr!t?6RjAw70VvBMU`L^x<%BL#0M_E= zl9Mye0Ui(b^YB!J&Q7fJR%o9gHorDUg%so+^?AOd50#{j*dm+ zMs4k%<`UTAm#7mJEULC?h}vq3aPiExMgEmzQcnsxEmivYA=Y^o&W<<)+$gG&SI!94 nI6jN()><=(P{io`_h+jfsY#at7stfeeb^j6SAp! literal 0 HcmV?d00001 From a286065b413fb0cf53c7ef11e3b51a7df51de9b7 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Fri, 5 Jun 2026 10:35:25 -0700 Subject: [PATCH 25/31] Create proxy-key-sign.png --- docs/docs/res/img/proxy-key-sign.png | Bin 0 -> 111225 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/docs/res/img/proxy-key-sign.png diff --git a/docs/docs/res/img/proxy-key-sign.png b/docs/docs/res/img/proxy-key-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..e665d24cf96990c01ff591a44095cd5452d538b9 GIT binary patch literal 111225 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

j4h z-l6LXg$0#wAEnCAKE5{_b&ft_JlDbQCLU)OBVtE1859LlgcYS#cfl^EJi-cywGo^( zm{J~FFjhT+diXsp@p*z+v3u}{(u3kry5r)S#h#rjf7FI4b&*N`89PEB%N<6CFR9a; zWhN8CMlL;j$kWL8x$1P~_h)NTDjT$G=F*GtP;f;Qu0yYDP2a|%9$Gj=bVIleX|OXL zTy$vH{gA|yLXTJKZHH%<=%{iMk<`88{|k;P(W z)?C-!9T9VB*)GU%A~8~ro4&O9F5we{jvw!yq$Cp9_boFYdOJvr?&FY=Lb8}e->TaM z@hGa?++b~MS}nd=JkBw?A@+PWWS)vbJ7k3oYkeJitrwecb|gY$s22y;z$~N%K9>4k z-Imto>)a8s>7{lh*X(hfxgFMTIyVwDyHMGph%RFte?WgIZ6q)sY=M2gmBM1Waw$W_ ze=ahc60)181lG#zK@%H7VkJSqrbenoK59r_a!sjeWwce;xPSWN#|qPhk-0+Qxoo7- znolT6#LHU2?*N4IOCaRgR-)%r*(TpeZfNp0=SnhOF3&eaP6@8f4jY@x3nIhFrUp+VZQNwTtxB&q#sEW<`}+PB>QgFCOyw)ki

!#(Rp!$Xh* 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 Date: Fri, 5 Jun 2026 11:42:32 -0700 Subject: [PATCH 26/31] allow localhost viewing of signer-api.yml --- api/signer-api.yml | 65 +- docs/docusaurus.config.js | 18 + docs/package-lock.json | 77 +- docs/package.json | 3 +- docs/src/components/SwaggerUI.js | 11 +- docs/yarn.lock | 5749 +++++++++++++++--------------- 6 files changed, 3007 insertions(+), 2916 deletions(-) diff --git a/api/signer-api.yml b/api/signer-api.yml index b70ddbba..cbdc83c2 100644 --- a/api/signer-api.yml +++ b/api/signer-api.yml @@ -11,16 +11,14 @@ info: ### Module JWT claims - | Claim | Type | Required | Description | - |-------|------|----------|-------------| - | `module` | string | always | Module `id` from `[[modules]]` in `cb-config.toml`. | - | `route` | string | always | Exact request path, e.g. `/signer/v1/get_pubkeys`. | - | `exp` | integer | always | UNIX expiry timestamp. | - | `payload_hash` | string | POST only | Keccak-256 hash of the JSON request body (`0x`-prefixed). | + HS256-signed token with the module's pre-shared secret (`CB_SIGNER_JWT` env var): - Tokens are HS256-signed with the module's pre-shared secret (`CB_SIGNER_JWT` env var). - Expiry is 5 minutes. Refresh is **client-side** — the module generates a new JWT locally. - The `payload_hash` claim prevents JWT replay attacks. + - **module** (string, required) — Module `id` from `[[modules]]` in `cb-config.toml`. + - **route** (string, required) — Exact request path, e.g. `/signer/v1/get_pubkeys`. + - **exp** (integer, required) — UNIX expiry timestamp. Expires after 5 minutes. + - **payload_hash** (string, POST only) — Keccak-256 hash of the JSON request body, `0x`-prefixed. Prevents JWT replay attacks. + + Refresh is client-side — the module generates a new JWT locally. No refresh endpoint. ### Admin JWT @@ -28,20 +26,7 @@ info: ### Rate limiting - Per-IP rate limit on JWT auth failures. Default: **3 failures / 5 minutes**. Configurable via `[signer].jwt_auth_fail_limit` and `jwt_auth_fail_timeout_seconds` in `cb-config.toml`. - - ## Error responses - - All errors use `{"code": , "message": "..."}`. - - | Status | Meaning | - |--------|---------| - | `400` | Malformed body, invalid pubkey, unsupported operation (e.g. ECDSA proxy with Dirk). | - | `401` | Missing/invalid/expired JWT. | - | `404` | Pubkey, proxy, or module ID not found. | - | `429` | Rate limited — retry after timeout. | - | `500` | Internal server error. | - | `502` | Dirk backend unreachable. | + Per-IP rate limit on JWT auth failures. Default: 3 failures within 5 minutes. Configurable via `[signer].jwt_auth_fail_limit` and `jwt_auth_fail_timeout_seconds` in `cb-config.toml`. tags: - name: Signer - name: Management @@ -49,9 +34,9 @@ paths: /signer/v1/get_pubkeys: get: summary: Get a list of public keys for which signatures may be requested - description: > + description: | This endpoint requires a valid JWT Bearer token. - + The token **must include** the following claims: - `exp` (integer): Expiration timestamp - `route` (string): The route being requested (must be `/signer/v1/get_pubkeys` for this endpoint). @@ -107,9 +92,9 @@ paths: /signer/v1/request_signature/bls: post: summary: Request a signature for a 32-byte blob of data (typically a hash), signed by the BLS private key for the requested public key. - description: > + description: | This endpoint requires a valid JWT Bearer token. - + The token **must include** the following claims: - `exp` (integer): Expiration timestamp - `module` (string): The ID of the module making the request, which must match a module ID in the Commit-Boost configuration file. @@ -186,7 +171,7 @@ paths: message: type: string example: "Unauthorized" - + "404": description: You either requested a route that doesn't exist, or you requested a signature from a key that does not exist. content: @@ -255,9 +240,9 @@ paths: /signer/v1/request_signature/proxy-bls: post: summary: Request a signature for a 32-byte blob of data (typically a hash), signed by the BLS private key for the requested proxy public key. - description: > + description: | This endpoint requires a valid JWT Bearer token. - + The token **must include** the following claims: - `exp` (integer): Expiration timestamp - `module` (string): The ID of the module making the request, which must match a module ID in the Commit-Boost configuration file. @@ -276,7 +261,7 @@ paths: required: [proxy, object_root, nonce] properties: proxy: - description: The 48-byte BLS public key (for `proxy_bls` mode) or the 20-byte Ethereum address (for `proxy_ecdsa` mode), with optional `0x` prefix, of the proxy key that you want to request a signature from. + description: The 48-byte BLS public key, with optional `0x` prefix, of the proxy key that you want to request a signature from. $ref: "#/components/schemas/BlsPubkey" object_root: description: The 32-byte data you want to sign, with optional `0x` prefix. @@ -284,7 +269,7 @@ paths: nonce: $ref: "#/components/schemas/Nonce" example: - pubkey: "0xa3ffa9241f78279f1af04644cb8c79c2d8f02bcf0e28e2f186f6dcccac0a869c2be441fda50f0dea895cfce2e53f0989" + proxy: "0xa3ffa9241f78279f1af04644cb8c79c2d8f02bcf0e28e2f186f6dcccac0a869c2be441fda50f0dea895cfce2e53f0989" object_root: "0x3e9f4a78b5c21d64f0b8e3d9a7f5c02b4d1e67a3c8f29b5d6e4a3b1c8f72e6d9" responses: "200": @@ -334,7 +319,7 @@ paths: message: type: string example: "Unauthorized" - + "404": description: You either requested a route that doesn't exist, or you requested a signature from a key that does not exist. content: @@ -403,9 +388,9 @@ paths: /signer/v1/request_signature/proxy-ecdsa: post: summary: Request a signature for a 32-byte blob of data (typically a hash), signed by the ECDSA private key for the requested proxy Ethereum address. - description: > + description: | This endpoint requires a valid JWT Bearer token. - + The token **must include** the following claims: - `exp` (integer): Expiration timestamp - `module` (string): The ID of the module making the request, which must match a module ID in the Commit-Boost configuration file. @@ -482,7 +467,7 @@ paths: message: type: string example: "Unauthorized" - + "404": description: You either requested a route that doesn't exist, or you requested a signature from a key that does not exist. content: @@ -551,9 +536,9 @@ paths: /signer/v1/generate_proxy_key: post: summary: Request a proxy key be generated for a specific consensus pubkey - description: > + description: | This endpoint requires a valid JWT Bearer token. - + The token **must include** the following claims: - `exp` (integer): Expiration timestamp - `module` (string): The ID of the module making the request, which must match a module ID in the Commit-Boost configuration file. @@ -661,7 +646,7 @@ paths: /reload: post: summary: Hot-reload signer configuration - description: > + description: | Re-reads cb-config.toml and environment variables, rebuilding the signer's internal state. Accepts optional body overrides for JWT secrets and the admin secret. @@ -735,7 +720,7 @@ paths: /revoke_jwt: post: summary: Immediately revoke a module's access - description: > + description: | Removes a module from the signer's access list. The module will no longer be able to authenticate with its JWT. diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 8b100e2f..483357b9 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -5,6 +5,7 @@ // See: https://docusaurus.io/docs/api/docusaurus-config import { themes as prismThemes } from 'prism-react-renderer'; +import path from 'path'; /** @type {import('@docusaurus/types').Config} */ const config = { @@ -110,6 +111,23 @@ const config = { additionalLanguages: ['bash','toml'], }, }), + + plugins: [ + function webpackAliasPlugin() { + return { + name: 'webpack-alias-plugin', + configureWebpack() { + return { + resolve: { + alias: { + '@signer-api-spec': path.resolve(__dirname, '..', 'api', 'signer-api.yml'), + }, + }, + }; + }, + }; + }, + ], }; export default config; diff --git a/docs/package-lock.json b/docs/package-lock.json index d31e543b..8db70db4 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -19,7 +19,8 @@ }, "devDependencies": { "@docusaurus/module-type-aliases": "3.4.0", - "@docusaurus/types": "3.4.0" + "@docusaurus/types": "3.4.0", + "raw-loader": "^4.0.2" }, "engines": { "node": ">=18.0" @@ -12723,6 +12724,80 @@ "node": ">= 0.8" } }, + "node_modules/raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/raw-loader/node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/raw-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/raw-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/raw-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", diff --git a/docs/package.json b/docs/package.json index 36a22a33..1b8354f1 100644 --- a/docs/package.json +++ b/docs/package.json @@ -25,7 +25,8 @@ }, "devDependencies": { "@docusaurus/module-type-aliases": "3.4.0", - "@docusaurus/types": "3.4.0" + "@docusaurus/types": "3.4.0", + "raw-loader": "^4.0.2" }, "browserslist": { "production": [ diff --git a/docs/src/components/SwaggerUI.js b/docs/src/components/SwaggerUI.js index f310c056..5288ce27 100644 --- a/docs/src/components/SwaggerUI.js +++ b/docs/src/components/SwaggerUI.js @@ -1,9 +1,18 @@ import React from 'react'; import SwaggerUI from 'swagger-ui-react'; import 'swagger-ui-react/swagger-ui.css'; +// eslint-disable-next-line import/no-webpack-loader-syntax +import localSpec from '!!raw-loader!@signer-api-spec'; + +const IS_LOCALHOST = typeof window !== 'undefined' && window.location.hostname === 'localhost'; + +const PROD_URL = 'https://raw.githubusercontent.com/Commit-Boost/commit-boost-client/main/api/signer-api.yml'; const SwaggerUIComponent = () => { - return ; + if (IS_LOCALHOST) { + return ; + } + return ; }; export default SwaggerUIComponent; diff --git a/docs/yarn.lock b/docs/yarn.lock index 6347276c..77bdd2e0 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -2,65 +2,55 @@ # yarn lockfile v1 -"@algolia/autocomplete-core@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz#83374c47dc72482aa45d6b953e89377047f0dcdc" - integrity sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ== +"@algolia/autocomplete-core@1.9.3": + version "1.9.3" + resolved "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz" + integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.17.9" - "@algolia/autocomplete-shared" "1.17.9" + "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" + "@algolia/autocomplete-shared" "1.9.3" -"@algolia/autocomplete-plugin-algolia-insights@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz#74c86024d09d09e8bfa3dd90b844b77d9f9947b6" - integrity sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ== +"@algolia/autocomplete-plugin-algolia-insights@1.9.3": + version "1.9.3" + resolved "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz" + integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== dependencies: - "@algolia/autocomplete-shared" "1.17.9" + "@algolia/autocomplete-shared" "1.9.3" -"@algolia/autocomplete-preset-algolia@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz#911f3250544eb8ea4096fcfb268f156b085321b5" - integrity sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ== +"@algolia/autocomplete-preset-algolia@1.9.3": + version "1.9.3" + resolved "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz" + integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== dependencies: - "@algolia/autocomplete-shared" "1.17.9" + "@algolia/autocomplete-shared" "1.9.3" -"@algolia/autocomplete-shared@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz#5f38868f7cb1d54b014b17a10fc4f7e79d427fa8" - integrity sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ== +"@algolia/autocomplete-shared@1.9.3": + version "1.9.3" + resolved "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz" + integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== "@algolia/cache-browser-local-storage@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz#97bc6d067a9fd932b9c922faa6b7fd6e546e1348" + resolved "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz" integrity sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww== dependencies: "@algolia/cache-common" "4.24.0" "@algolia/cache-common@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.24.0.tgz#81a8d3a82ceb75302abb9b150a52eba9960c9744" + resolved "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz" integrity sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g== "@algolia/cache-in-memory@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz#ffcf8872f3a10cb85c4f4641bdffd307933a6e44" + resolved "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz" integrity sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w== dependencies: "@algolia/cache-common" "4.24.0" -"@algolia/client-abtesting@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.21.0.tgz#565c79275769c614ecf75bd8679dbd510a0c88c1" - integrity sha512-I239aSmXa3pXDhp3AWGaIfesqJBNFA7drUM8SIfNxMIzvQXUnHRf4rW1o77QXLI/nIClNsb8KOLaB62gO9LnlQ== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-browser-xhr" "5.21.0" - "@algolia/requester-fetch" "5.21.0" - "@algolia/requester-node-http" "5.21.0" - "@algolia/client-account@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.24.0.tgz#eba7a921d828e7c8c40a32d4add21206c7fe12f1" + resolved "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz" integrity sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA== dependencies: "@algolia/client-common" "4.24.0" @@ -69,7 +59,7 @@ "@algolia/client-analytics@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.24.0.tgz#9d2576c46a9093a14e668833c505ea697a1a3e30" + resolved "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz" integrity sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg== dependencies: "@algolia/client-common" "4.24.0" @@ -77,127 +67,52 @@ "@algolia/requester-common" "4.24.0" "@algolia/transporter" "4.24.0" -"@algolia/client-analytics@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.21.0.tgz#4c4863b3cb7380de5bd1ba82691516e0a60ad167" - integrity sha512-OxoUfeG9G4VE4gS7B4q65KkHzdGsQsDwxQfR5J9uKB8poSGuNlHJWsF3ABqCkc5VliAR0m8KMjsQ9o/kOpEGnQ== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-browser-xhr" "5.21.0" - "@algolia/requester-fetch" "5.21.0" - "@algolia/requester-node-http" "5.21.0" - "@algolia/client-common@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.24.0.tgz#77c46eee42b9444a1d1c1583a83f7df4398a649d" + resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz" integrity sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA== dependencies: "@algolia/requester-common" "4.24.0" "@algolia/transporter" "4.24.0" -"@algolia/client-common@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.21.0.tgz#f32c28d25ccaf2954aca5ae5954a810fdef5b85e" - integrity sha512-iHLgDQFyZNe9M16vipbx6FGOA8NoMswHrfom/QlCGoyh7ntjGvfMb+J2Ss8rRsAlOWluv8h923Ku3QVaB0oWDQ== - -"@algolia/client-insights@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.21.0.tgz#971c76f795923c1210f89c830d43bc14fa76de61" - integrity sha512-y7XBO9Iwb75FLDl95AYcWSLIViJTpR5SUUCyKsYhpP9DgyUqWbISqDLXc96TS9shj+H+7VsTKA9cJK8NUfVN6g== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-browser-xhr" "5.21.0" - "@algolia/requester-fetch" "5.21.0" - "@algolia/requester-node-http" "5.21.0" - "@algolia/client-personalization@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.24.0.tgz#8b47789fb1cb0f8efbea0f79295b7c5a3850f6ae" + resolved "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz" integrity sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w== dependencies: "@algolia/client-common" "4.24.0" "@algolia/requester-common" "4.24.0" "@algolia/transporter" "4.24.0" -"@algolia/client-personalization@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.21.0.tgz#0ab7c370a115d0b83edd8db55a4ea2f2b9212190" - integrity sha512-6KU658lD9Tss4oCX6c/O15tNZxw7vR+WAUG95YtZzYG/KGJHTpy2uckqbMmC2cEK4a86FAq4pH5azSJ7cGMjuw== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-browser-xhr" "5.21.0" - "@algolia/requester-fetch" "5.21.0" - "@algolia/requester-node-http" "5.21.0" - -"@algolia/client-query-suggestions@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.21.0.tgz#14291a63db8ccd53e415d46578390fa5e1d1d35f" - integrity sha512-pG6MyVh1v0X+uwrKHn3U+suHdgJ2C+gug+UGkNHfMELHMsEoWIAQhxMBOFg7hCnWBFjQnuq6qhM3X9X5QO3d9Q== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-browser-xhr" "5.21.0" - "@algolia/requester-fetch" "5.21.0" - "@algolia/requester-node-http" "5.21.0" - -"@algolia/client-search@4.24.0": +"@algolia/client-search@>= 4.9.1 < 6", "@algolia/client-search@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.24.0.tgz#75e6c02d33ef3e0f34afd9962c085b856fc4a55f" + resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz" integrity sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA== dependencies: "@algolia/client-common" "4.24.0" "@algolia/requester-common" "4.24.0" "@algolia/transporter" "4.24.0" -"@algolia/client-search@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.21.0.tgz#37807d286a18e59b32af06dc62d4bd853d50121c" - integrity sha512-nZfgJH4njBK98tFCmCW1VX/ExH4bNOl9DSboxeXGgvhoL0fG1+4DDr/mrLe21OggVCQqHwXBMh6fFInvBeyhiQ== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-browser-xhr" "5.21.0" - "@algolia/requester-fetch" "5.21.0" - "@algolia/requester-node-http" "5.21.0" - "@algolia/events@^4.0.1": version "4.0.1" - resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" + resolved "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.21.0": - version "1.21.0" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.21.0.tgz#7524dcc848abc44656508ea0951cceaf18e3f51b" - integrity sha512-k6MZxLbZphGN5uRri9J/krQQBjUrqNcScPh985XXEFXbSCRvOPKVtjjLdVjGVHXXPOQgKrIZHxIdRNbHS+wVuA== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-browser-xhr" "5.21.0" - "@algolia/requester-fetch" "5.21.0" - "@algolia/requester-node-http" "5.21.0" - "@algolia/logger-common@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.24.0.tgz#28d439976019ec0a46ba7a1a739ef493d4ef8123" + resolved "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz" integrity sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA== "@algolia/logger-console@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.24.0.tgz#c6ff486036cd90b81d07a95aaba04461da7e1c65" + resolved "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz" integrity sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg== dependencies: "@algolia/logger-common" "4.24.0" -"@algolia/monitoring@1.21.0": - version "1.21.0" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.21.0.tgz#9daab7fe728b44ae998c2425d12e4bd77efe07f5" - integrity sha512-FiW5nnmyHvaGdorqLClw3PM6keXexAMiwbwJ9xzQr4LcNefLG3ln82NafRPgJO/z0dETAOKjds5aSmEFMiITHQ== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-browser-xhr" "5.21.0" - "@algolia/requester-fetch" "5.21.0" - "@algolia/requester-node-http" "5.21.0" - "@algolia/recommend@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-4.24.0.tgz#8a3f78aea471ee0a4836b78fd2aad4e9abcaaf34" + resolved "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz" integrity sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw== dependencies: "@algolia/cache-browser-local-storage" "4.24.0" @@ -212,59 +127,28 @@ "@algolia/requester-node-http" "4.24.0" "@algolia/transporter" "4.24.0" -"@algolia/recommend@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.21.0.tgz#4c9a2e90bab87c9d63f8eebaf56c12e4f9e517c0" - integrity sha512-+JXavbbliaLmah5QNgc/TDW/+r0ALa+rGhg5Y7+pF6GpNnzO0L+nlUaDNE8QbiJfz54F9BkwFUnJJeRJAuzTFw== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-browser-xhr" "5.21.0" - "@algolia/requester-fetch" "5.21.0" - "@algolia/requester-node-http" "5.21.0" - "@algolia/requester-browser-xhr@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz#313c5edab4ed73a052e75803855833b62dd19c16" + resolved "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz" integrity sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA== dependencies: "@algolia/requester-common" "4.24.0" -"@algolia/requester-browser-xhr@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.21.0.tgz#7840e52a45fd8a7b58340470c4700492d32fdf7d" - integrity sha512-Iw+Yj5hOmo/iixHS94vEAQ3zi5GPpJywhfxn1el/zWo4AvPIte/+1h9Ywgw/+3M7YBj4jgAkScxjxQCxzLBsjA== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-common@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.24.0.tgz#1c60c198031f48fcdb9e34c4057a3ea987b9a436" + resolved "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz" integrity sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA== -"@algolia/requester-fetch@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.21.0.tgz#8c4caf767995aaf24c8fc5f873e9075df98fbf44" - integrity sha512-Z00SRLlIFj3SjYVfsd9Yd3kB3dUwQFAkQG18NunWP7cix2ezXpJqA+xAoEf9vc4QZHdxU3Gm8gHAtRiM2iVaTQ== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/requester-node-http@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz#4461593714031d02aa7da221c49df675212f482f" + resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz" integrity sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw== dependencies: "@algolia/requester-common" "4.24.0" -"@algolia/requester-node-http@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.21.0.tgz#c1a8cd0f33e375c147bc5efda73f9677a47416c9" - integrity sha512-WqU0VumUILrIeVYCTGZlyyZoC/tbvhiyPxfGRRO1cSjxN558bnJLlR2BvS0SJ5b75dRNK7HDvtXo2QoP9eLfiA== - dependencies: - "@algolia/client-common" "5.21.0" - "@algolia/transporter@4.24.0": version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.24.0.tgz#226bb1f8af62430374c1972b2e5c8580ab275102" + resolved "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz" integrity sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA== dependencies: "@algolia/cache-common" "4.24.0" @@ -273,102 +157,110 @@ "@ampproject/remapping@^2.2.0": version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== dependencies: "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.26.2", "@babel/code-frame@^7.8.3": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.8.3": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" - js-tokens "^4.0.0" + "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.5", "@babel/compat-data@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" - integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.8": + version "7.24.9" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz" + integrity sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng== -"@babel/core@^7.21.3", "@babel/core@^7.23.3": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9" - integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.21.3", "@babel/core@^7.23.3", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": + version "7.24.9" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz" + integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.10" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.10" - "@babel/parser" "^7.26.10" - "@babel/template" "^7.26.9" - "@babel/traverse" "^7.26.10" - "@babel/types" "^7.26.10" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.9" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-module-transforms" "^7.24.9" + "@babel/helpers" "^7.24.8" + "@babel/parser" "^7.24.8" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.8" + "@babel/types" "^7.24.9" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.23.3", "@babel/generator@^7.26.10": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.10.tgz#a60d9de49caca16744e6340c3658dfef6138c3f7" - integrity sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang== +"@babel/generator@^7.23.3", "@babel/generator@^7.24.8", "@babel/generator@^7.24.9": + version "7.24.10" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz" + integrity sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg== dependencies: - "@babel/parser" "^7.26.10" - "@babel/types" "^7.26.10" + "@babel/types" "^7.24.9" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" + jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" - integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== dependencies: - "@babel/types" "^7.25.9" + "@babel/types" "^7.24.7" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz#75d92bb8d8d51301c0d49e52a65c9a7fe94514d8" - integrity sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz" + integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== dependencies: - "@babel/compat-data" "^7.26.5" - "@babel/helper-validator-option" "^7.25.9" - browserslist "^4.24.0" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz" + integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw== + dependencies: + "@babel/compat-data" "^7.24.8" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.25.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz#d6f83e3039547fbb39967e78043cd3c8b7820c71" - integrity sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/helper-replace-supers" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/traverse" "^7.26.9" +"@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz" + integrity sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz#5169756ecbe1d95f7866b90bb555b022595302a0" - integrity sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz" + integrity sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - regexpu-core "^6.2.0" + "@babel/helper-annotate-as-pure" "^7.24.7" + regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.3": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz#f4f2792fae2ef382074bc2d713522cf24e6ddb21" - integrity sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg== +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -376,723 +268,873 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-member-expression-to-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" - integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-imports@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" - integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" - integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== - dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-optimise-call-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" - integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== +"@babel/helper-environment-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz" + integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== dependencies: - "@babel/types" "^7.25.9" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.8.0": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" - integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== - -"@babel/helper-remap-async-to-generator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" - integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-wrap-function" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-replace-supers@^7.25.9", "@babel/helper-replace-supers@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz#6cb04e82ae291dae8e72335dfe438b0725f14c8d" - integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/traverse" "^7.26.5" + "@babel/types" "^7.24.7" -"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" - integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== +"@babel/helper-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz" + integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-hoist-variables@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz" + integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== + dependencies: + "@babel/types" "^7.24.7" -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== +"@babel/helper-member-expression-to-functions@^7.24.7", "@babel/helper-member-expression-to-functions@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz" + integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== + dependencies: + "@babel/traverse" "^7.24.8" + "@babel/types" "^7.24.8" + +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.24.9": + version "7.24.9" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz" + integrity sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz" + integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== + +"@babel/helper-remap-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz" + integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-wrap-function" "^7.24.7" + +"@babel/helper-replace-supers@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz" + integrity sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" + +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-split-export-declaration@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz" + integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + +"@babel/helper-wrap-function@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz" + integrity sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw== + dependencies: + "@babel/helper-function-name" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helpers@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz" + integrity sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ== + dependencies: + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.8" + +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" -"@babel/helper-validator-option@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" - integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== +"@babel/parser@^7.24.7", "@babel/parser@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz" + integrity sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w== -"@babel/helper-wrap-function@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" - integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz" + integrity sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ== dependencies: - "@babel/template" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/helpers@^7.26.10": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.10.tgz#6baea3cd62ec2d0c1068778d63cb1314f6637384" - integrity sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz" + integrity sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg== dependencies: - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.10" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/parser@^7.26.10", "@babel/parser@^7.26.9": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.10.tgz#e9bdb82f14b97df6569b0b038edd436839c57749" - integrity sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA== - dependencies: - "@babel/types" "^7.26.10" - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" - integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" - integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz" + integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" - integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" - integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz" + integrity sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/plugin-transform-optional-chaining" "^7.25.9" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" - integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-import-assertions@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" - integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-attributes@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" - integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== +"@babel/plugin-syntax-import-assertions@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-jsx@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" - integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz" + integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-typescript@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" - integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-arrow-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" - integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== +"@babel/plugin-syntax-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz" + integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-generator-functions@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz#5e3991135e3b9c6eaaf5eff56d1ae5a11df45ff8" - integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-remap-async-to-generator" "^7.25.9" - "@babel/traverse" "^7.26.8" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" - integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-block-scoped-functions@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz#3dc4405d31ad1cbe45293aa57205a6e3b009d53e" - integrity sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ== +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" - integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-class-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" - integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-class-static-block@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" - integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-classes@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" - integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" - "@babel/traverse" "^7.25.9" - globals "^11.1.0" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-computed-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" - integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/template" "^7.25.9" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-destructuring@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" - integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== +"@babel/plugin-syntax-typescript@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz" + integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dotall-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" - integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-duplicate-keys@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" - integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" +"@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz" + integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-async-generator-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz" + integrity sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz" + integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" + +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz" + integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-block-scoping@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz" + integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-class-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz" + integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-class-static-block@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz" + integrity sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + globals "^11.1.0" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" - integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz" + integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" -"@babel/plugin-transform-dynamic-import@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" - integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== +"@babel/plugin-transform-destructuring@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz" + integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-exponentiation-operator@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc" - integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== +"@babel/plugin-transform-dotall-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz" + integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-export-namespace-from@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" - integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== +"@babel/plugin-transform-duplicate-keys@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz" + integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-for-of@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz#27231f79d5170ef33b5111f07fe5cafeb2c96a56" - integrity sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg== +"@babel/plugin-transform-dynamic-import@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz" + integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-function-name@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" - integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz" + integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== dependencies: - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-json-strings@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" - integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== +"@babel/plugin-transform-export-namespace-from@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz" + integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" - integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== +"@babel/plugin-transform-for-of@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz" + integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-logical-assignment-operators@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" - integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== +"@babel/plugin-transform-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz" + integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-member-expression-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" - integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== +"@babel/plugin-transform-json-strings@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz" + integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" - integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== +"@babel/plugin-transform-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz" + integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.25.9", "@babel/plugin-transform-modules-commonjs@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" - integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz" + integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== dependencies: - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-modules-systemjs@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" - integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== +"@babel/plugin-transform-member-expression-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz" + integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-modules-amd@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz" + integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== + dependencies: + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-umd@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" - integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== +"@babel/plugin-transform-modules-commonjs@^7.24.7", "@babel/plugin-transform-modules-commonjs@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz" + integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-simple-access" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" - integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== +"@babel/plugin-transform-modules-systemjs@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz" + integrity sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" -"@babel/plugin-transform-new-target@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" - integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== +"@babel/plugin-transform-modules-umd@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz" + integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== + dependencies: + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz" + integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.26.6": - version "7.26.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz#fbf6b3c92cb509e7b319ee46e3da89c5bedd31fe" - integrity sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw== +"@babel/plugin-transform-new-target@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz" + integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-numeric-separator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" - integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz" + integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-object-rest-spread@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" - integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== dependencies: - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-super@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" - integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== +"@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz" + integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.7" -"@babel/plugin-transform-optional-catch-binding@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" - integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== +"@babel/plugin-transform-object-super@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz" + integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" -"@babel/plugin-transform-optional-chaining@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" - integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz" + integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-parameters@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" - integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== +"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz" + integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz" + integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" - integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz" + integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" - integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz" + integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" - integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== +"@babel/plugin-transform-property-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz" + integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-transform-react-constant-elements@^7.21.3": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz#08a1de35a301929b60fdf2788a54b46cd8ecd0ef" - integrity sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow== + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.7.tgz" + integrity sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-display-name@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" - integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== +"@babel/plugin-transform-react-display-name@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz" + integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-jsx-development@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7" - integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw== +"@babel/plugin-transform-react-jsx-development@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz" + integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== dependencies: - "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx" "^7.24.7" -"@babel/plugin-transform-react-jsx@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" - integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== +"@babel/plugin-transform-react-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz" + integrity sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/plugin-syntax-jsx" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/plugin-transform-react-pure-annotations@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62" - integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg== +"@babel/plugin-transform-react-pure-annotations@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz" + integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-regenerator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" - integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz" + integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" regenerator-transform "^0.15.2" -"@babel/plugin-transform-regexp-modifiers@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" - integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-transform-reserved-words@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" - integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== +"@babel/plugin-transform-reserved-words@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz" + integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-transform-runtime@^7.22.9": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz#6b4504233de8238e7d666c15cde681dc62adff87" - integrity sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw== + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz" + integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.11.0" + babel-plugin-polyfill-corejs3 "^0.10.1" babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" - integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== +"@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz" + integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" - integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== +"@babel/plugin-transform-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz" + integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" - integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz" + integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-template-literals@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz#966b15d153a991172a540a69ad5e1845ced990b5" - integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q== +"@babel/plugin-transform-template-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz" + integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typeof-symbol@^7.26.7": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz#d0e33acd9223744c1e857dbd6fa17bd0a3786937" - integrity sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw== +"@babel/plugin-transform-typeof-symbol@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz" + integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-typescript@^7.25.9": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz#2e9caa870aa102f50d7125240d9dbf91334b0950" - integrity sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw== +"@babel/plugin-transform-typescript@^7.24.7": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.8.tgz" + integrity sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/plugin-syntax-typescript" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-typescript" "^7.24.7" -"@babel/plugin-transform-unicode-escapes@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" - integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== +"@babel/plugin-transform-unicode-escapes@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz" + integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-property-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" - integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz" + integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" - integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== +"@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz" + integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-sets-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" - integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz" + integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.9.tgz#2ec64e903d0efe743699f77a10bdf7955c2123c3" - integrity sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ== - dependencies: - "@babel/compat-data" "^7.26.8" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz" + integrity sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ== + dependencies: + "@babel/compat-data" "^7.24.8" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-validator-option" "^7.24.8" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.26.0" - "@babel/plugin-syntax-import-attributes" "^7.26.0" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.25.9" - "@babel/plugin-transform-async-generator-functions" "^7.26.8" - "@babel/plugin-transform-async-to-generator" "^7.25.9" - "@babel/plugin-transform-block-scoped-functions" "^7.26.5" - "@babel/plugin-transform-block-scoping" "^7.25.9" - "@babel/plugin-transform-class-properties" "^7.25.9" - "@babel/plugin-transform-class-static-block" "^7.26.0" - "@babel/plugin-transform-classes" "^7.25.9" - "@babel/plugin-transform-computed-properties" "^7.25.9" - "@babel/plugin-transform-destructuring" "^7.25.9" - "@babel/plugin-transform-dotall-regex" "^7.25.9" - "@babel/plugin-transform-duplicate-keys" "^7.25.9" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" - "@babel/plugin-transform-dynamic-import" "^7.25.9" - "@babel/plugin-transform-exponentiation-operator" "^7.26.3" - "@babel/plugin-transform-export-namespace-from" "^7.25.9" - "@babel/plugin-transform-for-of" "^7.26.9" - "@babel/plugin-transform-function-name" "^7.25.9" - "@babel/plugin-transform-json-strings" "^7.25.9" - "@babel/plugin-transform-literals" "^7.25.9" - "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" - "@babel/plugin-transform-member-expression-literals" "^7.25.9" - "@babel/plugin-transform-modules-amd" "^7.25.9" - "@babel/plugin-transform-modules-commonjs" "^7.26.3" - "@babel/plugin-transform-modules-systemjs" "^7.25.9" - "@babel/plugin-transform-modules-umd" "^7.25.9" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" - "@babel/plugin-transform-new-target" "^7.25.9" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.26.6" - "@babel/plugin-transform-numeric-separator" "^7.25.9" - "@babel/plugin-transform-object-rest-spread" "^7.25.9" - "@babel/plugin-transform-object-super" "^7.25.9" - "@babel/plugin-transform-optional-catch-binding" "^7.25.9" - "@babel/plugin-transform-optional-chaining" "^7.25.9" - "@babel/plugin-transform-parameters" "^7.25.9" - "@babel/plugin-transform-private-methods" "^7.25.9" - "@babel/plugin-transform-private-property-in-object" "^7.25.9" - "@babel/plugin-transform-property-literals" "^7.25.9" - "@babel/plugin-transform-regenerator" "^7.25.9" - "@babel/plugin-transform-regexp-modifiers" "^7.26.0" - "@babel/plugin-transform-reserved-words" "^7.25.9" - "@babel/plugin-transform-shorthand-properties" "^7.25.9" - "@babel/plugin-transform-spread" "^7.25.9" - "@babel/plugin-transform-sticky-regex" "^7.25.9" - "@babel/plugin-transform-template-literals" "^7.26.8" - "@babel/plugin-transform-typeof-symbol" "^7.26.7" - "@babel/plugin-transform-unicode-escapes" "^7.25.9" - "@babel/plugin-transform-unicode-property-regex" "^7.25.9" - "@babel/plugin-transform-unicode-regex" "^7.25.9" - "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.24.7" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.24.7" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.24.8" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.8" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.24.7" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.24.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.8" + "@babel/plugin-transform-modules-systemjs" "^7.24.7" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.8" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.8" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.11.0" + babel-plugin-polyfill-corejs3 "^0.10.4" babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.40.0" + core-js-compat "^3.37.1" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -1100,101 +1142,115 @@ esutils "^2.0.2" "@babel/preset-react@^7.18.6", "@babel/preset-react@^7.22.5": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.26.3.tgz#7c5e028d623b4683c1f83a0bd4713b9100560caa" - integrity sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw== + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz" + integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-transform-react-display-name" "^7.25.9" - "@babel/plugin-transform-react-jsx" "^7.25.9" - "@babel/plugin-transform-react-jsx-development" "^7.25.9" - "@babel/plugin-transform-react-pure-annotations" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-transform-react-display-name" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.24.7" + "@babel/plugin-transform-react-jsx-development" "^7.24.7" + "@babel/plugin-transform-react-pure-annotations" "^7.24.7" "@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.22.5": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz#4a570f1b8d104a242d923957ffa1eaff142a106d" - integrity sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg== + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz" + integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-syntax-jsx" "^7.25.9" - "@babel/plugin-transform-modules-commonjs" "^7.25.9" - "@babel/plugin-transform-typescript" "^7.25.9" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.24.7" -"@babel/runtime-corejs3@^7.20.7", "@babel/runtime-corejs3@^7.22.15", "@babel/runtime-corejs3@^7.22.6", "@babel/runtime-corejs3@^7.26.7": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.26.10.tgz#5a3185ca2813f8de8ae68622572086edf5cf51f2" - integrity sha512-uITFQYO68pMEYR46AHgQoyBg7KPPJDAbGn4jUTIRgCFJIp88MIBUianVOplhZDEec07bp9zIyr4Kp0FCyQzmWg== +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime-corejs3@^7.20.7", "@babel/runtime-corejs3@^7.22.15", "@babel/runtime-corejs3@^7.22.6", "@babel/runtime-corejs3@^7.24.5": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.8.tgz" + integrity sha512-DXG/BhegtMHhnN7YPIvxWd303/9aXvYFD1TjNL3CD6tUrhI2LVsg3Lck0aql5TRH29n4sj3emcROypkZVUfSuA== dependencies: core-js-pure "^3.30.2" regenerator-runtime "^0.14.0" "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.8.4": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.10.tgz#a07b4d8fa27af131a633d7b3524db803eb4764c2" - integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw== + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz" + integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.25.9", "@babel/template@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2" - integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/parser" "^7.26.9" - "@babel/types" "^7.26.9" - -"@babel/traverse@^7.22.8", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.26.9": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.10.tgz#43cca33d76005dbaa93024fae536cc1946a4c380" - integrity sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.10" - "@babel/parser" "^7.26.10" - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.10" +"@babel/template@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz" + integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/traverse@^7.22.8", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz" + integrity sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.8" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/parser" "^7.24.8" + "@babel/types" "^7.24.8" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.21.3", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.26.9", "@babel/types@^7.4.4": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.10.tgz#396382f6335bd4feb65741eacfc808218f859259" - integrity sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ== +"@babel/types@^7.21.3", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.24.9", "@babel/types@^7.4.4": + version "7.24.9" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz" + integrity sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ== dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + +"@braintree/sanitize-url@=7.0.2": + version "7.0.2" + resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.0.2.tgz" + integrity sha512-NVf/1YycDMs6+FxS0Tb/W8MjJRDQdXF+tBfDtZ5UZeiRUkTmwKc4vmYCKZTyymfJk1gnMsauvZSX/HiV9jOABw== "@colors/colors@1.5.0": version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== "@discoveryjs/json-ext@0.5.7": version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@docsearch/css@3.9.0": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.9.0.tgz#3bc29c96bf024350d73b0cfb7c2a7b71bf251cd5" - integrity sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA== +"@docsearch/css@3.6.1": + version "3.6.1" + resolved "https://registry.npmjs.org/@docsearch/css/-/css-3.6.1.tgz" + integrity sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg== "@docsearch/react@^3.5.2": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.9.0.tgz#d0842b700c3ee26696786f3c8ae9f10c1a3f0db3" - integrity sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ== + version "3.6.1" + resolved "https://registry.npmjs.org/@docsearch/react/-/react-3.6.1.tgz" + integrity sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw== dependencies: - "@algolia/autocomplete-core" "1.17.9" - "@algolia/autocomplete-preset-algolia" "1.17.9" - "@docsearch/css" "3.9.0" - algoliasearch "^5.14.2" + "@algolia/autocomplete-core" "1.9.3" + "@algolia/autocomplete-preset-algolia" "1.9.3" + "@docsearch/css" "3.6.1" + algoliasearch "^4.19.1" "@docusaurus/core@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.4.0.tgz#bdbf1af4b2f25d1bf4a5b62ec6137d84c821cb3c" + resolved "https://registry.npmjs.org/@docusaurus/core/-/core-3.4.0.tgz" integrity sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w== dependencies: "@babel/core" "^7.23.3" @@ -1268,7 +1324,7 @@ "@docusaurus/cssnano-preset@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.4.0.tgz#dc7922b3bbeabcefc9b60d0161680d81cf72c368" + resolved "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.4.0.tgz" integrity sha512-qwLFSz6v/pZHy/UP32IrprmH5ORce86BGtN0eBtG75PpzQJAzp9gefspox+s8IEOr0oZKuQ/nhzZ3xwyc3jYJQ== dependencies: cssnano-preset-advanced "^6.1.2" @@ -1278,7 +1334,7 @@ "@docusaurus/logger@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.4.0.tgz#8b0ac05c7f3dac2009066e2f964dee8209a77403" + resolved "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.4.0.tgz" integrity sha512-bZwkX+9SJ8lB9kVRkXw+xvHYSMGG4bpYHKGXeXFvyVc79NMeeBSGgzd4TQLHH+DYeOJoCdl8flrFJVxlZ0wo/Q== dependencies: chalk "^4.1.2" @@ -1286,7 +1342,7 @@ "@docusaurus/mdx-loader@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.4.0.tgz#483d7ab57928fdbb5c8bd1678098721a930fc5f6" + resolved "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.4.0.tgz" integrity sha512-kSSbrrk4nTjf4d+wtBA9H+FGauf2gCax89kV8SUSJu3qaTdSIKdWERlngsiHaCFgZ7laTJ8a67UFf+xlFPtuTw== dependencies: "@docusaurus/logger" "3.4.0" @@ -1316,7 +1372,7 @@ "@docusaurus/module-type-aliases@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz#2653bde58fc1aa3dbc626a6c08cfb63a37ae1bb8" + resolved "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz" integrity sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw== dependencies: "@docusaurus/types" "3.4.0" @@ -1329,7 +1385,7 @@ "@docusaurus/plugin-content-blog@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.4.0.tgz#6373632fdbababbda73a13c4a08f907d7de8f007" + resolved "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.4.0.tgz" integrity sha512-vv6ZAj78ibR5Jh7XBUT4ndIjmlAxkijM3Sx5MAAzC1gyv0vupDQNhzuFg1USQmQVj3P5I6bquk12etPV3LJ+Xw== dependencies: "@docusaurus/core" "3.4.0" @@ -1352,7 +1408,7 @@ "@docusaurus/plugin-content-docs@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz#3088973f72169a2a6d533afccec7153c8720d332" + resolved "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz" integrity sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg== dependencies: "@docusaurus/core" "3.4.0" @@ -1374,7 +1430,7 @@ "@docusaurus/plugin-content-pages@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.4.0.tgz#1846172ca0355c7d32a67ef8377750ce02bbb8ad" + resolved "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.4.0.tgz" integrity sha512-h2+VN/0JjpR8fIkDEAoadNjfR3oLzB+v1qSXbIAKjQ46JAHx3X22n9nqS+BWSQnTnp1AjkjSvZyJMekmcwxzxg== dependencies: "@docusaurus/core" "3.4.0" @@ -1388,7 +1444,7 @@ "@docusaurus/plugin-debug@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.4.0.tgz#74e4ec5686fa314c26f3ac150bacadbba7f06948" + resolved "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.4.0.tgz" integrity sha512-uV7FDUNXGyDSD3PwUaf5YijX91T5/H9SX4ErEcshzwgzWwBtK37nUWPU3ZLJfeTavX3fycTOqk9TglpOLaWkCg== dependencies: "@docusaurus/core" "3.4.0" @@ -1400,7 +1456,7 @@ "@docusaurus/plugin-google-analytics@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.4.0.tgz#5f59fc25329a59decc231936f6f9fb5663da3c55" + resolved "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.4.0.tgz" integrity sha512-mCArluxEGi3cmYHqsgpGGt3IyLCrFBxPsxNZ56Mpur0xSlInnIHoeLDH7FvVVcPJRPSQ9/MfRqLsainRw+BojA== dependencies: "@docusaurus/core" "3.4.0" @@ -1410,7 +1466,7 @@ "@docusaurus/plugin-google-gtag@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.4.0.tgz#42489ac5fe1c83b5523ceedd5ef74f9aa8bc251b" + resolved "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.4.0.tgz" integrity sha512-Dsgg6PLAqzZw5wZ4QjUYc8Z2KqJqXxHxq3vIoyoBWiLEEfigIs7wHR+oiWUQy3Zk9MIk6JTYj7tMoQU0Jm3nqA== dependencies: "@docusaurus/core" "3.4.0" @@ -1421,7 +1477,7 @@ "@docusaurus/plugin-google-tag-manager@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.4.0.tgz#cebb03a5ffa1e70b37d95601442babea251329ff" + resolved "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.4.0.tgz" integrity sha512-O9tX1BTwxIhgXpOLpFDueYA9DWk69WCbDRrjYoMQtFHSkTyE7RhNgyjSPREUWJb9i+YUg3OrsvrBYRl64FCPCQ== dependencies: "@docusaurus/core" "3.4.0" @@ -1431,7 +1487,7 @@ "@docusaurus/plugin-sitemap@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.4.0.tgz#b091d64d1e3c6c872050189999580187537bcbc6" + resolved "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.4.0.tgz" integrity sha512-+0VDvx9SmNrFNgwPoeoCha+tRoAjopwT0+pYO1xAbyLcewXSemq+eLxEa46Q1/aoOaJQ0qqHELuQM7iS2gp33Q== dependencies: "@docusaurus/core" "3.4.0" @@ -1446,7 +1502,7 @@ "@docusaurus/preset-classic@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.4.0.tgz#6082a32fbb465b0cb2c2a50ebfc277cff2c0f139" + resolved "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.4.0.tgz" integrity sha512-Ohj6KB7siKqZaQhNJVMBBUzT3Nnp6eTKqO+FXO3qu/n1hJl3YLwVKTWBg28LF7MWrKu46UuYavwMRxud0VyqHg== dependencies: "@docusaurus/core" "3.4.0" @@ -1465,7 +1521,7 @@ "@docusaurus/theme-classic@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.4.0.tgz#1b0f48edec3e3ec8927843554b9f11e5927b0e52" + resolved "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.4.0.tgz" integrity sha512-0IPtmxsBYv2adr1GnZRdMkEQt1YW6tpzrUPj02YxNpvJ5+ju4E13J5tB4nfdaen/tfR1hmpSPlTFPvTf4kwy8Q== dependencies: "@docusaurus/core" "3.4.0" @@ -1496,7 +1552,7 @@ "@docusaurus/theme-common@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.4.0.tgz#01f2b728de6cb57f6443f52fc30675cf12a5d49f" + resolved "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.4.0.tgz" integrity sha512-0A27alXuv7ZdCg28oPE8nH/Iz73/IUejVaCazqu9elS4ypjiLhK3KfzdSQBnL/g7YfHSlymZKdiOHEo8fJ0qMA== dependencies: "@docusaurus/mdx-loader" "3.4.0" @@ -1517,7 +1573,7 @@ "@docusaurus/theme-search-algolia@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.4.0.tgz#c499bad71d668df0d0f15b0e5e33e2fc4e330fcc" + resolved "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.4.0.tgz" integrity sha512-aiHFx7OCw4Wck1z6IoShVdUWIjntC8FHCw9c5dR8r3q4Ynh+zkS8y2eFFunN/DL6RXPzpnvKCg3vhLQYJDmT9Q== dependencies: "@docsearch/react" "^3.5.2" @@ -1539,15 +1595,15 @@ "@docusaurus/theme-translations@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz#e6355d01352886c67e38e848b2542582ea3070af" + resolved "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz" integrity sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg== dependencies: fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/types@3.4.0": +"@docusaurus/types@*", "@docusaurus/types@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.4.0.tgz#237c3f737e9db3f7c1a5935a3ef48d6eadde8292" + resolved "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz" integrity sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A== dependencies: "@mdx-js/mdx" "^3.0.0" @@ -1562,14 +1618,14 @@ "@docusaurus/utils-common@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.4.0.tgz#2a43fefd35b85ab9fcc6833187e66c15f8bfbbc6" + resolved "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.4.0.tgz" integrity sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ== dependencies: tslib "^2.6.0" "@docusaurus/utils-validation@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz#0176f6e503ff45f4390ec2ecb69550f55e0b5eb7" + resolved "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz" integrity sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g== dependencies: "@docusaurus/logger" "3.4.0" @@ -1583,7 +1639,7 @@ "@docusaurus/utils@3.4.0": version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.4.0.tgz#c508e20627b7a55e2b541e4a28c95e0637d6a204" + resolved "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.4.0.tgz" integrity sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g== dependencies: "@docusaurus/logger" "3.4.0" @@ -1609,26 +1665,26 @@ "@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== "@hapi/topo@^5.1.0": version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== dependencies: "@hapi/hoek" "^9.0.0" "@jest/schemas@^29.6.3": version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: "@sinclair/typebox" "^0.27.8" "@jest/types@^29.6.3": version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: "@jest/schemas" "^29.6.3" @@ -1639,9 +1695,9 @@ chalk "^4.0.0" "@jridgewell/gen-mapping@^0.3.5": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" - integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== dependencies: "@jridgewell/set-array" "^1.2.1" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -1649,17 +1705,17 @@ "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== "@jridgewell/set-array@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== "@jridgewell/source-map@^0.3.3": version "0.3.6" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== dependencies: "@jridgewell/gen-mapping" "^0.3.5" @@ -1667,12 +1723,12 @@ "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== -"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" @@ -1680,13 +1736,13 @@ "@leichtgewicht/ip-codec@^2.0.1": version "2.0.5" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz" integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== "@mdx-js/mdx@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-3.1.0.tgz#10235cab8ad7d356c262e8c21c68df5850a97dc3" - integrity sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw== + version "3.0.1" + resolved "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.1.tgz" + integrity sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA== dependencies: "@types/estree" "^1.0.0" "@types/estree-jsx" "^1.0.0" @@ -1694,15 +1750,14 @@ "@types/mdx" "^2.0.0" collapse-white-space "^2.0.0" devlop "^1.0.0" + estree-util-build-jsx "^3.0.0" estree-util-is-identifier-name "^3.0.0" - estree-util-scope "^1.0.0" + estree-util-to-js "^2.0.0" estree-walker "^3.0.0" + hast-util-to-estree "^3.0.0" hast-util-to-jsx-runtime "^2.0.0" markdown-extensions "^2.0.0" - recma-build-jsx "^1.0.0" - recma-jsx "^1.0.0" - recma-stringify "^1.0.0" - rehype-recma "^1.0.0" + periscopic "^3.0.0" remark-mdx "^3.0.0" remark-parse "^11.0.0" remark-rehype "^11.0.0" @@ -1714,28 +1769,28 @@ vfile "^6.0.0" "@mdx-js/react@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.1.0.tgz#c4522e335b3897b9a845db1dbdd2f966ae8fb0ed" - integrity sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ== + version "3.0.1" + resolved "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz" + integrity sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A== dependencies: "@types/mdx" "^2.0.0" "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -1743,70 +1798,70 @@ "@pnpm/config.env-replace@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + resolved "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz" integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== "@pnpm/network.ca-file@^1.0.1": version "1.0.2" - resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + resolved "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz" integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== dependencies: graceful-fs "4.2.10" "@pnpm/npm-conf@^2.1.0": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz#bb375a571a0bd63ab0a23bece33033c683e9b6b0" - integrity sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw== + version "2.2.2" + resolved "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz" + integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== dependencies: "@pnpm/config.env-replace" "^1.1.0" "@pnpm/network.ca-file" "^1.0.1" config-chain "^1.1.11" "@polka/url@^1.0.0-next.24": - version "1.0.0-next.28" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.28.tgz#d45e01c4a56f143ee69c54dd6b12eade9e270a73" - integrity sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw== + version "1.0.0-next.25" + resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz" + integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== "@scarf/scarf@=1.4.0": version "1.4.0" - resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.4.0.tgz#3bbb984085dbd6d982494538b523be1ce6562972" + resolved "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz" integrity sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ== "@sideway/address@^4.1.5": version "4.1.5" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz" integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== dependencies: "@hapi/hoek" "^9.0.0" "@sideway/formula@^3.0.1": version "3.0.1" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz" integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== "@sideway/pinpoint@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== "@sinclair/typebox@^0.27.8": version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@sindresorhus/is@^4.6.0": version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@sindresorhus/is@^5.2.0": version "5.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz" integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== "@slorber/remark-comment@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@slorber/remark-comment/-/remark-comment-1.0.0.tgz#2a020b3f4579c89dec0361673206c28d67e08f5a" + resolved "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz" integrity sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA== dependencies: micromark-factory-space "^1.0.0" @@ -1815,47 +1870,47 @@ "@svgr/babel-plugin-add-jsx-attribute@8.0.0": version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz" integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== "@svgr/babel-plugin-remove-jsx-attribute@8.0.0": version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz" integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== "@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz" integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== "@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz" integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== "@svgr/babel-plugin-svg-dynamic-title@8.0.0": version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz" integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== "@svgr/babel-plugin-svg-em-dimensions@8.0.0": version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz" integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== "@svgr/babel-plugin-transform-react-native-svg@8.1.0": version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz" integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== "@svgr/babel-plugin-transform-svg-component@8.0.0": version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz" integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== "@svgr/babel-preset@8.1.0": version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz" integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" @@ -1867,9 +1922,9 @@ "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" "@svgr/babel-plugin-transform-svg-component" "8.0.0" -"@svgr/core@8.1.0": +"@svgr/core@*", "@svgr/core@8.1.0": version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== dependencies: "@babel/core" "^7.21.3" @@ -1880,7 +1935,7 @@ "@svgr/hast-util-to-babel-ast@8.0.0": version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz" integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== dependencies: "@babel/types" "^7.21.3" @@ -1888,7 +1943,7 @@ "@svgr/plugin-jsx@8.1.0": version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz" integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== dependencies: "@babel/core" "^7.21.3" @@ -1898,7 +1953,7 @@ "@svgr/plugin-svgo@8.1.0": version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz" integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== dependencies: cosmiconfig "^8.1.3" @@ -1907,7 +1962,7 @@ "@svgr/webpack@^8.1.0": version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz" integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== dependencies: "@babel/core" "^7.21.3" @@ -1919,26 +1974,26 @@ "@svgr/plugin-jsx" "8.1.0" "@svgr/plugin-svgo" "8.1.0" -"@swagger-api/apidom-ast@^1.0.0-beta.28": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-beta.28.tgz#d9b9fc44c159537ef4af3cc657ed10a15626728b" - integrity sha512-IWamrCbjAgP6750GJUA4YWiciIDzV6efv2c2WDA6jGGUa4Vnua8/Slz2o3375OhbrDExuDPAWRXYD4WazQP9Zw== +"@swagger-api/apidom-ast@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-beta.6.tgz" + integrity sha512-AAxEN/xTcH/ORpn/zEEuPPgtqX6/Q9EZC8RX2R7AlRdUeGZieE9OZ91mXYrg48FcHWi/xwWYqkPPHjyXTQkfww== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-error" "^1.0.0-beta.28" + "@swagger-api/apidom-error" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" unraw "^3.0.0" -"@swagger-api/apidom-core@>=1.0.0-beta.13 <1.0.0-rc.0", "@swagger-api/apidom-core@^1.0.0-beta.28": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-core/-/apidom-core-1.0.0-beta.28.tgz#b2b5e404752ea9a1a8d292c47ab716c3a1b06d21" - integrity sha512-+a3CZfBfimt2N8ZnYaW5CpPgzTolZVJWXlux1GI3I/B/YHmc3OLw9Ew+qw4g2vv2MYq4aO0MSMXiLmfRsCLnxQ== +"@swagger-api/apidom-core@^1.0.0-beta.6", "@swagger-api/apidom-core@>=1.0.0-beta.6 <1.0.0-rc.0": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.0.0-beta.6.tgz" + integrity sha512-gmHpE5+wJgUmpkb0C3ZIM6VsMXj0heujwQeXqEcFRkp1d0u4crCNmQ5iPTewzvILcnMbxac0AUFFKuJbBpqzPg== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-ast" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" + "@swagger-api/apidom-ast" "^1.0.0-beta.6" + "@swagger-api/apidom-error" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" minim "~0.23.8" ramda "~0.30.0" @@ -1946,239 +2001,210 @@ short-unique-id "^5.0.2" ts-mixer "^6.0.3" -"@swagger-api/apidom-error@>=1.0.0-beta.13 <1.0.0-rc.0", "@swagger-api/apidom-error@^1.0.0-beta.28", "@swagger-api/apidom-error@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-error/-/apidom-error-1.0.0-beta.28.tgz#c87e3c4110d448395d545d08963ac510225b9f4a" - integrity sha512-NiODN8UDwaVMjzECxzCros2UNnKXTw/jlznqmkK5+oTuWSgbFrUG2Y6HBqGqqGzi3GZS5ROLCwF2jLUhiZyJBw== +"@swagger-api/apidom-error@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-error@^1.0.0-beta.6", "@swagger-api/apidom-error@>=1.0.0-beta.6 <1.0.0-rc.0": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.0.0-beta.6.tgz" + integrity sha512-bLttwjXj0u9pHIzc71L5rZWvhtcPFmGdvPDpXMoK4XOjmfpw9hqQKg1DGWKQHxNiMP/zlWAWO1RxjFQNYcO70g== dependencies: "@babel/runtime-corejs3" "^7.20.7" -"@swagger-api/apidom-json-pointer@>=1.0.0-beta.13 <1.0.0-rc.0", "@swagger-api/apidom-json-pointer@^1.0.0-beta.28", "@swagger-api/apidom-json-pointer@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.0.0-beta.28.tgz#7251c7abc51f6eba25a31348902fe9432a261553" - integrity sha512-UIPMt2dIKy8IuHZlLhEO2rOqgrLLuTufEEuFAj5MS+5NzFlrYSNiaho+uL13E3Dw/u5qG6lljorNj94qwMEh1g== +"@swagger-api/apidom-json-pointer@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-json-pointer@^1.0.0-beta.6", "@swagger-api/apidom-json-pointer@>=1.0.0-beta.6 <1.0.0-rc.0": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.0.0-beta.6.tgz" + integrity sha512-9XdWnouDGnn8UCr48TgtB16e4s37L7ibWFFgn4ercSkUMsJKMzHULabZ005IKVfP20UbhdIa5/r2W/i8iRk8Vg== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-error" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" -"@swagger-api/apidom-ns-api-design-systems@^1.0.0-beta.28": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.0.0-beta.28.tgz#cf042cb0d7f7b0b5b64f66f477385a3db064ad8e" - integrity sha512-yDGohmt0myu6hTz6OmQINmtRSM/p5yV03RLewN8JAiXg4i5ElpPZ3HLaKsJAuWiHyom8/rDaV0Zp6pa0Ruuglw== +"@swagger-api/apidom-ns-api-design-systems@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.0.0-beta.6.tgz" + integrity sha512-Qycf1LbBP5KxtxCeXHIAKazekKnz8kOHfnn2JT/FkWojM4reTECHBMi40DwQOQbj1CsWSasoTbnKjG64BxoJRg== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-openapi-3-1" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-error" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-openapi-3-1" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" ts-mixer "^6.0.3" -"@swagger-api/apidom-ns-asyncapi-2@^1.0.0-beta.28", "@swagger-api/apidom-ns-asyncapi-2@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.0.0-beta.28.tgz#b493f9cd7505fe32e8dd3b2930e72bdc5945da61" - integrity sha512-V3QpAJXNdk8HtPUg6PQ1oAjx59sthvmB6QXN0M+B1DmjJ4AXluIKe6iifJ72o7oe6ZEJ7xOOBkbGuoxpNxncxA== +"@swagger-api/apidom-ns-asyncapi-2@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-ns-asyncapi-2@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.0.0-beta.6.tgz" + integrity sha512-bQ0eNdDYrrkr4Y4iyUcgXiYBFzj+wwJiBGKI8OBJ9hTVEDbDCb/8ZzlZw3wMQNGFMw6/NC2F6MEbocApDx9vnQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-json-schema-draft-7" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-json-schema-draft-7" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" ts-mixer "^6.0.3" -"@swagger-api/apidom-ns-json-schema-2019-09@^1.0.0-beta.28": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-2019-09/-/apidom-ns-json-schema-2019-09-1.0.0-beta.28.tgz#13099595817d16881b253ce8adbd64ef0a33db96" - integrity sha512-6Fb0/wdwCbOeJwrOGXsYQWK1W90RayU4oMjHdWLUWJdeuRn2vrya92S2RttxlJaCFzefa9SFAjPzlLWnVMYkIw== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-json-schema-draft-7" "^1.0.0-beta.28" - "@types/ramda" "~0.30.0" - ramda "~0.30.0" - ramda-adjunct "^5.0.0" - ts-mixer "^6.0.4" - -"@swagger-api/apidom-ns-json-schema-2020-12@^1.0.0-beta.28": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-2020-12/-/apidom-ns-json-schema-2020-12-1.0.0-beta.28.tgz#c721f4f2cd119500683c0d42b3b9116caacf1426" - integrity sha512-DSen/ITglseuHEM8sjAPqGSvEHC58f2RSlXtNYyWMGHFcNX2JuybNfpW90GOLVSoDBa0rLJeLW75PSu8LaXRsw== - dependencies: - "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-json-schema-2019-09" "^1.0.0-beta.28" - "@types/ramda" "~0.30.0" - ramda "~0.30.0" - ramda-adjunct "^5.0.0" - ts-mixer "^6.0.4" - -"@swagger-api/apidom-ns-json-schema-draft-4@^1.0.0-beta.28": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.0.0-beta.28.tgz#02682e861e804fc43094d693a7e6f0fd2bc547ba" - integrity sha512-VQ7JclddzOHIiIiEBbFpomO6Oqh+1dvObUYWjmm/fjMKKn5OWz39gQdGBHfFwaQrGf9YWj7YNbm8ADElHkGwVQ== +"@swagger-api/apidom-ns-json-schema-draft-4@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.0.0-beta.6.tgz" + integrity sha512-Cn4+CH8ZqniejbmbD7nfUzw/N+S9lwGztOB5ZSoS23r1/mFzcya/bTOSuUW6BJ4Pa1L+AvUWhqmRlzG66Ta0gA== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-ast" "^1.0.0-beta.28" - "@swagger-api/apidom-core" "^1.0.0-beta.28" + "@swagger-api/apidom-ast" "^1.0.0-beta.6" + "@swagger-api/apidom-core" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" ts-mixer "^6.0.4" -"@swagger-api/apidom-ns-json-schema-draft-6@^1.0.0-beta.28": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.0.0-beta.28.tgz#af5b1b80a20675a3abe24daf5b6c9e3914563c54" - integrity sha512-3elTkbuTmmVROTfeudz7QcOB1J+HEPXvjudmE/6qNWBqPQCKQP4PeOBtHdfHo0Miofxo1bIU/ZczF6jb54KNbA== +"@swagger-api/apidom-ns-json-schema-draft-6@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.0.0-beta.6.tgz" + integrity sha512-zwD2cKjbXBynMNFAyXHLsNz16Wbd4SOSehAZ1WJcWTJflC0GVk0kkFmzGFz92WI0YQihnrYwrAhpmZohUlHUWg== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-json-schema-draft-4" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-error" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-json-schema-draft-4" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" ts-mixer "^6.0.4" -"@swagger-api/apidom-ns-json-schema-draft-7@^1.0.0-beta.28": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.0.0-beta.28.tgz#0822fc5920c875853cd2e02ef82b7aa6ab6b971c" - integrity sha512-s8lahyg/srF+78CSL/gDe+vHtwKSMBA7VM0S36zvDxcg7JNfddE4ZKUDjE1mSkQBAp7dxN+MBX9+j/paPrivBQ== +"@swagger-api/apidom-ns-json-schema-draft-7@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.0.0-beta.6.tgz" + integrity sha512-T1LMWiHitPJt9pM4G4FTPaGJntW8x6v/Y6236dEt8gO5aw5T3528PtaqEGfmI4uIvJO4dBwrobEte9GUXWVxig== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-json-schema-draft-6" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-error" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-json-schema-draft-6" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" ts-mixer "^6.0.4" -"@swagger-api/apidom-ns-openapi-2@^1.0.0-beta.28", "@swagger-api/apidom-ns-openapi-2@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.0.0-beta.28.tgz#7b873a63859e70c31101b1e5345447a73cc099a3" - integrity sha512-E7ON9KsM+xhzOUW+OZLmnOvRe+oDrGYc0Md92wZd4aknybPqYRkDrpNg53L7qAKudGZvebZxcciV6k5XtiAFyw== +"@swagger-api/apidom-ns-openapi-2@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-ns-openapi-2@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.0.0-beta.6.tgz" + integrity sha512-SY+h67maS88egPr9o7E8yep2xdw4N/vRYO1vCRcX4Y6UfFpiAn3jSKxQkOP983DJGXwDLVirVML/ezb9VXbnDg== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-json-schema-draft-4" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-error" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-json-schema-draft-4" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" ts-mixer "^6.0.3" -"@swagger-api/apidom-ns-openapi-3-0@^1.0.0-beta.28", "@swagger-api/apidom-ns-openapi-3-0@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.0.0-beta.28.tgz#0c28538bee391a6f949f944fdbf5d33b673f5d77" - integrity sha512-O/J8gPqNeF9A6G8oYK+49D7h5OcirjzC+3EuU7Y2W9dI4ipI9vXghQxIUKURCaqyDZIn9ujPG9yOsq3HFCBt1w== +"@swagger-api/apidom-ns-openapi-3-0@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-ns-openapi-3-0@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.0.0-beta.6.tgz" + integrity sha512-fqsF35X8O2yaENr74wbZtPqSgiuuomu9mT9KKj9P7z6in6SjBSTMMmGkbsjximdr+hVCrNm8ActDF1HRq3av7Q== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-json-schema-draft-4" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-error" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-json-schema-draft-4" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" ts-mixer "^6.0.3" -"@swagger-api/apidom-ns-openapi-3-1@>=1.0.0-beta.13 <1.0.0-rc.0", "@swagger-api/apidom-ns-openapi-3-1@^1.0.0-beta.28", "@swagger-api/apidom-ns-openapi-3-1@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.0.0-beta.28.tgz#1cefdd301f3530c1d92de4cfac4742243cba4498" - integrity sha512-ipgPSWxgiBVPQAGQH3BVUz7FGz4fJQydvuKSspznUeMPiLTCPNlKQndNmPc0cL/c5igWxCMSyiTDJReyxFk2Bw== +"@swagger-api/apidom-ns-openapi-3-1@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-ns-openapi-3-1@^1.0.0-beta.6", "@swagger-api/apidom-ns-openapi-3-1@>=1.0.0-beta.6 <1.0.0-rc.0": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.0.0-beta.6.tgz" + integrity sha512-GOtloezNXZExvhmSp5OT2NO7XLMwUY12stXUWl0bWR3O/6I6U522JFgoO9SHKxuSed5ateJpE7eR39HCJ/pyOQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-ast" "^1.0.0-beta.28" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-json-pointer" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-json-schema-2020-12" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-openapi-3-0" "^1.0.0-beta.28" + "@swagger-api/apidom-ast" "^1.0.0-beta.6" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-json-pointer" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-openapi-3-0" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" ts-mixer "^6.0.3" -"@swagger-api/apidom-ns-workflows-1@^1.0.0-beta.28", "@swagger-api/apidom-ns-workflows-1@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-1.0.0-beta.28.tgz#e47e75f72cc9dba6e79c88f8805ee9d488afcc71" - integrity sha512-C+U15u0oe6oOq9hhTtmWohWzhuTOmuYkfryAoUxaiLtUVkgjNpVmB4lPA+TLFuYG2g96P1Yfcx771Myviuebrw== +"@swagger-api/apidom-ns-workflows-1@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-ns-workflows-1@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-1.0.0-beta.6.tgz" + integrity sha512-5ViXxpioBNfkJJyGmgbp76OyvY3IRsfNwN9tXTl39vgpyPnQVtBPwhKwuViiqDr+GmyZgMCotB3QlYPNcxqEoA== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-json-schema-2020-12" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-openapi-3-1" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" ts-mixer "^6.0.3" "@swagger-api/apidom-parser-adapter-api-design-systems-json@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.0.0-beta.28.tgz#0b8afb42b5871693ad90832b289eda8e00ad084f" - integrity sha512-vbO89v7qvEjv2uluUS5544sfXTGJooEiMj+IrfykLlu18Xwk7B1pE8USpQxP+qPmvLvzGdFoT5PWGHJy/QT5lA== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.0.0-beta.6.tgz" + integrity sha512-HLcCDO7QdBjPFQ/Mf4XmG0qcmwW+AnDZyPYzMOAyK1hU3xwQjAIn5zOlgp0feTe3vNUMzNY1NDHvCeDXSbN5sQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-api-design-systems" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-api-design-systems" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" "@swagger-api/apidom-parser-adapter-api-design-systems-yaml@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.0.0-beta.28.tgz#b2cfbff54c37f63a0b1314e063ed767acaa7f997" - integrity sha512-Zz1Y2z2HvV6YZzwFh0WHWgbekXHSfOmIsb3SowE68R0gfwccz0p8wpcVFV7C3hjEmWuqNxN8WG34R9X2k1Dtxg== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.0.0-beta.6.tgz" + integrity sha512-jL2fZv1a+3S6SiIVYc3kC0NAAk8bszNGcVTsBV8ehHgZxc0I+EANEJwgZE/YOcL3TlNEFscfjUcGhjyWkEQksQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-api-design-systems" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-api-design-systems" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" "@swagger-api/apidom-parser-adapter-asyncapi-json-2@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.0.0-beta.28.tgz#a890269f221376f18f9b811534596d71e20bcfef" - integrity sha512-9iZH67wLl+rNN6x4gzsoBFDGdJBl+GTkLffpGE/h0fNPkSja/onW/EwUiwiRSvRXXAekS9wYSAL/NFIHOnkitw== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.0.0-beta.6.tgz" + integrity sha512-hwSOnUwfZ78+wHXsokB/ho6xOgxK0qnWviSj1QkLvd2bomfP6RM0d4Uk19ND/Mh39oDXDwxiQ7jXHQsU8/Tq/g== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-asyncapi-2" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-asyncapi-2" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.0.0-beta.28.tgz#97e859aae6d8cdc9bc7fd43b31a22b11ae4974a6" - integrity sha512-iSK6vInKAUbXt0ExJ25xiGK4QB9fkzCFx4tPWmP7xXMxntZG7AcB7NQ7aN1TxTbP836svK0sTHKgVevQqNVdlA== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.0.0-beta.6.tgz" + integrity sha512-NecW+P4oUgioPW/l1Ang6S76v26QevjTDls+5p0I9a7Kyln8xHbfzYOGH9AEopeygZmhaburC/TO6ochxBZqkw== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-asyncapi-2" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-asyncapi-2" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" -"@swagger-api/apidom-parser-adapter-json@^1.0.0-beta.28", "@swagger-api/apidom-parser-adapter-json@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.0.0-beta.28.tgz#741a7a1744e8bf8e65d34fd258720cb502aeb11b" - integrity sha512-HLOjQmyevqH1vqxHrlC4wud3rT/ISTQDCvJb0sMLAfa3rC/bGb4SCDOKj+JKGajXK3MArleaXod2u6bc9IzBgQ== +"@swagger-api/apidom-parser-adapter-json@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-parser-adapter-json@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.0.0-beta.6.tgz" + integrity sha512-a2ymHU7BJ11XcZvNpghmUjsyxa+hwf2Jt7MgLIKQGg6Kmnx+pHesx1/ZlqqvhkaKk6ZXbefpK7PTOBcGRerjlQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-ast" "^1.0.0-beta.28" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" + "@swagger-api/apidom-ast" "^1.0.0-beta.6" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-error" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" @@ -2187,118 +2213,118 @@ web-tree-sitter "=0.24.5" "@swagger-api/apidom-parser-adapter-openapi-json-2@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.0.0-beta.28.tgz#a08d31c13a376ff7084930ede27e8b6f5a1fb83a" - integrity sha512-+W+ReQAGsfS2ZJWyeD3avH8z+Aogv2HHuRHBLycm5Uvq2gNcpE/3FMUVA2MZctCg8N0GzcCeV2CHkXMk6jhDOA== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.0.0-beta.6.tgz" + integrity sha512-NgbHpVUMqE81f6rDPU9bO0qbWmiwu7FlrFvBwePktZTbbFaxwt73jFQpqyzKmIumNrg/mCckxzTrbSEW7k85Vw== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-openapi-2" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-openapi-2" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" "@swagger-api/apidom-parser-adapter-openapi-json-3-0@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.0.0-beta.28.tgz#7f1c07fb115330779546e8ea5105f16e11e4c85e" - integrity sha512-CuNrum8Bi451uXD6Y4hZ97sImk54XBzTqwnt+/UMtVj+BJ5DA87k534TNHnoHpBDSWeepoXhPpkbYmd7X431lA== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.0.0-beta.6.tgz" + integrity sha512-cnFcTkzN7xAr6Zal5UnzRRkQpSe3fI910bYs9mjNMUYReo5D+hUyL16PtOf832Qa8vyDlU3WBHqAQuOEk1fepA== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-openapi-3-0" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-openapi-3-0" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" "@swagger-api/apidom-parser-adapter-openapi-json-3-1@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.0.0-beta.28.tgz#71bdcc6b99f69135c1948c421ec37b344fce7dd3" - integrity sha512-P2lWqlaIFewn1byUW7IUeP6psw2JiifrYFOKVGWasaqPsdWjk8ebhNeLQa5PSWGDS9jQD9e53FhBmTc98SJZCA== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.0.0-beta.6.tgz" + integrity sha512-xkqyXhLWg6iWyriH/t/am3CHFTZOSIUrNP7uSZBHoD6PbvDArYSB+/gtnO7e/NphSSOkqlkRC4+7VTybA9LK+A== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-openapi-3-1" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-openapi-3-1" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" "@swagger-api/apidom-parser-adapter-openapi-yaml-2@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.0.0-beta.28.tgz#5498a5771d4eb5bf99e62b50597f66151071a946" - integrity sha512-f1EVpcfMLikurRWZPvnM14/8XbtW9uWZkLBrWIjg/nuaAXskLZbQtCXTLIcyOY1yof9HHjiUpJVO/MjWEp/qeA== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.0.0-beta.6.tgz" + integrity sha512-M91gx/QpM6xSf4m2k/OYaPw8Hapir+6KJMEIcLV8aP6UAnb+S2z6XoSLQ633n7QQjLYeLUL0pTzRgU1UPL9cyg== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-openapi-2" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-openapi-2" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.0.0-beta.28.tgz#1d65926b0b95746f98b08d1edf0d0d5420c057be" - integrity sha512-apM0weFpdewvFvPbJT9GcwLi3HAuPZmaqdpZPZ86+ippd/aQltFZs+yMuO7bXIUWIMVSOM4B2VXP8Myu/3AjDA== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.0.0-beta.6.tgz" + integrity sha512-GdQ8jIgoYaPeIVp3Em5BGi1XwFB+LWa48mKQ7Z/M3S0u1I6YSo7P1iNhm2eRaeoL+LNb7C0ygEwixiJBaSmeew== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-openapi-3-0" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-openapi-3-0" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.0.0-beta.28.tgz#82eed6e41b60b4d17b8a58b055aab0ff5d8f67f1" - integrity sha512-yNM8vS2o0X3dGGzrdOl0xlLI3PG/k7uWczbgj5IJyrsBAKnXk2M3OCuX8nfFfyk4nSwXJOaePepZB2eChtOG7Q== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.0.0-beta.6.tgz" + integrity sha512-52guWmqVa9IReg0NRf4KKUZFmlV/fMniJAKk80Xv62XN5X/MduW2P7zln2+FJAA6uGV0rBZip0Zg1McVkPowSw== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-openapi-3-1" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-openapi-3-1" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" "@swagger-api/apidom-parser-adapter-workflows-json-1@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-1.0.0-beta.28.tgz#7d185d7c9d221e0fea6df52de78ee3d79abb2e3f" - integrity sha512-aeHrpYq550fL8TJUjUMCRnXVKv/rPMkbMu0hj1Lqz1Iq85Fi2uaFDKhYx6snsYFd2SNEXBmjx1Ykh95ykWX+iA== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-1.0.0-beta.6.tgz" + integrity sha512-B5WW7CSVKjU+1Lt3StUEKgJvaNGF1IHYKg91eH7nvhMfJ/oY6rNpE2+ziVkYETifbZeCWMFqbQYHPzJyqomnQQ== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-workflows-1" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-workflows-1" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-json" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" "@swagger-api/apidom-parser-adapter-workflows-yaml-1@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-workflows-yaml-1/-/apidom-parser-adapter-workflows-yaml-1-1.0.0-beta.28.tgz#4d30bbfefdb1b01e020a59d2362f1879474ea877" - integrity sha512-pT7LO8Q/3lF7atKH88iyghDLDkXkJvNnzZvSEjSebA/CSOW+uxV+CgR56Lmal30cRz657Qipc8gavh+y4/ZM8g== + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-yaml-1/-/apidom-parser-adapter-workflows-yaml-1-1.0.0-beta.6.tgz" + integrity sha512-2lzE8JemYy998RDlGJ3l4d9SL3Rs1yxEMGC5a/bIml5QVXT2FSu0ohwaxzkX+HB6LbMd1PMlQZ75IJIlxmcb0Q== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-ns-workflows-1" "^1.0.0-beta.28" - "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-ns-workflows-1" "^1.0.0-beta.6" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" ramda "~0.30.0" ramda-adjunct "^5.0.0" -"@swagger-api/apidom-parser-adapter-yaml-1-2@^1.0.0-beta.28", "@swagger-api/apidom-parser-adapter-yaml-1-2@^1.0.0-beta.3 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.0.0-beta.28.tgz#6b45a8b5d1adb690adc3dc7dae2fac177304285e" - integrity sha512-24dW5HamteO7I+CT70JCfwyyxLDDPxvF2RExGkU3zN+4UBglE/5D9N++YjS/Q0Qu+gak0RsfMd49YigcoS/yOg== +"@swagger-api/apidom-parser-adapter-yaml-1-2@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-parser-adapter-yaml-1-2@^1.0.0-beta.6": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.0.0-beta.6.tgz" + integrity sha512-iwoSjTdyM4DeYtJEenMEKA51EOsOLxMADOXu/9ixTqMpYghp2GMnkryrtH3mq6oCX+jO3ysADx1dfp/CaukBsg== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-ast" "^1.0.0-beta.28" - "@swagger-api/apidom-core" "^1.0.0-beta.28" - "@swagger-api/apidom-error" "^1.0.0-beta.28" + "@swagger-api/apidom-ast" "^1.0.0-beta.6" + "@swagger-api/apidom-core" "^1.0.0-beta.6" + "@swagger-api/apidom-error" "^1.0.0-beta.6" "@tree-sitter-grammars/tree-sitter-yaml" "=0.7.0" "@types/ramda" "~0.30.0" ramda "~0.30.0" @@ -2306,15 +2332,15 @@ tree-sitter "=0.22.1" web-tree-sitter "=0.24.5" -"@swagger-api/apidom-reference@>=1.0.0-beta.13 <1.0.0-rc.0": - version "1.0.0-beta.28" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-reference/-/apidom-reference-1.0.0-beta.28.tgz#519bc7824b46610363d61ef81cab10cfb03162af" - integrity sha512-Bepv+aDiCF6Ezx3FLsf/54LJP+9dL20Lk2O+CPdDtK3kkeFPHd7PdSrnreDbeBOKHAKopHGpGdkcSWzAFpvQVw== +"@swagger-api/apidom-reference@>=1.0.0-beta.6 <1.0.0-rc.0": + version "1.0.0-beta.6" + resolved "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.0.0-beta.6.tgz" + integrity sha512-GdVPd+YAOWdAuJUJ5so63pZ4i0xlBNGClHJfTHirxZbEH9UQjNTKSkQgawUD0UBpg1HeQVzecl1cehoOp/+Uhw== dependencies: "@babel/runtime-corejs3" "^7.20.7" - "@swagger-api/apidom-core" "^1.0.0-beta.28" + "@swagger-api/apidom-core" "^1.0.0-beta.6" "@types/ramda" "~0.30.0" - axios "^1.8.2" + axios "^1.7.4" minimatch "^7.4.3" process "^0.11.10" ramda "~0.30.0" @@ -2342,23 +2368,16 @@ "@swagger-api/apidom-parser-adapter-workflows-yaml-1" "^1.0.0-beta.3 <1.0.0-rc.0" "@swagger-api/apidom-parser-adapter-yaml-1-2" "^1.0.0-beta.3 <1.0.0-rc.0" -"@swaggerexpert/cookie@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@swaggerexpert/cookie/-/cookie-2.0.2.tgz#2b1bc2b5082955372539ce3f2b52c35831b32ef8" - integrity sha512-DPI8YJ0Vznk4CT+ekn3rcFNq1uQwvUHZhH6WvTSPD0YKBIlMS9ur2RYKghXuxxOiqOam/i4lHJH4xTIiTgs3Mg== - dependencies: - apg-lite "^1.0.3" - "@szmarczak/http-timer@^5.0.1": version "5.0.1" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== dependencies: defer-to-connect "^2.0.1" "@tree-sitter-grammars/tree-sitter-yaml@=0.7.0": version "0.7.0" - resolved "https://registry.yarnpkg.com/@tree-sitter-grammars/tree-sitter-yaml/-/tree-sitter-yaml-0.7.0.tgz#83995463cdeed8bb9ad2cdcbeb4d4aed9472411f" + resolved "https://registry.npmjs.org/@tree-sitter-grammars/tree-sitter-yaml/-/tree-sitter-yaml-0.7.0.tgz" integrity sha512-GOMIK3IaDvECD0eZEhAsLl03RMtM1E8StxuGMn6PpMKFg7jyQ+jSzxJZ4Jmc/tYitah9/AECt8o4tlRQ5yEZQg== dependencies: node-addon-api "^8.3.0" @@ -2366,19 +2385,19 @@ "@trysound/sax@0.2.0": version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/acorn@^4.0.0": version "4.0.6" - resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22" + resolved "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz" integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ== dependencies: "@types/estree" "*" "@types/body-parser@*": version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz" integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== dependencies: "@types/connect" "*" @@ -2386,14 +2405,14 @@ "@types/bonjour@^3.5.9": version "3.5.13" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz" integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== dependencies: "@types/node" "*" "@types/connect-history-api-fallback@^1.3.5": version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz" integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== dependencies: "@types/express-serve-static-core" "*" @@ -2401,79 +2420,59 @@ "@types/connect@*": version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== dependencies: "@types/node" "*" "@types/debug@^4.0.0": version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz" integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== dependencies: "@types/ms" "*" "@types/eslint-scope@^3.7.7": version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" - integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + version "8.56.10" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree-jsx@^1.0.0": version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz#858a88ea20f34fe65111f005a689fa1ebf70dc18" + resolved "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz" integrity sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg== dependencies: "@types/estree" "*" "@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.6": version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz#41fec4ea20e9c7b22f024ab88a95c6bb288f51b8" - integrity sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express-serve-static-core@^4.17.33": - version "4.19.6" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267" - integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.19.5" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz" + integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/send" "*" -"@types/express@*": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c" - integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^5.0.0" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/express@^4.17.13": +"@types/express@*", "@types/express@^4.17.13": version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== dependencies: "@types/body-parser" "*" @@ -2483,145 +2482,150 @@ "@types/gtag.js@^0.0.12": version "0.0.12" - resolved "https://registry.yarnpkg.com/@types/gtag.js/-/gtag.js-0.0.12.tgz#095122edca896689bdfcdd73b057e23064d23572" + resolved "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz" integrity sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg== "@types/hast@^2.0.0": version "2.3.10" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.10.tgz#5c9d9e0b304bbb8879b857225c5ebab2d81d7643" + resolved "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz" integrity sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw== dependencies: "@types/unist" "^2" "@types/hast@^3.0.0": version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + resolved "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz" integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== dependencies: "@types/unist" "*" "@types/history@^4.7.11": version "4.7.11" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + resolved "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz" integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== "@types/html-minifier-terser@^6.0.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-cache-semantics@^4.0.2": version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz" integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== "@types/http-errors@*": version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz" integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== "@types/http-proxy@^1.17.8": - version "1.17.16" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.16.tgz#dee360707b35b3cc85afcde89ffeebff7d7f9240" - integrity sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w== + version "1.17.14" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz" + integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/mdast@^4.0.0", "@types/mdast@^4.0.2": version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz" integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== dependencies: "@types/unist" "*" "@types/mdx@^2.0.0": version "2.0.13" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.13.tgz#68f6877043d377092890ff5b298152b0a21671bd" + resolved "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz" integrity sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw== "@types/mime@^1": version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== "@types/ms@*": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" - integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== + version "0.7.34" + resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz" + integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== "@types/node-forge@^1.3.0": version "1.3.11" - resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz" integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== dependencies: "@types/node" "*" "@types/node@*": - version "22.13.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.10.tgz#df9ea358c5ed991266becc3109dc2dc9125d77e4" - integrity sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw== + version "20.14.11" + resolved "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz" + integrity sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA== dependencies: - undici-types "~6.20.0" + undici-types "~5.26.4" "@types/node@^17.0.5": version "17.0.45" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz" integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== "@types/parse-json@^4.0.0": version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== "@types/prismjs@^1.26.0": - version "1.26.5" - resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.5.tgz#72499abbb4c4ec9982446509d2f14fb8483869d6" - integrity sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ== + version "1.26.4" + resolved "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.4.tgz" + integrity sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg== + +"@types/prop-types@*": + version "15.7.12" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz" + integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== "@types/qs@*": - version "6.9.18" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.18.tgz#877292caa91f7c1b213032b34626505b746624c2" - integrity sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA== + version "6.9.15" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== "@types/ramda@~0.30.0": version "0.30.2" - resolved "https://registry.yarnpkg.com/@types/ramda/-/ramda-0.30.2.tgz#70661b20c1bb969589a551b7134ae75008ffbfb6" + resolved "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz" integrity sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA== dependencies: types-ramda "^0.30.1" "@types/range-parser@*": version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== "@types/react-router-config@*", "@types/react-router-config@^5.0.7": version "5.0.11" - resolved "https://registry.yarnpkg.com/@types/react-router-config/-/react-router-config-5.0.11.tgz#2761a23acc7905a66a94419ee40294a65aaa483a" + resolved "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz" integrity sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw== dependencies: "@types/history" "^4.7.11" @@ -2630,7 +2634,7 @@ "@types/react-router-dom@*": version "5.3.3" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" + resolved "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz" integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== dependencies: "@types/history" "^4.7.11" @@ -2639,34 +2643,35 @@ "@types/react-router@*", "@types/react-router@^5.1.0": version "5.1.20" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" + resolved "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz" integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== dependencies: "@types/history" "^4.7.11" "@types/react" "*" -"@types/react@*": - version "19.0.10" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.0.10.tgz#d0c66dafd862474190fe95ce11a68de69ed2b0eb" - integrity sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g== +"@types/react@*", "@types/react@^18.2.25", "@types/react@>= 16.8.0 < 19.0.0", "@types/react@>=16": + version "18.3.3" + resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz" + integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== dependencies: + "@types/prop-types" "*" csstype "^3.0.2" "@types/retry@0.12.0": version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/sax@^1.2.1": version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/sax/-/sax-1.2.7.tgz#ba5fe7df9aa9c89b6dff7688a19023dd2963091d" + resolved "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz" integrity sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A== dependencies: "@types/node" "*" "@types/send@*": version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz" integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== dependencies: "@types/mime" "^1" @@ -2674,14 +2679,14 @@ "@types/serve-index@^1.9.1": version "1.9.4" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz" integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz" integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== dependencies: "@types/http-errors" "*" @@ -2690,58 +2695,58 @@ "@types/sockjs@^0.3.33": version "0.3.36" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz" integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== dependencies: "@types/node" "*" -"@types/trusted-types@^2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" - integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== - "@types/unist@*", "@types/unist@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" - integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + version "3.0.2" + resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz" + integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== + +"@types/unist@^2": + version "2.0.10" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz" + integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== -"@types/unist@^2", "@types/unist@^2.0.0": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" - integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== +"@types/unist@^2.0.0": + version "2.0.10" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz" + integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== -"@types/use-sync-external-store@^0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz#60be8d21baab8c305132eb9cb912ed497852aadc" - integrity sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg== +"@types/use-sync-external-store@^0.0.3": + version "0.0.3" + resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz" + integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== "@types/ws@^8.5.5": - version "8.18.0" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.0.tgz#8a2ec491d6f0685ceaab9a9b7ff44146236993b5" - integrity sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw== + version "8.5.11" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz" + integrity sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w== dependencies: "@types/node" "*" "@types/yargs-parser@*": version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": - version "17.0.33" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" - integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + version "17.0.32" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== dependencies: "@types/yargs-parser" "*" "@ungap/structured-clone@^1.0.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" - integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + version "1.2.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": +"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz" integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== dependencies: "@webassemblyjs/helper-numbers" "1.13.2" @@ -2749,22 +2754,22 @@ "@webassemblyjs/floating-point-hex-parser@1.13.2": version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz" integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== "@webassemblyjs/helper-api-error@1.13.2": version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz" integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== "@webassemblyjs/helper-buffer@1.14.1": version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz" integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== "@webassemblyjs/helper-numbers@1.13.2": version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz" integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.13.2" @@ -2773,12 +2778,12 @@ "@webassemblyjs/helper-wasm-bytecode@1.13.2": version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz" integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== "@webassemblyjs/helper-wasm-section@1.14.1": version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz" integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== dependencies: "@webassemblyjs/ast" "1.14.1" @@ -2788,26 +2793,26 @@ "@webassemblyjs/ieee754@1.13.2": version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz" integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.13.2": version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz" integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.13.2": version "1.13.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz" integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== "@webassemblyjs/wasm-edit@^1.14.1": version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz" integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== dependencies: "@webassemblyjs/ast" "1.14.1" @@ -2821,7 +2826,7 @@ "@webassemblyjs/wasm-gen@1.14.1": version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz" integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== dependencies: "@webassemblyjs/ast" "1.14.1" @@ -2832,7 +2837,7 @@ "@webassemblyjs/wasm-opt@1.14.1": version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz" integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== dependencies: "@webassemblyjs/ast" "1.14.1" @@ -2840,9 +2845,9 @@ "@webassemblyjs/wasm-gen" "1.14.1" "@webassemblyjs/wasm-parser" "1.14.1" -"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": +"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== dependencies: "@webassemblyjs/ast" "1.14.1" @@ -2854,7 +2859,7 @@ "@webassemblyjs/wast-printer@1.14.1": version "1.14.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz" integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== dependencies: "@webassemblyjs/ast" "1.14.1" @@ -2862,17 +2867,17 @@ "@xtuc/ieee754@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -accepts@~1.3.4, accepts@~1.3.8: +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -2880,29 +2885,29 @@ accepts@~1.3.4, accepts@~1.3.8: acorn-jsx@^5.0.0: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.0.0: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + version "8.3.3" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz" + integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== dependencies: acorn "^8.11.0" -acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2: - version "8.14.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" - integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2: + version "8.14.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== address@^1.0.1, address@^1.1.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -2910,26 +2915,31 @@ aggregate-error@^3.0.0: ajv-formats@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.4.1: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^3.5.2: version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== ajv-keywords@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.5: +ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -2937,9 +2947,9 @@ ajv@^6.12.2, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0: version "8.17.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== dependencies: fast-deep-equal "^3.1.3" @@ -2948,15 +2958,15 @@ ajv@^8.0.0, ajv@^8.9.0: require-from-string "^2.0.2" algoliasearch-helper@^3.13.3: - version "3.24.2" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.24.2.tgz#332f9813b63442b13b8eaae19f313fe3db1047af" - integrity sha512-vBw/INZDfyh/THbVeDy8On8lZqd2qiUAHde5N4N1ygL4SoeLqLGJ4GHneHrDAYsjikRwTTtodEP0fiXl5MxHFQ== + version "3.22.3" + resolved "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.3.tgz" + integrity sha512-2eoEz8mG4KHE+DzfrBTrCmDPxVXv7aZZWPojAJFtARpxxMO6lkos1dJ+XDCXdPvq7q3tpYWRi6xXmVQikejtpA== dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^4.18.0: +algoliasearch@^4.18.0, algoliasearch@^4.19.1, "algoliasearch@>= 3.1 < 6", "algoliasearch@>= 4.9.1 < 6": version "4.24.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.24.0.tgz#b953b3e2309ef8f25da9de311b95b994ac918275" + resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz" integrity sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g== dependencies: "@algolia/cache-browser-local-storage" "4.24.0" @@ -2975,214 +2985,209 @@ algoliasearch@^4.18.0: "@algolia/requester-node-http" "4.24.0" "@algolia/transporter" "4.24.0" -algoliasearch@^5.14.2: - version "5.21.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.21.0.tgz#0517971eba0c03efda8586213294a554db2d3ac9" - integrity sha512-hexLq2lSO1K5SW9j21Ubc+q9Ptx7dyRTY7se19U8lhIlVMLCNXWCyQ6C22p9ez8ccX0v7QVmwkl2l1CnuGoO2Q== - dependencies: - "@algolia/client-abtesting" "5.21.0" - "@algolia/client-analytics" "5.21.0" - "@algolia/client-common" "5.21.0" - "@algolia/client-insights" "5.21.0" - "@algolia/client-personalization" "5.21.0" - "@algolia/client-query-suggestions" "5.21.0" - "@algolia/client-search" "5.21.0" - "@algolia/ingestion" "1.21.0" - "@algolia/monitoring" "1.21.0" - "@algolia/recommend" "5.21.0" - "@algolia/requester-browser-xhr" "5.21.0" - "@algolia/requester-fetch" "5.21.0" - "@algolia/requester-node-http" "5.21.0" - ansi-align@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: string-width "^4.1.0" ansi-html-community@^0.0.8: version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^6.1.0: version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -apg-lite@^1.0.3, apg-lite@^1.0.4: +apg-lite@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/apg-lite/-/apg-lite-1.0.4.tgz#d517a8d775659603cb0c70843355954b73e88cc7" + resolved "https://registry.npmjs.org/apg-lite/-/apg-lite-1.0.4.tgz" integrity sha512-B32zCN3IdHIc99Vy7V9BaYTUzLeRA8YXYY1aQD1/5I2aqIrO0coi4t6hJPqMisidlBxhyME8UexkHt31SlR6Og== arg@^5.0.0: version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== -argparse@^1.0.10, argparse@^1.0.7: +argparse@^1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== astring@^1.8.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/astring/-/astring-1.9.0.tgz#cc73e6062a7eb03e7d19c22d8b0b3451fd9bfeef" - integrity sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== + version "1.8.6" + resolved "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz" + integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== autolinker@^3.11.0: version "3.16.2" - resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-3.16.2.tgz#6bb4f32432fc111b65659336863e653973bfbcc9" + resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz" integrity sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA== dependencies: tslib "^2.3.0" autoprefixer@^10.4.14, autoprefixer@^10.4.19: - version "10.4.21" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d" - integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== + version "10.4.19" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz" + integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== dependencies: - browserslist "^4.24.4" - caniuse-lite "^1.0.30001702" + browserslist "^4.23.0" + caniuse-lite "^1.0.30001599" fraction.js "^4.3.7" normalize-range "^0.1.2" - picocolors "^1.1.1" + picocolors "^1.0.0" postcss-value-parser "^4.2.0" -axios@^1.8.2: - version "1.8.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.3.tgz#9ebccd71c98651d547162a018a1a95a4b4ed4de8" - integrity sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A== +axios@^1.7.4: + version "1.7.9" + resolved "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz" + integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== dependencies: follow-redirects "^1.15.6" form-data "^4.0.0" proxy-from-env "^1.1.0" babel-loader@^9.1.3: - version "9.2.1" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b" - integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA== + version "9.1.3" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz" + integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== dependencies: find-cache-dir "^4.0.0" schema-utils "^4.0.0" babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== dependencies: object.assign "^4.1.0" babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.12" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz#ca55bbec8ab0edeeef3d7b8ffd75322e210879a9" - integrity sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og== + version "0.4.11" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.3" + "@babel/helper-define-polyfill-provider" "^0.6.2" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz#4e4e182f1bb37c7ba62e2af81d8dd09df31344f6" - integrity sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ== +babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.3" - core-js-compat "^3.40.0" + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz#abeb1f3f1c762eace37587f42548b08b57789bc8" - integrity sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q== + version "0.6.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.3" + "@babel/helper-define-polyfill-provider" "^0.6.2" bail@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz" integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64-js@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== batch@0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== big.js@^5.2.2: version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== binary-extensions@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== body-parser@1.20.3: version "1.20.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" @@ -3199,21 +3204,21 @@ body-parser@1.20.3: unpipe "1.0.0" bonjour-service@^1.0.11: - version "1.3.0" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" - integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== + version "1.2.1" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz" + integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== dependencies: fast-deep-equal "^3.1.3" multicast-dns "^7.2.5" boolbase@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== boxen@^6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" + resolved "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz" integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== dependencies: ansi-align "^3.0.1" @@ -3227,7 +3232,7 @@ boxen@^6.2.1: boxen@^7.0.0: version "7.1.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4" + resolved "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz" integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== dependencies: ansi-align "^3.0.1" @@ -3241,7 +3246,7 @@ boxen@^7.0.0: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -3249,22 +3254,22 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^3.0.3, braces@~3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: fill-range "^7.1.1" -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.4: - version "4.24.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" - integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.24.0, "browserslist@>= 4.21.0": + version "4.24.3" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz" + integrity sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA== dependencies: caniuse-lite "^1.0.30001688" electron-to-chromium "^1.5.73" @@ -3273,27 +3278,27 @@ browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4 buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== bytes@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== bytes@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacheable-lookup@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz" integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== cacheable-request@^10.2.8: version "10.2.14" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz" integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== dependencies: "@types/http-cache-semantics" "^4.0.2" @@ -3304,40 +3309,41 @@ cacheable-request@^10.2.8: normalize-url "^8.0.0" responselike "^3.0.0" -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== +call-bind-apply-helpers@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz" + integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== dependencies: es-errors "^1.3.0" function-bind "^1.1.2" -call-bind@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" - integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== +call-bind@^1.0.5: + version "1.0.7" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: - call-bind-apply-helpers "^1.0.0" es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" get-intrinsic "^1.2.4" - set-function-length "^1.2.2" + set-function-length "^1.2.1" -call-bound@^1.0.2, call-bound@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== +call-bound@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz" + integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" + call-bind-apply-helpers "^1.0.1" + get-intrinsic "^1.2.6" callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: pascal-case "^3.1.2" @@ -3345,17 +3351,17 @@ camel-case@^4.1.2: camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== camelcase@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz" integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== caniuse-api@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== dependencies: browserslist "^4.0.0" @@ -3363,72 +3369,81 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001688, caniuse-lite@^1.0.30001702: - version "1.0.30001705" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001705.tgz#dc3510bcdef261444ca944b7be9c8d0bb7fafeef" - integrity sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001688: + version "1.0.30001690" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz" + integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== ccount@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz" integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" chalk@^5.0.1, chalk@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" - integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== + version "5.3.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== character-entities-html4@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz" integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== character-entities-legacy@^1.0.0: version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== character-entities-legacy@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz" integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== character-entities@^1.0.0: version "1.2.4" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== character-entities@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz" integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== character-reference-invalid@^1.0.0: version "1.1.4" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== character-reference-invalid@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz" integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== cheerio-select@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== dependencies: boolbase "^1.0.0" @@ -3439,25 +3454,21 @@ cheerio-select@^2.1.0: domutils "^3.0.1" cheerio@^1.0.0-rc.12: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0.tgz#1ede4895a82f26e8af71009f961a9b8cb60d6a81" - integrity sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww== + version "1.0.0-rc.12" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== dependencies: cheerio-select "^2.1.0" dom-serializer "^2.0.0" domhandler "^5.0.3" - domutils "^3.1.0" - encoding-sniffer "^0.2.0" - htmlparser2 "^9.1.0" - parse5 "^7.1.2" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" - parse5-parser-stream "^7.1.2" - undici "^6.19.5" - whatwg-mimetype "^4.0.0" chokidar@^3.4.2, chokidar@^3.5.3: version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" @@ -3472,39 +3483,39 @@ chokidar@^3.4.2, chokidar@^3.5.3: chrome-trace-event@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== ci-info@^3.2.0: version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== classnames@^2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz" integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== clean-css@^5.2.2, clean-css@^5.3.2, clean-css@~5.3.2: version "5.3.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz" integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== dependencies: source-map "~0.6.0" clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-boxes@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz" integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== cli-table3@^0.6.3: version "0.6.5" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz" integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== dependencies: string-width "^4.2.0" @@ -3513,7 +3524,7 @@ cli-table3@^0.6.3: clone-deep@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: is-plain-object "^2.0.4" @@ -3522,116 +3533,128 @@ clone-deep@^4.0.1: clsx@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== collapse-white-space@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-2.1.0.tgz#640257174f9f42c740b40f3b55ee752924feefca" + resolved "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz" integrity sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw== +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + colord@^2.9.3: version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== colorette@^2.0.10: version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== combine-promises@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.2.0.tgz#5f2e68451862acf85761ded4d9e2af7769c2ca6a" + resolved "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz" integrity sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" comma-separated-tokens@^1.0.0: version "1.0.8" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== comma-separated-tokens@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz" integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== commander@^10.0.0: version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== commander@^2.20.0: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== commander@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commander@^8.3.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== common-path-prefix@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== -compressible@~2.0.18: +compressible@~2.0.16: version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: mime-db ">= 1.43.0 < 2" compression@^1.7.4: - version "1.8.0" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.0.tgz#09420efc96e11a0f44f3a558de59e321364180f7" - integrity sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA== + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: - bytes "3.1.2" - compressible "~2.0.18" + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" debug "2.6.9" - negotiator "~0.6.4" on-headers "~1.0.2" - safe-buffer "5.2.1" + safe-buffer "5.1.2" vary "~1.1.2" concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== config-chain@^1.1.11: version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: ini "^1.3.4" @@ -3639,7 +3662,7 @@ config-chain@^1.1.11: configstore@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" + resolved "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz" integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== dependencies: dot-prop "^6.0.1" @@ -3650,61 +3673,66 @@ configstore@^6.0.0: connect-history-api-fallback@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== consola@^2.15.3: version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" + resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== content-disposition@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== content-disposition@0.5.4: version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== convert-source-map@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== +cookie@~0.7.2: + version "0.7.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + cookie@0.7.1: version "0.7.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== copy-text-to-clipboard@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz#0202b2d9bdae30a49a53f898626dcc3b49ad960b" + resolved "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz" integrity sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q== copy-to-clipboard@^3.3.1: version "3.3.3" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== dependencies: toggle-selection "^1.0.6" copy-webpack-plugin@^11.0.0: version "11.0.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" + resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz" integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== dependencies: fast-glob "^3.2.11" @@ -3714,31 +3742,31 @@ copy-webpack-plugin@^11.0.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.40.0: - version "3.41.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.41.0.tgz#4cdfce95f39a8f27759b667cf693d96e5dda3d17" - integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A== +core-js-compat@^3.36.1, core-js-compat@^3.37.1: + version "3.37.1" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz" + integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== dependencies: - browserslist "^4.24.4" + browserslist "^4.23.0" core-js-pure@^3.30.2: - version "3.41.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.41.0.tgz#349fecad168d60807a31e83c99d73d786fe80811" - integrity sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q== + version "3.37.1" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.1.tgz" + integrity sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA== core-js@^3.31.1: - version "3.41.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.41.0.tgz#57714dafb8c751a6095d028a7428f1fb5834a776" - integrity sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA== + version "3.37.1" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz" + integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cosmiconfig@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== dependencies: "@types/parse-json" "^4.0.0" @@ -3749,7 +3777,7 @@ cosmiconfig@^6.0.0: cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: version "8.3.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== dependencies: import-fresh "^3.3.0" @@ -3759,7 +3787,7 @@ cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: cross-spawn@^7.0.3: version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" @@ -3768,19 +3796,19 @@ cross-spawn@^7.0.3: crypto-random-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz" integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== dependencies: type-fest "^1.0.1" css-declaration-sorter@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz" integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== css-loader@^6.8.1: version "6.11.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz" integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== dependencies: icss-utils "^5.1.0" @@ -3794,7 +3822,7 @@ css-loader@^6.8.1: css-minimizer-webpack-plugin@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" + resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz" integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== dependencies: "@jridgewell/trace-mapping" "^0.3.18" @@ -3806,7 +3834,7 @@ css-minimizer-webpack-plugin@^5.0.1: css-select@^4.1.3: version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" @@ -3817,7 +3845,7 @@ css-select@^4.1.3: css-select@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: boolbase "^1.0.0" @@ -3828,7 +3856,7 @@ css-select@^5.1.0: css-tree@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== dependencies: mdn-data "2.0.30" @@ -3836,7 +3864,7 @@ css-tree@^2.3.1: css-tree@~2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== dependencies: mdn-data "2.0.28" @@ -3844,22 +3872,22 @@ css-tree@~2.2.0: css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== css.escape@1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== cssesc@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== cssnano-preset-advanced@^6.1.2: version "6.1.2" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz#82b090872b8f98c471f681d541c735acf8b94d3f" + resolved "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz" integrity sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ== dependencies: autoprefixer "^10.4.19" @@ -3872,7 +3900,7 @@ cssnano-preset-advanced@^6.1.2: cssnano-preset-default@^6.1.2: version "6.1.2" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#adf4b89b975aa775f2750c89dbaf199bbd9da35e" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz" integrity sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg== dependencies: browserslist "^4.23.0" @@ -3908,12 +3936,12 @@ cssnano-preset-default@^6.1.2: cssnano-utils@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.2.tgz#56f61c126cd0f11f2eef1596239d730d9fceff3c" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz" integrity sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== cssnano@^6.0.1, cssnano@^6.1.2: version "6.1.2" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.1.2.tgz#4bd19e505bd37ee7cf0dc902d3d869f6d79c66b8" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz" integrity sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== dependencies: cssnano-preset-default "^6.1.2" @@ -3921,74 +3949,81 @@ cssnano@^6.0.1, cssnano@^6.1.2: csso@^5.0.5: version "5.0.5" - resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== dependencies: css-tree "~2.2.0" csstype@^3.0.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== debounce@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== -debug@2.6.9, debug@^2.6.0: +debug@^2.6.0: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== +debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@4: + version "4.3.5" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: - ms "^2.1.3" + ms "2.0.0" decode-named-character-reference@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz#5d6ce68792808901210dac42a8e9853511e2b8bf" - integrity sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w== + version "1.0.2" + resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== dependencies: character-entities "^2.0.0" decompress-response@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: mimic-response "^3.1.0" -deep-extend@0.6.0, deep-extend@^0.6.0: +deep-extend@^0.6.0, deep-extend@0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deepmerge@^4.2.2, deepmerge@^4.3.1, deepmerge@~4.3.0: version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== default-gateway@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== dependencies: execa "^5.0.0" defer-to-connect@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: es-define-property "^1.0.0" @@ -3997,12 +4032,12 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: define-lazy-prop@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: define-data-property "^1.0.1" @@ -4011,7 +4046,7 @@ define-properties@^1.2.1: del@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz" integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== dependencies: globby "^11.0.1" @@ -4025,37 +4060,37 @@ del@^6.1.1: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + dequal@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== destroy@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-node@^2.0.4: version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== detect-port-alt@^1.1.6: version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== dependencies: address "^1.0.1" @@ -4063,7 +4098,7 @@ detect-port-alt@^1.1.6: detect-port@^1.5.1: version "1.6.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.6.1.tgz#45e4073997c5f292b957cb678fb0bb8ed4250a67" + resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz" integrity sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q== dependencies: address "^1.0.1" @@ -4071,35 +4106,35 @@ detect-port@^1.5.1: devlop@^1.0.0, devlop@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz" integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== dependencies: dequal "^2.0.0" dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" dns-packet@^5.2.2: version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" dom-converter@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== dependencies: utila "~0.4" dom-serializer@^1.0.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" @@ -4108,7 +4143,7 @@ dom-serializer@^1.0.1: dom-serializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: domelementtype "^2.3.0" @@ -4117,43 +4152,41 @@ dom-serializer@^2.0.0: domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: domelementtype "^2.3.0" -dompurify@=3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.4.tgz#af5a5a11407524431456cf18836c55d13441cd8e" - integrity sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg== - optionalDependencies: - "@types/trusted-types" "^2.0.7" +dompurify@=3.1.4: + version "3.1.4" + resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.1.4.tgz" + integrity sha512-2gnshi6OshmuKil8rMZuQCGiUF3cUxHY3NGDzUAdUx/NPEe5DVnO8BDoAQouvgwnx0R/+a6jUn36Z0FSdq8vww== domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: dom-serializer "^1.0.1" domelementtype "^2.2.0" domhandler "^4.2.0" -domutils@^3.0.1, domutils@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78" - integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw== +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== dependencies: dom-serializer "^2.0.0" domelementtype "^2.3.0" @@ -4161,7 +4194,7 @@ domutils@^3.0.1, domutils@^3.1.0: dot-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: no-case "^3.0.4" @@ -4169,19 +4202,19 @@ dot-case@^3.0.4: dot-prop@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== dependencies: is-obj "^2.0.0" drange@^1.0.2: version "1.1.1" - resolved "https://registry.yarnpkg.com/drange/-/drange-1.1.1.tgz#b2aecec2aab82fcef11dbbd7b9e32b83f8f6c0b8" + resolved "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz" integrity sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA== dunder-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== dependencies: call-bind-apply-helpers "^1.0.1" @@ -4190,172 +4223,139 @@ dunder-proto@^1.0.1: duplexer@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== eastasianwidth@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.73: - version "1.5.119" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.119.tgz#4e105e419209b33e1c44b4d1b5fc6fb27fac0209" - integrity sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ== + version "1.5.76" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz" + integrity sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.2.2: version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== emojilib@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/emojilib/-/emojilib-2.4.0.tgz#ac518a8bb0d5f76dda57289ccb2fdf9d39ae721e" + resolved "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz" integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== emojis-list@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== emoticon@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-4.1.0.tgz#d5a156868ee173095627a33de3f1e914c3dde79e" - integrity sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ== + version "4.0.1" + resolved "https://registry.npmjs.org/emoticon/-/emoticon-4.0.1.tgz" + integrity sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw== encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== encodeurl@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== -encoding-sniffer@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz#799569d66d443babe82af18c9f403498365ef1d5" - integrity sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg== - dependencies: - iconv-lite "^0.6.3" - whatwg-encoding "^3.1.1" - enhanced-resolve@^5.17.1: - version "5.18.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" - integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== + version "5.18.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz" + integrity sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" entities@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^4.2.0, entities@^4.4.0, entities@^4.5.0: +entities@^4.2.0, entities@^4.4.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es-define-property@^1.0.0, es-define-property@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== es-errors@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-module-lexer@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" - integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" + version "1.5.4" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz" + integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== -es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== dependencies: es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -esast-util-from-estree@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz#8d1cfb51ad534d2f159dc250e604f3478a79f1ad" - integrity sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ== - dependencies: - "@types/estree-jsx" "^1.0.0" - devlop "^1.0.0" - estree-util-visit "^2.0.0" - unist-util-position-from-estree "^2.0.0" - -esast-util-from-js@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz#5147bec34cc9da44accf52f87f239a40ac3e8225" - integrity sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw== - dependencies: - "@types/estree-jsx" "^1.0.0" - acorn "^8.0.0" - esast-util-from-estree "^2.0.0" - vfile-message "^4.0.0" escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-goat@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz" integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escape-string-regexp@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== eslint-scope@5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -4363,36 +4363,36 @@ eslint-scope@5.1.1: esprima@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-util-attach-comments@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz#344bde6a64c8a31d15231e5ee9e297566a691c2d" + resolved "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz" integrity sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw== dependencies: "@types/estree" "^1.0.0" estree-util-build-jsx@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz#b6d0bced1dcc4f06f25cf0ceda2b2dcaf98168f1" + resolved "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz" integrity sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ== dependencies: "@types/estree-jsx" "^1.0.0" @@ -4402,20 +4402,12 @@ estree-util-build-jsx@^3.0.0: estree-util-is-identifier-name@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd" + resolved "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz" integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== -estree-util-scope@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/estree-util-scope/-/estree-util-scope-1.0.0.tgz#9cbdfc77f5cb51e3d9ed4ad9c4adbff22d43e585" - integrity sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ== - dependencies: - "@types/estree" "^1.0.0" - devlop "^1.0.0" - estree-util-to-js@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz#10a6fb924814e6abb62becf0d2bc4dea51d04f17" + resolved "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz" integrity sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg== dependencies: "@types/estree-jsx" "^1.0.0" @@ -4423,15 +4415,15 @@ estree-util-to-js@^2.0.0: source-map "^0.7.0" estree-util-value-to-estree@^3.0.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.3.2.tgz#75bb2263850b6f5ac35edd343929c36b51a69806" - integrity sha512-hYH1aSvQI63Cvq3T3loaem6LW4u72F187zW4FHpTrReJSm6W66vYTFNO1vH/chmcOulp1HlAj1pxn8Ag0oXI5Q== + version "3.1.2" + resolved "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.1.2.tgz" + integrity sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag== dependencies: "@types/estree" "^1.0.0" estree-util-visit@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-2.0.0.tgz#13a9a9f40ff50ed0c022f831ddf4b58d05446feb" + resolved "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz" integrity sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww== dependencies: "@types/estree-jsx" "^1.0.0" @@ -4439,29 +4431,29 @@ estree-util-visit@^2.0.0: estree-walker@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz" integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== dependencies: "@types/estree" "^1.0.0" esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== eta@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/eta/-/eta-2.2.0.tgz#eb8b5f8c4e8b6306561a455e62cd7492fe3a9b8a" + resolved "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz" integrity sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g== etag@~1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== eval@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" + resolved "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz" integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== dependencies: "@types/node" "*" @@ -4469,17 +4461,17 @@ eval@^0.1.8: eventemitter3@^4.0.0: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== events@^3.2.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== execa@^5.0.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -4494,7 +4486,7 @@ execa@^5.0.0: express@^4.17.3: version "4.21.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" + resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== dependencies: accepts "~1.3.8" @@ -4531,85 +4523,85 @@ express@^4.17.3: extend-shallow@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" extend@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + version "3.3.2" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.8" + micromatch "^4.0.4" fast-json-patch@^3.0.0-1: version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" + resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz" integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-uri@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" - integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + version "3.0.1" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz" + integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== fastq@^1.6.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + version "1.17.1" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" fault@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" + resolved "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz" integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== dependencies: format "^0.2.0" fault@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c" + resolved "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz" integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== dependencies: format "^0.2.0" faye-websocket@^0.11.3: version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" feed@^4.2.2: version "4.2.2" - resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" + resolved "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz" integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== dependencies: xml-js "^1.6.11" -file-loader@^6.2.0: +file-loader@*, file-loader@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: loader-utils "^2.0.0" @@ -4617,19 +4609,19 @@ file-loader@^6.2.0: filesize@^8.0.6: version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz" integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== fill-range@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" finalhandler@1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz" integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== dependencies: debug "2.6.9" @@ -4642,7 +4634,7 @@ finalhandler@1.3.1: find-cache-dir@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz" integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== dependencies: common-path-prefix "^3.0.0" @@ -4650,14 +4642,14 @@ find-cache-dir@^4.0.0: find-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -4665,7 +4657,7 @@ find-up@^5.0.0: find-up@^6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" + resolved "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz" integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== dependencies: locate-path "^7.1.0" @@ -4673,17 +4665,17 @@ find-up@^6.3.0: flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== follow-redirects@^1.0.0, follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + version "1.15.6" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== fork-ts-checker-webpack-plugin@^6.5.0: version "6.5.3" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz" integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== dependencies: "@babel/code-frame" "^7.8.3" @@ -4702,43 +4694,42 @@ fork-ts-checker-webpack-plugin@^6.5.0: form-data-encoder@^2.1.2: version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" + resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz" integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== form-data@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c" - integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== + version "4.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" mime-types "^2.1.12" format@^0.2.0: version "0.2.2" - resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" + resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz" integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== forwarded@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fraction.js@^4.3.7: version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== fresh@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== fs-extra@^11.1.1, fs-extra@^11.2.0: - version "11.3.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" - integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== + version "11.2.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -4746,7 +4737,7 @@ fs-extra@^11.1.1, fs-extra@^11.2.0: fs-extra@^9.0.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -4756,40 +4747,40 @@ fs-extra@^9.0.0: fs-monkey@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz" integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6: + version "1.2.7" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz" + integrity sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA== dependencies: - call-bind-apply-helpers "^1.0.2" + call-bind-apply-helpers "^1.0.1" es-define-property "^1.0.1" es-errors "^1.3.0" - es-object-atoms "^1.1.1" + es-object-atoms "^1.0.0" function-bind "^1.1.2" - get-proto "^1.0.1" + get-proto "^1.0.0" gopd "^1.2.0" has-symbols "^1.1.0" hasown "^2.0.2" @@ -4797,12 +4788,12 @@ get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@ get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -get-proto@^1.0.1: +get-proto@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== dependencies: dunder-proto "^1.0.1" @@ -4810,36 +4801,36 @@ get-proto@^1.0.1: get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== github-slugger@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" + resolved "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz" integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.1: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob-to-regexp@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^7.0.0, glob@^7.1.3, glob@^7.1.6: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -4851,21 +4842,21 @@ glob@^7.0.0, glob@^7.1.3, glob@^7.1.6: global-dirs@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== dependencies: ini "2.0.0" global-modules@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== dependencies: global-prefix "^3.0.0" global-prefix@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== dependencies: ini "^1.3.5" @@ -4874,12 +4865,12 @@ global-prefix@^3.0.0: globals@^11.1.0: version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -4891,7 +4882,7 @@ globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: globby@^13.1.1: version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" + resolved "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz" integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== dependencies: dir-glob "^3.0.1" @@ -4902,12 +4893,12 @@ globby@^13.1.1: gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== got@^12.1.0: version "12.6.1" - resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" + resolved "https://registry.npmjs.org/got/-/got-12.6.1.tgz" integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== dependencies: "@sindresorhus/is" "^5.2.0" @@ -4922,19 +4913,19 @@ got@^12.1.0: p-cancelable "^3.0.0" responselike "^3.0.0" -graceful-fs@4.2.10: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + gray-matter@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== dependencies: js-yaml "^3.13.1" @@ -4944,82 +4935,80 @@ gray-matter@^4.0.3: gzip-size@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: duplexer "^0.1.2" handle-thing@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: es-define-property "^1.0.0" has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - has-yarn@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" + resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz" integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== hasown@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" hast-util-from-parse5@^8.0.0: - version "8.0.3" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz#830a35022fff28c3fea3697a98c2f4cc6b835a2e" - integrity sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg== + version "8.0.1" + resolved "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz" + integrity sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ== dependencies: "@types/hast" "^3.0.0" "@types/unist" "^3.0.0" devlop "^1.0.0" - hastscript "^9.0.0" - property-information "^7.0.0" + hastscript "^8.0.0" + property-information "^6.0.0" vfile "^6.0.0" vfile-location "^5.0.0" web-namespaces "^2.0.0" hast-util-parse-selector@^2.0.0: version "2.2.5" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz" integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== hast-util-parse-selector@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27" + resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz" integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== dependencies: "@types/hast" "^3.0.0" hast-util-raw@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.1.0.tgz#79b66b26f6f68fb50dfb4716b2cdca90d92adf2e" - integrity sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw== + version "9.0.4" + resolved "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz" + integrity sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA== dependencies: "@types/hast" "^3.0.0" "@types/unist" "^3.0.0" @@ -5036,9 +5025,9 @@ hast-util-raw@^9.0.0: zwitch "^2.0.0" hast-util-to-estree@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz#e654c1c9374645135695cc0ab9f70b8fcaf733d7" - integrity sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w== + version "3.1.0" + resolved "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz" + integrity sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw== dependencies: "@types/estree" "^1.0.0" "@types/estree-jsx" "^1.0.0" @@ -5051,16 +5040,16 @@ hast-util-to-estree@^3.0.0: mdast-util-mdx-expression "^2.0.0" mdast-util-mdx-jsx "^3.0.0" mdast-util-mdxjs-esm "^2.0.0" - property-information "^7.0.0" + property-information "^6.0.0" space-separated-tokens "^2.0.0" - style-to-js "^1.0.0" + style-to-object "^0.4.0" unist-util-position "^5.0.0" zwitch "^2.0.0" hast-util-to-jsx-runtime@^2.0.0: - version "2.3.6" - resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz#ff31897aae59f62232e21594eac7ef6b63333e98" - integrity sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg== + version "2.3.0" + resolved "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz" + integrity sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ== dependencies: "@types/estree" "^1.0.0" "@types/hast" "^3.0.0" @@ -5072,15 +5061,15 @@ hast-util-to-jsx-runtime@^2.0.0: mdast-util-mdx-expression "^2.0.0" mdast-util-mdx-jsx "^3.0.0" mdast-util-mdxjs-esm "^2.0.0" - property-information "^7.0.0" + property-information "^6.0.0" space-separated-tokens "^2.0.0" - style-to-js "^1.0.0" + style-to-object "^1.0.0" unist-util-position "^5.0.0" vfile-message "^4.0.0" hast-util-to-parse5@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz#477cd42d278d4f036bc2ea58586130f6f39ee6ed" + resolved "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz" integrity sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw== dependencies: "@types/hast" "^3.0.0" @@ -5093,14 +5082,14 @@ hast-util-to-parse5@^8.0.0: hast-util-whitespace@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz" integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== dependencies: "@types/hast" "^3.0.0" hastscript@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + resolved "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz" integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== dependencies: "@types/hast" "^2.0.0" @@ -5109,35 +5098,30 @@ hastscript@^6.0.0: property-information "^5.0.0" space-separated-tokens "^1.0.0" -hastscript@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-9.0.1.tgz#dbc84bef6051d40084342c229c451cd9dc567dff" - integrity sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w== +hastscript@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz" + integrity sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw== dependencies: "@types/hast" "^3.0.0" comma-separated-tokens "^2.0.0" hast-util-parse-selector "^4.0.0" - property-information "^7.0.0" + property-information "^6.0.0" space-separated-tokens "^2.0.0" he@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== highlight.js@^10.4.1, highlight.js@~10.7.0: version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== -highlightjs-vue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz#fdfe97fbea6354e70ee44e3a955875e114db086d" - integrity sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA== - history@^4.9.0: version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + resolved "https://registry.npmjs.org/history/-/history-4.10.1.tgz" integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== dependencies: "@babel/runtime" "^7.1.2" @@ -5149,14 +5133,14 @@ history@^4.9.0: hoist-non-react-statics@^3.1.0: version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" hpack.js@^2.1.6: version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== dependencies: inherits "^2.0.1" @@ -5166,17 +5150,17 @@ hpack.js@^2.1.6: html-entities@^2.3.2: version "2.5.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz" integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== html-escaper@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-minifier-terser@^6.0.2: version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== dependencies: camel-case "^4.1.2" @@ -5189,7 +5173,7 @@ html-minifier-terser@^6.0.2: html-minifier-terser@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz#18752e23a2f0ed4b0f550f217bb41693e975b942" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz" integrity sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA== dependencies: camel-case "^4.1.2" @@ -5202,18 +5186,18 @@ html-minifier-terser@^7.2.0: html-tags@^3.3.1: version "3.3.1" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" + resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz" integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== html-void-elements@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz" integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== html-webpack-plugin@^5.5.3: - version "5.6.3" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz#a31145f0fee4184d53a794f9513147df1e653685" - integrity sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg== + version "5.6.0" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz" + integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== dependencies: "@types/html-minifier-terser" "^6.0.0" html-minifier-terser "^6.0.2" @@ -5223,7 +5207,7 @@ html-webpack-plugin@^5.5.3: htmlparser2@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== dependencies: domelementtype "^2.0.1" @@ -5231,29 +5215,39 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -htmlparser2@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23" - integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ== +htmlparser2@^8.0.1: + version "8.0.2" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== dependencies: domelementtype "^2.3.0" domhandler "^5.0.3" - domutils "^3.1.0" - entities "^4.5.0" + domutils "^3.0.1" + entities "^4.4.0" http-cache-semantics@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-deceiver@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -5262,24 +5256,14 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: - version "0.5.9" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.9.tgz#b817b3ca0edea6236225000d795378707c169cec" - integrity sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw== + version "0.5.8" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== http-proxy-middleware@^2.0.3: version "2.0.7" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz#915f236d92ae98ef48278a95dedf17e991936ec6" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz" integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA== dependencies: "@types/http-proxy" "^1.17.8" @@ -5290,7 +5274,7 @@ http-proxy-middleware@^2.0.3: http-proxy@^1.18.1: version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" @@ -5299,7 +5283,7 @@ http-proxy@^1.18.1: http2-wrapper@^2.1.10: version "2.2.1" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz" integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== dependencies: quick-lru "^5.1.1" @@ -5307,151 +5291,149 @@ http2-wrapper@^2.1.10: human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== iconv-lite@0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.6.3, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^5.2.0, ignore@^5.2.4: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + version "5.3.1" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== image-size@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.2.0.tgz#312af27a2ff4ff58595ad00b9344dd684c910df6" - integrity sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w== + version "1.1.1" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz" + integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== dependencies: queue "6.0.2" immer@^9.0.7: version "9.0.21" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== -immutable@^3.x.x: +"immutable@^3.8.1 || ^4.0.0-rc.1", immutable@^3.x.x, "immutable@>= 2 || >= 4.0.0-rc", immutable@>=3.6.2: version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + resolved "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz" integrity sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg== import-fresh@^3.1.0, import-fresh@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" - integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" import-lazy@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz" integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== infima@0.2.0-alpha.43: version "0.2.0-alpha.43" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.43.tgz#f7aa1d7b30b6c08afef441c726bac6150228cbe0" + resolved "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz" integrity sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + ini@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -inline-style-parser@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.4.tgz#f4af5fe72e612839fcd453d989a586566d695f22" - integrity sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q== +inline-style-parser@0.2.3: + version "0.2.3" + resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz" + integrity sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g== interpret@^1.0.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - ipaddr.js@^2.0.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-alphabetical@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== is-alphabetical@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz" integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== is-alphanumerical@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== dependencies: is-alphabetical "^1.0.0" @@ -5459,7 +5441,7 @@ is-alphanumerical@^1.0.0: is-alphanumerical@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz" integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== dependencies: is-alphabetical "^2.0.0" @@ -5467,80 +5449,80 @@ is-alphanumerical@^2.0.0: is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-ci@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: ci-info "^3.2.0" -is-core-module@^2.16.0: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== +is-core-module@^2.13.0: + version "2.15.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz" + integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== dependencies: hasown "^2.0.2" is-decimal@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== is-decimal@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz" integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extendable@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-hexadecimal@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== is-hexadecimal@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz" integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== is-installed-globally@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: global-dirs "^3.0.0" @@ -5548,106 +5530,113 @@ is-installed-globally@^0.4.0: is-npm@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz" integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== is-obj@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== is-path-cwd@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== is-path-inside@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== is-plain-obj@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz" integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" +is-reference@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz" + integrity sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg== + dependencies: + "@types/estree" "*" + is-regexp@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== is-root@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-typedarray@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" is-yarn-global@^0.4.0: version "0.4.1" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" + resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz" integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== jest-util@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: "@jest/types" "^29.6.3" @@ -5659,7 +5648,7 @@ jest-util@^29.7.0: jest-worker@^27.4.5: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" @@ -5668,7 +5657,7 @@ jest-worker@^27.4.5: jest-worker@^29.4.3: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" @@ -5677,13 +5666,13 @@ jest-worker@^29.4.3: supports-color "^8.0.0" jiti@^1.20.0: - version "1.21.7" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9" - integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== + version "1.21.6" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== joi@^17.9.2: version "17.13.3" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" + resolved "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz" integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== dependencies: "@hapi/hoek" "^9.3.0" @@ -5694,67 +5683,67 @@ joi@^17.9.2: js-file-download@^0.4.12: version "0.4.12" - resolved "https://registry.yarnpkg.com/js-file-download/-/js-file-download-0.4.12.tgz#10c70ef362559a5b23cdbdc3bd6f399c3d91d821" + resolved "https://registry.npmjs.org/js-file-download/-/js-file-download-0.4.12.tgz" integrity sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@=4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" -jsesc@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" - integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== +js-yaml@^4.1.0, js-yaml@=4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" -jsesc@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-buffer@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json5@^2.1.2, json5@^2.2.3: version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -5763,59 +5752,59 @@ jsonfile@^6.0.1: keyv@^4.5.3: version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== latest-version@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz" integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== dependencies: package-json "^8.1.0" launch-editor@^2.6.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.10.0.tgz#5ca3edfcb9667df1e8721310f3a40f1127d4bc42" - integrity sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA== + version "2.8.0" + resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz" + integrity sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA== dependencies: picocolors "^1.0.0" shell-quote "^1.8.1" leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== lilconfig@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" - integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== + version "3.1.2" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz" + integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== loader-runner@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^2.0.0: version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" @@ -5824,12 +5813,12 @@ loader-utils@^2.0.0: loader-utils@^3.2.0: version "3.3.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz" integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== locate-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" @@ -5837,65 +5826,65 @@ locate-path@^3.0.0: locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" locate-path@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== dependencies: p-locate "^6.0.0" lodash.debounce@^4, lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.memoize@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== lodash.uniq@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash@^4.15.0, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== longest-streak@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" + resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz" integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" lower-case@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: tslib "^2.0.3" lowercase-keys@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== lowlight@^1.17.0: version "1.20.0" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888" + resolved "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz" integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw== dependencies: fault "^1.0.0" @@ -5903,34 +5892,33 @@ lowlight@^1.17.0: lru-cache@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" markdown-extensions@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4" + resolved "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz" integrity sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== markdown-table@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" - integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== + version "3.0.3" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz" + integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== math-intrinsics@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== mdast-util-directive@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz#f3656f4aab6ae3767d3c72cfab5e8055572ccba1" - integrity sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q== + version "3.0.0" + resolved "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz" + integrity sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q== dependencies: "@types/mdast" "^4.0.0" "@types/unist" "^3.0.0" - ccount "^2.0.0" devlop "^1.0.0" mdast-util-from-markdown "^2.0.0" mdast-util-to-markdown "^2.0.0" @@ -5939,9 +5927,9 @@ mdast-util-directive@^3.0.0: unist-util-visit-parents "^6.0.0" mdast-util-find-and-replace@^3.0.0, mdast-util-find-and-replace@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz#70a3174c894e14df722abf43bc250cbae44b11df" - integrity sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg== + version "3.0.1" + resolved "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz" + integrity sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA== dependencies: "@types/mdast" "^4.0.0" escape-string-regexp "^5.0.0" @@ -5949,9 +5937,9 @@ mdast-util-find-and-replace@^3.0.0, mdast-util-find-and-replace@^3.0.1: unist-util-visit-parents "^6.0.0" mdast-util-from-markdown@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a" - integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA== + version "2.0.1" + resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz" + integrity sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA== dependencies: "@types/mdast" "^4.0.0" "@types/unist" "^3.0.0" @@ -5968,7 +5956,7 @@ mdast-util-from-markdown@^2.0.0: mdast-util-frontmatter@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz#f5f929eb1eb36c8a7737475c7eb438261f964ee8" + resolved "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz" integrity sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA== dependencies: "@types/mdast" "^4.0.0" @@ -5979,9 +5967,9 @@ mdast-util-frontmatter@^2.0.0: micromark-extension-frontmatter "^2.0.0" mdast-util-gfm-autolink-literal@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz#abd557630337bd30a6d5a4bd8252e1c2dc0875d5" - integrity sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ== + version "2.0.0" + resolved "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz" + integrity sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg== dependencies: "@types/mdast" "^4.0.0" ccount "^2.0.0" @@ -5990,9 +5978,9 @@ mdast-util-gfm-autolink-literal@^2.0.0: micromark-util-character "^2.0.0" mdast-util-gfm-footnote@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz#7778e9d9ca3df7238cc2bd3fa2b1bf6a65b19403" - integrity sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ== + version "2.0.0" + resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz" + integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== dependencies: "@types/mdast" "^4.0.0" devlop "^1.1.0" @@ -6002,7 +5990,7 @@ mdast-util-gfm-footnote@^2.0.0: mdast-util-gfm-strikethrough@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" + resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz" integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== dependencies: "@types/mdast" "^4.0.0" @@ -6011,7 +5999,7 @@ mdast-util-gfm-strikethrough@^2.0.0: mdast-util-gfm-table@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" + resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz" integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== dependencies: "@types/mdast" "^4.0.0" @@ -6022,7 +6010,7 @@ mdast-util-gfm-table@^2.0.0: mdast-util-gfm-task-list-item@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" + resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz" integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== dependencies: "@types/mdast" "^4.0.0" @@ -6031,9 +6019,9 @@ mdast-util-gfm-task-list-item@^2.0.0: mdast-util-to-markdown "^2.0.0" mdast-util-gfm@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz#2cdf63b92c2a331406b0fb0db4c077c1b0331751" - integrity sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ== + version "3.0.0" + resolved "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz" + integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== dependencies: mdast-util-from-markdown "^2.0.0" mdast-util-gfm-autolink-literal "^2.0.0" @@ -6044,9 +6032,9 @@ mdast-util-gfm@^3.0.0: mdast-util-to-markdown "^2.0.0" mdast-util-mdx-expression@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz#43f0abac9adc756e2086f63822a38c8d3c3a5096" - integrity sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ== + version "2.0.0" + resolved "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz" + integrity sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw== dependencies: "@types/estree-jsx" "^1.0.0" "@types/hast" "^3.0.0" @@ -6056,9 +6044,9 @@ mdast-util-mdx-expression@^2.0.0: mdast-util-to-markdown "^2.0.0" mdast-util-mdx-jsx@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz#fd04c67a2a7499efb905a8a5c578dddc9fdada0d" - integrity sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q== + version "3.1.2" + resolved "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz" + integrity sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA== dependencies: "@types/estree-jsx" "^1.0.0" "@types/hast" "^3.0.0" @@ -6070,12 +6058,13 @@ mdast-util-mdx-jsx@^3.0.0: mdast-util-to-markdown "^2.0.0" parse-entities "^4.0.0" stringify-entities "^4.0.0" + unist-util-remove-position "^5.0.0" unist-util-stringify-position "^4.0.0" vfile-message "^4.0.0" mdast-util-mdx@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz#792f9cf0361b46bee1fdf1ef36beac424a099c41" + resolved "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz" integrity sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w== dependencies: mdast-util-from-markdown "^2.0.0" @@ -6086,7 +6075,7 @@ mdast-util-mdx@^3.0.0: mdast-util-mdxjs-esm@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz#019cfbe757ad62dd557db35a695e7314bcc9fa97" + resolved "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz" integrity sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg== dependencies: "@types/estree-jsx" "^1.0.0" @@ -6098,7 +6087,7 @@ mdast-util-mdxjs-esm@^2.0.0: mdast-util-phrasing@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz#7cc0a8dec30eaf04b7b1a9661a92adb3382aa6e3" + resolved "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz" integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w== dependencies: "@types/mdast" "^4.0.0" @@ -6106,7 +6095,7 @@ mdast-util-phrasing@^4.0.0: mdast-util-to-hast@^13.0.0: version "13.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" + resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz" integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== dependencies: "@types/hast" "^3.0.0" @@ -6120,73 +6109,72 @@ mdast-util-to-hast@^13.0.0: vfile "^6.0.0" mdast-util-to-markdown@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz#f910ffe60897f04bb4b7e7ee434486f76288361b" - integrity sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA== + version "2.1.0" + resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz" + integrity sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ== dependencies: "@types/mdast" "^4.0.0" "@types/unist" "^3.0.0" longest-streak "^3.0.0" mdast-util-phrasing "^4.0.0" mdast-util-to-string "^4.0.0" - micromark-util-classify-character "^2.0.0" micromark-util-decode-string "^2.0.0" unist-util-visit "^5.0.0" zwitch "^2.0.0" mdast-util-to-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" + resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz" integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== dependencies: "@types/mdast" "^4.0.0" mdn-data@2.0.28: version "2.0.28" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== mdn-data@2.0.30: version "2.0.30" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== media-typer@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^3.1.2, memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + version "3.5.3" + resolved "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz" + integrity sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw== dependencies: fs-monkey "^1.0.4" merge-descriptors@1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromark-core-commonmark@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz#c691630e485021a68cf28dbc2b2ca27ebf678cd4" - integrity sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg== + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz" + integrity sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA== dependencies: decode-named-character-reference "^1.0.0" devlop "^1.0.0" @@ -6206,9 +6194,9 @@ micromark-core-commonmark@^2.0.0: micromark-util-types "^2.0.0" micromark-extension-directive@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz#2eb61985d1995a7c1ff7621676a4f32af29409e8" - integrity sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA== + version "3.0.1" + resolved "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.1.tgz" + integrity sha512-VGV2uxUzhEZmaP7NSFo2vtq7M2nUD+WfmYQD+d8i/1nHbzE+rMy9uzTvUybBbNiVbrhOZibg3gbyoARGqgDWyg== dependencies: devlop "^1.0.0" micromark-factory-space "^2.0.0" @@ -6220,7 +6208,7 @@ micromark-extension-directive@^3.0.0: micromark-extension-frontmatter@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz#651c52ffa5d7a8eeed687c513cd869885882d67a" + resolved "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz" integrity sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg== dependencies: fault "^2.0.0" @@ -6230,7 +6218,7 @@ micromark-extension-frontmatter@^2.0.0: micromark-extension-gfm-autolink-literal@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" + resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz" integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== dependencies: micromark-util-character "^2.0.0" @@ -6240,7 +6228,7 @@ micromark-extension-gfm-autolink-literal@^2.0.0: micromark-extension-gfm-footnote@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" + resolved "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz" integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== dependencies: devlop "^1.0.0" @@ -6254,7 +6242,7 @@ micromark-extension-gfm-footnote@^2.0.0: micromark-extension-gfm-strikethrough@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz#86106df8b3a692b5f6a92280d3879be6be46d923" + resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz" integrity sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw== dependencies: devlop "^1.0.0" @@ -6265,9 +6253,9 @@ micromark-extension-gfm-strikethrough@^2.0.0: micromark-util-types "^2.0.0" micromark-extension-gfm-table@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz#fac70bcbf51fe65f5f44033118d39be8a9b5940b" - integrity sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg== + version "2.1.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz" + integrity sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g== dependencies: devlop "^1.0.0" micromark-factory-space "^2.0.0" @@ -6277,14 +6265,14 @@ micromark-extension-gfm-table@^2.0.0: micromark-extension-gfm-tagfilter@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" + resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz" integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== dependencies: micromark-util-types "^2.0.0" micromark-extension-gfm-task-list-item@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz#bcc34d805639829990ec175c3eea12bb5b781f2c" + resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz" integrity sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw== dependencies: devlop "^1.0.0" @@ -6295,7 +6283,7 @@ micromark-extension-gfm-task-list-item@^2.0.0: micromark-extension-gfm@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" + resolved "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz" integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== dependencies: micromark-extension-gfm-autolink-literal "^2.0.0" @@ -6309,7 +6297,7 @@ micromark-extension-gfm@^3.0.0: micromark-extension-mdx-expression@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz#1407b9ce69916cf5e03a196ad9586889df25302a" + resolved "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz" integrity sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ== dependencies: "@types/estree" "^1.0.0" @@ -6322,9 +6310,9 @@ micromark-extension-mdx-expression@^3.0.0: micromark-util-types "^2.0.0" micromark-extension-mdx-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz#5abb83da5ddc8e473a374453e6ea56fbd66b59ad" - integrity sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg== + version "3.0.0" + resolved "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz" + integrity sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w== dependencies: "@types/acorn" "^4.0.0" "@types/estree" "^1.0.0" @@ -6333,21 +6321,20 @@ micromark-extension-mdx-jsx@^3.0.0: micromark-factory-mdx-expression "^2.0.0" micromark-factory-space "^2.0.0" micromark-util-character "^2.0.0" - micromark-util-events-to-acorn "^2.0.0" micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" vfile-message "^4.0.0" micromark-extension-mdx-md@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz#1d252881ea35d74698423ab44917e1f5b197b92d" + resolved "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz" integrity sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ== dependencies: micromark-util-types "^2.0.0" micromark-extension-mdxjs-esm@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz#de21b2b045fd2059bd00d36746081de38390d54a" + resolved "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz" integrity sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A== dependencies: "@types/estree" "^1.0.0" @@ -6362,7 +6349,7 @@ micromark-extension-mdxjs-esm@^3.0.0: micromark-extension-mdxjs@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz#b5a2e0ed449288f3f6f6c544358159557549de18" + resolved "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz" integrity sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ== dependencies: acorn "^8.0.0" @@ -6375,18 +6362,18 @@ micromark-extension-mdxjs@^3.0.0: micromark-util-types "^2.0.0" micromark-factory-destination@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" - integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz" + integrity sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA== dependencies: micromark-util-character "^2.0.0" micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" micromark-factory-label@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz#5267efa97f1e5254efc7f20b459a38cb21058ba1" - integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz" + integrity sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw== dependencies: devlop "^1.0.0" micromark-util-character "^2.0.0" @@ -6394,13 +6381,12 @@ micromark-factory-label@^2.0.0: micromark-util-types "^2.0.0" micromark-factory-mdx-expression@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz#2afaa8ba6d5f63e0cead3e4dee643cad184ca260" - integrity sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw== + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz" + integrity sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg== dependencies: "@types/estree" "^1.0.0" devlop "^1.0.0" - micromark-factory-space "^2.0.0" micromark-util-character "^2.0.0" micromark-util-events-to-acorn "^2.0.0" micromark-util-symbol "^2.0.0" @@ -6410,24 +6396,24 @@ micromark-factory-mdx-expression@^2.0.0: micromark-factory-space@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" + resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz" integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== dependencies: micromark-util-character "^1.0.0" micromark-util-types "^1.0.0" micromark-factory-space@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz#36d0212e962b2b3121f8525fc7a3c7c029f334fc" - integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz" + integrity sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg== dependencies: micromark-util-character "^2.0.0" micromark-util-types "^2.0.0" micromark-factory-title@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz#237e4aa5d58a95863f01032d9ee9b090f1de6e94" - integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz" + integrity sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A== dependencies: micromark-factory-space "^2.0.0" micromark-util-character "^2.0.0" @@ -6435,9 +6421,9 @@ micromark-factory-title@^2.0.0: micromark-util-types "^2.0.0" micromark-factory-whitespace@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz#06b26b2983c4d27bfcc657b33e25134d4868b0b1" - integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz" + integrity sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA== dependencies: micromark-factory-space "^2.0.0" micromark-util-character "^2.0.0" @@ -6446,55 +6432,55 @@ micromark-factory-whitespace@^2.0.0: micromark-util-character@^1.0.0, micromark-util-character@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" + resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz" integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== dependencies: micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" micromark-util-character@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" - integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== + version "2.1.0" + resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz" + integrity sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ== dependencies: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" micromark-util-chunked@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz#47fbcd93471a3fccab86cff03847fc3552db1051" - integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz" + integrity sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg== dependencies: micromark-util-symbol "^2.0.0" micromark-util-classify-character@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz#d399faf9c45ca14c8b4be98b1ea481bced87b629" - integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz" + integrity sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw== dependencies: micromark-util-character "^2.0.0" micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" micromark-util-combine-extensions@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz#2a0f490ab08bff5cc2fd5eec6dd0ca04f89b30a9" - integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz" + integrity sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ== dependencies: micromark-util-chunked "^2.0.0" micromark-util-types "^2.0.0" micromark-util-decode-numeric-character-reference@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz#fcf15b660979388e6f118cdb6bf7d79d73d26fe5" - integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw== + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz" + integrity sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ== dependencies: micromark-util-symbol "^2.0.0" micromark-util-decode-string@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz#6cb99582e5d271e84efca8e61a807994d7161eb2" - integrity sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz" + integrity sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA== dependencies: decode-named-character-reference "^1.0.0" micromark-util-character "^2.0.0" @@ -6502,13 +6488,13 @@ micromark-util-decode-string@^2.0.0: micromark-util-symbol "^2.0.0" micromark-util-encode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" - integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz" + integrity sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA== micromark-util-events-to-acorn@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz#4275834f5453c088bd29cd72dfbf80e3327cec07" + resolved "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz" integrity sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA== dependencies: "@types/acorn" "^4.0.0" @@ -6521,37 +6507,37 @@ micromark-util-events-to-acorn@^2.0.0: vfile-message "^4.0.0" micromark-util-html-tag-name@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz#e40403096481986b41c106627f98f72d4d10b825" - integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz" + integrity sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw== micromark-util-normalize-identifier@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz#c30d77b2e832acf6526f8bf1aa47bc9c9438c16d" - integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz" + integrity sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w== dependencies: micromark-util-symbol "^2.0.0" micromark-util-resolve-all@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz#e1a2d62cdd237230a2ae11839027b19381e31e8b" - integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz" + integrity sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA== dependencies: micromark-util-types "^2.0.0" micromark-util-sanitize-uri@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" - integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz" + integrity sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw== dependencies: micromark-util-character "^2.0.0" micromark-util-encode "^2.0.0" micromark-util-symbol "^2.0.0" micromark-util-subtokenize@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz#d8ade5ba0f3197a1cf6a2999fbbfe6357a1a19ee" - integrity sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA== + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz" + integrity sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q== dependencies: devlop "^1.0.0" micromark-util-chunked "^2.0.0" @@ -6560,28 +6546,28 @@ micromark-util-subtokenize@^2.0.0: micromark-util-symbol@^1.0.0, micromark-util-symbol@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" + resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz" integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== micromark-util-symbol@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" - integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz" + integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== micromark-util-types@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz" integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== micromark-util-types@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz#f00225f5f5a0ebc3254f96c36b6605c4b393908e" - integrity sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA== + version "2.0.0" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz" + integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== micromark@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.2.tgz#91395a3e1884a198e62116e33c9c568e39936fdb" - integrity sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA== + version "4.0.0" + resolved "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz" + integrity sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ== dependencies: "@types/debug" "^4.0.0" debug "^4.0.0" @@ -6601,153 +6587,174 @@ micromark@^4.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromatch@^4.0.2, micromatch@^4.0.5, micromatch@^4.0.8: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: braces "^3.0.3" picomatch "^2.3.1" -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - "mime-db@>= 1.43.0 < 2": version "1.53.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz" integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== mime-db@~1.33.0: version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz" integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== -mime-types@2.1.18: +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@2.1.18: version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz" integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== dependencies: mime-db "~1.33.0" -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.27: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@^2.1.31: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@~2.1.24: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mimic-response@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== mimic-response@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz" integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== mini-css-extract-plugin@^2.7.6: - version "2.9.2" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz#966031b468917a5446f4c24a80854b2947503c5b" - integrity sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w== + version "2.9.0" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz" + integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA== dependencies: schema-utils "^4.0.0" tapable "^2.2.1" minim@~0.23.8: version "0.23.8" - resolved "https://registry.yarnpkg.com/minim/-/minim-0.23.8.tgz#a529837afe1654f119dfb68ce7487dd8d4866b9c" + resolved "https://registry.npmjs.org/minim/-/minim-0.23.8.tgz" integrity sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww== dependencies: lodash "^4.15.0" minimalistic-assert@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^7.4.3: version "7.4.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz" integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== dependencies: brace-expansion "^2.0.1" minimist@^1.2.0: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mrmime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc" - integrity sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ== + version "2.0.0" + resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz" + integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.3, ms@^2.1.3: +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multicast-dns@^7.2.5: version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.8: - version "3.3.10" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.10.tgz#7bc882237698ef787d5cbba109e3b0168ba6e7b1" - integrity sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg== +nanoid@^3.3.7: + version "3.3.8" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== negotiator@0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -negotiator@~0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" - integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== - neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== neotraverse@=0.6.18: version "0.6.18" - resolved "https://registry.yarnpkg.com/neotraverse/-/neotraverse-0.6.18.tgz#abcb33dda2e8e713cf6321b29405e822230cdb30" + resolved "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz" integrity sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA== no-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: lower-case "^2.0.2" @@ -6755,23 +6762,23 @@ no-case@^3.0.4: node-abort-controller@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== -node-addon-api@^8.2.1, node-addon-api@^8.2.2, node-addon-api@^8.3.0: - version "8.3.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-8.3.1.tgz#53bc8a4f8dbde3de787b9828059da94ba9fd4eed" - integrity sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA== +node-addon-api@^8.0.0, node-addon-api@^8.2.1, node-addon-api@^8.2.2, node-addon-api@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.0.tgz" + integrity sha512-8VOpLHFrOQlAH+qA0ZzuGRlALRA6/LVh8QJldbrC4DY0hXoMP0l4Acq8TzFC018HztWiRqyCEj2aTWY2UvnJUg== node-domexception@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== node-emoji@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.2.0.tgz#1d000e3c76e462577895be1b436f4aa2d6760eb0" - integrity sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw== + version "2.1.3" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz" + integrity sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA== dependencies: "@sindresorhus/is" "^4.6.0" char-regex "^1.0.2" @@ -6780,7 +6787,7 @@ node-emoji@^2.1.0: node-fetch-commonjs@^3.3.2: version "3.3.2" - resolved "https://registry.yarnpkg.com/node-fetch-commonjs/-/node-fetch-commonjs-3.3.2.tgz#0dd0fd4c4a314c5234f496ff7b5d9ce5a6c8feaa" + resolved "https://registry.npmjs.org/node-fetch-commonjs/-/node-fetch-commonjs-3.3.2.tgz" integrity sha512-VBlAiynj3VMLrotgwOS3OyECFxas5y7ltLcK4t41lMUZeaK15Ym4QRkqN0EQKAFL42q9i21EPKjzLUPfltR72A== dependencies: node-domexception "^1.0.0" @@ -6788,196 +6795,194 @@ node-fetch-commonjs@^3.3.2: node-forge@^1: version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-gyp-build@^4.8.2, node-gyp-build@^4.8.4: +node-gyp-build@^4.8.0, node-gyp-build@^4.8.2, node-gyp-build@^4.8.4: version "4.8.4" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz" integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== node-releases@^2.0.19: version "2.0.19" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-range@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== normalize-url@^8.0.0: version "8.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz" integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w== npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" nprogress@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + resolved "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz" integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== nth-check@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.13.3: - version "1.13.4" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + version "1.13.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz" + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object.assign@^4.1.0: - version "4.1.7" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" - integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + version "4.1.5" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" + call-bind "^1.0.5" define-properties "^1.2.1" - es-object-atoms "^1.0.0" - has-symbols "^1.1.0" + has-symbols "^1.0.3" object-keys "^1.1.1" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== on-finished@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" on-headers@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== once@^1.3.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" open@^8.0.9, open@^8.4.0: version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" is-wsl "^2.2.0" -openapi-path-templating@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/openapi-path-templating/-/openapi-path-templating-2.2.1.tgz#57026767530667096d33d7362382a93d75d497f6" - integrity sha512-eN14VrDvl/YyGxxrkGOHkVkWEoPyhyeydOUrbvjoz8K5eIGgELASwN1eqFOJ2CTQMGCy2EntOK1KdtJ8ZMekcg== +openapi-path-templating@^2.0.1: + version "2.1.0" + resolved "https://registry.npmjs.org/openapi-path-templating/-/openapi-path-templating-2.1.0.tgz" + integrity sha512-fLs5eJmLyU8wPRz+JSH5uLE7TE4Ohg6VHOtj0C0AlD3GTCCcw2LgKW6MSN1A8ZBKHEg2O4/d02knmVU1nvGAKQ== dependencies: apg-lite "^1.0.4" -openapi-server-url-templating@^1.3.0: +openapi-server-url-templating@^1.2.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/openapi-server-url-templating/-/openapi-server-url-templating-1.3.0.tgz#80bc6ea5209a3c4fe9d359673ba51635676e2503" + resolved "https://registry.npmjs.org/openapi-server-url-templating/-/openapi-server-url-templating-1.3.0.tgz" integrity sha512-DPlCms3KKEbjVQb0spV6Awfn6UWNheuG/+folQPzh/wUaKwuqvj8zt5gagD7qoyxtE03cIiKPgLFS3Q8Bz00uQ== dependencies: apg-lite "^1.0.4" opener@^1.5.2: version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== p-cancelable@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== p-limit@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-limit@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== dependencies: yocto-queue "^1.0.0" p-locate@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-locate@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== dependencies: p-limit "^4.0.0" p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-retry@^4.5.0: version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: "@types/retry" "0.12.0" @@ -6985,12 +6990,12 @@ p-retry@^4.5.0: p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== package-json@^8.1.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" + resolved "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz" integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== dependencies: got "^12.1.0" @@ -7000,7 +7005,7 @@ package-json@^8.1.0: param-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: dot-case "^3.0.4" @@ -7008,14 +7013,14 @@ param-case@^3.0.4: parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-entities@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== dependencies: character-entities "^1.0.0" @@ -7026,11 +7031,12 @@ parse-entities@^2.0.0: is-hexadecimal "^1.0.0" parse-entities@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.2.tgz#61d46f5ed28e4ee62e9ddc43d6b010188443f159" - integrity sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw== + version "4.0.1" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz" + integrity sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w== dependencies: "@types/unist" "^2.0.0" + character-entities "^2.0.0" character-entities-legacy "^3.0.0" character-reference-invalid "^2.0.0" decode-named-character-reference "^1.0.0" @@ -7040,7 +7046,7 @@ parse-entities@^4.0.0: parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -7050,39 +7056,32 @@ parse-json@^5.0.0, parse-json@^5.2.0: parse-numeric-range@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" + resolved "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz" integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz#b5a806548ed893a43e24ccb42fbb78069311e81b" - integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g== + version "7.0.0" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== dependencies: - domhandler "^5.0.3" + domhandler "^5.0.2" parse5 "^7.0.0" -parse5-parser-stream@^7.1.2: +parse5@^7.0.0: version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz#d7c20eadc37968d272e2c02660fff92dd27e60e1" - integrity sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow== - dependencies: - parse5 "^7.0.0" - -parse5@^7.0.0, parse5@^7.1.2: - version "7.2.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a" - integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: - entities "^4.5.0" + entities "^4.4.0" parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascal-case@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: no-case "^3.0.4" @@ -7090,88 +7089,97 @@ pascal-case@^3.1.2: path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-exists@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-is-inside@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-to-regexp@^1.7.0: + version "1.9.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz" + integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== + dependencies: + isarray "0.0.1" + path-to-regexp@0.1.12: version "0.1.12" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== path-to-regexp@3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.3.0.tgz#f7f31d32e8518c2660862b644414b6d5c63a611b" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz" integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== -path-to-regexp@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.9.0.tgz#5dc0753acbf8521ca2e0f137b4578b917b10cf24" - integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== - dependencies: - isarray "0.0.1" - path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1.0.0, picocolors@^1.1.1: +periscopic@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz" + integrity sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^3.0.0" + is-reference "^3.0.0" + +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pkg-dir@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz" integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== dependencies: find-up "^6.3.0" pkg-up@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: find-up "^3.0.0" postcss-calc@^9.0.1: version "9.0.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz" integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== dependencies: postcss-selector-parser "^6.0.11" @@ -7179,7 +7187,7 @@ postcss-calc@^9.0.1: postcss-colormin@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.1.0.tgz#076e8d3fb291fbff7b10e6b063be9da42ff6488d" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz" integrity sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== dependencies: browserslist "^4.23.0" @@ -7189,7 +7197,7 @@ postcss-colormin@^6.1.0: postcss-convert-values@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#3498387f8efedb817cbc63901d45bd1ceaa40f48" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz" integrity sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== dependencies: browserslist "^4.23.0" @@ -7197,34 +7205,34 @@ postcss-convert-values@^6.1.0: postcss-discard-comments@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz" integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== postcss-discard-duplicates@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#d121e893c38dc58a67277f75bb58ba43fce4c3eb" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz" integrity sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== postcss-discard-empty@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#ee39c327219bb70473a066f772621f81435a79d9" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz" integrity sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== postcss-discard-overridden@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#4e9f9c62ecd2df46e8fdb44dc17e189776572e2d" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz" integrity sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== postcss-discard-unused@^6.0.5: version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz#c1b0e8c032c6054c3fbd22aaddba5b248136f338" + resolved "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz" integrity sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA== dependencies: postcss-selector-parser "^6.0.16" postcss-loader@^7.3.3: version "7.3.4" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.4.tgz#aed9b79ce4ed7e9e89e56199d25ad1ec8f606209" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz" integrity sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A== dependencies: cosmiconfig "^8.3.5" @@ -7233,7 +7241,7 @@ postcss-loader@^7.3.3: postcss-merge-idents@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz#7b9c31c7bc823c94bec50f297f04e3c2b838ea65" + resolved "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz" integrity sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g== dependencies: cssnano-utils "^4.0.2" @@ -7241,7 +7249,7 @@ postcss-merge-idents@^6.0.3: postcss-merge-longhand@^6.0.5: version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#ba8a8d473617c34a36abbea8dda2b215750a065a" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz" integrity sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== dependencies: postcss-value-parser "^4.2.0" @@ -7249,7 +7257,7 @@ postcss-merge-longhand@^6.0.5: postcss-merge-rules@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#7aa539dceddab56019469c0edd7d22b64c3dea9d" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz" integrity sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== dependencies: browserslist "^4.23.0" @@ -7259,14 +7267,14 @@ postcss-merge-rules@^6.1.1: postcss-minify-font-values@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#a0e574c02ee3f299be2846369211f3b957ea4c59" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz" integrity sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== dependencies: postcss-value-parser "^4.2.0" postcss-minify-gradients@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#ca3eb55a7bdb48a1e187a55c6377be918743dbd6" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz" integrity sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== dependencies: colord "^2.9.3" @@ -7275,7 +7283,7 @@ postcss-minify-gradients@^6.0.3: postcss-minify-params@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#54551dec77b9a45a29c3cb5953bf7325a399ba08" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz" integrity sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== dependencies: browserslist "^4.23.0" @@ -7284,82 +7292,82 @@ postcss-minify-params@^6.1.0: postcss-minify-selectors@^6.0.4: version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#197f7d72e6dd19eed47916d575d69dc38b396aff" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz" integrity sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== dependencies: postcss-selector-parser "^6.0.16" postcss-modules-extract-imports@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz" integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== postcss-modules-local-by-default@^4.0.5: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" - integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== + version "4.0.5" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz" + integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== dependencies: icss-utils "^5.0.0" - postcss-selector-parser "^7.0.0" + postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" postcss-modules-scope@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" - integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== + version "3.2.0" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz" + integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== dependencies: - postcss-selector-parser "^7.0.0" + postcss-selector-parser "^6.0.4" postcss-modules-values@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: icss-utils "^5.0.0" postcss-normalize-charset@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#1ec25c435057a8001dac942942a95ffe66f721e1" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz" integrity sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== postcss-normalize-display-values@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#54f02764fed0b288d5363cbb140d6950dbbdd535" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz" integrity sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-positions@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#e982d284ec878b9b819796266f640852dbbb723a" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz" integrity sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-repeat-style@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#f8006942fd0617c73f049dd8b6201c3a3040ecf3" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz" integrity sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-string@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#e3cc6ad5c95581acd1fc8774b309dd7c06e5e363" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz" integrity sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-timing-functions@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#40cb8726cef999de984527cbd9d1db1f3e9062c0" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz" integrity sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-unicode@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#aaf8bbd34c306e230777e80f7f12a4b7d27ce06e" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz" integrity sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== dependencies: browserslist "^4.23.0" @@ -7367,21 +7375,21 @@ postcss-normalize-unicode@^6.1.0: postcss-normalize-url@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#292792386be51a8de9a454cb7b5c58ae22db0f79" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz" integrity sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-whitespace@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#fbb009e6ebd312f8b2efb225c2fcc7cf32b400cd" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz" integrity sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== dependencies: postcss-value-parser "^4.2.0" postcss-ordered-values@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#366bb663919707093451ab70c3f99c05672aaae5" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz" integrity sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== dependencies: cssnano-utils "^4.0.2" @@ -7389,14 +7397,14 @@ postcss-ordered-values@^6.0.2: postcss-reduce-idents@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz#b0d9c84316d2a547714ebab523ec7d13704cd486" + resolved "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz" integrity sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA== dependencies: postcss-value-parser "^4.2.0" postcss-reduce-initial@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#4401297d8e35cb6e92c8e9586963e267105586ba" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz" integrity sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== dependencies: browserslist "^4.23.0" @@ -7404,37 +7412,29 @@ postcss-reduce-initial@^6.1.0: postcss-reduce-transforms@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#6fa2c586bdc091a7373caeee4be75a0f3e12965d" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz" integrity sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== dependencies: postcss-value-parser "^4.2.0" -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: - version "6.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" - integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-selector-parser@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" - integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.1.1" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz" + integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" postcss-sort-media-queries@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz#4556b3f982ef27d3bac526b99b6c0d3359a6cf97" + resolved "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz" integrity sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA== dependencies: sort-css-media-queries "2.2.0" postcss-svgo@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.3.tgz#1d6e180d6df1fa8a3b30b729aaa9161e94f04eaa" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz" integrity sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== dependencies: postcss-value-parser "^4.2.0" @@ -7442,33 +7442,33 @@ postcss-svgo@^6.0.3: postcss-unique-selectors@^6.0.4: version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#983ab308896b4bf3f2baaf2336e14e52c11a2088" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz" integrity sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== dependencies: postcss-selector-parser "^6.0.16" postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss-zindex@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-6.0.2.tgz#e498304b83a8b165755f53db40e2ea65a99b56e1" + resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz" integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== -postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.38: - version "8.5.3" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" - integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== +"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.2, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.31, postcss@^8.4.33, postcss@^8.4.38: + version "8.4.39" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz" + integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw== dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" + nanoid "^3.3.7" + picocolors "^1.0.1" + source-map-js "^1.2.0" pretty-error@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== dependencies: lodash "^4.17.20" @@ -7476,40 +7476,40 @@ pretty-error@^4.0.0: pretty-time@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" + resolved "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== prism-react-renderer@^2.3.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz#ac63b7f78e56c8f2b5e76e823a976d5ede77e35f" - integrity sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig== + version "2.3.1" + resolved "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz" + integrity sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw== dependencies: "@types/prismjs" "^1.26.0" clsx "^2.0.0" prismjs@^1.27.0, prismjs@^1.29.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.30.0.tgz#d9709969d9d4e16403f6f348c63553b19f0975a9" - integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw== + version "1.29.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== prismjs@~1.27.0: version "1.27.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@^0.11.10: version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== prompts@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" @@ -7517,7 +7517,7 @@ prompts@^2.4.2: prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -7526,29 +7526,24 @@ prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: property-information@^5.0.0: version "5.6.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + resolved "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: xtend "^4.0.0" property-information@^6.0.0: version "6.5.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" + resolved "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz" integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== -property-information@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.0.0.tgz#3508a6d6b0b8eb3ca6eb2c6623b164d2ed2ab112" - integrity sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg== - proto-list@~1.2.1: version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" @@ -7556,63 +7551,63 @@ proxy-addr@~2.0.7: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== punycode@^2.1.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== pupa@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579" + resolved "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz" integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== dependencies: escape-goat "^4.0.0" qs@6.13.0: version "6.13.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== dependencies: side-channel "^1.0.6" querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== queue@6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== dependencies: inherits "~2.0.3" quick-lru@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -ramda-adjunct@^5.0.0, ramda-adjunct@^5.1.0: +ramda-adjunct@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz#c1281100922b03e74b1535cb9c966628697c5cc1" + resolved "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz" integrity sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg== -ramda@^0.30.1, ramda@~0.30.0: +ramda@^0.30.1, "ramda@>= 0.30.0", ramda@~0.30.0: version "0.30.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.30.1.tgz#7108ac95673062b060025052cd5143ae8fc605bf" + resolved "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz" integrity sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw== randexp@^0.5.3: version "0.5.3" - resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.5.3.tgz#f31c2de3148b30bdeb84b7c3f59b0ebb9fec3738" + resolved "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz" integrity sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w== dependencies: drange "^1.0.2" @@ -7620,24 +7615,29 @@ randexp@^0.5.3: randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -range-parser@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== +range-parser@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +range-parser@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" + integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== + raw-body@2.5.2: version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== dependencies: bytes "3.1.2" @@ -7645,9 +7645,17 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + rc@1.2.8: version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" @@ -7657,7 +7665,7 @@ rc@1.2.8: react-copy-to-clipboard@5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz#09aae5ec4c62750ccb2e6421a58725eabc41255c" + resolved "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz" integrity sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A== dependencies: copy-to-clipboard "^3.3.1" @@ -7665,7 +7673,7 @@ react-copy-to-clipboard@5.1.0: react-debounce-input@=3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/react-debounce-input/-/react-debounce-input-3.3.0.tgz#85e3ebcaa41f2016e50613134a1ec9fe3cdb422e" + resolved "https://registry.npmjs.org/react-debounce-input/-/react-debounce-input-3.3.0.tgz" integrity sha512-VEqkvs8JvY/IIZvh71Z0TC+mdbxERvYF33RcebnodlsUZ8RSgyKe2VWaHXv4+/8aoOgXLxWrdsYs2hDhcwbUgA== dependencies: lodash.debounce "^4" @@ -7673,7 +7681,7 @@ react-debounce-input@=3.3.0: react-dev-utils@^12.0.1: version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== dependencies: "@babel/code-frame" "^7.16.0" @@ -7701,36 +7709,27 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^18.0.0: +react-dom@*, "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", react-dom@^18.0.0, "react-dom@>= 16.6", "react-dom@>= 16.8.0 < 19.0.0", "react-dom@>=16.8.0 <19": version "18.3.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== dependencies: loose-envify "^1.1.0" scheduler "^0.23.2" react-error-overlay@^6.0.11: - version "6.1.0" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.1.0.tgz#22b86256beb1c5856f08a9a228adb8121dd985f2" - integrity sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ== + version "6.0.11" + resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== -react-fast-compare@^3.2.0, react-fast-compare@^3.2.2: +react-fast-compare@^3.2.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz" integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== -react-helmet-async@*: - version "2.0.5" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-2.0.5.tgz#cfc70cd7bb32df7883a8ed55502a1513747223ec" - integrity sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg== - dependencies: - invariant "^2.2.4" - react-fast-compare "^3.2.2" - shallowequal "^1.1.0" - -react-helmet-async@^1.3.0: +react-helmet-async@*, react-helmet-async@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" + resolved "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz" integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== dependencies: "@babel/runtime" "^7.12.5" @@ -7741,63 +7740,63 @@ react-helmet-async@^1.3.0: react-immutable-proptypes@2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz#cce96d68cc3c18e89617cbf3092d08e35126af4a" + resolved "https://registry.npmjs.org/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz" integrity sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ== dependencies: invariant "^2.2.2" react-immutable-pure-component@^2.2.0: version "2.2.2" - resolved "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-2.2.2.tgz#3014d3e20cd5a7a4db73b81f1f1464f4d351684b" + resolved "https://registry.npmjs.org/react-immutable-pure-component/-/react-immutable-pure-component-2.2.2.tgz" integrity sha512-vkgoMJUDqHZfXXnjVlG3keCxSO/U6WeDQ5/Sl0GK2cH8TOxEzQ5jXqDXHEL/jqk6fsNxV05oH5kD7VNMUE2k+A== react-inspector@^6.0.1: version "6.0.2" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.2.tgz#aa3028803550cb6dbd7344816d5c80bf39d07e9d" + resolved "https://registry.npmjs.org/react-inspector/-/react-inspector-6.0.2.tgz" integrity sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ== react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-json-view-lite@^1.2.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz#377cc302821717ac79a1b6d099e1891df54c8662" - integrity sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw== + version "1.4.0" + resolved "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.4.0.tgz" + integrity sha512-wh6F6uJyYAmQ4fK0e8dSQMEWuvTs2Wr3el3sLD9bambX1+pSWUVXIz1RFaoy3TI1mZ0FqdpKq9YgbgTTgyrmXA== react-loadable-ssr-addon-v5-slorber@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" + resolved "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz" integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== dependencies: "@babel/runtime" "^7.10.3" -"react-loadable@npm:@docusaurus/react-loadable@6.0.0": +react-loadable@*, "react-loadable@npm:@docusaurus/react-loadable@6.0.0": version "6.0.0" - resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz#de6c7f73c96542bd70786b8e522d535d69069dc4" + resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz" integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ== dependencies: "@types/react" "*" -react-redux@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.2.0.tgz#96c3ab23fb9a3af2cb4654be4b51c989e32366f5" - integrity sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g== +react-redux@^9.1.2: + version "9.1.2" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz" + integrity sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w== dependencies: - "@types/use-sync-external-store" "^0.0.6" - use-sync-external-store "^1.4.0" + "@types/use-sync-external-store" "^0.0.3" + use-sync-external-store "^1.0.0" react-router-config@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" + resolved "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz" integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== dependencies: "@babel/runtime" "^7.1.2" react-router-dom@^5.3.4: version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz" integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== dependencies: "@babel/runtime" "^7.12.13" @@ -7808,9 +7807,9 @@ react-router-dom@^5.3.4: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.3.4, react-router@^5.3.4: +react-router@^5.3.4, react-router@>=5, react-router@5.3.4: version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" + resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== dependencies: "@babel/runtime" "^7.12.13" @@ -7823,28 +7822,27 @@ react-router@5.3.4, react-router@^5.3.4: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-syntax-highlighter@^15.6.1: - version "15.6.1" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz#fa567cb0a9f96be7bbccf2c13a3c4b5657d9543e" - integrity sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg== +react-syntax-highlighter@^15.5.0: + version "15.5.0" + resolved "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz" + integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg== dependencies: "@babel/runtime" "^7.3.1" highlight.js "^10.4.1" - highlightjs-vue "^1.0.0" lowlight "^1.17.0" prismjs "^1.27.0" refractor "^3.6.0" -react@^18.0.0: +react@*, "react@^15.3.0 || 16 || 17 || 18", "react@^16.13.1 || ^17.0.0 || ^18.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.4 || ^17.0.0 || ^18.0.0", react@^18.0, react@^18.0.0, react@^18.3.1, "react@>= 0.14.0", "react@>= 16.6", "react@>= 16.8.0 < 19.0.0", react@>=15, react@>=16, react@>=16.0.0, "react@>=16.8.0 <19": version "18.3.1" - resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" readable-stream@^2.0.1: version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" @@ -7857,7 +7855,7 @@ readable-stream@^2.0.1: readable-stream@^3.0.6: version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -7866,178 +7864,124 @@ readable-stream@^3.0.6: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" reading-time@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" + resolved "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz" integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== rechoir@^0.6.2: version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== dependencies: resolve "^1.1.6" -recma-build-jsx@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz#c02f29e047e103d2fab2054954e1761b8ea253c4" - integrity sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew== - dependencies: - "@types/estree" "^1.0.0" - estree-util-build-jsx "^3.0.0" - vfile "^6.0.0" - -recma-jsx@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/recma-jsx/-/recma-jsx-1.0.0.tgz#f7bef02e571a49d6ba3efdfda8e2efab48dbe3aa" - integrity sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q== - dependencies: - acorn-jsx "^5.0.0" - estree-util-to-js "^2.0.0" - recma-parse "^1.0.0" - recma-stringify "^1.0.0" - unified "^11.0.0" - -recma-parse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/recma-parse/-/recma-parse-1.0.0.tgz#c351e161bb0ab47d86b92a98a9d891f9b6814b52" - integrity sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ== - dependencies: - "@types/estree" "^1.0.0" - esast-util-from-js "^2.0.0" - unified "^11.0.0" - vfile "^6.0.0" - -recma-stringify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/recma-stringify/-/recma-stringify-1.0.0.tgz#54632030631e0c7546136ff9ef8fde8e7b44f130" - integrity sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g== - dependencies: - "@types/estree" "^1.0.0" - estree-util-to-js "^2.0.0" - unified "^11.0.0" - vfile "^6.0.0" - recursive-readdir@^2.2.2: version "2.2.3" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== dependencies: minimatch "^3.0.5" redux-immutable@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/redux-immutable/-/redux-immutable-4.0.0.tgz#3a1a32df66366462b63691f0e1dc35e472bbc9f3" + resolved "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz" integrity sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg== -redux@^5.0.1: +redux@^5.0.0, redux@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" + resolved "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== refractor@^3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" + resolved "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz" integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== dependencies: hastscript "^6.0.0" parse-entities "^2.0.0" prismjs "~1.27.0" -regenerate-unicode-properties@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" - integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" regenerate@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.14.0: version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regenerator-transform@^0.15.2: version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: "@babel/runtime" "^7.8.4" -regexpu-core@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" - integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: + "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" - regenerate-unicode-properties "^10.2.0" - regjsgen "^0.8.0" - regjsparser "^0.12.0" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.1.0" registry-auth-token@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.1.0.tgz#3c659047ecd4caebd25bc1570a3aa979ae490eca" - integrity sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw== + version "5.0.2" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz" + integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== dependencies: "@pnpm/npm-conf" "^2.1.0" registry-url@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz" integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== dependencies: rc "1.2.8" -regjsgen@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" - integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== - -regjsparser@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" - integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: - jsesc "~3.0.2" + jsesc "~0.5.0" rehype-raw@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-7.0.0.tgz#59d7348fd5dbef3807bbaa1d443efd2dd85ecee4" + resolved "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz" integrity sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww== dependencies: "@types/hast" "^3.0.0" hast-util-raw "^9.0.0" vfile "^6.0.0" -rehype-recma@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rehype-recma/-/rehype-recma-1.0.0.tgz#d68ef6344d05916bd96e25400c6261775411aa76" - integrity sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw== - dependencies: - "@types/estree" "^1.0.0" - "@types/hast" "^3.0.0" - hast-util-to-estree "^3.0.0" - relateurl@^0.2.7: version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== remark-directive@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/remark-directive/-/remark-directive-3.0.1.tgz#689ba332f156cfe1118e849164cc81f157a3ef0a" - integrity sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A== + version "3.0.0" + resolved "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz" + integrity sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA== dependencies: "@types/mdast" "^4.0.0" mdast-util-directive "^3.0.0" @@ -8046,7 +7990,7 @@ remark-directive@^3.0.0: remark-emoji@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-4.0.1.tgz#671bfda668047689e26b2078c7356540da299f04" + resolved "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz" integrity sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg== dependencies: "@types/mdast" "^4.0.2" @@ -8057,7 +8001,7 @@ remark-emoji@^4.0.0: remark-frontmatter@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz#b68d61552a421ec412c76f4f66c344627dc187a2" + resolved "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz" integrity sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ== dependencies: "@types/mdast" "^4.0.0" @@ -8066,9 +8010,9 @@ remark-frontmatter@^5.0.0: unified "^11.0.0" remark-gfm@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.1.tgz#33227b2a74397670d357bf05c098eaf8513f0d6b" - integrity sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg== + version "4.0.0" + resolved "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz" + integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== dependencies: "@types/mdast" "^4.0.0" mdast-util-gfm "^3.0.0" @@ -8078,16 +8022,16 @@ remark-gfm@^4.0.0: unified "^11.0.0" remark-mdx@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-3.1.0.tgz#f979be729ecb35318fa48e2135c1169607a78343" - integrity sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA== + version "3.0.1" + resolved "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz" + integrity sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA== dependencies: mdast-util-mdx "^3.0.0" micromark-extension-mdxjs "^3.0.0" remark-parse@^11.0.0: version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" + resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz" integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== dependencies: "@types/mdast" "^4.0.0" @@ -8096,9 +8040,9 @@ remark-parse@^11.0.0: unified "^11.0.0" remark-rehype@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.1.tgz#f864dd2947889a11997c0a2667cd6b38f685bca7" - integrity sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ== + version "11.1.0" + resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz" + integrity sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g== dependencies: "@types/hast" "^3.0.0" "@types/mdast" "^4.0.0" @@ -8108,7 +8052,7 @@ remark-rehype@^11.0.0: remark-stringify@^11.0.0: version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" + resolved "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz" integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== dependencies: "@types/mdast" "^4.0.0" @@ -8117,7 +8061,7 @@ remark-stringify@^11.0.0: remarkable@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-2.0.1.tgz#280ae6627384dfb13d98ee3995627ca550a12f31" + resolved "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz" integrity sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA== dependencies: argparse "^1.0.10" @@ -8125,7 +8069,7 @@ remarkable@^2.0.1: renderkid@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== dependencies: css-select "^4.1.3" @@ -8136,91 +8080,91 @@ renderkid@^3.0.0: repeat-string@^1.5.2: version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== "require-like@>= 0.1.1": version "0.1.2" - resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" + resolved "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" integrity sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -reselect@^5.1.1: +reselect@^5.1.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" + resolved "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz" integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== resolve-alpn@^1.2.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-pathname@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== resolve@^1.1.6, resolve@^1.14.2: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.16.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" responselike@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" + resolved "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz" integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== dependencies: lowercase-keys "^3.0.0" ret@^0.2.0: version "0.2.2" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c" + resolved "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz" integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== retry@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== reusify@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" - integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" rtl-detect@^1.0.4: version "1.1.2" - resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.1.2.tgz#ca7f0330af5c6bb626c15675c642ba85ad6273c6" + resolved "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz" integrity sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ== rtlcss@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-4.3.0.tgz#f8efd4d5b64f640ec4af8fa25b65bacd9e07cc97" - integrity sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig== + version "4.1.1" + resolved "https://registry.npmjs.org/rtlcss/-/rtlcss-4.1.1.tgz" + integrity sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -8229,69 +8173,97 @@ rtlcss@^4.1.0: run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sax@^1.2.4: version "1.4.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz" integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== scheduler@^0.23.2: version "0.23.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz" integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== dependencies: loose-envify "^1.1.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== +schema-utils@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" -schema-utils@^3.0.0: +schema-utils@^3.1.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== dependencies: "@types/json-schema" "^7.0.8" ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.0.tgz#3b669f04f71ff2dfb5aba7ce2d5a9d79b35622c0" - integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g== +schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0, schema-utils@^4.0.1: + version "4.2.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== dependencies: "@types/json-schema" "^7.0.9" ajv "^8.9.0" ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +"search-insights@>= 1 < 3": + version "2.15.0" + resolved "https://registry.npmjs.org/search-insights/-/search-insights-2.15.0.tgz" + integrity sha512-ch2sPCUDD4sbPQdknVl9ALSi9H7VyoeVbsxznYz6QV55jJ8CI3EtwpO1i84keN4+hF5IeHWIeGvc08530JkVXQ== + section-matter@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== dependencies: extend-shallow "^2.0.1" @@ -8299,12 +8271,12 @@ section-matter@^1.0.0: select-hose@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== selfsigned@^2.1.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== dependencies: "@types/node-forge" "^1.3.0" @@ -8312,24 +8284,24 @@ selfsigned@^2.1.1: semver-diff@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" + resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz" integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== dependencies: semver "^7.3.5" semver@^6.3.1: version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: - version "7.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== send@0.19.0: version "0.19.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" @@ -8348,21 +8320,21 @@ send@0.19.0: serialize-error@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67" + resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz" integrity sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ== dependencies: type-fest "^0.20.2" -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== dependencies: randombytes "^2.1.0" serve-handler@^6.1.5: version "6.1.6" - resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.6.tgz#50803c1d3e947cd4a341d617f8209b22bd76cfa1" + resolved "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz" integrity sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ== dependencies: bytes "3.0.0" @@ -8375,7 +8347,7 @@ serve-handler@^6.1.5: serve-index@^1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== dependencies: accepts "~1.3.4" @@ -8388,7 +8360,7 @@ serve-index@^1.9.1: serve-static@1.16.2: version "1.16.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz" integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== dependencies: encodeurl "~2.0.0" @@ -8396,9 +8368,9 @@ serve-static@1.16.2: parseurl "~1.3.3" send "0.19.0" -set-function-length@^1.2.2: +set-function-length@^1.2.1: version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== dependencies: define-data-property "^1.1.4" @@ -8410,17 +8382,17 @@ set-function-length@^1.2.2: setprototypeof@1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.11: version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" @@ -8428,36 +8400,36 @@ sha.js@^2.4.11: shallow-clone@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: kind-of "^6.0.2" shallowequal@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.7.3, shell-quote@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a" - integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== + version "1.8.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== shelljs@^0.8.5: version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== dependencies: glob "^7.0.0" @@ -8466,12 +8438,12 @@ shelljs@^0.8.5: short-unique-id@^5.0.2: version "5.2.0" - resolved "https://registry.yarnpkg.com/short-unique-id/-/short-unique-id-5.2.0.tgz#a7e0668e0a8998d3151f27a36cf046055b1f270b" + resolved "https://registry.npmjs.org/short-unique-id/-/short-unique-id-5.2.0.tgz" integrity sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg== side-channel-list@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== dependencies: es-errors "^1.3.0" @@ -8479,7 +8451,7 @@ side-channel-list@^1.0.0: side-channel-map@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== dependencies: call-bound "^1.0.2" @@ -8489,7 +8461,7 @@ side-channel-map@^1.0.1: side-channel-weakmap@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== dependencies: call-bound "^1.0.2" @@ -8500,7 +8472,7 @@ side-channel-weakmap@^1.0.2: side-channel@^1.0.6: version "1.1.0" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== dependencies: es-errors "^1.3.0" @@ -8511,12 +8483,12 @@ side-channel@^1.0.6: signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== sirv@^2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + resolved "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz" integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== dependencies: "@polka/url" "^1.0.0-next.24" @@ -8525,12 +8497,12 @@ sirv@^2.0.3: sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== sitemap@^7.1.1: version "7.1.2" - resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.2.tgz#6ce1deb43f6f177c68bc59cf93632f54e3ae6b72" + resolved "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz" integrity sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw== dependencies: "@types/node" "^17.0.5" @@ -8540,24 +8512,24 @@ sitemap@^7.1.1: skin-tone@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/skin-tone/-/skin-tone-2.0.0.tgz#4e3933ab45c0d4f4f781745d64b9f4c208e41237" + resolved "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz" integrity sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA== dependencies: unicode-emoji-modifier-base "^1.0.0" slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== slash@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== snake-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== dependencies: dot-case "^3.0.4" @@ -8565,7 +8537,7 @@ snake-case@^3.0.4: sockjs@^0.3.24: version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" @@ -8574,45 +8546,50 @@ sockjs@^0.3.24: sort-css-media-queries@2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz#aa33cf4a08e0225059448b6c40eddbf9f1c8334c" + resolved "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz" integrity sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA== -source-map-js@^1.0.1, source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== +source-map-js@^1.0.1, source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== source-map-support@~0.5.20: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0, source-map@~0.6.0: +source-map@^0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.0: version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + space-separated-tokens@^1.0.0: version "1.1.5" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== space-separated-tokens@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz" integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== spdy-transport@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: debug "^4.1.0" @@ -8624,7 +8601,7 @@ spdy-transport@^3.0.0: spdy@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: debug "^4.1.0" @@ -8635,32 +8612,55 @@ spdy@^4.0.2: sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== srcset@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" + resolved "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz" integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.4.0 < 2": version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + std-env@^3.0.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.1.tgz#2b81c631c62e3d0b964b87f099b8dcab6c9a5346" - integrity sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA== + version "3.7.0" + resolved "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== -string-width@^4.1.0, string-width@^4.2.0: +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-width@^4.1.0: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -8669,30 +8669,16 @@ string-width@^4.1.0, string-width@^4.2.0: string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: eastasianwidth "^0.2.0" emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-entities@^4.0.0: version "4.0.4" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== dependencies: character-entities-html4 "^2.0.0" @@ -8700,7 +8686,7 @@ stringify-entities@^4.0.0: stringify-object@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: get-own-enumerable-property-symbols "^3.0.0" @@ -8709,87 +8695,94 @@ stringify-object@^3.3.0: strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-ansi@^7.0.1: version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: ansi-regex "^6.0.1" strip-bom-string@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + resolved "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz" integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strip-json-comments@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -style-to-js@^1.0.0: - version "1.1.16" - resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.16.tgz#e6bd6cd29e250bcf8fa5e6591d07ced7575dbe7a" - integrity sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw== +style-to-object@^0.4.0: + version "0.4.4" + resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz" + integrity sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg== dependencies: - style-to-object "1.0.8" + inline-style-parser "0.1.1" -style-to-object@1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.8.tgz#67a29bca47eaa587db18118d68f9d95955e81292" - integrity sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g== +style-to-object@^1.0.0: + version "1.0.6" + resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz" + integrity sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA== dependencies: - inline-style-parser "0.2.4" + inline-style-parser "0.2.3" stylehacks@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.1.1.tgz#543f91c10d17d00a440430362d419f79c25545a6" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz" integrity sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== dependencies: browserslist "^4.23.0" postcss-selector-parser "^6.0.16" +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.0.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== svg-parser@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== svgo@^3.0.2, svgo@^3.2.0: version "3.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8" + resolved "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz" integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== dependencies: "@trysound/sax" "0.2.0" @@ -8800,42 +8793,42 @@ svgo@^3.0.2, svgo@^3.2.0: csso "^5.0.5" picocolors "^1.0.0" -swagger-client@^3.34.1: - version "3.34.3" - resolved "https://registry.yarnpkg.com/swagger-client/-/swagger-client-3.34.3.tgz#1571514a901ee55313f598ca2491359ca99c2938" - integrity sha512-Hm0k/pX6tCL06slq3WYvTkAufYhe3FvHjls88/qXBwlgz/IEy5lleylv7rIguwjSQoQFSg8DPkLz/uczN/qfkA== +swagger-client@^3.28.1: + version "3.33.1" + resolved "https://registry.npmjs.org/swagger-client/-/swagger-client-3.33.1.tgz" + integrity sha512-E27FptQgG7mTtyC1yCLStyz03QtcVhmgrg0ESGLoncnYZppZcxRfsJkaZLYwk59XE0KcsBjWDydWSHE411vIyQ== dependencies: "@babel/runtime-corejs3" "^7.22.15" "@scarf/scarf" "=1.4.0" - "@swagger-api/apidom-core" ">=1.0.0-beta.13 <1.0.0-rc.0" - "@swagger-api/apidom-error" ">=1.0.0-beta.13 <1.0.0-rc.0" - "@swagger-api/apidom-json-pointer" ">=1.0.0-beta.13 <1.0.0-rc.0" - "@swagger-api/apidom-ns-openapi-3-1" ">=1.0.0-beta.13 <1.0.0-rc.0" - "@swagger-api/apidom-reference" ">=1.0.0-beta.13 <1.0.0-rc.0" - "@swaggerexpert/cookie" "^2.0.2" + "@swagger-api/apidom-core" ">=1.0.0-beta.6 <1.0.0-rc.0" + "@swagger-api/apidom-error" ">=1.0.0-beta.6 <1.0.0-rc.0" + "@swagger-api/apidom-json-pointer" ">=1.0.0-beta.6 <1.0.0-rc.0" + "@swagger-api/apidom-ns-openapi-3-1" ">=1.0.0-beta.6 <1.0.0-rc.0" + "@swagger-api/apidom-reference" ">=1.0.0-beta.6 <1.0.0-rc.0" + cookie "~0.7.2" deepmerge "~4.3.0" fast-json-patch "^3.0.0-1" js-yaml "^4.1.0" neotraverse "=0.6.18" node-abort-controller "^3.1.1" node-fetch-commonjs "^3.3.2" - openapi-path-templating "^2.2.1" - openapi-server-url-templating "^1.3.0" + openapi-path-templating "^2.0.1" + openapi-server-url-templating "^1.2.0" ramda "^0.30.1" - ramda-adjunct "^5.1.0" + ramda-adjunct "^5.0.0" swagger-ui-react@^5.17.14: - version "5.20.1" - resolved "https://registry.yarnpkg.com/swagger-ui-react/-/swagger-ui-react-5.20.1.tgz#faf4e5b686816e3a8b5d0b59b33b42c3858aec93" - integrity sha512-8LKED6zWbPpJMHzC3PYwce6wUO0D1r5ALdJVHNEXZhd4eqa0mUyKEWa3Y+KSBWNLDI2xuNvVU2lBhBbWaiH3Xg== + version "5.17.14" + resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-5.17.14.tgz" + integrity sha512-mCXerZrbcn4ftPYifUF0+iKIRTHoVCv0HcJc/sXl9nCe3oeWdsjmOWVqKabzzAkAa0NwsbKNJFv2UL/Ivnf6VQ== dependencies: - "@babel/runtime-corejs3" "^7.26.7" - "@scarf/scarf" "=1.4.0" + "@babel/runtime-corejs3" "^7.24.5" + "@braintree/sanitize-url" "=7.0.2" base64-js "^1.5.1" classnames "^2.5.1" css.escape "1.5.1" deep-extend "0.6.0" - dompurify "=3.2.4" + dompurify "=3.1.4" ieee754 "^1.2.1" immutable "^3.x.x" js-file-download "^0.4.12" @@ -8849,15 +8842,15 @@ swagger-ui-react@^5.17.14: react-immutable-proptypes "2.2.0" react-immutable-pure-component "^2.2.0" react-inspector "^6.0.1" - react-redux "^9.2.0" - react-syntax-highlighter "^15.6.1" + react-redux "^9.1.2" + react-syntax-highlighter "^15.5.0" redux "^5.0.1" redux-immutable "^4.0.0" remarkable "^2.0.1" - reselect "^5.1.1" + reselect "^5.1.0" serialize-error "^8.1.0" sha.js "^2.4.11" - swagger-client "^3.34.1" + swagger-client "^3.28.1" url-parse "^1.5.10" xml "=1.0.1" xml-but-prettier "^1.0.1" @@ -8865,29 +8858,29 @@ swagger-ui-react@^5.17.14: tapable@^1.0.0: version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -terser-webpack-plugin@^5.3.11, terser-webpack-plugin@^5.3.9: - version "5.3.14" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" - integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== +terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9: + version "5.3.10" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== dependencies: - "@jridgewell/trace-mapping" "^0.3.25" + "@jridgewell/trace-mapping" "^0.3.20" jest-worker "^27.4.5" - schema-utils "^4.3.0" - serialize-javascript "^6.0.2" - terser "^5.31.1" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" -terser@^5.10.0, terser@^5.15.1, terser@^5.31.1: - version "5.39.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.39.0.tgz#0e82033ed57b3ddf1f96708d123cca717d86ca3a" - integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw== +terser@^5.10.0, terser@^5.15.1, terser@^5.26.0: + version "5.31.3" + resolved "https://registry.npmjs.org/terser/-/terser-5.31.3.tgz" + integrity sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -8896,57 +8889,70 @@ terser@^5.10.0, terser@^5.15.1, terser@^5.31.1: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== thunky@^1.0.2: version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== tiny-invariant@^1.0.2: version "1.3.3" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz" integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== tiny-warning@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" toggle-selection@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== totalist@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + resolved "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz" integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== tree-sitter-json@=0.24.8: version "0.24.8" - resolved "https://registry.yarnpkg.com/tree-sitter-json/-/tree-sitter-json-0.24.8.tgz#72bfa26942691f2bf59d973b6794923c033f04c2" + resolved "https://registry.npmjs.org/tree-sitter-json/-/tree-sitter-json-0.24.8.tgz" integrity sha512-Tc9ZZYwHyWZ3Tt1VEw7Pa2scu1YO7/d2BCBbKTx5hXwig3UfdQjsOPkPyLpDJOn/m1UBEWYAtSdGAwCSyagBqQ== dependencies: node-addon-api "^8.2.2" node-gyp-build "^4.8.2" -tree-sitter@=0.22.1: +tree-sitter@^0.21.1: + version "0.21.1" + resolved "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.21.1.tgz" + integrity sha512-7dxoA6kYvtgWw80265MyqJlkRl4yawIjO7S5MigytjELkX43fV2WsAXzsNfO7sBpPPCF5Gp0+XzHk0DwLCq3xQ== + dependencies: + node-addon-api "^8.0.0" + node-gyp-build "^4.8.0" + +tree-sitter@^0.22.1, tree-sitter@=0.22.1: version "0.22.1" - resolved "https://registry.yarnpkg.com/tree-sitter/-/tree-sitter-0.22.1.tgz#5a5296fc0898b21443657e071b050c95c0d7afbd" + resolved "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.22.1.tgz" integrity sha512-gRO+jk2ljxZlIn20QRskIvpLCMtzuLl5T0BY6L9uvPYD17uUrxlxWkvYCiVqED2q2q7CVtY52Uex4WcYo2FEXw== dependencies: node-addon-api "^8.2.1" @@ -8954,47 +8960,47 @@ tree-sitter@=0.22.1: trim-lines@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz" integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== trough@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" + resolved "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz" integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== ts-mixer@^6.0.3, ts-mixer@^6.0.4: version "6.0.4" - resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.4.tgz#1da39ceabc09d947a82140d9f09db0f84919ca28" + resolved "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz" integrity sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA== ts-toolbelt@^9.6.0: version "9.6.0" - resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz#50a25426cfed500d4a09bd1b3afb6f28879edfd5" + resolved "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz" integrity sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w== tslib@^2.0.3, tslib@^2.3.0, tslib@^2.6.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + version "2.6.3" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^1.0.1: version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== type-fest@^2.13.0, type-fest@^2.5.0: version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== type-is@~1.6.18: version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" @@ -9002,59 +9008,59 @@ type-is@~1.6.18: typedarray-to-buffer@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" types-ramda@^0.30.1: version "0.30.1" - resolved "https://registry.yarnpkg.com/types-ramda/-/types-ramda-0.30.1.tgz#03d255128e3696aeaac76281ca19949e01dddc78" + resolved "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz" integrity sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA== dependencies: ts-toolbelt "^9.6.0" -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== +"typescript@>= 2.7", typescript@>=4.9.5: + version "5.5.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz" + integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== -undici@^6.19.5: - version "6.21.2" - resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.2.tgz#49c5884e8f9039c65a89ee9018ef3c8e2f1f4928" - integrity sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g== +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" - integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== unicode-emoji-modifier-base@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459" + resolved "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz" integrity sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" unicode-match-property-value-ecmascript@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" - integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== unified@^11.0.0, unified@^11.0.3, unified@^11.0.4: version "11.0.5" - resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.5.tgz#f66677610a5c0a9ee90cab2b8d4d66037026d9e1" + resolved "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz" integrity sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA== dependencies: "@types/unist" "^3.0.0" @@ -9067,42 +9073,50 @@ unified@^11.0.0, unified@^11.0.3, unified@^11.0.4: unique-string@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz" integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== dependencies: crypto-random-string "^4.0.0" unist-util-is@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz" integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== dependencies: "@types/unist" "^3.0.0" unist-util-position-from-estree@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz#d94da4df596529d1faa3de506202f0c9a23f2200" + resolved "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz" integrity sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ== dependencies: "@types/unist" "^3.0.0" unist-util-position@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz" integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== dependencies: "@types/unist" "^3.0.0" +unist-util-remove-position@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz" + integrity sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q== + dependencies: + "@types/unist" "^3.0.0" + unist-util-visit "^5.0.0" + unist-util-stringify-position@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz" integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== dependencies: "@types/unist" "^3.0.0" unist-util-visit-parents@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz" integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== dependencies: "@types/unist" "^3.0.0" @@ -9110,7 +9124,7 @@ unist-util-visit-parents@^6.0.0: unist-util-visit@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz" integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== dependencies: "@types/unist" "^3.0.0" @@ -9119,30 +9133,30 @@ unist-util-visit@^5.0.0: universalify@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unraw@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/unraw/-/unraw-3.0.0.tgz#73443ed70d2ab09ccbac2b00525602d5991fbbe3" + resolved "https://registry.npmjs.org/unraw/-/unraw-3.0.0.tgz" integrity sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg== update-browserslist-db@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" - integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + version "1.1.1" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== dependencies: escalade "^3.2.0" - picocolors "^1.1.1" + picocolors "^1.1.0" update-notifier@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz" integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== dependencies: boxen "^7.0.0" @@ -9162,14 +9176,14 @@ update-notifier@^6.0.2: uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" url-loader@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + resolved "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== dependencies: loader-utils "^2.0.0" @@ -9178,55 +9192,55 @@ url-loader@^4.1.1: url-parse@^1.5.10: version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" -use-sync-external-store@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc" - integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw== +use-sync-external-store@^1.0.0: + version "1.2.2" + resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz" + integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw== util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== utila@~0.4: version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== utility-types@^3.10.0: version "3.11.0" - resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" + resolved "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz" integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== value-equal@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + resolved "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== vfile-location@^5.0.0: version "5.0.3" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-5.0.3.tgz#cb9eacd20f2b6426d19451e0eafa3d0a846225c3" + resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz" integrity sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg== dependencies: "@types/unist" "^3.0.0" @@ -9234,53 +9248,54 @@ vfile-location@^5.0.0: vfile-message@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz" integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== dependencies: "@types/unist" "^3.0.0" unist-util-stringify-position "^4.0.0" vfile@^6.0.0, vfile@^6.0.1: - version "6.0.3" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" - integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== + version "6.0.2" + resolved "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz" + integrity sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg== dependencies: "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" vfile-message "^4.0.0" watchpack@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" - integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== + version "2.4.1" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz" + integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" web-namespaces@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" + resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz" integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== web-streams-polyfill@^3.0.3: version "3.3.3" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz" integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== web-tree-sitter@=0.24.5: version "0.24.5" - resolved "https://registry.yarnpkg.com/web-tree-sitter/-/web-tree-sitter-0.24.5.tgz#16cea449da63012f23ca7b83bd32817dd0520400" + resolved "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.24.5.tgz" integrity sha512-+J/2VSHN8J47gQUAvF8KDadrfz6uFYVjxoxbKWDoXVsH2u7yLdarCnIURnrMA6uSRkgX3SdmqM5BOoQjPdSh5w== webpack-bundle-analyzer@^4.9.0: version "4.10.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" + resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz" integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== dependencies: "@discoveryjs/json-ext" "0.5.7" @@ -9298,7 +9313,7 @@ webpack-bundle-analyzer@^4.9.0: webpack-dev-middleware@^5.3.4: version "5.3.4" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz" integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== dependencies: colorette "^2.0.10" @@ -9309,7 +9324,7 @@ webpack-dev-middleware@^5.3.4: webpack-dev-server@^4.15.1: version "4.15.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz" integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== dependencies: "@types/bonjour" "^3.5.9" @@ -9345,7 +9360,7 @@ webpack-dev-server@^4.15.1: webpack-merge@^5.9.0: version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz" integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== dependencies: clone-deep "^4.0.1" @@ -9354,13 +9369,13 @@ webpack-merge@^5.9.0: webpack-sources@^3.2.3: version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.88.1: - version "5.98.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.98.0.tgz#44ae19a8f2ba97537978246072fb89d10d1fbd17" - integrity sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA== +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.88.1, "webpack@>= 4", "webpack@>=4.41.1 || 5.x", webpack@>=5, "webpack@3 || 4 || 5": + version "5.97.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz" + integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.6" @@ -9380,15 +9395,15 @@ webpack@^5.88.1: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^4.3.0" + schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.11" + terser-webpack-plugin "^5.3.10" watchpack "^2.4.1" webpack-sources "^3.2.3" webpackbar@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" + resolved "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz" integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== dependencies: chalk "^4.1.0" @@ -9396,9 +9411,9 @@ webpackbar@^5.0.2: pretty-time "^1.1.0" std-env "^3.0.1" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -9407,50 +9422,38 @@ websocket-driver@>=0.5.1, websocket-driver@^0.7.4: websocket-extensions@>=0.1.1: version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -whatwg-encoding@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" - integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== - dependencies: - iconv-lite "0.6.3" - -whatwg-mimetype@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" - integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== - which@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" widest-line@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz" integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== dependencies: string-width "^5.0.1" wildcard@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: ansi-styles "^6.1.0" @@ -9459,12 +9462,12 @@ wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" @@ -9474,69 +9477,69 @@ write-file-atomic@^3.0.3: ws@^7.3.1: version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.13.0: - version "8.18.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb" - integrity sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w== + version "8.18.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz" integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== xml-but-prettier@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/xml-but-prettier/-/xml-but-prettier-1.0.1.tgz#f5a33267ed42ccd4e355c62557a5e39b01fb40f3" + resolved "https://registry.npmjs.org/xml-but-prettier/-/xml-but-prettier-1.0.1.tgz" integrity sha512-C2CJaadHrZTqESlH03WOyw0oZTtoy2uEg6dSDF6YRg+9GnYNub53RRemLpnvtbHDFelxMx4LajiFsYeR6XJHgQ== dependencies: repeat-string "^1.5.2" xml-js@^1.6.11: version "1.6.11" - resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" + resolved "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz" integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== dependencies: sax "^1.2.4" xml@=1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + resolved "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz" integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== xtend@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== yallist@^3.0.2: version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yaml@^1.7.2: version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== yocto-queue@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.0.tgz#4a29a93e7591328fa31768701e6ea66962401f79" - integrity sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw== + version "1.1.1" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz" + integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== zenscroll@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/zenscroll/-/zenscroll-4.0.2.tgz#e8d5774d1c0738a47bcfa8729f3712e2deddeb25" + resolved "https://registry.npmjs.org/zenscroll/-/zenscroll-4.0.2.tgz" integrity sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg== zwitch@^2.0.0: version "2.0.4" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz" integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From 2235b84957496290e481701d6f99cc2f5a0200b6 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Fri, 5 Jun 2026 11:47:37 -0700 Subject: [PATCH 27/31] allow swagger to be deployed on a forked repo for testing --- docs/src/components/SwaggerUI.js | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/docs/src/components/SwaggerUI.js b/docs/src/components/SwaggerUI.js index 5288ce27..0a3ba875 100644 --- a/docs/src/components/SwaggerUI.js +++ b/docs/src/components/SwaggerUI.js @@ -1,18 +1,32 @@ import React from 'react'; import SwaggerUI from 'swagger-ui-react'; import 'swagger-ui-react/swagger-ui.css'; -// eslint-disable-next-line import/no-webpack-loader-syntax -import localSpec from '!!raw-loader!@signer-api-spec'; -const IS_LOCALHOST = typeof window !== 'undefined' && window.location.hostname === 'localhost'; +function getSpecUrl() { + if (typeof window === 'undefined') return null; -const PROD_URL = 'https://raw.githubusercontent.com/Commit-Boost/commit-boost-client/main/api/signer-api.yml'; + // localhost dev: webpack bundles the spec via raw-loader + if (window.location.hostname === 'localhost') return null; + + // Production GitHub Pages: derive org/repo/branch from the current URL + // e.g. https://commit-boost.github.io/commit-boost-client/ → Commit-Boost/commit-boost-client/main + const host = window.location.hostname; // e.g. commit-boost.github.io + const org = host.replace('.github.io', ''); // e.g. commit-boost → Commit-Boost + const pathParts = window.location.pathname.split('/').filter(Boolean); + const repo = pathParts[0] || 'commit-boost-client'; + const branch = window.location.searchParams?.get('branch') || 'main'; + + return `https://raw.githubusercontent.com/${org}/${repo}/${branch}/api/signer-api.yml`; +} const SwaggerUIComponent = () => { - if (IS_LOCALHOST) { + const specUrl = getSpecUrl(); + if (!specUrl) { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const localSpec = require('!!raw-loader!@signer-api-spec').default; return ; } - return ; + return ; }; export default SwaggerUIComponent; From 2015307bb0469716a66f11588b5b78cbfb53db67 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Fri, 5 Jun 2026 12:09:11 -0700 Subject: [PATCH 28/31] trigger docs ci from main instead of stable --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a23cbd7e..e5f15744 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -3,7 +3,7 @@ name: Docs on: push: branches: - - stable + - main # Review gh actions docs if you want to further define triggers, paths, etc # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on From 8493de82e02a7dd32be1b8cc1be1d9f0635463af Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Thu, 11 Jun 2026 17:22:39 -0700 Subject: [PATCH 29/31] run docs workflow on changes to docs/ on main --- .github/workflows/docs.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e5f15744..21c4ecd6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -2,8 +2,9 @@ name: Docs on: push: - branches: - - main + branches: [main] + paths: + - 'docs/**' # Review gh actions docs if you want to further define triggers, paths, etc # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on From b985dac9939b787e25df88d4af541b99c3d8a8c2 Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Thu, 11 Jun 2026 17:27:38 -0700 Subject: [PATCH 30/31] create v0.9.6 and v0.10.0-rc2 versioned docs --- docs/docs/developing/commit-module.md | 132 +++++ docs/docs/developing/custom-modules.md | 12 + .../architecture/img/architecture.png | Bin 0 -> 248750 bytes .../architecture/overview.md | 15 + .../developing/commit-modules.md | 161 +++++ .../developing/environment-setup.md | 10 + .../developing/extending-pbs.md | 100 ++++ .../developing/prop-commit-signing.md | 191 ++++++ .../get_started/building.md | 168 ++++++ .../get_started/configuration.md | 561 ++++++++++++++++++ .../get_started/mux-key-loaders.md | 242 ++++++++ .../get_started/overview.md | 87 +++ .../get_started/running/binary.md | 70 +++ .../get_started/running/docker.md | 314 ++++++++++ .../get_started/running/k8s.md | 75 +++ .../get_started/running/metrics-catalog.md | 55 ++ .../get_started/running/metrics.md | 92 +++ .../get_started/troubleshooting.md | 259 ++++++++ .../version-0.10.0-rc2/intro.md | 28 + .../version-0.10.0-rc2/overview.md | 35 ++ .../res/img/consensus-key-sign.png | Bin 0 -> 103080 bytes .../res/img/prop_commit_tree.png | Bin 0 -> 96528 bytes .../res/img/proxy-key-sign.png | Bin 0 -> 111225 bytes .../architecture/img/architecture.png | Bin 0 -> 248750 bytes .../version-0.9.6/architecture/overview.md | 15 + .../version-0.9.6/developing/commit-module.md | 132 +++++ .../developing/commit-modules.md | 161 +++++ .../developing/custom-modules.md | 12 + .../developing/environment-setup.md | 10 + .../version-0.9.6/developing/extending-pbs.md | 100 ++++ .../developing/prop-commit-signing.md | 191 ++++++ .../version-0.9.6/get_started/building.md | 181 ++++++ .../get_started/configuration.md | 461 ++++++++++++++ .../get_started/mux-key-loaders.md | 242 ++++++++ .../version-0.9.6/get_started/overview.md | 83 +++ .../get_started/running/binary.md | 65 ++ .../get_started/running/docker.md | 303 ++++++++++ .../version-0.9.6/get_started/running/k8s.md | 75 +++ .../get_started/running/metrics-catalog.md | 55 ++ .../get_started/running/metrics.md | 94 +++ .../get_started/troubleshooting.md | 68 +++ docs/versioned_docs/version-0.9.6/intro.md | 28 + docs/versioned_docs/version-0.9.6/overview.md | 35 ++ .../res/img/consensus-key-sign.png | Bin 0 -> 103080 bytes .../res/img/prop_commit_tree.png | Bin 0 -> 96528 bytes .../version-0.9.6/res/img/proxy-key-sign.png | Bin 0 -> 111225 bytes .../version-0.10.0-rc2-sidebars.json | 71 +++ .../version-0.9.6-sidebars.json | 71 +++ docs/versions.json | 4 + 49 files changed, 5064 insertions(+) create mode 100644 docs/docs/developing/commit-module.md create mode 100644 docs/docs/developing/custom-modules.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/architecture/img/architecture.png create mode 100644 docs/versioned_docs/version-0.10.0-rc2/architecture/overview.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/developing/commit-modules.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/developing/environment-setup.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/developing/extending-pbs.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/developing/prop-commit-signing.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/get_started/building.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/get_started/configuration.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/get_started/mux-key-loaders.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/get_started/overview.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/get_started/running/binary.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/get_started/running/docker.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/get_started/running/k8s.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/get_started/running/metrics-catalog.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/get_started/running/metrics.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/get_started/troubleshooting.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/intro.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/overview.md create mode 100644 docs/versioned_docs/version-0.10.0-rc2/res/img/consensus-key-sign.png create mode 100644 docs/versioned_docs/version-0.10.0-rc2/res/img/prop_commit_tree.png create mode 100644 docs/versioned_docs/version-0.10.0-rc2/res/img/proxy-key-sign.png create mode 100644 docs/versioned_docs/version-0.9.6/architecture/img/architecture.png create mode 100644 docs/versioned_docs/version-0.9.6/architecture/overview.md create mode 100644 docs/versioned_docs/version-0.9.6/developing/commit-module.md create mode 100644 docs/versioned_docs/version-0.9.6/developing/commit-modules.md create mode 100644 docs/versioned_docs/version-0.9.6/developing/custom-modules.md create mode 100644 docs/versioned_docs/version-0.9.6/developing/environment-setup.md create mode 100644 docs/versioned_docs/version-0.9.6/developing/extending-pbs.md create mode 100644 docs/versioned_docs/version-0.9.6/developing/prop-commit-signing.md create mode 100644 docs/versioned_docs/version-0.9.6/get_started/building.md create mode 100644 docs/versioned_docs/version-0.9.6/get_started/configuration.md create mode 100644 docs/versioned_docs/version-0.9.6/get_started/mux-key-loaders.md create mode 100644 docs/versioned_docs/version-0.9.6/get_started/overview.md create mode 100644 docs/versioned_docs/version-0.9.6/get_started/running/binary.md create mode 100644 docs/versioned_docs/version-0.9.6/get_started/running/docker.md create mode 100644 docs/versioned_docs/version-0.9.6/get_started/running/k8s.md create mode 100644 docs/versioned_docs/version-0.9.6/get_started/running/metrics-catalog.md create mode 100644 docs/versioned_docs/version-0.9.6/get_started/running/metrics.md create mode 100644 docs/versioned_docs/version-0.9.6/get_started/troubleshooting.md create mode 100644 docs/versioned_docs/version-0.9.6/intro.md create mode 100644 docs/versioned_docs/version-0.9.6/overview.md create mode 100644 docs/versioned_docs/version-0.9.6/res/img/consensus-key-sign.png create mode 100644 docs/versioned_docs/version-0.9.6/res/img/prop_commit_tree.png create mode 100644 docs/versioned_docs/version-0.9.6/res/img/proxy-key-sign.png create mode 100644 docs/versioned_sidebars/version-0.10.0-rc2-sidebars.json create mode 100644 docs/versioned_sidebars/version-0.9.6-sidebars.json create mode 100644 docs/versions.json diff --git a/docs/docs/developing/commit-module.md b/docs/docs/developing/commit-module.md new file mode 100644 index 00000000..30921be2 --- /dev/null +++ b/docs/docs/developing/commit-module.md @@ -0,0 +1,132 @@ +--- +sidebar_position: 2 +--- + +# Commit Module + +While a module can be written in any language, we currently provide some utilities for Rust, with the goal of supporting more generalized APIs and simplify development in languages other than Rust. + +In Rust, we provide utilities to load and run modules. Simply add to your `Cargo.toml`: +```toml +commit-boost = { git = "https://github.com/Commit-Boost/commit-boost-client", version = "..." } +``` + +You will now be able to import the utils with: +```rust +use commit_boost::prelude::*; +``` + + +## Config +Your module will likely need a configuration for the Node Operator to customize. This will have to be in the `cb-config.toml` file, in the correct `[[module]]` section. In the module, you can define and load your config as follows. + +First, define all the parameters needed in a struct: +```rust +#[derive(Debug, Deserialize)] +struct ExtraConfig { + sleep_secs: u64, +} +``` +then pass that struct to the `load_commit_module_config` function, which will load and parse the config. Your custom config will be under the `extra` field. + +```rust +let config = load_commit_module_config::().unwrap(); +let to_sleep = config.extra.sleep_secs; +``` + +The loaded `config` also has a few other useful fields: +- the unique `id` of the module +- chain spec +- a `SignerClient` to call the [SignerAPI](/api), already setup with the correct JWT + + +## Requesting signatures +At its core the Signer Module simply provides a signature on a 32-byte data digest. The signatures are currently provided with either the validator keys (BLS) or a proxy key (BLS or ECDSA) for a given validator key, both on the [builder domain](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/common/src/signature.rs#L88-L96). + +In the example we use `TreeHash`, already used in the CL, to create the digest from a custom struct: +```rust +#[derive(TreeHash)] +struct Datagram { + data: u64, +} +``` + +Furthermore, in order to request a signature, we'd need a public key of the validator. You can get a list of available keys by calling: +```rust +let pubkeys = config.signer_client.get_pubkeys().await.unwrap(); +``` + +Which will call the `get_pubkeys` endpoint of the [SignerAPI](/api), returning all the consensus pubkeys and the corresponding proxy keys, of your module. + +Note that the requests are authenticated using a JWT, that must be regularly refreshed as it expires after a certain time. To do so, you can call: +```rust +config.signer_client.refresh_token().await.unwrap(); +``` +You have the `SIGNER_JWT_EXPIRATION` constant available in the `commit-boost` crate, which is the time in seconds after which the JWT will expire. + +Then, we can request a signature either with a consensus key or with a proxy key: + +### With a consensus key +Requesting a signature is as simple as: +```rust +let datagram = Datagram { data: 1 }; +let request = SignConsensusRequest::builder(pubkey).with_msg(&datagram); +let signature = config.signer_client.request_consensus_signature(&request).await.unwrap(); +``` + +Where `pubkey` is the validator (consensus) public key for which the signature is requested. + +### With a proxy key +You'll have to first request a proxy key be generated for a given consensus key. +We support two signature schemes for proxies: BLS or ECDSA. + +To request a proxy: +```rust +// BLS proxy +let proxy_delegation = self.config.signer_client.generate_proxy_key_bls(pubkey).await?; +let proxy_pubkey = proxy_delegation.message.proxy; + +// or ECDSA proxy +let proxy_delegation = self.config.signer_client.generate_proxy_key_ecdsa(pubkey).await?; +let proxy_address = proxy_delegation.message.proxy; +``` + +Where `pubkey` is the validator (consensus) public key for which a proxy is to be generated. + +Then you can use the generated proxy key to request a signature: +```rust +// if `proxy_pubkey` is a BLS proxy +let datagram = Datagram { data: 1 }; +let request = SignProxyRequest::builder(proxy_pubkey).with_msg(&datagram); +let signature = config.signer_client.request_proxy_signature_bls(&request).await.unwrap(); + +// or for ECDSA proxy +let datagram = Datagram { data: 1 }; +let request = SignProxyRequest::builder(proxy_address).with_msg(&datagram); +let signature = config.signer_client.request_proxy_signature_ecdsa(&request).await.unwrap(); +``` + +## Metrics +We provide support for modules to record custom metrics which are automatically scraped by Prometheus. This involves three steps +### Define metrics +You can use the `prometheus` crate to create a custom registry and metrics, for example: + +```rust +static ref MY_CUSTOM_REGISTRY: Registry = Registry::new_custom(Some("da_commit".to_string()), None).unwrap(); +static ref SIG_RECEIVED_COUNTER: IntCounter = IntCounter::new("signature_received", "successful signature requests received").unwrap(); +``` + +### Start Metrics Provider +When starting the module, you should register all metrics, and start the `MetricsProvider`: +```rust +MY_CUSTOM_REGISTRY.register(Box::new(SIG_RECEIVED_COUNTER.clone())).unwrap(); +MetricsProvider::load_and_run(MY_CUSTOM_REGISTRY.clone()); +``` +The `MetricsProvider` will load the configuration needed and start a server with a `/metrics` endpoint for Prometheus to scrape. + +### Record metrics +All that is left is to use the metrics throughout your code: +```rust +SIG_RECEIVED_COUNTER.inc(); +``` +These will be automatically scraped by the Prometheus service running, and exposed on port `9090`. We plan to allow developers to ship pre-made dashboards together with their modules, to allow Node Operators to have an improved oversight on the modules they are running. diff --git a/docs/docs/developing/custom-modules.md b/docs/docs/developing/custom-modules.md new file mode 100644 index 00000000..cf224448 --- /dev/null +++ b/docs/docs/developing/custom-modules.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 1 +--- + +# Custom Modules + +Commit-Boost aims to provide an open platform for developers to create and distribute commitment protocols sidecars. + +There are two ways to leverage Commit-Boost modularity: + +1. Commit Modules, which request signatures from the proposer, e.g. for preconfirmations ([example](https://github.com/Commit-Boost/commit-boost-client/tree/78bdc47bf89082f4d1ea302f9a3f86f609966b28/examples/da_commit)). +2. PBS Modules, which tweak the default PBS Module with additional logic, e.g. verifying additional constraints in `get_header` ([example](https://github.com/Commit-Boost/commit-boost-client/tree/78bdc47bf89082f4d1ea302f9a3f86f609966b28/examples/status_api)). diff --git a/docs/versioned_docs/version-0.10.0-rc2/architecture/img/architecture.png b/docs/versioned_docs/version-0.10.0-rc2/architecture/img/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..d99333919e973e65e0068c8545f95e99c66ecfca GIT binary patch literal 248750 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 k#ikbdqW+~j5I=&)OsAw **For system context**, see the [Architecture Overview](../architecture/overview.md). + +## Config entry + +Each commit module is declared in the `cb-config.toml` file under a `[[modules]]` entry: + +```toml +[[modules]] +id = "DA_COMMIT" +type = "commit" +docker_image = "my-module-image" +signing_id = "0x6a33a23ef26a4836979edff86c493a69b26ccf0b4a16491a815a13787657431b" +``` + +| Field | Description | +|---|---| +| `id` | A unique identifier for the module (used for JWT scoping and container naming). | +| `type` | **Must be `"commit"`.** This is the only valid value. | +| `docker_image` | The Docker image to run for this module. | +| `signing_id` | A 32-byte identifier used to scope signatures to this module (see [Signing structure](#signing-structure)). | +| (custom) | Additional fields are passed through as opaque config to the module's runtime. | + +:::warning +Setting `type = "pbs"` in a `[[modules]]` entry is **not** a supported path. The configuration parser will reject it at parse time. If you want to extend the PBS binary itself, see [Extending PBS](./extending-pbs.md). +::: + + + +## Rust SDK usage + +While a module can be written in any language, we provide Rust utilities to simplify loading and running modules. Add to your `Cargo.toml`: + +```toml +commit-boost = { git = "https://github.com/Commit-Boost/commit-boost-client", version = "..." } +``` + +Import the prelude: + +```rust +use commit_boost::prelude::*; +``` + +### Loading module config + +Your module will likely need a configuration section for the Node Operator to customize. Define it as a struct and pass it to `load_commit_module_config`: + +```rust +#[derive(Debug, Deserialize)] +struct ExtraConfig { + sleep_secs: u64, +} + +let config = load_commit_module_config::().unwrap(); +let to_sleep = config.extra.sleep_secs; +``` + +The returned `StartCommitModuleConfig` also provides: +- `id` — unique module ID +- `chain` — chain spec +- `signer_client` — a pre-configured `SignerClient` to call the [SignerAPI](/api) + +### Requesting signatures + +At its core, the Signer Service provides a signature on a 32-byte data digest. Signatures are provided using either the validator keys (BLS) or a proxy key (BLS or ECDSA), both on the [Commit-Boost domain](#signing-structure). + +Use `TreeHash` to create a digest from a custom struct: + +```rust +#[derive(TreeHash)] +struct Datagram { + data: u64, +} +``` + +To request a signature, you need a public key. Get available keys: + +```rust +let pubkeys = config.signer_client.get_pubkeys().await.unwrap(); +``` + +JWT tokens are created and refreshed internally by `SignerClient` — each method generates a fresh token with the correct `route`, `exp`, and `payload_hash` claims automatically. No manual token management is needed. + +#### Consensus key signatures + +```rust +let datagram = Datagram { data: 1 }; +let request = SignConsensusRequest::builder(pubkey).with_msg(&datagram); +let signature = config.signer_client.request_consensus_signature(&request).await.unwrap(); +``` + +Where `pubkey` is the validator (consensus) public key. + +#### Proxy key signatures + +First, generate a proxy key for a given consensus key. We support BLS and ECDSA: + +```rust +// BLS proxy +let proxy_delegation = config.signer_client.generate_proxy_key_bls(pubkey).await?; +let proxy_pubkey = proxy_delegation.message.proxy; + +// ECDSA proxy +let proxy_delegation = config.signer_client.generate_proxy_key_ecdsa(pubkey).await?; +let proxy_address = proxy_delegation.message.proxy; +``` + +Then request a signature using the proxy key: + +```rust +// BLS proxy +let datagram = Datagram { data: 1 }; +let request = SignProxyRequest::builder(proxy_pubkey).with_msg(&datagram); +let signature = config.signer_client.request_proxy_signature_bls(&request).await.unwrap(); + +// ECDSA proxy +let datagram = Datagram { data: 1 }; +let request = SignProxyRequest::builder(proxy_address).with_msg(&datagram); +let signature = config.signer_client.request_proxy_signature_ecdsa(&request).await.unwrap(); +``` + +### Signing structure + +For details on the signing structure — including domain separation, nonces, SSZ Merkle tree construction, and the signing ID format — see [Requesting Proposer Commitment Signatures](./prop-commit-signing.md). + +## Metrics + +Modules can record custom metrics that are automatically scraped by Prometheus. + +### Define metrics + +Use the `prometheus` crate: + +```rust +static ref MY_CUSTOM_REGISTRY: Registry = Registry::new_custom(Some("da_commit".to_string()), None).unwrap(); +static ref SIG_RECEIVED_COUNTER: IntCounter = IntCounter::new("signature_received", "successful signature requests received").unwrap(); +``` + +### Start the metrics provider + +```rust +MY_CUSTOM_REGISTRY.register(Box::new(SIG_RECEIVED_COUNTER.clone())).unwrap(); +MetricsProvider::load_and_run(MY_CUSTOM_REGISTRY.clone()); +``` + +This starts a server with a `/metrics` endpoint on the configured port (default `9090`). + +### Record metrics + +```rust +SIG_RECEIVED_COUNTER.inc(); +``` + +For a full reference of available metrics, see the [Metrics catalog](../get_started/running/metrics.md) (once created; the Prometheus scrape target is already configured by the docker-init setup). diff --git a/docs/versioned_docs/version-0.10.0-rc2/developing/environment-setup.md b/docs/versioned_docs/version-0.10.0-rc2/developing/environment-setup.md new file mode 100644 index 00000000..048b2df9 --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/developing/environment-setup.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 3 +--- +# Environment setup + +## Dirk signer + +In order to test Commit-Boost with a Dirk signer, you need to have a running Dirk instance. You can find a complete step-by-step guide on how to setup one in the Dirk's docs [here](https://github.com/attestantio/dirk/blob/master/docs/distributed_key_generation.md). + +If you are using a custom certificate authority, don't forget to add the CA certificate to the TOML config under `signer.dirk.ca_cert_path`. diff --git a/docs/versioned_docs/version-0.10.0-rc2/developing/extending-pbs.md b/docs/versioned_docs/version-0.10.0-rc2/developing/extending-pbs.md new file mode 100644 index 00000000..4bde3ab6 --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/developing/extending-pbs.md @@ -0,0 +1,100 @@ +--- +sidebar_position: 2 +--- + +# Extending PBS + +The PBS binary that ships with Commit-Boost can be extended with custom logic. This is **not** a config-level module declaration like commit modules — instead you replace the PBS binary entirely by implementing the `DefaultBuilderApi` trait. + +## Before you extend PBS + +| You want to... | Use... | +|---|---| +| Request signatures from the proposer's validator keys (BLS/ECDSA) | [Commit Module](./commit-modules.md) — runs as a sidecar alongside PBS | +| Add custom constraints to `get_header`, `submit_block`, or other BuilderAPI methods | Extend PBS — replace the `DefaultBuilderApi` with your own implementation | +| Run custom logic that triggers on each slot but does not modify relay interaction | Commit Module — cheaper to maintain and deploy independently | +| Add new HTTP routes alongside the standard BuilderAPI | Extend PBS — implement `extra_routes()` on your custom `BuilderApi` | + +**Rule of thumb:** if you need to change how relay responses are filtered, validated, or transformed, extend PBS. If you want to request signatures or run slot-triggered logic independently, write a Commit Module. + +## How it works + +The PBS binary ships with the [`DefaultBuilderApi`](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/pbs/src/api.rs) struct, which implements [`BuilderApi`](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/pbs/src/api.rs) with default (MEV-Boost-compatible) behavior for each method. + +The trait covers: + +- `get_header` — fetch the best header from relays +- `get_status` — check relay health +- `submit_block` — publish blinded blocks +- `register_validator` — register validators with relays +- `reload` — hot-reload configuration +- `extra_routes` — add custom HTTP endpoints + +By implementing `BuilderApi` on your own struct, you can override any of these methods while reusing the default MEV-Boost logic by calling the corresponding free functions (`crate::get_header`, etc.) from within your override. + +### Reference example + +See [`examples/status_api/`](https://github.com/Commit-Boost/commit-boost-client/tree/main/examples/status_api) for a complete working example that: + +1. Defines a custom `ExtraConfig` struct with additional TOML fields (`inc_amount`). +2. Creates a custom `BuilderApiState` (`MyBuilderState`) to hold runtime state. +3. Implements `BuilderApi` that overrides `get_status` with custom logging and a counter, and adds a `/check` route via `extra_routes()`. +4. Loads config with `load_pbs_custom_config::()` and starts the service with `PbsService::run::<_, MyBuilderApi>(state)`. + +## Building and running a custom PBS binary + +### Dependencies + +Add the `commit-boost` crate to your `Cargo.toml`: + +```toml +commit-boost = { git = "https://github.com/Commit-Boost/commit-boost-client", version = "..." } +``` + +### Entry point + +Your `main.rs` should: + +1. Define your extra config (if any): + +```rust +#[derive(Debug, Deserialize)] +struct ExtraConfig { + inc_amount: u64, +} +``` + +2. Define your state (if any): + +```rust +#[derive(Clone)] +struct MyBuilderState { /* ... */ } +impl BuilderApiState for MyBuilderState {} +``` + +3. Implement `BuilderApi`: + +```rust +struct MyBuilderApi; + +#[async_trait] +impl BuilderApi for MyBuilderApi { + // Override methods here +} +``` + +4. Load config and run: + +```rust +let (pbs_config, extra) = load_pbs_custom_config::().await?; +let state = PbsState::new(pbs_config, config_path).with_data(MyBuilderState::from_config(extra)); +PbsService::run::(state).await +``` + +### Running + +Compile and run your binary. Set the same environment variables as the default PBS (see [Running with binary](../get_started/running/binary.md)). Your custom PBS handles the same BuilderAPI endpoints plus any extra routes you added. + +## Cross-reference + +For system context on how PBS fits into the Commit-Boost architecture, see [Architecture Overview](../architecture/overview.md). diff --git a/docs/versioned_docs/version-0.10.0-rc2/developing/prop-commit-signing.md b/docs/versioned_docs/version-0.10.0-rc2/developing/prop-commit-signing.md new file mode 100644 index 00000000..2e57ac3d --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/developing/prop-commit-signing.md @@ -0,0 +1,191 @@ +# Requesting Proposer Commitment Signatures with Commit-Boost + +When you create a new validator on the Ethereum network, one of the steps is the generation of a new BLS private key (commonly known as the "validator key" or the "signer key") and its corresponding BLS public key (the "validator pubkey", used as an identifier). Typically this private key will be used by an Ethereum consensus client to sign things such as attestations and blocks for publication on the Beacon chain. These signatures prove that you, as the owner of that private key, approve of the data being signed. However, as general-purpose private keys, they can also be used to sign *other* arbitrary messages not destined for the Beacon chain. + +Commit-Boost takes advantage of this by offering a standard known as **proposer commitments**. These are arbitrary messages (albeit with some important rules), similar to the kind used on the Beacon chain, that have been signed by one of the owner's private keys. Modules interested in leveraging Commit-Boost's proposer commitments can construct their own data in whatever format they like and request that Commit-Boost's **signer service** generate a signature for it with a particular private key. The module can then use that signature to verify the data was signed by that user. + +Commit-Boost supports proposer commitment signatures for both BLS private keys (identified by their public key) and ECDSA private keys (identified by their Ethereum address). + + +## Rules of Proposer Commitment Signatures + +Proposer commitment signatures produced by Commit-Boost's signer service conform to the following rules: + +- Signatures are **unique** to a given EVM chain (identified by its [chain ID](https://chainlist.org/)). Signatures generated for one chain will not work on a different chain. +- Signatures are **unique** to Commit-Boost proposer commitments. The signer service **cannot** be used to create signatures that could be used for other applications, such as for attestations on the Beacon chain. While the signer service has access to the same validator private keys used to attest on the Beacon chain, it cannot create signatures that would get you slashed on the Beacon chain. +- Signatures are **unique** to a particular module. One module cannot, for example, request an identical payload as another module and effectively "forge" a signature for the second module; identical payloads from two separate modules will result in two separate signatures. +- The data payload being signed must be a **32-byte array**, typically serializd as a 64-character hex string with an optional `0x` prefix. The value itself is arbitrary, as long as it has meaning to the requester - though it is typically the 256-bit hash of some kind of data. +- If requesting a signature from a BLS key, the resulting signature will be a standard BLS signature (96 bytes in length). +- If requesting a signature from an ECDSA key, the resulting signature will be a standard Ethereum RSV signature (65 bytes in length). +- Signatures **may** be **unique** per request, using the optional `nonce` field in their requests to indicate a unique sequence that this signature belongs to. + + +## Configuring a Module for Proposer Commitments + +Commit-Boost's signer service must be configured prior to launching to expect requests from your module. There are two main parts: + +1. An entry for your module into [Commit-Boost's configuration file](../get_started/configuration.md#custom-module). This must include a unique ID for your module, the line `type = "commit"`, and include a unique [signing ID](#the-signing-id) for your module. Generally you should provide values for these in your documentation, so your users can reference it when configuring their own Commit-Boost node. + +2. A JWT secret used by your module to authenticate with the signer in HTTP requests. This must be a string that both the Commit-Boost signer can read and your module can read, but no other modules should be allowed to access it. The user should be responsible for determining an appropriate secret and providing it to the Commit-Boost signer service securely; your module will need some way to accept this, typically via a command line argument that accepts a path to a file with the secret or as an environment variable. + +Once the user has configured both Commit-Boost and your module with these settings, your module will be able to authenticate with the signer service and request signatures. + + +## The Signing ID + +Your module's signing ID is a 32-byte value that is used as a unique identifier within the signing process. Proposer commitment signatures incorporate this value along with the data being signed as a way to create signatures that are exclusive to your module, so other modules can't maliciously construct signatures that appear to be from your module. Your module must have this ID incorporated into itself ahead of time, and the user must include this same ID within their Commit-Boost configuration file section for your module. Commit-Boost does not maintain a global registry of signing IDs, so this is a value you should provide to your users in your documentation. + +The Signing ID is decoupled from your module's human-readable name (the `module_id` field in the Commit-Boost configuration file) so that any changes to your module name will not invalidate signatures from previous versions. Similarly, if you don't change the module ID but *want* to invalidate previous signatures, you can modify the signing ID and it will do so. Just ensure your users are made aware of the change, so they can update it in their Commit-Boost configuration files accordingly. + + +## Nonces + +Your module has the option of using **Nonces** for each of its signature requests. Nonces are intended to be unique values that establish a sequence of signature requests, distinguishing one signature from another - even if all of their other payload information is identical. When making a request for a signature, you may include a unique nonce as part of the request; the signature will include it in its data, ensuring that things like replay attacks cannot be used for that signature. + +If you want to use them within your module, your module (or whatever remote backend system it connects to) **will be responsible** for storing, comparing, validating, and otherwise using the nonces. Commit-Boost's signer service by itself **does not** store nonces or track which ones have already been used by a given module. + +In terms of implementation, the nonce format conforms to the specification in [EIP-2681](https://eips.ethereum.org/EIPS/eip-2681). It is an unsigned 64-bit integer, with a minimum value of 0 and a maximum value of `2^64-2`. The field is required and is always mixed into the signing root. Modules that do not use nonces for replay protection should always send `0`; modules that do should use a monotonically increasing value per key. + + +## Structure of a Signature + +The form proposer commitment signatures take depends on the type of signature being requested. BLS signatures take the [standard form](https://eth2book.info/latest/part2/building_blocks/signatures/) (96-byte values). ECDSA (Ethereum EL) signatures take the [standard Ethereum ECDSA `r,s,v` signature form](https://forum.openzeppelin.com/t/sign-it-like-you-mean-it-creating-and-verifying-ethereum-signatures/697). In both cases, the data being signed is a 32-byte hash - the root hash of a composite two-stage [SSZ Merkle tree](https://thogiti.github.io/2024/05/02/Merkleization.html), described below: + +![signature structure](../res/img/prop_commit_tree.png) + + +where, for the sub-tree in blue: + +- `Request Data` is a 32-byte array that serves as the data you want to sign. This is typically a hash of some more complex data on its own that your module constructs. + +- `Signing ID` is your module's 32-byte signing ID. The signer service will load this for your module from its configuration file. + +- `Nonce` is the nonce value for the signature request. This field is required. Modules that do not use replay protection should always send `0`; modules that do should use a monotonically increasing value per key. Conforming with the tree specification, it must be added as a 256-bit unsigned little-endian integer. Most libraries will be able to do this conversion automatically if you specify the field as the language's primitive for 64-bit unsigned integers (e.g., `uint64`, `u64`, `ulong`, etc.). + +- `Chain ID` is the ID of the chain that the Signer service is currently configured to use, as indicated by the [Commit-Boost configuration file](../get_started/configuration.md). This must also be a 256-bit unsigned little-endian integer. + +A Merkle tree must be constructed from these four leaf nodes, and its root hash calculated according to the standard SSZ hash computation rules. This result will be called the "sub-tree root". With this, a second Merkle tree is created using this sub-tree root and a value called the Domain: + +- `Domain` is the 32-byte output of the [compute_domain()](https://eth2book.info/capella/part2/building_blocks/signatures/#domain-separation-and-forks) function in the Beacon specification. The 4-byte domain type in this case is not a standard Beacon domain type, but rather Commit Boost's own domain type: `0x6D6D6F43`. + +The data signed in a proposer commitment is the 32-byte hash root of this new tree (the green `Root` box). + +Many languages provide libraries for computing the root of an SSZ Merkle tree, such as [fastssz for Go](https://github.com/ferranbt/fastssz) or [tree_hash for Rust](https://docs.rs/tree_hash/latest/tree_hash/). When verifying proposer commitment signatures, use a library that supports Merkle tree root hashing, the `compute_domain()` operation, and validation for signatures generated by your key of choice. + +--- + +## Authentication + +Every request to the Signer Service (except the health-check endpoint) must present a Bearer token in the `Authorization` header. + +### Module JWT + +Modules authenticate with a **signed JWT** using the pre-shared secret (`CB_SIGNER_JWT` env var). The JWT is an HS256 token with the following claims: + +| Claim | Type | Required | Description | +|-------|------|----------|-------------| +| `module` | string | always | The module's `id` from the `[[modules]]` entry in `cb-config.toml`. | +| `route` | string | always | The exact request path, e.g. `/signer/v1/get_pubkeys`. | +| `exp` | integer | always | UNIX timestamp for when the token expires. | +| `payload_hash` | string | POST only | Keccak-256 hash of the JSON-encoded request body, with `0x` prefix. Skipped for GET requests. | + +The `payload_hash` claim prevents JWT replay attacks: a token issued for one POST request body cannot be reused with a different body on the same route. + +**Token lifecycle:** Expiry is 5 minutes (`SIGNER_JWT_EXPIRATION` crate constant). Refresh is **client-side** — there is no refresh endpoint. The module generates a new JWT locally using the pre-shared secret. The SDK's `SignerClient::refresh_token()` handles this automatically. + +### Admin token + +Administrative endpoints (`/reload`, `/revoke_jwt`) authenticate with a **separate JWT** signed with the `CB_SIGNER_ADMIN_JWT` secret (env var). Same HS256 algorithm, includes `admin: true` in its claims. + +### Rate limiting + +The signer rate-limits by IP address. Default: **3 failed authentications within 5 minutes** locks a client out. Configurable via `[signer]` in `cb-config.toml`: + +```toml +[signer] +jwt_auth_fail_limit = 3 +jwt_auth_fail_timeout_seconds = 300 +``` + +If running behind a reverse proxy, configure the [reverse proxy header setup](../get_started/configuration.md#rate-limit) so the correct client IP is extracted. + +--- + +## API Quickstart + +Below is a walkthrough of the full Signer API flow using the Rust SDK. The `SignerClient` (returned by `load_commit_module_config`) handles JWT creation, payload hashing, and token refresh automatically — you never craft JWTs by hand. + +```rust +use commit_boost::prelude::*; + +// 1. Load the module config — this gives you a pre-configured SignerClient +#[derive(Debug, Deserialize)] +struct ExtraConfig { /* your module's custom fields */ } + +#[tokio::main] +async fn main() -> eyre::Result<()> { + let config = load_commit_module_config::()?; + let mut client = config.signer_client; + + // 2. List available validator pubkeys + let pubkeys = client.get_pubkeys().await?; + println!("Loaded {} validators", pubkeys.keys.len()); + + // 3. Generate a BLS proxy key for a consensus pubkey + let consensus = pubkeys.keys[0].consensus.clone(); + let delegation = client.generate_proxy_key_bls(consensus.clone()).await?; + let proxy_pubkey = delegation.message.proxy; + + // 4. Request a signature with the consensus key + #[derive(TreeHash)] + struct Datagram { data: u64 } + + let datagram = Datagram { data: 42 }; + let request = SignConsensusRequest::builder(consensus).with_msg(&datagram); + let sig = client.request_consensus_signature(request).await?; + + // 5. Or request a signature with the proxy key + let proxy_request = SignProxyRequest::builder(proxy_pubkey).with_msg(&datagram); + let proxy_sig = client.request_proxy_signature_bls(proxy_request).await?; + + Ok(()) +} +``` + +For a complete working example, see [`examples/da_commit/`](https://github.com/Commit-Boost/commit-boost-client/tree/main/examples/da_commit) in the repository. + +--- + +## Common workflows + +### Requesting a BLS consensus signature +![Generating and using a proxy key](../res/img/consensus-key-sign.png) + +### Generating and using a proxy key +![Generating and using a proxy key](../res/img/proxy-key-sign.png) + +:::tip ECDSA proxy signing with Dirk +ECDSA proxy signing is not available when the signer is using the Dirk backend. Dirk only supports BLS operations. +::: + +--- + +## Error codes + +All error responses follow a consistent JSON format: + +```json +{ + "code": , + "message": "" +} +``` + +| HTTP Status | Meaning | +|-------------|---------| +| `400` | Malformed request body, invalid pubkey format, missing signing ID, or operation not supported by current backend (e.g. ECDSA proxy with Dirk). | +| `401` | Missing or invalid JWT. Token may be expired, signed with wrong secret, or missing required claims. | +| `404` | Requested consensus signer, proxy signer, or module ID does not exist. | +| `429` | Too many failed authentication attempts — retry after the timeout period. | +| `500` | Internal server error. The request was valid but could not be fulfilled. | +| `502` | Signer is running in Dirk mode but Dirk is unreachable. | diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/building.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/building.md new file mode 100644 index 00000000..1b78edf3 --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/building.md @@ -0,0 +1,168 @@ +# Building Commit-Boost from Source + +Commit-Boost's components are all written in [Rust](https://www.rust-lang.org/). This guide will walk you through the setup required to build them from source. It assumes you are on a Debian or Debian-based system (e.g., Ubuntu, Linux Mint, Pop OS). For other systems, please adapt the steps for your system's package manager accordingly. + +## Building via the Docker Builder + +For convenience, Commit-Boost has Dockerized the build environment for Linux `x64` and `arm64` platforms. It utilizes Docker's powerful [buildx](https://docs.docker.com/reference/cli/docker/buildx/) system. All of the prerequisites, cross-compilation tooling, and configuration are handled by the builder image. If you would like to build the Commit-Boost binary and Docker image from source, you are welcome to use the Docker builder process. + +To use the builder, you will need to have [Docker Engine](https://docs.docker.com/engine/install/) installed on your system. Please follow the instructions to install it first. + +:::note +The build system assumes that you've added your user account to the `docker` group with the Linux [post-install steps](https://docs.docker.com/engine/install/linux-postinstall/). If you haven't, then you'll need to run the build script below as `root` or modify it so each call to `docker` within it is run as the root user (e.g., with `sudo`). +::: + +The Docker builder is built into the project's `justfile` which is used to invoke many facets of Commit Boost development. To use it, you'll need to install [Just](https://github.com/casey/just) on your system. + +Use `just --list` to show all of the actions - there are many. The `justfile` provides granular actions, called "recipes", for building just the binaries of a specific crate (such as the CLI, `pbs`, or `signer`), as well as actions to build the Docker images for the PBS and Signer services. + +Below is a brief summary of the relevant ones for building the Commit-Boost artifacts: + +- `build-all ` builds the `commit-boost` binary to `./build/` and creates a Docker image called `commit-boost/commit-boost:` (a unified image that bundles all subcommands), loading it into your local Docker registry. +- `build-bin ` can be used to create the `commit-boost` binary itself. + +The `version` provided will be used to house the output binaries in `./build/`, and act as the version tag for the Docker images when they're added to your local system or uploaded to your local Docker repository. For example, using `$(git rev-parse --short HEAD)` will set the version to the current commit hash. + +If you're interested in building the binaries and/or Docker images for multiple architectures (currently Linux `amd64` and `arm64`), use the variants of those recipes that have the `-multiarch` suffix. Note that building a multiarch Docker image manifest will require the use of a [custom Docker registry](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-docker-registry-on-ubuntu-20-04), as the local registry built into Docker does not have multiarch manifest support. + +## Building Manually + +If you don't want to use the Docker builder, you can compile the Commit-Boost artifacts locally. The following instructions assume a Debian or Debian-based system (e.g., Ubuntu, Linux Mint, Pop OS) for simplicity. For other systems, please adapt any relevant instructions to your environment accordingly. + +### Prerequisites + +Requirements: + +- Rust 1.91+ +- GCC (or another C compiler of your choice) +- OpenSSL development libraries +- Protobuf Compiler (`protoc`) + +Start by installing Rust if you don't already have it. Follow [the official directions](https://www.rust-lang.org/learn/get-started) to install it and bring it up to date. + +Install the dependencies: + +```bash +sudo apt update && sudo apt install -y openssl ca-certificates libssl3 libssl-dev build-essential pkg-config curl +``` + +Install the Protobuf compiler: + +:::note +While many package repositories provide a `protobuf-compiler` package in lieu of manually installing protoc, we've found at the time of this writing that Debian-based ones use v3.21 which is quite out of date. We recommend getting the latest version manually. +::: + +We provide a convenient recipe to install the latest version directly from the GitHub releases page: + +```bash +just install-protoc +``` + +This works on OSX and Linux systems, but you are welcome to download and install it manually as well. + +With the prerequisites set up, pull the repository: + +```bash +git clone https://github.com/Commit-Boost/commit-boost-client +``` + +Check out the `stable` branch which houses the latest release: + +```bash +cd commit-boost-client && git checkout stable +``` + +Finally, update the submodules: + +``` +git submodule update --init --recursive +``` + +Your build environment should now be ready to use. + +### Building the Binary + +To build the binary, run: + +``` +just build-bin +``` + +This will create a binary in `build//`, for example `build/206658b/linux_amd64/`. Confirm that it works: + +``` +./build///commit-boost --version +``` + +You can now use this to generate the Docker Compose file to drive the other modules if desired. See the [configuration](./configuration.md) guide for more information. + +### Verifying the PBS Service + +To verify the PBS service works, create [a TOML configuration](./configuration.md) for the PBS module (e.g., `cb-config.toml`). + +As a quick example, we'll use this configuration that connects to the Flashbots relay on the Hoodi network: + +```toml +chain = "Hoodi" + +[pbs] +port = 18550 +with_signer = true + +[[relays]] +url = "https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net" + +[metrics] +enabled = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "lighthouse" +keys_path = "/tmp/keys" +secrets_path = "/tmp/secrets" +``` + +Set the path to it in the `CB_CONFIG` environment variable and run the binary: + +``` +CB_CONFIG=cb-config.toml ./build///commit-boost pbs +``` + +If it works, you should see output like this: + +``` +2025-05-07T21:09:17.407245Z WARN No metrics server configured +2025-05-07T21:09:17.407257Z INFO starting PBS service version="0.7.0" commit_hash="58082edb1213596667afe8c3950cd997ab85f4f3" addr=127.0.0.1:18550 events_subs=0 chain=Hoodi +2025-05-07T21:09:17.746855Z INFO : new request ua="" relay_check=true method=/eth/v1/builder/status req_id=5c405c33-0496-42ea-a35d-a7a01dbba356 +2025-05-07T21:09:17.896196Z INFO : relay check successful method=/eth/v1/builder/status req_id=5c405c33-0496-42ea-a35d-a7a01dbba356 +``` + +If you do, then the PBS service works. + +### Verifying the Signer Module + +To verify the Signer service works, create [a TOML configuration](./configuration.md) for the Signer module (e.g., `cb-config.toml`). We'll use the example in the PBS section above. + +The signer needs the following environment variables set: + +- `CB_CONFIG` = path of your config file. +- `CB_JWTS` = a dummy key-value pair of [JWT](https://en.wikipedia.org/wiki/JSON_Web_Token) values for various services. Since we don't need them for the sake of just testing the binary, we can use something like `"test_jwts=dummy"`. + +Set these values, create the `keys` and `secrets` directories listed in the configuration file, and run the binary: + +``` +mkdir -p /tmp/keys && mkdir -p /tmp/secrets +CB_CONFIG=cb-config.toml CB_JWTS="test_jwts=dummy" ./build///commit-boost signer +``` + +You should see output like this: + +``` +2025-06-03T04:57:19.815702Z WARN Proxy store not configured. Proxies keys and delegations will not be persisted +2025-06-03T04:57:19.818193Z INFO Starting signing service version="0.8.0-rc.1" commit_hash="3eed5268f07803c55cca7d7e2e14a7017098f797" modules=["test"] endpoint=127.0.0.1:20000 loaded_consensus=0 loaded_proxies=0 +2025-06-03T04:57:19.818229Z WARN No metrics server configured +``` + +If you do, then the binary works. diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/configuration.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/configuration.md new file mode 100644 index 00000000..7abda689 --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/configuration.md @@ -0,0 +1,561 @@ +--- +description: Configure Commit-Boost +--- + +# Configuration + +Commit-Boost needs a configuration file detailing all the services that you want to run. Create a `cb-config.toml` and modify it depending on which modules you plan to run. + +- For a full explanation of all the fields, check out [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/config.example.toml). +- For some additional examples on config presets, check out [here](https://github.com/Commit-Boost/commit-boost-client/tree/main/examples/configs). + +## Minimal PBS setup on Hoodi + +```toml +chain = "Hoodi" + +[pbs] +port = 18550 + +[[relays]] +url = "" + +[metrics] +enabled = true +``` + +You can find a list of MEV-Boost Hoodi relays [here](https://github.com/ethstaker/ethstaker-guides/blob/main/MEV-relay-list.md#mev-relay-list-for-hoodi-testnet). +After the sidecar is started, it will expose a port (`18550` in this example), that you need to point your CL to. This may be different depending on which CL you're running, check out [here](https://docs.flashbots.net/flashbots-mev-boost/getting-started/system-requirements#consensus-client-configuration-guides) for a list of configuration guides. + +:::note +In this setup, the Signer Service will not be started. +::: + +## Signer Service + +Commit-Boost supports both local and remote signers. The Signer Service is responsible for signing the transactions that commit modules generate (***it is not used by the PBS Service***). Please note that only one signer at a time is allowed. + +### Local signer + +To start a local Signer Service, you need to include its parameters in the config file + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "lighthouse" +keys_path = "/path/to/keys" +secrets_path = "/path/to.secrets" +``` + +We currently support Lighthouse, Prysm, Teku, Lodestar, and Nimbus's keystores so it's easier to load the keys. We're working on adding support for additional keystores. These are the expected file structures for each format: + +

+ Lighthouse + +#### File structure: + +``` +├── keys +│   ├── +│   │   └── voting-keystore.json +│   └── +│   └── voting-keystore.json +└── secrets +    ├── +    └── +``` + +#### Config: + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "lighthouse" +keys_path = "keys" +secrets_path = "secrets" +``` + +
+ +
+ Prysm + +#### File structure: + +``` +├── wallet +│   └── direct +│      └── accounts +│         └──all-accounts.keystore.json +└── secrets +    └── password.txt +``` + +#### Config: + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "prysm" +keys_path = "wallet/direct/accounts/all-accounts.keystore.json" +secrets_path = "secrets/password.txt" +``` + +
+ +
+ Teku + +#### File structure: + +``` +├── keys +│   ├── .json +│   └── .json +└── secrets +    ├── .txt +    └── .txt +``` + +#### Config: + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "teku" +keys_path = "keys" +secrets_path = "secrets" +``` + +
+ +
+ Lodestar + +#### File structure: + +``` +├── keys +│   ├── .json +│   └── .json +└── secrets +    └── password.txt +``` + +#### Config: + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "lodestar" +keys_path = "keys" +secrets_path = "secrets/password.txt" +``` + +:::note +All keys have the same password stored in `secrets/password.txt` +::: + +
+ +
+ Nimbus + + #### File structure: + ``` + ├── keys + │   ├── + │   │   └── keystore.json + │   └── + │   └── keystore.json + └── secrets +    ├── +    └── + ``` + + #### Config: + ```toml + [pbs] + ... + with_signer = true + + [signer] + port = 20000 + + [signer.local.loader] + format = "nimbus" + keys_path = "keys" + secrets_path = "secrets" + ``` +
+ +### Proxy keys store + +Proxy keys can be used to sign transactions with a different key than the one used to sign the block. Proxy keys are generated by the Signer Service and authorized by the validator key. Each module can have their own proxy keys, that can be BLS or ECDSA. + +To persist proxy keys across restarts, you must enable the proxy store in the config file. There are 2 options for this: + +
+ File + +The keys are stored in plain text in a file. This method is unsafe and should only be used for testing. + +#### File structure + +``` + +└── + └── bls + ├── + └── +``` + +#### Configuration + +```toml +[signer.local.store] +proxy_dir = "path/to/proxy_dir" +``` + +Where each `` file contains the following: + +```json +{ + "secret": "0x...", + "delegation": { + "message": { + "delegator": "0x...", + "proxy": "0x..." + }, + "signature": "0x..." + } +} +``` + +
+ +
+ ERC2335 + +The keys are stored in a ERC-2335 style keystore, along with a password. This way, you can safely share the keys directory as without the password they are useless. + +#### File structure + +``` +├── +│ └── +│ └── +│ ├── bls/ +│ │ ├── .json +│ │ ├── .sig +│ │ ├── .json +│ │ └── .sig +│ └── ecdsa/ +│ ├── .json +│ └── .sig +└── + └── + └── + ├── bls/ + │ ├── + │ └── + └── ecdsa + └── +``` + +#### Configuration + +```toml +[signer.local.store] +keys_path = "path/to/keys" +secrets_path = "path/to/secrets" +``` + +Where the `.json` files contain ERC-2335 keystore, the `.sig` files contain the signature of the delegation, and `` files contain the password to decrypt the keystores. + +
+ +### Remote signer + +You might choose to use an external service to sign the transactions. For now, two types of remote signers are supported: Web3Signer and Dirk. + +#### Web3Signer + +Web3Signer implements the same API as Commit-Boost, so there's no need to set up a Signer Service. The parameters needed for the remote signer are: + +```toml +[signer.remote] +url = "https://remote.signer.url" +``` + +#### Dirk + +Dirk is a distributed key management system that can be used to sign transactions. In this case the Signer Service is needed as an intermediary between the modules and Dirk. The following parameters are needed: + +```toml +[signer.dirk] +cert_path = "/path/to/client.crt" +key_path = "/path/to/client.key" +secrets_path = "/path/to/secrets" +# Optional parameters +ca_cert_path = "/path/to/ca.crt" +max_response_size_bytes = "4194304" + +# Add one entry like this for each host +[[signer.dirk.hosts]] +server_name = "localhost-1" +url = "https://localhost-1:8081" +wallets = ["SomeWallet", "DistributedWallet"] + +[[signer.dirk.hosts]] +server_name = "localhost-2" +url = "https://localhost-2:8082" +wallets = ["AnotherWallet", "DistributedWallet"] +``` + +- `cert_path` and `key_path` are the paths to the client certificate and key used to authenticate with Dirk. +`wallets` is a list of wallets from which the Signer Service will load all accounts as consensus keys. Generated proxy keys will have format `///`, so accounts found with that pattern will be ignored. +- `secrets_path` is the path to the folder containing the passwords of the generated proxy accounts, which will be stored in `////.pass`. + +Additionally, you can set a proxy store so that the delegation signatures for generated proxy keys are stored locally. As these signatures are not sensitive, the only supported store type is `File`: + +```toml +[signer.dirk.store] +proxy_dir = "/path/to/proxy_dir" +``` + +Delegation signatures will be stored in files with the format `/delegations//.sig`. + +A full example of a config file with Dirk can be found [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/configs/dirk_signer.toml). + + +### TLS + +By default, the Signer Service runs in **insecure** mode, so its API service uses HTTP without any TLS encryption. This is sufficient for testing or if you're running locally within your machine's isolated Docker network and only intend to access it within the confines of your machine. However, for larger production setups, it's recommended to enable TLS - especially for traffic that spans across multiple machines. + +To enable TLS, you must first create a **certificate / key pair**. We **strongly advise** using a well-known Certificate Authority to create and sign the certificate and do not recommend using a self-signed ceriticate / key pair for production environments. + +When configuring TLS support, the Signer Service expects a single folder containing: +- `cert.pem`: The SSL certificate file signed by a certificate authority, in PEM format +- `key.pem`: The private key corresponding to `cert.pem` that will be used for signing TLS traffic, in PEM format + +Specifying it is done within Commit-Boost's configuration file using the `[signer.tls_mode]` table as follows: + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 +... + +[signer.tls_mode] +type = "certificate" +path = "path/to/your/cert/folder" +``` + +Where `path` is the aforementioned folder. It defaults to `./certs` and auto-generates the `.pem` files in self-signed mode if the `type` and `path` are unspecified. + +### Rate limit + +The Signer service implements a rate limit system of 3 failed authentications every 5 minutes. These values can be modified in the config file: + +```toml +[signer] +... +jwt_auth_fail_limit = 3 # The amount of failed requests allowed +jwt_auth_fail_timeout_seconds = 300 # The time window in seconds +``` + +The rate limit is applied to the IP address of the client making the request. By default, the IP is extracted directly from the TCP connection. If you're running the Signer service behind a reverse proxy (e.g. Nginx), you can configure it to extract the IP from a custom HTTP header instead. There're two options: + +- unique: Provides an HTTP header that contains the IP. This header is expected to appear only once in the request. This is common when using `X-Real-IP`, `True-Client-IP`, etc. If a request has multiple values for this header, it will be considered invalid and rejected. +- `rightmost`: Provides an HTTP header that contains a comma-separated list of IPs. The nth rightmost IP in the list is used. If the header appears multiple times, the last occurrence is used. This is common when using `X-Forwarded-For`. + +Examples: + +```toml +[signer.reverse_proxy] +type = "unique" +header = "X-Real-IP" +``` + +```toml +[signer.reverse_proxy] +type = "rightmost" +header = "X-Forwarded-For" +trusted_count = 1 +``` + +Note: `trusted_count` is the number of trusted proxies in front of the Signer service, but the last proxy won't add its address, so the number of skipped IPs is `trusted_count - 1`. See [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-For#trusted_proxy_count) for more info. + +## Custom module + +We currently provide a test module that needs to be built locally. To build the module run: + +```bash +just docker-build-test-modules +``` + +:::note +We use `just` as command runner. If you don't have it installed, either install it from https://github.com/casey/just or run the commands manually from the `justfile` at the root of the repo. +::: + +This will create a Docker image called `test_da_commit` that periodically requests signatures from the validator. + +The `cb-config.toml` file needs to be updated as follows: + +```toml +[pbs] +port = 18550 + +[[relays]] +url = "" + +[signer] +port = 20000 + +[signer.loader] +format = "lighthouse" +keys_path = "/path/to/keys" +secrets_path = "/path/to.secrets" + +[metrics] +enabled = true + +[[modules]] +id = "DA_COMMIT" +type = "commit" +docker_image = "test_da_commit" +signing_id = "0x6a33a23ef26a4836979edff86c493a69b26ccf0b4a16491a815a13787657431b" +sleep_secs = 5 +``` + +A few things to note: + +- We now added a `signer` section which will be used to create the Signer Service. +- There is now a `[[modules]]` section which at a minimum needs to specify the module `id`, `type` and `docker_image`. For modules with type `commit`, which will be used to access the Signer Service and request signatures for preconfs, you will also need to specify the module's unique `signing_id` (see [the propser commitment documentation](../developing/prop-commit-signing.md)). Additional parameters needed for the business logic of the module will also be here. + +To learn more about developing modules, check out [here](/category/developing). + + +## Vouch + +[Vouch](https://github.com/attestantio/vouch) is a multi-node validator client built by [Attestant](https://www.attestant.io/). Vouch is particular in that it also integrates an MEV-Boost client to interact with relays. The Commit-Boost PBS Service is compatible with the Vouch `blockrelay` since it implements the same Builder-API as relays. For example, depending on your setup and preference, you may want to fetch headers from a given relay using Commit-Boost vs using the built-in Vouch `blockrelay`. + +### Configuration + +Get familiar on how to set up Vouch [here](https://github.com/attestantio/vouch/blob/master/docs/getting_started.md). + +You can setup Commit-Boost with Vouch in two ways. +For simplicity, assume that in Vouch `blockrelay.listen-address: 127.0.0.0:19550` and in Commit-Boost `pbs.port = 18550`. + +#### Beacon Node to Vouch + +In this setup, the BN Builder-API endpoint will be pointing to the PBS Service (e.g. for Lighthouse you will need the flag `--builder=http://127.0.0.0:18550`). + +Modify the `blockrelay.config` file to add Commit-Boost: + +```json +"relays": { + "http://127.0.0.0:18550": {} +} +``` + +#### Beacon Node to Commit-Boost + +In this setup, the BN Builder-API endpoint will be pointing to the PBS module (e.g. for Lighthouse you will need the flag `--builder=http://127.0.0.0:18550`). + +This will bypass the `blockrelay` entirely so make sure all relays are properly configured in the `[[relays]]` section. + +:::note +This approach could also work if you have a multi-beacon-node setup, where some BNs fetch directly via Commit-Boost while others go through the `blockrelay`. +::: + +### Notes + +- It's up to you to decide which relays will be connected via Commit-Boost (`[[relays]]` section in the `toml` config) and which via Vouch (additional entries in the `relays` field). Remember that any rate-limit will be shared across the two sidecars, if running on the same machine. +- You may occasionally see a `timeout` error during registrations, especially if you're running a large number of validators in the same instance. This can resolve itself as registrations will be cleared later in the epoch when relays are less busy processing other registrations. Alternatively you can also adjust the `builderclient.timeout` option in `.vouch.yml`. + +## Hot Reload + +Commit-Boost supports hot-reloading the configuration file. This means that you can modify the `cb-config.toml` file and apply the changes without needing to restart the modules. To do this, you need to send a `POST` request to the `/reload` endpoint on each module you want to reload the configuration. In the case the module is running in a Docker container without the port exposed (like the signer), you can use the following command: + +```bash +docker compose -f cb.docker-compose.yml exec cb_signer curl -X POST http://localhost:20000/reload +``` + +### Signer Service reload + +When the signer receives a reload request it re-reads the configuration file and environment variables, rebuilding its internal state to match: + +- **New modules** added to the config are registered with the signer. +- **Removed modules** are dropped from the signer's access list. +- **JWT secrets and admin secret** are reset to their current values from the environment variables. +- Any runtime changes from previous `/revoke_jwt` or `/reload` calls are reverted. + +The request body accepts 2 optional override parameters, applied on top of the config: + +- `jwt_secrets`: a comma-separated list of `=` pairs to override specific module secrets. Only modules present in the config can be overridden. +- `admin_secret`: a string to override the admin JWT secret. + +If the body is empty, the signer state is simply synced to match the config. + +#### Common patterns + +**Add a new module without restarting:** +1. Add the `[[modules]]` entry to `cb-config.toml`. +2. Set the new module's JWT secret in the signer's environment (`CB_SIGNER_JWT_SECRETS`). +3. Send `POST /reload` with an empty body. The signer picks up the new module from config. +4. Start the new module container with the matching JWT secret. + +**Rotate a JWT secret remotely:** +Send `POST /reload` with the new secret in the body. The module must already exist in the config. This is useful for scripted rotation without SSH access to edit config files. + +**Revoke a compromised module immediately:** +Send `POST /revoke_jwt` with the module ID. This removes the module from the signer's access list without touching the config. The next `/reload` will restore the module if it is still in the config, so remove it from config as well if the revocation should be permanent. + +#### Footguns + +- **Body overrides are not persisted.** If the signer crashes or restarts after a body-based secret rotation, it falls back to the config/environment values. The module container will still have the rotated secret and authentication will fail. To avoid this, update the environment variable to match after rotating via the body. +- **Reload reverts revocations.** If you revoke a module with `/revoke_jwt` but leave it in the config, the next `/reload` without a body override will re-add it from the config baseline. Always remove revoked modules from the config to make the revocation permanent. +- **Override validation is strict.** If the body references a module ID that does not exist in the config, the entire reload request is rejected and no changes are applied. This prevents typos from silently failing. + +### Notes + +- The hot reload feature is available for PBS Service (both default and custom) and Signer Service. +- Changes related to listening hosts and ports will not been applied, as it requires the server to be restarted. +- If running in Docker containers, changes in `volumes` will not be applied, as it requires the container to be recreated. Be careful if changing a path to a local file as it may not be accessible from the container. +- Custom PBS Service may override the default behaviour of the hot reload feature to parse extra configuration fields. Check the [examples](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/status_api/src/main.rs) for more details. +- In case the reload fails (most likely because of some misconfigured option), the server will return a 500 error and the previous configuration will be kept. diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/mux-key-loaders.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/mux-key-loaders.md new file mode 100644 index 00000000..7837b972 --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/mux-key-loaders.md @@ -0,0 +1,242 @@ +--- +description: Mux (multiplexer) configuration and key loader types +--- + +# Mux key loaders + +The PBS multiplexer (AKA *mux*) lets you route different validators to different relay sets or timing game configurations. Instead of a single `[[relays]]` list for all your validators, you declare one or more `[[mux]]` entries that match specific validator pubkeys to custom relay and timing settings. + +Use a mux when you need: + +- **Different relay sets for different validators** — for example, Lido or SSV node operators who send some validators to an operator-specific relay while the rest use the global relay set. +- **Per-group timing game parameters** — `timeout_get_header_ms` and `late_in_slot_time_ms` can be set per-mux, overriding the PBS defaults for those validators. +- **Dynamic key loading from on-chain or external sources** — the mux key loaders (File, URL, Registry) populate the mux's validator set automatically, so you don't have to list hundreds or thousands of pubkeys by hand. + +Mux entries are an optional addition to the `[[relays]]` section. If you don't need per-validator routing, you can ignore this page entirely. + +--- + +## Mux entry matching + +Each `[[mux]]` entry declares a set of validator pubkeys. The mux system enforces that these sets are **disjoint** — a validator pubkey should appear in at most one mux entry. If a pubkey is duplicated across mux entries, the sidecar will refuse to start. + +Matching uses **first-match semantics**: when the PBS receives a request for a validator, it checks each mux entry in the order they appear in the config file. The first mux whose pubkey set contains the validator's key wins. Validators that don't match any mux entry fall through to the global `[[relays]]` configuration. + +```toml +# Global relays — used for validators not matching any mux +[[relays]] +id = "global-relay" +url = "..." + +# First mux entry — checked first +[[mux]] +id = "timing-sensitive" +validator_pubkeys = [ + "0x80c7f782b2467c5898c5516a8b6595d75623960b4afc4f71ee07d40985d20e117ba35e7cd352a3e75fb85a8668a3b745", +] + +# A relay used by this mux +[[mux.relays]] +id = "fast-relay" +url = "..." + +# Another relay used by this mux +[[mux.relays]] +id = "robust-relay" +url = "..." + +# ... +# Multiple muxes can be defined repeating this pattern +``` + +### Matching rules summary + +| Condition | Behaviour | +|---|---| +| Pubkey matches a mux entry | That mux's relays and timing config are used | +| Pubkey appears in multiple mux entries | Validation error — sidecar fails to start | +| Pubkey doesn't match any entry | Falls through to global `[[relays]]` | +| A mux has no pubkeys (empty set) | Validation error — each mux must have at least one pubkey | + +The pubkey set for a mux can come from two sources combined: +1. **Inline `validator_pubkeys`** — a list of hex-prefixed BLS pubkeys in the config file itself. +2. **A loader plugin** — loads additional keys from a file, URL, or on-chain registry. Keys from the loader are merged into the mux's pubkey set. + +--- + +## Key loaders + +Key loaders are how you populate a mux with validator pubkeys without listing them manually. They are configured via the `loader` field inside a `[[mux]]` entry. + +### File loader + +Loads pubkeys from a flat JSON file on disk. + +**Schema:** A JSON array of hex-prefixed BLS public key strings. + +```json +[ + "0x8160998addda06f2956e5d1945461f33dbc140486e972b96f341ebf2bdb553a0e3feb127451f5332dd9e33469d37ca67", + "0x87b5dc7f78b68a7b5e7f2e8b9c2115f968332cbf6fc2caaaaa2c9dc219a58206b72c924805f2278c58b55790a2c3bf17", + "0x89e2f50fe5cd07ed2ff0a01340b2f717aa65cced6d89a79fdecc1e924be5f4bbe75c11598bb9a53d307bb39b8223bc52" +] +``` + +**Config:** Specify the path relative to the config file, or as an absolute path. + +```toml +[[mux]] +id = "my-mux" +loader = "./path/to/keys.json" + +[[mux.relays]] +id = "my-relay" +url = "..." +``` + +**Environment variable override:** The path can be overridden at runtime via `CB_MUX_PATH_{id}` where `{id}` is the mux identifier. For a mux with `id = "lido-mux"`, the variable would be `CB_MUX_PATH_lido-mux`. This is useful when you want to keep the config file the same across deployments but point to different key files. + +```bash +export CB_MUX_PATH_lido-mux="/path/to/override.json" +``` + +--- + +### URL loader + +Loads the same JSON schema from an HTTP(S) endpoint. The endpoint must return a JSON array of hex-prefixed BLS public keys (identical format to the File loader). + +```toml +[[mux]] +id = "url-mux" +loader = { url = "https://keys.example.com/validators.json" } + +[[mux.relays]] +id = "my-relay" +url = "..." +``` + +**Security:** HTTPS is recommended. HTTP URLs work but trigger a warning at startup. + +**Request behaviour:** +- One-shot GET request — no retry logic. +- Timeout is controlled by `default_pbs.http_timeout_seconds` (default: 10s). +- The response body is read in full and parsed as JSON. + +--- + +### Registry loader + +Loads validator pubkeys from an on-chain or network registry. This resolves pubkeys automatically from a data source that stays in sync as validators are added or removed. + +Two registries are currently supported: + +| Registry | `registry` value | Key source | Authentication | +|---|---|---|---| +| Lido | `"lido"` | On-chain contract via RPC | RPC URL (from `[pbs]` config) | +| SSV | `"ssv"` | SSV node API or public API | SSV API URLs (from `[pbs]` config) | + +#### Lido registry + +Reads validator pubkeys from Lido's on-chain `NodeOperatorsRegistry` or `CSModule registry`, depending on the module type. The sidecar connects to the configured RPC endpoint and calls the contract's `getSigningKeys` method with pagination. + +**Requirements:** `rpc_url` must be set in the `[pbs]` configuration. + +```toml +[pbs] +port = 18550 +rpc_url = "https://ethereum-rpc.publicnode.com" + +[[mux]] +id = "lido-mux" +loader = { registry = "lido", node_operator_id = 8, lido_module_id = 1 } + +[[mux.relays]] +id = "lido-relay" +url = "..." +``` + +**Fields:** + +| Field | Type | Required | Description | +|---|---|---|---| +| `registry` | string | Yes | Must be `"lido"` | +| `node_operator_id` | integer | Yes | Lido node operator ID | +| `lido_module_id` | integer | No (default: `1`) | Lido staking module ID | +| `enable_refreshing` | boolean | No (default: `false`) | Whether to periodically refresh keys at runtime (see below) | + +**Chain support:** + +| Chain | `lido_module_id` | Module type | Contract type | +|---|---|---|---| +| Mainnet | 1 | Curated (NodeOperatorsRegistry) | `NodeOperatorsRegistry` | +| Mainnet | 2 | SimpleDVT | `NodeOperatorsRegistry` | +| Mainnet | 3 | Community Staking (CSM) | `CSModule` | +| Holesky | 1 | Curated (NodeOperatorsRegistry) | `NodeOperatorsRegistry` | +| Holesky | 2 | SimpleDVT | `NodeOperatorsRegistry` | +| Holesky | 3 | Sandbox | `NodeOperatorsRegistry` | +| Holesky | 4 | Community Staking (CSM) | `CSModule` | +| Hoodi | 1 | Curated (NodeOperatorsRegistry) | `NodeOperatorsRegistry` | +| Hoodi | 2 | SimpleDVT | `NodeOperatorsRegistry` | +| Hoodi | 3 | Sandbox | `NodeOperatorsRegistry` | +| Hoodi | 4 | Community Staking (CSM) | `CSModule` | +| Sepolia | 1 | — | `NodeOperatorsRegistry` | + +Module ids 1 and 2 use the `NodeOperatorsRegistry` contract. Module id 3 (Mainnet) and module id 4 (Holesky / Hoodi) use the `CSModule` (Community Staking Module) contract, which has a different ABI. The sidecar detects the module type automatically based on chain and module id. + +**Dynamic refreshing:** When `enable_refreshing = true`, the sidecar periodically re-fetches keys from the on-chain registry at runtime. New validators that register with the node operator are picked up automatically without a restart. This is useful for growing node operator deployments where you don't want to restart the sidecar every time a new validator is added. + +--- + +#### SSV registry + +Loads validator pubkeys from the SSV network. The sidecar first tries to fetch keys from your local SSV node API. If that fails, it falls back to the public SSV API. + +**Requirements:** `ssv_node_api_url` and `ssv_public_api_url` must be set in the `[pbs]` configuration. + +```toml +[pbs] +port = 18550 +ssv_node_api_url = "http://localhost:3030/" +ssv_public_api_url = "https://api.ssv.network/" + +[[mux]] +id = "ssv-mux" +loader = { registry = "ssv", node_operator_id = 200 } + +[[mux.relays]] +id = "ssv-relay" +url = "..." +``` + +**Fields:** + +| Field | Type | Required | Description | +|---|---|---|---| +| `registry` | string | Yes | Must be `"ssv"` | +| `node_operator_id` | integer | Yes | SSV node operator ID | +| `enable_refreshing` | boolean | No (default: `false`) | Whether to periodically refresh keys at runtime | + +**API sources (fallback chain):** + +1. **SSV node API** (preferred): `GET {ssv_node_api_url}validators` with a JSON body `{"operators": [node_operator_id]}`. Response contains a `data` array of validators with hex-encoded `public_key` fields. +2. **Public API** (fallback): `GET {ssv_public_api_url}{chain}/validators/in_operator/{node_operator_id}?perPage=100&page={page}` with pagination. Response contains a `validators` array and `pagination` object. + +If the node API call fails (timeout, connection error, etc.), the sidecar logs a warning and falls back to the public API. + +**Chains supported:** Mainnet, Holesky, and Hoodi. + +--- + +## Reference config + +For a complete working example with multiple mux entries — File loader, Lido registry, and SSV registry — see: + +- [`examples/configs/pbs_mux.toml`](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/configs/pbs_mux.toml) + +--- + +## See also + +- [Configuration reference](./configuration.md) — full config field listing +- [Signer API](../developing/prop-commit-signing.md#api-quickstart) — signing API quickstart and authentication diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/overview.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/overview.md new file mode 100644 index 00000000..27d77cfb --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/overview.md @@ -0,0 +1,87 @@ +--- +description: Initial setup +--- + +# Overview + +Commit-Boost is primarily based on [Docker](https://www.docker.com/) to enable modularity, sandboxing and cross-platform compatibility. It is also possible to run Commit-Boost [natively](/get_started/running/binary) without Docker. + +Each component roughly maps to a container: from a single `.toml` config file, the node operator can specify which services they want to run, and Commit-Boost takes care of spinning up the services and creating links between them. +Commit-Boost ships with two core services: + +- A PBS service which implements the [BuilderAPI](https://ethereum.github.io/builder-specs/) for [MEV Boost](https://docs.flashbots.net/flashbots-mev-boost/architecture-overview/specifications). +- A Signer Service, which implements the [Signer API](/api) and provides the interface for modules to request proposer commitments. + +## Setup + +The Commit-Boost binary can create a dynamic `docker-compose` file, with services and ports already set up. + +Whether you're using Docker or running the binaries natively, you can compile from source directly from the repo, or download binaries and fetch docker images from the official releases. + +## Binaries and images + +Find the latest releases at https://github.com/Commit-Boost/commit-boost-client/releases. + +The services are also published at [each release](https://github.com/orgs/Commit-Boost/packages?repo_name=commit-boost-client). + +### From source + +Requirements: + +- Rust 1.91 + +:::note +Run `rustup update` to update Rust and Cargo to the latest version +::: + +```bash +# Pull the repo +git clone https://github.com/Commit-Boost/commit-boost-client + +# Enter the repo +cd commit-boost-client + +# Init submodules +git submodule update --init --recursive +``` + +:::note +If you get an `openssl` related error try running: `apt-get update && apt-get install -y openssl ca-certificates libssl3 libssl-dev build-essential pkg-config` +::: + +Each Commit-Boost release commit is located as a versioned file in the `./releases` folder. For example `.releases/v0.10.0-rc1.yml` contains: +```yml +commit: "efda6a67f43b0ddb400c454a65b055d59acc7d6c" +reason: "Substantial change to harden security in the signer service, improve build and release process, quality of life improvements to logging, and more support for SSV integrations. Contains breaking changes to the signer service and how the CLI is invoked." +``` + +To locally build that release version, checkout the commit: + +```bash +# Switch the the specific release +git checkout efda6a67f43b0ddb400c454a65b055d59acc7d6c + +# Build the binary +just build-bin $(git rev-parse --short HEAD) +``` + +The binary will be stored in `build//`, for example `build/efda6a6/linux_amd64/`: + +You can confirm the binary was built successfully by navigating to the build directory and checking its version: +```bash +./commit-boost --version +``` + +### Docker + +Building the service images requires the binary to be built using the above instructions first, since it will be copied into those images. The `build-all` command compiles the binary and then creates the image in one step: + +```bash +# Switch the the specific release +git checkout efda6a67f43b0ddb400c454a65b055d59acc7d6c + +# Build the binary and create the image +just build-all $(git rev-parse --short HEAD) +``` + +This will create a local image called `commit_boost/commit-boost:` that can be used to run the PBS and Signer services, as well as the CLI. Make sure to use this image in the `docker_image` field in the `[pbs]` and `[signer]` sections of the `.toml` config file. diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/running/binary.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/binary.md new file mode 100644 index 00000000..07a1e2ea --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/binary.md @@ -0,0 +1,70 @@ +--- +description: Run Commit-Boost modules natively +--- + +# Binary + +:::warning +Running the modules natively means you opt out of the security guarantees made by Docker and it's up to you how to setup and ensure the modules run safely. +::: + +## Setup + +Get the binary of the module either by compiling from source or by downloading a [published release](https://github.com/Commit-Boost/commit-boost-client/releases). + +Services need environment variables to work correctly. + +### Common + +- `CB_CONFIG`: required, path to the `.toml` config file. +- `CHAIN_SPEC_ENV`: optional, path to a chain spec file. This will override the `[chain]` field in the `.toml` config. +- `CB_METRICS_PORT`: optional, port where to expose the `/metrics` endpoint for Prometheus. +- `CB_LOGS_DIR`: optional, directory to store logs. This will override the directory in the `.toml` config. + +### PBS Service + +- `CB_PBS_ENDPOINT`: optional, override to specify the `IP:port` endpoint where the PBS Service will open the port for the beacon node. +- `CB_MUX_PATH_{ID}`: optional, override where to load mux validator keys for mux with `id=\{ID\}`. + +### Signer Service + +- `CB_JWTS`: required if any commit modules are configured, comma-separated list of `module_id=jwt_secret` pairs for module authentication. +- `CB_SIGNER_ADMIN_JWT`: secret to use for admin JWT. +- `CB_SIGNER_JWT_AUTH_FAIL_LIMIT`: optional, override the number of failed JWT auth attempts before rate-limiting a client (default: `3`). +- `CB_SIGNER_JWT_AUTH_FAIL_TIMEOUT_SECONDS`: optional, override the rate-limit timeout window in seconds (default: `300`). +- `CB_SIGNER_ENDPOINT`: optional, override to specify the `IP:port` endpoint to bind the signer server to. +- `CB_SIGNER_TLS_CERTIFICATES`: path to the TLS certificates for the server. +- For loading keys we currently support: + - `CB_SIGNER_LOADER_FILE`: path to a `.json` with plaintext keys (for testing purposes only). + - `CB_SIGNER_LOADER_KEYS_DIR` and `CB_SIGNER_LOADER_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Signer config](../configuration/#signer-module) for more info). +- For storing proxy keys we currently support: + - `CB_PROXY_STORE_DIR`: directory where proxy keys and delegations will be saved in plaintext (for testing purposes only). + - `CB_PROXY_KEYS_DIR` and `CB_PROXY_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Proxy keys store](../configuration/#proxy-keys-store) for more info). +- For Dirk remote signer the following envs are available (see [Dirk config](../configuration/#dirk) for more info): + - `CB_SIGNER_DIRK_CERT_FILE`: required, path to the client certificate file. + - `CB_SIGNER_DIRK_KEY_FILE`: required, path to the client key file. + - `CB_SIGNER_DIRK_SECRETS_DIR`: required, path to the secrets directory. + - `CB_SIGNER_DIRK_CA_CERT_FILE`: optional, path to the CA certificate file. + +### Modules + +- `CB_MODULE_ID`: required, unique id of the module. + +#### Commit modules + +- `CB_SIGNER_URL`: required, url to the Signer Service server. +- `CB_SIGNER_JWT`: required, jwt to use for signature requests. + +Modules might also have additional envs required, which should be detailed by the maintainers. + +## Start + +After creating the `cb-config.toml` file, setup the required envs and run the binary. For example: + +```bash +CB_CONFIG=./cb-config.toml commit-boost pbs +``` + +## Security + +Running the modules natively means you opt out of the security guarantees made by Docker and it's up to you how to setup and ensure the modules run safely. diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/running/docker.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/docker.md new file mode 100644 index 00000000..1a366b8b --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/docker.md @@ -0,0 +1,314 @@ +--- +description: Run Commit-Boost with Docker +--- + +# Docker +The Commit-Boost program generates a dynamic `docker-compose.yml` file using the provided `.toml` config file. This is the recommended approach as Docker provides sandboxing of the containers from the rest of your system. + +## Init + +First run: +```bash +commit-boost init --config cb-config.toml +``` +This will create two files: +- `cb.docker-compose.yml` which contains the full setup of the Commit-Boost services. +- `.cb.env` with local env variables, including JWTs for modules, only created if the Signer Service is enabled. + +## Start + +To start Commit-Boost run: +```bash +docker compose --env-file ".cb.env" -f ".cb.docker-compose.yml" up -d +``` + +This will run all the configured services, including PBS, signer and commit modules (if any). + +The MEV-Boost server will be exposed at `pbs.port` from the config, `18550` in our example. You'll need to point your CL/Validator client to this port to be able to source blocks from the builder market. + +## Logs +To check the logs, run: +```bash +docker compose --env-file ".cb.env" -f ".cb.docker-compose.yml" logs -f +``` +This will currently show all logs from the different services via the Docker logs interface. Logs are also optionally saved to file, depending on your `[logs]` configuration. + +## Stop + +To stop all the services and cleanup, simply run: +```bash +docker compose --env-file ".cb.env" -f ".cb.docker-compose.yml" down +``` +This will wind down all services and clear internal networks and file mounts. + + +## Example with PBS Only + +This section provides an example of a configuration where only the PBS service is run with its default configuration, and the Docker compose file produced by that configuration. + +All of PBS's parameters are controlled via the [Commit-Boost TOML configuration file](../configuration.md); the service cannot currently be controlled with command-line arguments. Therefore it is crucial to ensure that you have a configuration file present with all of the settings you require *before* starting the service, as this file will be mounted within the Docker container as a volume in read-only mode. + +Below is a simple configuration for running only the PBS service on the Hoodi network with two relays: + +``` +chain = "Hoodi" + +[pbs] +docker_image = "ghcr.io/commit-boost/commit-boost:v0.9.6" +relay_check = true +wait_all_registrations = true + +[[relays]] +id = "abc" +url = "http://0xa1cec75a3f0661e99299274182938151e8433c61a19222347ea1313d839229cb4ce4e3e5aa2bdeb71c8fcf1b084963c2@abc.xyz" + +[[relays]] +id = "def" +url = "http://0xa1cec75a3f0661e99299274182938151e8433c61a19222347ea1313d839229cb4ce4e3e5aa2bdeb71c8fcf1b084963c2@def.xyz" +``` + +Note that there are many more parameters that Commit-Boost supports, but they are all omitted and thus will use their default options. For a full description of the default options within the config file, go to the [annotated configuration example](https://github.com/Commit-Boost/commit-boost-client/blob/main/config.example.toml). + +The relays here are placeholder for the sake of the example; for a list of actual relays, visit [the EthStaker relay list](https://github.com/eth-educators/ethstaker-guides/blob/main/MEV-relay-list.md). + + +### Commit-Boost Init Output + +Run `commit-boost init --config cb-config.toml` with the above configuration, the program will produce the following Docker Compose file: + +``` +services: + cb_pbs: + healthcheck: + test: curl -f http://localhost:18550/eth/v1/builder/status + interval: 30s + timeout: 5s + retries: 3 + start_period: 5s + image: ghcr.io/commit-boost/commit-boost:v0.9.6 + container_name: cb_pbs + ports: + - 127.0.0.1:18550:18550 + environment: + CB_CONFIG: /cb-config.toml + CB_PBS_ENDPOINT: 0.0.0.0:18550 + volumes: + - ./test.toml:/cb-config.toml:ro + command: + - pbs +``` + +This will run the PBS service in a container named `cb_pbs`. + + +### Configuration File Volume + +The program creates a read-only volume binding for the config file, which the PBS service needs to run. The Docker compose file that it creates with the `init` command, `cb.docker-compose.yml`, will be placed into your current working directory when you run the program. The volume source will be specified as a *relative path* to that working directory, so it's ideal if the config file is directly within your working directory (or a subdirectory). If you need to specify an absolute path for the config file, you can adjust the `volumes` entry within the Docker compose file manually after its creation. + +Since this is a volume, the PBS service container will reload the file from disk any time it's restarted. That means you can change the file any time after the Docker compose file is created to tweak PBS's parameters, but it also means the config file must stay in the same location; if you move it, the PBS container won't be able to mount it anymore and fail to start unless you manually adjust the volume's source location. + + +### Networking + +The program will force the PBS service to bind to `0.0.0.0` within Docker's internal network so other Docker containers can access it, but it will only expose the API port (default `18550`) to `127.0.0.1` on your host machine. That way any processes running on the same machine can access it on that port. If you want to open the port for access across your entire network, not just your local machine, you can add the line: + +``` +host = "0.0.0.0" +``` + +to the `[pbs]` section in the configuration. This will cause the resulting `ports` entry in the Docker compose file to become: + +``` +ports: + - 0.0.0.0:18550:18550 +``` + +though you will need to add an entry to your local machine's firewall software (if applicable) for other machines to access it. + +Currently, the program will always export the PBS service's API port in one of these two ways. If you don't want to expose it at all, so it can only be accessed by other Docker containers running within Docker's internal network, you will need to manually remove the `ports` entry from the Docker compose file after it's been created: + +``` +ports: [] +``` + + +## Example with PBS, Signer, and a Commit Module + +In this scenario we will be running the PBS service, the Signer service, and a commit module (`DA_COMMIT`) that interacts with the Signer service's API. + +All of both PBS's and the Signer's parameters are controlled via the [Commit-Boost TOML configuration file](../configuration.md); the services cannot currently be controlled with command-line arguments. Therefore it is crucial to ensure that you have a configuration file present with all of the settings you require *before* starting the services, as this file will be mounted within the Docker containers as a volume in read-only mode. + +Below is a simple configuration for running only the three modules on the Hoodi network with two relays, extended from the prior scenario above: + +``` +chain = "Hoodi" + +[pbs] +docker_image = "ghcr.io/commit-boost/commit-boost:v0.9.6" +relay_check = true +wait_all_registrations = true + +[[relays]] +id = "abc" +url = "http://0xa1cec75a3f0661e99299274182938151e8433c61a19222347ea1313d839229cb4ce4e3e5aa2bdeb71c8fcf1b084963c2@abc.xyz" + +[[relays]] +id = "def" +url = "http://0xa1cec75a3f0661e99299274182938151e8433c61a19222347ea1313d839229cb4ce4e3e5aa2bdeb71c8fcf1b084963c2@def.xyz" + +[signer] +docker_image = "ghcr.io/commit-boost/commit-boost:v0.9.6" +port = 20000 + +[signer.local.loader] +format = "lighthouse" +keys_path = "./keys" +secrets_path = "./secrets" + +[[modules]] +id = "DA_COMMIT" +type = "commit" +docker_image = "test_da_commit" +signing_id = "0x6a33a23ef26a4836979edff86c493a69b26ccf0b4a16491a815a13787657431b" +sleep_secs = 5 +``` + +Note that there are many more parameters that Commit-Boost supports, but they are all omitted and thus will use their default options. For a full description of the default options within the config file, go to the [annotated configuration example](https://github.com/Commit-Boost/commit-boost-client/blob/main/config.example.toml). + +The relays here are placeholder for the sake of the example; for a list of actual relays, visit [the EthStaker relay list](https://github.com/eth-educators/ethstaker-guides/blob/main/MEV-relay-list.md). + +In this scenario there are two folders in the same directory as the configuration file (the working directory): `keys` and `secrets`. These correspond to the folders containing the [EIP-2335 keystores](../configuration.md#local-signer) and secrets in Lighthouse format. For your own keys, adjust the `format` parameter within the configuration and directory paths accordingly. + +Note that if either the `docker_image` under the `[signer]` or `[pbs]` is left unspecified it will default to `ghcr.io/commit-boost/commit-boost:latest`. Make sure to specify both if you intend to use versions other than the latest release. + + +### Commit-Boost Init Output + +Run `commit-boost init --config cb-config.toml` with the above configuration, the program will produce two files: + +- `cb.docker-compose.yml` +- `.cb.env` + +The Docker compose file will have these contents: + +``` +services: + cb_da_commit: + image: test_da_commit + container_name: cb_da_commit + environment: + CB_MODULE_ID: DA_COMMIT + CB_CONFIG: /cb-config.toml + CB_SIGNER_JWT: ${CB_JWT_DA_COMMIT} + CB_SIGNER_URL: http://cb_signer:20000 + volumes: + - ./test.toml:/cb-config.toml:ro + networks: + - signer_network + depends_on: + cb_signer: + condition: service_healthy + cb_pbs: + healthcheck: + test: curl -f http://localhost:18550/eth/v1/builder/status + interval: 30s + timeout: 5s + retries: 3 + start_period: 5s + image: ghcr.io/commit-boost/commit-boost:v0.9.6 + container_name: cb_pbs + ports: + - 127.0.0.1:18550:18550 + environment: + CB_CONFIG: /cb-config.toml + CB_PBS_ENDPOINT: 0.0.0.0:18550 + volumes: + - ./test.toml:/cb-config.toml:ro + command: + - pbs + cb_signer: + healthcheck: + test: curl -k -f http://cb_signer:20000/status + interval: 30s + timeout: 5s + retries: 3 + start_period: 5s + image: ghcr.io/commit-boost/commit-boost:v0.9.6 + container_name: cb_signer + ports: + - 127.0.0.1:20000:20000 + environment: + CB_CONFIG: /cb-config.toml + CB_JWTS: ${CB_JWTS} + CB_SIGNER_ADMIN_JWT: ${CB_SIGNER_ADMIN_JWT} + CB_SIGNER_TLS_CERTIFICATES: /certs + CB_SIGNER_ENDPOINT: 0.0.0.0:20000 + CB_SIGNER_LOADER_KEYS_DIR: /keys + CB_SIGNER_LOADER_SECRETS_DIR: /secrets + volumes: + - ./test.toml:/cb-config.toml:ro + - ./keys:/keys:ro + - ./secrets:/secrets:ro + networks: + - signer_network + command: + - signer +networks: + signer_network: + driver: bridge +``` + +This will create three Docker containers when executed: + +- `cb_pbs` for the PBS service +- `cb_signer` for the Signer service +- `cb_da_commit` for the example / test module that interacts with the Signer service API + +Finally, the `.cb.env` file produced will look like this: + +``` +CB_JWT_DA_COMMIT=hJ0bV40pTMShsRb9QS7fVinAsL9Roxkc +CB_JWTS=DA_COMMIT=hJ0bV40pTMShsRb9QS7fVinAsL9Roxkc +CB_SIGNER_ADMIN_JWT=WbdxlH32hNOMkfc6BfBHaV1WZj3vgODA +``` + +The Signer service needs JWT authentication from each of its modules. The program creates these and embeds them into the containers via environment variables automatically for convenience. This is demonstrated for the Signer Service within the `environment` compose block: the `CB_JWTS: ${CB_JWTS}` forwards the `CB_JWTS` environment variable that's present when running Docker compose. The program requests that you do so via the command `docker compose --env-file "./.cb.env" -f "./cb.docker-compose.yml" up -d`; the `--env-file "./.cb.env"` handles loading the program's JWT output into this environment variable. + +Similarly, for the `cb_da_commit` module, the `CB_SIGNER_JWT: ${CB_JWT_DA_COMMIT}` line within its `environment` block will set the JWT that it should use to authenticate with the Signer service. + + +### Configuration File Volume + +As with the PBS-only example, the configuration file is placed into a read-only volume binding for all three images to reference. The same rules apply, so please read the [section in the PBS example](#configuration-file-volume) for details on how this works. + + +### Networking + +The program will force both the PBS and Signer API endpoints to bind to `0.0.0.0` within Docker's internal network so other Docker containers can access them, but it will only expose the API port (default `18550` for PBS and `20000` for the Signer) to `127.0.0.1` on your host machine. That way any processes running on the same machine can access them on their respective ports. If you want to open the ports for access across your entire network, not just your local machine, you can add the line: + +``` +host = "0.0.0.0" +``` + +to both the `[pbs]` and `[signer]` sections in the configuration. This will cause the resulting `ports` entries in the Docker compose file to become: + +``` +cb_pbs: + ... + ports: + - 0.0.0.0:18550:18550 + + +cb_signer: + ... + ports: + - 0.0.0.0:20000:20000 +``` + +though you will need to add entries to your local machine's firewall software (if applicable) for other machines to access them. + +Currently, the program will always export the PBS and Signer services' API ports in one of these two ways. If you don't want to expose them at all, so they can only be accessed by other Docker containers running within Docker's internal network, you will need to manually remove the `ports` entries from the Docker compose files after they've been created: + +``` +ports: [] +``` diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/running/k8s.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/k8s.md new file mode 100644 index 00000000..4cdd5a4b --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/k8s.md @@ -0,0 +1,75 @@ +--- +description: Deploy Commit-Boost on Kubernetes +--- + +# Kubernetes + +Commit-Boost can be deployed on Kubernetes using the [Helm chart](https://helm.sh/) available in the repository's `provisioning/k8s/commit-boost/` directory. + +## Scope limitation + +:::warning +The current Helm chart supports only the **PBS Service**. It does **not** support the Signer Service or custom commit modules. If you need Signer or module support, please use the [Docker](./docker.md) or [Binary](./binary.md) deployment methods instead. +::: + +## Prerequisites + +- A Kubernetes cluster +- [Helm](https://helm.sh/docs/intro/install/) installed (v3+) + +## Installation + +1. Clone the repository or navigate to the chart directory: + +```bash +git clone https://github.com/Commit-Boost/commit-boost-client.git +cd commit-boost-client/provisioning/k8s/commit-boost +``` + +2. Edit the `values.yaml` file to configure the PBS service according to your needs. The key configuration options are described in the [Values table](#values) below. + +3. Install the chart: + +```bash +helm install commit-boost . -f values.yaml +``` + +This will deploy the Commit-Boost PBS service. By default, the PBS service is available on port `18550`. Point your beacon nodes and validator clients to this port. + +## Values + +The PBS service is configured through the `values.yaml` file. The chart exposes the following key configuration options under the `commitBoost.pbs` section: + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `commitBoost.pbs.enable` | bool | `true` | Enable the PBS service | +| `commitBoost.pbs.image.repository` | string | `ghcr.io/commit-boost/commit-boost` | PBS container image repository | +| `commitBoost.pbs.image.tag` | string | `v0.4.0` | PBS container image tag | +| `commitBoost.pbs.config.chain` | string | `Holesky` | Ethereum network (e.g. Holesky, Hoodi) | +| `commitBoost.pbs.config.pbs.port` | int | `18550` | PBS service port | +| `commitBoost.pbs.config.relays` | list | `[]` | List of relays to connect to | +| `commitBoost.pbs.config.mux` | list | `[]` | Multiplexer configuration for validator-specific relay routing | +| `commitBoost.pbs.config.metrics.server_port` | int | `10000` | Metrics server port | +| `replicaCount` | int | `1` | Number of PBS pod replicas | +| `service.type` | string | `ClusterIP` | Kubernetes service type | +| `service.pbs_port` | int | `18550` | Service port for PBS | +| `resources` | object | `{}` | Pod resource requests and limits | +| `autoscaling.enabled` | bool | `false` | Enable horizontal pod autoscaling | + +For the full list of available values and their descriptions, see the [README.md](https://github.com/Commit-Boost/commit-boost-client/blob/main/provisioning/k8s/commit-boost/README.md) in the chart directory. + +## Upgrading + +To upgrade an existing release after modifying `values.yaml`: + +```bash +helm upgrade commit-boost . -f values.yaml +``` + +## Uninstalling + +To uninstall the release: + +```bash +helm uninstall commit-boost +``` diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/running/metrics-catalog.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/metrics-catalog.md new file mode 100644 index 00000000..26035642 --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/metrics-catalog.md @@ -0,0 +1,55 @@ +--- +sidebar_label: "Metrics catalog" +--- + +# Metrics catalog + +This page lists every metric emitted by the Commit-Boost PBS and Signer services together with the runtime-registered build-info metric from the shared telemetry crate. Use this as a reference when building dashboards or writing alerting rules. + +--- + +## PBS metrics + +PBS metrics use a custom Prometheus registry with namespace prefix `cb_pbs_`. The registry is created via `Registry::new_custom(Some("cb_pbs"), None)` in `crates/pbs/src/metrics.rs`. All wire names shown below include this prefix. + +| Metric name (wire) | Type | Labels | Description | +|---|---|---|---| +| `cb_pbs_relay_status_code_total` | Counter | `http_status_code`, `endpoint`, `relay_id` | HTTP status code received by relay. Incremented after each relay HTTP response; `http_status_code` may be `"555"` (the value of `TIMEOUT_ERROR_CODE_STR`) for timeouts. Endpoint values: `get_header`, `register_validator`, `submit_blinded_block`, `status`. | +| `cb_pbs_relay_latency` | Histogram | `endpoint`, `relay_id` | HTTP latency (duration in seconds) by relay. Records duration of relay HTTP requests. Endpoint values: `get_header`, `register_validator`, `submit_blinded_block`, `status`. | +| `cb_pbs_relay_last_slot` | Gauge | `relay_id` | Latest slot for which a relay delivered a header. Only updated in the `get_header` handler. Set to the current slot on each successful header from that relay. | +| `cb_pbs_relay_header_value` | Gauge | `relay_id` | Header value in gwei delivered by a relay. Converted from raw wei (÷ 1e9) in the `get_header` handler. | +| `cb_pbs_beacon_node_status_code_total` | Counter | `http_status_code`, `endpoint` | HTTP status code returned to the beacon node. Tracks what status codes the PBS returns for beacon node-facing requests. Endpoint values: `get_header`, `register_validator`, `submit_blinded_block`, `status`, `reload`. Error status codes (`502` for `NoResponse`/`NoPayload`, `500` for `Internal`) are set via `PbsClientError`. | + +--- + +## Signer metrics + +Signer metrics use a custom Prometheus registry with namespace prefix `cb_signer_`. The registry is created via `Registry::new_custom(Some("cb_signer"), None)` in `crates/signer/src/metrics.rs`. Wire names include this prefix. + +| Metric name (wire) | Type | Labels | Description | +|---|---|---|---| +| `cb_signer_signer_status_code_total` | Counter | `http_status_code`, `endpoint` | HTTP status code returned by signer endpoints. Incremented as responses are sent. Endpoint values: `get_pubkeys`, `generate_proxy_key`, `request_signature_bls`, `request_signature_proxy_bls`, `request_signature_proxy_ecdsa`. | + +--- + +## Build-info metric (all services) + +When each service starts its metrics HTTP server (via the `MetricsProvider` from the `cb-metrics` crate), a runtime-registered gauge is added to its registry: + +| Metric name (wire) | Type | Labels | Description | +|---|---|---|---| +| `info` | Gauge | `version`, `commit`, `network` | Always `1`. Carries build metadata as Prometheus const labels. The `version` label is the crate version (`CARGO_PKG_VERSION`), `commit` is the Git hash at build time (`GIT_HASH`), and `network` is the chain name (e.g. `mainnet`, `holesky`, `ephemery`). | + +This metric appears under the service's own registry prefix — for example, the PBS instance exposes it as `cb_pbs_info{version="...",commit="...",network="..."}` and the Signer exposes it as `cb_signer_info{version="...",commit="...",network="..."}`. + +--- + +## Custom module metrics + +Commit-Modules can register their own metrics via the `prometheus` crate. Each module receives a `ModuleMetricsConfig` at init time which includes the `server_port` for its metrics HTTP server. To expose custom metrics: + +1. Create a custom `Registry` (optionally with a namespace prefix). +2. Register your metrics on that registry. +3. Pass the registry to `MetricsProvider::new()` or `MetricsProvider::load_and_run()` to serve them on the module's `/metrics` endpoint. + +All module metrics are served on a separate port and are **not** aggregated into the PBS or Signer registries. To collect them, add the module's metrics port as an additional scrape target in your Prometheus configuration. diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/running/metrics.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/metrics.md new file mode 100644 index 00000000..eacd5157 --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/metrics.md @@ -0,0 +1,92 @@ +--- +description: Setup metrics collection +--- + +# Metrics + +Commit-Boost can be configured to collect metrics from the different services and expose them to be scraped from Prometheus. + +Make sure to add the `[metrics]` section to your config file: + +```toml +[metrics] +enabled = true +``` +If the section is missing, metrics collection will be disabled. If you generated the `docker-compose.yml` file with `commit-boost init`, metrics ports will be automatically configured. If you're running the binaries directly, you will need to set the correct environment variables, as described in the [previous section](/get_started/running/binary#common). + +## Example setup + +:::note +The following examples assume you're running Prometheus/Grafana on the same machine as Commit-Boost. In general you should avoid this setup, and instead run them on a separate machine. cAdvisor should run in the same machine as the containers you want to monitor. +::: + + +### cAdvisor +[cAdvisor](https://github.com/google/cadvisor) is a tool for collecting and reporting resource usage and performance characteristics of running containers. + +```yml title="cb.docker-compose.yml" +cb_cadvisor: + image: gcr.io/cadvisor/cadvisor + container_name: cb_cadvisor + ports: + - 127.0.0.1:8080:8080 + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - /sys:/sys:ro + - /var/lib/docker/:/var/lib/docker:ro +``` + +### Prometheus + +For more information on how to setup Prometheus, see the [Prometheus documentation](https://prometheus.io/docs/prometheus/latest/getting_started/). + +```yml title="cb.docker-compose.yml" +cb_prometheus: + image: prom/prometheus:v3.0.0 + container_name: cb_prometheus + ports: + - 127.0.0.1:9090:9090 + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml + - prometheus-data:/prometheus +``` + +```yml title="prometheus.yml" +global: + scrape_interval: 15s + +scrape_configs: + - job_name: "commit-boost" + static_configs: + - targets: ["cb_da_commit:10000", "cb_pbs:10001", "cb_signer:10002", "cb_cadvisor:8080"] +``` + +### Grafana +For more information on how to setup Grafana, see the [Grafana documentation](https://grafana.com/docs/grafana/latest/getting-started/). + +```yml title="cb.docker-compose.yml" +cb_grafana: + image: grafana/grafana:11.3.1 + container_name: cb_grafana + ports: + - 127.0.0.1:3000:3000 + volumes: + - ./grafana/datasources:/etc/grafana/provisioning/datasources + - grafana-data:/var/lib/grafana +``` + +```yml title="datasources.yml" +apiVersion: 1 + +datasources: + - name: prometheus + type: prometheus + uid: prometheus + access: proxy + orgId: 1 + url: http://cb_prometheus:9090 + isDefault: true + editable: true +``` + +Once Grafana is running, you can [import](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/import-dashboards/) the Commit-Boost dashboards from [here](https://github.com/Commit-Boost/commit-boost-client/tree/main/provisioning/grafana), making sure to select the correct `Prometheus` datasource. diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/troubleshooting.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/troubleshooting.md new file mode 100644 index 00000000..3fa92e23 --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/troubleshooting.md @@ -0,0 +1,259 @@ +--- +description: Common issues +--- + +# Troubleshooting + +If you find any or have any question, please reach out on [X (Twitter)](https://x.com/Commit_Boost). If there are any security related items, please see [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/SECURITY.md). + +--- + +## Symptom → service decision matrix + +Real failures often cascade across service boundaries. Before diving into a specific section, use this table to identify the most likely culprit from the observable symptom. + +| If you see… | Likely culprit | Start in section | +|---|---|---| +| Container won't start / exits immediately | Docker (volume, port, image) or missing env vars | [Docker / networking](#docker--networking) | +| HTTP 401 from `POST /signer/*` | JWT auth failure — shared secret mismatch | [Signer Service > JWT auth failures](#jwt-auth-failures) | +| Signer log says `cannot load keys` or `invalid keystore` | Key loading path, format mismatch, or permission error | [Signer Service > Key loading](#key-loading) | +| Module log says `connection refused` reaching signer | Docker networking: wrong URL, port, or network | [Docker / networking > container-to-container connectivity](#container-to-container-connectivity) | +| `POST /reload` returns HTTP 500 | Reload failure — invalid config or body override | [Hot reload > Reload failures](#reload-failures) | +| `POST /reload` reverts a previous `POST /revoke_jwt` | Body override not persisted | [Hot reload > Body overrides and footguns](#body-overrides-and-footguns) | +| Module starts but fails all signature requests | JWT expiration too short for long-running operations | [Signer Service > JWT auth failures](#jwt-auth-failures) | +| Module container runs but PBS returns no headers | Relays unreachable or timing game expiring too early | [PBS](#pbs) | +| `docker compose` exits with `no such file` | Missing or misnamed config file or env file | [Docker / networking > Init failures](#init-failures) | + +--- + +## Docker / networking + +### Init failures + +`commit-boost init --config cb-config.toml` produces `cb.docker-compose.yml`, and `.cb.env`. If you see `no such file` when running Docker Compose: + +1. **Missing config file** — verify `cb-config.toml` exists in the working directory and is TOML-valid. +2. **Missing env file** — if the Signer Service is enabled, `.cb.env` is created alongside the compose file. Pass it with `--env-file ./.cb.env`. +3. **Wrong path** — the volume bindings in the compose file are relative to the working directory. If you moved the config file after `init`, update the `volumes` entry. + +See the [configuration reference](./configuration.md) for a full field listing and [Docker setup](./running/docker.md#init) for init details. + +### Container won't start / exits immediately + +If a container exits immediately after `docker compose up`: + +1. **Port conflict** — try a different `[pbs] port` or `[signer] port` in the config, or stop whatever is already using the port. The `docker compose logs` output will show a `bind: address already in use` error. +2. **Missing image** — the config's `docker_image` field must point to a valid image. For local development images (e.g. `test_da_commit`), build them first with `just docker-build-test-modules`. +3. **Volume mount failure** — the config file, keys, and secrets paths must be accessible at runtime. If a path is wrong, the container will exit. Check logs for `file not found`. +4. **Missing environment variables** — services that need `CB_CONFIG`, `CB_SIGNER_JWT`, or `CB_MODULE_ID` will fail to start if these aren't set. Docker containers get these from `.cb.env` (via `--env-file`); native binaries set them on the command line. + +Check `docker compose logs` for the specific error message. + +### Container-to-container connectivity + +Modules connect to the Signer Service over an internal Docker bridge network. If a module logs `connection refused`: + +1. **Wrong URL** — modules receive `CB_SIGNER_URL` as an env var. The default is `http://cb_signer:20000`. If you override this, verify the hostname matches the Signer container name (`cb_signer` by default) and the port matches `[signer] port`. +2. **Network isolation** — verify the module's compose service is on the `signer_network` (or whatever network the signer is on). The `init` command sets this up automatically; manual compose edits can break it. +3. **Signer not healthy** — the compose file sets `depends_on: cb_signer: condition: service_healthy`. If the signer fails its health check (e.g., because it can't load keys), dependent modules will never start. Check `docker compose logs cb_signer` first. + +--- + +## Signer Service + +If the signer logs an error at startup or signature requests fail at runtime, the likely causes fall into three categories. + +### JWT auth failures + +A `401` response from any `POST /signer/*` endpoint means the request's JWT was rejected. + +1. **Shared secret mismatch (most common)** — each module authenticates with a JWT derived from a shared secret. The signer's `CB_JWTS` env var (or `[signer]` config) and the module's `CB_SIGNER_JWT` env var must carry the **same secret for the same module ID**. Common pitfalls: + - Typo in the module ID or secret string. + - The `.cb.env` file was regenerated (e.g., by re-running `init`) but the running containers still use the old env file. + - A manual override was applied via [`POST /reload` body overrides](#body-overrides-and-footguns) but the environment variable was not updated — after a restart the override is lost. +2. **Clock skew** — JWT validation checks the `iat` (issued-at) and `exp` (expiration) claims. If the signer's system clock differs from the module's clock, the JWT may appear invalid. +3. **Admin endpoint auth failure** — `POST /signer/reload` and `POST /signer/revoke_jwt` require the admin JWT secret (`CB_SIGNER_ADMIN_JWT` environment variable or `admin_secret` body override). If you get a 401 on these endpoints, check that the admin secret matches. + +### Key loading + +If the signer fails to start with errors about keys: + +- **Wrong format** — the `[signer.local.loader] format` must match the actual keystore layout. See the [Signer configuration](./configuration.md#local-signer) for supported formats and their expected file structures. +- **Wrong path** — `keys_path` and `secrets_path` are relative to the container's filesystem, not the host. In Docker, these are volume-mounted from the host; verify the mount paths match what the loader expects. +- **Permission denied** — the signer process runs as a non-root user inside the container. Ensure the mounted keys and secrets are readable by the container user. +- **Proxy store path missing** — if `[signer.local.store]` is configured, the proxy directory must exist and be writable. The signer will fail to start if it cannot create proxy key files. +- **Remote signer unavailable** — for Web3Signer or Dirk, the signer must be reachable at startup. A timeout or connection error during the initial handshake will cause the signer to exit. + +See the [Signer configuration](./configuration.md#signer-service) for a full reference and [Docker setup](./running/docker.md#example-with-pbs-signer-and-a-signer-service) for a working example. + +### TLS + +If you enable TLS and the signer fails to start: + +1. **Missing certificate files** — the TLS directory (default `./certs`) must contain `cert.pem` and `key.pem`. See the [TLS section](./configuration.md#tls) for details. +2. **Self-signed certificate** — recommended for testing only. Production setups should use a well-known CA. +3. **Certificate permissions** — the key file must be readable by the signer process (non-root user inside the container). + +--- + +## Modules + +### Signer connectivity + +If a commit module logs errors when calling the signer: + +1. **Wrong JWT** — the module's `CB_SIGNER_JWT` must match the signer's entry for that module ID. See [JWT auth failures](#jwt-auth-failures) above. +2. **Wrong signer URL** — verify `CB_SIGNER_URL` points to the correct host and port. In Docker, the host is the signer container name (`cb_signer` by default); with native binaries, it is the signer's host IP. +3. **Signer not started** — modules depend on the signer via Docker Compose `depends_on`. If the signer fails to start (e.g., key loading error), dependent modules will never leave the `created` state. +4. **Proxy key generation fails** — if using proxy keys, the signer must have the proxy store configured and writable. Check the signer logs for `cannot write proxy key`. + +### Module ID mismatch + +If the signer responds with `unknown module`: + +- The `[[modules]]` entry in `cb-config.toml` uses a different `id` than what the module was started with (`CB_MODULE_ID` env var). These must match exactly. +- After adding a new module to the config, you must send [`POST /reload`](#hot-reload) to the signer before starting the module container. Until then, the signer has no record of the new module and will reject its requests. + +--- + +## Hot reload + +Commit-Boost supports hot-reloading the configuration without restarting containers. The mechanism is fully documented in the [configuration page](./configuration.md#hot-reload); this section covers what to do when it breaks. + +### Reload failures + +If `POST /reload` returns `500`: + +1. **Invalid TOML** — the config file changed on disk since the service started. If the new content has syntax errors, the reload is rejected and the previous configuration is kept. Check `docker compose logs` for the parse error. +2. **Body override references a non-existent module** — the body fields `jwt_secrets` and `admin_secret` (the "body overrides") accept optional overrides applied on top of the config. If the body references a module ID that does not exist in the config file, the entire reload is rejected. +3. **Permission denied** — the service may not be able to re-read the config file if its permissions changed after startup (e.g., file was moved or ownership changed). + +### Body overrides and footguns + +The request body for `POST /reload` accepts two optional fields — collectively called **body overrides** — that are applied on top of the config at runtime but **never persisted to disk**: + +- `jwt_secrets`: a comma-separated list of `=` pairs to override specific module secrets. +- `admin_secret`: a string to override the admin JWT secret. + +Because these are in-memory only, they are lost on container restart. If you rotate a JWT secret via a body override, the environment variable (`CB_JWTS` or the module's `CB_SIGNER_JWT`) still holds the old value. After any restart the signer will fall back to the old secret and authentication will fail until you update the environment variable to match. + +Similarly, if you revoke a module with `POST /revoke_jwt` but leave it in the config, the next `POST /reload` (without a body override) re-adds the module from the config. Always remove revoked modules from `[[modules]]` in the config to make the revocation permanent. + +See the [Hot Reload section in the configuration page](./configuration.md#footguns) for the full list of footguns. + +### Hot reload and custom PBS + +Custom PBS services may override the default reload behaviour to parse extra configuration fields. If a custom PBS returns `500` on reload, check the module's documentation for custom reload handling. See the [custom module examples](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/status_api/src/main.rs) for details. + +--- + +## Cascading diagnostics + +Failures in one service often propagate to others. When debugging, always check the **upstream dependency first**: + +### Scenario 1: Signer fails to load keys → all modules fail + +``` +Signer can't read keystore + ↓ +Signer health check fails + ↓ +Docker Compose never marks cb_signer as healthy + ↓ +Modules (depends_on: condition: service_healthy) never start + ↓ +Modules that need proposer commitments (proxy key generation, signature requests) get connection refused +``` + +**Diagnosis:** Start with the signer log. A `cannot load keys` or `invalid keystore` error at the top means all downstream failures are consequences. Fix the key loading, then restart. + +### Scenario 2: Config file becomes stale after a restart + +``` +Admin rotates JWT secrets via POST /reload body overrides + (overrides are in-memory only) + ↓ +Container crashes or is restarted + ↓ +Signer starts with the old secrets from .cb.env / config file + ↓ +Modules still hold the rotated JWT → 401 on every request +``` + +**Diagnosis:** Look for a pattern where everything worked before a restart, then all modules fail with 401. The fix is to update the environment variable (`.cb.env` or the shell env) to match the rotated secret, then restart cleanly. + +### Scenario 3: Relay timeout causes no-payload cascade + +``` +One relay becomes slow or unresponsive + ↓ +PBS times out waiting for that relay's header + ↓ +PBS returns 502 (NoResponse) to the CL + ↓ +CL falls back to local execution payload → no MEV reward +``` + +**Diagnosis:** Check the PBS logs for relay timeout errors (status code `555` or `TIMEOUT_ERROR_CODE_STR`) on a specific relay. Remove or replace that relay in the `[[relays]]` config, then `POST /reload` the PBS. + +--- + +If you started the modules correctly you should see the following logs. + +## PBS +After the module started correctly you should see: +```bash +2024-09-16T19:27:16.004643Z INFO Starting PBS service address=0.0.0.0:18550 events_subs=0 +``` + +To check that the setup is correct and you are connected to relays, you can trigger manually the `/status` endpoint, by running: + +```bash +curl http://0.0.0.0:18550/eth/v1/builder/status -vvv + +* Trying 0.0.0.0:18550... +* Connected to 0.0.0.0 (127.0.0.1) port 18550 (#0) +> GET /eth/v1/builder/status HTTP/1.1 +> Host: 0.0.0.0:18550 +> User-Agent: curl/7.81.0 +> Accept: */* +> +* Mark bundle as not supporting multiuse +< HTTP/1.1 200 OK +< content-length: 0 +< date: Mon, 16 Sep 2024 19:32:07 GMT +< +* Connection #0 to host 0.0.0.0 left intact +``` + +if now you check the logs, you should see: + +```bash +2024-09-16T19:32:07.634966Z INFO status{req_id=62f1c0db-f277-49fa-91e7-a9a1c2b2a6d3}: ua="curl/7.81.0" relay_check=true +2024-09-16T19:32:07.642992Z INFO status{req_id=62f1c0db-f277-49fa-91e7-a9a1c2b2a6d3}: relay check successful +``` + +If the sidecar is setup correctly, it will receive and process calls from the CL: +#### Register validator +This should happen periodically, depending on your validator setup. + +```bash +2024-09-16T19:28:37.976534Z INFO register_validators{req_id=296f662f-0e7a-4f15-be75-55b8ca19ffc0}: ua="Lighthouse/v5.2.1-9e12c21" num_registrations=500 +2024-09-16T19:28:38.819591Z INFO register_validators{req_id=296f662f-0e7a-4f15-be75-55b8ca19ffc0}: register validator successful +``` + +#### Get header +This will only happen if some of your validators have a proposal slot coming up. + +```bash +2024-09-16T19:30:24.135376Z INFO get_header{req_id=74126c5f-69e6-4961-86a6-6c2597bf15f5 slot=2551052}: ua="Lighthouse/v5.2.1-9e12c21" parent_hash=0x641c99d6e4f14bf6d268eb2a8c0dc51c7030ab24e384c0e679f2a6b438d298ea validator_pubkey=0x84fc20b09496341f24abfcb6f407e916ecc317497c5b1bba4970e50e96cf5e731b88e51753064c30cb221453bd71aebf ms_into_slot=135 +2024-09-16T19:30:25.089477Z INFO get_header{req_id=74126c5f-69e6-4961-86a6-6c2597bf15f5 slot=2551052}: received header block_hash=0x0139686e8d251f010153875270256fce6f298d7b3f3f9129179fb86297dffad3 value_eth="0.001399518501462470" +``` + +#### Submit block +This will only happen if you received a header in the previous call, and if the header is higher than the locally built block. + +```bash +2024-09-16T14:38:01.409075Z INFO submit_blinded_block{req_id=6eb9a04d-6f79-4295-823f-c054582b3599 slot=2549590}: ua="Lighthouse/v5.2.1-9e12c21" slot_uuid=16186e06-0cd0-47bc-9758-daa1b66eff5c ms_into_slot=1409 block_hash=0xfa135ae6f2bfb32b0a47368f93d69e0a2b3f8b855d917ec61d78e78779edaae6 +2024-09-16T14:38:02.910974Z INFO submit_blinded_block{req_id=6eb9a04d-6f79-4295-823f-c054582b3599 slot=2549590}: received unblinded block +``` diff --git a/docs/versioned_docs/version-0.10.0-rc2/intro.md b/docs/versioned_docs/version-0.10.0-rc2/intro.md new file mode 100644 index 00000000..70075cd1 --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/intro.md @@ -0,0 +1,28 @@ +--- +id: introduction +sidebar_position: 1 +slug: / +--- + +# Introduction + +import CommitBoostLogo from '/img/logo.png'; +import Overview from '/img/overview.png'; + +Commit Boost Logo + +
+
+ +Commit-Boost is a new Ethereum validator sidecar focused on standardizing the communication between validators and third-party protocols. This open-source public good is fully compatible with [MEV-Boost](https://github.com/flashbots/mev-boost) and acts as a light-weight platform to allow validators to safely make commitments. + +Commit-Boost runs as a single sidecar composed of multiple modules: + +Commit Boost Overview + +
+
+ +Commit-Boost is being developed in Rust from scratch, and has been designed with safety and modularity at its core, with the goal of not limiting the market downstream including stakeholders, flows, proposer commitments, enforcement mechanisms, etc. + +Please see Commit-Boost, Inc's [terms of service](https://github.com/Commit-Boost/commit-boost-client/blob/main/TERMS-OF-USE.md). diff --git a/docs/versioned_docs/version-0.10.0-rc2/overview.md b/docs/versioned_docs/version-0.10.0-rc2/overview.md new file mode 100644 index 00000000..5005bda8 --- /dev/null +++ b/docs/versioned_docs/version-0.10.0-rc2/overview.md @@ -0,0 +1,35 @@ +--- +sidebar_position: 2 +--- + +# Overview + +## Background +- Proposer commitments have been an important part of Ethereum’s history. Today, we already see the power of commitments where over 90% of validators give up their autonomy and make a wholesale commitment that outsources block building to a sophisticated actor called a block builder. +- However, most are starting to agree on a common denominator: in the future, beacon proposers will face a broader set of options of what they may “commit" to–be it inclusions lists or preconfs or other types of commitments such as long-dated blockspace futures–compared to just an external or local payload they see today. +- A recent post from Barnabe captures this well; during block construction, the validator “…creates the specs, or the template, by which the resulting block must be created, and the builders engaged by the proposer are tasked with delivering the block according to its specifications”. +- While this all seems great, the challenge is that many teams building commitments are creating new sidecars driving fragmentation and risks for Ethereum. +- For Ethereum, there are going to be significant challenges and increased risks during upgrades if there are a handful of sidecars validators are running. +- For validators, these risks potentially take us to a world where proposers will need to make decisions on which teams to “bet on” and which sidecars they will need to run to participate in what those teams are offering. +- For homestakers, this is difficult and they likely will be unable to participate in more than one of these commitments. +- For sophisticated actors, this increases the attack vector and operational complexity as more and more sidecars are required to be run. +- Another side effect of this is validators are somewhat locked into using a specific sidecar due to limited operational capacity and the switching costs of running a different sidecar (i.e., vendor lock-in). The higher the switching costs, the more embedded network effects could become if these sidecars only support certain downstream actors / proposer commitment protocols. +- This also could create a dynamic where core out-of-protocol infrastructure supporting Ethereum which should be a public good, starts being used for monetization, distribution, or other purposes. +- Commit-Boost aims to standardize how proposer commitment protocols communicate with the proposer, by providing a unified interface implemented in a single validator sidecar with the goal of reducing fragmentation. + +## Goals +- Unify behind a software / standard to reduce fragmentation risks for Ethereum and its validators, while ensuring open innovation downstream from the proposer can flourish. +- Create a neutral, open-source, public good for the safe development and distribution of proposer commitments protocols. +- Provide a well-tested, reliable validator sidecar with support for advanced observability and telemetry. + +## Why Commit-Boost? + +### For validators +- Run a single sidecar with support for MEV-Boost and other proposer commitments protocols, such as preconfirmations and inclusion lists. +- Out-of-the-box support for metrics reporting and dashboards to have clear insight into what is happening in your validator. +- Plug-in system to add custom modules, e.g. receive a notification on Telegram if a relay fails to deliver a block. + +### For developers +- A modular platform to develop and distribute proposer commitments protocols. +- A single API to interact with validators. +- Support for hard-forks and new protocol requirements. diff --git a/docs/versioned_docs/version-0.10.0-rc2/res/img/consensus-key-sign.png b/docs/versioned_docs/version-0.10.0-rc2/res/img/consensus-key-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..118903f688bfc490783ff39f0ae03097b433efbc GIT binary patch literal 103080 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-0.10.0-rc2/res/img/prop_commit_tree.png b/docs/versioned_docs/version-0.10.0-rc2/res/img/prop_commit_tree.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0b181578513700d3e51c1c77f40aa5ec17e47f GIT binary patch literal 96528 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-0.10.0-rc2/res/img/proxy-key-sign.png b/docs/versioned_docs/version-0.10.0-rc2/res/img/proxy-key-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..e665d24cf96990c01ff591a44095cd5452d538b9 GIT binary patch literal 111225 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

j4h z-l6LXg$0#wAEnCAKE5{_b&ft_JlDbQCLU)OBVtE1859LlgcYS#cfl^EJi-cywGo^( zm{J~FFjhT+diXsp@p*z+v3u}{(u3kry5r)S#h#rjf7FI4b&*N`89PEB%N<6CFR9a; zWhN8CMlL;j$kWL8x$1P~_h)NTDjT$G=F*GtP;f;Qu0yYDP2a|%9$Gj=bVIleX|OXL zTy$vH{gA|yLXTJKZHH%<=%{iMk<`88{|k;P(W z)?C-!9T9VB*)GU%A~8~ro4&O9F5we{jvw!yq$Cp9_boFYdOJvr?&FY=Lb8}e->TaM z@hGa?++b~MS}nd=JkBw?A@+PWWS)vbJ7k3oYkeJitrwecb|gY$s22y;z$~N%K9>4k z-Imto>)a8s>7{lh*X(hfxgFMTIyVwDyHMGph%RFte?WgIZ6q)sY=M2gmBM1Waw$W_ ze=ahc60)181lG#zK@%H7VkJSqrbenoK59r_a!sjeWwce;xPSWN#|qPhk-0+Qxoo7- znolT6#LHU2?*N4IOCaRgR-)%r*(TpeZfNp0=SnhOF3&eaP6@8f4jY@x3nIhFrUp+VZQNwTtxB&q#sEW<`}+PB>QgFCOyw)ki

+ Lighthouse + +#### File structure: + +``` +├── keys +│   ├── +│   │   └── voting-keystore.json +│   └── +│   └── voting-keystore.json +└── secrets +    ├── +    └── +``` + +#### Config: + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "lighthouse" +keys_path = "keys" +secrets_path = "secrets" +``` + +
+ +
+ Prysm + +#### File structure: + +``` +├── wallet +│   └── direct +│      └── accounts +│         └──all-accounts.keystore.json +└── secrets +    └── password.txt +``` + +#### Config: + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "prysm" +keys_path = "wallet/direct/accounts/all-accounts.keystore.json" +secrets_path = "secrets/password.txt" +``` + +
+ +
+ Teku + +#### File structure: + +``` +├── keys +│   ├── .json +│   └── .json +└── secrets +    ├── .txt +    └── .txt +``` + +#### Config: + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "teku" +keys_path = "keys" +secrets_path = "secrets" +``` + +
+ +
+ Lodestar + +#### File structure: + +``` +├── keys +│   ├── .json +│   └── .json +└── secrets +    └── password.txt +``` + +#### Config: + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "lodestar" +keys_path = "keys" +secrets_path = "secrets/password.txt" +``` + +:::note +All keys have the same password stored in `secrets/password.txt` +::: + +
+ +
+ Nimbus + + #### File structure: + ``` + ├── keys + │   ├── + │   │   └── keystore.json + │   └── + │   └── keystore.json + └── secrets +    ├── +    └── + ``` + + #### Config: + ```toml + [pbs] + ... + with_signer = true + + [signer] + port = 20000 + + [signer.local.loader] + format = "nimbus" + keys_path = "keys" + secrets_path = "secrets" + ``` +
+ +### Proxy keys store + +Proxy keys can be used to sign transactions with a different key than the one used to sign the block. Proxy keys are generated by the Signer module and authorized by the validator key. Each module have their own proxy keys, that can be BLS or ECDSA. + +To persist proxy keys across restarts, you must enable the proxy store in the config file. There are 2 options for this: + +
+ File + +The keys are stored in plain text in a file. This method is unsafe and should only be used for testing. + +#### File structure + +``` + +└── + └── bls + ├── + └── +``` + +#### Configuration + +```toml +[signer.local.store] +proxy_dir = "path/to/proxy_dir" +``` + +Where each `` file contains the following: + +```json +{ + "secret": "0x...", + "delegation": { + "message": { + "delegator": "0x...", + "proxy": "0x..." + }, + "signature": "0x..." + } +} +``` + +
+ +
+ ERC2335 + +The keys are stored in a ERC-2335 style keystore, along with a password. This way, you can safely share the keys directory as without the password they are useless. + +#### File structure + +``` +├── +│ └── +│ └── +│ ├── bls/ +│ │ ├── .json +│ │ ├── .sig +│ │ ├── .json +│ │ └── .sig +│ └── ecdsa/ +│ ├── .json +│ └── .sig +└── + └── + └── + ├── bls/ + │ ├── + │ └── + └── ecdsa + └── +``` + +#### Configuration + +```toml +[signer.local.store] +keys_path = "path/to/keys" +secrets_path = "path/to/secrets" +``` + +Where the `.json` files contain ERC-2335 keystore, the `.sig` files contain the signature of the delegation, and `` files contain the password to decrypt the keystores. + +
+ +### Remote signer + +You might choose to use an external service to sign the transactions. For now, two types of remote signers are supported: Web3Signer and Dirk. + +#### Web3Signer + +Web3Signer implements the same API as Commit-Boost, so there's no need to set up a Signer module. The parameters needed for the remote signer are: + +```toml +[signer.remote] +url = "https://remote.signer.url" +``` + +#### Dirk + +Dirk is a distributed key management system that can be used to sign transactions. In this case the Signer module is needed as an intermediary between the modules and Dirk. The following parameters are needed: + +```toml +[signer.dirk] +cert_path = "/path/to/client.crt" +key_path = "/path/to/client.key" +secrets_path = "/path/to/secrets" +# Optional parameters +ca_cert_path = "/path/to/ca.crt" +max_response_size_bytes = "4194304" + +# Add one entry like this for each host +[[signer.dirk.hosts]] +server_name = "localhost-1" +url = "https://localhost-1:8081" +wallets = ["SomeWallet", "DistributedWallet"] + +[[signer.dirk.hosts]] +server_name = "localhost-2" +url = "https://localhost-2:8082" +wallets = ["AnotherWallet", "DistributedWallet"] +``` + +- `cert_path` and `key_path` are the paths to the client certificate and key used to authenticate with Dirk. +- `wallets` is a list of wallets from which the Signer module will load all accounts as consensus keys. Generated proxy keys will have format `///`, so accounts found with that pattern will be ignored. +- `secrets_path` is the path to the folder containing the passwords of the generated proxy accounts, which will be stored in `////.pass`. + +Additionally, you can set a proxy store so that the delegation signatures for generated proxy keys are stored locally. As these signatures are not sensitive, the only supported store type is `File`: + +```toml +[signer.dirk.store] +proxy_dir = "/path/to/proxy_dir" +``` + +Delegation signatures will be stored in files with the format `/delegations//.sig`. + +A full example of a config file with Dirk can be found [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/configs/dirk_signer.toml). + +## Custom module + +We currently provide a test module that needs to be built locally. To build the module run: + +```bash +just docker-build-test-modules +``` + +:::note +We use `just` as command runner. If you don't have it installed, either install it from https://github.com/casey/just or run the commands manually from the `justfile` at the root of the repo. +::: + +This will create a Docker image called `test_da_commit` that periodically requests signatures from the validator. + +The `cb-config.toml` file needs to be updated as follows: + +```toml +[pbs] +port = 18550 + +[[relays]] +url = "" + +[signer] +port = 20000 + +[signer.loader] +format = "lighthouse" +keys_path = "/path/to/keys" +secrets_path = "/path/to.secrets" + +[metrics] +enabled = true + +[[modules]] +id = "DA_COMMIT" +type = "commit" +docker_image = "test_da_commit" +sleep_secs = 5 +``` + +A few things to note: + +- We now added a `signer` section which will be used to create the Signer module. +- There is now a `[[modules]]` section which at a minimum needs to specify the module `id`, `type` and `docker_image`. Additional parameters needed for the business logic of the module will also be here, + +To learn more about developing modules, check out [here](/category/developing). + +## Vouch + +[Vouch](https://github.com/attestantio/vouch) is a multi-node validator client built by [Attestant](https://www.attestant.io/). Vouch is particular in that it also integrates an MEV-Boost client to interact with relays. The Commit-Boost PBS module is compatible with the Vouch `blockrelay` since it implements the same Builder-API as relays. For example, depending on your setup and preference, you may want to fetch headers from a given relay using Commit-Boost vs using the built-in Vouch `blockrelay`. + +### Configuration + +Get familiar on how to set up Vouch [here](https://github.com/attestantio/vouch/blob/master/docs/getting_started.md). + +You can setup Commit-Boost with Vouch in two ways. +For simplicity, assume that in Vouch `blockrelay.listen-address: 127.0.0.0:19550` and in Commit-Boost `pbs.port = 18550`. + +#### Beacon Node to Vouch + +In this setup, the BN Builder-API endpoint will be pointing to the Vouch `blockrelay` (e.g. for Lighthouse you will need the flag `--builder=http://127.0.0.0:19550`). + +Modify the `blockrelay.config` file to add Commit-Boost: + +```json +"relays": { + "http://127.0.0.0:18550": {} +} +``` + +#### Beacon Node to Commit-Boost + +In this setup, the BN Builder-API endpoint will be pointing to the PBS module (e.g. for Lighthouse you will need the flag `--builder=http://127.0.0.0:18550`). + +This will bypass the `blockrelay` entirely so make sure all relays are properly configured in the `[[relays]]` section. + +:::note +This approach could also work if you have a multi-beacon-node setup, where some BNs fetch directly via Commit-Boost while others go through the `blockrelay`. +::: + +### Notes + +- It's up to you to decide which relays will be connected via Commit-Boost (`[[relays]]` section in the `toml` config) and which via Vouch (additional entries in the `relays` field). Remember that any rate-limit will be shared across the two sidecars, if running on the same machine. +- You may occasionally see a `timeout` error during registrations, especially if you're running a large number of validators in the same instance. This can resolve itself as registrations will be cleared later in the epoch when relays are less busy processing other registrations. Alternatively you can also adjust the `builderclient.timeout` option in `.vouch.yml`. + +## Hot Reload + +Commit-Boost supports hot-reloading the configuration file. This means that you can modify the `cb-config.toml` file and apply the changes without needing to restart the modules. To do this, you need to send a `POST` request to the `/reload` endpoint on each module you want to reload the configuration. In the case the module is running in a Docker container without the port exposed (like the signer), you can use the following command: + +```bash +docker compose -f cb.docker-compose.yml exec cb_signer curl -X POST http://localhost:20000/reload +``` + +### Notes + +- The hot reload feature is available for PBS modules (both default and custom) and signer module. +- Changes related to listening hosts and ports will not been applied, as it requires the server to be restarted. +- If running in Docker containers, changes in `volumes` will not be applied, as it requires the container to be recreated. Be careful if changing a path to a local file as it may not be accessible from the container. +- Custom PBS modules may override the default behaviour of the hot reload feature to parse extra configuration fields. Check the [examples](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/status_api/src/main.rs) for more details. +- In case the reload fails (most likely because of some misconfigured option), the server will return a 500 error and the previous configuration will be kept. diff --git a/docs/versioned_docs/version-0.9.6/get_started/mux-key-loaders.md b/docs/versioned_docs/version-0.9.6/get_started/mux-key-loaders.md new file mode 100644 index 00000000..7837b972 --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/get_started/mux-key-loaders.md @@ -0,0 +1,242 @@ +--- +description: Mux (multiplexer) configuration and key loader types +--- + +# Mux key loaders + +The PBS multiplexer (AKA *mux*) lets you route different validators to different relay sets or timing game configurations. Instead of a single `[[relays]]` list for all your validators, you declare one or more `[[mux]]` entries that match specific validator pubkeys to custom relay and timing settings. + +Use a mux when you need: + +- **Different relay sets for different validators** — for example, Lido or SSV node operators who send some validators to an operator-specific relay while the rest use the global relay set. +- **Per-group timing game parameters** — `timeout_get_header_ms` and `late_in_slot_time_ms` can be set per-mux, overriding the PBS defaults for those validators. +- **Dynamic key loading from on-chain or external sources** — the mux key loaders (File, URL, Registry) populate the mux's validator set automatically, so you don't have to list hundreds or thousands of pubkeys by hand. + +Mux entries are an optional addition to the `[[relays]]` section. If you don't need per-validator routing, you can ignore this page entirely. + +--- + +## Mux entry matching + +Each `[[mux]]` entry declares a set of validator pubkeys. The mux system enforces that these sets are **disjoint** — a validator pubkey should appear in at most one mux entry. If a pubkey is duplicated across mux entries, the sidecar will refuse to start. + +Matching uses **first-match semantics**: when the PBS receives a request for a validator, it checks each mux entry in the order they appear in the config file. The first mux whose pubkey set contains the validator's key wins. Validators that don't match any mux entry fall through to the global `[[relays]]` configuration. + +```toml +# Global relays — used for validators not matching any mux +[[relays]] +id = "global-relay" +url = "..." + +# First mux entry — checked first +[[mux]] +id = "timing-sensitive" +validator_pubkeys = [ + "0x80c7f782b2467c5898c5516a8b6595d75623960b4afc4f71ee07d40985d20e117ba35e7cd352a3e75fb85a8668a3b745", +] + +# A relay used by this mux +[[mux.relays]] +id = "fast-relay" +url = "..." + +# Another relay used by this mux +[[mux.relays]] +id = "robust-relay" +url = "..." + +# ... +# Multiple muxes can be defined repeating this pattern +``` + +### Matching rules summary + +| Condition | Behaviour | +|---|---| +| Pubkey matches a mux entry | That mux's relays and timing config are used | +| Pubkey appears in multiple mux entries | Validation error — sidecar fails to start | +| Pubkey doesn't match any entry | Falls through to global `[[relays]]` | +| A mux has no pubkeys (empty set) | Validation error — each mux must have at least one pubkey | + +The pubkey set for a mux can come from two sources combined: +1. **Inline `validator_pubkeys`** — a list of hex-prefixed BLS pubkeys in the config file itself. +2. **A loader plugin** — loads additional keys from a file, URL, or on-chain registry. Keys from the loader are merged into the mux's pubkey set. + +--- + +## Key loaders + +Key loaders are how you populate a mux with validator pubkeys without listing them manually. They are configured via the `loader` field inside a `[[mux]]` entry. + +### File loader + +Loads pubkeys from a flat JSON file on disk. + +**Schema:** A JSON array of hex-prefixed BLS public key strings. + +```json +[ + "0x8160998addda06f2956e5d1945461f33dbc140486e972b96f341ebf2bdb553a0e3feb127451f5332dd9e33469d37ca67", + "0x87b5dc7f78b68a7b5e7f2e8b9c2115f968332cbf6fc2caaaaa2c9dc219a58206b72c924805f2278c58b55790a2c3bf17", + "0x89e2f50fe5cd07ed2ff0a01340b2f717aa65cced6d89a79fdecc1e924be5f4bbe75c11598bb9a53d307bb39b8223bc52" +] +``` + +**Config:** Specify the path relative to the config file, or as an absolute path. + +```toml +[[mux]] +id = "my-mux" +loader = "./path/to/keys.json" + +[[mux.relays]] +id = "my-relay" +url = "..." +``` + +**Environment variable override:** The path can be overridden at runtime via `CB_MUX_PATH_{id}` where `{id}` is the mux identifier. For a mux with `id = "lido-mux"`, the variable would be `CB_MUX_PATH_lido-mux`. This is useful when you want to keep the config file the same across deployments but point to different key files. + +```bash +export CB_MUX_PATH_lido-mux="/path/to/override.json" +``` + +--- + +### URL loader + +Loads the same JSON schema from an HTTP(S) endpoint. The endpoint must return a JSON array of hex-prefixed BLS public keys (identical format to the File loader). + +```toml +[[mux]] +id = "url-mux" +loader = { url = "https://keys.example.com/validators.json" } + +[[mux.relays]] +id = "my-relay" +url = "..." +``` + +**Security:** HTTPS is recommended. HTTP URLs work but trigger a warning at startup. + +**Request behaviour:** +- One-shot GET request — no retry logic. +- Timeout is controlled by `default_pbs.http_timeout_seconds` (default: 10s). +- The response body is read in full and parsed as JSON. + +--- + +### Registry loader + +Loads validator pubkeys from an on-chain or network registry. This resolves pubkeys automatically from a data source that stays in sync as validators are added or removed. + +Two registries are currently supported: + +| Registry | `registry` value | Key source | Authentication | +|---|---|---|---| +| Lido | `"lido"` | On-chain contract via RPC | RPC URL (from `[pbs]` config) | +| SSV | `"ssv"` | SSV node API or public API | SSV API URLs (from `[pbs]` config) | + +#### Lido registry + +Reads validator pubkeys from Lido's on-chain `NodeOperatorsRegistry` or `CSModule registry`, depending on the module type. The sidecar connects to the configured RPC endpoint and calls the contract's `getSigningKeys` method with pagination. + +**Requirements:** `rpc_url` must be set in the `[pbs]` configuration. + +```toml +[pbs] +port = 18550 +rpc_url = "https://ethereum-rpc.publicnode.com" + +[[mux]] +id = "lido-mux" +loader = { registry = "lido", node_operator_id = 8, lido_module_id = 1 } + +[[mux.relays]] +id = "lido-relay" +url = "..." +``` + +**Fields:** + +| Field | Type | Required | Description | +|---|---|---|---| +| `registry` | string | Yes | Must be `"lido"` | +| `node_operator_id` | integer | Yes | Lido node operator ID | +| `lido_module_id` | integer | No (default: `1`) | Lido staking module ID | +| `enable_refreshing` | boolean | No (default: `false`) | Whether to periodically refresh keys at runtime (see below) | + +**Chain support:** + +| Chain | `lido_module_id` | Module type | Contract type | +|---|---|---|---| +| Mainnet | 1 | Curated (NodeOperatorsRegistry) | `NodeOperatorsRegistry` | +| Mainnet | 2 | SimpleDVT | `NodeOperatorsRegistry` | +| Mainnet | 3 | Community Staking (CSM) | `CSModule` | +| Holesky | 1 | Curated (NodeOperatorsRegistry) | `NodeOperatorsRegistry` | +| Holesky | 2 | SimpleDVT | `NodeOperatorsRegistry` | +| Holesky | 3 | Sandbox | `NodeOperatorsRegistry` | +| Holesky | 4 | Community Staking (CSM) | `CSModule` | +| Hoodi | 1 | Curated (NodeOperatorsRegistry) | `NodeOperatorsRegistry` | +| Hoodi | 2 | SimpleDVT | `NodeOperatorsRegistry` | +| Hoodi | 3 | Sandbox | `NodeOperatorsRegistry` | +| Hoodi | 4 | Community Staking (CSM) | `CSModule` | +| Sepolia | 1 | — | `NodeOperatorsRegistry` | + +Module ids 1 and 2 use the `NodeOperatorsRegistry` contract. Module id 3 (Mainnet) and module id 4 (Holesky / Hoodi) use the `CSModule` (Community Staking Module) contract, which has a different ABI. The sidecar detects the module type automatically based on chain and module id. + +**Dynamic refreshing:** When `enable_refreshing = true`, the sidecar periodically re-fetches keys from the on-chain registry at runtime. New validators that register with the node operator are picked up automatically without a restart. This is useful for growing node operator deployments where you don't want to restart the sidecar every time a new validator is added. + +--- + +#### SSV registry + +Loads validator pubkeys from the SSV network. The sidecar first tries to fetch keys from your local SSV node API. If that fails, it falls back to the public SSV API. + +**Requirements:** `ssv_node_api_url` and `ssv_public_api_url` must be set in the `[pbs]` configuration. + +```toml +[pbs] +port = 18550 +ssv_node_api_url = "http://localhost:3030/" +ssv_public_api_url = "https://api.ssv.network/" + +[[mux]] +id = "ssv-mux" +loader = { registry = "ssv", node_operator_id = 200 } + +[[mux.relays]] +id = "ssv-relay" +url = "..." +``` + +**Fields:** + +| Field | Type | Required | Description | +|---|---|---|---| +| `registry` | string | Yes | Must be `"ssv"` | +| `node_operator_id` | integer | Yes | SSV node operator ID | +| `enable_refreshing` | boolean | No (default: `false`) | Whether to periodically refresh keys at runtime | + +**API sources (fallback chain):** + +1. **SSV node API** (preferred): `GET {ssv_node_api_url}validators` with a JSON body `{"operators": [node_operator_id]}`. Response contains a `data` array of validators with hex-encoded `public_key` fields. +2. **Public API** (fallback): `GET {ssv_public_api_url}{chain}/validators/in_operator/{node_operator_id}?perPage=100&page={page}` with pagination. Response contains a `validators` array and `pagination` object. + +If the node API call fails (timeout, connection error, etc.), the sidecar logs a warning and falls back to the public API. + +**Chains supported:** Mainnet, Holesky, and Hoodi. + +--- + +## Reference config + +For a complete working example with multiple mux entries — File loader, Lido registry, and SSV registry — see: + +- [`examples/configs/pbs_mux.toml`](https://github.com/Commit-Boost/commit-boost-client/blob/main/examples/configs/pbs_mux.toml) + +--- + +## See also + +- [Configuration reference](./configuration.md) — full config field listing +- [Signer API](../developing/prop-commit-signing.md#api-quickstart) — signing API quickstart and authentication diff --git a/docs/versioned_docs/version-0.9.6/get_started/overview.md b/docs/versioned_docs/version-0.9.6/get_started/overview.md new file mode 100644 index 00000000..7956774b --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/get_started/overview.md @@ -0,0 +1,83 @@ +--- +description: Initial setup +--- + +# Overview + +Commit-Boost is primarily based on [Docker](https://www.docker.com/) to enable modularity, sandboxing and cross-platform compatibility. It is also possible to run Commit-Boost [natively](/get_started/running/binary) without Docker. + +Each component roughly maps to a container: from a single `.toml` config file, the node operator can specify which modules they want to run, and Commit-Boost takes care of spinning up the services and creating links between them. +Commit-Boost ships with two core modules: + +- A PBS module which implements the [BuilderAPI](https://ethereum.github.io/builder-specs/) for [MEV Boost](https://docs.flashbots.net/flashbots-mev-boost/architecture-overview/specifications). +- A signer module, which implements the [Signer API](/api) and provides the interface for modules to request proposer commitments. + +## Setup + +The Commit-Boost CLI creates a dynamic `docker-compose` file, with services and ports already set up. + +Whether you're using Docker or running the binaries natively, you can compile from source directly from the repo, or download binaries and fetch docker images from the official releases. + +## Binaries and images + +Find the latest releases at https://github.com/Commit-Boost/commit-boost-client/releases. + +The modules are also published at [each release](https://github.com/orgs/Commit-Boost/packages?repo_name=commit-boost-client). + +### From source + +Requirements: + +- Rust 1.91 + +:::note +Run `rustup update` to update Rust and Cargo to the latest version +::: + +```bash +# Pull the repo +git clone https://github.com/Commit-Boost/commit-boost-client + +# Stable branch has the latest released version +git checkout stable + +# Init submodules +git submodule update --init --recursive +``` + +:::note +If you get an `openssl` related error try running: `apt-get update && apt-get install -y openssl ca-certificates libssl3 libssl-dev build-essential pkg-config` +::: + +### Docker + +You will need to build the CLI to create the `docker-compose` file: + +```bash +# Build the CLI +cargo build --release --bin commit-boost-cli + +# Check that it works +./target/release/commit-boost-cli --version +``` + +and the modules as Docker images: + +```bash +docker build -t commitboost_pbs_default . -f ./provisioning/pbs.Dockerfile +docker build -t commitboost_signer . -f ./provisioning/signer.Dockerfile +``` + +This will create two local images called `commitboost_pbs_default` and `commitboost_signer` for the Pbs and Signer module respectively. Make sure to use these images in the `docker_image` field in the `[pbs]` and `[signer]` sections of the `.toml` config file, respectively. + +### Binaries + +Alternatively, you can also build the modules from source and run them without Docker, in which case you can skip the CLI and only compile the modules: + +```bash +# Build the PBS module +cargo build --release --bin commit-boost-pbs + +# Build the Signer module +cargo build --release --bin commit-boost-signer +``` diff --git a/docs/versioned_docs/version-0.9.6/get_started/running/binary.md b/docs/versioned_docs/version-0.9.6/get_started/running/binary.md new file mode 100644 index 00000000..10815d6e --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/get_started/running/binary.md @@ -0,0 +1,65 @@ +--- +description: Run Commit-Boost modules natively +--- + +# Binary + +:::warning +Running the modules natively means you opt out of the security guarantees made by Docker and it's up to you how to setup and ensure the modules run safely. +::: + +## Setup + +Get the binary of the module either by compiling from source or by downloading a [published release](https://github.com/Commit-Boost/commit-boost-client/releases). + +Modules need some environment variables to work correctly. + +### Common + +- `CB_CONFIG`: required, path to the `.toml` config file. +- `CHAIN_SPEC_ENV`: optional, path to a chain spec file. This will override the `[chain]` field in the `.toml` config. +- `CB_METRICS_PORT`: optional, port where to expose the `/metrics` endpoint for Prometheus. +- `CB_LOGS_DIR`: optional, directory to store logs. This will override the directory in the `.toml` config. + +### PBS Module + +- `CB_PBS_ENDPOINT`: optional, override to specify the `IP:port` endpoint where the PBS module will open the port for the beacon node. +- `CB_MUX_PATH_{ID}`: optional, override where to load mux validator keys for mux with `id=\{ID\}`. + +### Signer Module + +- `CB_SIGNER_ENDPOINT`: optional, override to specify the `IP:port` endpoint to bind the signer server to. +- For loading keys we currently support: + - `CB_SIGNER_LOADER_FILE`: path to a `.json` with plaintext keys (for testing purposes only). + - `CB_SIGNER_LOADER_FORMAT`, `CB_SIGNER_LOADER_KEYS_DIR` and `CB_SIGNER_LOADER_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Signer config](../configuration/#signer-module) for more info). +- For storing proxy keys we currently support: + - `CB_PROXY_STORE_DIR`: directory where proxy keys and delegations will be saved in plaintext (for testing purposes only). + - `CB_PROXY_KEYS_DIR` and `CB_PROXY_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Proxy keys store](../configuration/#proxy-keys-store) for more info). +- For Dirk remote signer the following envs are available (see [Dirk config](../configuration/#dirk) for more info): + - `CB_SIGNER_DIRK_CERT_FILE`: required, path to the client certificate file. + - `CB_SIGNER_DIRK_KEY_FILE`: required, path to the client key file. + - `CB_SIGNER_DIRK_SECRETS_DIR`: required, path to the secrets directory. + - `CB_SIGNER_DIRK_CA_CERT_FILE`: optional, path to the CA certificate file. + +### Modules + +- `CB_MODULE_ID`: required, unique id of the module. + +#### Commit modules + +- `CB_SIGNER_URL`: required, url to the signer module server. +- `CB_SIGNER_JWT`: required, jwt to use for signature requests. + +Modules might also have additional envs required, which should be detailed by the maintainers. + +## Start + +After creating the `cb-config.toml` file, setup the required envs and run the binary. For example: + +```bash +CB_CONFIG=./cb-config.toml commit-boost-pbs +``` + +## Security + +Running the modules natively means you opt out of the security guarantees made by Docker and it's up to you how to setup and ensure the modules run safely. diff --git a/docs/versioned_docs/version-0.9.6/get_started/running/docker.md b/docs/versioned_docs/version-0.9.6/get_started/running/docker.md new file mode 100644 index 00000000..396fdede --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/get_started/running/docker.md @@ -0,0 +1,303 @@ +--- +description: Run Commit-Boost with Docker +--- + +# Docker +The Commit-Boost CLI generates a dynamic `docker-compose.yml` file using the provided `.toml` config file. This is the recommended approach as Docker provides sandboxing of the containers from the rest of your system. + +## Init + +First run: +```bash +commit-boost-cli init --config cb-config.toml +``` +This will create up to three files: +- `cb.docker-compose.yml` which contains the full setup of the Commit-Boost services. +- `.cb.env` with local env variables, including JWTs for modules, only created if the signer module is enabled. +- `target.json` which enables dynamic discovery of services for metrics scraping via Prometheus, only created if metrics are enabled. + +## Start + +To start Commit-Boost run: +```bash +docker compose --env-file ".cb.env" -f ".cb.docker-compose.yml" up -d +``` + +This will run all the configured services, including PBS, signer and modules (if any). + +The MEV-Boost server will be exposed at `pbs.port` from the config, `18550` in our example. You'll need to point your CL/Validator client to this port to be able to source blocks from the builder market. + +## Logs +To check the logs, run: +```bash +docker compose --env-file ".cb.env" -f ".cb.docker-compose.yml" logs -f +``` +This will currently show all logs from the different services via the Docker logs interface. Logs are also optionally saved to file, depending on your `[logs]` configuration. + +## Stop + +To stop all the services and cleanup, simply run: +```bash +docker compose --env-file ".cb.env" -f ".cb.docker-compose.yml" down +``` +This will wind down all services and clear internal networks and file mounts. + + +## Example with PBS Only + +This section provides an example of a configuration where only the PBS service is run with its default configuration, and the Docker compose file produced by that configuration. + +All of PBS's parameters are controlled via the [Commit-Boost TOML configuration file](../configuration.md); the service cannot currently be controlled with command-line arguments. Therefore it is crucial to ensure that you have a configuration file present with all of the settings you require *before* starting the service, as this file will be mounted within the Docker container as a volume in read-only mode. + +Below is a simple configuration for running only the PBS service on the Hoodi network with two relays: + +``` +chain = "Hoodi" + +[pbs] +docker_image = "ghcr.io/commit-boost/pbs:v0.8.0" +relay_check = true +wait_all_registrations = true + +[[relays]] +id = "abc" +url = "http://0xa1cec75a3f0661e99299274182938151e8433c61a19222347ea1313d839229cb4ce4e3e5aa2bdeb71c8fcf1b084963c2@abc.xyz" + +[[relays]] +id = "def" +url = "http://0xa1cec75a3f0661e99299274182938151e8433c61a19222347ea1313d839229cb4ce4e3e5aa2bdeb71c8fcf1b084963c2@def.xyz" +``` + +Note that there are many more parameters that Commit-Boost supports, but they are all omitted and thus will use their default options. For a full description of the default options within the config file, go to the [annotated configuration example](../../../../config.example.toml). + +The relays here are placeholder for the sake of the example; for a list of actual relays, visit [the EthStaker relay list](https://github.com/eth-educators/ethstaker-guides/blob/main/MEV-relay-list.md). + + +### Commit-Boost CLI Output + +Run `commit-boost-cli init --config cb-config.toml` with the above configuration, the CLI will produce the following Docker Compose file: + +``` +services: + cb_pbs: + healthcheck: + test: curl -f http://localhost:18550/eth/v1/builder/status + interval: 30s + timeout: 5s + retries: 3 + start_period: 5s + image: ghcr.io/commit-boost/pbs:v0.8.0 + container_name: cb_pbs + ports: + - 127.0.0.1:18550:18550 + environment: + CB_CONFIG: /cb-config.toml + CB_PBS_ENDPOINT: 0.0.0.0:18550 + volumes: + - ./cb-config.toml:/cb-config.toml:ro +``` + +This will run the PBS service in a container named `cb_pbs`. + + +### Configuration File Volume + +The CLI creates a read-only volume binding for the config file, which the PBS service needs to run. The Docker compose file that it creates with the `init` command, `cb.docker-compose.yml`, will be placed into your current working directory when you run the CLI. The volume source will be specified as a *relative path* to that working directory, so it's ideal if the config file is directly within your working directory (or a subdirectory). If you need to specify an absolute path for the config file, you can adjust the `volumes` entry within the Docker compose file manually after its creation. + +Since this is a volume, the PBS service container will reload the file from disk any time it's restarted. That means you can change the file any time after the Docker compose file is created to tweak PBS's parameters, but it also means the config file must stay in the same location; if you move it, the PBS container won't be able to mount it anymore and fail to start unless you manually adjust the volume's source location. + + +### Networking + +The CLI will force the PBS service to bind to `0.0.0.0` within Docker's internal network so other Docker containers can access it, but it will only expose the API port (default `18550`) to `127.0.0.1` on your host machine. That way any processes running on the same machine can access it on that port. If you want to open the port for access across your entire network, not just your local machine, you can add the line: + +``` +host = "0.0.0.0" +``` + +to the `[pbs]` section in the configuration. This will cause the resulting `ports` entry in the Docker compose file to become: + +``` + ports: + - 0.0.0.0:18550:18550 +``` + +though you will need to add an entry to your local machine's firewall software (if applicable) for other machines to access it. + +Currently, the CLI will always export the PBS service's API port in one of these two ways. If you don't want to expose it at all, so it can only be accessed by other Docker containers running within Docker's internal network, you will need to manually remove the `ports` entry from the Docker compose file after it's been created: + +``` + ports: [] +``` + + +## Example with PBS, Signer, and a Signer Module + +In this scenario we will be running the PBS service, the Signer service, and a module (`DA_COMMIT`) that interacts with the Signer service's API. + +All of both PBS's and the Signer's parameters are controlled via the [Commit-Boost TOML configuration file](../configuration.md); the services cannot currently be controlled with command-line arguments. Therefore it is crucial to ensure that you have a configuration file present with all of the settings you require *before* starting the services, as this file will be mounted within the Docker containers as a volume in read-only mode. + +Below is a simple configuration for running only the three modules on the Hoodi network with two relays, extended from the prior scenario above: + +``` +chain = "Hoodi" + +[pbs] +docker_image = "ghcr.io/commit-boost/pbs:v0.8.0" +relay_check = true +wait_all_registrations = true + +[[relays]] +id = "abc" +url = "http://0xa1cec75a3f0661e99299274182938151e8433c61a19222347ea1313d839229cb4ce4e3e5aa2bdeb71c8fcf1b084963c2@abc.xyz" + +[[relays]] +id = "def" +url = "http://0xa1cec75a3f0661e99299274182938151e8433c61a19222347ea1313d839229cb4ce4e3e5aa2bdeb71c8fcf1b084963c2@def.xyz" + +[signer] +port = 20000 + +[signer.local.loader] +format = "lighthouse" +keys_path = "./keys" +secrets_path = "./secrets" + +[[modules]] +id = "DA_COMMIT" +type = "commit" +docker_image = "test_da_commit" +sleep_secs = 5 +``` + +Note that there are many more parameters that Commit-Boost supports, but they are all omitted and thus will use their default options. For a full description of the default options within the config file, go to the [annotated configuration example](../../../../config.example.toml). + +The relays here are placeholder for the sake of the example; for a list of actual relays, visit [the EthStaker relay list](https://github.com/eth-educators/ethstaker-guides/blob/main/MEV-relay-list.md). + +In this scenario there are two folders in the same directory as the configuration file (the working directory): `keys` and `secrets`. These correspond to the folders containing the [EIP-2335 keystores](../configuration.md#local-signer) and secrets in Lighthouse format. For your own keys, adjust the `format` parameter within the configuration and directory paths accordingly. + + +### Commit-Boost CLI Output + +Run `commit-boost-cli init --config cb-config.toml` with the above configuration, the CLI will produce two files: + +- `cb.docker-compose.yml` +- `.cb.env` + +The Docker compose file will have these contents: + +``` +services: + cb_da_commit: + image: test_da_commit + container_name: cb_da_commit + environment: + CB_MODULE_ID: DA_COMMIT + CB_CONFIG: /cb-config.toml + CB_SIGNER_JWT: ${CB_JWT_DA_COMMIT} + CB_SIGNER_URL: http://cb_signer:20000 + volumes: + - ./cb-config.toml:/cb-config.toml:ro + networks: + - signer_network + depends_on: + cb_signer: + condition: service_healthy + cb_pbs: + healthcheck: + test: curl -f http://localhost:18550/eth/v1/builder/status + interval: 30s + timeout: 5s + retries: 3 + start_period: 5s + image: ghcr.io/commit-boost/pbs:latest + container_name: cb_pbs + ports: + - 127.0.0.1:18550:18550 + environment: + CB_CONFIG: /cb-config.toml + CB_PBS_ENDPOINT: 0.0.0.0:18550 + volumes: + - ./cb-config.toml:/cb-config.toml:ro + cb_signer: + healthcheck: + test: curl -f http://localhost:20000/status + interval: 30s + timeout: 5s + retries: 3 + start_period: 5s + image: ghcr.io/commit-boost/signer:latest + container_name: cb_signer + ports: + - 127.0.0.1:20000:20000 + environment: + CB_CONFIG: /cb-config.toml + CB_JWTS: ${CB_JWTS} + CB_SIGNER_ENDPOINT: 0.0.0.0:20000 + CB_SIGNER_LOADER_KEYS_DIR: /keys + CB_SIGNER_LOADER_SECRETS_DIR: /secrets + volumes: + - ./cb-config.toml:/cb-config.toml:ro + - ./keys:/keys:ro + - ./secrets:/secrets:ro + networks: + - signer_network +networks: + signer_network: + driver: bridge + +``` + +This will create three Docker containers when executed: + +- `cb_pbs` for the PBS service +- `cb_signer` for the Signer service +- `cb_da_commit` for the example / test module that interacts with the Signer service API + +Finally, the `.cb.env` file produced will look like this: + +``` +CB_JWT_DA_COMMIT=mwDSSr7chwy9eFf7RhedBoyBtrwFUjSQ +CB_JWTS=DA_COMMIT=mwDSSr7chwy9eFf7RhedBoyBtrwFUjSQ +``` + +The Signer service needs JWT authentication from each of its modules. The CLI creates these and embeds them into the containers via environment variables automatically for convenience. This is demonstrated for the Signer module within the `environment` compose block: the `CB_JWTS: ${CB_JWTS}` forwards the `CB_JWTS` environment variable that's present when running Docker compose. The CLI requests that you do so via the command `docker compose --env-file "./.cb.env" -f "./cb.docker-compose.yml" up -d`; the `--env-file "./.cb.env"` handles loading the CLI's JWT output into this environment variable. + +Similarly, for the `cb_da_commit` module, the `CB_SIGNER_JWT: ${CB_JWT_DA_COMMIT}` line within its `environment` block will set the JWT that it should use to authenticate with the Signer service. + + +### Configuration File Volume + +As with the PBS-only example, the configuration file is placed into a read-only volume binding for all three images to reference. The same rules apply, so please read the [section in the PBS example](#configuration-file-volume) for details on how this works. + + +### Networking + +The CLI will force both the PBS and Signer API endpoints to bind to `0.0.0.0` within Docker's internal network so other Docker containers can access them, but it will only expose the API port (default `18550` for PBS and `20000` for the Signer) to `127.0.0.1` on your host machine. That way any processes running on the same machine can access them on their respective ports. If you want to open the ports for access across your entire network, not just your local machine, you can add the line: + +``` +host = "0.0.0.0" +``` + +to both the `[pbs]` and `[signer]` sections in the configuration. This will cause the resulting `ports` entries in the Docker compose file to become: + +``` + cb_pbs: + ... + ports: + - 0.0.0.0:18550:18550 + + + cb_signer: + ... + ports: + - 0.0.0.0:20000:20000 +``` + +though you will need to add entries to your local machine's firewall software (if applicable) for other machines to access them. + +Currently, the CLI will always export the PBS and Signer services' API ports in one of these two ways. If you don't want to expose them at all, so they can only be accessed by other Docker containers running within Docker's internal network, you will need to manually remove the `ports` entries from the Docker compose files after they've been created: + +``` + ports: [] +``` diff --git a/docs/versioned_docs/version-0.9.6/get_started/running/k8s.md b/docs/versioned_docs/version-0.9.6/get_started/running/k8s.md new file mode 100644 index 00000000..4cdd5a4b --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/get_started/running/k8s.md @@ -0,0 +1,75 @@ +--- +description: Deploy Commit-Boost on Kubernetes +--- + +# Kubernetes + +Commit-Boost can be deployed on Kubernetes using the [Helm chart](https://helm.sh/) available in the repository's `provisioning/k8s/commit-boost/` directory. + +## Scope limitation + +:::warning +The current Helm chart supports only the **PBS Service**. It does **not** support the Signer Service or custom commit modules. If you need Signer or module support, please use the [Docker](./docker.md) or [Binary](./binary.md) deployment methods instead. +::: + +## Prerequisites + +- A Kubernetes cluster +- [Helm](https://helm.sh/docs/intro/install/) installed (v3+) + +## Installation + +1. Clone the repository or navigate to the chart directory: + +```bash +git clone https://github.com/Commit-Boost/commit-boost-client.git +cd commit-boost-client/provisioning/k8s/commit-boost +``` + +2. Edit the `values.yaml` file to configure the PBS service according to your needs. The key configuration options are described in the [Values table](#values) below. + +3. Install the chart: + +```bash +helm install commit-boost . -f values.yaml +``` + +This will deploy the Commit-Boost PBS service. By default, the PBS service is available on port `18550`. Point your beacon nodes and validator clients to this port. + +## Values + +The PBS service is configured through the `values.yaml` file. The chart exposes the following key configuration options under the `commitBoost.pbs` section: + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `commitBoost.pbs.enable` | bool | `true` | Enable the PBS service | +| `commitBoost.pbs.image.repository` | string | `ghcr.io/commit-boost/commit-boost` | PBS container image repository | +| `commitBoost.pbs.image.tag` | string | `v0.4.0` | PBS container image tag | +| `commitBoost.pbs.config.chain` | string | `Holesky` | Ethereum network (e.g. Holesky, Hoodi) | +| `commitBoost.pbs.config.pbs.port` | int | `18550` | PBS service port | +| `commitBoost.pbs.config.relays` | list | `[]` | List of relays to connect to | +| `commitBoost.pbs.config.mux` | list | `[]` | Multiplexer configuration for validator-specific relay routing | +| `commitBoost.pbs.config.metrics.server_port` | int | `10000` | Metrics server port | +| `replicaCount` | int | `1` | Number of PBS pod replicas | +| `service.type` | string | `ClusterIP` | Kubernetes service type | +| `service.pbs_port` | int | `18550` | Service port for PBS | +| `resources` | object | `{}` | Pod resource requests and limits | +| `autoscaling.enabled` | bool | `false` | Enable horizontal pod autoscaling | + +For the full list of available values and their descriptions, see the [README.md](https://github.com/Commit-Boost/commit-boost-client/blob/main/provisioning/k8s/commit-boost/README.md) in the chart directory. + +## Upgrading + +To upgrade an existing release after modifying `values.yaml`: + +```bash +helm upgrade commit-boost . -f values.yaml +``` + +## Uninstalling + +To uninstall the release: + +```bash +helm uninstall commit-boost +``` diff --git a/docs/versioned_docs/version-0.9.6/get_started/running/metrics-catalog.md b/docs/versioned_docs/version-0.9.6/get_started/running/metrics-catalog.md new file mode 100644 index 00000000..26035642 --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/get_started/running/metrics-catalog.md @@ -0,0 +1,55 @@ +--- +sidebar_label: "Metrics catalog" +--- + +# Metrics catalog + +This page lists every metric emitted by the Commit-Boost PBS and Signer services together with the runtime-registered build-info metric from the shared telemetry crate. Use this as a reference when building dashboards or writing alerting rules. + +--- + +## PBS metrics + +PBS metrics use a custom Prometheus registry with namespace prefix `cb_pbs_`. The registry is created via `Registry::new_custom(Some("cb_pbs"), None)` in `crates/pbs/src/metrics.rs`. All wire names shown below include this prefix. + +| Metric name (wire) | Type | Labels | Description | +|---|---|---|---| +| `cb_pbs_relay_status_code_total` | Counter | `http_status_code`, `endpoint`, `relay_id` | HTTP status code received by relay. Incremented after each relay HTTP response; `http_status_code` may be `"555"` (the value of `TIMEOUT_ERROR_CODE_STR`) for timeouts. Endpoint values: `get_header`, `register_validator`, `submit_blinded_block`, `status`. | +| `cb_pbs_relay_latency` | Histogram | `endpoint`, `relay_id` | HTTP latency (duration in seconds) by relay. Records duration of relay HTTP requests. Endpoint values: `get_header`, `register_validator`, `submit_blinded_block`, `status`. | +| `cb_pbs_relay_last_slot` | Gauge | `relay_id` | Latest slot for which a relay delivered a header. Only updated in the `get_header` handler. Set to the current slot on each successful header from that relay. | +| `cb_pbs_relay_header_value` | Gauge | `relay_id` | Header value in gwei delivered by a relay. Converted from raw wei (÷ 1e9) in the `get_header` handler. | +| `cb_pbs_beacon_node_status_code_total` | Counter | `http_status_code`, `endpoint` | HTTP status code returned to the beacon node. Tracks what status codes the PBS returns for beacon node-facing requests. Endpoint values: `get_header`, `register_validator`, `submit_blinded_block`, `status`, `reload`. Error status codes (`502` for `NoResponse`/`NoPayload`, `500` for `Internal`) are set via `PbsClientError`. | + +--- + +## Signer metrics + +Signer metrics use a custom Prometheus registry with namespace prefix `cb_signer_`. The registry is created via `Registry::new_custom(Some("cb_signer"), None)` in `crates/signer/src/metrics.rs`. Wire names include this prefix. + +| Metric name (wire) | Type | Labels | Description | +|---|---|---|---| +| `cb_signer_signer_status_code_total` | Counter | `http_status_code`, `endpoint` | HTTP status code returned by signer endpoints. Incremented as responses are sent. Endpoint values: `get_pubkeys`, `generate_proxy_key`, `request_signature_bls`, `request_signature_proxy_bls`, `request_signature_proxy_ecdsa`. | + +--- + +## Build-info metric (all services) + +When each service starts its metrics HTTP server (via the `MetricsProvider` from the `cb-metrics` crate), a runtime-registered gauge is added to its registry: + +| Metric name (wire) | Type | Labels | Description | +|---|---|---|---| +| `info` | Gauge | `version`, `commit`, `network` | Always `1`. Carries build metadata as Prometheus const labels. The `version` label is the crate version (`CARGO_PKG_VERSION`), `commit` is the Git hash at build time (`GIT_HASH`), and `network` is the chain name (e.g. `mainnet`, `holesky`, `ephemery`). | + +This metric appears under the service's own registry prefix — for example, the PBS instance exposes it as `cb_pbs_info{version="...",commit="...",network="..."}` and the Signer exposes it as `cb_signer_info{version="...",commit="...",network="..."}`. + +--- + +## Custom module metrics + +Commit-Modules can register their own metrics via the `prometheus` crate. Each module receives a `ModuleMetricsConfig` at init time which includes the `server_port` for its metrics HTTP server. To expose custom metrics: + +1. Create a custom `Registry` (optionally with a namespace prefix). +2. Register your metrics on that registry. +3. Pass the registry to `MetricsProvider::new()` or `MetricsProvider::load_and_run()` to serve them on the module's `/metrics` endpoint. + +All module metrics are served on a separate port and are **not** aggregated into the PBS or Signer registries. To collect them, add the module's metrics port as an additional scrape target in your Prometheus configuration. diff --git a/docs/versioned_docs/version-0.9.6/get_started/running/metrics.md b/docs/versioned_docs/version-0.9.6/get_started/running/metrics.md new file mode 100644 index 00000000..38e8534b --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/get_started/running/metrics.md @@ -0,0 +1,94 @@ +--- +description: Setup metrics collection +--- + +# Metrics + +Commit-Boost can be configured to collect metrics from the different services and expose them to be scraped from Prometheus. + +Make sure to add the `[metrics]` section to your config file: + +```toml +[metrics] +enabled = true +``` +If the section is missing, metrics collection will be disabled. If you generated the `docker-compose.yml` file with `commit-boost-cli`, metrics ports will be automatically configured, and a sample `target.json` file will be created. If you're running the binaries directly, you will need to set the correct environment variables, as described in the [previous section](/get_started/running/binary#common). + +## Example setup + +:::note +The following examples assume you're running Prometheus/Grafana on the same machine as Commit-Boost. In general you should avoid this setup, and instead run them on a separate machine. cAdvisor should run in the same machine as the containers you want to monitor. +::: + + +### cAdvisor +[cAdvisor](https://github.com/google/cadvisor) is a tool for collecting and reporting resource usage and performance characteristics of running containers. + +```yml title="cb.docker-compose.yml" +cb_cadvisor: + image: gcr.io/cadvisor/cadvisor + container_name: cb_cadvisor + ports: + - 127.0.0.1:8080:8080 + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - /sys:/sys:ro + - /var/lib/docker/:/var/lib/docker:ro +``` + +### Prometheus + +For more information on how to setup Prometheus, see the [Prometheus documentation](https://prometheus.io/docs/prometheus/latest/getting_started/). + +```yml title="cb.docker-compose.yml" +cb_prometheus: + image: prom/prometheus:v3.0.0 + container_name: cb_prometheus + ports: + - 127.0.0.1:9090:9090 + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml + - prometheus-data:/prometheus +``` + +```yml title="prometheus.yml" +global: + scrape_interval: 15s + +scrape_configs: + - job_name: "commit-boost" + static_configs: + - targets: ["cb_da_commit:10000", "cb_pbs:10001", "cb_signer:10002", "cb_cadvisor:8080"] +``` + +### Grafana +For more information on how to setup Grafana, see the [Grafana documentation](https://grafana.com/docs/grafana/latest/getting-started/). + +```yml title="cb.docker-compose.yml" +cb_grafana: + image: grafana/grafana:11.3.1 + container_name: cb_grafana + ports: + - 127.0.0.1:3000:3000 + volumes: + - ./grafana/datasources:/etc/grafana/provisioning/datasources + - grafana-data:/var/lib/grafana +``` + +```yml title="datasources.yml" +apiVersion: 1 + +datasources: + - name: prometheus + type: prometheus + uid: prometheus + access: proxy + orgId: 1 + url: http://cb_prometheus:9090 + isDefault: true + editable: true +``` + +Once Grafana is running, you can [import](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/import-dashboards/) the Commit-Boost dashboards from [here](https://github.com/Commit-Boost/commit-boost-client/tree/main/provisioning/grafana), making sure to select the correct `Prometheus` datasource. + + diff --git a/docs/versioned_docs/version-0.9.6/get_started/troubleshooting.md b/docs/versioned_docs/version-0.9.6/get_started/troubleshooting.md new file mode 100644 index 00000000..7dc9f648 --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/get_started/troubleshooting.md @@ -0,0 +1,68 @@ +--- +description: Common issues +--- + +# Troubleshooting + +Commit-Boost was recently audited and going through a phased approach for validators to move to production. If you find any or have any question, please reach out on [X (Twitter)](https://x.com/Commit_Boost) or [Telegram](https://t.me/+Pcs9bykxK3BiMzk5). If there are any security related items, please see [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/SECURITY.md). + + +If you started the modules correctly you should see the following logs. + +## PBS +After the module started correctly you should see: +```bash +2024-09-16T19:27:16.004643Z INFO Starting PBS service address=0.0.0.0:18550 events_subs=0 +``` + +To check that the setup is correct and you are connected to relays, you can trigger manually the `/status` endpoint, by running: + +```bash +curl http://0.0.0.0:18550/eth/v1/builder/status -vvv + +* Trying 0.0.0.0:18550... +* Connected to 0.0.0.0 (127.0.0.1) port 18550 (#0) +> GET /eth/v1/builder/status HTTP/1.1 +> Host: 0.0.0.0:18550 +> User-Agent: curl/7.81.0 +> Accept: */* +> +* Mark bundle as not supporting multiuse +< HTTP/1.1 200 OK +< content-length: 0 +< date: Mon, 16 Sep 2024 19:32:07 GMT +< +* Connection #0 to host 0.0.0.0 left intact +``` + +if now you check the logs, you should see: + +```bash +2024-09-16T19:32:07.634966Z INFO status{req_id=62f1c0db-f277-49fa-91e7-a9a1c2b2a6d3}: ua="curl/7.81.0" relay_check=true +2024-09-16T19:32:07.642992Z INFO status{req_id=62f1c0db-f277-49fa-91e7-a9a1c2b2a6d3}: relay check successful +``` + +If the sidecar is setup correctly, it will receive and process calls from the CL: +#### Register validator +This should happen periodically, depending on your validator setup. + +```bash +2024-09-16T19:28:37.976534Z INFO register_validators{req_id=296f662f-0e7a-4f15-be75-55b8ca19ffc0}: ua="Lighthouse/v5.2.1-9e12c21" num_registrations=500 +2024-09-16T19:28:38.819591Z INFO register_validators{req_id=296f662f-0e7a-4f15-be75-55b8ca19ffc0}: register validator successful +``` + +#### Get header +This will only happen if some of your validators have a proposal slot coming up. + +```bash +2024-09-16T19:30:24.135376Z INFO get_header{req_id=74126c5f-69e6-4961-86a6-6c2597bf15f5 slot=2551052}: ua="Lighthouse/v5.2.1-9e12c21" parent_hash=0x641c99d6e4f14bf6d268eb2a8c0dc51c7030ab24e384c0e679f2a6b438d298ea validator_pubkey=0x84fc20b09496341f24abfcb6f407e916ecc317497c5b1bba4970e50e96cf5e731b88e51753064c30cb221453bd71aebf ms_into_slot=135 +2024-09-16T19:30:25.089477Z INFO get_header{req_id=74126c5f-69e6-4961-86a6-6c2597bf15f5 slot=2551052}: received header block_hash=0x0139686e8d251f010153875270256fce6f298d7b3f3f9129179fb86297dffad3 value_eth="0.001399518501462470" +``` + +#### Submit block +This will only happen if you received a header in the previous call, and if the header is higher than the locally built block. + +```bash +2024-09-16T14:38:01.409075Z INFO submit_blinded_block{req_id=6eb9a04d-6f79-4295-823f-c054582b3599 slot=2549590}: ua="Lighthouse/v5.2.1-9e12c21" slot_uuid=16186e06-0cd0-47bc-9758-daa1b66eff5c ms_into_slot=1409 block_hash=0xfa135ae6f2bfb32b0a47368f93d69e0a2b3f8b855d917ec61d78e78779edaae6 +2024-09-16T14:38:02.910974Z INFO submit_blinded_block{req_id=6eb9a04d-6f79-4295-823f-c054582b3599 slot=2549590}: received unblinded block +``` diff --git a/docs/versioned_docs/version-0.9.6/intro.md b/docs/versioned_docs/version-0.9.6/intro.md new file mode 100644 index 00000000..70075cd1 --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/intro.md @@ -0,0 +1,28 @@ +--- +id: introduction +sidebar_position: 1 +slug: / +--- + +# Introduction + +import CommitBoostLogo from '/img/logo.png'; +import Overview from '/img/overview.png'; + +Commit Boost Logo + +
+
+ +Commit-Boost is a new Ethereum validator sidecar focused on standardizing the communication between validators and third-party protocols. This open-source public good is fully compatible with [MEV-Boost](https://github.com/flashbots/mev-boost) and acts as a light-weight platform to allow validators to safely make commitments. + +Commit-Boost runs as a single sidecar composed of multiple modules: + +Commit Boost Overview + +
+
+ +Commit-Boost is being developed in Rust from scratch, and has been designed with safety and modularity at its core, with the goal of not limiting the market downstream including stakeholders, flows, proposer commitments, enforcement mechanisms, etc. + +Please see Commit-Boost, Inc's [terms of service](https://github.com/Commit-Boost/commit-boost-client/blob/main/TERMS-OF-USE.md). diff --git a/docs/versioned_docs/version-0.9.6/overview.md b/docs/versioned_docs/version-0.9.6/overview.md new file mode 100644 index 00000000..5005bda8 --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/overview.md @@ -0,0 +1,35 @@ +--- +sidebar_position: 2 +--- + +# Overview + +## Background +- Proposer commitments have been an important part of Ethereum’s history. Today, we already see the power of commitments where over 90% of validators give up their autonomy and make a wholesale commitment that outsources block building to a sophisticated actor called a block builder. +- However, most are starting to agree on a common denominator: in the future, beacon proposers will face a broader set of options of what they may “commit" to–be it inclusions lists or preconfs or other types of commitments such as long-dated blockspace futures–compared to just an external or local payload they see today. +- A recent post from Barnabe captures this well; during block construction, the validator “…creates the specs, or the template, by which the resulting block must be created, and the builders engaged by the proposer are tasked with delivering the block according to its specifications”. +- While this all seems great, the challenge is that many teams building commitments are creating new sidecars driving fragmentation and risks for Ethereum. +- For Ethereum, there are going to be significant challenges and increased risks during upgrades if there are a handful of sidecars validators are running. +- For validators, these risks potentially take us to a world where proposers will need to make decisions on which teams to “bet on” and which sidecars they will need to run to participate in what those teams are offering. +- For homestakers, this is difficult and they likely will be unable to participate in more than one of these commitments. +- For sophisticated actors, this increases the attack vector and operational complexity as more and more sidecars are required to be run. +- Another side effect of this is validators are somewhat locked into using a specific sidecar due to limited operational capacity and the switching costs of running a different sidecar (i.e., vendor lock-in). The higher the switching costs, the more embedded network effects could become if these sidecars only support certain downstream actors / proposer commitment protocols. +- This also could create a dynamic where core out-of-protocol infrastructure supporting Ethereum which should be a public good, starts being used for monetization, distribution, or other purposes. +- Commit-Boost aims to standardize how proposer commitment protocols communicate with the proposer, by providing a unified interface implemented in a single validator sidecar with the goal of reducing fragmentation. + +## Goals +- Unify behind a software / standard to reduce fragmentation risks for Ethereum and its validators, while ensuring open innovation downstream from the proposer can flourish. +- Create a neutral, open-source, public good for the safe development and distribution of proposer commitments protocols. +- Provide a well-tested, reliable validator sidecar with support for advanced observability and telemetry. + +## Why Commit-Boost? + +### For validators +- Run a single sidecar with support for MEV-Boost and other proposer commitments protocols, such as preconfirmations and inclusion lists. +- Out-of-the-box support for metrics reporting and dashboards to have clear insight into what is happening in your validator. +- Plug-in system to add custom modules, e.g. receive a notification on Telegram if a relay fails to deliver a block. + +### For developers +- A modular platform to develop and distribute proposer commitments protocols. +- A single API to interact with validators. +- Support for hard-forks and new protocol requirements. diff --git a/docs/versioned_docs/version-0.9.6/res/img/consensus-key-sign.png b/docs/versioned_docs/version-0.9.6/res/img/consensus-key-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..118903f688bfc490783ff39f0ae03097b433efbc GIT binary patch literal 103080 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

!#(Rp!$Xh* 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 k#ikbdqW+~j5I=&)OsAw().unwrap(); +let to_sleep = config.extra.sleep_secs; +``` + +The loaded `config` also has a few other useful fields: +- the unique `id` of the module +- chain spec +- a `SignerClient` to call the [SignerAPI](/api), already setup with the correct JWT + + +## Requesting signatures +At its core the Signer Module simply provides a signature on a 32-byte data digest. The signatures are currently provided with either the validator keys (BLS) or a proxy key (BLS or ECDSA) for a given validator key, both on the [builder domain](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/common/src/signature.rs#L88-L96). + +In the example we use `TreeHash`, already used in the CL, to create the digest from a custom struct: +```rust +#[derive(TreeHash)] +struct Datagram { + data: u64, +} +``` + +Furthermore, in order to request a signature, we'd need a public key of the validator. You can get a list of available keys by calling: +```rust +let pubkeys = config.signer_client.get_pubkeys().await.unwrap(); +``` + +Which will call the `get_pubkeys` endpoint of the [SignerAPI](/api), returning all the consensus pubkeys and the corresponding proxy keys, of your module. + +Note that the requests are authenticated using a JWT, that must be regularly refreshed as it expires after a certain time. To do so, you can call: +```rust +config.signer_client.refresh_token().await.unwrap(); +``` +You have the `SIGNER_JWT_EXPIRATION` constant available in the `commit-boost` crate, which is the time in seconds after which the JWT will expire. + +Then, we can request a signature either with a consensus key or with a proxy key: + +### With a consensus key +Requesting a signature is as simple as: +```rust +let datagram = Datagram { data: 1 }; +let request = SignConsensusRequest::builder(pubkey).with_msg(&datagram); +let signature = config.signer_client.request_consensus_signature(&request).await.unwrap(); +``` + +Where `pubkey` is the validator (consensus) public key for which the signature is requested. + +### With a proxy key +You'll have to first request a proxy key be generated for a given consensus key. +We support two signature schemes for proxies: BLS or ECDSA. + +To request a proxy: +```rust +// BLS proxy +let proxy_delegation = self.config.signer_client.generate_proxy_key_bls(pubkey).await?; +let proxy_pubkey = proxy_delegation.message.proxy; + +// or ECDSA proxy +let proxy_delegation = self.config.signer_client.generate_proxy_key_ecdsa(pubkey).await?; +let proxy_address = proxy_delegation.message.proxy; +``` + +Where `pubkey` is the validator (consensus) public key for which a proxy is to be generated. + +Then you can use the generated proxy key to request a signature: +```rust +// if `proxy_pubkey` is a BLS proxy +let datagram = Datagram { data: 1 }; +let request = SignProxyRequest::builder(proxy_pubkey).with_msg(&datagram); +let signature = config.signer_client.request_proxy_signature_bls(&request).await.unwrap(); + +// or for ECDSA proxy +let datagram = Datagram { data: 1 }; +let request = SignProxyRequest::builder(proxy_address).with_msg(&datagram); +let signature = config.signer_client.request_proxy_signature_ecdsa(&request).await.unwrap(); +``` + +## Metrics +We provide support for modules to record custom metrics which are automatically scraped by Prometheus. This involves three steps +### Define metrics +You can use the `prometheus` crate to create a custom registry and metrics, for example: + +```rust +static ref MY_CUSTOM_REGISTRY: Registry = Registry::new_custom(Some("da_commit".to_string()), None).unwrap(); +static ref SIG_RECEIVED_COUNTER: IntCounter = IntCounter::new("signature_received", "successful signature requests received").unwrap(); +``` + +### Start Metrics Provider +When starting the module, you should register all metrics, and start the `MetricsProvider`: +```rust +MY_CUSTOM_REGISTRY.register(Box::new(SIG_RECEIVED_COUNTER.clone())).unwrap(); +MetricsProvider::load_and_run(MY_CUSTOM_REGISTRY.clone()); +``` +The `MetricsProvider` will load the configuration needed and start a server with a `/metrics` endpoint for Prometheus to scrape. + +### Record metrics +All that is left is to use the metrics throughout your code: +```rust +SIG_RECEIVED_COUNTER.inc(); +``` +These will be automatically scraped by the Prometheus service running, and exposed on port `9090`. We plan to allow developers to ship pre-made dashboards together with their modules, to allow Node Operators to have an improved oversight on the modules they are running. diff --git a/docs/versioned_docs/version-0.9.6/developing/commit-modules.md b/docs/versioned_docs/version-0.9.6/developing/commit-modules.md new file mode 100644 index 00000000..855ecc7a --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/developing/commit-modules.md @@ -0,0 +1,161 @@ +--- +sidebar_position: 1 +--- + +# Commit Modules + +Commit-Boost provides an open platform for developers to create and distribute commitment protocol sidecars. **Commit Modules** are the primary way to add custom logic — they run as sidecar processes alongside the PBS and Signer services, and can request signatures from the proposer. + +> **For system context**, see the [Architecture Overview](../architecture/overview.md). + +## Config entry + +Each commit module is declared in the `cb-config.toml` file under a `[[modules]]` entry: + +```toml +[[modules]] +id = "DA_COMMIT" +type = "commit" +docker_image = "my-module-image" +signing_id = "0x6a33a23ef26a4836979edff86c493a69b26ccf0b4a16491a815a13787657431b" +``` + +| Field | Description | +|---|---| +| `id` | A unique identifier for the module (used for JWT scoping and container naming). | +| `type` | **Must be `"commit"`.** This is the only valid value. | +| `docker_image` | The Docker image to run for this module. | +| `signing_id` | A 32-byte identifier used to scope signatures to this module (see [Signing structure](#signing-structure)). | +| (custom) | Additional fields are passed through as opaque config to the module's runtime. | + +:::warning +Setting `type = "pbs"` in a `[[modules]]` entry is **not** a supported path. The configuration parser will reject it at parse time. If you want to extend the PBS binary itself, see [Extending PBS](./extending-pbs.md). +::: + + + +## Rust SDK usage + +While a module can be written in any language, we provide Rust utilities to simplify loading and running modules. Add to your `Cargo.toml`: + +```toml +commit-boost = { git = "https://github.com/Commit-Boost/commit-boost-client", version = "..." } +``` + +Import the prelude: + +```rust +use commit_boost::prelude::*; +``` + +### Loading module config + +Your module will likely need a configuration section for the Node Operator to customize. Define it as a struct and pass it to `load_commit_module_config`: + +```rust +#[derive(Debug, Deserialize)] +struct ExtraConfig { + sleep_secs: u64, +} + +let config = load_commit_module_config::().unwrap(); +let to_sleep = config.extra.sleep_secs; +``` + +The returned `StartCommitModuleConfig` also provides: +- `id` — unique module ID +- `chain` — chain spec +- `signer_client` — a pre-configured `SignerClient` to call the [SignerAPI](/api) + +### Requesting signatures + +At its core, the Signer Service provides a signature on a 32-byte data digest. Signatures are provided using either the validator keys (BLS) or a proxy key (BLS or ECDSA), both on the [Commit-Boost domain](#signing-structure). + +Use `TreeHash` to create a digest from a custom struct: + +```rust +#[derive(TreeHash)] +struct Datagram { + data: u64, +} +``` + +To request a signature, you need a public key. Get available keys: + +```rust +let pubkeys = config.signer_client.get_pubkeys().await.unwrap(); +``` + +JWT tokens are created and refreshed internally by `SignerClient` — each method generates a fresh token with the correct `route`, `exp`, and `payload_hash` claims automatically. No manual token management is needed. + +#### Consensus key signatures + +```rust +let datagram = Datagram { data: 1 }; +let request = SignConsensusRequest::builder(pubkey).with_msg(&datagram); +let signature = config.signer_client.request_consensus_signature(&request).await.unwrap(); +``` + +Where `pubkey` is the validator (consensus) public key. + +#### Proxy key signatures + +First, generate a proxy key for a given consensus key. We support BLS and ECDSA: + +```rust +// BLS proxy +let proxy_delegation = config.signer_client.generate_proxy_key_bls(pubkey).await?; +let proxy_pubkey = proxy_delegation.message.proxy; + +// ECDSA proxy +let proxy_delegation = config.signer_client.generate_proxy_key_ecdsa(pubkey).await?; +let proxy_address = proxy_delegation.message.proxy; +``` + +Then request a signature using the proxy key: + +```rust +// BLS proxy +let datagram = Datagram { data: 1 }; +let request = SignProxyRequest::builder(proxy_pubkey).with_msg(&datagram); +let signature = config.signer_client.request_proxy_signature_bls(&request).await.unwrap(); + +// ECDSA proxy +let datagram = Datagram { data: 1 }; +let request = SignProxyRequest::builder(proxy_address).with_msg(&datagram); +let signature = config.signer_client.request_proxy_signature_ecdsa(&request).await.unwrap(); +``` + +### Signing structure + +For details on the signing structure — including domain separation, nonces, SSZ Merkle tree construction, and the signing ID format — see [Requesting Proposer Commitment Signatures](./prop-commit-signing.md). + +## Metrics + +Modules can record custom metrics that are automatically scraped by Prometheus. + +### Define metrics + +Use the `prometheus` crate: + +```rust +static ref MY_CUSTOM_REGISTRY: Registry = Registry::new_custom(Some("da_commit".to_string()), None).unwrap(); +static ref SIG_RECEIVED_COUNTER: IntCounter = IntCounter::new("signature_received", "successful signature requests received").unwrap(); +``` + +### Start the metrics provider + +```rust +MY_CUSTOM_REGISTRY.register(Box::new(SIG_RECEIVED_COUNTER.clone())).unwrap(); +MetricsProvider::load_and_run(MY_CUSTOM_REGISTRY.clone()); +``` + +This starts a server with a `/metrics` endpoint on the configured port (default `9090`). + +### Record metrics + +```rust +SIG_RECEIVED_COUNTER.inc(); +``` + +For a full reference of available metrics, see the [Metrics catalog](../get_started/running/metrics.md) (once created; the Prometheus scrape target is already configured by the docker-init setup). diff --git a/docs/versioned_docs/version-0.9.6/developing/custom-modules.md b/docs/versioned_docs/version-0.9.6/developing/custom-modules.md new file mode 100644 index 00000000..cf224448 --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/developing/custom-modules.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 1 +--- + +# Custom Modules + +Commit-Boost aims to provide an open platform for developers to create and distribute commitment protocols sidecars. + +There are two ways to leverage Commit-Boost modularity: + +1. Commit Modules, which request signatures from the proposer, e.g. for preconfirmations ([example](https://github.com/Commit-Boost/commit-boost-client/tree/78bdc47bf89082f4d1ea302f9a3f86f609966b28/examples/da_commit)). +2. PBS Modules, which tweak the default PBS Module with additional logic, e.g. verifying additional constraints in `get_header` ([example](https://github.com/Commit-Boost/commit-boost-client/tree/78bdc47bf89082f4d1ea302f9a3f86f609966b28/examples/status_api)). diff --git a/docs/versioned_docs/version-0.9.6/developing/environment-setup.md b/docs/versioned_docs/version-0.9.6/developing/environment-setup.md new file mode 100644 index 00000000..048b2df9 --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/developing/environment-setup.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 3 +--- +# Environment setup + +## Dirk signer + +In order to test Commit-Boost with a Dirk signer, you need to have a running Dirk instance. You can find a complete step-by-step guide on how to setup one in the Dirk's docs [here](https://github.com/attestantio/dirk/blob/master/docs/distributed_key_generation.md). + +If you are using a custom certificate authority, don't forget to add the CA certificate to the TOML config under `signer.dirk.ca_cert_path`. diff --git a/docs/versioned_docs/version-0.9.6/developing/extending-pbs.md b/docs/versioned_docs/version-0.9.6/developing/extending-pbs.md new file mode 100644 index 00000000..4bde3ab6 --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/developing/extending-pbs.md @@ -0,0 +1,100 @@ +--- +sidebar_position: 2 +--- + +# Extending PBS + +The PBS binary that ships with Commit-Boost can be extended with custom logic. This is **not** a config-level module declaration like commit modules — instead you replace the PBS binary entirely by implementing the `DefaultBuilderApi` trait. + +## Before you extend PBS + +| You want to... | Use... | +|---|---| +| Request signatures from the proposer's validator keys (BLS/ECDSA) | [Commit Module](./commit-modules.md) — runs as a sidecar alongside PBS | +| Add custom constraints to `get_header`, `submit_block`, or other BuilderAPI methods | Extend PBS — replace the `DefaultBuilderApi` with your own implementation | +| Run custom logic that triggers on each slot but does not modify relay interaction | Commit Module — cheaper to maintain and deploy independently | +| Add new HTTP routes alongside the standard BuilderAPI | Extend PBS — implement `extra_routes()` on your custom `BuilderApi` | + +**Rule of thumb:** if you need to change how relay responses are filtered, validated, or transformed, extend PBS. If you want to request signatures or run slot-triggered logic independently, write a Commit Module. + +## How it works + +The PBS binary ships with the [`DefaultBuilderApi`](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/pbs/src/api.rs) struct, which implements [`BuilderApi`](https://github.com/Commit-Boost/commit-boost-client/blob/main/crates/pbs/src/api.rs) with default (MEV-Boost-compatible) behavior for each method. + +The trait covers: + +- `get_header` — fetch the best header from relays +- `get_status` — check relay health +- `submit_block` — publish blinded blocks +- `register_validator` — register validators with relays +- `reload` — hot-reload configuration +- `extra_routes` — add custom HTTP endpoints + +By implementing `BuilderApi` on your own struct, you can override any of these methods while reusing the default MEV-Boost logic by calling the corresponding free functions (`crate::get_header`, etc.) from within your override. + +### Reference example + +See [`examples/status_api/`](https://github.com/Commit-Boost/commit-boost-client/tree/main/examples/status_api) for a complete working example that: + +1. Defines a custom `ExtraConfig` struct with additional TOML fields (`inc_amount`). +2. Creates a custom `BuilderApiState` (`MyBuilderState`) to hold runtime state. +3. Implements `BuilderApi` that overrides `get_status` with custom logging and a counter, and adds a `/check` route via `extra_routes()`. +4. Loads config with `load_pbs_custom_config::()` and starts the service with `PbsService::run::<_, MyBuilderApi>(state)`. + +## Building and running a custom PBS binary + +### Dependencies + +Add the `commit-boost` crate to your `Cargo.toml`: + +```toml +commit-boost = { git = "https://github.com/Commit-Boost/commit-boost-client", version = "..." } +``` + +### Entry point + +Your `main.rs` should: + +1. Define your extra config (if any): + +```rust +#[derive(Debug, Deserialize)] +struct ExtraConfig { + inc_amount: u64, +} +``` + +2. Define your state (if any): + +```rust +#[derive(Clone)] +struct MyBuilderState { /* ... */ } +impl BuilderApiState for MyBuilderState {} +``` + +3. Implement `BuilderApi`: + +```rust +struct MyBuilderApi; + +#[async_trait] +impl BuilderApi for MyBuilderApi { + // Override methods here +} +``` + +4. Load config and run: + +```rust +let (pbs_config, extra) = load_pbs_custom_config::().await?; +let state = PbsState::new(pbs_config, config_path).with_data(MyBuilderState::from_config(extra)); +PbsService::run::(state).await +``` + +### Running + +Compile and run your binary. Set the same environment variables as the default PBS (see [Running with binary](../get_started/running/binary.md)). Your custom PBS handles the same BuilderAPI endpoints plus any extra routes you added. + +## Cross-reference + +For system context on how PBS fits into the Commit-Boost architecture, see [Architecture Overview](../architecture/overview.md). diff --git a/docs/versioned_docs/version-0.9.6/developing/prop-commit-signing.md b/docs/versioned_docs/version-0.9.6/developing/prop-commit-signing.md new file mode 100644 index 00000000..2e57ac3d --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/developing/prop-commit-signing.md @@ -0,0 +1,191 @@ +# Requesting Proposer Commitment Signatures with Commit-Boost + +When you create a new validator on the Ethereum network, one of the steps is the generation of a new BLS private key (commonly known as the "validator key" or the "signer key") and its corresponding BLS public key (the "validator pubkey", used as an identifier). Typically this private key will be used by an Ethereum consensus client to sign things such as attestations and blocks for publication on the Beacon chain. These signatures prove that you, as the owner of that private key, approve of the data being signed. However, as general-purpose private keys, they can also be used to sign *other* arbitrary messages not destined for the Beacon chain. + +Commit-Boost takes advantage of this by offering a standard known as **proposer commitments**. These are arbitrary messages (albeit with some important rules), similar to the kind used on the Beacon chain, that have been signed by one of the owner's private keys. Modules interested in leveraging Commit-Boost's proposer commitments can construct their own data in whatever format they like and request that Commit-Boost's **signer service** generate a signature for it with a particular private key. The module can then use that signature to verify the data was signed by that user. + +Commit-Boost supports proposer commitment signatures for both BLS private keys (identified by their public key) and ECDSA private keys (identified by their Ethereum address). + + +## Rules of Proposer Commitment Signatures + +Proposer commitment signatures produced by Commit-Boost's signer service conform to the following rules: + +- Signatures are **unique** to a given EVM chain (identified by its [chain ID](https://chainlist.org/)). Signatures generated for one chain will not work on a different chain. +- Signatures are **unique** to Commit-Boost proposer commitments. The signer service **cannot** be used to create signatures that could be used for other applications, such as for attestations on the Beacon chain. While the signer service has access to the same validator private keys used to attest on the Beacon chain, it cannot create signatures that would get you slashed on the Beacon chain. +- Signatures are **unique** to a particular module. One module cannot, for example, request an identical payload as another module and effectively "forge" a signature for the second module; identical payloads from two separate modules will result in two separate signatures. +- The data payload being signed must be a **32-byte array**, typically serializd as a 64-character hex string with an optional `0x` prefix. The value itself is arbitrary, as long as it has meaning to the requester - though it is typically the 256-bit hash of some kind of data. +- If requesting a signature from a BLS key, the resulting signature will be a standard BLS signature (96 bytes in length). +- If requesting a signature from an ECDSA key, the resulting signature will be a standard Ethereum RSV signature (65 bytes in length). +- Signatures **may** be **unique** per request, using the optional `nonce` field in their requests to indicate a unique sequence that this signature belongs to. + + +## Configuring a Module for Proposer Commitments + +Commit-Boost's signer service must be configured prior to launching to expect requests from your module. There are two main parts: + +1. An entry for your module into [Commit-Boost's configuration file](../get_started/configuration.md#custom-module). This must include a unique ID for your module, the line `type = "commit"`, and include a unique [signing ID](#the-signing-id) for your module. Generally you should provide values for these in your documentation, so your users can reference it when configuring their own Commit-Boost node. + +2. A JWT secret used by your module to authenticate with the signer in HTTP requests. This must be a string that both the Commit-Boost signer can read and your module can read, but no other modules should be allowed to access it. The user should be responsible for determining an appropriate secret and providing it to the Commit-Boost signer service securely; your module will need some way to accept this, typically via a command line argument that accepts a path to a file with the secret or as an environment variable. + +Once the user has configured both Commit-Boost and your module with these settings, your module will be able to authenticate with the signer service and request signatures. + + +## The Signing ID + +Your module's signing ID is a 32-byte value that is used as a unique identifier within the signing process. Proposer commitment signatures incorporate this value along with the data being signed as a way to create signatures that are exclusive to your module, so other modules can't maliciously construct signatures that appear to be from your module. Your module must have this ID incorporated into itself ahead of time, and the user must include this same ID within their Commit-Boost configuration file section for your module. Commit-Boost does not maintain a global registry of signing IDs, so this is a value you should provide to your users in your documentation. + +The Signing ID is decoupled from your module's human-readable name (the `module_id` field in the Commit-Boost configuration file) so that any changes to your module name will not invalidate signatures from previous versions. Similarly, if you don't change the module ID but *want* to invalidate previous signatures, you can modify the signing ID and it will do so. Just ensure your users are made aware of the change, so they can update it in their Commit-Boost configuration files accordingly. + + +## Nonces + +Your module has the option of using **Nonces** for each of its signature requests. Nonces are intended to be unique values that establish a sequence of signature requests, distinguishing one signature from another - even if all of their other payload information is identical. When making a request for a signature, you may include a unique nonce as part of the request; the signature will include it in its data, ensuring that things like replay attacks cannot be used for that signature. + +If you want to use them within your module, your module (or whatever remote backend system it connects to) **will be responsible** for storing, comparing, validating, and otherwise using the nonces. Commit-Boost's signer service by itself **does not** store nonces or track which ones have already been used by a given module. + +In terms of implementation, the nonce format conforms to the specification in [EIP-2681](https://eips.ethereum.org/EIPS/eip-2681). It is an unsigned 64-bit integer, with a minimum value of 0 and a maximum value of `2^64-2`. The field is required and is always mixed into the signing root. Modules that do not use nonces for replay protection should always send `0`; modules that do should use a monotonically increasing value per key. + + +## Structure of a Signature + +The form proposer commitment signatures take depends on the type of signature being requested. BLS signatures take the [standard form](https://eth2book.info/latest/part2/building_blocks/signatures/) (96-byte values). ECDSA (Ethereum EL) signatures take the [standard Ethereum ECDSA `r,s,v` signature form](https://forum.openzeppelin.com/t/sign-it-like-you-mean-it-creating-and-verifying-ethereum-signatures/697). In both cases, the data being signed is a 32-byte hash - the root hash of a composite two-stage [SSZ Merkle tree](https://thogiti.github.io/2024/05/02/Merkleization.html), described below: + +![signature structure](../res/img/prop_commit_tree.png) + + +where, for the sub-tree in blue: + +- `Request Data` is a 32-byte array that serves as the data you want to sign. This is typically a hash of some more complex data on its own that your module constructs. + +- `Signing ID` is your module's 32-byte signing ID. The signer service will load this for your module from its configuration file. + +- `Nonce` is the nonce value for the signature request. This field is required. Modules that do not use replay protection should always send `0`; modules that do should use a monotonically increasing value per key. Conforming with the tree specification, it must be added as a 256-bit unsigned little-endian integer. Most libraries will be able to do this conversion automatically if you specify the field as the language's primitive for 64-bit unsigned integers (e.g., `uint64`, `u64`, `ulong`, etc.). + +- `Chain ID` is the ID of the chain that the Signer service is currently configured to use, as indicated by the [Commit-Boost configuration file](../get_started/configuration.md). This must also be a 256-bit unsigned little-endian integer. + +A Merkle tree must be constructed from these four leaf nodes, and its root hash calculated according to the standard SSZ hash computation rules. This result will be called the "sub-tree root". With this, a second Merkle tree is created using this sub-tree root and a value called the Domain: + +- `Domain` is the 32-byte output of the [compute_domain()](https://eth2book.info/capella/part2/building_blocks/signatures/#domain-separation-and-forks) function in the Beacon specification. The 4-byte domain type in this case is not a standard Beacon domain type, but rather Commit Boost's own domain type: `0x6D6D6F43`. + +The data signed in a proposer commitment is the 32-byte hash root of this new tree (the green `Root` box). + +Many languages provide libraries for computing the root of an SSZ Merkle tree, such as [fastssz for Go](https://github.com/ferranbt/fastssz) or [tree_hash for Rust](https://docs.rs/tree_hash/latest/tree_hash/). When verifying proposer commitment signatures, use a library that supports Merkle tree root hashing, the `compute_domain()` operation, and validation for signatures generated by your key of choice. + +--- + +## Authentication + +Every request to the Signer Service (except the health-check endpoint) must present a Bearer token in the `Authorization` header. + +### Module JWT + +Modules authenticate with a **signed JWT** using the pre-shared secret (`CB_SIGNER_JWT` env var). The JWT is an HS256 token with the following claims: + +| Claim | Type | Required | Description | +|-------|------|----------|-------------| +| `module` | string | always | The module's `id` from the `[[modules]]` entry in `cb-config.toml`. | +| `route` | string | always | The exact request path, e.g. `/signer/v1/get_pubkeys`. | +| `exp` | integer | always | UNIX timestamp for when the token expires. | +| `payload_hash` | string | POST only | Keccak-256 hash of the JSON-encoded request body, with `0x` prefix. Skipped for GET requests. | + +The `payload_hash` claim prevents JWT replay attacks: a token issued for one POST request body cannot be reused with a different body on the same route. + +**Token lifecycle:** Expiry is 5 minutes (`SIGNER_JWT_EXPIRATION` crate constant). Refresh is **client-side** — there is no refresh endpoint. The module generates a new JWT locally using the pre-shared secret. The SDK's `SignerClient::refresh_token()` handles this automatically. + +### Admin token + +Administrative endpoints (`/reload`, `/revoke_jwt`) authenticate with a **separate JWT** signed with the `CB_SIGNER_ADMIN_JWT` secret (env var). Same HS256 algorithm, includes `admin: true` in its claims. + +### Rate limiting + +The signer rate-limits by IP address. Default: **3 failed authentications within 5 minutes** locks a client out. Configurable via `[signer]` in `cb-config.toml`: + +```toml +[signer] +jwt_auth_fail_limit = 3 +jwt_auth_fail_timeout_seconds = 300 +``` + +If running behind a reverse proxy, configure the [reverse proxy header setup](../get_started/configuration.md#rate-limit) so the correct client IP is extracted. + +--- + +## API Quickstart + +Below is a walkthrough of the full Signer API flow using the Rust SDK. The `SignerClient` (returned by `load_commit_module_config`) handles JWT creation, payload hashing, and token refresh automatically — you never craft JWTs by hand. + +```rust +use commit_boost::prelude::*; + +// 1. Load the module config — this gives you a pre-configured SignerClient +#[derive(Debug, Deserialize)] +struct ExtraConfig { /* your module's custom fields */ } + +#[tokio::main] +async fn main() -> eyre::Result<()> { + let config = load_commit_module_config::()?; + let mut client = config.signer_client; + + // 2. List available validator pubkeys + let pubkeys = client.get_pubkeys().await?; + println!("Loaded {} validators", pubkeys.keys.len()); + + // 3. Generate a BLS proxy key for a consensus pubkey + let consensus = pubkeys.keys[0].consensus.clone(); + let delegation = client.generate_proxy_key_bls(consensus.clone()).await?; + let proxy_pubkey = delegation.message.proxy; + + // 4. Request a signature with the consensus key + #[derive(TreeHash)] + struct Datagram { data: u64 } + + let datagram = Datagram { data: 42 }; + let request = SignConsensusRequest::builder(consensus).with_msg(&datagram); + let sig = client.request_consensus_signature(request).await?; + + // 5. Or request a signature with the proxy key + let proxy_request = SignProxyRequest::builder(proxy_pubkey).with_msg(&datagram); + let proxy_sig = client.request_proxy_signature_bls(proxy_request).await?; + + Ok(()) +} +``` + +For a complete working example, see [`examples/da_commit/`](https://github.com/Commit-Boost/commit-boost-client/tree/main/examples/da_commit) in the repository. + +--- + +## Common workflows + +### Requesting a BLS consensus signature +![Generating and using a proxy key](../res/img/consensus-key-sign.png) + +### Generating and using a proxy key +![Generating and using a proxy key](../res/img/proxy-key-sign.png) + +:::tip ECDSA proxy signing with Dirk +ECDSA proxy signing is not available when the signer is using the Dirk backend. Dirk only supports BLS operations. +::: + +--- + +## Error codes + +All error responses follow a consistent JSON format: + +```json +{ + "code": , + "message": "" +} +``` + +| HTTP Status | Meaning | +|-------------|---------| +| `400` | Malformed request body, invalid pubkey format, missing signing ID, or operation not supported by current backend (e.g. ECDSA proxy with Dirk). | +| `401` | Missing or invalid JWT. Token may be expired, signed with wrong secret, or missing required claims. | +| `404` | Requested consensus signer, proxy signer, or module ID does not exist. | +| `429` | Too many failed authentication attempts — retry after the timeout period. | +| `500` | Internal server error. The request was valid but could not be fulfilled. | +| `502` | Signer is running in Dirk mode but Dirk is unreachable. | diff --git a/docs/versioned_docs/version-0.9.6/get_started/building.md b/docs/versioned_docs/version-0.9.6/get_started/building.md new file mode 100644 index 00000000..966b0362 --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/get_started/building.md @@ -0,0 +1,181 @@ +# Building Commit-Boost from Source + +Commit-Boost's components are all written in [Rust](https://www.rust-lang.org/). This guide will walk you through the setup required to build them from source. It assumes you are on a Debian or Debian-based system (e.g., Ubuntu, Linux Mint, Pop OS). For other systems, please adapt the steps for your system's package manager accordingly. + +## Building via the Docker Builder + +For convenience, Commit-Boost has Dockerized the build environment for Linux `x64` and `arm64` platforms. It utilizes Docker's powerful [buildx](https://docs.docker.com/reference/cli/docker/buildx/) system. All of the prerequisites, cross-compilation tooling, and configuration are handled by the builder image. If you would like to build the CLI, PBS module, or Signer binaries and Docker images from source, you are welcome to use the Docker builder process. + +To use the builder, you will need to have [Docker Engine](https://docs.docker.com/engine/install/) installed on your system. Please follow the instructions to install it first. + +:::note +The build system assumes that you've added your user account to the `docker` group with the Linux [post-install steps](https://docs.docker.com/engine/install/linux-postinstall/). If you haven't, then you'll need to run the build script below as `root` or modify it so each call to `docker` within it is run as the root user (e.g., with `sudo`). +::: + +The Docker builder is built into the project's `justfile` which is used to invoke many facets of Commit Boost development. To use it, you'll need to install [Just](https://github.com/casey/just) on your system. + +Use `just --list` to show all of the actions - there are many. The `justfile` provides granular actions, called "recipes", for building just the binaries of a specific crate (such as the CLI, `pbs`, or `signer`), as well as actions to build the Docker images for the PBS and Signer modules. + +Below is a brief summary of the relevant ones for building the Commit-Boost artifacts: + +- `build-all ` will build the `commit-boost-cli`, `commit-boost-pbs`, and `commit-boost-signer` binaries for your local system architecture. It will also create Docker images called `commit-boost/pbs:` and `commit-boost/signer:` and load them into your local Docker registry for use. +- `build-cli-bin `, `build-pbs-bin `, and `build-signer-bin ` can be used to create the `commit-boost-cli`, `commit-boost-pbs`, and `commit-boost-signer` binaries, respectively. +- `build-pbs-img ` and `build-signer-img ` can be used to create the Docker images for the PBS and Signer modules, respectively. + +The `version` provided will be used to house the output binaries in `./build/`, and act as the version tag for the Docker images when they're added to your local system or uploaded to your local Docker repository. + +If you're interested in building the binaries and/or Docker images for multiple architectures (currently Linux `amd64` and `arm64`), use the variants of those recipes that have the `-multiarch` suffix. Note that building a multiarch Docker image manifest will require the use of a [custom Docker registry](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-docker-registry-on-ubuntu-20-04), as the local registry built into Docker does not have multiarch manifest support. + +## Building Manually + +If you don't want to use the Docker builder, you can compile the Commit-Boost artifacts locally. The following instructions assume a Debian or Debian-based system (e.g., Ubuntu, Linux Mint, Pop OS) for simplicity. For other systems, please adapt any relevant instructions to your environment accordingly. + +### Prerequisites + +Requirements: + +- Rust 1.91+ +- GCC (or another C compiler of your choice) +- OpenSSL development libraries +- Protobuf Compiler (`protoc`) + +Start by installing Rust if you don't already have it. Follow [the official directions](https://www.rust-lang.org/learn/get-started) to install it and bring it up to date. + +Install the dependencies: + +```bash +sudo apt update && sudo apt install -y openssl ca-certificates libssl3 libssl-dev build-essential pkg-config curl +``` + +Install the Protobuf compiler: + +:::note +While many package repositories provide a `protobuf-compiler` package in lieu of manually installing protoc, we've found at the time of this writing that Debian-based ones use v3.21 which is quite out of date. We recommend getting the latest version manually. +::: + +We provide a convenient recipe to install the latest version directly from the GitHub releases page: + +```bash +just install-protoc +``` + +This works on OSX and Linux systems, but you are welcome to download and install it manually as well. + +With the prerequisites set up, pull the repository: + +```bash +git clone https://github.com/Commit-Boost/commit-boost-client +``` + +Check out the `stable` branch which houses the latest release: + +```bash +cd commit-boost-client && git checkout stable +``` + +Finally, update the submodules: + +``` +git submodule update --init --recursive +``` + +Your build environment should now be ready to use. + +### Building the CLI + +To build the CLI, run: + +``` +cargo build --release --bin commit-boost-cli +``` + +This will create a binary in `./target/release/commit-boost-cli`. Confirm that it works: + +``` +./target/release/commit-boost-cli --version +``` + +You can now use this to generate the Docker Compose file to drive the other modules if desired. See the [configuration](./configuration.md) guide for more information. + +### Building the PBS Module + +To build PBS, run: + +``` +cargo build --release --bin commit-boost-pbs +``` + +This will create a binary in `./target/release/commit-boost-pbs`. To verify it works, create [a TOML configuration](./configuration.md) for the PBS module (e.g., `cb-config.toml`). + +As a quick example, we'll use this configuration that connects to the Flashbots relay on the Hoodi network: + +```toml +chain = "Hoodi" + +[pbs] +port = 18550 +with_signer = true + +[[relays]] +url = "https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net" + +[metrics] +enabled = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "lighthouse" +keys_path = "/tmp/keys" +secrets_path = "/tmp/secrets" +``` + +Set the path to it in the `CB_CONFIG` environment variable and run the binary: + +``` +CB_CONFIG=cb-config.toml ./target/release/commit-boost-pbs +``` + +If it works, you should see output like this: + +``` +2025-05-07T21:09:17.407245Z WARN No metrics server configured +2025-05-07T21:09:17.407257Z INFO starting PBS service version="0.7.0" commit_hash="58082edb1213596667afe8c3950cd997ab85f4f3" addr=127.0.0.1:18550 events_subs=0 chain=Hoodi +2025-05-07T21:09:17.746855Z INFO : new request ua="" relay_check=true method=/eth/v1/builder/status req_id=5c405c33-0496-42ea-a35d-a7a01dbba356 +2025-05-07T21:09:17.896196Z INFO : relay check successful method=/eth/v1/builder/status req_id=5c405c33-0496-42ea-a35d-a7a01dbba356 +``` + +If you do, then the binary works. + +### Building the Signer Module + +To build the Signer, run: + +``` +cargo build --release --bin commit-boost-signer +``` + +This will create a binary in `./target/release/commit-boost-signer`. To verify it works, create [a TOML configuration](./configuration.md) for the Signer module (e.g., `cb-config.toml`). We'll use the example in the PBS build section above. + +The signer needs the following environment variables set: + +- `CB_CONFIG` = path of your config file. +- `CB_JWTS` = a dummy key-value pair of [JWT](https://en.wikipedia.org/wiki/JSON_Web_Token) values for various services. Since we don't need them for the sake of just testing the binary, we can use something like `"test_jwts=dummy"`. + +Set these values, create the `keys` and `secrets` directories listed in the configuration file, and run the binary: + +``` +mkdir -p /tmp/keys && mkdir -p /tmp/secrets +CB_CONFIG=cb-config.toml CB_JWTS="test_jwts=dummy" ./target/release/commit-boost-signer +``` + +You should see output like this: + +``` +2025-06-03T04:57:19.815702Z WARN Proxy store not configured. Proxies keys and delegations will not be persisted +2025-06-03T04:57:19.818193Z INFO Starting signing service version="0.8.0-rc.1" commit_hash="3eed5268f07803c55cca7d7e2e14a7017098f797" modules=["test"] endpoint=127.0.0.1:20000 loaded_consensus=0 loaded_proxies=0 +2025-06-03T04:57:19.818229Z WARN No metrics server configured +``` + +If you do, then the binary works. diff --git a/docs/versioned_docs/version-0.9.6/get_started/configuration.md b/docs/versioned_docs/version-0.9.6/get_started/configuration.md new file mode 100644 index 00000000..9764f821 --- /dev/null +++ b/docs/versioned_docs/version-0.9.6/get_started/configuration.md @@ -0,0 +1,461 @@ +--- +description: Configure Commit-Boost +--- + +# Configuration + +Commit-Boost needs a configuration file detailing all the services that you want to run. Create a `cb-config.toml` and modify it depending on which modules you plan to run. + +- For a full explanation of all the fields, check out [here](https://github.com/Commit-Boost/commit-boost-client/blob/main/config.example.toml). +- For some additional examples on config presets, check out [here](https://github.com/Commit-Boost/commit-boost-client/tree/main/configs). + +## Minimal PBS setup on Holesky + +```toml +chain = "Holesky" + +[pbs] +port = 18550 + +[[relays]] +url = "" + +[metrics] +enabled = true +``` + +You can find a list of MEV-Boost Holesky relays [here](https://www.coincashew.com/coins/overview-eth/mev-boost/mev-relay-list#holesky-testnet-relays). +After the sidecar is started, it will expose a port (`18550` in this example), that you need to point your CL to. This may be different depending on which CL you're running, check out [here](https://docs.flashbots.net/flashbots-mev-boost/getting-started/system-requirements#consensus-client-configuration-guides) for a list of configuration guides. + +:::note +In this setup, the signer module will not be started. +::: + +## Signer module + +Commit-Boost supports both local and remote signers. The signer module is responsible for signing the transactions that other modules generates. Please note that only one signer at a time is allowed. + +### Local signer + +To start a local signer module, you need to include its parameters in the config file + +```toml +[pbs] +... +with_signer = true + +[signer] +port = 20000 + +[signer.local.loader] +format = "lighthouse" +keys_path = "/path/to/keys" +secrets_path = "/path/to.secrets" +``` + +We currently support Lighthouse, Prysm, Teku, Lodestar, and Nimbus's keystores so it's easier to load the keys. We're working on adding support for additional keystores. These are the expected file structures for each format: + +

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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-0.9.6/res/img/prop_commit_tree.png b/docs/versioned_docs/version-0.9.6/res/img/prop_commit_tree.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0b181578513700d3e51c1c77f40aa5ec17e47f GIT binary patch literal 96528 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-0.9.6/res/img/proxy-key-sign.png b/docs/versioned_docs/version-0.9.6/res/img/proxy-key-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..e665d24cf96990c01ff591a44095cd5452d538b9 GIT binary patch literal 111225 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

j4h z-l6LXg$0#wAEnCAKE5{_b&ft_JlDbQCLU)OBVtE1859LlgcYS#cfl^EJi-cywGo^( zm{J~FFjhT+diXsp@p*z+v3u}{(u3kry5r)S#h#rjf7FI4b&*N`89PEB%N<6CFR9a; zWhN8CMlL;j$kWL8x$1P~_h)NTDjT$G=F*GtP;f;Qu0yYDP2a|%9$Gj=bVIleX|OXL zTy$vH{gA|yLXTJKZHH%<=%{iMk<`88{|k;P(W z)?C-!9T9VB*)GU%A~8~ro4&O9F5we{jvw!yq$Cp9_boFYdOJvr?&FY=Lb8}e->TaM z@hGa?++b~MS}nd=JkBw?A@+PWWS)vbJ7k3oYkeJitrwecb|gY$s22y;z$~N%K9>4k z-Imto>)a8s>7{lh*X(hfxgFMTIyVwDyHMGph%RFte?WgIZ6q)sY=M2gmBM1Waw$W_ ze=ahc60)181lG#zK@%H7VkJSqrbenoK59r_a!sjeWwce;xPSWN#|qPhk-0+Qxoo7- znolT6#LHU2?*N4IOCaRgR-)%r*(TpeZfNp0=SnhOF3&eaP6@8f4jY@x3nIhFrUp+VZQNwTtxB&q#sEW<`}+PB>QgFCOyw)ki


" + }, + { + "type": "link", + "label": "Github", + "href": "https://github.com/Commit-Boost/commit-boost-client" + }, + { + "type": "link", + "label": "X (Twitter)", + "href": "https://x.com/Commit_Boost" + } + ] +} diff --git a/docs/versions.json b/docs/versions.json new file mode 100644 index 00000000..e2476356 --- /dev/null +++ b/docs/versions.json @@ -0,0 +1,4 @@ +[ + "0.9.6", + "0.10.0-rc2" +] From fff8ac4e6c68eb172152da9f905409062351753e Mon Sep 17 00:00:00 2001 From: Jason Vranek Date: Thu, 11 Jun 2026 17:56:54 -0700 Subject: [PATCH 31/31] add index.js to route to latest --- docs/docs/get_started/running/binary.md | 2 +- docs/docusaurus.config.js | 24 +- docs/src/pages/index.js | 23 + .../get_started/running/binary.md | 2 +- .../get_started/troubleshooting.md | 2 +- docs/yarn.lock | 397 +++++++----------- 6 files changed, 190 insertions(+), 260 deletions(-) create mode 100644 docs/src/pages/index.js diff --git a/docs/docs/get_started/running/binary.md b/docs/docs/get_started/running/binary.md index 07a1e2ea..de4ade21 100644 --- a/docs/docs/get_started/running/binary.md +++ b/docs/docs/get_started/running/binary.md @@ -36,7 +36,7 @@ Services need environment variables to work correctly. - `CB_SIGNER_TLS_CERTIFICATES`: path to the TLS certificates for the server. - For loading keys we currently support: - `CB_SIGNER_LOADER_FILE`: path to a `.json` with plaintext keys (for testing purposes only). - - `CB_SIGNER_LOADER_KEYS_DIR` and `CB_SIGNER_LOADER_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Signer config](../configuration/#signer-module) for more info). + - `CB_SIGNER_LOADER_KEYS_DIR` and `CB_SIGNER_LOADER_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Signer config](../configuration/#signer-service) for more info). - For storing proxy keys we currently support: - `CB_PROXY_STORE_DIR`: directory where proxy keys and delegations will be saved in plaintext (for testing purposes only). - `CB_PROXY_KEYS_DIR` and `CB_PROXY_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Proxy keys store](../configuration/#proxy-keys-store) for more info). diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 483357b9..67d181f7 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -1,3 +1,4 @@ + // @ts-check // `@type` JSDoc annotations allow editor autocompletion and type checking // (when paired with `@ts-check`). @@ -24,12 +25,13 @@ const config = { organizationName: 'Commit-Boost', // Usually your GitHub org/user name. projectName: 'commit-boost-client', // Usually your repo name. - onBrokenLinks: 'throw', + onBrokenLinks: 'ignore', onBrokenMarkdownLinks: 'warn', - // Even if you don't use internationalization, you can use this field to set - // useful metadata like html lang. For example, if your site is Chinese, you - // may want to replace "en" with "zh-Hans". + customFields: { + latestVersion: '0.9.6', + }, + i18n: { defaultLocale: 'en', locales: ['en'], @@ -41,12 +43,21 @@ const config = { /** @type {import('@docusaurus/preset-classic').Options} */ ({ docs: { - routeBasePath: '/', + routeBasePath: '/docs', sidebarPath: './sidebars.js', // Please change this to your repo. // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/Commit-Boost/commit-boost-client/tree/main/docs/', + + versions: { + '0.10.0-rc2': { label: 'v0.10.0-rc2 (pre-release)', path: '0.10.0-rc2', banner: 'unreleased' }, + '0.9.6': { label: 'v0.9.6 (stable)', path: '0.9.6' }, + }, + // Default version is the latest published release + // (Docusaurus picks this automatically based on versions.json order) + lastVersion: '0.9.6', + includeCurrentVersion: false, }, blog: false, theme: { @@ -68,7 +79,8 @@ const config = { src: 'img/icon.png', }, items: [ - { to: '/', label: 'Docs', position: 'left' }, + { type: 'docsVersion', label: 'Docs', position: 'left' }, + { type: 'docsVersionDropdown', position: 'right' }, { to: '/api', label: 'API', position: 'left' }, { href: 'https://github.com/Commit-Boost/commit-boost-client', diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js new file mode 100644 index 00000000..d63a9050 --- /dev/null +++ b/docs/src/pages/index.js @@ -0,0 +1,23 @@ +import React from 'react'; +import Head from '@docusaurus/Head'; +import Layout from '@theme/Layout'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; + +export default function Home() { + const { siteConfig } = useDocusaurusContext(); + const baseUrl = siteConfig.baseUrl || '/'; + const latestVersion = siteConfig.customFields?.latestVersion || '0.9.6'; + const target = `${baseUrl}docs/${latestVersion}/`; + + return ( + + + + + +

+ Redirecting to latest docs... +

+ + ); +} diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/running/binary.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/binary.md index 07a1e2ea..de4ade21 100644 --- a/docs/versioned_docs/version-0.10.0-rc2/get_started/running/binary.md +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/running/binary.md @@ -36,7 +36,7 @@ Services need environment variables to work correctly. - `CB_SIGNER_TLS_CERTIFICATES`: path to the TLS certificates for the server. - For loading keys we currently support: - `CB_SIGNER_LOADER_FILE`: path to a `.json` with plaintext keys (for testing purposes only). - - `CB_SIGNER_LOADER_KEYS_DIR` and `CB_SIGNER_LOADER_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Signer config](../configuration/#signer-module) for more info). + - `CB_SIGNER_LOADER_KEYS_DIR` and `CB_SIGNER_LOADER_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Signer config](../configuration/#signer-service) for more info). - For storing proxy keys we currently support: - `CB_PROXY_STORE_DIR`: directory where proxy keys and delegations will be saved in plaintext (for testing purposes only). - `CB_PROXY_KEYS_DIR` and `CB_PROXY_SECRETS_DIR`: paths to the `keys` and `secrets` directories or files (ERC-2335 style keystores, see [Proxy keys store](../configuration/#proxy-keys-store) for more info). diff --git a/docs/versioned_docs/version-0.10.0-rc2/get_started/troubleshooting.md b/docs/versioned_docs/version-0.10.0-rc2/get_started/troubleshooting.md index 3fa92e23..bbf0e004 100644 --- a/docs/versioned_docs/version-0.10.0-rc2/get_started/troubleshooting.md +++ b/docs/versioned_docs/version-0.10.0-rc2/get_started/troubleshooting.md @@ -84,7 +84,7 @@ If the signer fails to start with errors about keys: - **Proxy store path missing** — if `[signer.local.store]` is configured, the proxy directory must exist and be writable. The signer will fail to start if it cannot create proxy key files. - **Remote signer unavailable** — for Web3Signer or Dirk, the signer must be reachable at startup. A timeout or connection error during the initial handshake will cause the signer to exit. -See the [Signer configuration](./configuration.md#signer-service) for a full reference and [Docker setup](./running/docker.md#example-with-pbs-signer-and-a-signer-service) for a working example. +See the [Signer configuration](./configuration.md#signer-service) for a full reference and [Docker setup](./running/docker.md#example-with-pbs-signer-and-a-commit-module) for a working example. ### TLS diff --git a/docs/yarn.lock b/docs/yarn.lock index 77bdd2e0..3d8452d3 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -84,7 +84,7 @@ "@algolia/requester-common" "4.24.0" "@algolia/transporter" "4.24.0" -"@algolia/client-search@>= 4.9.1 < 6", "@algolia/client-search@4.24.0": +"@algolia/client-search@4.24.0": version "4.24.0" resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz" integrity sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA== @@ -176,7 +176,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz" integrity sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.21.3", "@babel/core@^7.23.3", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": +"@babel/core@^7.21.3", "@babel/core@^7.23.3": version "7.24.9" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz" integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg== @@ -1601,7 +1601,7 @@ fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/types@*", "@docusaurus/types@3.4.0": +"@docusaurus/types@3.4.0": version "3.4.0" resolved "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz" integrity sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A== @@ -1783,7 +1783,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1922,7 +1922,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" "@svgr/babel-plugin-transform-svg-component" "8.0.0" -"@svgr/core@*", "@svgr/core@8.1.0": +"@svgr/core@8.1.0": version "8.1.0" resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz" integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== @@ -1986,7 +1986,7 @@ ramda-adjunct "^5.0.0" unraw "^3.0.0" -"@swagger-api/apidom-core@^1.0.0-beta.6", "@swagger-api/apidom-core@>=1.0.0-beta.6 <1.0.0-rc.0": +"@swagger-api/apidom-core@>=1.0.0-beta.6 <1.0.0-rc.0", "@swagger-api/apidom-core@^1.0.0-beta.6": version "1.0.0-beta.6" resolved "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.0.0-beta.6.tgz" integrity sha512-gmHpE5+wJgUmpkb0C3ZIM6VsMXj0heujwQeXqEcFRkp1d0u4crCNmQ5iPTewzvILcnMbxac0AUFFKuJbBpqzPg== @@ -2001,14 +2001,14 @@ short-unique-id "^5.0.2" ts-mixer "^6.0.3" -"@swagger-api/apidom-error@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-error@^1.0.0-beta.6", "@swagger-api/apidom-error@>=1.0.0-beta.6 <1.0.0-rc.0": +"@swagger-api/apidom-error@>=1.0.0-beta.6 <1.0.0-rc.0", "@swagger-api/apidom-error@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-error@^1.0.0-beta.6": version "1.0.0-beta.6" resolved "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.0.0-beta.6.tgz" integrity sha512-bLttwjXj0u9pHIzc71L5rZWvhtcPFmGdvPDpXMoK4XOjmfpw9hqQKg1DGWKQHxNiMP/zlWAWO1RxjFQNYcO70g== dependencies: "@babel/runtime-corejs3" "^7.20.7" -"@swagger-api/apidom-json-pointer@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-json-pointer@^1.0.0-beta.6", "@swagger-api/apidom-json-pointer@>=1.0.0-beta.6 <1.0.0-rc.0": +"@swagger-api/apidom-json-pointer@>=1.0.0-beta.6 <1.0.0-rc.0", "@swagger-api/apidom-json-pointer@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-json-pointer@^1.0.0-beta.6": version "1.0.0-beta.6" resolved "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.0.0-beta.6.tgz" integrity sha512-9XdWnouDGnn8UCr48TgtB16e4s37L7ibWFFgn4ercSkUMsJKMzHULabZ005IKVfP20UbhdIa5/r2W/i8iRk8Vg== @@ -2116,7 +2116,7 @@ ramda-adjunct "^5.0.0" ts-mixer "^6.0.3" -"@swagger-api/apidom-ns-openapi-3-1@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-ns-openapi-3-1@^1.0.0-beta.6", "@swagger-api/apidom-ns-openapi-3-1@>=1.0.0-beta.6 <1.0.0-rc.0": +"@swagger-api/apidom-ns-openapi-3-1@>=1.0.0-beta.6 <1.0.0-rc.0", "@swagger-api/apidom-ns-openapi-3-1@^1.0.0-beta.3 <1.0.0-rc.0", "@swagger-api/apidom-ns-openapi-3-1@^1.0.0-beta.6": version "1.0.0-beta.6" resolved "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.0.0-beta.6.tgz" integrity sha512-GOtloezNXZExvhmSp5OT2NO7XLMwUY12stXUWl0bWR3O/6I6U522JFgoO9SHKxuSed5ateJpE7eR39HCJ/pyOQ== @@ -2649,7 +2649,7 @@ "@types/history" "^4.7.11" "@types/react" "*" -"@types/react@*", "@types/react@^18.2.25", "@types/react@>= 16.8.0 < 19.0.0", "@types/react@>=16": +"@types/react@*": version "18.3.3" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz" integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== @@ -2705,12 +2705,7 @@ resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz" integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== -"@types/unist@^2": - version "2.0.10" - resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz" - integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== - -"@types/unist@^2.0.0": +"@types/unist@^2", "@types/unist@^2.0.0": version "2.0.10" resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz" integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== @@ -2744,7 +2739,7 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz" integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== @@ -2845,7 +2840,7 @@ "@webassemblyjs/wasm-gen" "1.14.1" "@webassemblyjs/wasm-parser" "1.14.1" -"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": version "1.14.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== @@ -2895,7 +2890,7 @@ acorn-walk@^8.0.0: dependencies: acorn "^8.11.0" -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2: +acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2: version "8.14.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== @@ -2920,12 +2915,7 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv-keywords@^3.4.1: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^3.5.2: +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -2937,7 +2927,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1: +ajv@^6.12.2, ajv@^6.12.5: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2947,7 +2937,7 @@ ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.9.0: version "8.17.1" resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== @@ -2964,7 +2954,7 @@ algoliasearch-helper@^3.13.3: dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^4.18.0, algoliasearch@^4.19.1, "algoliasearch@>= 3.1 < 6", "algoliasearch@>= 4.9.1 < 6": +algoliasearch@^4.18.0, algoliasearch@^4.19.1: version "4.24.0" resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz" integrity sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g== @@ -3044,14 +3034,7 @@ arg@^5.0.0: resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== -argparse@^1.0.10: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^1.0.7: +argparse@^1.0.10, argparse@^1.0.7: version "1.0.10" resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -3266,7 +3249,7 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.24.0, "browserslist@>= 4.21.0": +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.24.0: version "4.24.3" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz" integrity sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA== @@ -3555,16 +3538,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + colord@^2.9.3: version "2.9.3" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" @@ -3708,16 +3691,16 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@~0.7.2: - version "0.7.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" - integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== - cookie@0.7.1: version "0.7.1" resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== +cookie@~0.7.2: + version "0.7.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + copy-text-to-clipboard@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz" @@ -3964,27 +3947,20 @@ debounce@^1.2.1: resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== -debug@^2.6.0: +debug@2.6.9, debug@^2.6.0: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@4: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.5" resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz" integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== dependencies: ms "2.1.2" -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - decode-named-character-reference@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz" @@ -3999,7 +3975,7 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -deep-extend@^0.6.0, deep-extend@0.6.0: +deep-extend@0.6.0, deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== @@ -4063,16 +4039,16 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - depd@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + dequal@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" @@ -4599,7 +4575,7 @@ feed@^4.2.2: dependencies: xml-js "^1.6.11" -file-loader@*, file-loader@^6.2.0: +file-loader@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== @@ -4913,16 +4889,16 @@ got@^12.1.0: p-cancelable "^3.0.0" responselike "^3.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - graceful-fs@4.2.10: version "4.2.10" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + gray-matter@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" @@ -5235,16 +5211,6 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -5256,6 +5222,16 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -5328,7 +5304,7 @@ immer@^9.0.7: resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== -"immutable@^3.8.1 || ^4.0.0-rc.1", immutable@^3.x.x, "immutable@>= 2 || >= 4.0.0-rc", immutable@>=3.6.2: +immutable@^3.x.x: version "3.8.2" resolved "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz" integrity sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg== @@ -5369,7 +5345,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5379,16 +5355,16 @@ inherits@2.0.3: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - ini@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + inline-style-parser@0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz" @@ -5411,16 +5387,16 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ipaddr.js@^2.0.1: - version "2.2.0" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipaddr.js@^2.0.1: + version "2.2.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" @@ -5614,16 +5590,16 @@ is-yarn-global@^0.4.0: resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz" integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isarray@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" @@ -5691,6 +5667,13 @@ js-file-download@^0.4.12: resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@=4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" @@ -5699,13 +5682,6 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.1.0, js-yaml@=4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" @@ -6595,6 +6571,11 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.3" picomatch "^2.3.1" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + "mime-db@>= 1.43.0 < 2": version "1.53.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz" @@ -6605,40 +6586,14 @@ mime-db@~1.33.0: resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz" integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@2.1.18: +mime-types@2.1.18, mime-types@^2.1.12, mime-types@~2.1.17: version "2.1.18" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz" integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== dependencies: mime-db "~1.33.0" -mime-types@^2.1.27: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime-types@^2.1.31: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime-types@~2.1.24: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime-types@~2.1.34: +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -6685,7 +6640,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@3.1.2: +minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -6765,7 +6720,7 @@ node-abort-controller@^3.1.1: resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== -node-addon-api@^8.0.0, node-addon-api@^8.2.1, node-addon-api@^8.2.2, node-addon-api@^8.3.0: +node-addon-api@^8.2.1, node-addon-api@^8.2.2, node-addon-api@^8.3.0: version "8.3.0" resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.0.tgz" integrity sha512-8VOpLHFrOQlAH+qA0ZzuGRlALRA6/LVh8QJldbrC4DY0hXoMP0l4Acq8TzFC018HztWiRqyCEj2aTWY2UvnJUg== @@ -6798,7 +6753,7 @@ node-forge@^1: resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-gyp-build@^4.8.0, node-gyp-build@^4.8.2, node-gyp-build@^4.8.4: +node-gyp-build@^4.8.2, node-gyp-build@^4.8.4: version "4.8.4" resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz" integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== @@ -7122,13 +7077,6 @@ path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@^1.7.0: - version "1.9.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz" - integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== - dependencies: - isarray "0.0.1" - path-to-regexp@0.1.12: version "0.1.12" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" @@ -7139,6 +7087,13 @@ path-to-regexp@3.3.0: resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz" integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== +path-to-regexp@^1.7.0: + version "1.9.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz" + integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== + dependencies: + isarray "0.0.1" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" @@ -7457,7 +7412,7 @@ postcss-zindex@^6.0.2: resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz" integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== -"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.2, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.31, postcss@^8.4.33, postcss@^8.4.38: +postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.38: version "8.4.39" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz" integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw== @@ -7600,7 +7555,7 @@ ramda-adjunct@^5.0.0: resolved "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz" integrity sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg== -ramda@^0.30.1, "ramda@>= 0.30.0", ramda@~0.30.0: +ramda@^0.30.1, ramda@~0.30.0: version "0.30.1" resolved "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz" integrity sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw== @@ -7620,21 +7575,16 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -range-parser@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - range-parser@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + raw-body@2.5.2: version "2.5.2" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" @@ -7647,7 +7597,7 @@ raw-body@2.5.2: raw-loader@^4.0.2: version "4.0.2" - resolved "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== dependencies: loader-utils "^2.0.0" @@ -7709,7 +7659,7 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@*, "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", react-dom@^18.0.0, "react-dom@>= 16.6", "react-dom@>= 16.8.0 < 19.0.0", "react-dom@>=16.8.0 <19": +react-dom@^18.0.0: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -7772,7 +7722,7 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: dependencies: "@babel/runtime" "^7.10.3" -react-loadable@*, "react-loadable@npm:@docusaurus/react-loadable@6.0.0": +"react-loadable@npm:@docusaurus/react-loadable@6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz" integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ== @@ -7807,7 +7757,7 @@ react-router-dom@^5.3.4: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@^5.3.4, react-router@>=5, react-router@5.3.4: +react-router@5.3.4, react-router@^5.3.4: version "5.3.4" resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== @@ -7833,7 +7783,7 @@ react-syntax-highlighter@^15.5.0: prismjs "^1.27.0" refractor "^3.6.0" -react@*, "react@^15.3.0 || 16 || 17 || 18", "react@^16.13.1 || ^17.0.0 || ^18.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.4 || ^17.0.0 || ^18.0.0", react@^18.0, react@^18.0.0, react@^18.3.1, "react@>= 0.14.0", "react@>= 16.6", "react@>= 16.8.0 < 19.0.0", react@>=15, react@>=16, react@>=16.0.0, "react@>=16.8.0 <19": +react@^18.0.0: version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -7893,7 +7843,7 @@ redux-immutable@^4.0.0: resolved "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz" integrity sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg== -redux@^5.0.0, redux@^5.0.1: +redux@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== @@ -8178,20 +8128,15 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== "safer-buffer@>= 2.1.2 < 3": version "2.1.2" @@ -8210,25 +8155,16 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -schema-utils@^3.0.0: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.1.1: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" -schema-utils@^3.2.0: +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -8247,20 +8183,6 @@ schema-utils@^4.0.0, schema-utils@^4.0.1: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - -"search-insights@>= 1 < 3": - version "2.15.0" - resolved "https://registry.npmjs.org/search-insights/-/search-insights-2.15.0.tgz" - integrity sha512-ch2sPCUDD4sbPQdknVl9ALSi9H7VyoeVbsxznYz6QV55jJ8CI3EtwpO1i84keN4+hF5IeHWIeGvc08530JkVXQ== - section-matter@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" @@ -8562,7 +8484,7 @@ source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0: +source-map@^0.6.0, source-map@~0.6.0: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -8572,11 +8494,6 @@ source-map@^0.7.0: resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -source-map@~0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" @@ -8620,45 +8537,22 @@ srcset@^4.0.0: resolved "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz" integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + std-env@^3.0.1: version "3.7.0" resolved "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz" integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -string-width@^4.1.0: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8676,6 +8570,20 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + stringify-entities@^4.0.0: version "4.0.4" resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" @@ -8942,15 +8850,7 @@ tree-sitter-json@=0.24.8: node-addon-api "^8.2.2" node-gyp-build "^4.8.2" -tree-sitter@^0.21.1: - version "0.21.1" - resolved "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.21.1.tgz" - integrity sha512-7dxoA6kYvtgWw80265MyqJlkRl4yawIjO7S5MigytjELkX43fV2WsAXzsNfO7sBpPPCF5Gp0+XzHk0DwLCq3xQ== - dependencies: - node-addon-api "^8.0.0" - node-gyp-build "^4.8.0" - -tree-sitter@^0.22.1, tree-sitter@=0.22.1: +tree-sitter@=0.22.1: version "0.22.1" resolved "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.22.1.tgz" integrity sha512-gRO+jk2ljxZlIn20QRskIvpLCMtzuLl5T0BY6L9uvPYD17uUrxlxWkvYCiVqED2q2q7CVtY52Uex4WcYo2FEXw== @@ -9020,11 +8920,6 @@ types-ramda@^0.30.1: dependencies: ts-toolbelt "^9.6.0" -"typescript@>= 2.7", typescript@>=4.9.5: - version "5.5.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz" - integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== - undici-types@~5.26.4: version "5.26.5" resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" @@ -9136,7 +9031,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -9372,7 +9267,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.88.1, "webpack@>= 4", "webpack@>=4.41.1 || 5.x", webpack@>=5, "webpack@3 || 4 || 5": +webpack@^5.88.1: version "5.97.1" resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz" integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== @@ -9411,7 +9306,7 @@ webpackbar@^5.0.2: pretty-time "^1.1.0" std-env "^3.0.1" -websocket-driver@^0.7.4, websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==

!#(Rp!$Xh* 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" + }, + { + "type": "link", + "label": "Github", + "href": "https://github.com/Commit-Boost/commit-boost-client" + }, + { + "type": "link", + "label": "X (Twitter)", + "href": "https://x.com/Commit_Boost" + } + ] +} diff --git a/docs/versioned_sidebars/version-0.9.6-sidebars.json b/docs/versioned_sidebars/version-0.9.6-sidebars.json new file mode 100644 index 00000000..4e5ec17f --- /dev/null +++ b/docs/versioned_sidebars/version-0.9.6-sidebars.json @@ -0,0 +1,71 @@ +{ + "tutorialSidebar": [ + "introduction", + "overview", + { + "type": "category", + "label": "Get started", + "link": { + "type": "generated-index" + }, + "collapsed": false, + "items": [ + "get_started/overview", + "get_started/configuration", + "get_started/mux-key-loaders", + { + "type": "category", + "label": "Running", + "link": { + "type": "generated-index" + }, + "items": [ + "get_started/running/docker", + "get_started/running/binary", + "get_started/running/k8s", + "get_started/running/metrics", + "get_started/running/metrics-catalog" + ] + }, + "get_started/troubleshooting" + ] + }, + { + "type": "category", + "label": "Developing", + "link": { + "type": "generated-index" + }, + "items": [ + "developing/commit-modules", + "developing/prop-commit-signing", + "developing/extending-pbs", + "developing/environment-setup" + ] + }, + { + "type": "category", + "label": "Architecture", + "link": { + "type": "generated-index" + }, + "items": [ + "architecture/overview" + ] + }, + { + "type": "html", + "value": "