From e24e09471147dd9f15d6495d8b7d974bc9168365 Mon Sep 17 00:00:00 2001 From: import this <97586125+serinko@users.noreply.github.com> Date: Fri, 31 Oct 2025 13:33:24 +0000 Subject: [PATCH 01/26] [DOCs/operators]: Cleanup (#6170) * fix quic docs steps * update stats * fix typo * quic bridge update --- .../quic-bridge-deployment-script-setup.mdx | 83 +++++++------------ .../circulating-supply.json | 4 +- .../nyx-outputs/circulating-supply.md | 2 +- .../nyx-outputs/epoch-reward-budget.md | 2 +- .../nyx-outputs/stake-saturation.md | 2 +- .../nyx-outputs/staking-target.md | 2 +- .../nyx-outputs/staking_supply.md | 2 +- .../nyx-outputs/token-table.md | 6 +- .../api-scraping-outputs/reward-params.json | 8 +- .../outputs/api-scraping-outputs/time-now.md | 2 +- .../docs/pages/operators/changelog.mdx | 2 +- .../nym-node-setup/quic_bridge_deployment.sh | 66 +++++++++------ 12 files changed, 88 insertions(+), 93 deletions(-) diff --git a/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx b/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx index 90a367d3c4..4dee7d493c 100644 --- a/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx +++ b/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx @@ -3,7 +3,7 @@ import { Callout } from 'nextra/components'; import { AccordionTemplate } from 'components/accordion-template.tsx'; -**QUIC bridge is a requirement for all nodes which enable Wireguard functionality. Note that it this feature is compatible with nodes from `v1.18.0` (platform release [`v2025.17-isabirra`](https://github.com/nymtech/nym/releases/tag/nym-binaries-v2025.17-isabirra)) and newer!** +**QUIC bridge is a requirement for all nodes which enable Wireguard functionality. Note that it this feature is compatible with nodes from `v1.19.0` (platform release [`v2025.18-jarlsberg`](https://github.com/nymtech/nym/releases/tag/nym-binaries-v2025.17-isabirra)) and newer!** Nym Network uses various [transport bridges](https://github.com/nymtech/nym-bridges/blob/main/README.md) for routing the packets. Right now operators need to configure [our implementation](https://github.com/nymtech/nym-bridges/tree/main/nym-bridge) of general-purpose transport layer network protocol called [QUIC](https://en.wikipedia.org/wiki/QUIC). @@ -31,18 +31,21 @@ chmod +x quic_bridge_deployment.sh ``` ###### 3. Follow the interactive prompts -- When you are asked for bridge binary URL, look here for one to match your system: [builds.ci.nymte.ch/QUIC](https://builds.ci.nymte.ch/QUIC/) -- When you are asked to enter forward address, it's your IPv4 used for bonding the node, alongside port `:51822` (an example: `172.232.238.161:51822`) -- To find out your IP address you can always run: - - IPv4: `curl -4 https://ifconfig.co/ip` - - IPv6: `curl -6 https://ifconfig.co/ip` -- **For all prompts with default options, we highly recommend to stick to default (press enter)** +- Make sure you don't just press enter to insert default values if your setup is different, for example in case of path to the config file -###### 4. Restart the node service +###### 4. Validate + +- After running the script, ensure that the bridges are running correctly: +```sh +systemctl status nym-bridge.service +``` + +###### 5. Restart `nym-node` service - When done with the deployment, please restart your node systemd service ```sh service nym-node restart && journalctl -u nym-node.service -f --all ``` + Congratulation, you deployed QUIC transport bridge! The script offers a standalone tweaks and checks, you can always run it without any argument to see all the options: @@ -53,51 +56,27 @@ Congratulation, you deployed QUIC transport bridge! The script offers a standalo ```shell root@localhost:~# ./quic_bridge_deployment.sh -iptables-persistent is already installed. -Usage: ./quic_bridge_deployment.sh [command] [options] +Logs are being saved locally to: /var/log/nym-bridge-helper.log +These logs never leave your machine. -Nym QUIC Bridge Deployment Helper Script -Bridge Installation & Configuration: - check_bridge_installation - Check bridge installation status - show_bridge_config - Display bridge configuration files - show_bridge_keys - Display bridge key information - show_bridge_info - Show comprehensive bridge information - verify_bridge_prerequisites - Verify all prerequisites are met +Usage: ./quic_bridge_deployment.sh [command] -Bridge Setup Commands: - install_bridge_binary - Download and install nym-bridge binary - generate_bridge_keys - Generate ED25519 bridge identity keys - create_client_params - Create client_bridge_params.json - create_bridge_config - Create bridges.toml configuration - create_bridge_service - Create systemd service file - full_bridge_setup - Interactive full bridge setup wizard +Commands: + full_bridge_setup - Run full setup + install_bridge_binary - Install nym-bridge (.deb; falls back to source build if libc too old) + install_bridge_cfg_tool - Install bridge-cfg (prebuilt; falls back to source build if libc too old) + run_bridge_cfg_generate - Generate bridges.toml + create_bridge_service - Setup systemd service (respects .deb-provided service) + adjust_ip_forwarding - Enable forwarding + apply_bridge_iptables_rules - NAT rules + configure_dns_and_icmp - Allow ICMP/DNS -Network Configuration Commands: - adjust_ip_forwarding - Enable IPv4 and IPv6 forwarding - apply_bridge_iptables_rules - Apply iptables rules for QUIC bridge (nymwg) - configure_dns_and_icmp - Allow ICMP ping tests and configure DNS - remove_duplicate_bridge_rules - Remove duplicate iptables rules for nymwg -Network Inspection Commands: - fetch_and_display_ipv6 - Show IPv6 on default network device - fetch_wg_ipv6_address - Fetch IPv6 for nymwg interface - check_bridge_iptables - Check iptables rules for nymwg - check_ipv6_ipv4_forwarding - Check IPv4 and IPv6 forwarding status - check_ip_routing - Display IP routing tables - -Testing Commands: - perform_pings - Test IPv4 and IPv6 connectivity - test_bridge_connectivity - Comprehensive bridge connectivity test - -Service Management Commands: - check_bridge_service_status - Check nym-bridge and nym-node service status - show_bridge_logs [lines] - Show recent nym-bridge logs (default: 50 lines) - -Quick Start: - 1. Run 'verify_bridge_prerequisites' to check prerequisites - 2. Run 'check_bridge_installation' to verify installation - 3. Run 'test_bridge_connectivity' to test connectivity +------------------------------------------ +Script exited with errors (code: 1). +Check the log at: /var/log/nym-bridge-helper.log +------------------------------------------ ``` @@ -105,7 +84,9 @@ Quick Start: If you have followed the steps outlined above, but the metadata port is not shown as open in either the Node Status API's probe results or an explorer that gets its data from the API, see below: -###### 1. +**Run as root** + +###### 1. Confirm correct `config.toml` private IPv4 address Ensure that in your `config.toml` file, this value is set to the default one - any other value here will cause the metadata endpoint to fail: ``` @@ -116,7 +97,7 @@ private_ipv4 = '10.1.0.1' Then restart your node. -###### 2. +###### 2. Open the needed port Run this command if not already done: ``` ufw allow in on nymwg to any port 51830 proto tcp @@ -132,7 +113,7 @@ Then ensure the metadata endpoint is listening from the correct address with: netstat -an | egrep LISTEN | egrep "51830" ``` -###### 3. +###### 3. Validate the setup Once the Node Status API has run a probe on your node, the probe results will reflect this - `can_query_metadata_v4` will have `true` as a value. The quickest way to check this is by using the [NymVPN API](https://nymvpn.com/api/public/v1/directory/gateways?show_vpn_only=true) and checking the same field: diff --git a/documentation/docs/components/outputs/api-scraping-outputs/circulating-supply.json b/documentation/docs/components/outputs/api-scraping-outputs/circulating-supply.json index 4b71af2328..af384ffeb7 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/circulating-supply.json +++ b/documentation/docs/components/outputs/api-scraping-outputs/circulating-supply.json @@ -5,7 +5,7 @@ }, "mixmining_reserve": { "denom": "unym", - "amount": "180875972213757" + "amount": "178754510529387" }, "vesting_tokens": { "denom": "unym", @@ -13,6 +13,6 @@ }, "circulating_supply": { "denom": "unym", - "amount": "819124027786243" + "amount": "821245489470613" } } diff --git a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/circulating-supply.md b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/circulating-supply.md index e1811f4408..90ec4ff9ac 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/circulating-supply.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/circulating-supply.md @@ -1 +1 @@ -819_124_027 +821_245_489 diff --git a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/epoch-reward-budget.md b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/epoch-reward-budget.md index cde61716af..c5ddf5f938 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/epoch-reward-budget.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/epoch-reward-budget.md @@ -1 +1 @@ -5_024 +4_965 diff --git a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/stake-saturation.md b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/stake-saturation.md index 5a818ac526..d3afb9ba0a 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/stake-saturation.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/stake-saturation.md @@ -1 +1 @@ -250_614 +251_263 diff --git a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking-target.md b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking-target.md index 8896188535..c20966a751 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking-target.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking-target.md @@ -1 +1 @@ -60_147_392 +60_303_169 diff --git a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking_supply.md b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking_supply.md index 108b28c216..789ba81d93 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking_supply.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/staking_supply.md @@ -1 +1 @@ -60_147_391 +60_303_168 diff --git a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/token-table.md b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/token-table.md index ed4f907b1b..3d811fa0d8 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/token-table.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/nyx-outputs/token-table.md @@ -1,7 +1,7 @@ | **Item** | **Description** | **Amount in NYM** | |:-------------------|:------------------------------------------------------|--------------------:| | Total Supply | Maximum amount of NYM token in existence | 1_000_000_000 | -| Mixmining Reserve | Tokens releasing for operators rewards | 180_875_972 | +| Mixmining Reserve | Tokens releasing for operators rewards | 178_754_510 | | Vesting Tokens | Tokens locked outside of cicrulation for future claim | 0 | -| Circulating Supply | Amount of unlocked tokens | 819_124_027 | -| Stake Saturation | Optimal size of node self-bond + delegation | 250_614 | +| Circulating Supply | Amount of unlocked tokens | 821_245_489 | +| Stake Saturation | Optimal size of node self-bond + delegation | 251_263 | diff --git a/documentation/docs/components/outputs/api-scraping-outputs/reward-params.json b/documentation/docs/components/outputs/api-scraping-outputs/reward-params.json index 83380b5686..b1969e1f76 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/reward-params.json +++ b/documentation/docs/components/outputs/api-scraping-outputs/reward-params.json @@ -1,10 +1,10 @@ { "interval": { - "reward_pool": "180875972213757.135840914936141948", - "staking_supply": "60147391744900.170789956043539529", + "reward_pool": "178754510529387.687865580967403579", + "staking_supply": "60303168385204.800235781003503301", "staking_supply_scale_factor": "0.07342892", - "epoch_reward_budget": "5024332561.493253773358748226", - "stake_saturation_point": "250614132270.417378291483514748", + "epoch_reward_budget": "4965403070.260769107377249094", + "stake_saturation_point": "251263201605.02000098242084793", "sybil_resistance": "0.3", "active_set_work_factor": "10", "interval_pool_emission": "0.02" diff --git a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md index d71df80a85..b217f797f1 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md @@ -1 +1 @@ -Thursday, October 30th 2025, 13:00:59 UTC +Friday, October 31st 2025, 12:04:05 UTC diff --git a/documentation/docs/pages/operators/changelog.mdx b/documentation/docs/pages/operators/changelog.mdx index 7c6cf1620a..4aba7841fb 100644 --- a/documentation/docs/pages/operators/changelog.mdx +++ b/documentation/docs/pages/operators/changelog.mdx @@ -70,7 +70,7 @@ cargo Profile: release ### Operators Updates & Tools -**When this platform release becomes latest, we would like to ask operators ruuning any Gateway mode of `nym-node`, to use new version of [QUIC brige deployment tool](https://github.com/nymtech/nym/blob/develop/scripts/nym-node-setup/quic_bridge_deployment.sh)and install QUIC `nym-bridge` on their server, following [these steps](#quic-transport-bridge-deployment).** +**When this platform release becomes latest, we would like to ask operators ruuning any Gateway mode of `nym-node`, to use new version of [QUIC brige deployment tool](https://github.com/nymtech/nym/blob/develop/scripts/nym-node-setup/quic_bridge_deployment.sh) and install QUIC `nym-bridge` on their server, following [these steps](#quic-transport-bridge-deployment).** Alongside this platform release we are happy to introduce several improvements and new tools for node operators. diff --git a/scripts/nym-node-setup/quic_bridge_deployment.sh b/scripts/nym-node-setup/quic_bridge_deployment.sh index 0694fca81a..f7dc60e0f9 100644 --- a/scripts/nym-node-setup/quic_bridge_deployment.sh +++ b/scripts/nym-node-setup/quic_bridge_deployment.sh @@ -37,7 +37,7 @@ add_log_redirection() { add_log_redirection # Constants / Paths -REQUIRED_CMDS=(ip jq curl openssl wg dpkg) +REQUIRED_CMDS=(ip jq curl openssl dpkg) BRIDGE_BIN="/usr/local/bin/nym-bridge" BRIDGE_CFG_BIN="/usr/local/bin/bridge-cfg" @@ -67,13 +67,9 @@ press_enter() { read -r -p "$1"; } # Helper: detect dpkg dependency failure for libc6>=2.34 deb_depends_libc_too_old() { - # Grep dpkg -i output in log or run a dry call to dpkg -i with --unpack to observe code - # Simpler heuristic: check installed libc6 version local v v="$(dpkg-query -W -f='${Version}\n' libc6 2>/dev/null || true)" - # If no libc6, say "too old" to trigger source build if [[ -z "$v" ]]; then return 0; fi - # Compare minimalistically: 2.34 vs current (2.31 typical on Debian 11) dpkg --compare-versions "$v" ge "2.34" && return 1 || return 0 } @@ -113,25 +109,19 @@ build_from_source_latest() { cargo build --release -p nym-bridge cargo build --release -p bridge-cfg ) - - # After build, binaries are typically in workspace target dir: - # /tmp/nym-bridges/target/release/nym-bridge - # /tmp/nym-bridges/target/release/bridge-cfg } -# Helper: robustly locate and install a built binary from /tmp/nym-bridges +# Helper: robustly locate and install a built binary install_built_binary() { - local name="$1" # e.g., bridge-cfg or nym-bridge + local name="$1" local preferred="/tmp/nym-bridges/target/release/$name" - # Prefer the common workspace path first: if [[ -x "$preferred" ]]; then install -m 0755 "$preferred" "/usr/local/bin/$name" ok "Installed $name from $preferred to /usr/local/bin/$name" return 0 fi - # Try expected crate subpaths: local alt1="/tmp/nym-bridges/$name/target/release/$name" if [[ -x "$alt1" ]]; then install -m 0755 "$alt1" "/usr/local/bin/$name" @@ -139,7 +129,6 @@ install_built_binary() { return 0 fi - # Broader search within 8 levels: local found found="$(find /tmp/nym-bridges -maxdepth 8 -type f -name "$name" -perm -111 2>/dev/null | head -n1 || true)" if [[ -n "$found" ]]; then @@ -169,8 +158,14 @@ verify_bridge_prerequisites() { else ok "✓ iptables-persistent installed" fi - echo "" + # Ensure /etc/nym exists and has correct permissions for Ubuntu 24+ + mkdir -p "$NYM_ETC_DIR" + chgrp nym "$NYM_ETC_DIR" 2>/dev/null || true + chmod 750 "$NYM_ETC_DIR" + ok "✓ Ensured /etc/nym exists with group 'nym' and mode 750" + + echo "" local v4=$(cat /proc/sys/net/ipv4/ip_forward 2>/dev/null || echo 0) local v6=$(cat /proc/sys/net/ipv6/conf/all/forwarding 2>/dev/null || echo 0) [[ "$v4" == "1" ]] && ok "✓ IPv4 forwarding enabled" || warn "IPv4 forwarding disabled" @@ -194,6 +189,13 @@ adjust_ip_forwarding() { install_bridge_binary() { title "Installing nym-bridge Binary" + # Handle Ubuntu 24+ case: system-installed path + if [[ -x /usr/bin/nym-bridge && ! -x /usr/local/bin/nym-bridge ]]; then + cp /usr/bin/nym-bridge /usr/local/bin/nym-bridge + chmod +x /usr/local/bin/nym-bridge + ok "Copied nym-bridge from /usr/bin to /usr/local/bin/" + fi + info "Fetching latest nym-bridge .deb from GitHub..." local deb_url deb_url="$(curl -fsSL https://api.github.com/repos/nymtech/nym-bridges/releases/latest \ @@ -234,12 +236,25 @@ install_bridge_binary() { build_from_source_latest install_built_binary "nym-bridge" fi + + # Detect alternate binary location (Ubuntu 24+) + if [[ -x /usr/bin/nym-bridge ]]; then + BRIDGE_BIN="/usr/bin/nym-bridge" + ok "Detected nym-bridge binary in /usr/bin" + fi } # Install bridge-cfg install_bridge_cfg_tool() { title "Installing bridge-cfg Tool" + # Fix for Ubuntu 24+ + if [[ -x /usr/bin/bridge-cfg && ! -x /usr/local/bin/bridge-cfg ]]; then + cp /usr/bin/bridge-cfg /usr/local/bin/bridge-cfg + chmod +x /usr/local/bin/bridge-cfg + ok "Copied bridge-cfg from /usr/bin to /usr/local/bin/" + fi + info "Attempting to fetch latest bridge-cfg from GitHub..." local cfg_url cfg_url="$(curl -fsSL https://api.github.com/repos/nymtech/nym-bridges/releases/latest \ @@ -263,21 +278,23 @@ install_bridge_cfg_tool() { warn "Failed to download bridge-cfg; building locally..." fi - # Build from source and install robustly ensure_rustup build_from_source_latest install_built_binary "bridge-cfg" + + if [[ -x /usr/bin/bridge-cfg ]]; then + BRIDGE_CFG_BIN="/usr/bin/bridge-cfg" + ok "Detected bridge-cfg binary in /usr/bin" + fi } # Generate config via bridge-cfg (with backup) run_bridge_cfg_generate() { title "Generating Bridge Configuration with bridge-cfg" - # Detect a likely nym-node configuration path local HOME_DIR="${HOME:-/root}" local NODE_CFG NODE_CFG="$(find "$HOME_DIR/.nym/nym-nodes" -type f -name config.toml 2>/dev/null | head -n1 || true)" - if [[ -z "$NODE_CFG" ]]; then NODE_CFG="$HOME_DIR/.nym/nym-nodes/default-nym-node/config/config.toml" fi @@ -291,7 +308,6 @@ run_bridge_cfg_generate() { exit 1 fi - # Backup before modification local NODE_ID NODE_ID="$(basename "$(dirname "$(dirname "$NODE_CFG")")")" local BACKUP_DIR="$HOME/.nym/backup/$NODE_ID/config" @@ -302,17 +318,15 @@ run_bridge_cfg_generate() { cp "$NODE_CFG" "$BACKUP_FILE" ok "Backup created: $BACKUP_FILE" - # Ensure directories exist before running bridge-cfg to prevent "os error 2" mkdir -p "$NYM_ETC_DIR" "$NYM_ETC_KEYS_DIR" - mkdir -p "$(dirname "$NYM_ETC_CLIENT_PARAMS_DEFAULT")" - chmod 700 "$NYM_ETC_DIR" "$NYM_ETC_KEYS_DIR" + chgrp nym "$NYM_ETC_DIR" 2>/dev/null || true + chmod 750 "$NYM_ETC_DIR" + chmod 700 "$NYM_ETC_KEYS_DIR" touch "$NYM_ETC_CLIENT_PARAMS_DEFAULT" || true info "Running: bridge-cfg --gen -n \"$NODE_CFG\" -d \"$NYM_ETC_DIR\" -o \"$NYM_ETC_BRIDGES\"" set +e "$BRIDGE_CFG_BIN" --gen -n "$NODE_CFG" -d "$NYM_ETC_DIR" -o "$NYM_ETC_BRIDGES" - - local rc=$? set -e if [[ $rc -ne 0 ]]; then @@ -337,7 +351,6 @@ run_bridge_cfg_generate() { create_bridge_service() { title "Creating nym-bridge systemd Service" - # Respect a service provided by .deb postinst if present if systemctl list-unit-files | grep -q '^nym-bridge\.service'; then warn "Detected existing nym-bridge service (likely from .deb). Not overwriting." systemctl daemon-reload || true @@ -394,7 +407,7 @@ configure_dns_and_icmp() { ok "ICMP and DNS rules applied." } -# Full interactive setup (safe exit + backup notice) +# Full interactive setup full_bridge_setup() { title "Nym QUIC Bridge - Full Setup" @@ -538,3 +551,4 @@ case "${1:-}" in esac echo "Operation '${1:-help}' completed." + From d9c2f6ebda1c68e1733871793c8355f9510bb078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Mon, 3 Nov 2025 16:42:39 +0000 Subject: [PATCH 02/26] Feature/credential proxy jwt (#5957) * squashed feature/credential-proxy-jwt [#5957] post rebasing fixes clippy changed obtain-async endpoint to conditionally return jwt instead of pending zk-nym watching for the attestation file and issuing jwt * changed attestation starting time serialisation into rfc3339 * including authorised JWT issuers in attestation * reduce attestation retrieval error log --- Cargo.lock | 9 ++ Cargo.toml | 5 + common/credential-proxy/build.rs | 2 +- common/credential-proxy/src/error.rs | 7 + .../ticketbook_manager/ticketbook_handlers.rs | 10 +- common/crypto/Cargo.toml | 4 + .../src/asymmetric/ed25519/serde_helpers.rs | 95 ++++++++++++ common/http-api-client/src/lib.rs | 2 + common/upgrade-mode-check/Cargo.toml | 9 +- common/upgrade-mode-check/src/attestation.rs | 62 ++++++-- common/upgrade-mode-check/src/error.rs | 3 + common/upgrade-mode-check/src/jwt.rs | 32 +++- common/upgrade-mode-check/src/lib.rs | 6 +- .../nym-credential-proxy-requests/Cargo.toml | 6 +- .../src/api/v1/ticketbook/models.rs | 35 ++++- .../nym-credential-proxy-requests/src/lib.rs | 7 +- .../nym-credential-proxy/Cargo.toml | 3 + .../src/attestation_watcher.rs | 97 ++++++++++++ .../nym-credential-proxy/src/cli.rs | 104 ++++++++++++- .../nym-credential-proxy/src/helpers.rs | 22 ++- .../nym-credential-proxy/src/http/mod.rs | 20 ++- .../src/http/router/api/v1/ticketbook/mod.rs | 27 ++-- .../http/router/api/v1/ticketbook/shares.rs | 4 +- .../src/http/router/mod.rs | 4 +- .../src/http/state/mod.rs | 47 ++++-- .../src/http/state/nyx_upgrade_mode.rs | 144 ++++++++++++++++++ .../nym-credential-proxy/src/main.rs | 2 + 27 files changed, 694 insertions(+), 74 deletions(-) create mode 100644 nym-credential-proxy/nym-credential-proxy/src/attestation_watcher.rs create mode 100644 nym-credential-proxy/nym-credential-proxy/src/http/state/nyx_upgrade_mode.rs diff --git a/Cargo.lock b/Cargo.lock index e92b97d12c..6d5dd1e0db 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5462,8 +5462,11 @@ dependencies = [ "nym-crypto", "nym-ecash-contract-common", "nym-ecash-signer-check", + "nym-http-api-client", "nym-http-api-common", "nym-network-defaults", + "nym-pemstore", + "nym-upgrade-mode-check", "nym-validator-client", "rand 0.8.5", "reqwest 0.12.22", @@ -5534,6 +5537,7 @@ dependencies = [ "nym-http-api-client", "nym-http-api-common", "nym-serde-helpers", + "nym-upgrade-mode-check", "reqwest 0.12.22", "schemars 0.8.22", "serde", @@ -5661,6 +5665,7 @@ dependencies = [ "aead", "aes", "aes-gcm-siv", + "anyhow", "base64 0.22.1", "blake3", "bs58", @@ -5674,10 +5679,12 @@ dependencies = [ "jwt-simple", "nym-pemstore", "nym-sphinx-types", + "nym-test-utils", "rand 0.8.5", "rand_chacha 0.3.1", "serde", "serde_bytes", + "serde_json", "sha2 0.10.9", "subtle-encoding", "thiserror 2.0.12", @@ -7378,12 +7385,14 @@ dependencies = [ "jwt-simple", "nym-crypto", "nym-http-api-client", + "nym-test-utils", "reqwest 0.12.22", "serde", "serde_json", "thiserror 2.0.12", "time", "tracing", + "utoipa", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index c125c58216..f0a5cdf1ba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -453,6 +453,11 @@ opt-level = 'z' unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] } [workspace.lints.clippy] +suspicious = "deny" +complexity = "deny" +perf = "deny" +style = "deny" + unwrap_used = "deny" expect_used = "deny" todo = "deny" diff --git a/common/credential-proxy/build.rs b/common/credential-proxy/build.rs index bedf911da7..6e29ca0430 100644 --- a/common/credential-proxy/build.rs +++ b/common/credential-proxy/build.rs @@ -8,7 +8,7 @@ async fn main() -> anyhow::Result<()> { use sqlx::{Connection, SqliteConnection}; use std::env; - let out_dir = env::var("OUT_DIR")?; + let out_dir = env::var("OUT_DIR").context("missing OUT_DIR env variable")?; let database_path = format!("{out_dir}/nym-credential-proxy-example.sqlite"); // remove the db file if it already existed from previous build diff --git a/common/credential-proxy/src/error.rs b/common/credential-proxy/src/error.rs index 8db781da1e..b1e1506763 100644 --- a/common/credential-proxy/src/error.rs +++ b/common/credential-proxy/src/error.rs @@ -127,6 +127,13 @@ pub enum CredentialProxyError { #[error("failed to create deposit")] DepositFailure, + #[error("failed to load jwt signing key from {path}: {err}")] + JWTSigningKeyLoadFailure { + path: String, + #[source] + err: std::io::Error, + }, + #[error("can't obtain sufficient number of credential shares due to unavailable quorum")] UnavailableSigningQuorum, diff --git a/common/credential-proxy/src/ticketbook_manager/ticketbook_handlers.rs b/common/credential-proxy/src/ticketbook_manager/ticketbook_handlers.rs index bcfd4c3e9d..8eb4f6bbae 100644 --- a/common/credential-proxy/src/ticketbook_manager/ticketbook_handlers.rs +++ b/common/credential-proxy/src/ticketbook_manager/ticketbook_handlers.rs @@ -7,9 +7,9 @@ use crate::ticketbook_manager::TicketbookManager; use nym_compact_ecash::Base58; use nym_credential_proxy_requests::api::v1::ticketbook::models::{ CurrentEpochResponse, DepositResponse, GlobalDataParams, MasterVerificationKeyResponse, - PartialVerificationKey, PartialVerificationKeysResponse, TicketbookAsyncRequest, - TicketbookObtainParams, TicketbookRequest, TicketbookWalletSharesAsyncResponse, - TicketbookWalletSharesResponse, + ObtainTicketBookSharesAsyncResponse, PartialVerificationKey, PartialVerificationKeysResponse, + TicketbookAsyncRequest, TicketbookObtainParams, TicketbookRequest, + TicketbookWalletSharesAsyncResponse, TicketbookWalletSharesResponse, }; use time::OffsetDateTime; use tracing::{Instrument, Level, error, info, span, warn}; @@ -65,7 +65,7 @@ impl TicketbookManager { uuid: Uuid, request: TicketbookAsyncRequest, params: TicketbookObtainParams, - ) -> Result { + ) -> Result { let requested_on = OffsetDateTime::now_utc(); let span = span!(Level::INFO, "[async] obtain ticketboook", uuid = %uuid); async move { @@ -110,7 +110,7 @@ impl TicketbookManager { } // 4. in the meantime, return the id to the user - Ok(TicketbookWalletSharesAsyncResponse { id, uuid }) + Ok(TicketbookWalletSharesAsyncResponse { id, uuid }.into()) } .instrument(span) .await diff --git a/common/crypto/Cargo.toml b/common/crypto/Cargo.toml index 96549a448d..37a1e317e5 100644 --- a/common/crypto/Cargo.toml +++ b/common/crypto/Cargo.toml @@ -36,7 +36,11 @@ nym-sphinx-types = { path = "../nymsphinx/types", version = "0.2.0", default-fea nym-pemstore = { path = "../../common/pemstore", version = "0.3.0" } [dev-dependencies] +anyhow = { workspace = true } rand_chacha = { workspace = true } +serde_json = { workspace = true } +nym-test-utils = { path = "../test-utils" } + [features] default = [] diff --git a/common/crypto/src/asymmetric/ed25519/serde_helpers.rs b/common/crypto/src/asymmetric/ed25519/serde_helpers.rs index 51a0ac2dfe..6fbc6f3cf7 100644 --- a/common/crypto/src/asymmetric/ed25519/serde_helpers.rs +++ b/common/crypto/src/asymmetric/ed25519/serde_helpers.rs @@ -17,6 +17,51 @@ pub mod bs58_ed25519_pubkey { } } +pub mod vec_bs58_ed25519_pubkey { + use super::*; + use serde::{Deserialize, Deserializer, Serializer, ser::SerializeSeq}; + + pub fn serialize( + keys: &Vec, + serializer: S, + ) -> Result { + let mut seq = serializer.serialize_seq(Some(keys.len()))?; + for key in keys { + seq.serialize_element(&Bs58KeyWrapper(*key))?; + } + seq.end() + } + + pub fn deserialize<'de, D: Deserializer<'de>>( + deserializer: D, + ) -> Result, D::Error> { + let wrapped = Vec::::deserialize(deserializer)?; + Ok(wrapped.into_iter().map(|k| k.0).collect()) + } + + struct Bs58KeyWrapper(PublicKey); + + impl serde::Serialize for Bs58KeyWrapper { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + bs58_ed25519_pubkey::serialize(&self.0, serializer) + } + } + + impl<'de> Deserialize<'de> for Bs58KeyWrapper { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + Ok(Bs58KeyWrapper(bs58_ed25519_pubkey::deserialize( + deserializer, + )?)) + } + } +} + pub mod bs58_ed25519_signature { use crate::asymmetric::ed25519::Signature; use serde::{Deserialize, Deserializer, Serializer}; @@ -33,3 +78,53 @@ pub mod bs58_ed25519_signature { Signature::from_base58_string(s).map_err(serde::de::Error::custom) } } + +#[cfg(test)] +mod tests { + use super::*; + use jwt_simple::reexports::{anyhow, serde_json}; + use nym_test_utils::helpers::deterministic_rng; + use serde::{Deserialize, Serialize}; + + #[test] + fn vec_bs58_ed25519_pubkey_json() -> anyhow::Result<()> { + #[derive(Serialize, Deserialize, Debug, PartialEq)] + struct KeysWrapper(#[serde(with = "vec_bs58_ed25519_pubkey")] Vec); + + use crate::asymmetric::ed25519; + let mut rng = deterministic_rng(); + let empty = KeysWrapper(vec![]); + let single_key = KeysWrapper(vec![PublicKey::from_base58_string( + "Be9wH7xuXBRJAuV1pC7MALZv6a61RvWQ3SypsNarqTt", + )?]); + let three_keys = KeysWrapper(vec![ + ed25519::KeyPair::new(&mut rng).public_key, + ed25519::KeyPair::new(&mut rng).public_key, + ed25519::KeyPair::new(&mut rng).public_key, + ]); + + let se_empty = serde_json::to_string(&empty)?; + let se_single_key = serde_json::to_string(&single_key)?; + let se_three_keys = serde_json::to_string(&three_keys)?; + + assert_eq!(se_empty, r#"[]"#); + assert_eq!( + se_single_key, + r#"["Be9wH7xuXBRJAuV1pC7MALZv6a61RvWQ3SypsNarqTt"]"# + ); + assert_eq!( + se_three_keys, + r#"["HmgHDV79LpnEaSUp8QZQwSroxVvS4RewF7yM9e7qu8y3","311xRh859qCd5MVqoPRCoNx26eYhLknGwtjzkkTJFGhf","A5BMp8WJ6Uk91U4JpWRv2Bc6X35AaRaSEy8QEWeAkaBv"]"# + ); + + let empty_de = serde_json::from_str::(&se_empty)?; + let single_key_de = serde_json::from_str::(&se_single_key)?; + let three_keys_de = serde_json::from_str::(&se_three_keys)?; + + assert_eq!(empty, empty_de); + assert_eq!(single_key, single_key_de); + assert_eq!(three_keys, three_keys_de); + + Ok(()) + } +} diff --git a/common/http-api-client/src/lib.rs b/common/http-api-client/src/lib.rs index 3baa390c53..220d151ba7 100644 --- a/common/http-api-client/src/lib.rs +++ b/common/http-api-client/src/lib.rs @@ -902,6 +902,8 @@ impl Client { if self.base_urls.len() > 1 { let orig = self.current_idx.load(Ordering::Relaxed); + + #[allow(unused_mut)] let mut next = (orig + 1) % self.base_urls.len(); // if fronting is enabled we want to update to a host that has fronts configured diff --git a/common/upgrade-mode-check/Cargo.toml b/common/upgrade-mode-check/Cargo.toml index 50e0cb3f7c..17f292a566 100644 --- a/common/upgrade-mode-check/Cargo.toml +++ b/common/upgrade-mode-check/Cargo.toml @@ -15,9 +15,10 @@ jwt-simple = { workspace = true } reqwest = { workspace = true, features = ["rustls-tls"] } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } -time = { workspace = true, features = ["serde"] } +time = { workspace = true, features = ["serde", "formatting", "parsing"] } thiserror = { workspace = true } tracing = { workspace = true } +utoipa = { workspace = true, optional = true } nym-http-api-client = { path = "../http-api-client", default-features = false } nym-crypto = { path = "../crypto", features = ["asymmetric", "serde", "naive_jwt"] } @@ -25,6 +26,12 @@ nym-crypto = { path = "../crypto", features = ["asymmetric", "serde", "naive_jwt [dev-dependencies] anyhow = { workspace = true } time = { workspace = true, features = ["macros"] } +nym-test-utils = { path = "../test-utils" } +nym-crypto = { path = "../crypto", features = ["rand"] } + + +[features] +openapi = ["utoipa"] [lints] workspace = true diff --git a/common/upgrade-mode-check/src/attestation.rs b/common/upgrade-mode-check/src/attestation.rs index 42c115f3cd..3d052caadd 100644 --- a/common/upgrade-mode-check/src/attestation.rs +++ b/common/upgrade-mode-check/src/attestation.rs @@ -1,31 +1,43 @@ // Copyright 2025 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 -use crate::UpgradeModeCheckError; use nym_crypto::asymmetric::ed25519; -use nym_http_api_client::generate_user_agent; use serde::{Deserialize, Serialize}; -use std::time::Duration; use time::OffsetDateTime; -#[derive(Serialize, Deserialize, Debug, PartialEq, Clone, Copy)] +#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] +#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))] pub struct UpgradeModeAttestation { #[serde(flatten)] pub content: UpgradeModeAttestationContent, #[serde(with = "ed25519::bs58_ed25519_signature")] + #[cfg_attr(feature = "openapi", schema(value_type = String))] pub signature: ed25519::Signature, } -#[derive(Serialize, Deserialize, Debug, PartialEq, Clone, Copy)] +impl UpgradeModeAttestation { + pub fn authorised_to_issue_jwt(&self, key: &ed25519::PublicKey) -> bool { + self.content.authorised_jwt_issuers.contains(key) + } +} + +#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] #[serde(tag = "type")] #[serde(rename = "upgrade_mode")] +#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))] pub struct UpgradeModeAttestationContent { - #[serde(with = "time::serde::timestamp")] + #[serde(with = "time::serde::rfc3339")] + #[cfg_attr(feature = "openapi", schema(value_type = String))] pub starting_time: OffsetDateTime, #[serde(with = "ed25519::bs58_ed25519_pubkey")] + #[cfg_attr(feature = "openapi", schema(value_type = String))] pub attester_public_key: ed25519::PublicKey, + + #[serde(with = "ed25519::vec_bs58_ed25519_pubkey")] + #[cfg_attr(feature = "openapi", schema(value_type = Vec))] + pub authorised_jwt_issuers: Vec, } impl UpgradeModeAttestation { @@ -45,17 +57,26 @@ impl UpgradeModeAttestationContent { } } -pub fn generate_new_attestation(key: &ed25519::PrivateKey) -> UpgradeModeAttestation { - generate_new_attestation_with_starting_time(key, OffsetDateTime::now_utc()) +pub fn generate_new_attestation( + key: &ed25519::PrivateKey, + authorised_jwt_issuers: Vec, +) -> UpgradeModeAttestation { + generate_new_attestation_with_starting_time( + key, + authorised_jwt_issuers, + OffsetDateTime::now_utc(), + ) } pub fn generate_new_attestation_with_starting_time( key: &ed25519::PrivateKey, + authorised_jwt_issuers: Vec, starting_time: OffsetDateTime, ) -> UpgradeModeAttestation { let content = UpgradeModeAttestationContent { starting_time, attester_public_key: key.into(), + authorised_jwt_issuers, }; UpgradeModeAttestation { signature: key.sign(content.as_json()), @@ -63,17 +84,19 @@ pub fn generate_new_attestation_with_starting_time( } } -pub async fn attempt_retrieve( +#[cfg(not(target_arch = "wasm32"))] +pub async fn attempt_retrieve_attestation( url: &str, -) -> Result, UpgradeModeCheckError> { - let retrieval_failure = |source| UpgradeModeCheckError::AttestationRetrievalFailure { + user_agent: Option, +) -> Result, crate::UpgradeModeCheckError> { + let retrieval_failure = |source| crate::UpgradeModeCheckError::AttestationRetrievalFailure { url: url.to_string(), source, }; let attestation = reqwest::ClientBuilder::new() - .user_agent(generate_user_agent!()) - .timeout(Duration::from_secs(5)) + .user_agent(user_agent.unwrap_or_else(|| nym_http_api_client::generate_user_agent!())) + .timeout(std::time::Duration::from_secs(5)) .build() .map_err(retrieval_failure)? .get(url) @@ -101,13 +124,20 @@ mod tests { 163, 122, 170, 79, 198, 87, 85, 36, 29, 243, 92, 64, 161, ])?; - let attestation = generate_new_attestation_with_starting_time(&key, starting_time); + let authorised_jwt_issuers = vec![ed25519::PublicKey::from_base58_string( + "Be9wH7xuXBRJAuV1pC7MALZv6a61RvWQ3SypsNarqTt", + )?]; + let attestation = generate_new_attestation_with_starting_time( + &key, + authorised_jwt_issuers, + starting_time, + ); let attestation_json = serde_json::to_string(&attestation)?; let attestation_content_json = attestation.content.as_json(); - let expected_attestation = r#"{"type":"upgrade_mode","starting_time":1629720000,"attester_public_key":"3pkFcBXCEmbmXBT2G8CkFMuKisJcH54mbBGvncHaDibt","signature":"5rWUr2ypaDTtrMKegMP3tQkkZGFAuhNTnEVCVe5Azv6QqvLzoGdQiMkFmeyhDd1XSfoXpL9fFM58rsdA1kf4GYMM"}"#; - let expected_content = r#"{"type":"upgrade_mode","starting_time":1629720000,"attester_public_key":"3pkFcBXCEmbmXBT2G8CkFMuKisJcH54mbBGvncHaDibt"}"#; + let expected_attestation = r#"{"type":"upgrade_mode","starting_time":"2021-08-23T12:00:00Z","attester_public_key":"3pkFcBXCEmbmXBT2G8CkFMuKisJcH54mbBGvncHaDibt","authorised_jwt_issuers":["Be9wH7xuXBRJAuV1pC7MALZv6a61RvWQ3SypsNarqTt"],"signature":"5Kt9dfwvnkdnDcENbwNyitrxghyckWUYycBv8jUUn7hJUMohWEMc6otb3scXQfCrAGSE7FD5m7kr6auBmkAmfczY"}"#; + let expected_content = r#"{"type":"upgrade_mode","starting_time":"2021-08-23T12:00:00Z","attester_public_key":"3pkFcBXCEmbmXBT2G8CkFMuKisJcH54mbBGvncHaDibt","authorised_jwt_issuers":["Be9wH7xuXBRJAuV1pC7MALZv6a61RvWQ3SypsNarqTt"]}"#; assert_eq!(attestation_content_json, expected_content); assert_eq!(attestation_json, expected_attestation); diff --git a/common/upgrade-mode-check/src/error.rs b/common/upgrade-mode-check/src/error.rs index d1f26b7c5f..0edf4201e8 100644 --- a/common/upgrade-mode-check/src/error.rs +++ b/common/upgrade-mode-check/src/error.rs @@ -12,6 +12,9 @@ pub enum UpgradeModeCheckError { #[error("the jwt metadata didn't contain explicit public key")] MissingTokenPublicKey, + #[error("the jwt signer does not appear in the authorised attestation set")] + UnauthorisedIssuer, + #[error("the attached public key was not valid ed25519 public key")] MalformedEd25519PublicKey { source: Ed25519RecoveryError }, diff --git a/common/upgrade-mode-check/src/jwt.rs b/common/upgrade-mode-check/src/jwt.rs index 93be406ab2..060546f0bb 100644 --- a/common/upgrade-mode-check/src/jwt.rs +++ b/common/upgrade-mode-check/src/jwt.rs @@ -65,6 +65,12 @@ pub fn validate_upgrade_mode_jwt( .map_err(|source| UpgradeModeCheckError::JwtVerificationFailure { source })? .custom; + // jwt itself is cryptographically valid, + // but let's see if this entity has been permitted to issue the token in the first place + if !attestation.authorised_to_issue_jwt(&ed25519_pub_key) { + return Err(UpgradeModeCheckError::UnauthorisedIssuer); + } + Ok(attestation) } @@ -73,6 +79,7 @@ mod tests { use super::*; use crate::generate_new_attestation; use nym_crypto::asymmetric::ed25519; + use nym_test_utils::helpers::deterministic_rng; #[test] fn generate_and_validate_jwt() { @@ -86,15 +93,25 @@ mod tests { 2, 52, 215, 241, 219, 200, 18, 159, 241, 76, 111, 42, 32, ]) .unwrap(); - let keys = ed25519::KeyPair::from(jwt_key); + let jwt_keys = ed25519::KeyPair::from(jwt_key); - let attestation = generate_new_attestation(&attestation_key); + let mut rng = deterministic_rng(); + let unauthorised_jwt_keys = ed25519::KeyPair::new(&mut rng); + + let attestation = generate_new_attestation(&attestation_key, vec![*jwt_keys.public_key()]); let jwt_issuer = generate_jwt_for_upgrade_mode_attestation( - attestation, + attestation.clone(), Duration::from_secs(60 * 60), - &keys, + &jwt_keys, Some("nym-credential-proxy"), ); + let unauthorised_jwt = generate_jwt_for_upgrade_mode_attestation( + attestation.clone(), + Duration::from_secs(60 * 60), + &unauthorised_jwt_keys, + Some("nym-credential-proxy"), + ); + // we expect 'nym-credential-proxy' issuer assert!(validate_upgrade_mode_jwt(&jwt_issuer, Some("nym-credential-proxy")).is_ok()); @@ -104,10 +121,15 @@ mod tests { // we expect another-issuer assert!(validate_upgrade_mode_jwt(&jwt_issuer, Some("another-issuer")).is_err()); + // the key is not in the authorised set inside the attestation + assert!( + validate_upgrade_mode_jwt(&unauthorised_jwt, Some("nym-credential-proxy")).is_err() + ); + let jwt_no_issuer = generate_jwt_for_upgrade_mode_attestation( attestation, Duration::from_secs(60 * 60), - &keys, + &jwt_keys, None, ); // we expect 'nym-credential-proxy' issuer diff --git a/common/upgrade-mode-check/src/lib.rs b/common/upgrade-mode-check/src/lib.rs index d0f952b361..36cbf43c91 100644 --- a/common/upgrade-mode-check/src/lib.rs +++ b/common/upgrade-mode-check/src/lib.rs @@ -6,8 +6,10 @@ pub(crate) mod error; pub(crate) mod jwt; pub use attestation::{ - UpgradeModeAttestation, attempt_retrieve, generate_new_attestation, - generate_new_attestation_with_starting_time, + UpgradeModeAttestation, generate_new_attestation, generate_new_attestation_with_starting_time, }; pub use error::UpgradeModeCheckError; pub use jwt::{generate_jwt_for_upgrade_mode_attestation, validate_upgrade_mode_jwt}; + +#[cfg(not(target_arch = "wasm32"))] +pub use attestation::attempt_retrieve_attestation; diff --git a/nym-credential-proxy/nym-credential-proxy-requests/Cargo.toml b/nym-credential-proxy/nym-credential-proxy-requests/Cargo.toml index 7897a1287e..76f91373b8 100644 --- a/nym-credential-proxy/nym-credential-proxy-requests/Cargo.toml +++ b/nym-credential-proxy/nym-credential-proxy-requests/Cargo.toml @@ -30,6 +30,7 @@ nym-credentials-interface = { path = "../../common/credentials-interface" } nym-http-api-common = { path = "../../common/http-api-common", optional = true } nym-http-api-client = { path = "../../common/http-api-client" } nym-serde-helpers = { path = "../../common/serde-helpers", features = ["bs58"] } +nym-upgrade-mode-check = { path = "../../common/upgrade-mode-check" } [target."cfg(target_arch = \"wasm32\")".dependencies.wasmtimer] workspace = true @@ -38,5 +39,8 @@ features = ["tokio"] [features] default = ["query-types"] query-types = ["nym-http-api-common", "nym-http-api-common/output"] -openapi = ["utoipa", "nym-http-api-common/utoipa"] +openapi = ["utoipa", "nym-http-api-common/utoipa", "nym-upgrade-mode-check/openapi"] tsify = ["dep:tsify", "wasm-bindgen"] + +[lints] +workspace = true \ No newline at end of file diff --git a/nym-credential-proxy/nym-credential-proxy-requests/src/api/v1/ticketbook/models.rs b/nym-credential-proxy/nym-credential-proxy-requests/src/api/v1/ticketbook/models.rs index 3ed36ade31..7f1b844774 100644 --- a/nym-credential-proxy/nym-credential-proxy-requests/src/api/v1/ticketbook/models.rs +++ b/nym-credential-proxy/nym-credential-proxy-requests/src/api/v1/ticketbook/models.rs @@ -12,17 +12,19 @@ use serde::{Deserialize, Serialize}; use serde_with::{DisplayFromStr, serde_as}; use std::ops::{Deref, DerefMut}; use time::{Date, OffsetDateTime}; +use uuid::Uuid; #[cfg(feature = "query-types")] use nym_http_api_common::Output; #[cfg(feature = "tsify")] use tsify::Tsify; -use uuid::Uuid; #[cfg(feature = "tsify")] use wasm_bindgen::prelude::wasm_bindgen; +pub use nym_upgrade_mode_check::UpgradeModeAttestation; + #[derive(JsonSchema)] #[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))] pub struct PlaceholderJsonSchemaImpl {} @@ -225,6 +227,27 @@ pub struct TicketbookWalletSharesResponse { pub aggregated_expiration_date_signatures: Option, } +#[derive(Serialize, Deserialize, Debug, Clone)] +#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))] +#[serde(rename_all = "camelCase")] +#[serde(untagged)] +pub enum ObtainTicketBookSharesAsyncResponse { + InProgress(TicketbookWalletSharesAsyncResponse), + UpgradeMode(Box), +} + +impl From for ObtainTicketBookSharesAsyncResponse { + fn from(response: TicketbookWalletSharesAsyncResponse) -> Self { + Self::InProgress(response) + } +} + +impl From for ObtainTicketBookSharesAsyncResponse { + fn from(response: UpgradeModeResponse) -> Self { + Self::UpgradeMode(Box::new(response)) + } +} + #[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)] #[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))] #[serde(rename_all = "camelCase")] @@ -319,3 +342,13 @@ pub struct SharesQueryParams { #[serde(flatten)] pub global: GlobalDataParams, } + +#[derive(Serialize, Deserialize, Debug, Clone)] +#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))] +#[serde(rename_all = "camelCase")] +pub struct UpgradeModeResponse { + pub upgrade_mode_attestation: UpgradeModeAttestation, + /// The issued upgrade mode JWT. + /// The value is `None` if this credential proxy is not-authorised to be issuing one + pub jwt: Option, +} diff --git a/nym-credential-proxy/nym-credential-proxy-requests/src/lib.rs b/nym-credential-proxy/nym-credential-proxy-requests/src/lib.rs index 8415c35ba6..6ff65c9fda 100644 --- a/nym-credential-proxy/nym-credential-proxy-requests/src/lib.rs +++ b/nym-credential-proxy/nym-credential-proxy-requests/src/lib.rs @@ -1,15 +1,12 @@ // Copyright 2024 Nym Technologies SA // SPDX-License-Identifier: GPL-3.0-only -#![warn(clippy::expect_used)] -#![warn(clippy::unwrap_used)] -#![warn(clippy::todo)] -#![warn(clippy::dbg_macro)] - pub mod api; pub mod client; mod helpers; +pub const CREDENTIAL_PROXY_JWT_ISSUER: &str = "nym-credential-proxy"; + macro_rules! absolute_route { ( $name:ident, $parent:expr, $suffix:expr ) => { pub fn $name() -> String { diff --git a/nym-credential-proxy/nym-credential-proxy/Cargo.toml b/nym-credential-proxy/nym-credential-proxy/Cargo.toml index 63a2df37a9..c727488d37 100644 --- a/nym-credential-proxy/nym-credential-proxy/Cargo.toml +++ b/nym-credential-proxy/nym-credential-proxy/Cargo.toml @@ -62,13 +62,16 @@ nym-http-api-common = { path = "../../common/http-api-common", features = [ "utoipa", "middleware", ] } +nym-http-api-client = { path = "../../common/http-api-client", default-features = false } nym-validator-client = { path = "../../common/client-libs/validator-client" } nym-network-defaults = { path = "../../common/network-defaults" } nym-credential-proxy-requests = { path = "../nym-credential-proxy-requests", features = [ "openapi", ] } +nym-upgrade-mode-check = { path = "../../common/upgrade-mode-check" } nym-ecash-signer-check = { path = "../../common/ecash-signer-check" } +nym-pemstore = { path = "../../common/pemstore" } nym-credential-proxy-lib = { path = "../../common/credential-proxy" } diff --git a/nym-credential-proxy/nym-credential-proxy/src/attestation_watcher.rs b/nym-credential-proxy/nym-credential-proxy/src/attestation_watcher.rs new file mode 100644 index 0000000000..e0ff97ac05 --- /dev/null +++ b/nym-credential-proxy/nym-credential-proxy/src/attestation_watcher.rs @@ -0,0 +1,97 @@ +// Copyright 2025 - Nym Technologies SA +// SPDX-License-Identifier: Apache-2.0 + +use crate::http::state::nyx_upgrade_mode::UpgradeModeState; +use nym_crypto::asymmetric::ed25519; +use nym_http_api_client::generate_user_agent; +use nym_upgrade_mode_check::attempt_retrieve_attestation; +use std::sync::Arc; +use std::time::Duration; +use tokio::time::Instant; +use tokio_util::sync::CancellationToken; +use tracing::{debug, info}; +use url::Url; + +pub struct AttestationWatcher { + // default polling interval + regular_polling_interval: Duration, + + // expedited polling interval once upgrade mode is detected + expedited_poll_interval: Duration, + + attestation_url: Url, + + jwt_signing_keys: ed25519::KeyPair, + + jwt_validity: Duration, + + upgrade_mode_state: UpgradeModeState, +} + +impl AttestationWatcher { + pub(crate) fn new( + regular_polling_interval: Duration, + expedited_poll_interval: Duration, + attestation_url: Url, + jwt_signing_keys: ed25519::KeyPair, + jwt_validity: Duration, + ) -> Self { + AttestationWatcher { + regular_polling_interval, + expedited_poll_interval, + attestation_url, + jwt_signing_keys, + jwt_validity, + upgrade_mode_state: UpgradeModeState { + inner: Arc::new(Default::default()), + }, + } + } + + pub(crate) fn shared_state(&self) -> UpgradeModeState { + self.upgrade_mode_state.clone() + } + + async fn try_update_state(&self) { + match attempt_retrieve_attestation( + self.attestation_url.as_str(), + Some(generate_user_agent!()), + ) + .await + { + Err(err) => { + info!("upgrade mode attestation is not available at this time"); + debug!("retrieval error: {err}") + } + Ok(attestation) => { + self.upgrade_mode_state + .update(attestation, &self.jwt_signing_keys, self.jwt_validity) + .await + } + } + } + + pub async fn run_forever(self, cancellation_token: CancellationToken) { + info!("starting the attestation watcher task"); + + let check_wait = tokio::time::sleep(self.regular_polling_interval); + tokio::pin!(check_wait); + + loop { + tokio::select! { + biased; + _ = cancellation_token.cancelled() => { + break + } + _ = &mut check_wait => { + self.try_update_state().await; + if self.upgrade_mode_state.has_attestation().await { + check_wait.as_mut().reset(Instant::now() + self.expedited_poll_interval); + } else { + check_wait.as_mut().reset(Instant::now() + self.regular_polling_interval) + } + } + } + } + } +} diff --git a/nym-credential-proxy/nym-credential-proxy/src/cli.rs b/nym-credential-proxy/nym-credential-proxy/src/cli.rs index 40ba50aa56..a8de014423 100644 --- a/nym-credential-proxy/nym-credential-proxy/src/cli.rs +++ b/nym-credential-proxy/nym-credential-proxy/src/cli.rs @@ -7,10 +7,13 @@ use clap::{Args, Parser}; use nym_bin_common::bin_info; use nym_credential_proxy_lib::error::CredentialProxyError; use nym_credential_proxy_lib::webhook::ZkNymWebhook; +use nym_crypto::asymmetric::ed25519; +use nym_crypto::asymmetric::ed25519::Ed25519RecoveryError; use std::fs::create_dir_all; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::path::PathBuf; -use std::sync::OnceLock; +use std::str::FromStr; +use std::sync::{Arc, OnceLock}; use std::time::Duration; use tracing::info; use url::Url; @@ -20,6 +23,61 @@ fn pretty_build_info_static() -> &'static str { PRETTY_BUILD_INFORMATION.get_or_init(|| bin_info!().pretty_print()) } +// the reason for `Arc` is that `ArgMatches` impls `Clone`, +// so we also need to make the type clone-able +// https://github.com/clap-rs/clap/issues/4286#issuecomment-1262527218 +#[derive(Debug, Clone)] +struct PrivateKeyCliWrapper(Arc); + +impl FromStr for PrivateKeyCliWrapper { + type Err = Ed25519RecoveryError; + fn from_str(s: &str) -> Result { + Ok(PrivateKeyCliWrapper(Arc::new(s.parse()?))) + } +} + +#[derive(Debug, Args)] +#[clap(group = clap::ArgGroup::new("jwt-signing-keys").required(true).multiple(false))] +pub struct JwtSigningKeysArgs { + /// Explicit base58-encoded ed25519 private key used for signing upgrade-mode jwt. + #[clap( + long, + group = "jwt-signing-keys", + env = "NYM_CREDENTIAL_PROXY_JWT_SIGNING_KEY" + )] + jwt_signing_key: Option, + + /// Path to PEM file containing ed25519 private key used for signing upgrade-mode jwt. + #[clap( + long, + group = "jwt-signing-keys", + env = "NYM_CREDENTIAL_PROXY_JWT_SIGNING_KEY_PATH" + )] + jwt_signing_key_path: Option, +} + +impl JwtSigningKeysArgs { + pub(crate) fn signing_keys(self) -> Result { + if let Some(key) = self.jwt_signing_key { + // SAFETY: the arc has never been cloned + #[allow(clippy::unwrap_used)] + return Ok(Arc::into_inner(key.0).unwrap().into()); + } + + // SAFETY: due to clap group, clap ensures only one value here is set + #[allow(clippy::unwrap_used)] + let key_path = self.jwt_signing_key_path.unwrap(); + + let key: ed25519::PrivateKey = nym_pemstore::load_key(&key_path).map_err(|err| { + CredentialProxyError::JWTSigningKeyLoadFailure { + path: key_path.to_str().map(|s| s.to_owned()).unwrap_or_default(), + err, + } + })?; + Ok(key.into()) + } +} + // if needed this could be split into subcommands #[derive(Parser, Debug)] #[clap(author = "Nymtech", version, about, long_version = pretty_build_info_static())] @@ -27,6 +85,12 @@ pub struct Cli { #[clap(flatten)] pub(crate) webhook: ZkNymWebHookConfig, + #[clap(flatten)] + pub(crate) upgrade_mode: UpgradeModeConfig, + + #[clap(flatten)] + pub(crate) jwt_signing_keys: JwtSigningKeysArgs, + /// Path pointing to an env file that configures the binary. #[clap(short, long)] pub(crate) config_env_file: Option, @@ -89,6 +153,44 @@ pub struct Cli { pub(crate) persistent_storage_path: Option, } +#[derive(Args, Debug, Clone)] +pub struct UpgradeModeConfig { + /// URL for polling for upgrade mode changes. + #[clap( + long, + env = "NYM_CREDENTIAL_PROXY_ATTESTATION_CHECK_URL", + default_value = "5m" + )] + pub(crate) attestation_check_url: Url, + + /// Default polling interval of the upgrade mode endpoint. + #[clap( + long, + value_parser = humantime::parse_duration, + env = "NYM_CREDENTIAL_PROXY_ATTESTATION_CHECK_REGULAR_POLLING_INTERVAL", + default_value = "5m", + )] + pub(crate) attestation_check_regular_polling_interval: Duration, + + /// Expedited polling interval of the upgrade mode endpoint if the UM is enabled. + #[clap( + long, + value_parser = humantime::parse_duration, + env = "NYM_CREDENTIAL_PROXY_ATTESTATION_CHECK_EXPEDITED_POLLING_INTERVAL", + default_value = "1m", + )] + pub(crate) attestation_check_expedited_polling_interval: Duration, + + /// Validity duration of the issued JWT during upgrade mode. + #[clap( + long, + value_parser = humantime::parse_duration, + env = "NYM_CREDENTIAL_PROXY_UPGRADE_MODE_JWT_VALIDITY", + default_value = "1h", + )] + pub(crate) upgrade_mode_jwt_validity: Duration, +} + #[derive(Args, Debug, Clone)] pub struct ZkNymWebHookConfig { #[clap(long, env = "WEBHOOK_ZK_NYMS_URL")] diff --git a/nym-credential-proxy/nym-credential-proxy/src/helpers.rs b/nym-credential-proxy/nym-credential-proxy/src/helpers.rs index 41e474cf23..a353c3b447 100644 --- a/nym-credential-proxy/nym-credential-proxy/src/helpers.rs +++ b/nym-credential-proxy/nym-credential-proxy/src/helpers.rs @@ -1,6 +1,8 @@ // Copyright 2024 Nym Technologies SA // SPDX-License-Identifier: GPL-3.0-only +use crate::attestation_watcher::AttestationWatcher; +use crate::http::state::ApiState; use crate::{cli::Cli, http::HttpServer}; use nym_bin_common::bin_info; use nym_credential_proxy_lib::error::CredentialProxyError; @@ -51,6 +53,7 @@ pub(crate) async fn run_api(cli: Cli) -> Result<(), CredentialProxyError> { let mnemonic = cli.mnemonic; let auth_token = cli.http_auth_token; let webhook_cfg = cli.webhook; + let jwt_signing_keys = cli.jwt_signing_keys.signing_keys()?; let ticketbook_manager = TicketbookManager::new( build_sha_short(), @@ -63,7 +66,24 @@ pub(crate) async fn run_api(cli: Cli) -> Result<(), CredentialProxyError> { ) .await?; - let http_server = HttpServer::new(bind_address, ticketbook_manager.clone(), auth_token); + let attestation_watcher = AttestationWatcher::new( + cli.upgrade_mode.attestation_check_regular_polling_interval, + cli.upgrade_mode + .attestation_check_expedited_polling_interval, + cli.upgrade_mode.attestation_check_url, + jwt_signing_keys, + cli.upgrade_mode.upgrade_mode_jwt_validity, + ); + + let api_state = ApiState::new( + ticketbook_manager.clone(), + attestation_watcher.shared_state(), + ); + + // spawn the attestation watcher as a separate task + api_state.try_spawn_in_background(attestation_watcher.run_forever(api_state.shutdown_token())); + + let http_server = HttpServer::new(bind_address, api_state, auth_token); // spawn the http server as a separate task / thread(-ish) http_server.spawn_as_task(); diff --git a/nym-credential-proxy/nym-credential-proxy/src/http/mod.rs b/nym-credential-proxy/nym-credential-proxy/src/http/mod.rs index de37dbba58..c66239ddeb 100644 --- a/nym-credential-proxy/nym-credential-proxy/src/http/mod.rs +++ b/nym-credential-proxy/nym-credential-proxy/src/http/mod.rs @@ -2,8 +2,8 @@ // SPDX-License-Identifier: GPL-3.0-only use crate::http::router::build_router; +use crate::http::state::ApiState; use nym_credential_proxy_lib::error::CredentialProxyError; -use nym_credential_proxy_lib::ticketbook_manager::TicketbookManager; use std::net::SocketAddr; use tracing::info; @@ -12,30 +12,28 @@ pub mod state; pub struct HttpServer { bind_address: SocketAddr, - ticketbook_manager: TicketbookManager, + state: ApiState, auth_token: String, } impl HttpServer { - pub fn new( - bind_address: SocketAddr, - ticketbook_manager: TicketbookManager, - auth_token: String, - ) -> Self { + pub fn new(bind_address: SocketAddr, state: ApiState, auth_token: String) -> Self { HttpServer { bind_address, - ticketbook_manager, + state, auth_token, } } pub fn spawn_as_task(self) { - let cancellation = self.ticketbook_manager.shutdown_token(); + let cancellation = self.state.ticketbooks().shutdown_token(); - let ticketbook_manager = self.ticketbook_manager.clone(); + // not the best name, but that's due to the branch rotting, + // where refactoring would be counter-productive + let ticketbook_manager = self.state.ticketbooks().clone(); ticketbook_manager.try_spawn_in_background(async move { let address = self.bind_address; - let router = build_router(self.ticketbook_manager, self.auth_token); + let router = build_router(self.state, self.auth_token); info!("starting the http server on http://{address}"); let listener = tokio::net::TcpListener::bind(address) diff --git a/nym-credential-proxy/nym-credential-proxy/src/http/router/api/v1/ticketbook/mod.rs b/nym-credential-proxy/nym-credential-proxy/src/http/router/api/v1/ticketbook/mod.rs index e09531af1e..0ccf4633c9 100644 --- a/nym-credential-proxy/nym-credential-proxy/src/http/router/api/v1/ticketbook/mod.rs +++ b/nym-credential-proxy/nym-credential-proxy/src/http/router/api/v1/ticketbook/mod.rs @@ -9,8 +9,8 @@ use nym_credential_proxy_lib::helpers::random_uuid; use nym_credential_proxy_lib::http_helpers::RequestError; use nym_credential_proxy_requests::api::v1::ticketbook::models::{ CurrentEpochResponse, DepositResponse, MasterVerificationKeyResponse, - PartialVerificationKeysResponse, TicketbookAsyncRequest, TicketbookObtainQueryParams, - TicketbookRequest, TicketbookWalletSharesAsyncResponse, TicketbookWalletSharesResponse, + ObtainTicketBookSharesAsyncResponse, PartialVerificationKeysResponse, TicketbookAsyncRequest, + TicketbookObtainQueryParams, TicketbookRequest, TicketbookWalletSharesResponse, }; use nym_credential_proxy_requests::routes::api::v1::ticketbook; use nym_http_api_common::{FormattedResponse, OutputParams}; @@ -25,7 +25,7 @@ pub type FormattedPartialVerificationKeysResponse = pub type FormattedTicketbookWalletSharesResponse = FormattedResponse; pub type FormattedTicketbookWalletSharesAsyncResponse = - FormattedResponse; + FormattedResponse; /// Attempt to obtain blinded shares of an ecash ticketbook wallet #[utoipa::path( @@ -63,7 +63,7 @@ pub(crate) async fn obtain_ticketbook_shares( let output = params.output.unwrap_or_default(); let response = state - .inner_state() + .ticketbooks() .obtain_ticketbook_shares(uuid, payload, params.obtain_params.global) .await .map_err(|err| RequestError::new_server_error(err, uuid))?; @@ -84,8 +84,8 @@ pub(crate) async fn obtain_ticketbook_shares( ), responses( (status = 200, content( - (TicketbookWalletSharesAsyncResponse = "application/json"), - (TicketbookWalletSharesAsyncResponse = "application/yaml"), + (ObtainTicketBookSharesAsyncResponse = "application/json"), + (ObtainTicketBookSharesAsyncResponse = "application/yaml"), )), (status = 400, description = "the provided request hasn't been created against correct attributes"), (status = 401, description = "authentication token is missing or is invalid"), @@ -107,8 +107,13 @@ pub(crate) async fn obtain_ticketbook_shares_async( let uuid = random_uuid(); let output = params.output.unwrap_or_default(); + // 0. check if we're in 'upgrade-mode' - if so, just return the attestation and associated jwt + if let Some(upgrade_mode_response) = state.upgrade_mode_response().await { + return Ok(output.to_response(upgrade_mode_response.into())); + } + let response = state - .inner_state() + .ticketbooks() .obtain_ticketbook_shares_async(uuid, payload, params.obtain_params) .await .map_err(|err| RequestError::new_server_error(err, uuid))?; @@ -142,7 +147,7 @@ pub(crate) async fn current_deposit( let output = output.output.unwrap_or_default(); let response = state - .inner_state() + .ticketbooks() .current_deposit() .await .map_err(RequestError::new_plain_error)?; @@ -177,7 +182,7 @@ pub(crate) async fn partial_verification_keys( let output = output.output.unwrap_or_default(); let response = state - .inner_state() + .ticketbooks() .partial_verification_keys() .await .map_err(RequestError::new_plain_error)?; @@ -212,7 +217,7 @@ pub(crate) async fn master_verification_key( let output = output.output.unwrap_or_default(); let response = state - .inner_state() + .ticketbooks() .master_verification_key() .await .map_err(RequestError::new_plain_error)?; @@ -248,7 +253,7 @@ pub(crate) async fn current_epoch( let output = output.output.unwrap_or_default(); let response = state - .inner_state() + .ticketbooks() .current_epoch() .await .map_err(RequestError::new_plain_error)?; diff --git a/nym-credential-proxy/nym-credential-proxy/src/http/router/api/v1/ticketbook/shares.rs b/nym-credential-proxy/nym-credential-proxy/src/http/router/api/v1/ticketbook/shares.rs index ba460a1ac1..0dd2a8efe2 100644 --- a/nym-credential-proxy/nym-credential-proxy/src/http/router/api/v1/ticketbook/shares.rs +++ b/nym-credential-proxy/nym-credential-proxy/src/http/router/api/v1/ticketbook/shares.rs @@ -43,7 +43,7 @@ pub(crate) async fn query_for_shares_by_id( let output = params.output.unwrap_or_default(); let response = state - .inner_state() + .ticketbooks() .query_for_shares_by_id(uuid, params.global, share_id) .await .map_err(|err| RequestError::new_server_error(err, uuid))?; @@ -80,7 +80,7 @@ pub(crate) async fn query_for_shares_by_device_id_and_credential_id( let output = params.output.unwrap_or_default(); let response = state - .inner_state() + .ticketbooks() .query_for_shares_by_device_id_and_credential_id( uuid, params.global, diff --git a/nym-credential-proxy/nym-credential-proxy/src/http/router/mod.rs b/nym-credential-proxy/nym-credential-proxy/src/http/router/mod.rs index 8b23bbab42..8d8f89dcff 100644 --- a/nym-credential-proxy/nym-credential-proxy/src/http/router/mod.rs +++ b/nym-credential-proxy/nym-credential-proxy/src/http/router/mod.rs @@ -18,7 +18,7 @@ fn swagger_redirect() -> MethodRouter { get(|| async { Redirect::to("/api/v1/swagger/") }) } -pub fn build_router(state: impl Into, auth_token: String) -> Router { +pub fn build_router(state: ApiState, auth_token: String) -> Router { // let auth_layer = from_extractor::(); let auth_middleware = AuthLayer::new(Arc::new(Zeroizing::new(auth_token))); @@ -32,7 +32,7 @@ pub fn build_router(state: impl Into, auth_token: String) -> Router { // we don't have to be using middleware, but we already had that code // we might want something like: https://github.com/tokio-rs/axum/blob/main/examples/tracing-aka-logging/src/main.rs#L44 instead .layer(axum::middleware::from_fn(logging::log_request_info)) - .with_state(state.into()); + .with_state(state); cfg_if::cfg_if! { if #[cfg(feature = "cors")] { diff --git a/nym-credential-proxy/nym-credential-proxy/src/http/state/mod.rs b/nym-credential-proxy/nym-credential-proxy/src/http/state/mod.rs index a7c1b5b2b5..7c2c015ef5 100644 --- a/nym-credential-proxy/nym-credential-proxy/src/http/state/mod.rs +++ b/nym-credential-proxy/nym-credential-proxy/src/http/state/mod.rs @@ -1,21 +1,50 @@ // Copyright 2024 Nym Technologies SA // SPDX-License-Identifier: GPL-3.0-only +use crate::http::state::nyx_upgrade_mode::UpgradeModeState; use nym_credential_proxy_lib::ticketbook_manager::TicketbookManager; +use nym_credential_proxy_requests::api::v1::ticketbook::models::UpgradeModeResponse; +use std::future::Future; +use tokio::task::JoinHandle; +use tokio_util::sync::CancellationToken; + +pub(crate) mod nyx_upgrade_mode; #[derive(Clone)] pub struct ApiState { - inner: TicketbookManager, -} - -impl From for ApiState { - fn from(inner: TicketbookManager) -> Self { - Self { inner } - } + ticketbooks: TicketbookManager, + upgrade_mode: UpgradeModeState, } impl ApiState { - pub(crate) fn inner_state(&self) -> &TicketbookManager { - &self.inner + pub(crate) fn new(ticketbooks: TicketbookManager, upgrade_mode: UpgradeModeState) -> Self { + Self { + ticketbooks, + upgrade_mode, + } + } + + pub(crate) fn ticketbooks(&self) -> &TicketbookManager { + &self.ticketbooks + } + + pub fn shutdown_token(&self) -> CancellationToken { + self.ticketbooks.shutdown_token() + } + + pub(crate) fn try_spawn_in_background(&self, task: F) -> Option> + where + F: Future + Send + 'static, + F::Output: Send + 'static, + { + self.ticketbooks().try_spawn_in_background(task) + } + + pub(crate) async fn upgrade_mode_response(&self) -> Option { + let (upgrade_mode_attestation, jwt) = self.upgrade_mode.attestation_with_jwt().await?; + Some(UpgradeModeResponse { + upgrade_mode_attestation, + jwt, + }) } } diff --git a/nym-credential-proxy/nym-credential-proxy/src/http/state/nyx_upgrade_mode.rs b/nym-credential-proxy/nym-credential-proxy/src/http/state/nyx_upgrade_mode.rs new file mode 100644 index 0000000000..80c94a055f --- /dev/null +++ b/nym-credential-proxy/nym-credential-proxy/src/http/state/nyx_upgrade_mode.rs @@ -0,0 +1,144 @@ +// Copyright 2025 - Nym Technologies SA +// SPDX-License-Identifier: GPL-3.0-only + +use nym_credential_proxy_requests::CREDENTIAL_PROXY_JWT_ISSUER; +use nym_credential_proxy_requests::api::v1::ticketbook::models::UpgradeModeAttestation; +use nym_crypto::asymmetric::ed25519; +use nym_upgrade_mode_check::generate_jwt_for_upgrade_mode_attestation; +use std::sync::Arc; +use std::time::Duration; +use time::OffsetDateTime; +use tokio::sync::RwLock; + +#[derive(Debug, Clone)] +pub(crate) struct UpgradeModeState { + pub(crate) inner: Arc>>, +} + +impl UpgradeModeState { + pub(crate) async fn has_attestation(&self) -> bool { + self.inner.read().await.is_some() + } + + pub(crate) async fn update( + &self, + retrieved_attestation: Option, + jwt_signing_keys: &ed25519::KeyPair, + jwt_validity: Duration, + ) { + let mut guard = self.inner.write().await; + let Some(attestation) = retrieved_attestation else { + *guard = None; + return; + }; + + match guard.as_mut() { + None => { + // no existing state - it's the first time we're going into upgrade mode, + // so generate the jwt + *guard = Some(UpgradeModeStateInner::new_fresh( + attestation, + jwt_signing_keys, + jwt_validity, + )); + } + Some(current_state) => { + let mut should_refresh = false; + // update the jwt if we have issued one and: + // - either the attestation has changed + // - or the existing jwt is close to expiry + if current_state.attestation != attestation { + should_refresh = true; + } + + if let Some(issued_jwt) = current_state.jwt.as_ref() + && issued_jwt.close_to_expiry() + { + should_refresh = true; + } + + if should_refresh { + current_state.attestation = attestation; + current_state.refresh_jwt(jwt_signing_keys, jwt_validity); + } + } + } + } + + pub(crate) async fn attestation_with_jwt( + &self, + ) -> Option<(UpgradeModeAttestation, Option)> { + let guard = self.inner.read().await; + let inner = guard.as_ref()?; + Some(( + inner.attestation.clone(), + inner.jwt.as_ref().map(|jwt| jwt.token.clone()), + )) + } +} + +#[derive(Debug)] +pub(crate) struct UpgradeModeStateInner { + pub(crate) attestation: UpgradeModeAttestation, + pub(crate) jwt: Option, +} + +impl UpgradeModeStateInner { + fn try_generate_jwt( + attestation: &UpgradeModeAttestation, + jwt_signing_keys: &ed25519::KeyPair, + jwt_validity: Duration, + ) -> Option { + if attestation.authorised_to_issue_jwt(jwt_signing_keys.public_key()) { + Some(Jwt::generate(attestation, jwt_signing_keys, jwt_validity)) + } else { + None + } + } + + fn new_fresh( + attestation: UpgradeModeAttestation, + jwt_signing_keys: &ed25519::KeyPair, + jwt_validity: Duration, + ) -> Self { + let jwt = Self::try_generate_jwt(&attestation, jwt_signing_keys, jwt_validity); + UpgradeModeStateInner { attestation, jwt } + } + + fn refresh_jwt(&mut self, keys: &ed25519::KeyPair, validity: Duration) { + self.jwt = Self::try_generate_jwt(&self.attestation, keys, validity); + } +} + +#[derive(Debug)] +pub(crate) struct Jwt { + pub(crate) issued_at: OffsetDateTime, + pub(crate) issued_for: Duration, + pub(crate) token: String, +} + +impl Jwt { + fn generate( + upgrade_mode_attestation: &UpgradeModeAttestation, + keys: &ed25519::KeyPair, + validity: Duration, + ) -> Self { + Jwt { + issued_at: OffsetDateTime::now_utc(), + issued_for: validity, + token: generate_jwt_for_upgrade_mode_attestation( + upgrade_mode_attestation.clone(), + validity, + keys, + Some(CREDENTIAL_PROXY_JWT_ISSUER), + ), + } + } + + fn close_to_expiry(&self) -> bool { + // less than 20% of validity left + let now = OffsetDateTime::now_utc(); + let validity_threshold = Duration::from_secs_f32(self.issued_for.as_secs_f32() * 0.8); + now - self.issued_at >= validity_threshold + } +} diff --git a/nym-credential-proxy/nym-credential-proxy/src/main.rs b/nym-credential-proxy/nym-credential-proxy/src/main.rs index 8b85fef400..87b6440ab9 100644 --- a/nym-credential-proxy/nym-credential-proxy/src/main.rs +++ b/nym-credential-proxy/nym-credential-proxy/src/main.rs @@ -14,6 +14,7 @@ cfg_if::cfg_if! { pub mod config; pub mod helpers; pub mod http; + pub mod attestation_watcher; } } @@ -40,6 +41,7 @@ async fn main() -> anyhow::Result<()> { #[cfg(not(unix))] #[tokio::main] +#[allow(clippy::exit)] async fn main() -> anyhow::Result<()> { eprintln!("This tool is only supported on Unix systems"); #[allow(clippy::exit)] From 673a3e45d3ed05f3c03eacc447b47996a38a9c9d Mon Sep 17 00:00:00 2001 From: Simon Wicky Date: Thu, 6 Nov 2025 18:07:07 +0100 Subject: [PATCH 03/26] [bugfix] Distinguish authenticator errors by credential spent (#6176) * distinguish authenticator errors by credential spent * nitpicking fixes * fix CI to see those changes * error naming --- .github/workflows/ci-build.yml | 3 + nym-authenticator-client/src/error.rs | 17 +++-- nym-authenticator-client/src/lib.rs | 93 ++++++++++++++++----------- nym-registration-client/src/error.rs | 78 ++++++++++++++++++++-- nym-registration-client/src/lib.rs | 22 ++++--- 5 files changed, 157 insertions(+), 56 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 9adb0df9d8..60617c55d6 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -8,10 +8,13 @@ on: - 'gateway/**' - 'integrations/**' - 'nym-api/**' + - 'nym-authenticator-client/**' - 'nym-credential-proxy/**' + - 'nym-ip-packet-client/**' - 'nym-network-monitor/**' - 'nym-node/**' - 'nym-node-status-api/**' + - 'nym-registration-client/**' - 'nym-statistics-api/**' - 'nym-outfox/**' - 'nym-validator-rewarder/**' diff --git a/nym-authenticator-client/src/error.rs b/nym-authenticator-client/src/error.rs index 39d991f886..43598acdd8 100644 --- a/nym-authenticator-client/src/error.rs +++ b/nym-authenticator-client/src/error.rs @@ -2,7 +2,7 @@ use nym_credentials_interface::TicketType; use nym_sdk::mixnet::InputMessage; #[derive(thiserror::Error, Debug)] -pub enum Error { +pub enum AuthenticationClientError { #[error("mixnet client stopped returning responses")] NoMixnetMessagesReceived, @@ -42,10 +42,19 @@ pub enum Error { #[error("unknown authenticator version number")] UnsupportedAuthenticatorVersion, +} - #[error("failed to wait on AuthenticatorClientListener")] - FailedToJoinOnTask(#[from] tokio::task::JoinError), +#[derive(thiserror::Error, Debug)] +pub enum RegistrationError { + #[error(transparent)] + NoCredentialSent(AuthenticationClientError), // This intentionnally doesn't use `from` to avoid random ? operator to land here when they shouldn't + + #[error("an error occured after a credential was sent : {source}")] + CredentialSent { + #[source] + source: AuthenticationClientError, + }, } // Result type based on our error type -pub type Result = std::result::Result; +pub(crate) type Result = std::result::Result; diff --git a/nym-authenticator-client/src/lib.rs b/nym-authenticator-client/src/lib.rs index 8fe7edb511..ab811ef79d 100644 --- a/nym-authenticator-client/src/lib.rs +++ b/nym-authenticator-client/src/lib.rs @@ -6,11 +6,11 @@ use nym_bandwidth_controller::{BandwidthTicketProvider, DEFAULT_TICKETS_TO_SPEND use nym_crypto::asymmetric::x25519::KeyPair; use nym_registration_common::GatewayData; use std::net::{IpAddr, SocketAddr}; -use std::str::FromStr; use std::sync::Arc; use std::time::Duration; use tracing::{debug, error, trace}; +use crate::error::Result; use crate::mixnet_listener::{MixnetMessageBroadcastReceiver, MixnetMessageInputSender}; use nym_authenticator_requests::{ AuthenticatorVersion, client_message::ClientMessage, response::AuthenticatorResponse, @@ -25,7 +25,7 @@ mod error; mod helpers; mod mixnet_listener; -pub use crate::error::{Error, Result}; +pub use crate::error::{AuthenticationClientError, RegistrationError}; pub use crate::mixnet_listener::{AuthClientMixnetListener, AuthClientMixnetListenerHandle}; pub struct AuthenticatorClient { @@ -91,7 +91,7 @@ impl AuthenticatorClient { self.mixnet_sender .send(input_message) .await - .map_err(|e| Error::SendMixnetMessage(Box::new(e)))?; + .map_err(|e| AuthenticationClientError::SendMixnetMessage(Box::new(e)))?; Ok(request_id) } @@ -104,11 +104,11 @@ impl AuthenticatorClient { tokio::select! { _ = &mut timeout => { error!("Timed out waiting for reply to connect request"); - return Err(Error::TimeoutWaitingForConnectResponse); + return Err(AuthenticationClientError::TimeoutWaitingForConnectResponse); } msg = self.mixnet_listener.recv() => match msg { Err(_) => { - return Err(Error::NoMixnetMessagesReceived); + return Err(AuthenticationClientError::NoMixnetMessagesReceived); } Ok(msg) => { let Some(header) = msg.message.first_chunk::<2>() else { @@ -131,12 +131,12 @@ impl AuthenticatorClient { // Then we deserialize the message debug!("AuthClient: got message while waiting for connect response with version {version:?}"); let ret: Result = match version { - AuthenticatorVersion::V1 => Err(Error::UnsupportedVersion), + AuthenticatorVersion::V1 => Err(AuthenticationClientError::UnsupportedVersion), AuthenticatorVersion::V2 => v2::response::AuthenticatorResponse::from_reconstructed_message(&msg).map(Into::into).map_err(Into::into), AuthenticatorVersion::V3 => v3::response::AuthenticatorResponse::from_reconstructed_message(&msg).map(Into::into).map_err(Into::into), AuthenticatorVersion::V4 => v4::response::AuthenticatorResponse::from_reconstructed_message(&msg).map(Into::into).map_err(Into::into), AuthenticatorVersion::V5 => v5::response::AuthenticatorResponse::from_reconstructed_message(&msg).map(Into::into).map_err(Into::into), - AuthenticatorVersion::UNKNOWN => Err(Error::UnknownVersion), + AuthenticatorVersion::UNKNOWN => Err(AuthenticationClientError::UnknownVersion), }; let Ok(response) = ret else { // This is ok, it's likely just one of our self-pings @@ -158,10 +158,14 @@ impl AuthenticatorClient { &mut self, controller: &dyn BandwidthTicketProvider, ticketbook_type: TicketType, - ) -> Result { + ) -> std::result::Result { debug!("Registering with the wg gateway..."); let init_message = match self.auth_version { - AuthenticatorVersion::V1 => return Err(Error::UnsupportedAuthenticatorVersion), + AuthenticatorVersion::V1 | AuthenticatorVersion::UNKNOWN => { + return Err(RegistrationError::NoCredentialSent( + AuthenticationClientError::UnsupportedAuthenticatorVersion, + )); + } AuthenticatorVersion::V2 => { ClientMessage::Initial(Box::new(v2::registration::InitMessage { pub_key: PeerPublicKey::new(self.keypair.public_key().to_bytes().into()), @@ -182,16 +186,20 @@ impl AuthenticatorClient { pub_key: PeerPublicKey::new(self.keypair.public_key().to_bytes().into()), })) } - AuthenticatorVersion::UNKNOWN => return Err(Error::UnsupportedAuthenticatorVersion), }; trace!("sending init msg to {}: {:?}", &self.ip_addr, &init_message); - let response = self.send_and_wait_for_response(&init_message).await?; + let response = self + .send_and_wait_for_response(&init_message) + .await + .map_err(RegistrationError::NoCredentialSent)?; let registered_data = match response { AuthenticatorResponse::PendingRegistration(pending_registration_response) => { // Unwrap since we have already checked that we have the keypair. debug!("Verifying data"); if let Err(e) = pending_registration_response.verify(self.keypair.private_key()) { - return Err(Error::VerificationFailed(e)); + return Err(RegistrationError::NoCredentialSent( + AuthenticationClientError::VerificationFailed(e), + )); } trace!( @@ -199,6 +207,7 @@ impl AuthenticatorClient { &self.ip_addr, &pending_registration_response ); + // This call takes care of updating the credential count in storage, so failure of this must be counted as credential waste let credential = Some( controller .get_ecash_ticket( @@ -207,15 +216,21 @@ impl AuthenticatorClient { DEFAULT_TICKETS_TO_SPEND, ) .await - .map_err(|source| Error::GetTicket { - ticketbook_type, - source, + .map_err(|source| RegistrationError::CredentialSent { + source: AuthenticationClientError::GetTicket { + ticketbook_type, + source, + }, })? .data, ); let finalized_message = match self.auth_version { - AuthenticatorVersion::V1 => return Err(Error::UnsupportedAuthenticatorVersion), + AuthenticatorVersion::V1 | AuthenticatorVersion::UNKNOWN => { + return Err(RegistrationError::CredentialSent { + source: AuthenticationClientError::UnsupportedAuthenticatorVersion, + }); + } AuthenticatorVersion::V2 => { ClientMessage::Final(Box::new(v2::registration::FinalMessage { gateway_client: v2::registration::GatewayClient::new( @@ -260,23 +275,29 @@ impl AuthenticatorClient { credential, })) } - AuthenticatorVersion::UNKNOWN => { - return Err(Error::UnsupportedAuthenticatorVersion); - } }; trace!( "sending final msg to {}: {:?}", &self.ip_addr, &finalized_message ); - let response = self.send_and_wait_for_response(&finalized_message).await?; + let response = self + .send_and_wait_for_response(&finalized_message) + .await + .map_err(|source| RegistrationError::CredentialSent { source })?; let AuthenticatorResponse::Registered(registered_response) = response else { - return Err(Error::InvalidGatewayAuthResponse); + return Err(RegistrationError::CredentialSent { + source: AuthenticationClientError::InvalidGatewayAuthResponse, + }); }; registered_response } AuthenticatorResponse::Registered(registered_response) => registered_response, - _ => return Err(Error::InvalidGatewayAuthResponse), + _ => { + return Err(RegistrationError::NoCredentialSent( + AuthenticationClientError::InvalidGatewayAuthResponse, + )); + } }; trace!( @@ -286,12 +307,7 @@ impl AuthenticatorClient { let gateway_data = GatewayData { public_key: registered_data.pub_key().inner().into(), - endpoint: SocketAddr::from_str(&format!( - "{}:{}", - self.ip_addr, - registered_data.wg_port() - )) - .map_err(Error::FailedToParseEntryGatewaySocketAddr)?, + endpoint: SocketAddr::new(self.ip_addr, registered_data.wg_port()), private_ipv4: registered_data.private_ips().ipv4, private_ipv6: registered_data.private_ips().ipv6, }; @@ -299,9 +315,12 @@ impl AuthenticatorClient { Ok(gateway_data) } + // This is up to the caller to know nothing is ever spent there pub async fn query_bandwidth(&mut self) -> Result> { let query_message = match self.auth_version { - AuthenticatorVersion::V1 => return Err(Error::UnsupportedAuthenticatorVersion), + AuthenticatorVersion::V1 => { + return Err(AuthenticationClientError::UnsupportedAuthenticatorVersion); + } AuthenticatorVersion::V2 => ClientMessage::Query(Box::new(QueryMessageImpl { pub_key: PeerPublicKey::new(self.keypair.public_key().to_bytes().into()), version: AuthenticatorVersion::V2, @@ -318,7 +337,9 @@ impl AuthenticatorClient { pub_key: PeerPublicKey::new(self.keypair.public_key().to_bytes().into()), version: AuthenticatorVersion::V5, })), - AuthenticatorVersion::UNKNOWN => return Err(Error::UnsupportedAuthenticatorVersion), + AuthenticatorVersion::UNKNOWN => { + return Err(AuthenticationClientError::UnsupportedAuthenticatorVersion); + } }; let response = self.send_and_wait_for_response(&query_message).await?; @@ -332,7 +353,7 @@ impl AuthenticatorClient { return Ok(None); } } - _ => return Err(Error::InvalidGatewayAuthResponse), + _ => return Err(AuthenticationClientError::InvalidGatewayAuthResponse), }; let remaining_pretty = if available_bandwidth > 1024 * 1024 { @@ -347,13 +368,13 @@ impl AuthenticatorClient { ); if available_bandwidth < 1024 * 1024 { tracing::warn!( - "Remaining bandwidth is under 1 MB. The wireguard mode will get suspended after that until tomorrow, UTC time. The client might shutdown with timeout soon - " - ); + "Remaining bandwidth is under 1 MB. The wireguard mode will get suspended after that until tomorrow, UTC time. The client might shutdown with timeout soon" + ); } Ok(Some(available_bandwidth)) } + // Since the caller provides the credential, it knows it is spent pub async fn top_up(&mut self, credential: CredentialSpendingData) -> Result { let top_up_message = match self.auth_version { AuthenticatorVersion::V3 => ClientMessage::TopUp(Box::new(v3::topup::TopUpMessage { @@ -371,7 +392,7 @@ impl AuthenticatorClient { credential, })), AuthenticatorVersion::V1 | AuthenticatorVersion::V2 | AuthenticatorVersion::UNKNOWN => { - return Err(Error::UnsupportedAuthenticatorVersion); + return Err(AuthenticationClientError::UnsupportedAuthenticatorVersion); } }; let response = self.send_and_wait_for_response(&top_up_message).await?; @@ -380,7 +401,7 @@ impl AuthenticatorClient { AuthenticatorResponse::TopUpBandwidth(top_up_bandwidth_response) => { top_up_bandwidth_response.available_bandwidth() } - _ => return Err(Error::InvalidGatewayAuthResponse), + _ => return Err(AuthenticationClientError::InvalidGatewayAuthResponse), }; Ok(remaining_bandwidth) diff --git a/nym-registration-client/src/error.rs b/nym-registration-client/src/error.rs index ed3b09c220..822d44dcae 100644 --- a/nym-registration-client/src/error.rs +++ b/nym-registration-client/src/error.rs @@ -35,19 +35,85 @@ pub enum RegistrationClientError { #[error("timeout connecting the mixnet client")] Timeout(#[from] tokio::time::error::Elapsed), - #[error("failed to register wireguard with the gateway for {gateway_id}")] - EntryGatewayRegisterWireguard { + #[error( + "failed to register wireguard with the gateway for {gateway_id}, no credential was sent" + )] + WireguardEntryRegistration { gateway_id: String, authenticator_address: Box, #[source] - source: Box, + source: Box, }, - #[error("failed to register wireguard with the gateway for {gateway_id}")] - ExitGatewayRegisterWireguard { + #[error( + "failed to register wireguard with the gateway for {gateway_id}, no credential was sent" + )] + WireguardExitRegistration { gateway_id: String, authenticator_address: Box, #[source] - source: Box, + source: Box, + }, + + #[error( + "failed to register wireguard with the gateway for {gateway_id}, a credential was sent" + )] + WireguardEntryRegistrationCredentialSent { + gateway_id: String, + authenticator_address: Box, + #[source] + source: Box, + }, + + #[error( + "failed to register wireguard with the gateway for {gateway_id}, a credential was sent" + )] + WireguardExitRegistrationCredentialSent { + gateway_id: String, + authenticator_address: Box, + #[source] + source: Box, }, } + +impl RegistrationClientError { + pub fn from_authenticator_error( + error: nym_authenticator_client::RegistrationError, + gateway_id: String, + authenticator_address: nym_sdk::mixnet::Recipient, + entry: bool, + ) -> Self { + match error { + nym_authenticator_client::RegistrationError::NoCredentialSent(source) => { + if entry { + Self::WireguardEntryRegistration { + gateway_id, + authenticator_address: Box::new(authenticator_address), + source: Box::new(source), + } + } else { + Self::WireguardExitRegistration { + gateway_id, + authenticator_address: Box::new(authenticator_address), + source: Box::new(source), + } + } + } + nym_authenticator_client::RegistrationError::CredentialSent { source } => { + if entry { + Self::WireguardEntryRegistrationCredentialSent { + gateway_id, + authenticator_address: Box::new(authenticator_address), + source: Box::new(source), + } + } else { + Self::WireguardExitRegistrationCredentialSent { + gateway_id, + authenticator_address: Box::new(authenticator_address), + source: Box::new(source), + } + } + } + } + } +} diff --git a/nym-registration-client/src/lib.rs b/nym-registration-client/src/lib.rs index ece0e6fd64..4317787c1f 100644 --- a/nym-registration-client/src/lib.rs +++ b/nym-registration-client/src/lib.rs @@ -162,20 +162,22 @@ impl RegistrationClient { let entry = entry.map_err(|source| RegistrationError { mixnet_client: None, - source: RegistrationClientError::EntryGatewayRegisterWireguard { - gateway_id: self.config.entry.node.identity.to_base58_string(), - authenticator_address: Box::new(entry_auth_address), - source: Box::new(source), - }, + source: RegistrationClientError::from_authenticator_error( + source, + self.config.entry.node.identity.to_base58_string(), + entry_auth_address, + true, + ), })?; let exit = exit.map_err(|source| RegistrationError { mixnet_client: None, - source: RegistrationClientError::EntryGatewayRegisterWireguard { - gateway_id: self.config.exit.node.identity.to_base58_string(), - authenticator_address: Box::new(exit_auth_address), - source: Box::new(source), - }, + source: RegistrationClientError::from_authenticator_error( + source, + self.config.exit.node.identity.to_base58_string(), + exit_auth_address, + false, + ), })?; Ok(RegistrationResult::Wireguard(Box::new( From 1400db6156a7aa17946f540ab428b94d0708b194 Mon Sep 17 00:00:00 2001 From: Jack Wampler Date: Thu, 6 Nov 2025 12:37:27 -0700 Subject: [PATCH 04/26] DNS Reliability Fixes (#6175) --- Cargo.lock | 1 + common/client-core/src/error.rs | 2 +- .../client-libs/gateway-client/src/error.rs | 2 +- common/http-api-client/Cargo.toml | 4 +- common/http-api-client/src/dns.rs | 148 +++++++++++++++--- common/http-api-client/src/lib.rs | 2 +- 6 files changed, 132 insertions(+), 27 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6d5dd1e0db..56354ba68f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6057,6 +6057,7 @@ dependencies = [ "thiserror 2.0.12", "tokio", "tracing", + "tracing-subscriber", "url", "wasmtimer", ] diff --git a/common/client-core/src/error.rs b/common/client-core/src/error.rs index dc6e4fc1b2..eea24910d0 100644 --- a/common/client-core/src/error.rs +++ b/common/client-core/src/error.rs @@ -45,7 +45,7 @@ pub enum ClientCoreError { #[cfg(not(target_arch = "wasm32"))] #[error("resolution failed: {0}")] - ResolutionFailed(#[from] nym_http_api_client::HickoryDnsError), + ResolutionFailed(#[from] nym_http_api_client::ResolveError), #[error("no gateways on network")] NoGatewaysOnNetwork, diff --git a/common/client-libs/gateway-client/src/error.rs b/common/client-libs/gateway-client/src/error.rs index 8766f9f5a6..eaea37c586 100644 --- a/common/client-libs/gateway-client/src/error.rs +++ b/common/client-libs/gateway-client/src/error.rs @@ -54,7 +54,7 @@ pub enum GatewayClientError { #[cfg(not(target_arch = "wasm32"))] #[error("resolution failed: {0}")] - ResolutionFailed(#[from] nym_http_api_client::HickoryDnsError), + ResolutionFailed(#[from] nym_http_api_client::ResolveError), #[error("No shared key was provided or obtained")] NoSharedKeyAvailable, diff --git a/common/http-api-client/Cargo.toml b/common/http-api-client/Cargo.toml index 35da8e0e11..411f9ad846 100644 --- a/common/http-api-client/Cargo.toml +++ b/common/http-api-client/Cargo.toml @@ -32,6 +32,7 @@ thiserror = { workspace = true } tracing = { workspace = true } itertools = { workspace = true } inventory = { workspace = true } +tokio = { workspace = true, features = ["rt", "macros", "time"] } # used for decoding text responses (they were already implicitly included) bytes = { workspace = true } @@ -52,5 +53,4 @@ workspace = true features = ["tokio"] [dev-dependencies] -tokio = { workspace = true, features = ["rt", "macros"] } - +tracing-subscriber.workspace = true diff --git a/common/http-api-client/src/dns.rs b/common/http-api-client/src/dns.rs index d3fa9dde35..016f4383f7 100644 --- a/common/http-api-client/src/dns.rs +++ b/common/http-api-client/src/dns.rs @@ -32,17 +32,18 @@ use crate::ClientBuilder; use std::{ net::SocketAddr, sync::{Arc, LazyLock}, + time::Duration, }; use hickory_resolver::{ - ResolveError, TokioResolver, + TokioResolver, config::{LookupIpStrategy, NameServerConfigGroup, ResolverConfig, ServerOrderingStrategy}, lookup_ip::{LookupIp, LookupIpIntoIter}, name_server::TokioConnectionProvider, }; use once_cell::sync::OnceCell; use reqwest::dns::{Addrs, Name, Resolve, Resolving}; -use tracing::warn; +use tracing::{info, warn}; impl ClientBuilder { /// Override the DNS resolver implementation used by the underlying http client. @@ -72,11 +73,13 @@ static SHARED_RESOLVER: LazyLock = LazyLock::new(|| { }); #[derive(Debug, thiserror::Error)] -#[error("hickory-dns resolver error: {hickory_error}")] +#[allow(missing_docs)] /// Error occurring while resolving a hostname into an IP address. -pub struct HickoryDnsError { - #[from] - hickory_error: ResolveError, +pub enum ResolveError { + #[error("hickory-dns resolver error: {0}")] + HickoryDnsError(#[from] hickory_resolver::ResolveError), + #[error("high level lookup timed out")] + Timeout, } /// Wrapper around an `AsyncResolver`, which implements the `Resolve` trait. @@ -87,7 +90,7 @@ pub struct HickoryDnsError { /// The default initialization uses a shared underlying `AsyncResolver`. If a thread local resolver /// is required use `thread_resolver()` to build a resolver with an independently instantiated /// internal `AsyncResolver`. -#[derive(Debug, Default, Clone)] +#[derive(Debug, Clone)] pub struct HickoryDnsResolver { // Since we might not have been called in the context of a // Tokio Runtime in initialization, so we must delay the actual @@ -95,6 +98,20 @@ pub struct HickoryDnsResolver { state: Arc>, fallback: Option>>, dont_use_shared: bool, + /// Overall timeout for dns lookup associated with any individual host resolution. For example, + /// use of retries, server_ordering_strategy, etc. ends absolutely if this timeout is reached. + overall_dns_timeout: Duration, +} + +impl Default for HickoryDnsResolver { + fn default() -> Self { + Self { + state: Default::default(), + fallback: Default::default(), + dont_use_shared: Default::default(), + overall_dns_timeout: Duration::from_secs(10), + } + } } impl Resolve for HickoryDnsResolver { @@ -102,6 +119,7 @@ impl Resolve for HickoryDnsResolver { let resolver = self.state.clone(); let maybe_fallback = self.fallback.clone(); let independent = self.dont_use_shared; + let overall_dns_timeout = self.overall_dns_timeout; Box::pin(async move { let resolver = resolver.get_or_try_init(|| { // using a closure here is slightly gross, but this makes sure that if the @@ -113,10 +131,14 @@ impl Resolve for HickoryDnsResolver { } })?; + let resolve_fut = + tokio::time::timeout(overall_dns_timeout, resolver.lookup_ip(name.as_str())); + // try the primary DNS resolver that we set up (DoH or DoT or whatever) - let lookup = match resolver.lookup_ip(name.as_str()).await { - Ok(res) => res, - Err(e) => { + let lookup = match resolve_fut.await { + Ok(Ok(res)) => res, + Err(_) => return Err(ResolveError::Timeout.into()), + Ok(Err(e)) => { if let Some(ref fallback) = maybe_fallback { // on failure use the fall back system configured DNS resolver if !e.is_no_records_found() { @@ -162,13 +184,15 @@ impl Iterator for SocketAddrs { impl HickoryDnsResolver { /// Attempt to resolve a domain name to a set of ['IpAddr']s - pub async fn resolve_str(&self, name: &str) -> Result { + pub async fn resolve_str(&self, name: &str) -> Result { let resolver = self.state.get_or_try_init(|| self.new_resolver())?; + let resolve_fut = tokio::time::timeout(self.overall_dns_timeout, resolver.lookup_ip(name)); // try the primary DNS resolver that we set up (DoH or DoT or whatever) - let lookup = match resolver.lookup_ip(name).await { - Ok(res) => res, - Err(e) => { + let lookup = match resolve_fut.await { + Ok(Ok(res)) => res, + Err(_) => return Err(ResolveError::Timeout), + Ok(Err(e)) => { if let Some(ref fallback) = self.fallback { // on failure use the fall back system configured DNS resolver if !e.is_no_records_found() { @@ -194,7 +218,7 @@ impl HickoryDnsResolver { } } - fn new_resolver(&self) -> Result { + fn new_resolver(&self) -> Result { if self.dont_use_shared { new_resolver() } else { @@ -202,7 +226,7 @@ impl HickoryDnsResolver { } } - fn new_resolver_system(&self) -> Result { + fn new_resolver_system(&self) -> Result { if self.dont_use_shared || SHARED_RESOLVER.fallback.is_none() { new_resolver_system() } else { @@ -216,7 +240,7 @@ impl HickoryDnsResolver { } /// Enable fallback to the system default resolver if the primary (DoX) resolver fails - pub fn enable_system_fallback(&mut self) -> Result<(), HickoryDnsError> { + pub fn enable_system_fallback(&mut self) -> Result<(), ResolveError> { self.fallback = Some(Default::default()); let _ = self .fallback @@ -235,18 +259,34 @@ impl HickoryDnsResolver { /// Create a new resolver with a custom DoT based configuration. The options are overridden to look /// up for both IPv4 and IPv6 addresses to work with "happy eyeballs" algorithm. -fn new_resolver() -> Result { +/// +/// Timeout Defaults to 5 seconds +/// Number of retries after lookup failure before giving up Defaults to 2 +/// +/// Caches successfully resolved addresses for 30 minutes to prevent continual use of remote lookup. +/// This resolver is intended to be used for OUR API endpoints that do not rapidly rotate IPs. +fn new_resolver() -> Result { + info!("building new configured resolver"); + let mut name_servers = NameServerConfigGroup::quad9_tls(); name_servers.merge(NameServerConfigGroup::quad9_https()); name_servers.merge(NameServerConfigGroup::cloudflare_tls()); name_servers.merge(NameServerConfigGroup::cloudflare_https()); + configure_and_build_resolver(name_servers) +} + +fn configure_and_build_resolver( + name_servers: NameServerConfigGroup, +) -> Result { let config = ResolverConfig::from_parts(None, Vec::new(), name_servers); let mut resolver_builder = TokioResolver::builder_with_config(config, TokioConnectionProvider::default()); resolver_builder.options_mut().ip_strategy = LookupIpStrategy::Ipv4AndIpv6; resolver_builder.options_mut().server_ordering_strategy = ServerOrderingStrategy::RoundRobin; + // Cache successful responses for queries received by this resolver for 30 min minimum. + resolver_builder.options_mut().positive_min_ttl = Some(Duration::from_secs(1800)); Ok(resolver_builder.build()) } @@ -254,7 +294,7 @@ fn new_resolver() -> Result { /// Create a new resolver with the default configuration, which reads from the system DNS config /// (i.e. `/etc/resolve.conf` in unix). The options are overridden to look up for both IPv4 and IPv6 /// addresses to work with "happy eyeballs" algorithm. -fn new_resolver_system() -> Result { +fn new_resolver_system() -> Result { let mut resolver_builder = TokioResolver::builder_tokio()?; resolver_builder.options_mut().ip_strategy = LookupIpStrategy::Ipv4AndIpv6; @@ -266,8 +306,9 @@ mod test { use super::*; #[tokio::test] - async fn reqwest_hickory_doh() { - let resolver = HickoryDnsResolver::default(); + async fn reqwest_with_custom_dns() { + let var_name = HickoryDnsResolver::default(); + let resolver = var_name; let client = reqwest::ClientBuilder::new() .dns_resolver(resolver.into()) .build() @@ -286,7 +327,7 @@ mod test { } #[tokio::test] - async fn dns_lookup() -> Result<(), HickoryDnsError> { + async fn dns_lookup() -> Result<(), ResolveError> { let resolver = HickoryDnsResolver::default(); let domain = "ifconfig.me"; @@ -297,3 +338,66 @@ mod test { Ok(()) } } + +#[cfg(test)] +mod failure_test { + use super::*; + use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + + /// IP addresses guaranteed to fail attempts to resolve + /// + /// Addresses drawn from blocks set off by RFC5737 (ipv4) and RFC3849 (ipv6) + const GUARANTEED_BROKEN_IPS_1: &[IpAddr] = &[ + IpAddr::V4(Ipv4Addr::new(192, 0, 2, 1)), + IpAddr::V4(Ipv4Addr::new(198, 51, 100, 1)), + IpAddr::V6(Ipv6Addr::new(0x2001, 0x0db8, 0, 0, 0, 0, 0, 0x1111)), + IpAddr::V6(Ipv6Addr::new(0x2001, 0x0db8, 0, 0, 0, 0, 0, 0x1001)), + ]; + + // Create a resolver that behaves the same as the custom configured router, except for the fact + // that it is guaranteed to fail. + fn build_broken_resolver() -> Result { + info!("building new faulty resolver"); + + let mut broken_ns_group = NameServerConfigGroup::from_ips_tls( + GUARANTEED_BROKEN_IPS_1, + 853, + "cloudflare-dns.com".to_string(), + true, + ); + let broken_ns_https = NameServerConfigGroup::from_ips_https( + GUARANTEED_BROKEN_IPS_1, + 443, + "cloudflare-dns.com".to_string(), + true, + ); + broken_ns_group.merge(broken_ns_https); + + configure_and_build_resolver(broken_ns_group) + } + + #[tokio::test] + async fn dns_lookup_failures() -> Result<(), ResolveError> { + let time_start = std::time::Instant::now(); + + let r = OnceCell::new(); + r.set(build_broken_resolver().expect("failed to build resolver")) + .expect("broken resolver init error"); + + // create a new resolver that won't mess with the shared resolver used by other tests + let resolver = HickoryDnsResolver { + dont_use_shared: true, + state: Arc::new(r), + ..Default::default() + }; + build_broken_resolver()?; + let domain = "ifconfig.me"; + let result = resolver.resolve_str(domain).await; + assert!(result.is_err_and(|e| matches!(e, ResolveError::Timeout))); + + let duration = time_start.elapsed(); + assert!(duration < resolver.overall_dns_timeout + Duration::from_secs(1)); + + Ok(()) + } +} diff --git a/common/http-api-client/src/lib.rs b/common/http-api-client/src/lib.rs index 220d151ba7..f2c4e09742 100644 --- a/common/http-api-client/src/lib.rs +++ b/common/http-api-client/src/lib.rs @@ -179,7 +179,7 @@ mod dns; mod path; #[cfg(not(target_arch = "wasm32"))] -pub use dns::{HickoryDnsError, HickoryDnsResolver}; +pub use dns::{HickoryDnsResolver, ResolveError}; // helper for generating user agent based on binary information #[cfg(not(target_arch = "wasm32"))] From 806f807f02a3f0fa00920b6804fcbb5737288a7d Mon Sep 17 00:00:00 2001 From: Jack Wampler Date: Thu, 6 Nov 2025 16:46:39 -0700 Subject: [PATCH 05/26] Implement Static DNS fallback (#6178) --- common/http-api-client/Cargo.toml | 1 - common/http-api-client/src/dns.rs | 275 ++++++++++++------ common/http-api-client/src/dns/constants.rs | 73 +++++ .../src/dns/static_resolver.rs | 89 ++++++ 4 files changed, 356 insertions(+), 82 deletions(-) create mode 100644 common/http-api-client/src/dns/constants.rs create mode 100644 common/http-api-client/src/dns/static_resolver.rs diff --git a/common/http-api-client/Cargo.toml b/common/http-api-client/Cargo.toml index 411f9ad846..e748e37888 100644 --- a/common/http-api-client/Cargo.toml +++ b/common/http-api-client/Cargo.toml @@ -33,7 +33,6 @@ tracing = { workspace = true } itertools = { workspace = true } inventory = { workspace = true } tokio = { workspace = true, features = ["rt", "macros", "time"] } - # used for decoding text responses (they were already implicitly included) bytes = { workspace = true } encoding_rs = { workspace = true } diff --git a/common/http-api-client/src/dns.rs b/common/http-api-client/src/dns.rs index 016f4383f7..158a867f4e 100644 --- a/common/http-api-client/src/dns.rs +++ b/common/http-api-client/src/dns.rs @@ -30,7 +30,9 @@ use crate::ClientBuilder; use std::{ - net::SocketAddr, + collections::HashMap, + net::{IpAddr, SocketAddr}, + str::FromStr, sync::{Arc, LazyLock}, time::Duration, }; @@ -38,12 +40,16 @@ use std::{ use hickory_resolver::{ TokioResolver, config::{LookupIpStrategy, NameServerConfigGroup, ResolverConfig, ServerOrderingStrategy}, - lookup_ip::{LookupIp, LookupIpIntoIter}, + lookup_ip::LookupIpIntoIter, name_server::TokioConnectionProvider, }; use once_cell::sync::OnceCell; use reqwest::dns::{Addrs, Name, Resolve, Resolving}; -use tracing::{info, warn}; +use tracing::*; + +mod constants; +mod static_resolver; +pub use static_resolver::*; impl ClientBuilder { /// Override the DNS resolver implementation used by the underlying http client. @@ -60,10 +66,6 @@ impl ClientBuilder { } } -struct SocketAddrs { - iter: LookupIpIntoIter, -} - // n.b. static items do not call [`Drop`] on program termination, so this won't be deallocated. // this is fine, as the OS can deallocate the terminated program faster than we can free memory // but tools like valgrind might report "memory leaks" as it isn't obvious this is intentional. @@ -76,10 +78,14 @@ static SHARED_RESOLVER: LazyLock = LazyLock::new(|| { #[allow(missing_docs)] /// Error occurring while resolving a hostname into an IP address. pub enum ResolveError { + #[error("invalid name: {0}")] + InvalidNameError(String), #[error("hickory-dns resolver error: {0}")] - HickoryDnsError(#[from] hickory_resolver::ResolveError), + ResolveError(#[from] hickory_resolver::ResolveError), #[error("high level lookup timed out")] Timeout, + #[error("hostname not found in static lookup table")] + StaticLookupMiss, } /// Wrapper around an `AsyncResolver`, which implements the `Resolve` trait. @@ -97,6 +103,7 @@ pub struct HickoryDnsResolver { // construction of the resolver. state: Arc>, fallback: Option>>, + static_base: Option>>, dont_use_shared: bool, /// Overall timeout for dns lookup associated with any individual host resolution. For example, /// use of retries, server_ordering_strategy, etc. ends absolutely if this timeout is reached. @@ -108,6 +115,7 @@ impl Default for HickoryDnsResolver { Self { state: Default::default(), fallback: Default::default(), + static_base: Default::default(), dont_use_shared: Default::default(), overall_dns_timeout: Duration::from_secs(10), } @@ -118,60 +126,86 @@ impl Resolve for HickoryDnsResolver { fn resolve(&self, name: Name) -> Resolving { let resolver = self.state.clone(); let maybe_fallback = self.fallback.clone(); + let maybe_static = self.static_base.clone(); let independent = self.dont_use_shared; let overall_dns_timeout = self.overall_dns_timeout; Box::pin(async move { - let resolver = resolver.get_or_try_init(|| { - // using a closure here is slightly gross, but this makes sure that if the - // lazy-init returns an error it can be handled by the client - if independent { - new_resolver() - } else { - Ok(SHARED_RESOLVER.state.get_or_try_init(new_resolver)?.clone()) - } - })?; + resolve( + name, + resolver, + maybe_fallback, + maybe_static, + independent, + overall_dns_timeout, + ) + .await + .map_err(|e| Box::new(e) as Box) + }) + } +} - let resolve_fut = - tokio::time::timeout(overall_dns_timeout, resolver.lookup_ip(name.as_str())); - - // try the primary DNS resolver that we set up (DoH or DoT or whatever) - let lookup = match resolve_fut.await { - Ok(Ok(res)) => res, - Err(_) => return Err(ResolveError::Timeout.into()), - Ok(Err(e)) => { - if let Some(ref fallback) = maybe_fallback { - // on failure use the fall back system configured DNS resolver - if !e.is_no_records_found() { - warn!("primary DNS failed w/ error {e}: using system fallback"); - } - let resolver = fallback.get_or_try_init(|| { - // using a closure here is slightly gross, but this makes sure that if the - // lazy-init returns an error it can be handled by the client - if independent { - new_resolver_system() - } else { - Ok(SHARED_RESOLVER - .fallback - .as_ref() - .ok_or(e)? // if the shared resolver has no fallback return the original error - .get_or_try_init(new_resolver_system)? - .clone()) - } - })?; - - resolver.lookup_ip(name.as_str()).await? - } else { - return Err(e.into()); - } - } - }; +async fn resolve( + name: Name, + resolver: Arc>, + maybe_fallback: Option>>, + maybe_static: Option>>, + independent: bool, + overall_dns_timeout: Duration, +) -> Result { + let resolver = resolver.get_or_try_init(|| HickoryDnsResolver::new_resolver(independent))?; + // Attempt a lookup using the primary resolver + let resolve_fut = tokio::time::timeout(overall_dns_timeout, resolver.lookup_ip(name.as_str())); + let primary_err = match resolve_fut.await { + Err(_) => ResolveError::Timeout, + Ok(Ok(lookup)) => { let addrs: Addrs = Box::new(SocketAddrs { iter: lookup.into_iter(), }); - Ok(addrs) - }) + return Ok(addrs); + } + Ok(Err(e)) => { + // on failure use the fall back system configured DNS resolver + if !e.is_no_records_found() { + warn!("primary DNS failed w/ error: {e}"); + } + e.into() + } + }; + + // If the primary resolver encountered an error, attempt a lookup using the fallback + // resolver if one is configured. + if let Some(ref fallback) = maybe_fallback { + let resolver = + fallback.get_or_try_init(|| HickoryDnsResolver::new_resolver_system(independent))?; + + let resolve_fut = + tokio::time::timeout(overall_dns_timeout, resolver.lookup_ip(name.as_str())); + if let Ok(Ok(lookup)) = resolve_fut.await { + let addrs: Addrs = Box::new(SocketAddrs { + iter: lookup.into_iter(), + }); + return Ok(addrs); + } } + + // If no record has been found and a static map of fallback addresses is configured + // check the table for our entry + if let Some(ref static_resolver) = maybe_static { + debug!("checking static"); + let resolver = + static_resolver.get_or_init(|| HickoryDnsResolver::new_static_fallback(independent)); + + if let Ok(addrs) = resolver.resolve(name).await { + return Ok(addrs); + } + } + + Err(primary_err) +} + +struct SocketAddrs { + iter: LookupIpIntoIter, } impl Iterator for SocketAddrs { @@ -184,30 +218,18 @@ impl Iterator for SocketAddrs { impl HickoryDnsResolver { /// Attempt to resolve a domain name to a set of ['IpAddr']s - pub async fn resolve_str(&self, name: &str) -> Result { - let resolver = self.state.get_or_try_init(|| self.new_resolver())?; - let resolve_fut = tokio::time::timeout(self.overall_dns_timeout, resolver.lookup_ip(name)); - - // try the primary DNS resolver that we set up (DoH or DoT or whatever) - let lookup = match resolve_fut.await { - Ok(Ok(res)) => res, - Err(_) => return Err(ResolveError::Timeout), - Ok(Err(e)) => { - if let Some(ref fallback) = self.fallback { - // on failure use the fall back system configured DNS resolver - if !e.is_no_records_found() { - warn!("primary DNS failed w/ error {e}: using system fallback"); - } - - let resolver = fallback.get_or_try_init(|| self.new_resolver_system())?; - resolver.lookup_ip(name).await? - } else { - return Err(e.into()); - } - } - }; - - Ok(lookup) + pub async fn resolve_str(&self, name: &str) -> Result { + let n = + Name::from_str(name).map_err(|_| ResolveError::InvalidNameError(name.to_string()))?; + resolve( + n, + self.state.clone(), + self.fallback.clone(), + self.static_base.clone(), + self.dont_use_shared, + self.overall_dns_timeout, + ) + .await } /// Create a (lazy-initialized) resolver that is not shared across threads. @@ -218,16 +240,20 @@ impl HickoryDnsResolver { } } - fn new_resolver(&self) -> Result { - if self.dont_use_shared { + fn new_resolver(dont_use_shared: bool) -> Result { + // using a closure here is slightly gross, but this makes sure that if the + // lazy-init returns an error it can be handled by the client + if dont_use_shared { new_resolver() } else { Ok(SHARED_RESOLVER.state.get_or_try_init(new_resolver)?.clone()) } } - fn new_resolver_system(&self) -> Result { - if self.dont_use_shared || SHARED_RESOLVER.fallback.is_none() { + fn new_resolver_system(dont_use_shared: bool) -> Result { + // using a closure here is slightly gross, but this makes sure that if the + // lazy-init returns an error it can be handled by the client + if dont_use_shared || SHARED_RESOLVER.fallback.is_none() { new_resolver_system() } else { Ok(SHARED_RESOLVER @@ -239,6 +265,16 @@ impl HickoryDnsResolver { } } + fn new_static_fallback(dont_use_shared: bool) -> StaticResolver { + if !dont_use_shared && let Some(ref shared_resolver) = SHARED_RESOLVER.static_base { + shared_resolver + .get_or_init(new_default_static_fallback) + .clone() + } else { + new_default_static_fallback() + } + } + /// Enable fallback to the system default resolver if the primary (DoX) resolver fails pub fn enable_system_fallback(&mut self) -> Result<(), ResolveError> { self.fallback = Some(Default::default()); @@ -255,6 +291,20 @@ impl HickoryDnsResolver { pub fn disable_system_fallback(&mut self) { self.fallback = None; } + + /// Get the current map of hostname to address in use by the fallback static lookup if one + /// exists. + pub fn get_static_fallbacks(&self) -> Option>> { + Some(self.static_base.as_ref()?.get()?.get_addrs()) + } + + /// Set (or overwrite) the map of addresses used in the fallback static hostname lookup + pub fn set_static_fallbacks(&mut self, addrs: HashMap>) { + let cell = OnceCell::new(); + cell.set(StaticResolver::new(addrs)) + .expect("infallible assign"); + self.static_base = Some(Arc::new(cell)); + } } /// Create a new resolver with a custom DoT based configuration. The options are overridden to look @@ -301,9 +351,15 @@ fn new_resolver_system() -> Result { Ok(resolver_builder.build()) } +fn new_default_static_fallback() -> StaticResolver { + StaticResolver::new(constants::default_static_addrs()) +} + #[cfg(test)] mod test { use super::*; + use itertools::Itertools; + use std::collections::HashMap; #[tokio::test] async fn reqwest_with_custom_dns() { @@ -337,6 +393,31 @@ mod test { Ok(()) } + + #[tokio::test] + async fn static_resolver_as_fallback() -> Result<(), ResolveError> { + let example_domain = "non-existent.nymvpn.com"; + let mut resolver = HickoryDnsResolver { + ..Default::default() + }; + + let result = resolver.resolve_str(example_domain).await; + assert!(result.is_err()); // should be NXDomain + + resolver.static_base = Some(Default::default()); + + let mut addr_map = HashMap::new(); + let example_ip4: IpAddr = "10.10.10.10".parse().unwrap(); + let example_ip6: IpAddr = "dead::beef".parse().unwrap(); + addr_map.insert(example_domain.to_string(), vec![example_ip4, example_ip6]); + + resolver.set_static_fallbacks(addr_map); + + let mut addrs = resolver.resolve_str(example_domain).await?; + assert!(addrs.contains(&SocketAddr::new(example_ip4, 0))); + assert!(addrs.contains(&SocketAddr::new(example_ip6, 0))); + Ok(()) + } } #[cfg(test)] @@ -388,6 +469,7 @@ mod failure_test { let resolver = HickoryDnsResolver { dont_use_shared: true, state: Arc::new(r), + overall_dns_timeout: Duration::from_secs(5), ..Default::default() }; build_broken_resolver()?; @@ -400,4 +482,35 @@ mod failure_test { Ok(()) } + + #[tokio::test] + async fn fallback_to_static() -> Result<(), ResolveError> { + let r = OnceCell::new(); + r.set(build_broken_resolver().expect("failed to build resolver")) + .expect("broken resolver init error"); + + // create a new resolver that won't mess with the shared resolver used by other tests + let resolver = HickoryDnsResolver { + dont_use_shared: true, + state: Arc::new(r), + static_base: Some(Default::default()), + overall_dns_timeout: Duration::from_secs(5), + ..Default::default() + }; + build_broken_resolver()?; + + // successful lookup using fallback to static resolver + let domain = "nymvpn.com"; + let _ = resolver + .resolve_str(domain) + .await + .expect("failed to resolve address in static lookup"); + + // unsuccessful lookup - primary times out, and not in + let domain = "non-existent.nymtech.net"; + let result = resolver.resolve_str(domain).await; + assert!(result.is_err_and(|e| matches!(e, ResolveError::Timeout))); + + Ok(()) + } } diff --git a/common/http-api-client/src/dns/constants.rs b/common/http-api-client/src/dns/constants.rs new file mode 100644 index 0000000000..0672188f9b --- /dev/null +++ b/common/http-api-client/src/dns/constants.rs @@ -0,0 +1,73 @@ +#![allow(missing_docs)] + +use std::collections::HashMap; +use std::net::{IpAddr, Ipv4Addr}; + +pub const NYM_API_DOMAIN: &str = "validator.nymtech.net"; +pub const NYM_API_IPS: &[IpAddr] = &[IpAddr::V4(Ipv4Addr::new(212, 71, 233, 232))]; + +pub const NYM_VPN_API_DOMAIN: &str = "nymvpn.com"; +pub const NYM_VPN_API_IPS: &[IpAddr] = &[IpAddr::V4(Ipv4Addr::new(76, 76, 21, 21))]; + +pub const NYM_FRONTDOOR_VERCEL_DOMAIN: &str = "nym-frontdoor.vercel.app"; +pub const NYM_FRONTDOOR_VERCEL_IPS: &[IpAddr] = &[ + IpAddr::V4(Ipv4Addr::new(64, 29, 17, 195)), + IpAddr::V4(Ipv4Addr::new(216, 198, 79, 195)), +]; + +pub const NYM_FRONTDOOR_FASTLY_DOMAIN: &str = "nym-frontdoor.global.ssl.fastly.net"; +pub const NYM_FRONTDOOR_FASTLY_IPS: &[IpAddr] = &[ + IpAddr::V4(Ipv4Addr::new(151, 101, 193, 194)), + IpAddr::V4(Ipv4Addr::new(151, 101, 129, 194)), + IpAddr::V4(Ipv4Addr::new(151, 101, 1, 194)), + IpAddr::V4(Ipv4Addr::new(151, 101, 65, 194)), +]; + +pub const NYMVPN_FRONTDOOR_FASTLY_DOMAIN: &str = "nymvpn-frontdoor.global.ssl.fastly.net"; +pub const NYMVPN_FRONTDOOR_FASTLY_IPS: &[IpAddr] = &[ + IpAddr::V4(Ipv4Addr::new(151, 101, 193, 194)), + IpAddr::V4(Ipv4Addr::new(151, 101, 129, 194)), + IpAddr::V4(Ipv4Addr::new(151, 101, 1, 194)), + IpAddr::V4(Ipv4Addr::new(151, 101, 65, 194)), +]; + +pub const VERCEL_APP_DOMAIN: &str = "vercel.app"; +pub const VERCEL_APP_IPS: &[IpAddr] = &[ + IpAddr::V4(Ipv4Addr::new(64, 29, 17, 195)), + IpAddr::V4(Ipv4Addr::new(216, 198, 79, 195)), +]; + +pub const VERCEL_COM_DOMAIN: &str = "vercel.com"; +pub const VERCEL_COM_IPS: &[IpAddr] = &[ + IpAddr::V4(Ipv4Addr::new(198, 169, 2, 129)), + IpAddr::V4(Ipv4Addr::new(198, 169, 1, 193)), +]; + +pub const NYM_COM_DOMAIN: &str = "nym.com"; +pub const NYM_COM_IPS: &[IpAddr] = &[IpAddr::V4(Ipv4Addr::new(76, 76, 21, 22))]; + +pub const NYM_STATS_API_DOMAIN: &str = "nym-statistics-api.nymtech.cc"; +pub const NYM_STATS_API_IPS: &[IpAddr] = &[IpAddr::V4(Ipv4Addr::new(91, 92, 153, 96))]; + +pub fn default_static_addrs() -> HashMap> { + let mut m = HashMap::new(); + m.insert(NYM_API_DOMAIN.to_string(), NYM_API_IPS.to_vec()); + m.insert(NYM_VPN_API_DOMAIN.to_string(), NYM_VPN_API_IPS.to_vec()); + m.insert( + NYM_FRONTDOOR_VERCEL_DOMAIN.to_string(), + NYM_FRONTDOOR_VERCEL_IPS.to_vec(), + ); + m.insert( + NYM_FRONTDOOR_FASTLY_DOMAIN.to_string(), + NYM_FRONTDOOR_FASTLY_IPS.to_vec(), + ); + m.insert( + NYMVPN_FRONTDOOR_FASTLY_DOMAIN.to_string(), + NYMVPN_FRONTDOOR_FASTLY_IPS.to_vec(), + ); + m.insert(VERCEL_APP_DOMAIN.to_string(), VERCEL_APP_IPS.to_vec()); + m.insert(VERCEL_COM_DOMAIN.to_string(), VERCEL_COM_IPS.to_vec()); + m.insert(NYM_COM_DOMAIN.to_string(), NYM_COM_IPS.to_vec()); + m.insert(NYM_STATS_API_DOMAIN.to_string(), NYM_STATS_API_IPS.to_vec()); + m +} diff --git a/common/http-api-client/src/dns/static_resolver.rs b/common/http-api-client/src/dns/static_resolver.rs new file mode 100644 index 0000000000..030ae4419d --- /dev/null +++ b/common/http-api-client/src/dns/static_resolver.rs @@ -0,0 +1,89 @@ +use crate::dns::ResolveError; + +use std::{ + collections::HashMap, + net::{IpAddr, SocketAddr}, + sync::{Arc, Mutex}, +}; + +use reqwest::dns::{Addrs, Name, Resolve, Resolving}; +use tracing::*; + +#[derive(Debug, Default, Clone)] +pub struct StaticResolver { + static_addr_map: Arc>>>, +} + +impl StaticResolver { + pub fn new(static_entries: HashMap>) -> StaticResolver { + debug!("building static resolver"); + Self { + static_addr_map: Arc::new(Mutex::new(static_entries)), + } + } + + pub fn get_addrs(&self) -> HashMap> { + self.static_addr_map.lock().unwrap().clone() + } +} + +impl Resolve for StaticResolver { + fn resolve(&self, name: Name) -> Resolving { + debug!("looking up {name:?} in static resolver"); + let addr_map = self.static_addr_map.clone(); + Box::pin(async move { + let addr_map = addr_map.lock().unwrap(); + let lookup = match addr_map.get(name.as_str()) { + None => return Err(ResolveError::StaticLookupMiss.into()), + Some(addrs) => addrs, + }; + let addrs: Addrs = Box::new( + lookup + .clone() + .into_iter() + .map(|ip_addr| SocketAddr::new(ip_addr, 0)), + ); + + Ok(addrs) + }) + } +} + +#[cfg(test)] +mod test { + use itertools::Itertools; + + use super::*; + use std::error::Error as StdError; + use std::str::FromStr; + + #[tokio::test] + async fn lookup_using_static_resolver() -> Result<(), Box> { + let example_domain = String::from("static.nymvpn.com"); + + // lookup for domain for which there is no entry + let resolver = StaticResolver::new(HashMap::new()); + + let url = reqwest::dns::Name::from_str(&example_domain).unwrap(); + let result = resolver.resolve(url).await; + assert!(result.is_err()); + match result { + Ok(_) => panic!("lookup with empty map should fail"), + Err(e) => assert_eq!(e.to_string(), ResolveError::StaticLookupMiss.to_string()), + } + + // Successful lookup + let mut addr_map = HashMap::new(); + let example_ip4: IpAddr = "10.10.10.10".parse().unwrap(); + let example_ip6: IpAddr = "dead::beef".parse().unwrap(); + addr_map.insert(example_domain.clone(), vec![example_ip4, example_ip6]); + + let url = reqwest::dns::Name::from_str(&example_domain).unwrap(); + let resolver = StaticResolver::new(addr_map); + let mut addrs = resolver.resolve(url).await?; + assert!(addrs.contains(&SocketAddr::new(example_ip4, 0))); + assert!(addrs.contains(&SocketAddr::new(example_ip6, 0))); + + Ok(()) + } +} From 2f752a6c421ea52b729830c9e7e368652fad9441 Mon Sep 17 00:00:00 2001 From: jmwample Date: Thu, 6 Nov 2025 18:37:50 -0700 Subject: [PATCH 06/26] fix things related to interface changes --- common/client-core/src/init/websockets.rs | 1 - .../gateway-client/src/client/websockets.rs | 1 - common/http-api-client/src/dns.rs | 10 +++++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/common/client-core/src/init/websockets.rs b/common/client-core/src/init/websockets.rs index 6d09a325b0..ba407623a6 100644 --- a/common/client-core/src/init/websockets.rs +++ b/common/client-core/src/init/websockets.rs @@ -30,7 +30,6 @@ pub(crate) async fn connect_async( resolver .resolve_str(domain) .await? - .into_iter() .map(|a| SocketAddr::new(a, port)) .collect() } diff --git a/common/client-libs/gateway-client/src/client/websockets.rs b/common/client-libs/gateway-client/src/client/websockets.rs index 9b04c9e028..2336549d5e 100644 --- a/common/client-libs/gateway-client/src/client/websockets.rs +++ b/common/client-libs/gateway-client/src/client/websockets.rs @@ -39,7 +39,6 @@ pub(crate) async fn connect_async( resolver .resolve_str(domain) .await? - .into_iter() .map(|a| SocketAddr::new(a, port)) .collect() } diff --git a/common/http-api-client/src/dns.rs b/common/http-api-client/src/dns.rs index 158a867f4e..216fef032b 100644 --- a/common/http-api-client/src/dns.rs +++ b/common/http-api-client/src/dns.rs @@ -218,7 +218,10 @@ impl Iterator for SocketAddrs { impl HickoryDnsResolver { /// Attempt to resolve a domain name to a set of ['IpAddr']s - pub async fn resolve_str(&self, name: &str) -> Result { + pub async fn resolve_str( + &self, + name: &str, + ) -> Result + use<>, ResolveError> { let n = Name::from_str(name).map_err(|_| ResolveError::InvalidNameError(name.to_string()))?; resolve( @@ -230,6 +233,7 @@ impl HickoryDnsResolver { self.overall_dns_timeout, ) .await + .map(|addrs| addrs.map(|socket_addr| socket_addr.ip())) } /// Create a (lazy-initialized) resolver that is not shared across threads. @@ -414,8 +418,8 @@ mod test { resolver.set_static_fallbacks(addr_map); let mut addrs = resolver.resolve_str(example_domain).await?; - assert!(addrs.contains(&SocketAddr::new(example_ip4, 0))); - assert!(addrs.contains(&SocketAddr::new(example_ip6, 0))); + assert!(addrs.contains(&example_ip4)); + assert!(addrs.contains(&example_ip6)); Ok(()) } } From 3e4216042662493959ce66258c42014a24cda9d5 Mon Sep 17 00:00:00 2001 From: import this <97586125+serinko@users.noreply.github.com> Date: Fri, 7 Nov 2025 15:41:59 +0000 Subject: [PATCH 07/26] [Docs/operators]: Performance measurement pages (#6177) * initialise wg perf docs * fix paths to absolute * fix paths to absolute * vpn coloring guide * improve quic script dwl way * refactor operators menu structure * create probe-details page * wg syntax change * modified time * fix link paths * remove redundancy * fix comments & bump stats --- .../components/operators/snippets/icmp.js | 2 + .../docs/components/operators/snippets/ipr.js | 3 + .../operators/snippets/node-perf-mixnet.mdx | 93 ++++++++ .../operators/snippets/node-perf-wg.mdx | 223 ++++++++++++++++++ .../quic-bridge-deployment-script-setup.mdx | 2 +- .../outputs/api-scraping-outputs/time-now.md | 2 +- documentation/docs/components/severity.jsx | 12 + documentation/docs/pages/operators/_meta.json | 1 + .../docs/pages/operators/changelog.mdx | 2 +- .../docs/pages/operators/introduction.mdx | 3 + .../docs/pages/operators/nodes/_meta.json | 3 +- .../nodes/maintenance/manual-upgrade.mdx | 2 +- .../operators/nodes/nym-node/bonding.mdx | 2 +- .../pages/operators/nodes/nym-node/setup.mdx | 2 +- .../{nodes => }/performance-and-testing.mdx | 39 ++- .../performance-and-testing/_meta.json | 3 +- .../gateway-probe-details.mdx | 139 +++++++++++ .../performance-and-testing/gateway-probe.mdx | 0 .../prometheus-grafana.mdx | 0 .../prometheus-grafana/_meta.json | 0 .../prometheus-grafana/explorenym-scripts.mdx | 0 .../docs/pages/operators/tokenomics.mdx | 2 +- .../operators/tokenomics/mixnet-rewards.mdx | 108 +-------- .../nym-vpn-sceenshots/nym-vpn-score1.png | Bin 0 -> 12553 bytes .../nym-vpn-sceenshots/nym-vpn-score2.png | Bin 0 -> 3199 bytes .../operators/performance/angry-users.png | Bin 0 -> 244543 bytes .../bandwith-probe-user-overlaps.png | Bin 0 -> 146198 bytes .../operators/performance/burst-charges.png | Bin 0 -> 194950 bytes .../performance/capped-bandwidth.png | Bin 0 -> 62687 bytes .../operators/performance/furious-users.png | Bin 0 -> 240957 bytes .../operators/performance/leaky-bucket.png | Bin 0 -> 103777 bytes .../performance/netflix-fits-bandwidth.png | Bin 0 -> 163062 bytes .../operators/performance/netflix-not-fit.png | Bin 0 -> 148511 bytes .../performance/perceived-gw-dwl.png | Bin 0 -> 162359 bytes .../performance/popular-gw-probe.png | Bin 0 -> 183948 bytes .../operators/performance/sad-users.png | Bin 0 -> 241501 bytes .../performance/two-streams-space.png | Bin 0 -> 157019 bytes .../operators/performance/vps-quota.png | Bin 0 -> 283709 bytes 38 files changed, 527 insertions(+), 116 deletions(-) create mode 100644 documentation/docs/components/operators/snippets/icmp.js create mode 100644 documentation/docs/components/operators/snippets/ipr.js create mode 100644 documentation/docs/components/operators/snippets/node-perf-mixnet.mdx create mode 100644 documentation/docs/components/operators/snippets/node-perf-wg.mdx create mode 100644 documentation/docs/components/severity.jsx rename documentation/docs/pages/operators/{nodes => }/performance-and-testing.mdx (55%) rename documentation/docs/pages/operators/{nodes => }/performance-and-testing/_meta.json (60%) create mode 100644 documentation/docs/pages/operators/performance-and-testing/gateway-probe-details.mdx rename documentation/docs/pages/operators/{nodes => }/performance-and-testing/gateway-probe.mdx (100%) rename documentation/docs/pages/operators/{nodes => }/performance-and-testing/prometheus-grafana.mdx (100%) rename documentation/docs/pages/operators/{nodes => }/performance-and-testing/prometheus-grafana/_meta.json (100%) rename documentation/docs/pages/operators/{nodes => }/performance-and-testing/prometheus-grafana/explorenym-scripts.mdx (100%) create mode 100644 documentation/docs/public/images/operators/nym-vpn-sceenshots/nym-vpn-score1.png create mode 100644 documentation/docs/public/images/operators/nym-vpn-sceenshots/nym-vpn-score2.png create mode 100644 documentation/docs/public/images/operators/performance/angry-users.png create mode 100644 documentation/docs/public/images/operators/performance/bandwith-probe-user-overlaps.png create mode 100644 documentation/docs/public/images/operators/performance/burst-charges.png create mode 100644 documentation/docs/public/images/operators/performance/capped-bandwidth.png create mode 100644 documentation/docs/public/images/operators/performance/furious-users.png create mode 100644 documentation/docs/public/images/operators/performance/leaky-bucket.png create mode 100644 documentation/docs/public/images/operators/performance/netflix-fits-bandwidth.png create mode 100644 documentation/docs/public/images/operators/performance/netflix-not-fit.png create mode 100644 documentation/docs/public/images/operators/performance/perceived-gw-dwl.png create mode 100644 documentation/docs/public/images/operators/performance/popular-gw-probe.png create mode 100644 documentation/docs/public/images/operators/performance/sad-users.png create mode 100644 documentation/docs/public/images/operators/performance/two-streams-space.png create mode 100644 documentation/docs/public/images/operators/performance/vps-quota.png diff --git a/documentation/docs/components/operators/snippets/icmp.js b/documentation/docs/components/operators/snippets/icmp.js new file mode 100644 index 0000000000..e91ede7f12 --- /dev/null +++ b/documentation/docs/components/operators/snippets/icmp.js @@ -0,0 +1,2 @@ +export const ICMP = + "ICMP (Internet Control Message Protocol) is a network layer protocol used for sending error messages and operational information regarding network conditions. It is commonly utilized for diagnostic purposes, such as sending ping requests to check the reachability of a host. ICMP helps in managing and controlling network traffic by providing feedback about issues in the communication environment."; diff --git a/documentation/docs/components/operators/snippets/ipr.js b/documentation/docs/components/operators/snippets/ipr.js new file mode 100644 index 0000000000..51f39e1c94 --- /dev/null +++ b/documentation/docs/components/operators/snippets/ipr.js @@ -0,0 +1,3 @@ +export const IPR = + "IPR (IP Packet Router) is a component that routes packets to the Internet on behalf of clients within the Nym network. It uses multiplexed streams, NAT, and SURBs for anonymity."; + diff --git a/documentation/docs/components/operators/snippets/node-perf-mixnet.mdx b/documentation/docs/components/operators/snippets/node-perf-mixnet.mdx new file mode 100644 index 0000000000..bb7753ccd9 --- /dev/null +++ b/documentation/docs/components/operators/snippets/node-perf-mixnet.mdx @@ -0,0 +1,93 @@ +import { Callout } from 'nextra/components'; + + +## Mixnet: Node Performance Calculation + +Performance is a value between `0` and `1`. The final performance number is a result of multiplying [config score](#config-score-calculation) and [routing score](#routing-score-calculation). + + +> **node_performance = config_score \* routing_score** + + +Performance value is an average of last 24h. + + +All parameters regarding performance score can be browsed or pull live from: + +`https://validator.nymtech.net/api/v1/nym-nodes/annotation/` + +In case you don't know your nodes `NODE_ID`, it's easy to find as long as your node is bonded. Visit [validator.nymtech.net/api/v1/nym-nodes/bonded](https://validator.nymtech.net/api/v1/nym-nodes/bonded) and search your node using `identity_key` or bonding Nyx account address (denoted as `owner`). + + +### Config Score Calculation + +Config score is in place to ensure that the node configuration is done properly so the node is eligible for taking part in Nym network. The API looks into these paramteres: + +1. If the node binary is `nym-node` (not legacy `nym-mixnode` or `nym-gateway`): `1` if `True`, `0` if `False` +2. If [Terms & Conditions](/operators/nodes/nym-node/setup.mdx#terms--conditions) are accepted: `1` if `True`, `0` if `False` +3. If the nodes self described endpoint is available: `1` if `True`, `0` if `False` +4. Version of `nym-node` binary: decreasing weight for outdated versions, as [explained below](#versions-behind-calculation) + +**The `config_score` calculation formula:** + + +> **config_score = is_tc_accepted \* is_nym-node_binary \* self_described_api_available \* ( 0.995 ^ ( ( X * versions_behind) ^ 1.65 ) )** + + +First three points have binary values of either `0` or `1`, with a following logic: + +| **Run `nym-node` binary** | **T&C's accepted** | **Self described available** | **Value** | +| :-- | :-- | :-- | ---: | +| **True** | **True** | **True** | **1** | +| True | False | False | 0 | +| True | True | False | 0 | +| False | True | True | 0 | +| False | False | True | 0 | +| True | False | True | 0 | +| False | False | False | 0 | +| False | True | False | 0 | + +**Only if ALL conditions above are `True` the node can have any chance to be selected, as otherwise the probability will always be 0.** + + +Besides these values, the API also checks whether the node is bonded in Mixnet smart contract as a Nym Node or legacy node (Mixnode or Gateway). **Only nodes bonded as Nym Node in Mixnet smart contract can be selected to the Rewrded set. Thus, if you haven't migrated your node yet, please [follow these steps](/nodes/nym-node/bonding#migrate-to-nym-node-in-mixnet-smart-contract)!** + + +#### Versions Behind Calculation + +From release `2024.14-crunch` (`nym-node v1.2.0`), the `config_score` parameter takes into account also nodes version (denoted as `versions_behind`). The "current version" is the one marked as `Latest` in the [repository](https://github.com/nymtech/nym/releases/). The parameter `versions_behind` indicates the number of versions between the `Latest` version and the version run by the node, and it is factored into the config score with this formula: + + +> **0.995 ^ ( ( X * versions_behind ) ^ 1.65 )** +> +> where:
+> **X = 1; for patches**
+> **X = 10; for minor versions**
+> **X = 100; for major versions** +
+ +> The exact parameters are live accessible on [`/v1/status/config-score-details`](https://validator.nymtech.net/api/swagger/index.html#/Status/config_score_details). + +Our versioning convention is: `major_version . minor_version . patch` + +For example `nym-node` on version `1.2.0` is on 1st major version, 2nd minor and 0 patches. + +Note that the `X` multiplier heavily lowers the `config_score` when nodes are outdated with respect to more significant updates. See the the table and graph below: + +| **Version behind** | **Patches (X = 1)** | **Minor versions (X = 10)** | **Major versions (X = 100)** | +| :-- | --: | --: | --: | +| 0 (current version) | 1.0 | 1.0 | 1.0 | +| 1 | 0.995 | 0.7994 | 0.0000 | +| 2 | 0.9844 | 0.4953 | 0.0000 | +| 3 | 0.9698 | 0.2536 | 0.0000 | +| 4 | 0.9518 | 0.1102 | 0.0000 | +| 5 | 0.9311 | 0.0413 | 0.0000 | + + +![](/images/operators/tokenomics/reward_version_graph.png) + +As you can see above, the algorithm is designed to give maximum selection score (`1`) to the latest version, while non-upgraded nodes receive a lower score. The score decreases faster when the node has failed to make a major version upgrade, and slower when the node is behind only with minor updates. This scoring de-prioritizes the selection of outdated nodes, even if their saturation and performance are high. Nodes are selected probabilistically in each epoch (60 min), according to their scores, to be part of the Rewarded set. This scoring mechanism gives priority to the operators running up-to-date nodes, ensuring that the network is as updated as possible. + +### Routing Score Calculation + +Routing score is measured by Nym Network Monitor which sends thousands of packages through different routes every 15 minutes and measures how many were dropped on the way. Test result represents percentage of packets succesfully returned which are then converted into floats bettween `0` and `1`. diff --git a/documentation/docs/components/operators/snippets/node-perf-wg.mdx b/documentation/docs/components/operators/snippets/node-perf-wg.mdx new file mode 100644 index 0000000000..986658a01e --- /dev/null +++ b/documentation/docs/components/operators/snippets/node-perf-wg.mdx @@ -0,0 +1,223 @@ +import { Callout } from 'nextra/components'; +import { Steps } from 'nextra/components'; +import { Green, Yellow, Red, Gray } from 'components/severity.jsx' +import { IPR } from 'components/operators/snippets/ipr.js'; +import { ICMP } from 'components/operators/snippets/icmp.js'; + +## WireGuard: Gateways Performance Calculation + +> If you are looking for a page with a guide to run your own `gateway-probe` instance, go [here](/operators/nodes/performance-and-testing/gateway-probe). + + +**Note that there is only one binary `nym-node` for [all network functionalities](/operators/nodes/nym-node/setup#functionality-mode) (defined by a positional argument `--mode`).** + +When we say *Exit Gateway* in connection to Wireguard, we talk about a `nym-node` running in a mode Exit Gateway (`--mode exit-gateway`) with Wireguard enabled. Such node is listed in [NymVPN application](https://nym.com) as an Exit Gateway and an Entry Gateway for both dVPN (2-hop) and Mixnet (5-hop) options. That's because every Exit Gateway can serve as an Entry, not vice versa for Mixnet and every Gateway with Wireguard enabled option (`--wireguard-enabled true`) can always serve as both Entry and Exit for dVPN (provided that they are correctly [configured](/operators/nodes/nym-node/configuration)). + + +**Please note that even the most perfectly configured Gateway, running on the strongest machine may not always be listed as a suggested node in the app. If you are interested to learn the details why, check out the [Gateway Probe Details page](/operators/performance-and-testing/gateway-probe-details).** + +### Summary + +A simplified explanation of node performance measuring is that the [Node Status API](https://node-status.nym.com) runs [gateway probes](/operators/performance-and-testing/gateway-probe) that connect to gateways to: + +- Check the configuration of gateways + - Checks a list of capabilities (e.g. can route IPv4 traffic in mixnet mode) + - Checks a list of configuration (e.g. runs IPR, has exit policy) +- Acts like a user: + - Registers a mixnet client + - Registers a wireguard peer and tops up bandwidth with a zk-nym + - Sends ICMP ping packets + - Downloads files + +The results are collected and stored in the [Node Status API](https://node-status.nym.com) and can be also veiwed per node in [Node Status Observatory](https://harbourmaster.nymtech.net). + +The [NymVPN API directory](https://nymvpn.com/api/public/v1/directory/gateways) cache uses the output of the gateway probes to calculate and display hints to users about the contention on each gateway and what they might expect if they use the gateway. The section [*Gateway Roles & Requirements* below](#gateway-roles--requirements) explains how are these stats measured and what is their significance. + +### Performance Score + +Gateways are listed in NymVPN application displaying various stats. + +![](/images/operators/nym-vpn-sceenshots/nym-vpn-score1.png) + +There are four colored score bars. + +![](/images/operators/nym-vpn-sceenshots/nym-vpn-score2.png) + +This is how they are defined: + + + +###### 1. Overall performance: + +Calculated by mixnet performance score multiplied by WireGuard performance, this is the formula: + +> **mixnet_performance * (download_speed_score * ping_ips_performance_v4)** + +- High: `> 75%` +- Medium: `> 50%` +- Low: > `10%` +- Offline: `≤ 10%` + +- **Download speed scoring:** + +> **\> 5 Mbps = 1.0**
+> **\> 2 Mbps = 0.75**
+> **\> 1 Mbps = 0.5**
+> **\> 0.5 Mbps = 0.25**
+> **otherwise = 0.1** +
+ +###### 2. Server Load: + +A load indicator based on ping success + +- Low: `> 80%` ping success (low load) +- Medium: `> 40%` ping success (medium load) +- High: `≤ 40%` ping success (node under stress, high load) + +###### 3. Uptime: + +A routing score of Mixnet (5-hop) is indicated this way: +- High: `> 80%` mixnet packet delivery success +- Medium: `> 60%` mixnet packet delivery success +- Low: `> 10%` mixnet packet delivery success +- Offline: `≤ 10%` mixnet packet delivery success + +
+ +Note that there are caches in place to keep various dept of details to provide info for different pieces of the software. Their timing differs and it can lead to small discrepancies of outcome in between multiple clients observed by users at the same time. + +See the [*Gateway Roles & Requirements*](#gateway-roles--requirements) to understand how these stats get measured. + + +You can find more details [directly in the code](https://github.com/nymtech/nym-vpn-client/blob/develop/nym-vpn-app/src/hooks/useScore.ts#L10). + + +### Gateway Roles & Requirements + +A node configuration break down coming alongside basic [server configuration](/operators/nodes/preliminary-steps/vps-setup) required for the nodes in specific roles: + +- **Entry Gateway - Mixnet:** + - Node configured (running with `--mode` argument) as `entry-gateway` or `exit-gateway` (as Exit works as Entry too) + - `WS/WSS` ports (9000/9001) accessible + - [IPv6 configured](/operators/nodes/nym-node/configuration#quick-ipv6-check) +- **Exit Gateway - Mixnet:** + - Node configured (running with `--mode` argument) as `exit-gateway`, that configuration ensures that: + - IPR address present + - NR address present + - [IPv6 configured](/operators/nodes/nym-node/configuration#quick-ipv6-check) + - NymTun configured - using [NetworkTunnelManager](/operators/nodes/nym-node/configuration#routing-configuration) + +- **Entry & Exit Gateway - dVPN (WireGuard mode):** + - Node configured as Wireguard node: `--wireguard-enabled true` + - Authenticator address present + - NymWG configured - using [NetworkTunnelManager](/operators/nodes/nym-node/configuration#routing-configuration) + - [Metadata port open for WG](/operators/nodes/nym-node/configuration#fixing-metadata-port-showing-not-open-in-probe-results) + - Wireguard exit policy [configured](/operators/nodes/nym-node/configuration#wireguard-exit-policy-configuration) + - [IPv6 configured](/operators/nodes/nym-node/configuration#quick-ipv6-check) + - Recommended: [QUIC bridge setup](/operators/nodes/nym-node/configuration#quic-transport-bridge-deployment) + +### How Probe Works + +Nym Gateway probe is perfomance measurement program running tests through various routes. Operators can run their [local instance of Gateway probe](/operators/performance-and-testing/gateway-probe) or use visit of our dashboards to conveniently see probe results. + +- [Node Status dashboard](https://node-status.nym.com/dvpn): Shows latest probe results on one board +- [Nym Node Status Observatory](https://harbourmaster.nymtech.net): New version of a good old Nym Harbourmaster, allowing operators preview stats of each node + +The following sections explain what is measured in order to collect stats to the [API enpoint](https://nymvpn.com/api/public/v1/directory/gateways) and in the section [*Complete Setup Checklist*](#complete-setup-checklist) below you can see the order of measurements. + +#### Entry Gateway - Mixnet (5-hop) + +**Tests:** + +- `can_connect`: Can connect to client WS/WSS endpoint (ports 9000/9001) +- `can_route`: Entry gateway correctly forwards packets into the mixnet + +**To Pass:** + +- Expose correct `WS` and or `WSS` ports (`9000`/ `9001`) +- Ensure DNS A/AAAA records resolve correctly +- Verify IPv6 is actually reachable (not just in DNS) +- Keep node online and monitor packet loss + +#### Exit Gateway (IPR) - Mixnet (5-hop) + +**Tests:** + +- `can_connect`: Can connect to IPR +- `can_route_ip_v4`: IPv4 routing works +- `can_route_ip_external_v4`: IPv4 routing to external internet works +- `can_route_ip_v6`: IPv6 routing works +- `can_route_ip_external_v6`: IPv6 routing to external internet works + +**To Pass:** + +- Ensure upstream routing and NAT allow both IPv4 and IPv6 traffic to external internet +- Check system firewall rules (bidirectional) +- Confirm outbound reachability to common external hosts on both stacks +- Run node with `mode=exit-gateway` - this by default includes entry-gateway mode. + +#### Gateways - WireGuard (dVPN / 2-hop) + +**Tests:** + +- `can_register`: Authentication flow completes successfully +- `can_handshake`: WireGuard handshake succeeds +- `can_resolve_dns`: DNS resolution works +- `can_query_metadata_v4`: Can query metadata endpoint +- `ping_hosts_performance` / `ping_ips_performance`: Latency and packet loss metrics + +**To Pass:** + +- Open WireGuard UDP port `51822` (public) +- Ensure metadata TCP port `51830` is accessible inside the WireGuard tunnel (at `10.1.0.1:51830`) for bandwidth queries/topup +- Keep QUIC bridge (`UDP 4443`) healthy if deployed +- Reduce server latency/jitter (depends on provider and location) +- Ensure DNS resolvers are reliable +- Pass the `--wireguard-enabled true` flag in the node config + +### Probe Freshness + +- Probes run continuously; each node is typically tested every ~2 hours +- If a probe fails or times out, the gateway will have stale probe data until the next successful probe completes +- `last_updated_utc`: Timestamp indicating when the last successful probe test completed + +See [*Complete Setup Checklist*](#complete-setup-checklist) to understand the order of tests. + +### Complete Setup Checklist + +**If one test fails, the following points don't get checked! ** + +#### On-Chain & Configuration + +- [ ] [Bonded on-chain](/operators/nodes/nym-node/bonding) with [correct role](/operators/nodes/nym-node/setup#functionality-mode) (`exit-gateway`) and correct ports opened exposed +- [ ] Self-description endpoint is reachable +- [ ] [T&Cs accepted](/operators/nodes/nym-node/setup#terms--conditions) + +#### Network & Ports + +- [ ] **Mixnet**: Port `1789` (mixnet) accessible; ports `9000` (`WS`) and `9001` (`WSS`) accessible with valid [TLS for WSS](/operators/nodes/nym-node/configuration/proxy-configuration#reverse-proxy-configuration) +- [ ] [**QUIC bridge**](/operators/nodes/nym-node/configuration#quic-transport-bridge-deployment) (if used): UDP 4443 with valid addresses and SNI host +- [ ] [**WireGuard**](/operators/nodes/nym-node/configuration#routing-configuration): `UDP 51822` open (public); `TCP 51830` accessible [inside WireGuard tunnel](/operators/nodes/nym-node/configuration#fixing-metadata-port-showing-not-open-in-probe-results) (`10.1.0.1:51830`); `--wireguard-enabled true` set in node config +- [ ] **Exit (IPR)**: [IPv4 and IPv6](/operators/nodes/nym-node/configuration#routing-configuration) routing to external internet configured +- [ ] **DNS**: A/AAAA records correct; IPv6 actually reachable (test, don't just add DNS) + +#### Performance Targets + +- [ ] Achieve `≥ 60%` mixnet performance (Medium) +- [ ] Aim for `≥ 80%` (High) for optimal visibility +- [ ] Keep latency and packet loss low (excessive load reduces performance scores) +- [ ] Keep uptime high (network monitor tracks this) + +#### Probe Results (Verify All Pass) + +- [ ] Entry: `can_connect=true` and `can_route=true` +- [ ] Exit: `can_connect=true` and all v4/v6 routing flags are `true` +- [ ] WireGuard: `can_register`, `can_handshake`, `can_resolve_dns`, and `can_query_metadata_v4` all pass; ping metrics good + +#### Recommended + +- [ ] [WSS enabled](/operators/nodes/nym-node/configuration/proxy-configuration) (connections may fail on clients if only WS is available) +- [ ] [QUIC bridge](/operators/nodes/nym-node/configuration#quic-transport-bridge-deployment) operational (ensures your node appears when users enable QUIC only filter on the app) +- [ ] Accurate geo/IP information (country/region/residential filters rely on this) +- [ ] Stay on most recent supported binary version - [old versions are penalised](/operators/performance-and-testing#versions-behind-calculation) diff --git a/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx b/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx index 4dee7d493c..1037f94cea 100644 --- a/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx +++ b/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx @@ -18,7 +18,7 @@ Operators can use [Nym Bridge Configuration Tool](https://github.com/nymtech/nym - **Run as root** - Download the script and make executable ```sh -wget https://raw.githubusercontent.com/nymtech/nym/refs/heads/develop/scripts/nym-node-setup/quic_bridge_deployment.sh && \ +curl -L https://raw.githubusercontent.com/nymtech/nym/refs/heads/develop/scripts/nym-node-setup/quic_bridge_deployment.sh -o quic_bridge_deployment.sh && \ chmod +x quic_bridge_deployment.sh ``` diff --git a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md index b217f797f1..7d0e4bcc93 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md @@ -1 +1 @@ -Friday, October 31st 2025, 12:04:05 UTC +Friday, November 7th 2025, 15:17:19 UTC diff --git a/documentation/docs/components/severity.jsx b/documentation/docs/components/severity.jsx new file mode 100644 index 0000000000..393d97d798 --- /dev/null +++ b/documentation/docs/components/severity.jsx @@ -0,0 +1,12 @@ +export const Green = ({ children }) => ( + {children} +); +export const Yellow = ({ children }) => ( + {children} +); +export const Red = ({ children }) => ( + {children} +); +export const Gray = ({ children }) => ( + {children} +); diff --git a/documentation/docs/pages/operators/_meta.json b/documentation/docs/pages/operators/_meta.json index fbe58e2492..319bba3f0b 100644 --- a/documentation/docs/pages/operators/_meta.json +++ b/documentation/docs/pages/operators/_meta.json @@ -6,6 +6,7 @@ "sandbox": "Sandbox Testnet", "binaries": "Binaries", "nodes": "Nodes & Validators Guides", + "performance-and-testing": "Performance Measurement", "tools": "Tools", "troubleshooting": "Troubleshooting", "tokenomics": "Tokenomics", diff --git a/documentation/docs/pages/operators/changelog.mdx b/documentation/docs/pages/operators/changelog.mdx index 4aba7841fb..0cf99f6a21 100644 --- a/documentation/docs/pages/operators/changelog.mdx +++ b/documentation/docs/pages/operators/changelog.mdx @@ -2881,7 +2881,7 @@ cargo Profile: release After changes coming along with `v2024.13-magura` (`nym-node v1.1.10`), Nym Explorer is no longer picking all values correctly. Instead of fixing this outdated explorer, we are working on a new one, coming out soon. -[Nym Harbourmaster](https://harbourmaster.nymtech.net) has cache of 90min, expect your values to be updated with delay. We are aware of some issues with Nym Harbourmaster and working hard to resolve them in the upcoming explorer v2. To check your routing values in real time, you can use [`nym-gateway-probe`](nodes/performance-and-testing/gateway-probe). +[Nym Harbourmaster](https://harbourmaster.nymtech.net) has cache of 90min, expect your values to be updated with delay. We are aware of some issues with Nym Harbourmaster and working hard to resolve them in the upcoming explorer v2. To check your routing values in real time, you can use [`nym-gateway-probe`](performance-and-testing/gateway-probe). ### Operators Updates & Tools diff --git a/documentation/docs/pages/operators/introduction.mdx b/documentation/docs/pages/operators/introduction.mdx index 4292e39a73..1ed3c1ffd5 100644 --- a/documentation/docs/pages/operators/introduction.mdx +++ b/documentation/docs/pages/operators/introduction.mdx @@ -40,6 +40,9 @@ If you want to explore kickstart options and examples, learn how to integrate wi * [Validators](nodes/validator-setup.mdx) * [Nym API Setup](nodes/validator-setup/nym-api.mdx) +**Performance Monitoring** +* [Performance, probe and measurements](performance-and-testing) + **Tokenomics, rewards and roadmap** * [General tokenomics page](tokenomics.mdx) * [Nym Node rewards page](tokenomics/mixnet-rewards.mdx) diff --git a/documentation/docs/pages/operators/nodes/_meta.json b/documentation/docs/pages/operators/nodes/_meta.json index 1a235c011d..43bff5e938 100644 --- a/documentation/docs/pages/operators/nodes/_meta.json +++ b/documentation/docs/pages/operators/nodes/_meta.json @@ -2,6 +2,5 @@ "preliminary-steps": "Preliminary Steps", "nym-node": "Nym Node", "validator-setup": "Nyx Validator Setup", - "maintenance": "Maintenance", - "performance-and-testing": "Performance Monitoring & Testing" + "maintenance": "Maintenance" } diff --git a/documentation/docs/pages/operators/nodes/maintenance/manual-upgrade.mdx b/documentation/docs/pages/operators/nodes/maintenance/manual-upgrade.mdx index 8b3db6b61b..d2a99e5cbe 100644 --- a/documentation/docs/pages/operators/nodes/maintenance/manual-upgrade.mdx +++ b/documentation/docs/pages/operators/nodes/maintenance/manual-upgrade.mdx @@ -55,7 +55,7 @@ journalctl -f -u nym-node.service After changes coming along with `v2024.13-magura` (`nym-node v1.1.10`), Nym Explorer is no longer picking all values correctly. Instead of fixing this outdated explorer, we are working on a new one, coming out soon. -[Nym Harbourmaster](https://harbourmaster.nymtech.net) has cache of 90min, expect your values to be updated with delay. We are aware of some issues with Nym Harbourmaster and working hard to resolve them in the upcoming explorer v2. To check your routing values in real time, you can use [`nym-gateway-probe`](../performance-and-testing/gateway-probe). +[Nym Harbourmaster](https://harbourmaster.nymtech.net) has cache of 90min, expect your values to be updated with delay. We are aware of some issues with Nym Harbourmaster and working hard to resolve them in the upcoming explorer v2. To check your routing values in real time, you can use [`nym-gateway-probe`](/operators/performance-and-testing/gateway-probe). ## Validator Upgrade diff --git a/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx b/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx index ef3ade7403..4389607735 100644 --- a/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx +++ b/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx @@ -28,7 +28,7 @@ Do not bond your node to the API if the previous steps weren't finished. Bad con Any new bonded node will provide only the bare minimum information: host, identity key and optionally custom port of its HTTP API - we highly recommend to set that one up to `8080`. Everything else will be discovered via the self-described API for maximum flexibility. This also includes the sphinx key, meaning if the API is not exposed, the node will be unable to route any traffic. -**Every operator has to make sure that their nodes [self-described endpoint works](../performance-and-testing#functionality--performance-check), otherwise the node will be un-routable and thus won't get any rewards!** +**Every operator has to make sure that their nodes [self-described endpoint works](/operators/performance-and-testing#functionality--performance-check), otherwise the node will be un-routable and thus won't get any rewards!** **Reveal your menominc phrase only in areas out of surveillance of other people and never share it with others. Nym team will never ask you for your mnemonic phrase - in case you were asked by someone it's a scam, do *not* reply to it!** diff --git a/documentation/docs/pages/operators/nodes/nym-node/setup.mdx b/documentation/docs/pages/operators/nodes/nym-node/setup.mdx index 56131612ca..afae7fb016 100644 --- a/documentation/docs/pages/operators/nodes/nym-node/setup.mdx +++ b/documentation/docs/pages/operators/nodes/nym-node/setup.mdx @@ -184,7 +184,7 @@ Make sure to use `--deny-init` flag to prevent initialisation of a new node. ## Functionality & Performance Check -We have a chapter called [Performance Monitoring & Testing](../performance-and-testing) including much more information and tooling. If you want to just quickly check your nodes performance, connectivity and much more, visit [harbourmaster.nymtech.net](https://harbourmaster.nymtech.net/). +We have a chapter called [Performance Monitoring & Testing](/operators/performance-and-testing) including much more information and tooling. If you want to just quickly check your nodes performance, connectivity and much more, visit [harbourmaster.nymtech.net](https://harbourmaster.nymtech.net/). For more information about available endpoints and their status, you can refer to: ```sh diff --git a/documentation/docs/pages/operators/nodes/performance-and-testing.mdx b/documentation/docs/pages/operators/performance-and-testing.mdx similarity index 55% rename from documentation/docs/pages/operators/nodes/performance-and-testing.mdx rename to documentation/docs/pages/operators/performance-and-testing.mdx index ba700cf031..d00e168d24 100644 --- a/documentation/docs/pages/operators/nodes/performance-and-testing.mdx +++ b/documentation/docs/pages/operators/performance-and-testing.mdx @@ -1,18 +1,39 @@ import { Callout } from 'nextra/components'; +import { Tabs } from 'nextra/components'; +import { MyTab } from 'components/generic-tabs.tsx'; +import { AccordionTemplate } from 'components/accordion-template.tsx'; +import NodePerfWG from 'components/operators/snippets/node-perf-wg.mdx'; +import NodePerfMixnet from 'components/operators/snippets/node-perf-mixnet.mdx'; # Performance Monitoring & Testing -Nym Mixnet has been running on mainnet for quite some time. There is still work to be done in order for the network to meet its full potential - mass adoption of privacy through fully distributed Mixnet. +Nym Mixnet has been running on mainnet for quite some time. There is still work to be done in order for the network to meet its full potential - mass adoption of privacy through distributed Mixnet. -As developers we need to be constantly improving the software. Operators have as much important role, keep their nodes up to date, monitor their performance and share their feedback with the rest of the community and core developers. +As Nym developers constantly improve the software, operators have as much important role, keep their nodes up to date, monitor their performance and share feedback with the rest of the community and Nym team. Therefore [monitoring](#monitoring) node performance is an essential pillar of our common work. + +Nym Network is routed either through the Mixnet (5-hop) or through Wireguard (2-hop). In all cases Nym node operators always employ only one binary called [`nym-node`](/operators/nodes/nym-node). Through provided arguments (or changes in the config file), `nym-node` can be utilised for different [functionalities](/operators/nodes/nym-node/setup#functionality-mode). However, once it's [registered to Nym Network](/operators/nodes/nym-node/bonding) it's by default available for Nym Mixnet not for Wireguard routing. Only nodes with Wireguard enabled, are also available for Wireguard routing. This creates a situation where every Wireguard enabled `nym-node` is required to have a solid performance score in Mixnet to begin with, but not every Mixnet routing `nym-node` must have Wireguard enabled. + +Given this complexity, we divided the part below about perfromance calculation logic and node selection into two parallel tabs: Mixnet and Wireguard. + +
+ Mixnet: Nodes Performance Calculation, + WireGuard: Gateways Performance Calculation, + ]} defaultIndex="0"> + + + +
-Therefore [monitoring](#monitoring) and [testing](#testing) are essential pieces of our common work. We call out all Nym operators to join the efforts! ## Functionality & Performance Check -If you want to just quickly check your nodes performance, connectivity and much more, visit [harbourmaster.nymtech.net](https://harbourmaster.nymtech.net/). +If you want to check your nodes performance, connectivity and much more, see some of the dashobards: -For more information about available endpoints and their status, you can refer to: +- [Node Status dashboard](https://node-status.nym.com/dvpn): Shows latest probe results on one board +- [Nym Node Status Observatory](https://harbourmaster.nymtech.net): New version of a good old Nym Harbourmaster, allowing operators preview stats of each node + +For more information about available endpoints and their status, you can refer to [`nymvpn.com/api/public/v1/directory/gateways`](https://nymvpn.com/api/public/v1/directory/gateways) or see directly self described endpoints of your node: ```sh # sustitude or with the one corresponding to your node # for http @@ -23,7 +44,7 @@ http:///api/v1/swagger/#/ # for reversed proxy/WSS https:///api/v1/swagger/#/ ``` - + For example to determine which mode your node is running, you can check the `:8080/api/v1/roles` endpoint: ```sh # sustitude or with the one corresponding to your node @@ -35,6 +56,7 @@ http:///api/v1/roles # for reversed proxy/WSS https:///api/v1/roles ``` + ## Monitoring @@ -44,7 +66,7 @@ There are multiple ways to monitor performance of nodes and the machines on whic A list of different scripts, templates and guides for easier navigation: -* [`nym-gateway-probe`](perfomance-and-testing/gateway-probe.mdx) - a useful tool used under the hood of [harbourmaster.nymtech.net](https://harbourmaster.nymtech.net) +* [`nym-gateway-probe`](performance-and-testing/gateway-probe.mdx) - a useful tool used under the hood of [Node status Observatory](https://harbourmaster.nymtech.net) * [Prometheus and Grafana](performance-and-testing/prometheus-grafana.mdx) self-hosted setup * [Nym-node CPU cron service](https://gist.github.com/tommyv1987/97e939a7adf491333d686a8eaa68d4bd) - an easy bash script by Nym core developer [@tommy1987](https://gist.github.com/tommyv1987), designed to monitor a CPU usage of your node, running locally * Nym's script [`prom_targets.py`](https://github.com/nymtech/nym/blob/develop/scripts/prom_targets.py) - a useful python program to request data from API and can be run on its own or plugged to more sophisticated flows @@ -53,7 +75,7 @@ A list of different scripts, templates and guides for easier navigation: For the purpose of the performance testing Nym core developers plan to run instances of Prometheus and Grafana connected to Node explorer in the house. The network overall key insights we seek from these tests are primarily internal. We're focused on pinpointing bottlenecks, capacity loads, and monitoring cpu usage on the nodes' machines. - +{/* LEAVING THIS BIT FOR FUTURE F&F CASES: ## Testing @@ -73,3 +95,4 @@ We do testing in order to **understand and increase the overall quality of the N 7. Adjust rewarding based on the machine specs and server pricing Visit [Nym Harbour Master](https://harbourmaster.nymtech.net/) monitoring page to monitor network components (nodes) performance. +*/} \ No newline at end of file diff --git a/documentation/docs/pages/operators/nodes/performance-and-testing/_meta.json b/documentation/docs/pages/operators/performance-and-testing/_meta.json similarity index 60% rename from documentation/docs/pages/operators/nodes/performance-and-testing/_meta.json rename to documentation/docs/pages/operators/performance-and-testing/_meta.json index 32d200a0dc..9d5f481d1c 100644 --- a/documentation/docs/pages/operators/nodes/performance-and-testing/_meta.json +++ b/documentation/docs/pages/operators/performance-and-testing/_meta.json @@ -1,4 +1,5 @@ -{ +{ "gateway-probe": "Gateway Probe", + "gateway-probe-details": "Gateway Probe Details", "prometheus-grafana": "Prometheus & Grafana" } diff --git a/documentation/docs/pages/operators/performance-and-testing/gateway-probe-details.mdx b/documentation/docs/pages/operators/performance-and-testing/gateway-probe-details.mdx new file mode 100644 index 0000000000..7dbbfbfd29 --- /dev/null +++ b/documentation/docs/pages/operators/performance-and-testing/gateway-probe-details.mdx @@ -0,0 +1,139 @@ +import { Callout, CalloutTitle, CalloutDescription } from 'nextra/components'; +import { Steps } from 'nextra/components'; +import { IPR } from 'components/operators/snippets/ipr.js'; +import { ICMP } from 'components/operators/snippets/icmp.js'; + +# Gateway Probes Details & Contradictions + +## Summary + +A simplified explanation of node performance measuring is that the [Node Status API](https://node-status.nym.com) runs [gateway probes](/operators/performance-and-testing/gateway-probe) that connect to gateways to: + +- Check the configuration of gateways + - Checks a list of capabilities (e.g. can route IPv4 traffic in mixnet mode) + - Checks a list of configuration (e.g. runs IPR, has exit policy) +- Acts like a user: + - Registers a mixnet client + - Registers a wireguard peer and tops up bandwidth with a zk-nym + - Sends ICMP ping packets + - Downloads files + +The results are collected and stored in the [Node Status API](https://node-status.nym.com) and can be also veiwed per node in [Node Status Observatory](https://harbourmaster.nymtech.net). + +The [NymVPN API directory](https://nymvpn.com/api/public/v1/directory/gateways) cache uses the output of the gateway probes to calculate and display hints to users about the contention on each gateway and what they might expect if they use the gateway. + +## Heisenberg’s Uncertainty Principle for Gateways + +> The uncertainty principle, also known as Heisenberg's indeterminacy principle, is a fundamental concept in quantum mechanics. It states that there is a limit to the precision with which certain pairs of physical properties, such as position and momentum, can be simultaneously known. In other words, the more accurately one property is measured, the less accurately the other property can be known. +> +> [https://en.wikipedia.org/wiki/Uncertainty\_principle](https://en.wikipedia.org/wiki/Uncertainty_principle) + +The nodes in the Nym network are run by independent operators, so we can only know: + +- What we see from the outside + - Probes can run tests like users + - Users can report performance from a Gateway (also includes the performance of the user’s internet connection and the speed of the host they are using) +- What we ask operators to report + - They can lie + - We can’t check them + +### Gateway Probe Generates a Stream to Fill Available Bandwidth on Gateway + +The probe can check a Gateway periodically and can generate a traffic stream to use the remaining bandwidth: + +![](/images/operators/performance/perceived-gw-dwl.png) + +Depending on how busy the Gateway is with user streams, the probe will report different values for the available remaining bandwidth. + + +This is currently what we do with downloading a 10MB file + + +If the timing of the probe and user activity overlaps, then the “available bandwidth” remaining looks like this from the probe’s perspective: + +![](/images/operators/performance/bandwith-probe-user-overlaps.png) + +### Fully Utilised Gateways Will Have Low Availability + +If a Gateway is popular, then there will not be a lot of room for the probe’s stream: + +![](/images/operators/performance/popular-gw-probe.png) + +The Gateway is doing a fine job is serving 92.5% of its available capacity to clients, and it only have 7.5Mbps available for another user. + + +Is that enough for a user? Only they can know! + + +### Can Another Netflix 4k Stream Fit? + +Streaming Netflix at 4k takes anywhere from 11-15Mbps, so lets see what that looks like in a few cases: + +###### “Yay, Netflix will fit most of the time” + +![](/images/operators/performance/netflix-fits-bandwidth.png) + +###### “Netflix is not going to fit” + +![](/images/operators/performance/netflix-not-fit.png) + +### Does Measuring Affect Users of the Gateway? + +If we add heavy traffic streams to Gateways, what happens to other users? + +Imagine there are 6 \* Netflix 4k users on a 100Mbps Gateway, let's look at different traffic stream scenarios: + +###### Take the space of 2 streams + +Two users will stall while we use their space: + +![](/images/operators/performance/two-streams-space.png) + +###### Scale the user space down by the test stream + +Adjust the Gateway settings to force users into less bandwidth and make the test take priority: + +*Sad users for 5 minutes* + +![](/images/operators/performance/sad-users.png) + +*Angry users for 5 minutes* + +![](/images/operators/performance/angry-users.png) + +*Furious users for 5 minutes* + +![](/images/operators/performance/furious-users.png) + +## Gateways, IaaS and Network Quotas + +IaaS providers like Linode, AWS, etc and data centre providers have a mix of methods where they can cap or rate limit VMs or physical connections: + +- **Fixed quota:** you can only use the outbound networking available, e.g. AWS limits to 100Mbps + +![](/images/operators/performance/capped-bandwidth.png) + +- **Fixed quota with burst:** you get a fixed outbound network rate, but can burst above it + - You pay penalties when you burst - many data centres and fixed lines do this + - You have a leaky bucket - you can only burst with your saved quota + +![](/images/operators/performance/burst-charges.png) + +- **Leaky bucket quota:** you start with a small quota that builds up to a maximum, but once you use your “saved quota” you drop down to the rate at which your quota comes in. Or sometimes no matter how much you pour into the bucket, only a fixed amount drains out the other side (see [https://en.wikipedia.org/wiki/Leaky\_bucket](https://en.wikipedia.org/wiki/Leaky_bucket)) + +![](/images/operators/performance/leaky-bucket.png) + +This means that if there is a flexible quota, a gateway with high usage, can burn through its quota early in the monthly billing cycle leaving it rate limited for the majority of the month: + +![](/images/operators/performance/vps-quota.png) + +The cheaper the VPS, the more it is likely to be rate limited or have a leaky bucket quota that will appear to users as “unreliable”. + +The best hosts will be ones with a fixed bandwidth that is capped by the hosting provider with network equipment, because: + +- Users will scale with the available bandwidth +- No weird side effects of quotas +- Most predictable behaviour +- Will not be the cheapest, but will also not be the most expensive + +Bursting sounds attractive, but could be financially crippling for operators. \ No newline at end of file diff --git a/documentation/docs/pages/operators/nodes/performance-and-testing/gateway-probe.mdx b/documentation/docs/pages/operators/performance-and-testing/gateway-probe.mdx similarity index 100% rename from documentation/docs/pages/operators/nodes/performance-and-testing/gateway-probe.mdx rename to documentation/docs/pages/operators/performance-and-testing/gateway-probe.mdx diff --git a/documentation/docs/pages/operators/nodes/performance-and-testing/prometheus-grafana.mdx b/documentation/docs/pages/operators/performance-and-testing/prometheus-grafana.mdx similarity index 100% rename from documentation/docs/pages/operators/nodes/performance-and-testing/prometheus-grafana.mdx rename to documentation/docs/pages/operators/performance-and-testing/prometheus-grafana.mdx diff --git a/documentation/docs/pages/operators/nodes/performance-and-testing/prometheus-grafana/_meta.json b/documentation/docs/pages/operators/performance-and-testing/prometheus-grafana/_meta.json similarity index 100% rename from documentation/docs/pages/operators/nodes/performance-and-testing/prometheus-grafana/_meta.json rename to documentation/docs/pages/operators/performance-and-testing/prometheus-grafana/_meta.json diff --git a/documentation/docs/pages/operators/nodes/performance-and-testing/prometheus-grafana/explorenym-scripts.mdx b/documentation/docs/pages/operators/performance-and-testing/prometheus-grafana/explorenym-scripts.mdx similarity index 100% rename from documentation/docs/pages/operators/nodes/performance-and-testing/prometheus-grafana/explorenym-scripts.mdx rename to documentation/docs/pages/operators/performance-and-testing/prometheus-grafana/explorenym-scripts.mdx diff --git a/documentation/docs/pages/operators/tokenomics.mdx b/documentation/docs/pages/operators/tokenomics.mdx index 8247730461..23f9e00517 100644 --- a/documentation/docs/pages/operators/tokenomics.mdx +++ b/documentation/docs/pages/operators/tokenomics.mdx @@ -148,7 +148,7 @@ Nym Mixnet is using an active set of chosen nodes. Currently the [active set The alorithm for selecting the nodes into the Rewarded set is in detail explained in the [Rewarded set selection logic part](tokenomics/mixnet-rewards#rewarded-set-selection). -In dVPN (2-hop) mode every node which meets the [performance criteria](tokenomics/mixnet-rewards#node-performance-calculation), including wireguard and IPv6 routing tests, becomes eligible to take part in the network. Whether the node is working or not then depends on the NymVPN end users choise of the location or exact nodes selection. +In dVPN (2-hop) mode every node which meets the [performance criteria](tokenomics/mixnet-rewards#mixnet-node-performance-calculation), including wireguard and IPv6 routing tests, becomes eligible to take part in the network. Whether the node is working or not then depends on the NymVPN end users choise of the location or exact nodes selection. diff --git a/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx b/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx index c7d1007bd7..ee1cd26ae6 100644 --- a/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx +++ b/documentation/docs/pages/operators/tokenomics/mixnet-rewards.mdx @@ -11,6 +11,7 @@ import StakeSaturation from 'components/outputs/api-scraping-outputs/nyx-outputs import StakeSaturationSnippet from 'components/operators/snippets/stake-saturation.mdx'; import CirculatingSupply from 'components/outputs/api-scraping-outputs/nyx-outputs/circulating-supply.md'; import StakingTarget from 'components/outputs/api-scraping-outputs/nyx-outputs/staking-target.md'; +import NodePerfMixnet from 'components/operators/snippets/node-perf-mixnet.mdx'; import { TimeNow } from 'components/time-now.tsx'; import { AccordionTemplate } from 'components/accordion-template.tsx'; import { Clt } from 'components/callout-custom/CalloutCustom.jsx'; @@ -57,7 +58,7 @@ Nodes bonded with vesting tokens are [not allowed to join rewarded set](https:// ## Rewards Logic & Overview -This is a quick summary, to understand the logic behind fundamentals like [rewarded set selection](#rewarded-set-selection), [node performance](#node-performance-calculation), [stake saturation](#stake-saturation), or [rewards calculation](#rewards-calculation), please read the chapters below. +This is a quick summary, to understand the logic behind fundamentals like [rewarded set selection](#rewarded-set-selection), [node performance](#mixnet-node-performance-calculation), [stake saturation](#stake-saturation), or [rewards calculation](#rewards-calculation), please read the chapters below. * **The current reward system is called [*Naive rewarding*](#naive-rewarding) - an intermediate step - where the operators of `nym-node` get rewarded from [Mixmining pool](https://validator.nymtech.net/api/v1/epoch/reward_params), which emits NYM per hour** * **Only nodes selected to [rewarded set](../tokenomics.mdx#active-set) of Mixnet receive rewards** @@ -67,7 +68,7 @@ This is a quick summary, to understand the logic behind fundamentals like [rewar * If a node is selected to the rewarded set, it will be rewarded in the end of the epoch, based on this reward calculation formula: -> **node_epoch_rewards = [total_epoch_reward_budget](https://validator.nymtech.net/api/v1/epoch/reward_params) \* node_work_fraction \* [node_stake_saturation](#stake-saturation) \* [node_performance](#node-performance-calculation)** +> **node_epoch_rewards = [total_epoch_reward_budget](https://validator.nymtech.net/api/v1/epoch/reward_params) \* node_work_fraction \* [node_stake_saturation](#stake-saturation) \* [node_performance](#mixnet-node-performance-calculation)** > > We know that:
> **[total_epoch_reward_budget](https://validator.nymtech.net/api/v1/epoch/reward_params) = **
@@ -75,7 +76,7 @@ This is a quick summary, to understand the logic behind fundamentals like [rewar > **[active_set_size](https://validator.nymtech.net/api/v1/epoch/reward_params) = 240** > > Therefore:
-> **node_epoch_rewards = \* 1 / 240 \* [node_stake_saturation](#stake-saturation) \* [node_performance](#node-performance-calculation)** +> **node_epoch_rewards = \* 1 / 240 \* [node_stake_saturation](#stake-saturation) \* [node_performance](#mixnet-node-performance-calculation)**
In reality there is a an additional value called **α**, giving a premium to nodes with a higher self bond. And additionally an operator gets more rewards based on [*Operators cost*](#rewards-distribution) and [*Profit margin*](#rewards-distribution) size. **Read chapter [Rewards calculation](#rewards-calculation) to be able to navigate in all the details relevant for operators and delegators.** @@ -163,7 +164,7 @@ For a node to be rewarded, the node must be part of a [Rewarded set](https://val Nodes selected into the rewarded set are chosen probabilisticaly, and their selection chances increase the larger nodes weight is. Weight value is always between `0` and `1` and it's calculated by multiplying these parameters, each of them also having a value between `0` and `1` (some are floats, some are binary): -**1. [Performance](#node-performance-calculation):** This value consists of: +**1. [Performance](#mixnet-node-performance-calculation):** This value consists of: - [Config score](#config-score-calculation): highest (`1`) when the node is running the latest version of the software, has [T&C's accepted](../nodes/nym-node/setup.mdx#terms--conditions) and self described API endpoint available - [Routing ](#routing-score-calculation): highest (`1`) when the node is consistently online and correctly processes all the received traffic (100% of time) @@ -175,7 +176,7 @@ Nodes selected into the rewarded set are chosen probabilisticaly, and their sele > **active_set_selection_weight = stake_saturation \* ( node_performance ^ 20 )**
-For the rewarded set selection weight, good [performance](#node-performance-calculation) is much more essential than [stake saturation](#stake-saturation), because it's lifted to 20th power in the selection algorhitm. +For the rewarded set selection weight, good [performance](#mixnet-node-performance-calculation) is much more essential than [stake saturation](#stake-saturation), because it's lifted to 20th power in the selection algorhitm. For a comparison we made an example with 5 nodes, where first number is node performance and second stake saturation (assuming all of them [`config_score`](#config-score-calculation) = `1` for simplification): @@ -268,99 +269,10 @@ weight_total = 95 In reality we have mixing nodes selected into 3 layers. To increase security, there is an additional function in place where a node cannot be assigned to the same layer in two following epochs. -Below we break down [performance calculation](#node-performance-calculation) and show examples. +Below we break down [performance calculation](#mixnet-node-performance-calculation) and show examples. -## Node Performance Calculation - -Performance is a value between `0` and `1`. The final performance number is a result of multiplying [config score](#config-score-calculation) and [routing score](#routing-score-calculation). - - -> **node_performance = config_score \* routing_score** - - -Performance value is an average of last 24h. - - -All parameters regarding performance score can be browsed or pull live from: - -`https://validator.nymtech.net/api/v1/nym-nodes/annotation/` - -In case you don't know your nodes `NODE_ID`, it's easy to find as long as your node is bonded. Visit [validator.nymtech.net/api/v1/nym-nodes/bonded](https://validator.nymtech.net/api/v1/nym-nodes/bonded) and search your node using `identity_key` or bonding Nyx account address (denoted as `owner`). - - -### Config Score Calculation - -Config score is in place to ensure that the node configuration is done properly so the node is eligible for taking part in Nym network. The API looks into these paramteres: - -1. If the node binary is `nym-node` (not legacy `nym-mixnode` or `nym-gateway`): `1` if `True`, `0` if `False` -2. If [Terms & Conditions](../nodes/nym-node/setup.mdx#terms--conditions) are accepted: `1` if `True`, `0` if `False` -3. If the nodes self described endpoint is available: `1` if `True`, `0` if `False` -4. Version of `nym-node` binary: decreasing weight for outdated versions, as [explained below](#versions-behind-calculation) - -**The `config_score` calculation formula:** - - -> **config_score = is_tc_accepted \* is_nym-node_binary \* self_described_api_available \* ( 0.995 ^ ( ( X * versions_behind) ^ 1.65 ) )** - - -First three points have binary values of either `0` or `1`, with a following logic: - -| **Run `nym-node` binary** | **T&C's accepted** | **Self described available** | **Value** | -| :-- | :-- | :-- | ---: | -| **True** | **True** | **True** | **1** | -| True | False | False | 0 | -| True | True | False | 0 | -| False | True | True | 0 | -| False | False | True | 0 | -| True | False | True | 0 | -| False | False | False | 0 | -| False | True | False | 0 | - -**Only if ALL conditions above are `True` the node can have any chance to be selected, as otherwise the probability will always be 0.** - - -Besides these values, the API also checks whether the node is bonded in Mixnet smart contract as a Nym Node or legacy node (Mixnode or Gateway). **Only nodes bonded as Nym Node in Mixnet smart contract can be selected to the Rewrded set. Thus, if you haven't migrated your node yet, please [follow these steps](../nodes/nym-node/bonding#migrate-to-nym-node-in-mixnet-smart-contract)!** - - -#### Versions Behind Calculation - -From release `2024.14-crunch` (`nym-node v1.2.0`), the `config_score` parameter takes into account also nodes version (denoted as `versions_behind`). The "current version" is the one marked as `Latest` in the [repository](https://github.com/nymtech/nym/releases/). The parameter `versions_behind` indicates the number of versions between the `Latest` version and the version run by the node, and it is factored into the config score with this formula: - - -> **0.995 ^ ( ( X * versions_behind ) ^ 1.65 )** -> -> where:
-> **X = 1; for patches**
-> **X = 10; for minor versions**
-> **X = 100; for major versions** -
- -> The exact parameters are live accessible on [`/v1/status/config-score-details`](https://validator.nymtech.net/api/swagger/index.html#/Status/config_score_details). - -Our versioning convention is: `major_version . minor_version . patch` - -For example `nym-node` on version `1.2.0` is on 1st major version, 2nd minor and 0 patches. - -Note that the `X` multiplier heavily lowers the `config_score` when nodes are outdated with respect to more significant updates. See the the table and graph below: - -| **Version behind** | **Patches (X = 1)** | **Minor versions (X = 10)** | **Major versions (X = 100)** | -| :-- | --: | --: | --: | -| 0 (current version) | 1.0 | 1.0 | 1.0 | -| 1 | 0.995 | 0.7994 | 0.0000 | -| 2 | 0.9844 | 0.4953 | 0.0000 | -| 3 | 0.9698 | 0.2536 | 0.0000 | -| 4 | 0.9518 | 0.1102 | 0.0000 | -| 5 | 0.9311 | 0.0413 | 0.0000 | - - -![](/images/operators/tokenomics/reward_version_graph.png) - -As you can see above, the algorithm is designed to give maximum selection score (`1`) to the latest version, while non-upgraded nodes receive a lower score. The score decreases faster when the node has failed to make a major version upgrade, and slower when the node is behind only with minor updates. This scoring de-prioritizes the selection of outdated nodes, even if their saturation and performance are high. Nodes are selected probabilistically in each epoch (60 min), according to their scores, to be part of the Rewarded set. This scoring mechanism gives priority to the operators running up-to-date nodes, ensuring that the network is as updated as possible. - -### Routing Score Calculation - -Routing score is measured by Nym Network Monitor which sends thousands of packages through different routes every 15 minutes and measures how many were dropped on the way. Test result represents percentage of packets succesfully returned which are then converted into floats bettween `0` and `1`. + ## Stake Saturation @@ -378,7 +290,7 @@ If a node is active in the rewarded set, it will receive rewards in the end of t **Node rewards calculation formula:** -> **node_epoch_rewards = [total_epoch_reward_budget](https://validator.nymtech.net/api/v1/epoch/reward_params) \* [node_performance](#node-performance-calculation) \* [node_stake_saturation](#stake-saturation) \* ( node_work_fraction + α \* ( ( node_bond_size / [stake_saturation_level](https://validator.nymtech.net/api/v1/epoch/reward_params) ) / rewarded_set_size ) ) \* 1 / ( 1 + α )** +> **node_epoch_rewards = [total_epoch_reward_budget](https://validator.nymtech.net/api/v1/epoch/reward_params) \* [node_performance](#mixnet-node-performance-calculation) \* [node_stake_saturation](#stake-saturation) \* ( node_work_fraction + α \* ( ( node_bond_size / [stake_saturation_level](https://validator.nymtech.net/api/v1/epoch/reward_params) ) / rewarded_set_size ) ) \* 1 / ( 1 + α )** > > Where:
> **[total_epoch_reward_budget](https://validator.nymtech.net/api/v1/epoch/reward_params) = **
@@ -388,7 +300,7 @@ If a node is active in the rewarded set, it will receive rewards in the end of t > **α = 0.3** > > Therefore:
-> **node_epoch_rewards = \* [node_performance](#node-performance-calculation) \* [node_stake_saturation](#stake-saturation) \* ( ( 1 / 240 ) + 0.3 \* ( ( node_bond_size / ) / 240 ) ) \* 1 / ( 1 + 0.3 )** +> **node_epoch_rewards = \* [node_performance](#mixnet-node-performance-calculation) \* [node_stake_saturation](#stake-saturation) \* ( ( 1 / 240 ) + 0.3 \* ( ( node_bond_size / ) / 240 ) ) \* 1 / ( 1 + 0.3 )**
Performance and stake saturation (both are a float between `0` and `1` representing percentage) play an equally decisive role in the size of rewards earned after the epoch. The closer a node is to maximum value (`1`) of each of these parameters, the more rewards it will get. diff --git a/documentation/docs/public/images/operators/nym-vpn-sceenshots/nym-vpn-score1.png b/documentation/docs/public/images/operators/nym-vpn-sceenshots/nym-vpn-score1.png new file mode 100644 index 0000000000000000000000000000000000000000..d63a5e41ffacd73f7113bbd3fd0ffb42c3432847 GIT binary patch literal 12553 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 literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/angry-users.png b/documentation/docs/public/images/operators/performance/angry-users.png new file mode 100644 index 0000000000000000000000000000000000000000..391cf1643edfc55c87b5adb40ce3908a96b6487b GIT binary patch literal 244543 zcmeFa3v`opwm$rp4pgnsnZK7Rg;vLLa7HoAK`2N{TB_(+q|h>=!wej#STQY4Nujm{xdddOU@z%CKp|`H`|W4HNolqI*Y~aU zo%NmbE!G+wNRv0e-~R3W>}NlFzi;39k7wqMy>0w$f*_22>fitEkAiT^KLjDT>y|O} z$|ng=zb^!rk9q3f<~*+sx?UN)^H(o@Tw@bcExE@|?p`&2`TmvlU;F>}`g?^R|Dm|> zU#9-j;##A7BmHliX2qW`?#ayTJ*RLxkF*@g$bY-;U-XaluXh>#{m{bhy4S^%x{8bW zS<&JGeSd02pKW@sbz*;fkZk3ZBTH7FU$|&#;6LKNS53EhRv$HbnnHZ7srG+e;(2qk z?ykfgxpn_b|5fvmjcr5T-=})!i}+Hy{;h^{D|^mOnq9C|nO*1GubbWUH(N!OW^(iA zlVi5--GAun9{+y^RL}J9t5i+$oU~>&%QVr(P{Fojc6V}-^TIRQ{BM$d+OqTAGfn-k zsQMc{QT^jhzF#L!&bN+=G6$}}*BU5#s^My{*}q01T=7ZBg5&d!>vb(NZfs?dH}6+Y z%O9QF?@*oGC$EgpbQkCkE;$^UxqaA*41XAMsW*kUL!6bhS*?qfX&)1dHq3U%M%h0v zsuJfEyH+OlFRYxGGSpg&ys{RfuQAM7Z7g$MnozXa`N+v(?+_zf_Zl;Q6BXRO&D6g_ zH9GULA?sV(CvH@@Qx(nOicJp-KR5QS%@e;d{?dDC$>{GEX}gvidY3yD?b8g`pH_tS zUK(O|IxKOoJhQ^ls2X_Bl(DjEec7Oe4_(zxJhIO!eo^PW68f6$?68lC3YE7!syj3) zShz1c%(-cSI`K$q^7)dd67Bo)yx$ddirIC}3(;ALPnoKRIK`r+eTHwJd?6#VwNZO| zTHBT(_Vc9+Tlbh>)z-~ZcuVr^+9!6> zzlXhB)v+!4_@pMUdCAmAhi#=eDyHw>hxpH-t76GpnRW5ny4a|Yx1}94A6e4ZusLdS zUQ>bCp=^sa^;S%dJo$s=*Q|IZ^YldRH$Pat1FJ7Bj!hbRs-kgX;yGuN@Qdyjmh@#F z*R1sA=e(`^(UNzZR=g8m^WcyJ^;-LP$JQkez1E_&*XqXnePe#-2K7HLRH^@RM{(sN z=|0(|qH)fg`P!;G!V13)eMS8nU;b42*6`Mg(`w85kJSBQTIrDU+_Tr0@m|*lDY~ML z@3P9tLTM#A3(RxRuH3%UG`s3e_hV;I4Yiq}>8rlb&>+a(8*1MeH z@~z_aYqWzIS?BKkbj*3@qJ z8n$BO>ciEZi>tS1I`@8&*7(3XmrG6O%=P*yyAvOO@&_x6?piUiZnkr=@*(@n+20yo zE>Ey&7e>X1rq%Y%Lp|rvRfFoEM^|jtpKh9{pYrbJf;4N4@vuV^*aTZr#~~y?-s>`3V#{0bY7Bg zp1S*s+R&2Z&ijXia-V??{`TPuC=vc+=vVMbYyTX-=|S25-jO(T&*C_5|Leo|8y7Uv z;&UgYExY>WFl(m1op5@1Xgwl4Km1xh+`+J)D#Cue#bIw4>Y)1vjKNQI41489DjDH# zKKlqJ`00;}@|#N^!HPGn{!NzE38VPbZ|F7v>m(oe#x8?|d@ zwVf3z`-+pMHvZlyPEQptU4L(0uux|>dg`r+m_=Sk8C}=c8X;yk#>%>%NVGLt|F`a} z-PB=Gl<%BK#MDN1lH|TV}O4 zv{_p;yQ5MjM%2C8Q=EL|Le7%(n$eb2@52pr$rMA1m?WEL9w*H3Ztc2Qy5hqTk4yQ* z|GZ6zj|jh&vYj_SB5#b(6X6rGbEn2G5pRpOf9kBa`lgOEMhe|ErtYuF=wiL+da8Ku zrnoRc-Il11J(OEWBx*uq>M^V4bn%qPaq=^^P1`@KzwELmkr6%D9iDsR#Fj{lV^!3^ z8}iHBHrduSc;j?-v&k9q-lkxqad}hA=jxNQ^miJKWwnh}McTHgB*RqMnu*1>mlBT| zYNE845|h>a+3t$YIKwY?M`cWQWYk#Y8{$0u&jqQ=!m_4CzICeVM+AYLarFQ29r=u- z0s*pck=M}cj1nVis)Dj}A&}oSiBgN&~sy6MlL}#7)TiNVFgV&;H+dyykj%_=8Z2sZ86L#55cbH>JSc({M1$K{Y8p#0ke9Y8zw_ey1w_HKasK?h!UETZ+5^ceKHOxuvfP<3?+A~Soa$M5 zo37~FVVo*Zj8omEHJ-f`Y;p9ETW;4}JLpNB;V8{;!Qa;;RtQh%E(Mb}>!-|fOypHH zST_v&hJZ%dpYFG8(lr5=M4>z2ASbMZ9iM~#t zt5**OiX#K&mc6^%)7qByEMkwA@|z(X_Qozz&+1lgztnCxfkV4k(KkwnQ(k*qX`OG{ z-WE3dxS`#q@I_0TTjcw5T?<)P_#$~l4t8qWnyUVd#Q`@`-nqb4U2Fez#v$wbuspj? zx-f_xMQ_pZt)gS8a*w;HUy-vs?D69VLW-K_{w{L!_Kb#@3579qo-=&SAHKQ$QY(E) z_ow%S&9nII^)vKVI&JgDe8UDpV^{u?Lw&yl>|d!>hE@_HoUrT*Cnt~W{XT4Y+sV6) z*Bja_uQ@J+k~hs9&Jqjpd_z+6X7)8GjO2p?8-IrGdI3wv%>i+?+74UxnWXHdd|mAF$sE%w~G`XmY?()90}=a?_t@=bnqjS7|>d-$Ss3-I+yMSIue_NU9=nxZ5(L8kW5=IqmXZ1IJ;%_3}_q6`vYQ(CB1D{h#)mrn{be#F( znMG~AIZIE3{!8R$Pj$2}DAjvurCfpIwr|yGe*-dD=C$Q}?`ED*AC?xhq``c*G!If=VPog?EJmX2_R%BD=A(M%|D3y1@3jH$B08pvrXZfWAGWLM}V$--wW{bM8-V$uoF#Gbm?Ew2LlNYI;s%voWa% zIFpp839Z(V4{L3?+RCNcH4#Q5?W;xJd0q7`m~_GoU+SM{`jEK+Em0l$Cj#!`o?DBn zkP--wU2QV=WVrDYLl-SBCP$?-Rh&lr?l1V}n4uPOPuvmHoT_jyQYUD8$!EQ6Sm3R* z7)ahj408`WcJ4unK}#x~DiVh57}BzosN+1RpPK>9^=wZ&(1kq<zV(6}~S`t=-px z!oCV*Pjc9Mj7CBLX2B!G2yxVb=s|r*e2*Did6D;Fe4z`-3{u_wo=Njt<8?wNjr|Vo zX1s}DxuLlJTA7I`jHZoVL>!e(BqorkX*DJz&h7S(RO$&@cZ~LQ&ecSN*@)eCuj50- z!7L|srJ=8Q8ID!meI^+ zIaJj%x;+!v+s%s@)6M3<@t6CqO;<7n<1+w1mgqObG}{3u3KliY0vbn(W`pfd&8oJ* zm0*s0!$Jy+;KqX&(|!r&hpes5MP767Aabmq5*L{<(J_l$sAnD6GQvlIM-k80-{&tU z1U29gAoUO($6(}?A#P=dZDG8V@XqeT!GrjygOQLy{Hv$kIA)s{m3A2u+BA(T7Ql|Y zyf&FQxn|c|l-;JEW&26JIEkob1$(ADrjx3aO@>R$34Y-W2pSwmP%}Hf{UVp`Zp7_I z0#kvKfAtCN<-N&-9HUTAASldqI%DZ?g^IRmv%AKo?W`4@rX+R00EXI0x)N=NR0Ev? zzAV?!a$RulA}l8;2+FSWT#J5%5LakiQERAye1qj7R7lhLn81*eZ-d2GQcr|@`ZI~i z1J(OGOl`!PRvAE6NsB-AYX{Zr%B|pYr+rm1!i`00xUkYN%b?S}O)7v;8u$}z%UcB# z5p2(CT5O2!pl+0t6SQZZ0=1Sa0ERUbS^*UIA0%JafACbyo?KqsMr_<#iCi_M)E%t>wT z?NsspQ*@2JM5){h zf&>b--P@gkT8W~UYPiPVhgIGvggfp~ZaSA&@v)RuEcyDG2FFapx5Uxa&jOLVvaS@I zTiGkuN%T8E)4He`xNAv8`3bR)m=+RO5Gj+csmivJruW^A{iL!G^AbqAwQVC@Z2Gi`{K8chsYYJI%I4V z0hFNn?;-PqJWgB#G(n&`thIM}aR-rtkYsh|1Ef`260SvkkYoDk(k*R;S z(?lef9FJnOr??OGFFRoHb&X>*=Rb<#T$G`1mIr7E~Q|Yp7V`U2A|h(~B>SY7W$L;BaJd zs(b*i@JDSisgO?HcskGb{hV0vYhlLgsP!!lC_uhxz#d*m5w{;Sq*Eg3HJcUfzw#Rq zvH{n7a9;n1L#4V*twG631e~HPXK5|#0t(4< z`vne|V2b*RQQUc|_g&5aw3{!WYe_m7mBC4da-U~9wE3o!aAKH}LRPsp{5)z2;DfH* z*SiKCGXy|jqg0wuLxah;`mrRcXih&@W@60-6JYI-bSTLz zecj`jMM8P_c}hM1Xt2Vv$hQrLP8DvdK)PN@GMR4|BmlUwqslfeu&g0Bo4PJjDYlP}FZ?s|N&2cW+2rt4LYzp+Ky!zRDmo%fy@X1(RTDw}q;L zebiY*XP3lacVpjfU5Wvr<0x;rE3tDlvhaI;Z2_KHwz?oje2M5l4Cy_T4e*8-=?%0q z-vievdrKLBeIX*tTi=6(B%rjMN0N}IeU?ThMGYUa;u88(4mO*44cU4O3*_V{hMM)t zu4VfB=sdTani?w*6(LXR_AC*5qU}^nABevsFBy$~!ds>wN4f8=giejtM*Zl5EiawJGhlR0vgisrl#LL4AfYQ=d#5Dm#XhL{U2z zMK5V!)R$?n0?9d+ozxH^|L$F5NrfDtiPpECBEgi()?}DcCOd`_S4W>$oG8RjiFgeKxuhD$He)MT;_Pt=#&Oyx2F1PKdTF2>_@K zh0D`364ccNt~$~aV%`e}2m3N@MJRle9Ja8iOXXXkeE*zm&E$f(uaPw=$2V)xwP~;# z4Wu*FBr5(wFa_%2don06yJa{JceIz7-VU#}X7!`c&NdVH1v%X4`msVCUag){d2eAA zNFJ$RvtUJ9IOWu4)xSiJZAi3J-rcI%MLFH6d;IZ?V_r!8vXj(0L39V>&G3;V1LaFJ zK$)FHQzP*{8e!0WPRc`rmG;vESEbc+EUITv=Jd?_Wb+uQ>n91DHtNPC8XQLS$3oIk zVUkwrbbL=d1NsHIkvJae=`t`cAU9YXeyAXiMlgS36Z`Pc`Y z&w<3Xl|tDRZ$HUh8o(|c+5SVV1B>*ZL~9P{f}vuCz2zkgJFsaxrv+-mouDs-GRr;l zdE`*Xy&EZkbdsuHMzW{*L$ z5++WJq|j2iu|uL@10i^jq|`v&84&|1Af~$z}VM_p0V7)iAY2up@r2kZ8_uIcF(M?g{`sTC68kaHJy z()N(Jpn)3VWhUxy z{jQ<=HeL6pkW&SoN(v~day;A_!H2k%N+ErJkr*m0BXiBX$YD)eOk%YSI_sc4L#HnQY^-t*nDHDAg7!~yxWpW z?dr5=k>RO=B9_H+08X^+$T4a#g=C|k0H_lM?|T;tbVwmj;6TOk#JrmW>PR|Cw@6ES$i1mJxE3Tk zM#SUFg-}lhz3eFOeJ`}KN?KzS&j1VO|3HvN4xRdJn@VE3m?Z^7B2Mq^lqFC9yK$rFqDyJq4| z}NL3yRsS$x=^iAtTv(SS2 zxOhyUJ{Hrdi$ENTpge6EDkbVLuf>dsBLnQ8q!HI8(tC_X>f*L*FpY`BymZ}@(MUmu zvWDa?o~Gmh0ss>`5$c+5weo%Fc4ekdsBRMPl-Sy}Hfnoeu0g6-#QA<|4;hXqW&1l5*kL%)Xzs67R9NdAruh?a-_Ds)vnaY9>?0O16L z3H1rK2xRACn&&;d6s44WMjEB^s*)hvc<~|5b~Jwzd6_UUi3@A$l@u0X3e^MdWJ#q8 z;B@FJ{MS%Nl|d-YEYbqP+o|~mp2q&4#7z$`>o23zxZnb%_AE%Isne6*)3Ys+-1h|2 zKG5Yfv{OErFU_T4cqmOXsBK|b>}bwaR9Kc&?3A_@#&Rfn(Bj>QKBBL3MW9nhumLM@ zU-lpR`(RLtaTW|g0}YsE*%uBQ_wb|%6d9D~Ul0hNXD5$7- zvap`pusnClX>bqa3(8p`l>|1N7~r;s^OPP)GKwv%=kbbeBJ-FE41bl%0n(#WxD(9z zoQoq4C0Cilbw4-h6$3q{S4aZ^9qR$Mk2HTdU?AFcH~72&N8yW^&6t_UUErCiv1Do9 zMjzP>zTrhR>KPQOxP}er3@m8zH$mg_RUoox$P0xg&%YEFahsFdY3TM!wZ1zB^J&oQ z*N4ql*mD->`ShQ~6@4 z#lW)>JY&KmQ#V>13)E2fVf%5}a3X5+z8_N2UxhM=(q0{nNnk*s!HR)%;xK2PvN&jJ zLe3sd4P$y6P2n}~S5)Nk?7$p91!3Vy(#1%pK!q$hKb%pJ2#~3*V|M#_?y3vy+h;F5 ziRN)Irdko|R8fafqg0v~+=*f~P{YyQd60r%H$r|YSO-x9GIoG)+|#B9`*#LbvcdYv-xpr}eZF_b)Z z!ZSQ&qr=z}bt;l+g~${XyZD}e5V%9|qUnA)n()jOF_TL@Xd(d7=T`P}qtth_ZBXOH z``l0~xsuKpGG`0v|H*Q*i0q`33_7 z(#_-juR30D!Qd@s;-9(WLW-&lc*4@`QGmNNVK)Wl@t3(#WKxH?N zk@3w7;yLzx@<4Py$n$w_0c}0G4uu%n6g}E!>5?e>0lHKN8!9aJ`llYD_DU z1dgR!HT}ii9<*B#)*~k&9t6gGsmDdrIZWTt?6{35{+97xspmefD4!ru(M@oJd6jlxpPZL zH!^QeL4!Zqw^7#t0RUYKDI77Z@P=H+S~a{6Bk(EAFR>-M598aS?(cbv)JIY83|IsX zFFwS+)_1t~6!ajQgaZ|1L1xuh7lxz;Kb$~`o{tS1qs@!wD0i|2&^9`dcIs{;x`NOK zifxy;rR^(5wvErc5aIU%^t>@))rwvC_W3Iza4!cHAKWbiw^1h`BG@9Bp(2rQml=mr z29>=Gg@pPPo#}op%|CFDsm}dfG)p6eMYKg2g8hR07RcaxS~wHptC~c&(65i|E%d1R zsiUh@ZcWTOAiG1%sp!;Ie3Ev5q<2pq?sFM1ye=P);W*YwsA$(egqAhAJSp6g5R&dY zh?fL%DoKO!l@Nuag5ee#YQX##>EwnQ(gCPmf%-rN{;$OXC_!{n2)zY&-#En;($`2A zM#Y83w&Fag@AT3r+`ob^zmEr%(MJ*V4TP2wQzOhJm=0W9_Aa&9Azq??Ojm)L?RB`< zS$+Sa+qp$hPns-7^1l|+n$ULB=JCo_pi3!Qr5Eom{a73;T{lOYC#|Yg zwYUB<22Dns0}=N~KXmE9YS+fQ9L#Quzk|0>C7eM=d#f*c7O8n2ZJqRDPkG^?)!^002H{_o&#Vn-4nTv&+ zclwWXyY9_<&PTEef%wfwLyRzS0=WMl{Zxye(GA2OKR3Kt>vcrbJun0{yyBMO?-0Z3 z`8e7j;mAU9_wj~rLzAuNtjm_<4o5&SYt+aEvr$@Yq zU;VM%I_COt`wrWR_8)a+Z-o@hv^6}o&3WR3o|1=qzq$4I!=8F2#$LISOF#Hl^`2bS zdcowbRCyAzoA-$4H0~@-dh}SpZROreY+JQc&3i1H)+Ho_v@b({~s?~tWF9`)Yx7S-a7k{>BXwQ4ol_YhvS}h zN;_<|#jD{B`{8_5vkhkKV+|)VDyaU$V!!9H~ZAz(q zV8*PI!_5#EnVFQ-{SsZbV~=QWa^{+xN2;b|J{Gofcl5XCB8)3DG78#i^HQ!|{N0L@ zdxzUZ`=7gZJ@D~~2UAU1(OrGp%-ySoSfWpR^3t*+vZjowvUjgvU%5F-ar(gW+O4Nn z40+G$^WtOk=FNK~f4=3gJK;jtG;zyG&*f-MTeNSR%GaSfd>0}ut!;+pZgJh>hwGN6 zPOMXAO#ZQX5x?@0&IxLb2n7pJv95Ow@u9h0^j zA>XGmZ;RjG@4n!KFIs* zqobkA-4#s(`%D8f_%<%6rt}%AY$}ESvUVP;4 z;fDS_?XV%KYOE)8v-SG*ifMfPEy|qmSEd&v|8PxsMoH(k_=`vJc~xf|G2*(mVVrizr-p~K^n;tUWF)K5YyY!p$<0Tc zjX*YU`ua^@zxg=7p?Pf3A8tO0@F()*&F4Q3qwO~xX3zrvcN|9Ck*{^-o5waaj}@Gk zio7rRTB3Y>yZy*kZSJ7DB5i%NI#|&3$7w&-IyY(kq*5Cl&^*1m0;75RjO2A6PFnEg zl1J0NKUY|j)B4RjcTl17!rr?`*8KGGkHZp=k^)~_S!clIyas)r&t^g+D4|;p^**lEBw(V z&95)W81Kk{70K>RLUxh&Qc(xq>MEXIWK6S#Ym;fDM(Z=n6@kym_9#TV!o2pG?K6&4 zMfOjzIR3eN_Fr39@zGKoeLN`{}VD&G(P1R);eb$%uz2KRbcKOMuZ;yXCDX285Wz>R<@6XXw)q4LL z*3o|aLt#m2(%RiI*I)N!oHC~rK+~%#Ycovwe6P+vaUYIryNSJs1Jl^{7$(w zH2l#dTkG6Mm3n%Z-wA`~gnbMhxX_Sh-qDcdXoP!gin+E-Xjomh6n{Lb2j9u_UCvu^ z;KlB*cE{u<`Z^Pb7Ek`HknU4nt5&{O{Yp@!N%WdZ7VmTB4_<34_VKZt zf!kiJimdS#4*YZXD%z)S8j4B$kq-SoUwGK!IJ0T?M-&62x&vpWJ&$inYW?O`K|?G2 zi+hLP44!ze*CfX5J^!xwP*~RGCugSh{7MM8inwL)JjtqT9c?k~>tX%Thf$ePaVvz& zlOU;E9xfn<=>B3;%hKXr>!`M2|5|1Fy&Bdp;eoE5ww@%YX>0bF=l>kh4{_RWx-~%phcO zl=~gH)Wn|GBNKZB&*ePdLljfm)8br26_9Mu(@RYVswUe+(+App2pT#+Uj=yq1#;ps zL`(_|4N?FibY;gfXPd{Gy2qx$%lwgwEt{^ApXkrcs<;DZn5N;FLyX27`r|#WB5|hC zNFSYOvQ12T7GbG!A5^vR7M~r&5k!Z8f3@L#LC%9J_cRhD9`zM3el*|HVDwJljXxPR z@E>eEUe=G%I$fFQ`Z)18IjT_FvN1ve_Xoo=E>@{)Q#0oY?ARR9sf_2mR&#%8ZOk~p zME7R;7J)IXz~CweRV)%@R`e0uFhzcGq^dSK1xo0+&}l&z26R2$%LzW!dH5ybySOJIY ze&Reve_}N2TOtnMU+lYD?2l#MaxCI5HGOw#>tDmN9x@s^Dk+LJ*XuO7Y)}_I+BWO( z1G0CA9iZ%8MlB!>#ZN>w{>AST=!gw9OH&)G#f2w2wiLO`iueE-RM`s=83?7H2SO=N z4gUdx^n{7sVV=}<0Pw7ebF+fF`Gspn-y=rjD+dU=o5z-#fM7Pl#<3i&+T+NX-B)RE zf(PIsF61zwkJ|t|;pY*b+RwtZw(z*wMTC^!zzl&%f)HHWR3U1UER2w`MC&-caN@lwWyr;@=KJY^?o!7!`9DMY*) zMV#WrNAn3$np!6}tqUZnACLA`yv*nHT+zVuOhd$HIE;3urcV<113(fMDURiLMMhWNDoVB8N1{AO=o-qcfl$FkIGRmu z@L6~cg#~=xynz-B!;faz6II?Sg(sL?gv7B}eRXU%!inI9=$bb0U`=roUqRJ7SM?2X zAj3I?G2x;9zB-kb?$;oAQ#eu-^tc_yU&KMjs^jMh`ycZ?tRL8Gc${G?b9M+=(~FNd zVSI}NC?xOu$AS)1*ED6@G)5NXorH}tx?^54X~xy(ioOkw!J82Fu6$wKe$9` z*Zy*#^rQua?R_e-k8>T;uuut|*tU*n;$d^f;Z5c>ZMo4sZxr{x!CXd{c|z9?X9DG* z$Gb5L;yBSBT=J+3N5>#WcI9|;lM@Wna3xJs*1(x$E*TdfKZ~GXR5tA^bd|TSF2#Th zn?lC*#Cs5apf)c(nlF*NqeID^K+1hi^*Zfwa(4{}KRa#(Sys88U16>biD${`YK9jB z(u({H-gMYiVE9CPoTyeBz|x|lUJ@lvd*Bb0`OqWv$=jR9wtSHqa^4*RhXf zc86%E*j*E{>9r!!Rb&TiLJB9BOzLTWN-6fKikN*c@#1Ke9a~k_oe;~)eKOoE0awx6Hc97=T+YGE+jkOgMsv1b{hy4bBzt5 z;ic4ENZUyZWWMzv`>n*!kOR)=7@RqFMnm!+4SmPBYdzp;P87B5{M=ZR{Q4UrM1`N8<)HB(%Ws$aTQ3wOE8Zm-cD=eZf=D*Z) z=z%JR4eShS-58M|H1mGSirh1m@7K=mKhR*MK18cn0x#fL6PREEfrs_0q&7uG61kQ` zV|8?L7@A&9P0iQlaJ6Ol4y#;cpiF9NtD}tNBu=nIGMZ+Pi5u$JSDAQ#t#L@C+=UJX zLDeW&B8j>^_9s9bTdQ+C^Cc$6d7Nmdb}#aV8JpnX1@91;c!c(hFSd>6P-mOX)Ar6| z{>OCBYV$**01rmUq6)C2(tnswA_?j{Vh=wEs2^9!p8)zH$;%ed#H`ZOo_6>4t8TxJb@Kb z01%tbj~t5+lwh_DtN?Dw#S}pTK8Y|#gAP7P$PNQGB+@02V%@ap1#PNTlqJ|niDj3O z;|Tuu3ZQrhD9;kDw-1%0pNbRtBmTfVhxz0l3RAiVAN2bcI(H-`2AmCSSHpRtH{?>y zH4%wFYd$^8+Afh$$_ao`0S!Ac9IY3S_)MYv*2*2JO`HvscTy5!0&w8PDMiLILSCRR zTwJ_6x*;jpQBMDK>Tn$?o|plNw{Yy|d5-0ML9~IX*_{;JhFSph0eT4}%uoxMO+hg; z^sJTdbDGA2nFVkviq_hr?ZtyIO+5P-%rcL{o?HXMR@&pRc!J*cdkRQw3xD9CbD7b= zO7v}%xKo?bCUK<$c*H&gLMhZUT&b~x`*A`l!uX(qc|9OLf)mVvuEP`s*1(BjwfKLE zh7r@oO+O+cdDD*;{6F&}EoM+K5F*aw6f6-P#yxNscKaNPU4VKI_<~%)WP+*C6C9NM z<|jB^Ajt*a&_|HMI6NaSBi`04oa@U>lQgZ9s3gBp>@yibrVtS4#9X6puY@45r+DDE z6a-;!QBck9TuzUHL4HKG);~n4N0WySE8n#wg-#k8-H<`jiA6`P@KAsbh={SZEJ& z0<%>9$q)7on3BGP*&5Rj#SmlQ1?I>OHz*0`ibYxH7ulMq?qdtw$nGpVv9}1Ei2ZzQ z*xV7Z-98Vm?xxG#bU73V{}nFhjrRX8pFZt3C~Zi23al|o>JgaK*KqS75LrF_CGQYQ#$3X7Q45|0x&)C52o6}iOwcv18NxellU^^59z z4K*Q(!rMszXUYzCz$6ic1&Usjm~x20Tt#4)UZRUaPW7m4?yCR?06ZkG>;KN;a4M9F z;?=MNE1w*oq7p3DRmb9{?*Y(Is4i}1`Di3= zhb_%^u2--kvX0Hgx(R*?mA;5sE0Z>;D_AG$GRE@|QsUAlSsY!2$w-Ld)kbfF(UyqL zhJgA(Aesl_M)fC#-DsU)(mAbAy!i}SWs`v0qj%;QX3$Xy%@7fTSj^#8%}<}9{yvBi zNMp#5#_K$mu!9vmW8T-w{ZX!aRJU23QZyRliEY9)lrHt-R{3_LcE`|*zzd%i&R4} z6Ni>2RZXfka0|GPr0P*!xR8~%Zsa_!vnfbG=JhP)lNLIrlJ!dN2Lx2$ASXpk28#2| zAp>YP^6}r$P`Tv(AjJhz}kIz>>zwRC{9GbiHG3}pw~v*`5$FD4m)4r~Z4 zfeN1xj;BG!Aami%!B9qZql9HTW;C8SeC@<41B<@g+iO7e+G93pB_`m zWDRAjRC7!wVUrw!FUTZ>R2GCj_Xx<_Z<9U{;Ct>0$d~M)sOC^Wmyxy+1mCmvDXrBI zZt*9cjMtop5YgB35qIUA?hHD-u{e_z<3MwJ@3dy*gOHKDK+IrH_?L@ zhw7M=Hle%qpb09lQia@%_)L42k7h7#xuV#~$W4X~9SN%_UrQ2GDXJ%mO!=8N4!%Mi zda5lVFC$XtVG|6zz!aob9FnGYp7zdcJ|GR1W2U3puPL3-BWIutp(XF)@(!s%>d+!- zcA`S0LP#APAYlMts5Lv0i=cV2(!yLzf;!Tqc#MPdy@r!Bju4p+0@t0{y7axeR^F(F zF3Q2eilu?KZI9MYW!Ay&%*KZmIy5*(hnr0JEC$m#CRou&AE^^MD7GGt2?>OYZ`vSQ z7#NYH-QmShI}RExQF=TMCs!Jo_wAw?1pc-V63rXbZMiqvE4)Ow;2Z#qz?$Px`Xc^% zPNEuAgII$h8NDvoe;NlK@s$A6=(WsH zI_Gexs619NqId+|ov_12P3S)fEGR<=#>VsyF%zUC5|RLxD2nB0fal~8hc^UfBA{%0 zfWMMYkvmcMr6G}gi7XiTr-O^>pfR@*_7*I<3p9#tiE zj%XYoLnu96fQSc}7E^O1lu$b;Gjj_97cQL9FE_EIY1TK^Gkye<|ZM#-ajyiliT+c!L#I8JHA%(Z>f;u}E*S$C#>^nSt4` zGZ9zhABp1w;7}$VsI)u0xPhqvd=pO$BAhdwJ^KssEPax*YcTm2+(+UHpx?YiI$-^M z=$kMHQZJ*o^Vjq264=KokbD311lfS?h@Pay0Tshf1i7CNw`XEPaD%`f#T7^9g}AJ{ z#g~9qeD;JLp=fq+3Le%UtmRaT1{Kcn)=G3I*`R1?`CB80NwB3yX~BUp)WSO>E>*4a zRI`-g+s!>Q_C8pa>k9B4R-MT)1TGQa1lofv$iw|0$-;!VOj=of#!T8M{*A*8C`#OB zVl+a7d#EKMFH4DoE0f}6*bAARG%w_GoMUhjwc)5`NF|e8Y6D>LMkA`q9`qI@#Ut#i z7au7#(RRv^YPdS0f4$h9*arqE&5ZzBiQi%N2rMcZnpw+z7i4i{$?%+nxc zenD9UVamBwe4R@MK5TGQBm#B^t}}@034?@LMcoZzS;CXi(IFw2CNaP$eJd7kw}bmJ z=@Yn^3e`CmG)}%okFlJG* zkP?{`Vdw}GzT+G~Xo2m%sm!>LI98M`>3ISlCHJJ9UaCDwg`(9jQfq>aHy zg?4rD7fT++{$$4*Q%$G5`whNy-)=6fP>SD^jg0l`fft1&;v0Od;%#uDBIi3r$Ed&% zDsiq}SPW}o&DWoAFr&uEz|=s(OKG%%sWsa0>Yan5FdP!9Hhz^Y2qgCVIVxQWItpfV zKJR1RMN6g)zf46NdhSGDgLy;_P8lNUMnFmCwt)0<2sG@mQlnj*$MO)2qI@5kH6WUi zPOc*<-5*@cOt?J6U>~0{J|Rs`hIdl>)ZYg;(on>^c~D6bSeLQSO8s6CZJtlnZbYdU z4rvL6&+wbcc(5SH!V!)LLEhjo5zK+|7=gHj?$C-vtDd=u#ENL|cEx#~;E;d~IU3p# zw#1~Eej^sO=e}9s`8QU(SfCkfrGign5>b4N)(?UQmuIAxoy4I@y>Kqa$xFpbp2gxx zRcTsiJii*+1KR;_=)nC@ZYj5Rma+CUno-WbXZjl4W=3|1;JH%C@mT_5zJz)hL1Ds_ zCI8St{R8UfE7DOyFu_&ReD((V?V?x8R4dTmE zKP`w9ymd0~ce0MTlqsA=R~ZL^NC1Wu=AksWqB0x4M*wk-W>iJu5Tp#tCHGdOP3As; z1yuf^gPgh5u~eUNaK3mM1+Zj7O;UwU^Li?)FnA&KnFRl14!% z2bqmv`*81k!$;xOxY{0OA^=9#nIV%%+OYTrpiRc3t}s3}DrB?X%Yi9jH@tnYiVCD) zfr~^oI=lyp^mrI&Lm4S>EP8?UA&D5TqjI?MI%GrI?wDp)EpWDUI`{-s)?3hJgB_?C zb%qS0*+IWoI_vyt5kd>gp6%rZcR9%V6iOiCQ+S`3NTzree+$n#8*Y=tP0U80hCG7W z7A%xTLFjikFcpU;2Cvb6MVLUpxB{rfB^O{$WIw^GC?bA8IEQ$M;%cx49mOrT%=3$~ z?h;L`Jg}j?gJPTF6tg#;Dni<(W+6mKSXJU?fOyHI(#)ABescbN7V7J9UH zo@fF5@K_#;J>p~VV&+}~GMxQWR^Sk;qq;FR3rGlN>g6v@FdC7z434*jazxG>0XdVK zu}}*M+hs-;K|sU6S|y&wX5zVHj&scWN{RDK9O@h9fNZkEX9>iHyMvO&DW~jT#YuU3HMR5x8!~vCCd13~6 z(gVp4=cvCAcW7fKQGSLz+y(W4IS*YM%QYT2RDp7n4MDhZ`T!0S2RDDHr zrgX_o0=b_38kG*nLM97MpN0=q(ccIpr&NL!MlmJ_>^UaBe}6-nZ=kCT z?|0#EY0K~}Xd$I(fa>s6WCwxchKe=ze1Y{A$rs+B(LXm9;khx#C&^^ur-T*2dIm5C zMoy0NK^A#ez(rCnT{<8<+(Lc^zLmnH$`c0*O9S;x;MPe~27p=~f4`4a78GDg@VBu$^02M;IM@ev1>ucr%okuhWZIB)WMiq; z5O3#KSq=grreF00I6?}PD=?skR&vy9gnB#xL(_`|K|f~|(Hq4=5u#73P)0NJBUZ#m zh5H+@ch7<~geiVzhrStteM}{pn0xTW-0tEsnrk9%E3K1;wV6ZbT!jUsdpzuXI}nf+ ziOt`Nq(z#|sD;4C{P#Z4tR0KUbJ+24aDHzqGf_hxkFEet7_S3BF+B?R1A2y^=b{t( zn(sl5wIR){^Q^ZRxYp|+p~0EY_liiJ1w$>*d?R*ta!vp&BJGK{b1lR5FVUeuTO0+6 znMVUSXnAN+`w>pqO@w45I$8nJ3td>MFu1H93p-*feA^H9rTr4PEa^=12x^#!3xph8 z3u!lSh0J;wY8vkHgtx^7& z?aZ23hV{iroo8rLfZWl|0pUK5gVvHt%!Y)zK!;k2d^ow9@7H4WXBXVFA+c-;$ys8s z;P+|;1tQ(=0unE7p$TJEhlWiD@}g-XGFy=6+M3rg-_Sds1v=&X$l>Cn>@A45L1B`a zC~^9+*>DJUY4K8|qqH{Jz?B_YK(51wqcf|b+c{~dpQXbGtqDR(;d}9zWWi8d zAw+R*!&n?B7sA0uJ|>-28V!-o9Z8aY$r#;GLcYBO({mefKhY}`$qjTMoHdot|G+JA zU2aD)IirVa;_^~cg7=S9N`!`jgynBq{GfiQ-OHjR{LtZMO&M+3K~=z4LK&4e1$;yc zsj!GYfNKP5ZmBW@I`NOz(mMGbG4gK(>XtGSl8JPe#89;FOXM2+=6U@$J+C3{%XgTh z9mvai1WZnnZ$NceCLo952_1e9O&+{T%_FcX3`0mAG{PFXr_2)^_7)M|6z;e1YzJXD zQ&8^h-^GA0X?6Gjx&jV2CPF09kv{=#mU={F3P_B{?3X}Hu-Lp%d2R8?rVJ zO;{WZo^b=1lL=I`0qV)Jp+v6v+oZdOxGB4qti>H(CNT^(*d1V-gm=EBn~W83mY%2< z32RV0kCZCQZ+aST_`K<9Bo;uM_|h*6^b#GKuZJNa48(C*`w45IUf;4N{MA>2Ysh(}VD>u#|)4b8Ykl~n?fr4(*ig!M|3I=B~9aW0^!@GbI$O{jcW%<)LKNs?jI z2|P4~aW*^{f?Hiu!v*jb5KcVvhCDdo$30GOJx=lFq5uE-(1%n4EVxNMMreg3WKH7? zPPL>ufg+pBBIJA&@J1tt9^8qbAy9z0j6D8I4mK*A$u!R}B=BWcmHmu|M|qG?`!_`3 zG?jfCOSzCl2g3l8`U+|~CGtFiBv-i{blWnE)Knd7{lSlxDwi*;tupX%`zV2X`G`2~ zyqMQuwgDn1OXx-;5eHVYX^!U&=pBX&*fpYB>I6~lP2oqv45`m#cq3#iu1O`LL000` z^S$9TgQ4oS^4JS*KILbo_~*^#XHbCg02ECIIgR~b4QyYQsO_v^@CR7^U@;27$*+gt zQ4^RhVIyik@+ zKMQbc0F!RN4ktUtci^L6edDPt;~=DAiZt*!{X=vS9wfxg*qmLvSa9OUmvAa%3cANk zx8q7ZSqg8yH~eAna_;a-Pvu~BQ}ue_Z5R-xW>n4_{ufB*Wd-spmJHBx338%)z};y4 zc8lgaTqFKgh`z%`;a4G3p}~9|#W?m&I<{mA^|Ot%4lcjx>lQ+8m_pA&fa;3vX!i_; zl_UhG&Ef1SC2OQnp37lnn5!HA=jP&WJRVvL=$cAqVBG$d<_6F>Srnrs*$!06jS(q8 zpNc+}&VO!4+oNIbC4FzQtH7POB?%M!cwLBEb|J5^4^Qk_(&ym;E56^KrQ)Ah z!oS0cNOPrEwflJzZI9Us-Yu2pXo}+7M%}Oio>u3}#|#&AYrdC#sPuH>0nz+7Ok<$z zmAbX`z?6IZvr_ns_HFn$9p6|UNWkyFs6{&fow|V0hdmrmT#D_Z;$_#Nq}CTjQl(`0 z{R2_A-S~wfeNnBPy&>O^;9mYCO@D^-CE&*Yo9o0_f0O;EKQwenHy`FW;z8}b`Sj19 z@SmFwbJJmNBFs<-4fw;&XK9aQ6?*OFbL0Kl`Um#;@8&S{TTkk)_x$VaRrt-@H+WE= zN$RE!z9vpCc&&BAy&H!;wU>UKG!Yru#nJRTSrkuyw@?4`^73*XDHyzz=-s?|^UxV2 z@#Co_cgap#ERPOe8clu-~4Ajfs6#c(ILsJm`idI`h!xeeMkHui5F`?Qiw+~r#pZ3IZ-I}yz z{SHT&^{{*B+V_a3Xbf}q#%0Z_?pge6i(czo5L~YRIc7rXSELNN3Yk*uqh1JpGGwDP zFnwFC@ynNft=x+0fNnDzmU6YbNTWsH#_(!foOw6f!hPN3yS}tJLw*0^c=?s57PKCA zTZS{uf#MWXmc#bVq}d-_7(eXGO6ZHadK>jq_Dw77{cKV)y=|!Z7K#N8G*BY9y|du6 zgEfZca_zuwZF)HWI+sse=YL^)R{!&T(-I8cHI@p85|t2ZCOi@$et2O%Di>Y1hZlr}2wV`V=SXP2F$# zu6=j!>HT=9=Zz2*AJF+~59OhegBa#L-VfLEGs-f&)GbAt}H(FREjgg`L3!g zH#P0^cvorkp$%rUWq$l@cO2bbt+X7e&peSadz&`5*m=I*nG@?MHN_duKUvn|{Efv? zzd(OX=R3Va$ZU>pJoZ3wY!b>Pxc_YW#b3wG@++^+EH51PU^+3ZVcRFgRV6f<)F;;P z32pl%F}T71niG|`CMeig>&&Mjaj$ftISn8YHzX;ni zb?J)KAA}7QPD-k?YzuGSU}p)d)c&V z#n;1s)m2{kw5g^}cFK-RH1FRh{-JL5R~LpkGoy_7Iu6s+qs;4cxwaRjJ)U}fe~|N< zF8!gpC~I0mT~wFLy2fGIR=%cgNuRaE@J7SI@-fXXpLgm?Gg42Hap%;N;Y@UMu?^?4b)V%23KD@zR9oG!ym<08+uD+N#WK6hr9wc&Wk;S0H*`5O1F z;c4_98Vvs0RKdTEQ~dd@CvSKW9Y#^z>WRkDRDz0$dRv6Swtmwx=Wj-KpL+Yz6ES}( zpj*IZ|0yS8vynC&zCznrYI>l!zPTgvt5b#xIrXtq z^uz^y_e_QTEkSd6fu&=q^2+01n>U1an#IluQO?EDU&hEh^L?!svVezT#OZONhdsZM z9l5mZ^swbdIhrqgzn}su?eaj{+b8`_tmuu)e!}bTSa8Vk_N2y=_Wh01Xa|9{=Deak z@7yuT@}*(hMb)&(v_=ZLHR~fbJLEdVvEbhOj@w&3wZDvZ*Z6XV(pg7uD}2lPiv@?w zZ<9OG2I)iV<|)gM1TM9T{OWpI%fZOi>*zWHqPc(3*lfI|U*GMyRyO3F9BJ+@?Ybl2Oj5E^(@(|aFxCwC48<&#nCN*Zzhmy%x+>HmzJ1IQFD*I|z z;L~&I)k<%|jM;4_c4SRa-wR>OGL&fviMBuPcELAP4Toy!EA85p%?M&jZHsb?#DWw) zmQXuhCl~a@V!vtM#mu9X!o{#4vY0)k&QjT!e?eHHeY1vuPVlwf>y}?Bq|N0Lm>r2% zT%93%mrMfCXe^KSzf5Lp-q;pHC?=ja%Wbdy=y#e;ij?18l~~aiYv?=S>0Kc9K8nYD zis4EJX~BE5Lx#Zu$GsRvU;CiSw%6E#6Lz)_G(cCJ5czE!T{_%{@JkLACbp;SLhI|X8NKdD_6MJH}vQ)Rms_G^JV+bJSB zn!>!tE97SoVQjJ5inEh5tBV^>lU+k9b^5wp9Apjb*s)skqy3BSFkU|xm9;%Dt12Y9 z%2sIZpJV#J*n9W*sLN|zd_sVz5mGCfDwx<>tKAj{HzHmFk-d-Q^w^fosY(^il(H+; zC;=iSA!G({UAYlRs0l5s+VuS<+2oNqNlM7)o$;^Du^E~g& zB!SR<{C$4=ch32J_yf&lGV^`kcU_+Kto5$d+SkTInv&jfV}Rx~wd0Nayrm`WZ`R~4 zSakQ!s`Yz@KIKXDcj9;N(FP@SeBmv-()q%6+3I-5>HZmmART4iwyG)U<4)1c%o$KQ zplV8a?Q@^xjmhX7UloA;wY4|glyMaL^+-`MPteu;n*y7&^QGjxMHAM(1%(SAPxI%O zCHR_>OB)6$cp9ji-i~{6`ZUoq{9;K`_@Inu z!rH^_zo8`M;w=}}Pk|=kS>J$2wSHCdy`q}T^o~1IJD*2~Qgi;>{I$)O>>8Ne1L|0B zC!`J;GW+VL+idh;p8PsYluJn3)U>Dkl21xY?{Wt3tXg>8WK1#Z=JrUo-F^4nzeJ@U zYvnUa=+wh?p`iEOx>c^@C(Ey=0)1snZJ-jzpRg7Se9rB^lrrF~X}zp6{A8a)*n}bD z%Ka~9<$1=gg5?>z-!VeY;El$+j?Dd}{>{+dzLk%y%f!!$x=#4s&ShKH6`W3|cGlO^ zfn*FSZXG_Zo^NO0nw36j5e?0D@5#eyE&B&#yqXnyZ(aNUNH4?vXuc%pu}4~m`U1ZW z53jAz!}O_qqjA&`V1a$_BoirY%^ZoVq0e}(@aG?0jq3+M5YyKmnJ_i}(2x8>nsGOH zcK>g>rk_s1ztKEbdWf`i!jsL*^D%|`xze)3KleDA-VYq|74*SYB+Xtv zIByI@Gc{N-?huS2E*Tvd;b^|4lwwZ*oSk2q6-sE_|5&!WA@5iD84!&DmC;2djBeWe zWl=JY(0Xpwrg@HX|Kk~hYHDhRq&wf8T($7FB|CfgKkEs=e&jV-Q~Jm1% zZH@b{BPMyTvx1&wUHM;EV{f+Lz?}6jt)p)CuLSOR3_FrTCzO63d^o90+mG{)Q zc|bO-wY53DV-UBTcAYxePN{)+Yu{Hm`$x9X?fJ!9@xC_a*&7_Mchcf4I07C2DgVSa za!7IW!&z9Js~_uY878v?DjdHndJn+{}u$`|o>bvUzB>xOZMBj-_66Mj<9 z1NFZN>bU-`(}iud1y3A$A>5upt&bxnql0Okk+i@6q3z!0NfD#h0;6ZQrTTwZ+Vn`_ z-2*G}Nbj#b{nyG6miBFlH9jlp8CXR6=ceQKneWt}{ayY-`FmVigAM3xD7h9oLGMNh zs!TWlgNR2RC6nY_-;m=w>XaqML*$JQ?k=v~j_0LuI(Y2O6~|z1xQ_yD*{+jv4d@3O6L%V|7vETw!CaY?7F0G|2$W4Xn3>{)IG zBw!~WPvQ<+;%b_lGwR=5KU)4K!o`J|B^BML%p$At)a1#}VSwXL-@AJ=!$bsT_hr74 z{P>Wn!v3SpSXLtL(NjAs^1l7#at?<)x<9kzoS?M?BNwZiwvHYB`hUNSZp`%?3gbS< zPlSpq=}oBEvgDNJMefgUSmPyZPTPH@@8KD4k8}GAO)w2>yfF5&1NV%67vh=QF!nw8 z*WryhI3UX5z4#A&jlM2vo{@Ag?$8o%>v*0-nf~yr!3Q^SloZduY##0X&`ItX*+Ha>2@k(Ql1({rl&TSOqzrS<7B% z+Fy7#E>uAK@Tz749i4eg&a6A_{-saT?a`lNVVm&gKJ?acZoIFtbW{nI_H6kKm>Y^h z;=)|a;+o(`NKqAZXmAuaK{iWQ~uf` zB<4SK9T3_V1%P3l*ZuK(jiv6Xs7;U9v-QFEQg$tI|LuwJ2L-i*4{R(gum7OE)ib*v z_q6P3Pa<&N8=VJWKb)?>Z$>rxAxFn|I!@j0@d#*Lub=LJES~1zWs0Fwd*-B9vTvo1 z8t8>0?{%5-b4Oy~O8bVS*|#~H;vK*7IG4RJjR)8X*R+6mJLxa(Cxa9D!SnNA9|u$d zufjehc^Yzxa$gHQh--`tFn~X&NO@aZvE=xg);^U0VICY^Q8Cv@+g)GJvu^YQ-Y}%f zf+O?d-D(kTqy{UiT8{b7OcSO8a!7Aqbzpe#emWqO!Sx6(-Ft91jfDZ2B$}U}pEUph zsq3BJRUetp>A3j~t9!)b4_XB)%8p+P;37m)z(~QLzkKX<758 zOKl32wA@Tf?aLY9bxGVx?&Uh7Z2~BQ@ zVL+|#wd$$Uv?PTWuoOfHtEw7`56yqOmwmDxuYNRp0B}PvF(Z*Y(@gu$#OZ9$&=ckP z?*abfdAL1~<^h**HgJmI%L#QnYIYaqi6O8VM6mtIFy zReX|>Nme>~?Zd~f%OS*RweNF`X!J7*o3tW*^c1TI7cvlGxfvid5f$&W9*9^}`_?HH zd;ht8LCJy1K)Uc`bR!T%TkW(z*4uOUG?aV~MPe(9l6hWb2@Or8Js@$(pnM>;11cS9 zlVL-vZP@yS*?2(f+UnHe=8c3P(9}^j#tR-EC!8wa+qBIa@E|-qMsHORZs_ubR)>AF z@cw0+6SL3VMJt)$EEFop_{NXyMtmC*TK|cV>Vlh%$M(&{BYJ~Hg-3>FoVq>f8Eh@= z^{vGr0NtVPvsuFW*5yE*vv>PP&(((gvun1Upi}`0wg!&c%0TS+AjB2Y_Y=}vxP6d z9zER{OW1_YwgQw7fJEd``STf^EpeZDB4ZE;f(`LRfD#A9mUAhJ@H$}g(2|DK7a<(h z?rZsP)y=6VBVk8>;5iz#%^$3&f#lx020Du+jq!H=7ao66&DnC?pwCIj{f2!v_TL_e zFhl`&Jr zn{Y|*x|YLN%r7ISggvdV2S&2*VC3P90tcbk(Px1J>_yXQQmfu*e5?f)bh?|EIIf+% zA8V8vzxKRkD}F`#!Pa~EnBh@$GjN!URpY2*;EMox9mVm77&j9W)}?SskX;zM zr<;Pch}-5v{q>%CPKa=|^Ka9&oG%?eAuz2XaI*=bl7xdWboVNxa6@hzrh0d0wM??4 z%~ffrCPnc73M7M2kbIN>#rjX&Pm)feUoWbm4TmW@I12iS=4O|!s4Lyyyp9$)32HJC^! zp1Z*y6rKy`1-$el)JgUO-g z=d%hxGd3V;q?m;Fh7zd7J~iX+%|*_JBn#2aPaiRFKL0wS6)t9ruP=Q~4; zny^`(2AN5KFYZi9=%c#wkMJsh@!>W+KOQhnOcKN+I1xW^1eTRH*W&mKtvxqoyGwHk z+7nUR{Bbh@FW1{nn!uPiJoca5PnPdmgxj*@()A<|^s)o1@A;Gaoi(7HX7!BEVGdmJ zUA0R+vJ+RNHX&q;_(5(TZI(b6C?T6W^luBKDX}jFY+_ZAEEox}QyK@(owNuZW95hvhzI}y0$U<$`jogPQg{cC07V_Q z7rYaRvZ+_;{%YKVr6UWDUB{qU2L=}&;whb|lbgR0l1Y2e#Z6G3Ay4s;7#apHE z48JUzF!~U}kTQ6}_l_r6M>7~AL!iMtd0UAMp~eYwiaVFAqPeg2Y4xkA@QjyVNSM{S zX!K6^Ug8PH2jj}?UnKW~ZEiexUHb;SgoHv!AJUIeJT1H!0jQ{GPKXvvv)z>rd(nb};s0UyR zQUZMs!6pr&Z`%lor!8rr#M{VaQudR@YS1G&8yTjn_5_H_gR9;zF!l~RiA8R&Xkzj1dc0aiShTX%Bi)_7{G$>w%W?{Se_D@3 z&s}A0eIw6=WpuT#GFqoCCPHa%PtE&BkB1q$H8}Z%jz5;pMn`w^p^(0S`8_?%7ZXSS z+qq{JcEnxZ6D=8&(2-6=-n0{Ik%k0eJGJf4rMCYPUnia6Va`SP*Ynr$sqH`K;>#+c zCm=vFZf(xC1twx=o)W7ls-f>nZAbWKhiYF}PXsvoEJAbm-%AO97}iKx)0^fNl1&KT zDB23l^*89g(4i6Ukd;?5mXYHP)-{mnET?B|^VMJo64t`byOm4On=;8}32wbJRPO0OW@GSWbPWukDzxeVUe9+w)b6MBmU9rsEB~Qf#JsRU*2ofnsQh2la-ch02szL+1I=c? z5yaStKbWyO=b#De1xaKnj4^$Fa3U~CP4$D}<>ouOTi-xd0@%0Gb}O-;d>mUuX?Aai zUX#G|B8(B6=4<1(E+tK|tFA)q1N9G67JypM`D_53A77x@uEUW9BhsE)@Q)0(V5*gT zg7Go2J2I5S{NV6bZ~l%o%xCWPQv1I ztpeZ2>T{t-PCq=^+jR9X5!=eU1P6GkWfke)qIGoLtEAja2*n<*+gIUnh(vR`}KX7GHdHR0H)Ul)e7!e^Zg8YZc=8ANf-d%K+aH z6RhYcTvV z^{$t}?j3BHXwAhdp;$|pJnc!_DUc17#9zS9xK@`S-E9)0XZIs`v~CBVT%b~-1xOZ) z7YGy|VP+M;-A0oGP(nx4%?dct{8Rr^O^IeqfJ=$k_dv&8D+YbRXfj2 zXSzO)DHQIR>zzXDwGWXSDYUf{h_U{mm(RS5#bW30@7hz2W2lKTbh+6+Mvls?7#`v& z&t=vd!kJ7fl1?rE;)8|F>3hO!1vo=9dpWjQDHk%T6A<#F(cX|H&FKdoTLiM3ktcj$ zFpGH+MpEY!455;K7dV&XZ3r(}9QJ8`QkgeA>j?Q$l^><0i)=c09myI*L*z@D9-0Ra zD4ykX;m$R%vxq708CQD@4jE2~S%C7J0hNWIUB83aG_L!0Ic}rR0@|Bg%T4ghTz==ua`C0t6FDTpN7p+ge*G2%ux1Fhze%8`(_6c9uDDe<#_^kwelq$Fqh-p`)INr8h#) zN;HF`oa+hf`>+`tB!`XwDopmCxEg13o>q3G_P>yE`@Ryyq)jqjC9l9dBLB~7hr}6> zqg3mIagV!3G?&PFUduC%p97(y0&Mtri;EwN;3nh^TCWY>;i^j)@wYg9ZKo!x-y4_M+4^YA<6X~E{mPO`E?Y? z`XjucoH=l^-dtc5?@r&Ba>>s01*J*5``XH z!XL*q@j<;UMTN)HKVt^0PZNqd9w0w#bA*3d2*YzL)dWp=8Y{W)WngPyqL^%lG}9xH zd@+?yJV`rps647#AL==NswZLm3c%6rm>n=+~$Zup-fd#&hadD5$P)T+l24 zS*yyX%!>>-WZ%<3Ld(!OV#-9$Q%%KN^l5q%62;9R0s9hTPGvj6?a!=Z`gJt_p>+X_ z0OO$9t*FWc@(oTTjm|tTVi}nZB~NNf!|@;)z=tu(!y=GrZbSeiGQgLHMHmW7mI|ZpBU02nLQC9VeP3^dRDm_Cgu}8>E3;5#MO4_w2fy8E%~zov?fXjlrX? za!kBCe$pn+ln++sRhfg`RrP{WE+o+unr}dcgcY>NmYwgsh=( zfE@H)jX8fp6te+oYCf2X1X(`8^Zpv@-jUSCq$9&o%(Q_aeV*K&jii}E^Qpv&2x3_( zxP08~Yd{Fv7%YqAr^HJq5(<1*;*pqaVDgz+OAJ+JY60hq2AYMS$dNN;DUuEK7_Qay z-O4|-Zsf->J!*#l2bAC3xb}8p7#oPiayr67*m^93 zxy=MZLA=vEF-m90+{5D9E(ag^DxA=#R|ahDsr0|$s8x+)4Q42M#7P?KK`S)yAp?Yv z%32U%o3KHwt7A^LmHe|*p?eT&fOJyd3jj9jU#Jpp2y^)`7=vZutQwd%KdG#du9Kga z-wdrmJ5}hB%5z|gk!s1IujRN+w+m$~wO`7}plYamteq?l0*wT^X2sHA1Z9*lBTFFVnv z*OVE;_>X`ful9GM=2aOp3a!%m?S*G)%E|KsIMrVoWQl0MK$&}#2f5US{#L5;I}+9A zpnmIBl~Ra>VnB@*5iy@o()xQO-<{jjoA#x5-ddSX)r+j;?C3Az^1^iy9~x>)`bHNZlyn%ww=N_zEol>CU{NPz+K>;sP{rRRG(?+|%-Nmy-k`To^025{cvLqbJ zDO$6gH8L#3VTo6C6Cz*z9SC}u`jOg+B1`&j2n`jV8GtSp-ntw+uS5gVao=IUi?u;* z4ErynNwaC)#D%r6N&?TQa#I$0nj#it3K!CxG|!_3Z9;zbVVny08OHBY)fU1g^`VX9 zy^Ng^8?TRGwh~=-QPV?+mbQD5yKYlpDKdjSo|c;p2>$rFYgc=O^S6XM6#kijJ4;ms z7+X<;dhl>UI=&^V=K2G4B1Wh)%CA35oW)uLatkX_Zs@{663VZORm+vG4Jc0RlWC9YSV1{TJ2bS?_gg|#Q>j?9S z3n%)0tuOKhtSa!d&hmN^+oBD0Vx+Ql6}WEKhQtl*!t^m3u}^_6QaK9vP_R$p$? zvZCs<<$o@C?3g!N4r*r&hKO)jO%YD#XaJ<(iVHy9bMcuRNn3Hk1%kF-9uKRl@8*v} zZuPTM^Kx4{Cu^#Wdao6=zer@ z>19dQ)BlN|)|P%rgqgP34?5#FY@5xVS)7opG1Res(CUtpGmD-5HS`Jn!9rnlOfFJe zmDsvC?tl$W%uEAz^|Uo{+>vS4yBGb4G|IuW*siaS{9WCBZS3J=Cis21DP>D2Hl1Vy zFO%|Lqo18#&=1H=FTikwK26aPKd!y}B=t@McfmZ*H#p*i-5}MtoOgHC-DlZ%qm%g5e3nxc&&TTzdc5pgiBdD0CKE#>ERL%& z@5LtQ>IU>v^=sr*3rJ6ymj~9$zBuY>h*fv%uuLh`3{KojKzBv;Lv!z+J-VLr^2)p# zN2LzW+$|)=*tRW!15VgD+w=$LI#ExHE?fL(4juiYLeWt_w%A#fXn>4bYni_3kw^ax z@^xbg#Gd2P7EafylaM5ib1Ql6hvVJZG(2t^Z-cV|p6ku;MqAXf&yGerBIAUlR$xeaX z3BTq=WN2`Jdg`*%V8DF>S|v*slXNpwfepD@O4_J2oPARbDbPe{>a^+drzd9@|8frL zm6RDx)siPttJqci2+z=?c`_XDq_$n@R%?2_#x&I3v;GD%Uqv&+0%)FWe>rAHG_Fg+ z#@CsCXuQX6J&2xA#hqovTDbZns@+wjw^x@7GGBR4voD&Ng@n>;8F%+lj^Q$sjwIMp z7Sp9&{e^2&(1|^cW`d2)u9(ABXBEu$!M7-O25&CBr;)ME9WlcD992ld6ikG;^k4)DI_=(vSx z(4Tnqn>ItJ)kO=JU)tSIqLV{*x<6YBSC@bGd5t!wOYIX?r7I*qY=EW?l-5u6+7EMP z-DJ}bG&V2*=O_Q{N1Of5QEC}aZAEb_eWn@lN8?fN{tQ}~%Ri^#X?cGw^|SB{#|WE2 zjSw=LbL{D|Lz>6dsc}9Z=Ayy$XBy{`^yRwas`yR}fy~1hjYI z#DGNZYo=kvnxMp>pzDfbo5*&0t*tFG*Lk3<9m!Xj5Ozt6WA!f zUZY2e8sjuom947fUb!GEMSYvm9hGQHt%E6D8aYl`72M$L-WHDYHd6tlBW!Zn%JIYe z!gLvzM;()TW(>Qs*vi=$6HXw#DzQa z5FMSb@#BP{S#9(iS_GAspAoM~>bM?Xhv~Rfbu*ik)4k=C=|sb$BBpU5hYPi{yE0EJ zHnCPtkR6#dPA*QGLGz^+j`jRt`saGh?U2EE4*laf@Y^QclV&C#Wrs{ZhitZ6Uvb4I zAk`2yiYmeei~VjyoD>Qv(JROr2lFw(R4xE|&+fMnEFP$)SJM+fEEP`qT=YJtOyjhv)`<6jxf!AGohxM zYtfuK3Fl6y#CI+q#(ixs1-zk1aU7nF6YLELrE`NBMeW|Y#$T>}1kPF}5o2NE)?hH8 zyukvFx8Xrz{t(PCEieC3#Jxw@TGq*Lt*dE{jXnthrD7B*bf1ko*)3Sp0*5RqL&$u~^|JVxDuCwA8 zRUmH;FXBH$Helg7pclJDhYZJ!StyaIcX%PzVS_(qJkzR3jTW7-TawpxP&R=*0w0@@ z!;`D~#O46t#PnPIpW4u?+aOB1C`T9N=xfPQM^=;;vtE=77SNI16Lz84XHj=))ETH2 z)z`-w*QT7HQYwy4IYB-mk2C7jBEFgYh~fgNCvvH1pxu<<8s_ih^l4mXqt+_e@9HqE zq34`)rk2*2hU(zlzPVJYs@XfLr{nh+5=~(w;|_Fr_sCc}(Hg?s7ijTZ||LM1|KrY2sG222k zG6E=5Xd~qW!=E)?jsePMbTUYw+PzsC2_=bJjOmMr-Y2j8IfsS;6|!Hy{bdHR##GZ@ zA-aO4X%!d(j_Wgrs+OQJk%mC#LlNNBYceO;uh$UYYg*wv4lGu9Oq5UxbfLfkL9aqg zk->^0uu9IE?fZ+BKeuTrEbV{{59syey&{LjRIKJc7`!b7^`0h*wH}d$bN!AmG}fmc zbAf?|n>pCMHjBW#nZ4R-eS|>WgW%-jG%f^%hIeFGNP4HJM$De}{Ce&zX;Z#Tv6kx( z0^{5v`wp^Em@yUE z6+VFCGU3g8HB8Y=g{RegzrC!u^RDnv0&yEq+$9)ap|PNdKOv&Of+sc3P))daT#1C!*$z&&3)!56sB2^ zOmHdxNRb0Ot2UQ#hKBsP8GUYLFv?fZ2qt_x3~#H|oR9=w*hmQoTUlzC{HO8**PM0sG4&&^TT!hFK8* z##Tly&}Qa!B5XA=2UyMWeh^K)AwdXO7OK8DY3_TR{ve9?X1Jq*sAw+80GhLih0Zk2 z74a@(UMwSbfI|4>y%F1T)Nz`SVU2hXn!~W2DO59VS31GbA+Ewj`DKgh2p;1!Vv)3F zgoZ#|Ij*js=5IXJ8e5``kS(kE>Z}cn9}PTZrVBPxGwf+Y&};}4be*sUEG#u822VvY zDUQ=Xr}Rw}QcX82Z~bW)7VC8+{;p&|j4Ej$#Wh|=dFSRVa7$<-Mlpo0EiCwIGU+i1 zElD?7TGuPFDXa1oJSZZ({*^pb(Xb#2MOZ6O!FMvDo~W5FF{9E1Xkt=MOmUr^5}=we z4c6S1ozj@#!j>B#jhah?Z!8;r;_zRtBB2xO@coh?En`Iq@U-EB8@; zxDnqNQ;2>roqx8omK|Fz-M_Dyd=sK}9Y1~56hyeu*`IQrhP0zWCXrKATnaWBp65KV zRRY97b_|5s7G?Pw{SlAXM>$z#$G~&+CwZYn8YP1Ny3F+Zq@g+B8|9g_m41za;i@c6 zhIi^@>3l!tLHjgfs_+8HU4!NF?tS< z3AYK}ErUtWYv;&0(l=8-?Jw(S=vm0Z$gwA#AzwxMv^QG?S_Y%MC?JfUNGv2gviu=L z7mO|9sj1e@T!aiS13)$)CG}<&H_y=t+nxRyXXHpH#OO1R6rBO?dIbPWzjAMhSqsfshB`2K z-)yJKJ(0{uD{?f^=bD4)(y@of2}LM!bfCOXWt3~b4ewARK{YwTpv%V z&=hw*LsYG?2i!+l=T2n3Dz5Z*Qd=dKn#4rAJ{dGPLpz&tUBzt=7jJgG#bO4Y*CgPw zc|6`u`t{z(BPh*m(BpQh*?>wB$|Qohu;k4`f;b{uBaEfaGhr5KWlgTbT&q2>1IoD2 z{!W%majX%tFP+OFOVGb~{2vF+wD(+o@A@qzg4Vs92woD`X$IUUNRF!)2wpQdr4Rnq)mz!U*r7OM=bBy!YNlfX#ce7>kq<^&;( zJ6u*e>lQ7vo{lzF{$kviNCiqtgg=D8({wLX1ao*()KVQ6NuR&IK3~X;$VLWs3$UVo zR zXJK3+$V_%ugWdG35Q0F72zj}GQnK7azK!mKW1;w7hZ|*-m}ZhSipB}CorsS(4jPg0 z2=13Wdwo5fYk+pg#xxxGCJ2~G1L)xc0T{H%xN0#Tb73m|6Om~yrKB@D3gWxO@NywQ zQ#V4>8ptCG5lY?2tuUrUf4ux5bUZx!OZyhApr58*Lxns~Lm*ACBvZ(bk4z}oI{|JkcMRep6-bgK$3R() zjaAyg>^NI zn`@a6wHf(MqvcfOMXyjkj9bA3j*H$dgd?_Zjg*j~JrV2ku=ClF9YdySx|lwekC}Xw zo($q`3qoQ?*>}*$$y3xni!;(!G?@u}O|1|Aky zJk|pWtQd;NH_>B3D{RCY5<|yfiqMtm%~x_Dp-n^oyxcK9lQ`dqzlkywkrD>kOH*1Q zXswy^XQHJrrraV^$$7hWkXFmcIXM+7UA;1&$x7Ssk+EPrnR4!cuPTvip-|ey8_Dtz z+sd0QqB==peS}Kw)(O%>DqGPwZ<%OWy81g*Eh^820rIq^H?!!Pl%XQiblUdw4ypt zS!u@%v=n5j-e41J#73s*SKY+mkCE>VS#6v}!>oqjq-Wdo399=I{(Y&4x# zO8Tt)dagaPX1M=p?2D+fCxRCv_@aP_mtsYZ>v-e>5>6eXHCASio09Qrv_!MM9$TMQ z3YEu)GCGkdk%gkK1x7Ba;a`{%f#l=J&X-?Lxp6|@JFyZ}>nIUFNlHlfkzj0u(Jq6m zAlc+Y5Lc%6jn?sgpjqLOjWd9Ty3LgusvqT)ggU=>bo{>jX6UT-vo4FoSX4OF&+>}k z1SX-4kCs)XJh`aleR$2_xHbk{5_5()W~?f? z;Z{cjOX;&KTm1iY=4ex zB;-5!aX66lZFpUo7a%izKfVgQZ}0d{gxqBAj~}GRCJIG9J8!Ci;^4&AKx%M+*mjd2 z+sJT-X09onazZhKMtCoY)*+6kUd3Wio4{&G$Hyf{tR<2YZL~K=wtW~NdLz!V&7s>y zvJjL;tKg2XS=W}DnlsmOprAxn=`4b;%Xokq%;1-y(_sN_F-19eU|J!S>U1S7t%tau zIF6tSEu=OkuQeY<8%))WEMtVtSUzve`p$LkC6JhSz9Z;AhB~0gw=pvIh6Fr${mM^A$N5T$MnM zjPc#~<(G#f(Bcy`(w?HG%r?y?MTt`3&u4^z&yj>LIK{LSpq-8H$vq0*e@;MVy+hXw zgJ8f$EDZ8IEm6%C#K-$tSMvddQB*8IuPdzLrs=NrO)tzJg2B*?mfSc7M8_lJ%|+Wb zS8XAN6E}5dPKag{75%FUZ;hR|p6zM(37_#)v`8vlq_xH+ZJ0RT`k_ zj;@-XCR%lBzyV9hAq}ojTluhRhiepHpO((A>^t}=Od)wZwC|8qQUo>*Qy0HU$xoRh zotG?(Z)j|s;pRhh)$uioCJQ?L0z65CAOl9jD7@j?#z+D0ry0(K3f4nWNcZM>7T^+5qhb=!TWRSu`z$6--VB+J8B|y-p9EGJHxI(y>Pa+~lY**=RrIce!8j3iTs)07LiC#ip$qmAO5wsI>sc#eFp7 z6~)om38D|apRSP*9(Y-5B2Rm-0s#|i6d&eKeI!AI*%Ec1M=r2_3ig=w)8P+b^-MJ; zu3`_j85Ys1qYP5}W++0zP#z|Vpx=sZdB1^cx39MC*ykC`i#O|KmPNU0dTN>{l|Yq(gj*pRrzf?e>Zx*6X?}qRc|O zUyK5EC+UoQLbPtMSoMl%tP9lw9EzmHRaY8RVZW4Cf?mi#EZYtH(+eCeVG2=fjEOK5 zR>wuj8eaS1x`N|WBESS}XNW`4d8qwKx+@kcX<~#dK1?x7Rd9Q*- zR??##F_QyEX^0kFd+9i4xaA*?;rea+B4vII4ePEVBgB&Pyrq;jTa>uBE;poRgs6*V zsEy`R$jyB%-coe^mg3ntbkY5wvs|{QR3|8A6K-&{5cSvkxOG$|kB4Bk^|sX3+h(6! z2jOQh3l>Qel7Hu@RBn}QAkfag)KW}JroV;nwV zjg7V%iW8?SL3lYVi;CK^Ns1GjZVO4x=Rq?MwhZ;YZc0OR?(l55!by0k>T6cd={^xO zxu^yrD6hHT6x~;sSe|QEw(IRpQiAK3{Vyt}l92w!!}p2thgofmEu~UUv;9Q3Mi-xFyp5+i`(G#<$?zBBWC5 zWhG6QL3eEWg@R5;T`VP#azdBp**iAJ=Yj-$6MoPDgl|!};qPp7SThlP8;lcsIbD3y0Pm|J z>(f71{K%_ZQeK0PScyMX;f(IQucq@x`WD{PT=;_o&CB9Z(){h#E+E( zi-%3|Ze&!T+=-1~h}eP`?9D^L%(bY0H?OE_l@3uU+J(81N*zSb!6`9Dg;#fA#YJt9 z%qc3?i)mOq4Jw*KIoq!RLR5Fj$n-NqMe&o#!dRCOhnouaUUHnSbr%o)|M!R96$y+L z1g1cj4@2lq|9qStoHbLPr=i&li)O>;k6-{F2vGH+J}wjqK&*YDm>^&_kO@sms$uXT ze+I(q)0~Ea@G!tNUh4qMlDvq6uT&g>;>U?OmO_?A7 z6^xng8J}63`9jcG;}w${pn*ry(=R}B1~nM%iQ!Q+8_Jw<5z%_{gjoo{`YW`7xwH1^ znYF(}GHBBa^QB8fVn0Mi1zwvz4Lkg%0s ze$e0gPbh||7=m<~`v4h9tos+MADIsN3|nFU7|#($zKj=*FXJ;Ja#6=5E@vFC2uQ8) z>836~4QLcusVbaxIRnY$8j{g$L;1~k6EY9}b&>t_o)*?u`d7wL2IAxTtkK2Ugi3CN z77S;?x9CC&F2LVz+RB)ckSC%qV~7VTeZiBFA4IqFFG_DI^VLpkq#zABppvHZhksQ3 zixQqGN*0a!kZ)-Xjqb3YsYjlsBNMihNgM0esyz}|B0A6~vEqmYj&0@GL?JF;*L|4a z1eDS$2J=1{eUl%sz(9JL> zkdb6mr92@8BU<)|mTr)FT6^m{iJhMzl=UQ{T_rs5c;-!tkFiQcBs>#atTX<$&GbuP zBR9*3Bt`HNg0>`{F|)R1r(ADUjXt}QeLMId)Az2D%u6rC8e#)`$s1wCZK=lyzf^Q@ zqsFnu9z}eC+nMlpX9CMc$Xdh;d;S^`q?eOl?;3Pm~1T? zrgWQ+(2+!d&0SNU2fl}u3qQs~>E$jHRdzd;Z!Qqfv9Zl!9jHpP@ef-69Jv{zHUj^w zWr;F4U%aBNT|Fn|FPTg+OXzSV{y*-`*K4!C=qKp_th{qJ^1@HX*Sk{wziKOZ@zJ|Z z;^MA%?M3&mdi0^ZC@@`Hb5UTr_M-b&7X{`5T5?ffx{FEICjH+nFzAhMt$i%x#Yx}l zIe{)5$)-k8QiuCjtA1QQY}2qFgOIIcAjojPb(rpJefXobZzlgTCudPlT;=xe*>goV zAQ$q^c>I$i^Y37$xdr{$ttZ|Nj4c1gx^?S%A}UL1ly0!C!+mVb zU~oF;zS8Q)z`*{S26z8UR&=EQn?j!QTS$SW5 zajShtI6N9f$f@0)9awH3$}p>jT^>wyCUEQivLpD!FBT=MgV2c+FP^jXgUE%P12wJu zjKl2@-?9DE#B4+d({atLyHtg;SZjm4P5Yv+zWOS7yY|8zs&Q8&&Q7xbm&{jg8g=qV zwWxkLXJ2NbDr9s~`=>Yk^^xvVsjPf_Q09BM{Pl;`Tiz%-^Ig8I+x8(@{szKuGr zjs4{v!67!lTB|;EHp@D@yrgq&N#}^lvCVcI*Tk%fzcUUm9NKl}mV;;BsR?ZEoO;~x zkC(@n9-MVcj}LRr|6NI-!5eOv7>9C!uw&~EPyeYsB(ldoeQf>rEZ3&b?;1X_hx}Nc z+K$2Q=E12uud?;UobaX^9M-zG19w+0?|DK!KHKs5svpn(;s)#W;j6Cd@eAwI<@npQ z!BnTLpjQ2M;EuolUdMmzK2n$3QTp!N%X?_BRX26#j#9J4ygRhUlWQ0DJh-TGEA$xr zUw_eK$yWJ_)48{5SiL@PZ?K}np8f34n~sgkyL8vU?4ED6CZY5T z=c!k`?XRTnSQYn;N879|!!CFCOI!SRp6C98T~|7uU$yDo?yu=^9oevHSn!L9?zV}k z^_OW`xd$*jwWLqVj_#V&WuN(#_51bp3&&1-c5#pCca|ru{m`L9tJbhps#RanjH7(+ zg-Pwd&gffHQ!^yp`R?SZg|{u)*<)Xqg(qKk-F3*wuq5u`lIm{f+~%s;H)(^U{pE&+ zr`a=k<>acxJ0I`%8ib*@j~zP}W|O(^FHVoJUf&TsG16H#GW-s&4zIro)rD4G-JQ;> zt$B~!0vmB%bw>Ws?qY%vs|f0YoH#@6eXM z4|+U!@Zfjvp7}Bj0Qr+I(9rqLg{cE(8>>Uorl9t0e(OK|?UB5rH>7S`U7gXLmqK9c zsDCGO#o^ZqXMgwigSwq}hr9ky4?63EGs}mqekdidb?l6W)zv-P*jq~;&E7d8t>v}C z-~D!D;^fYXgB{Dg9e2vwUD5nSFcC)c?sLooR$YNrlM3niS)OM-P4+VI;3#A2xzRtw z3Q0u;6Bqg#8Y)KU{a?>mko?O#mP|kQnI^y$9DgVC%Yz5Ik2tj^rj)u+DBsH;SW6zm zBA&|1YPIJMopb18>vYCD$wycs)l(~cIcQ%jDk7g5jL{S~Op zFY$Gsiw9r&rw20@pYyViW4C{lHLvdC;M8tMC>@j0Y`xHU$sVT`ef|HY>7(7HEcz(R z!WSPswii8)Ha+R0toPWEh$vHF0;z|7ZM~Roh0^Orc#p2mom$^Gdb{2F(%$l$4{I;0 zeEamSrcZpW1K(XAzPzW$>S1|$u!|Eyg$ef_bMNzo0MbK_&Wdm4?i`snH08u6H+erx zo_(}_M((t&p%kQBeWAOG&#o@s_FPKy-$5bg9BN1EfH{ZUdy1`t#mz$wJpG%t4X!t;ti5$>ya~?FUYLQ8N!vZVX!b4s{10++uWa-$UX=HP z!o0Vu`b@*#?OW&T9%S@tU1D2it+ZVdUNYpmA=BLnqmFDy+l`%{akglc?Ww1pZdp1u zZE?b^vI(w!jsD+!nAY3;-d^qKvT#+Or7h`|TfXR@bOw_5StzCT9}AC_J^fTx51jFL zWzf3J*4K*H=3%g@FLaGRf5-jlZ`D8B*tn|Jw`1m%p0F>rqF&bP`T->2d!=c?F}1!$ zuCH*Nj`GFBsP&C0%pK-w@HuFvxDfr^T&%6BYi{>0aLHf{IG)1GOP ziSpx1%CG(!`+_TB?mb(+_@1NbJ;z30_^-aE{D{&`S#i&%$r&9hsRE-s4P%mA!#uey z%gZsdqfcu4zo&lIeS^Dc!1z;BQ*&k`$2JVMQWYj*_@NRbZ5g)G8*?f=6+uNUfdxV^eJh_u7P%kF}3+Ed+>)- z^V*-wrA_`{mx0N&!ZTnFf=6@0clz(i4qY?4>1U&V3n8AI=iGH5`z=R!kK?G(c)#m_ zzv&4_=fhva?p|$s)B0Xv=jp2H?%~+S&)1(_b!WkWYcgKN8V(;wZ>jk5%l$`ha-XiU z(9A7*9YwZ%e)1v%W(5jHy9L!9s`+jMkKdoH- zb&)_Kkia%+102t{<~RZn?-Pe!Ox|2)otjQZkWe|;y=lpxzm|eej{8P%WXEEAFn8CZ zuIDMtiKAPx?}V~sES3T-OK;mAms{h{OE`G8z}q9_I|r-u{5Cu`erb#MC}Gg@ae4i- zT1WdTOM--2_{msz-3zTVN}4ZAJN~Pb?J$P^bq(7}Tk74`ly}#4{s1@4uPv#Bg*Axa z`Xp!jb8C)Wk<>l3?Om^;&tN@ddmy|-pesG_So)Ui&IR7i;o&3x@Nbfjdw@XNTk(Cy z;?jcRoI`KHkH_9FPo)H`F*|Q~TW^-qT(dK`=+&W#JwJ?8h1SJVVXBS=i5_7S@7xP4X&6`8!KTk+s*A&MqM} zUxCN@PyDn{QlCiWu?xk_E0fVs)-?NJUEqyalNvh3Mn+lhsV5iP>*1ngwwv`7x{1%~ z3ayJpj4WSS<5dwZ?-AI7UwOhmQ0awhHOlVUKOx&~N(7^SmpeYhkx=T|#uEMMZr)yH zQHJXkGPL~H8J*hJIf}P&aoNMB@n5XJaOkR#ZvL>^@R&3D=x8v@_M50)Nmsisv~#$W z*T{53#I5VRJ?4&iGjZ>aH#5k%@yZ#?C3u5Pr%XbESM{6KN+nuiG(r{4yuNBX#Jj+} z6$$Y$GyO=p^Plw(KZ>1 zJ!S@;TCGJ_9Xl{{RhhM-wmB+pWIalt1RZ14Ry{J{OV>_$i_QMAjz!(kbrVi?KD?z- zq5^bPR`Db;wPLz1C97CGdREr5uBudX#VxW8b&k_4C*^Fzv8s>O#D<8dv@g=N3!W$M z)~KLJ6Dtm1l`*%js!;bVQ3IsbC%mhX$VN-7z0X+8dzq1vE%z2xR7v7^(}z7OSpKaR zFzN<@ju1h|jW4lC4*g>^HBasQPy>??NAvcy*WZv=<1a8wRCttbz_G@brC6qA+x@yg zqMn(mxizI)roA)o_Iet4Nn34A)eb{)#_n#}=E|W{ePL9C?>O0g$dYL+X>P*t?W1G& zSkk(MHF7h$v@KAb%Q|!#mk{d_DVvSv0;z5Q#47n(U3*YvW$L54UKni(ipHvJ{(~Ye z7bhI5&l0P?%*7vFi%G;R!EV!!q@-GMDf?oog)wi=6cy|8cC->o^=+*z3RThLAl90x zN{EeXGX}*Bg)a8;JJZHRb$qIxTZT%0wY*kwAdBQwsm}tnUP9ucYBm>S!LF`1s`Zg; z8|9a`C9Y80>v|QhJtq0ovzDPTL1DZ)e`@BOR>j86W+Q8T>c-8xmYC+lmPlG`>}rx} z)X&Qp$$M3Yd~a+W-SpAAHaZeu4SR{0#t5<&Tu;IwUS(3drm&s+Y3kx)FN}#=Fq18l z**Hrx5WA*P#m*yl3<@N5laqQEv94OOI*I6}CGRDe8U$494=Y21GZ=Z_rMtVV3otUdw58 zHvK^TyIQH&yrgCNozm3Bt2)ln!Wwrom`CQ^^(L=Y#D>|a7`G|)Bs+MRj@S?~Hm1Rz zPEe=IMn9{xgX1*(Ow$TsnaV#>W0J@`zt+@a(Mt$;kMd!(r9JwFYr2;fiVc%HlOa+g z0{M7%N95Wal9KF98=dFc3%s;{DGSajN?ks5e@-=G7n)1w=m+X}=L9e?_3>(aMa!rg z$-(=DCs;U|pbrU@sBK1cZiH#d9loK04GVFzngy;J&&W0XgSkX9T)5H3H?ENSlRbBsowEI+i@nLN#~oXs4|SksFI>@YQrRZV2ht z0L%>|CT3IV|EzE89g++7B(rOak9}Kh*kJosHI1Ov;zgq7l4b%jI{aTn3OlXKSlTbM z1uGSYdk=7%VKyu=T_@=;0{&TD4W&)f(Y;rhE!9=|d-Wo!J3z$gs z)04#RrT!ErXJeD_dA!oEL6o{TZ(S?(i!@J>AuLgoFg5dT4GiIpY+TH8@Dh|)1=JGU zl33q!1afpd6CR69C81kMI>Q&q!8$m`NH^D5$Pr%N(^k=k1yDXYcXm ztYl0VR9R*oxf~-9L{J5hBnanN6Si?Nv&u}JcOse!p$ktSrKpB&O_x>dUp5_|Vv|po ziow{GUr(#O#;fZq7LA$2m^KKKOmpm^t45;MiYMWG6ofNE`G<;{e>?H6{pm-XrD;dT zyj#|IdD5&;pOa^rMHOIE!JTU9>fYAac&l}_^uYCdHKcWF5R-Nh_utA)hbPlCgXPMu z64irC!PLQDp6?%c`OH+rkWM1t(S+?g@firWAb>%&U9K$KB^9a z1Wq=pm9805wB!%Hb-Z&2%O?<~8$j3~bq>~c%T;J#5AgMM=5jBOnc|Y`j1;Zsn#+Q8 z^O#{a`bFIZ(0b$~B8{-+;yuzop|!5&ap%(^Z5z=gN#kH7Nv=20u_QcH=Fj?XreT3> zqiVM~fYgjV=+uk>Ilv5A3GH`RlamKkTu)QOonYB`Jezh9=|-E1@)j1OpyisJCRWK)#Sh|x z^+m1zs|#Vf6AHe;D-brVM>cVuZoQj%X2n`DyG7X4>q|x=VrVVf*v_%wjY8jY`|o#) z>Do%(_6}d?z%IhmzLh@6G+oB<=z4`h>?KFn02e}B!bk|Ql%_?%=$R`D&|Cf`Egumb z{R0$}&Z8FBG1w&Sx1DMpp#g}nhl;9r4M8{=ueA}8aPxz-OpJaa*C+DEGbGT?@-Xcm zv)R2{0(1#1FK_TmI_GN+oO>@E5uG@0$oEw!raxj=PU#Ly6X1UEyab0b#%z(M&~6ZY z99p@eIWz8rYorRVt>YoBtIf?5Rzj8XePkER4NvP5sW$J=DL8N35Wc&s z7@BZOh{TO%fKf|^xq8b7R%u#`=-CwsFVV;RLpn%i=%6 zY%|`KyM#}JRAFQ3>AXvSu&W%||nhw3{+O{u$SIcro`zyh}<%GY* zjO%8mYLrYg4H1pSqsNw0pb@z^Tdw-zY`KfG60e@P1bLLvMKv^r{Za#W&EAkx@cn32MVw+{M1rL5*wZ80A^*7JG+exzve8-h zQ-@D69?|~!>4H9jm;`Br8R~S-+l)z=A%EtlT_YpyFRP=SM(FCkvJJs587j2JN9Y}G zlxBKx+C(exJ%P1=7XxCOh5U$nW{9kA9zDo}F>JleV3~bSifTw?l1>DU z5&06&#>;B(N3e--u@CxD+62K^ml>T5vEY>MQxhLqk8mHflVD?MZme`SK(3!h=4hyiw&;||qQ4#@a|&Jp_6h=7;?qc7$+ z(HJ|bA8BBb@jw?qua5Glo=6|&5|NIXVoI&o_zAo@VB+ofMaYtRn$CWzZbJ~c z*&H|dC?h$4CmFqr#ZfU!Gd-`OJb`Imp+wg_?koqou@kH~RO@X~4cvxEXK=ORkMapS zQ7AF8<74P}%8A?Tt-nMjynGaCgneJ`KjbVO6?kZB!DqwU|J~Pd+pdEJSI=QGcaiH% za#w!BbVQ9dK2r{bUBR?-;Sriij$O4W&!MCkgCWzRhI&Np;#Me#B^zbaZEtZ`UEDcU ztzN%$cqDQlt_K3M+M_Vqt7bcdMqo2gf`kxn&BCiQQlwo zr5Buv7^RjHWhPBZMK|x0DJdo%rZRoRNEZPjdMaqjrKkioOzM}%xrC8^jC$)&G_}pB z7c-(FnPa?{P7cOaxlhw%R1kp7H{)xn7}-KKg|cbmV@>mm594`7Br#w_Zo;(tC5H(-u> z>xpfOX1@9~k(HBeN;;#oyc|?4Z>0C;)Vko<^PBUswIVpptb8c9ddNZv~((VttkDE}^QR0zjdAUcXn0~~~of-kng@}n0ni52xL8&1^_-^nyO zX_hjyKh#J8Gjy(#G&v{-%cg=579mdY-L*Z0VwQt*OAEZE^?@>0maqn-YW?{DinrQ8#k1``^ z2@mQ`4_xYk(#YhE7Ndf~t-WKvW2u`z-(3aWSLWUfs9=7MZeRO(A5dDm8cCrVqS#m; zx&txmBJU2KT7K|lEi}O9sIig_V}I0TiJ2gi-65(mJ%c%ez1GJqG~;+EM`YdQe#p~t zD@twyqekX4P<;-6W>zQcvV%sClU7>OIp?@Cv~c0V_Ci)F@Y7O$je3*1S4Ogp^q@Ja z5#S?IL;ICs3PPM*c_R2$eZ05;b(`ihL^A&DSI&JT+ds`6!9M6?yoG*XIy=T_f)Shn zJ@+@~$ephmeR@^9heH(AaS!L5@hat* z8B<|VefJ7xvcp!7ksuMX1(|{vF+)Otf*s6TivQ!FSqie7J6gytH?qN`6`5%xsjOBy z#>R&-Gasd+g!)7_ehH%W?dx-6hj?Lx>jnbBZHlyN8vG27#x zog{gs*OD-?p{S2ql^HV}X8ev>9eR!Q)u4sv%u9jXFD4*m3bM2pg1*-@Gy^smYo$SNxnm6%kHBnnr#0|N$AI;k6$-> z-lpgNdEvl;cjfyF(oRIn>68pmI*$QHpRPy&V&u{wn{2nlQytK%gmIO_)V3kEH1{8BLlf%EN3&3qvd$Qv;D$!+a_yX|%QyR47KUDJL7xIU=Q4 z&Q#h4b&SJzR|hAaGrl#V0IVdNPw8jo!ulCxl+j-97{$qWz(l!!rekVgv4s;fKB}1? z%f~Fgp1}w7!=_Ap-XysR)+?AXeX3kgRgM&p|B+(AOehiz2(POjF)Rwt0ivjCv+!_f zF%C|%aioI~_TCuxFS+^Z=||-^T{3Fy~=ap6G_H+6dIS0>CiFwQp%+&`l zp`|AIlu@OZBqVmuiD1Emu%GG`o!n>ZXCXROv#+!t$iS;jR%@oQ@XL6ny+jarLMI^(~HlWy#`6*&E%pQW=72sL?Rg| z3P)_YU=RCdJw`aiUuGMlY<-|zrw-b;MoX<)If;Qy>`AT=b;*Gd z%BuS&>5T^dg&Ag$n2la{5flIu5t3O{!D{(1c?jBuc++zhmZ~m&6U9u`Rdh+Q;^eMq z>OPexDGyHBRNTNSuSh8yDq)f+I?z2c4a2_?SBVoX)3u2=Naeku`!*CKv{4iOO% zztt+WKTnBSJTljeZDKhO_F;gAf|(#g5KQ{OyfR(7FBTt|8XhaPf-$ueRt?S>hZGgl z_0%F(!-o<%$own(rFf$TJ9nzK(JQfGk!X_{RZQRDS2c~Y<@3!5Qx!DCrg&M`P~@?>`iF~0okOvSU!~?-^?suQL zKW{v=Jp7@C97``q*D6QuWBE#;_O3Z(oaq`UHghIHAg0C!ml}?+6{znxKZuXbF)I+pinLPNsswi1W8rRatfn+` zI78kfww0wzZ!adfMg!1`3OUZ6H@BYKY^qo(Rd5F!B4ZEz)qYIjQ1K}lE}{r3tZ5tR zu+T}sy`TOxQOKI{l8IG`e~q)2wU>C)C`dS?PTTMd*h0g*0rR-GK(Mh0%()iwXEhS- zLAK^7cKw`82(6j4muE|El*UU;8|wwQ4+2ZkdTZBmMj}|-dGUR0;+cI1?1t-gzRnFU z-t`x%4o3%L;5Y}{68v+pm|}9gfZ=RQtr?uou!H)X+JJ4Z^)WD>ufhl~WZFeJi45&^ zU%|UW=E`Byp%-1RWP_}9COJQSPWOXm33Z5U>w+hmn{17g)@u9RR8vtel2A;5iw^PKx}+}WF4OvS z)mxb`g7f>(lrxw$gVP>!7=Fg)6(-DL2{z-D@NyYNDqFO)oK-U-WGP|Y2KOw>_!GFv zUaFklCj^z3?FQTTPAIs_@`^B}`^4aQM6qF@|$J6O%xTK-)eFpk-1r! zV1Y6gQyei3tmXYjesHx3sz^BqBN-RTGle`EzDjtH=DA(f-qQYa>@(;05#qVG!Ihc; zM~N*5Fkh39=0pX?wK1d8UaH2=RDr0|AxELgAOfef-J&2U-z#QqK%hjlb2-sY_3Y29 zk9@fPv~K<3uJO1$)V`y{hF86LC)j59>u%95h2m}V6f{V%`HnnSvS~ADS}7U|;_RYl z()Zrc@dt2mL0B8_sqUpNlL2!Jq7!>NNRhz6f~27= z^UY+5$^c-2QPSH;|2IFxvmdJ`@4LG^nby227+A>ird9$&^Y!s4-mqFc~J zA;xC+lRV>W0#h?S?ks8WwB4+8B@ZfTw0?vaaVC>V7@-~$&n%8vf({!Zjiyf%-Tw%- zH~Bc|Y_oCcJQ?bbeJlFIr~)^M&CJC+Ni-Ro@+~;!#Q1xKvXRoMj0a+qO!1!DBS#B0 zrW+SuO<#lP1O_7-n90RXHQb$vCGmcxdO(hC6U-FtNw98iA~_55YwOmWx=U;;jsf(d z`x;ur!4sF1@5Jq2FYlN7a5;EdN5^m`dgARn_Jps{{b}TMXB@{*tH!QR7KLQJu7nD? z5AGM)J%U*ix=A37Yq1(+vtzD?EnEPzWbO#D=_jqHXg@i?jD8&2uWJjMZ#5pv)-ln! zMGJ`y9ue*>CA`j?#D4R7y^~*=Mlmen6$Vp-Wy~RqQznFatK&7ilR(b<`_Wp>#1_I8 z#tzG-xPM*ts6dGrJwX_rw)Hx7gsX~;*j>&@jU&*L&d{*dDjRBDqn{F(Y5)*Qd5N4! zx8yki4eeV|3z+^Hq)e5vz1ZB6*7FbpL5|wO!wkTJ*@WcW|C7CU0gJj!`^N_mNl~$b zQd;0{>vpgjcg<6RqqVNvwq?GqS!$5AX`2UBDvr)zrdDLwT3M-Jy1TlXlDP&bFrKwM zplgaIG71Ws%5V^eVGiHl{rNmI!vMO!+UxgT*ZY6}Uf0{c0&{r2&vPF?_x;?TQ?!ku zDg1ec;_PEq=xaI3x-7GHBze$H7gK|_KO<}p`os0_ipA$%cr$Ln*E8{qo`L&a>Eiq- z5)mke#(OE-n3~{Gfm-Sa_M={k{R$x-(SV|H%pYayT!|F}f7oP6(eOCOa5*kSd59?j zRWS}(Nh}D)@OjL_5RsTs1;~SQpUr$;HPIS&@VCg<2>XO94onQ;)&EDHb6?R1(vyeH1hc6z>193Od41(J65K7(~ zgSCJ~A12N!VTKtrxUD^DJuy5hjyMUGFLzJg)>0J@YYp>6(H%c3V1z&h@u{dEz}`y0 z?75x6eA3P?WZGETrO0y-Pw;uFM(opu6S&=-@0gr_tJU4jx^s(p_n?}p?3$-q{0dDz zOAF-cwAms3+G9*VEUud!*El%!(2{(8r0f02gM8y*Yr`2%1CU`Dx)QVueP?t1W^m(O z1~sNGToIz9jOTp9BU-q-f{n2!3FS`Q;EI<9&tpc!tB6Ax&Tb(xE-%tCMuzL7f-vf4 z(utb7bCNi{h&?VMxzN87Uj^NPt99kWq=#7z8uvnFtQ(k*iXwEhRCi38hIOC@=B+M@ z_hMHJ`#|8wRDrU@3P;c0{!cROx3j-VHa=c3e43o3k-Qp1Ohi;QzXv{-FsADAF`dB5 zRYgd^`GQ*+a`BXWO%h*{9kBQ))}5sg{7oor5jiNwk4BnOs|?L>NbWKkpMJY4SEAs7ly#EbheQF-6xCXl z`t2%}U*pq67-7K1B+eZpOjy8HcS}aYTv|Mlgc^ub z8PVHY(w1LjdXUk$I-|_j7(=fDLH8h>M>%J ziHjChHbm9VNsa#e&x{OlmiQ!p}RI_4m$z3+f zD=f8kVs>~Bb#=YHbr8=q7A8S|H^+>!W2u3UplYp4a@&hpRr1YG`P@j>ks7g zMOYAxn&6Mx6mA{%gS6&^))eI;BQ!jxs)Pc*&PQUS5HL9?0&GaLX*RT*kP(R$Vs9~$ zlWWw^ES!+SL=T}}9hx@C<;XCs*?}Mg`{)Z$ z-HFO!0D}+oHZO9d2Oh`05y4ot{j=;dcqS(0h!2Bcn*g8l{4GEDF6k@oY*U7~19ZQ! z6;)NyufR*NV;#3E=E`d1?^5ch=^D3RH>9O8AGIv{;74? zo=SiQHNBz>O<*GI9-}kmIL6(6doiS#fR{;jXG2C#Jr+_;9HqPeplfiocgQ6ash?1k%a6hv$7UxQ-cj)(D*pvT|U&`*X)+AesLhEM=OotAEHxMx3xdmfaTcKvK z5EYcKtvIt?kjmKhY}5$ezzL-LN&Gm%n2{qNe$Bai^CE0!b+ zQVNI@$=)QeJ^I>A|D+ld7DQQ}g5mK5>yu+d=IJmKn(m6Z*LwL6<9r|TF;His#q25< zRhzF9HU&=|!ewUhL6u8jovDu6bKsv2ln|0_3!{s!LguL#G#c2zYmF@wI)V>bG{Txm zDoTXORa7gXWLHdY!FI1t{+gl!N5DEMwxHFz&VUX#);zTLM_q8-^8Yu6$1~PH&?`bpy zNFDzJ%#aN-)IX+cI2GG?m+{;l;|G(X?9Wss$n_-th*+bB4|eTM}{Q?GTwC>~5c5GpNvaul@h}dGg8ira*b_Kf&bZq#o{H+h9(< zv#1C}2bgi3!a@8$)gB6S0u7%%Nz`!aQ?Uv2c;L8-VM^y6vmgJ78*qyQT07NU@Dm3v z3#q`5-`dffyME6}X;H;p;vX+J+AY{WnPRpr_4{JuFRu|iHJzXTzg*@vp1Hw4YBT-= zeix-6GCCa>pN$x%?;HH$4Wj;?gizSJ-ziK4Tg=Xr6uLf{GkZZ&LKW3Rv~y@w!yQ}wLDmj@+K^S*=6QPxue^l2k}tkAc@eyc z5#I(rjFY3LokKgu#)PbMoN=Cdbk(eZqZR0TeCvQj@%|Dg-q_gv$l#*D(`;KLK?hfh>)=?R7PU@G6W53i551EgX z|M8ltJuA&I-%LxXT~}gVQ0jitZu?%w>dSrAw;j>t_Z2lK*t&*y^#xwSWrFDKkpX4K z?kATxhf9091oOT>|NDPwU351|EGd09YE*mV8S(j`1o;UTKqx_~vn~mvNN1Y^amm3` zvpzOuFwVMTMBzt{=!Toa{td5riv^OJWl=N+$b0scDgb>ob0ofVYq2p*SW!ffR%H*` z@#94i#0ew5mI3`I^Q|XA>JzPlOtOuld8if|FT54y?#4)Q$&O)k0<%k9cb6_|vDWMV z$T9h`rx#exJV|#cOe-RkGzlPJ(LoB~hlSikf-Bts@ihla<3EP{+GVgqQV3jOGg`oZ zYmqhRc6#ceRmOWKt=}?_{1bW6utY1qFDX4cwbXGrsXQTd)Q^-3FOkLP^m2VIS2nS4 zi?OF^fefN4J%8EqVSnSE{xAQeSYnJ0u>`IzGIn;|Z9!mb5S=&7IVnbYe#mg)Q?_~%kv*m%ggO8 z*WEJUOndJh=TXCS$$cP+VgJnA^bOd9k{jkET@eBuG0o{4HWUc&=Brz_&WK5yaQk^j z3#tZlv7o%Gt;g@ZTmQTFd#zaFFEd)|)LC06ej0!Le*NCw9j?ssPp-$f;s6YWUkVh# ziAIz-!dRS9gSbh*f8fEuYWxdU(v!yc2($`b`NgSM9e+y-cq1VJ)P&6&hTSPbLpdX| zPelIhNkfl0COx+_|5HCLaaVR<>{$Bgwljyj>i5b()Z+2+9sLEn-h4`UdG+u8bzH!k z+M^cjb;}M=NO3V*SN1@WV*>tUeEo`V_M6YlJ>G(|cYULkEd>`3_tWqH(&SGr>P{H& zi0!qAe{LuW-6*uM{-#5y3DFzA{kVHF($sACclt^YN+co}M;{^&W%VQTTq%@m0w&3tg^R0t*dZpI6bXnFg5F z;)^ES-VpBWB=kdDd4!eVV2X=RSwwObXbq#^SjNO=jQtcd6c=yKavqGV{FUDIqRO%L z&rWo|_M6l$)0c*$pYX-WlhcLRvf0p1Gj#6 z!k;b4Rn%u)rvXt8xt$@z!i70eZ|-;|X(({OufP7fC4Zzl2hH~ECV%6NH;mnSG>mvd z7`?2nGOOZZk}+4tc67Ro8t&x-0Yzx|A<~fyh7*UJgzNS(1=D{TEpgCk;RJPn6Li|G zi!*B$KcFuWsMixX zQC0rVh}562>+24-xQ-ZHM}&gf^cAuO7;dy~ zMQ$vYCoFOgJ4s4gO-sVRO!>l#Edf20@Pc(MY4LN5x(I?Z{p~{Ao4LYJlAQ5C#4NylHVJprk@0)FUP%d*A9XTe) zG2z55c6B?wvLU>~j;-r*N}DI&^_KEWy(`15TR!byQ1OQD*k^TN$?c{UKe+VV*sHI- zH|bZ?KlXo~RjZ@+-C^0+X>nqM^PBt&eRJy4ZKw8||8#rXX$AGqG_7Jr&`*UfRkeylN!qfGydG++E#{`Q*q@t;}t zXYX9HapG=&A=$F@=q6cV=9=OEHErOZ-nj717sZpCfBOgHOyxqRyD~2@O*%it!rKOY zZ#Zk%ej=r++$er-e7)WQ*5_0EQ|~(6eC2Dj!=1*R>mFvw%vzB1(t-ERwM2dS#W-l~~6ZFUeFFbXqf*K^ApjwEi>sN=sqiK9;t*EoiGv zUo4rn`JKys`up=rYj-kc)Y3KF&o zBfY|&{2lY_5LxA~RzQzqm`p}6EM?9}lA_W2&EPXOPM>^vRa%SC%9ZgNE=KyLlUnq} z`p-aX-s&uylSWIHR$Uco&y>7Un=Oe_@M$k*W;{LFJb$=ZIJv-fw)-mLnG&m{v54`I zR-F{p0ot>Cu}OjxaJuFGFsy%v9dQ9I2$32iFYN!cPxDO|HshKMQDe znig=nPuSoA0~#JU{gQMMX~Te;WH%npt^}YgTx#yAGQ;d+(>f4~fwYeZ=lbNs{~615 z)S)T;%I6{qNvxg|`GQtYlAn_XODbX*28y_{lIUS&kgZP#be*8VJGW-z}{e6+mW z-SboXVc{2#bM}=kA#-Xk@vp~E7E0oPyp*hmrkWJfL0}2s|B5nr;)IN(3wvsP99W~Z z;TPHNyi4&%6zVORe{VCh)4JYM+w}lydOLu4_ZZ-XWq`t1EC`)p97V)bcy;4n#3{(`xcMiaqL*v5y}5r^vb##y)<0= z#mx2Q$JTvxtlOlb%yV=9v8i_N@WFqPo+Ur4De>pb1AU9X+_Y)eqRcD57&|$?$JdsN z!neK7;81lgW|RKxB1dD%L9_;@MwNO7pSozRj!%-a6z zFcqQXx%gUdFs<}3ce{i4*sfkJRRq_MXYUFHyZY7dCpTx9aXUZ{F3j4^LhJ`qQd07J zi(#CcUEuGX);C%%2@m;%l$0f=ZIc7qNd4IMul&xqH_^hGn}yk^`A5oNn*81^Us-S3 zR#UzwX~HiG6chT_k^4h8wBXm4%aYcHn(}7Pzc0C^DE>=7K1d#GlR??Oqfu3HXcglNU)PK*t+O{f+bc|M)M} z!U4LR6vT#MD5i_)Sk2(a{G^JK&~Lw~1rq8Px7kYvGF#iMQ#OBFd+mMl?wA%TP|`2~ zC@kp*);*~s9i9Q#tA6wzYIOnwr6Yuks}ojK7j9_1BLhbM{l@$Kwb1}V<3rueJC@X< z3?f|1-THmq-wwpv?`8iE#}d#%KIB`|h77mVh<^Oi`~P<*>(|}<(2=XUygpz^zfsHj z9Q<0>Jea}R=zs2Mq`j8VhfTla95pcBYMD`6VwisEUq>$NiN0xe+QWbUGRM{9>if}e zZ!9jn%~smb{!bU0DHx?c+)J8sjkR@|-niaeadU=a##7HH|GcW#{`OP4jPLieoiF!$ zwc_||;d>6A+I=9w-ET*1T)gAS>~D@l)^+_N9HXXM=#_+7*VYG(_i1^jR<1ZmOCXw{ zOy9_jRJlziZEQM?7j=9Ok2B056+uCsY_$vrXd|~n(RTEzA{qVyN zHy(X=esp zDA@T#KBl6W79hoXNjAwmCUw`Cv$Ne*R`>hoX13eutw=Ri(;E|}chr(9}zdNMt*FpXM(C)E06W$y>Y~#1i7qS-Hk7QRI&%38CcT8gJ z!dB;Z|8@6`U3St=q7On7<6w8W0oR2&tK;)XVeUqw9adCrIVT-%GRZbIr0DXQFw+2= z<3g7E&vLy{w{=IPdpd6A;feOm%xiPnDi4E3Fx+}EZx>8zjPcxz0cULSZ zJ-?tK2SbssjL;qy4{!Q5v{u5a-T8;R7u;M_gb%3wa8=Y?4q&S58@nj{s2o|tL96qr zi1S@yYq}&Y&vIYLs*pA5qMT>K&@pa0TC;IPSr?-t^zg*l%LbM%-8L~J{H`m(3BkV~ z(ynulq22zq@SS-(N6jr9^5DI1^^8cqsDFA@7n5U6q<;dZv@<~W$7>lX_k1uunQMEQ zw~sT|kE^p>t{ZHv%e72O-91UBL*ZF$TQE0nW&h;6Wk>WP)0ZYVW!0T@*b7k)=NP+m zwzq`{VR(r&t6=b`!zC>}zaEkF?Wl$?!yLWceQ|9Re44oJ9P!GAXK`c3!egrbZQPaL z3e^|Hr8xCK@!4VZy<|n>U*A<${ea%FC3arFz^^AIPM()D@yo+Iz9?HiWX$rmZw(0y z==aypd#-OcYWXb#0^9uhc*V!#Ov}<&MI5}Gk=)9%H=2aG_!`#as1|6h8)V*rt1vNT zJ!9U~or0C+@cv)e~W06>`7`{Jd!AoDBoJAbXDF#6&3N%F<#86 zz&YkwaE`UWM+9rgltULjSjU$9iphn))US!Pe-wKLXAG<2{d^g|fNgQhc7KQ$1e`_# z6E9gp5@qUE)VcfQ|3;jFoa*1jkFq^?Yd?gX*qfd>X?9L>e&0CV_I_Xu_gC35B)?iw7$9)5wNnCT2JHo z`Np@!@M!&@<1yqyT+sr6HO?6+u_3B^lLCK z0s$|dH_Y*6SUDa6H}&yJRFGqn3%c6G&Iq&ZZB*X$GTeZGx{cX(tZHgW>czM-3nJpK z%IW_$qq0layY@fw$>>kyS>=C6pYJ6<|==C5G2RkLUK$ zKrSY@BEhm^rmOda@#^g&2L1*X6u20oBBjnVVKT^7o>OE_=e4ja@JV?VnkZ*}S+ByM zizFF3lFW7F^P*bvnd;&gKHQnVy;nYEIEdqN)60+-`_y$mWibvkJ8%i;XP0ZKxMxa9 z+KU@+uy6PY>mo`f?RRp#XfKU$SI@6g3&NtLhg5_BH)E>j8-z7>n|ap`t?Hhd{5iuy z>fQ~%YybWG@4q6BaMtXxJ>Gh($NJuT=iT;}$l~z<3&xh+clc2Cit@&Brp5QXMq7euF^z@ghXj)?!7d$vFUzSEU8X68wSt{@ zVc%siO5yCvtGJ6>V(l}yybmNxez0tfcfkBs+16Vd*Fzt}D{yw0q@qh~*b#Yf{;cEk zXPB)b=HmMUt0zQWodDBZnKw&@mIdL^PCs9I?)h98NQ}Lb1?cz7{u*VM!jD3A<=Y0& zF)e@ts>7Z^b447u{Qk)+`v}0hyL=Un~eSr;<=~@s7H9Omc-0qTR432{!Z+HPh7bgijaZu7H0*rSzi7Da1}tP5-R~n%cJvoL%O&*A7Zev*#O}XYyew>8?aB=8IwWxK;^8 zjB~M>!Kbn52sk`(AGyJ(A0i2(ye_!yd&kZNoc67my2Vb=6R5=)0SYx_h=w@A=L{q`^BJfAfLt(DY`geII-c3N@ zEbnKe$`A(~>oOdvGQoIHq*fDIB&uq+%gj|WaBLB2MZ_pkjtHJse z=eS?oBGAAr-`agOta; zlA4@lOUeq_ikPhqSCB+sDS7fux@sIU6Qu=|R4Bf8%PC&Ky=7;W>$_FxEw&-v#6&iC zwD(ic5B}|_ObM^sP>`*TLOp`a*xDu$g1*r<$1`FOkyg>Vd(+@cI|d^)@uVNH3pk8} zqATK!8LQ#O%{O4*rQ%Qs8Mk1`-s}kb)+EfbUOXPAek{pJ>aHU7fCkyQ=kY}DzWu_g zb`5*F&9Ke^H+K%`IUvVybHTtFFSfnqriF?90@}6-Y!kBfPkDx!6Cb)a;O3{r1hi{B z7ksTFzGnH}^p5P4qtNP@X@+SkgLfKM11=YpbzyVt^z~IDv9<)~h}UF8OB)tgZf6%e z^ocA0KHE^!-TW)9D-CLQb4_>bKe-+tJ=4WwfLn%7%6&0q!(TZiExL~?frCLfjO3Bm z-A7V4L$4?c(Hh#brij zO_(Kw>u^caxXL{y=bpNUthEpEn}&^^A9T~un}(;g3HV))nolin^s-+4vnHn6x~?Q; z+JU-zbX8jhR4*_XL#(xTWR&+Y*WJ-$_SOKH;1vsYKHLg((#Gl9v^2tiHnemMF3YbU zXYOlrAZwIGX(~7}@^W41Oi6}0HC8;f3@C-qL5{AYd4`*tVP>>z!31+jds2f8GQ0qT zSarPcC)R=E+@Xgut)~Y?6$zmYf5yg8U2)>jV!LM%`gfVVOI1h`(;!Sy0|mUYsWqoks$}eD?Lq^0b^8Puo{qL%8D5)B_hv&T$y)y zb4nfbQC?R%7g4$cfieQOv)DoW=kq->`UI~EX@pDknjYG4s0t4)w)QhI70hmAIk5g` zAkXM8~fCsVXIT&?JGvtLFXVp9E>I1Szn!Ge?qLHap+h?(T3 zv7gQk2)cbr@3d_d-`^S?dG-DNGc0+l;@?O(yTw@B>6yoBW8!ArZF6L1?C<73jTPC$U5_4T;T zs6!B<>bM$ML)n@D`dY-m9O{P|c;0BU9b9~2zcGW7anexd@Tf~|vn-2|?hqBDjv>UTO%j(xH>P!4yWq&74iAoe;&+b; zD$;gImVMpE{f=*stjXw4Dpa$POzumH^sG7oty*ppeFoV(nd+Ol8-@ zP?uOY#a!GZu~d{nA|2|(D&r5UbPdRY`MSt+qNIXS<+p)VY|mlB{DYnpWAgCEkTik` z5G785wlGAF^9~!~TyxF00OK@;ND3*04RnhU5A(SR=lR>|LSgR#$N z-7;_a`&;)N{xI?Pue5vcx%J&fKR@)LgM>Zy9lpD)GIdscspZEOd zZ$_>7$C+Q9IJvpi09$wL^^))JCKnu=Ttf~T03C4I*ggGT%#jrv(GKI#@T}Sr=r#;j zTSN(B$dKeU4}Y|7Fe4mVDIS#bMAP9tk;Y*oU^>XjRh1y2Q_O7))(};C<5^5MK-yAe zYoA@+-Z>6d7U4~0CH9T^9ij^LD}n%sn$%*kU>rptqQ^o(mljF3e`^|ZH9UaK<(w2T zY~s+z=6t^G(DD(Vbo*!EsPc6&mv1xKcLr4z^sfG|jFO67kzWV*v!(3q7$4I(@}#r= zR@;fvFY-^V&3f~`2~%EqwRgYUe|dYi;q$k-(+eJMZF<`dY31r9gse9oN02KnUPpj9 zW+6?bOD<4H>-Xc);pP@mYE{ley~A*41bvuxTnxdsZ9$qkfiZ(w_BXwZSr7~~b8Ujg zb7|aNu*xxiWIE#F9~mve5HMOy=S|~aI|8aI8#3hZvkXUvN=)j0PeCM@ECUgRbTV8Z z;%dZ?!}`{DA3wnL%CjS0iT=F4P5E2%+CDaCL(Re?cUkK1%Q!p8aQSfRh2c>h#y31Q`12Fq`)_eB4t`y1`w>nQJd?Bcw6Z7;r4FlT%1HhnAXRLc(N>{oO2 zT}*W8-w;uvGckPwTgi=uSD`REDZj)SpxeyF^Lt~_<{h}OUE_nrsQ*xR8y%xvDwO=a}TdSFCz(sHUlQZ!{Yq>B_FHb7}=L>B)};Y=Y}#UDkKvqg<`ObdN1Hvk!6RV7w_!B7H{#2#}1STSE$@sEp+6S?#`h9|IZnOS1AF_2E{R+RYN zlI2I+tiAcz-D98Z{V-&;!-8M;?4P;%y|ufu+?RV6*6*>NU0Z0qBX!S+(r+T&^$$gK z?|)~nDIdP|k8Qm_pYi5|H;>-5_MMvE0~4GhzZg-nwPgY%XYzC_5EHmVY*kOOaf$1S zlOKeQoF5LqLx34rwvNX^I|;pp2zujvM!B{Wq(PY{0o~9^2})GmkszFo*_KH{G?iDC zSQ!OdCd)JjZW^Ko!e`iVmHqLJ4Am6Qb{60|9UA9Oit0#m0t3v**PHeL@>6)IQ7Sff zq~QQK-9)k!9pgJXKuVQW;fpApeXX%0^{Dzy+@dT&}P68;X zgcV&zSPwfE2=ui94nfD%Urx^SHPuU;fR4wEH*g3rQeW(-ZY$BQ8bKPwN5$MG*{pS+ zFIuH)QK9V2q$Hz?jW`eI0&9m4NfS^-Vt{I-e46(F zDy#umrP4MOqL_RU!3kw5MXaRhflDADa17NP5=|_IfsNl9lZc=J<2QBe)o^l*vqwyQ z@!*cH2hZ*CR?k26IFnuV$k|cGD=}RQ5*IBVw0mXT*e?t2z4ME1Cf7gjcAtGbBz1d2 z>B0GhrH_}E{VM+1C(lnG5;A$fv+?f1Gm2MQ7S34`(X3mUDVX&-RyPtU>f(f?aCc8M zFzqL9gVLmvDdG;n0TKarW@b?yz0p|MYp`xvml0SXp=J3BL7Z?X0ICu1--)LTQx@|_ zgm?hQ_)TzPnOSg_1f|Li?sCNaVONkQh!MGkAuPOC2=qyCw5)AjI4LuW=mHK?P-g45 z0-1}VBDRV*<1fw>SRtkz;sT;_sBPYF(CfB?B!V2>wW-90^*|Bvy zURXzrnN_8!r4>^fa*h{NZEzk)H;0#Ye<5zc)iJM_=5{I`A7wt<%T#k`_SG+?k2j!y z?cuoTf9Y@B&@txn=Y2}g|0;Cwg(sh?ebPE3T3#{GV&4)zu;lsA=k$H#*=_F6LKBvx zeEZt8(H76z*QaoCc*VHbOZ#?eFG|~8_T-qiF&C$K z=SE}J=f}Pcty?2BI&ibv2BaY(^J>hxM18|vS1_D}%E$ps2gGVJ41>&MTOTJCTlrgu7A7+&X_yoQ- z@=T+_J|m{~al;>?V)yCgc~Z`H+>`_~Sh8T9IqHgDzbpZD-T-`Y@ zoSU6Dz2EUui8oEMTv;|C^-#KhqnLW^qTqk?Ev32fpACw!2IVDKrw*(sHt*ix$lSVN zQ08w9ajz9To%Z0^KIJ{0d1A)Se#83@{wzJNHu=s|&TCw<3HBRU;cYtdZTcU|5B|9- zfQdr--3-OaR?c{&wx0yP7r!Zo$W5MkR5RnUFs+t}= zOB@b`!XW3SS+9UbC|@eMKa+t;4yLS_ptH~ST;eb|)y9QgOv5lQ-Dx0KWU_IuJs=}U z!QG~Y(H9kY-nTpb2U74ZM^T%DusPsbD&Wq^96!VnM8GP^^@@?DP~6i9+A&r}Tf?zo z95n;ZG#luAu=IxFMoc!9NkiI5FUbvuByk{6PYlT-UW|N@bO15(Tm%-S!xi8xO7)<1 z;wf%N1S#CQ?}ej3$U9ppo9wNeVyz>DBjc7K9>^OxD+cpov@wsDc{mn0e2pxat-9f4 zjuMEWgcD9z4Gcy^!rjyNS-wRs1dkjj^{LyN<`5J0H=`jMv+m74(K>>2xk>b@@Wnb!ic+b zq=v>eXk%HX#C$PwNlB>N4zUGA#mou+JWttG?v7=$49G=lc&EWA4GsY$h6ZUDjxFXB zfE^;PHQSLvct&`+`*IYgk~oAV7;z*5p=Q2gDjWXO?tk1%r;Djdq^-v&pPM}9QQJjk zGZ8}_=T~9opz{e%SI4|w9j9a|Rj4Ha1!klbU7nGVawlhJaV{30s=ukOf4mvh>q;Z( z#38+Pu@^Y`9HZ-fBY!iqAock8{MBSY3`quUEO?k^Hl3{y(SQMnJP(M>uoG&ky_)J| zkP&3xa`2()FtiFoLVc31SjZB<7aw~ON+aiI$`&aAY*9;UFe?=h1F1rPEmQqL2S+JW zn#xBeEst;HTPAs`PUGA`Rzqf`IuHVY?OpMiaTXdTCknKOA#<=J7!{=>=8o4XDlm*r z)YeLH$YJ_;@LEif=H_8p*MJx@i^mCJAn1W~=#cR+*P(w5GYD@^qhM2`pZ8g!(|MQ_ zA4Fb+@-bb4g;g6_VkP4?1{u10(H!z&WrVX)JsqgUIpQ$VY$P}fu$ za1J>Yplnx>k$^%z!%6g|wR3ncfefh;&D!vwx8cGxPj=Ljw4fI6NtC`;r^ta}xqj_&}|%V@P=X+(e8 z(uU!6H*FXu;WNocqoeUKeFQbZ+evjb>~+k+j=TVfOm2mMDET&; zbJ^1|oT=?$cO6j!St9qJn1lS)G~oF0MUcgvLlYLrIxxz=H}(xG41>slb;@JoL1n{W zXXQ?>ELi5WwWkKU&5fQ307xJ10EBuX4HdwzGGhJCHD3UqJ z(zF8m3-|J}v;$!dpVpp3V_~+$N}%rPUR{#&7!Y^8`g1ZdwvfI6Rk4j`b-|!<@3K^ThNWZkM!&iCWIUwnh!Ef zXtCaj*KlrL?j(-XLyouY;U~Wv>u(`Vh4sk?A|l9<$Dm2f=D1u>n0F@z`bk0_D>-|vqPU<4XOrg!LXkL(YsUG#BT|Q zlX#_E3n!jxFl!WOSR;{X80I24ZOMi)$(UQ*XaJBca|%ltI%rESRaMo-kxkY)CRwIJ zJ)!IvU1F9aFKeF}B$A3lihFBICSw`K%bLJMKu5j)O@vmAIs{_@(M-g7Ss)`X4~sS& z8lv*JdNlngyC{-`?+BvJN*b!DhR8OE!#$tjzLyRP59E#}Cxks!p=%f!4msnvPR7E{ zB5f(gZjzlYfF_yR0qIZ0Z=Eyv{2UUMB=UJM_&oe97%6NZnrzT6K?Jc8Tin1wn5rWU+0h4v-p zPqimy7KA;Aw3KTY0o`4zMd6J~ATyaD%r!c`ZYCbSxJY!M3C7n+trA`@{XGOZTzJ|>9kP%CCKG3-|oKj9!n zsl}-w*u;Mr9~uW@l<8*tXiA4cMAhU10u96FSOWMD*+5obgJ_e>i$HXW3X&R{k+*0_A9R z&@ou`dyyW28ddGiQE|k17VNI+ElC^^bE#yWl422`PbywPX#>%Er``l>!8{hCA)t<| z7lAPyHIhq&+4^@qX|$Lrj7gT!BAi5wbUB@=GPQFYqAZmM(h`~8qW=MNoTwhfNB=I) zq8ws}>E4iFOF2vt;!t*jz*>MAOTQOoc~I$rH~h9VU;t-Zio5I?;$Ug=LkRmAWV1%$YJHL)3y|7DGw@u zJmydd9hrjG9&Mk74}lAVVj%{{$%!C~+<>o=u%~u6t+%pW7~)U!&gEjyNqL1#HZ#jN zTsv_&Hxn;TTu#P$*gO?|BI$0LULW=v_6adsiS<@P&8_yu+->EQ$PbM1!8)7|2-w@g zGNpnAS2iI8xmjf0uOfqxn>D~+#@r^#Z{CA9B5Ezhnacp?8Y^8RVsITpCX4fcWq&A_ zQDTLlK>LzL!hq)&rxb*XG%J!wE(Ky$i(F^R9Gl8ECrbXKcFHz z`AfPwK8 zl6u60D?t1M=pKlPIA&Fcn0iyk*UFs>h6OZMW;iZBgOMvC?!g?7R#q-<=g2sQa?$4& zDVb}y0~BmP2Xq7~PZRAGCDXc!;4>D&B9e?0Q9jLVAI9Y2tW+%G*ifE2(Kh&ys6+6P zU?hw;k8tiBA%KorYple?0RZ5@C!S@t125z2m>3bjb@ig%vs>^P~g+RGbs8TifkgNB$;SS#vA9o zNTR(BF$H`q!Q?V=Lris`e$L6@w}cKb+3vxuV@i&{0sy{;aiRC1;hh=iD}iMG?{GC{ zYmeX*hSh+$P#Wd1Jz{%rP7@ymR7@Nse61($A>DNQt?-2q9!aI;*gX{O2pmXvqCy2a zU@i(Sg(QlITqGw}00HmFQ?lR^ zE3&%Siz5Cs)Ha@_yMTE}c0I*yIP5ZG(-h#r>1EJ8;g^ry=>o{FC_Q=KEM_6RQ3+`k z6DKhHfg^HK2faa9UI74HK3*u{6af$EuV`>5F{7iQ-A?yzg$pGN#Ng=arRNZjHk+P; zzBJeHWGqgSW`x|*vP1ZQ7Q%c?wy^=ku-LCq1tO#J!oP}~n@G(>gN84I$`O@>t%^7g z?UN*2$gMCqKjt>(0_I(^l{#SL0iFO@3J9LQAO;QZLilvF1^7&{Zely?czZ;SMOuQ$ ziGe?9q)kQ|kMpX0Lxhc)yGRiOyf=|>(^<(OMde^a0agkILXlTq6J)INl;8zNZB?hD zYB^w4NLZC=K#OE0ne1kRl)ux2x5nHG38S+TYQu2Te_#QGpz(!{{{4RnnBBpt&F z8e^2cfYQrNcL5&kd0CEu5$9Px%z2f2qcYFn{Nd$?Y7)FC2sz}?k;{#{HD zbAE0FmLNwLah}c>U!ej;d^s#!`>m6O?SinC7zf8!`hALdhymEJ8q^KMq|w+Co{%gN zP97hd51H1{_ySo1q>-5gfE4(ZFPafGL-?)(&%hdj?f2m^X70l>nQ=CMUB4u(iXlQERWvRNk=ZX@{-HY&o$fFc8| z#n^ahi}BH0`}rO*2PZB3nSDklA|xc!(b_fdk14 zNk*9w8(R&2Aa7LU!6PKM@<39U(E)=LB>!KWJBm`X@w4eego!XBUZP_j5&|{_TvpkT zI65aG8c{hav;HhT7V>yHTYv`>1O#)FT^x1^2F;Vbsss=iStlYhgrcx#;k!g&eH{%| zHiUmL6|9-i+9s~eN$$mHw-VDss4Pg#ZDM*dcQfuqK%~T(IWIu4ssy?@uaT>uPNWo8 zrZ8CWCGoo@E9ReKk<$2uNumy@HRG4PSuaBpsNKd;Y0x8&lo`I4cdDdWoH;;o?1|D_ zERiC3mUjr5AMTfz^XnlMRUo#(8bEaQnfMUd1J?BgBirio#Go(;6iYf7m}6Y<1}3g! z3{lkhMNyey9}FGNOE|p}hvGP0hyWyLij^sFE$}774guwXx!DEGenp}82m~-bFaKVe z6VV|ZaU15cq~jB;q;M{DQ?3O!J5z~z6exx00hn6EE1SlOyum*b1a_~)HZTr>1R-(* z&Wzf+;?kXNCI_kEB;y-z{4C=iWK2L5tRd5PJXL5NazkpLRHqOJRC*k9)FC(upk%~m z7}78~yjM&YYccS@@pM2m`3Po|J04eXbX*M|6c?7*q6EvROan!Z;fHdi;%*3o%_PCI z!-aYPtey>tkfko#vV)$%124M!irwX(v~CDGk<8?&a*ujC{Bo{cqM;NxbN4C*HOL@k z?XbL)A#@NxS_z0%LJG~`5&_Ef0Pw_ud*TFnIlrEM-VB2zYpC&<0@(xZBgM{!vZM!( zMR-Cvq_Yz{4LcLa@H6$;q*-0H=V)MX_Hxdlpo6PQ5WCYH2xlo(?zB9Bb8NTOmxdwH z>dCakRVXOWVshNkh4aZo-ifS}267dHNlG7VJ@wA#EahxclyQ^`ZD?H+3Gm9?v$_#M8WlRsetXmE93y7 zan2DK*JlwG3Qj_nD^H-`>uF?5oF)QE=cCxj@wGhGH<5}mhC|*|IhV;SD{jPs_%BF5 zVK@hzB?AO$tm8RXsv$-%{ZBGM3qw?dYrhIG>7qWtPgV_f9l zYyblzih#GIu_M5PcsQTnX*y=1fuo4S9FZ^3VT-k60gDmIh&pULwH=m~0^^I^VTu^r z!iZ?Ea*-%d!Ej>n{1^nB;_>h^j;+oE`ot`hXAsedrNNRHu;&OdqL=KEa8@h}pA1ut zM#(xpg1)ys?L+7ir}0~v>}0VA3-T2}Py&7H({WKO9tMCpv;4H-wB-jSTX+s+l^#!` z@*r`Ns43X9L`bFsatf_Qffhb{Ar2Ik!4eS!YDp-;5PmH(`C!Ce2yj&cM`#@^0>N(z zAOA(n1g}vod*~y;U2OOgnbrkqM>c_&L>5jjjtnsC44gfns@{@9FzZA_C1787&xNE$ z!+Gu!%q+|i6BATn6!r681Xzjyu8kmIC=6Ovg6L13;VAHRkG{b4qahM^jhM2GVVJaY zg!4B(WStg?CLC_c+gm1*z@%3}B>Qo6bqFqWBoAbVM38_JVL>Pwu|q=Z#^0(P^u%Z$ z3xP(qJoZB>)siJ6wH18>IwnC@_cSKQa6vk;m)4z3g%E)uPO_Y99w@jCY>!}W`z9-Y zzzGf5zdW(u@}-Dk?0_g35yOO|4XK3NsPb^$p9_Yaz!jMiD`Ei~0h!RcrnVjSOCWG^ z_fZZTCJ~NP(wSZdmk!(^m8F&r{|L{V)VkoY1*V9*Uo5A&dtzKEYDRdjH}RPzRuTP5 z(;E62CF%$`1`6kL`B7)OYu&Wpx2DrlS+%avo4330g=;DV}J z9$tYAhh9fV?3@l{QZA~ABVo;usfb~H%-06-1JMW1#=+Phq>w|yiOArKz?tSG?v7D@fO??mZ&feaifZx zU7#fsDw(z0c~Kb97H$h652<_uKC|ifKw*%%DR2XOBsF8083n(<vB^4o3}F?SmC@Oggr+h;s{IdmJFy zZrFplNFrgibch3)dtZi&X!<=mtqAV0qX>0HPeoGIGvSB4IVw5j#ZkF8c??QJF`1vM zZ1B-4k-^LrgzxYV+T(bgOTtd=F#d(Uvl?eU8s$(AI|u|DnufU4ACBUXrZ2v7c-kuoxCHiqRz)5bWNzV_PD%=w_@*w?tC@=A*cr81?KCX zpqkkka2{=}2zYpf*r^h92}T*9o63;LVX`lh*)qGHC|xk-h!>&Uh#vBI@4ySY$8eM{ zt+ae5-EJ%kA5H0oRt#@0LBGchdxQMMX=2kw+=FC@L=~un$nVTh36ieBFIXaV8^M^7 zQc|A#!$4wgf*K+B+k$Sh_#;pDZw@bLCnj#ZBg|Mm2MT`x&8}yfk!ztNlKIGL=p?N!Y#CrC^V#M>y*nFW zya09L17Nv)p>&DZX!JY4lt|a5v_xTnXCmFqYZcy2AX@c$MA&lo%s3jaV0N}SHx)+q zxX>&G1nYo^6e6c2l)>tdREPi~l%~sxvmxPQPKcjj`D9g0w!E#G&PiL`jTc2q+50Rx z9xq8uH;a2s$7n!4HIPk_ROa6dCs^Y!??R(lXuO2;@pye5{#Cb~O|N)BCmaNV1O%$g zI+?br;w|7^B@0J|ILd}a*cT%#;FlPA7TPfJDewl$PD72DbS?H}y69<@;G!<>b$N1% zg=$n`7-lb0wGGsIs647gf}k1iPoS+|8z~Y(B@+?WHVb0sm&i}j$J!Hfe!^qQxV@T?u-Jh`IG@04 zlpo{%Xe;Ct;fU#7=(Q+DPap~7Q^9E=NzH-#g`JB!1Y;=>nqY;_Nw8@)!R8`%GckIT z5eq?7J6gNZ=A_*#g2c`U@mXScRd}W4LQZgPOQksay|Rpsn1BN-q2DVIDbtUyV3Aet zGs9v)Rfv9>jG5-L7(ko{NtNo-J&SulxfayMV*bb-Pr%aan_y4-&!EaL-i56kG81 z$o<4uSd8q!-E*;#U_~Q@S>5j>c&P<#DLxstY{|dJ9$m# z4ttwxfm4KR*ZxWx_1Iz|nq1jWM36mmD|j`hNi18Mm9J<;km0H4rvs`)1%tw-L8zcpkNSY+_7S{4Mrl8&GzlppUPxGU(7VV@6`L9ilj zV(__9gXhw3Ni5q1ICBF$q7;k{ZJ6yDY`ynf0fK(gWP8eyH>bfFQjb&{ zhr6#tkx+d$EQ=RL(1+Mmb@}+4RvVml>UYCu-Nu$});$pf(fNr36kp=aRb+sd^qG~5 zBV#1MOR{;AZoq=d%>i{A1R*S)=1en{(Qu?0+=9X|&Jv&W60a^X_$QR63U8dHiol#f z3{4H5j@g3euCr{GPgt~@l&!(>wVuW?#&wcuySE4FhNRt)G?_~9|3cE5Zn~L}XHkvN zd9B}XOD(chdv79nkZa6tl? zuvp9^nAPP;j3rTo@qGmQLx=!|%sLc;S|>m+#O#?E-KlColU=~5p`EI#MwMmE;-9k2 z5sQbQg;{|z)(D0WfTJ;vi(+Gll!FBc5LU(axpr4QihPwd9Q!bpMGJ zN9MzRqsmIY7=|U@;n#N+;Op(3soE;#o0;|)wl|^vyn)gDe=O5(9QyzEL&rUAPbTmI zLtqHB9wZmYN9=3^75^NME=r_DsOKJ#1YRyeT%Bb4*yH17dJ_=S*UZI4z|^&Vf-tHL zU);5hkT;y3yARU4Y?=Lj24FOLZhUIsZ45T0!{K?xEtvPnl8^{Ah@D7L$}c|^&ZP&Q zE7e~b9yU9v%aYVM*35HIQo>hPurb3ZD%`odzUG>_zi1)J%)-X=4b1%s zkrj&J{0zU3IwaphQ^>$;C5$Z+B@D8?UXH*I^pu-#oMekk`+xFDO7`#*#`Ptif$5j% zRVUelNH3b`cz1$>%|+5iBPs1IqY(glA#pIRL8i)}Tbu~gcqqH^;QIWAkr0?e?~?a@ zxHXIZja&5q(4u<~`n{94pd8(?8t7 z@jS?1kRbAYIjkJlL3W#06mn$iRJfHf^lU zyo|Vvg=-pWY+x&ZM%`q+mtZ8;%yw`Z>c*^d7>R(E6>RtT`YF^Q=vf0$NNhptbpcbQ zZn=u;aoKEqy_4{h%J1wcGuuM@?@-`HAcyp~p3-JrY9jP+CG-YR8_(<0GV}=tzO1 zJ`x2QNC5E4_Dv%v>m$qPb>R=MAzq#sHu)*~cmfNGWnG9xt|gAmW8S94{coL;7{21E zUO!AvoAUQZCM}&BP}cOoo`1#s=HF~n#OdSqRWmC}&E;qFOs9|kZPk&Cl+J+xfBwUS zILFXSccpZmls)Uds)Cv>d;fI}a$23|qW3kn{QlEdo;Mx1JHl4Jbn}(pl#KbL%klej zr#y-YsQWiucNPq2j@3_07oPRZXnudb3H@%vqL31ztrv ziQL&CeXB%BQi+yJ45qK`hm&F&!wNq>vPDblpPV`~sObJH!LQEl*17Dfho9Q<-3zb0 z^2(L9UBXg!>!+7bH5c6)Q+q0}?(^(#{OWN^MWV0ssM>6-0RQPYZdk_9xO<90zkT-nhY`D1S5U_7XUN9>p`y;A}7{3FQ^G6tJL3;X>=?p&2@B@8^+<%}hpPJB8@`^)0SMR70ueO7Af?EWdwzLxmR=lZ8ZZ=1dI<+f8kxn*A4 z9c|XWJMkm?w!!+kRj~&)#E+<$kzHNbqqU4&ci$MIi}_Uy6P&gzKtcFKc~o+_;Ib2k zOPlv$QzSR;q-Mrf*<@P(5vigDq+t>-s$-=30}HN~s0)a@X|AN{B)tLKMt%CrwHM09r*C>9>dLX$ zQ=Y7$LD6+mYuQ8Mm{grfJsekq(^3SbL5-Q_R8_r1X-1FV)Wm@+z`P zt)?b%TX2fhA=5|bm-I3$D+(kv{~xpuMw#CJnMew#Ihq(RJ@mL1cXP^L7TT15(@cbNR@8aJSPcpWH;==j%cm$Xv5pXI9=pL$U zFhlwGQhCF7p)nU!IP2eBcj{!W{g`EY_vq3~6IRY&5K+|Y0Z_)S71G#j`QNpN#>h_> zUx=Adx=ol&=YwIk^iuV2!m=Nzv4-NWK6mJ{(lx4^b5-v}L8d51%)s#M8 zJ2j##DI~p9MHfAYeTCBZN-)^eZ<;@3{Dg%a?-RziUwk>E+oqkPR(yVD*q-_v_d_ER zciDb9se5Y~?0Rjtubm;G9jG+ec@A1Tu&e?V`o?^e?A(Z;#o=Y1q$$PY!_Jd3jm#HC zmr*8G+}Nb{QM|G+ze4(Csec|`UcVpL%z!EDNRrFJ{zfn~kY|_d1UR#Jhcwc)<)Qfq z3|2@uEDPY6S=90MYe*dc)@iL998d-J43t{9set8EO-S@awh}P3;~H=6ibfFXfIj3? z5y&8nuy0}*AT630C>~Z_M0YSLdTM*SdYX`}G9( zeN#q9Wha&njh!)Ox&Ba>^S!>?+H?6$k47z=`n$W^{i656dG~$3w)YcJ-4Ew~b^iSU z_ML{)B~KIvv{t6zYqJ#@N?<6!^iXBP+2G(z>Ey-%p^of9lz}W3*liq$dlkA1L4Rs< zkdWpi`P$?!I-WkM6^3Cf{!CKiRaWB8g|wq%hW<*Z-xS=3!U1 z$R|J*K!XwB<9ye7`8mPO&|o7&4|kLNLf9T0hN2-wl@?Mu-AulX*mCl8h!6%UP8F|& zI=HO>l=3WO+KapZ6Gi4OwC^bOz%V~Aw--$=DB0mbDl6fKNd!XDI&dt;+{QEUZUO>l zd4B`Qv%Oq_=q?3s^k8?nAyZ6YT^(AipfP0LkoaC)F{xU-3^AhA4apH03vM*;ZY z8TX;L3LD(u;dtZ%P%QBfu$30v_3CWMMd)}Tnh>^Fk%yaq*F!gBZa~1i&JXnn{d?Li zLM?jwq2;|+_qub7?VZ+EvDk2SeQ4$(hyo#;69@0DR%palX{e`jGyI*Q~}`IMsOp9Qr63>J1WE3F2>%$O@2mgG6@m4HDTKB(gV1 zWc{Jz|Ggx#ThP`x6hQ(0L(+0HlXm8qAo^z3$M9(6_^7&je;wMbTL)n}y-^ZHERt(&1|CrN6Z*?Pz^~nYZ3t7zIpNO+`~pN$nzSV@E3x82q2h!^Y?E~f zl(4yq9TPNF61eHS`KWm}<47bHp>>GX$kcnAxwe;iJ90UaZaQUP!X1j0R>6lWl7SLe z*?<&E8WNDkbPmzqIA&h@z0CGVs+Zq`sB@@7rmet4Zji_#PQO7S>xWQkH%Me9tq~k0 zRe+)!B(i=554YtyH03u)WFvRqAd&rVB9X;qEdUX`L~VbssG$QrEiU}}aoZLr%o^i< zkk}AF3`LP{0rLPEg8^UU5t0z%;m9I@AQKQwc;UC&Ap)E$MMTUPVijOVH!kDK|Ixa5qBNt@;$uphJ(>^)P}{;n?$Z)<e)t=}0EeLmW5zBDegrXat!rSZksU%JCnP8H93zV6Zdl6?htHh-(u z!M|IpF$0{j@OWgPCzy_|HC{jmRHse$lu&>p$qs|`WiilA?6%&o+~R?1O>0!0!;c|$ zVUZ)hsGLALAbQqRWOSj-N01K#kOjydSTN=p8htoeu6u-W>EhIXg^kJ>bNsVy6N`r4 z=d2%Cw4I|-Cht??`h8qc?yPr*yAOoT{Oa&<7{{K7ZN+Vf*K9+*Y;wu>p?1TX&wB6SLIM zk}G^X`JsRFEwa3Q?@qmpQ?GdF=^$+xq(v-e|AU6hOzJ7 z{q?}jHHXKiE-EfRU$Lk4HB$X`+6lOrN!=2jiU*UfE#T!@zcXEZqw$GJ_w9@R(~*hY z&!#Rqx+!epfHxj&y*WR>J~ORr{$@!QfU`q_wRPW5S#<8njEPA{RRZ+k!y z6%9>|(nQ_*=A*Ko0KMKmWMD=$pC>F)YOa=w^}t1V78m4DViCez~B+h z1DYus$RMbAWH^Y!VP@|4dtLX;Fn~UPywCf7p7(iPKl^b5X6ByX;d?$^&Vx{VB-vo| z*e$7eWy4>0{nO_?X>V`*9GRV1|A`>0@tM`fA}0vQQ3J|Ryp}Fq8ad(5=UcaXw@N=| zlC7r=eRM9*w}qV(kcI{4&Yy2UQZ_9LLn9|lQ~F7=Pnr6qZne*QdVP{K z&nLKiTDaAaBR%HXer;Tm7*+Zs$B*BqJ!-QJmf;57Tvt$KIH$hd;-&NKo_bCB`KV>; z_!U0H+`Mw-vqsM@kP}2hqw6U~OZ(r@E&uf4gq=nosWncKj&Tfd(w;kau4byVFDR#U zbt(F2pK9OW&(3rnIp?>pQcan4QV8twRkrK-GHJ-aeDTPC?K~L&-m1r3vUIh^2^qm} zzH;H#)l=zyTlyv5`q$$#jj`qi)k(@~m(LptcOx-3$43}OiTbAIbo=sA>Fu`kn{Kdv zQkr27M)`67{{7KW>0lS0kg|Q@gz<9u=g*J3Z8k@(6KpmB>O|F^N;-aQfDvO>UDm9m zeLuBGCgOM&N*!-;Vsz<+1yi@oth<>KZptuYhTXR9+c5;u<7>GWmh=6n zY-Rc1S|>yuow)MYq=w7ukTU7=^|EPvVmY2DzvpQhpFzT@F~z89cA;sjv5&Ch#Yejx zZZxINmaw~DAEUbGOXs-he_wyjWqSzDq%|0H)PNuaRq4#^u2QrpL_DCNS_)_OY}uLQ z?t9cle25?q{0#{{m%j-baBe8*bbD}eLkUsrn?I)RhXK0c0Xn~&7GUfy`}`~ql#Oq+ zsDCt_xu-p02hSijt|LeIdJV|uyXR?be@gY|Y^nn;1SlXLUKa{|(P-u>CisfW9E zl^Q<|#YxV!jCiKeiUXEgZBg0!pOuim(`0VhopPVx+_-ov*_4AC;;E)Q1T@6x5qv}x03T>JeA z8HhF*Ez4s<)BTDE>iU+Qq(aHKEkg-r=9!Lp$xI^*gwG9*Ze+IT*M@FQTR41h#Xr9O zTjVHdZ*rl9TI088UI|?yyk4>Q_c2kR@twKBM_g!4Xml3N`OxseU;eGN_KTb5IoBo2 zTg-1CwtsA;HdU6@RMu6=k#H`siyT%GQ5UXFyTb>Rmt?D`PO^9{HQl_KVOL7Q@jeg^ zH+SZ`o}ie_=CsSJLeCZyxYCv~_V(@DkrQN?Q{zJrrG&9#w{Q1X=Ht!aKpYBMfamYCbJTdIiFcjsI@ZI|s%|z^QG^xy{|Dz5K$6cRPGP zq{ocrE#KdEtapm-IiHaMYx25Pz0}Z1Ly*q*&Z<#it@R?#nAtxfy}7a$amx52h6$xv zz_b?zc>J{Smp@@;?jn*?^$55<1%fK3K6lhB1vQZh|-0^YYi zm$m_W(Jx*L{yWO=Mk=>P)|V|}3-Tyddfw|7I9_?LU%*aoRm#17fqVS|_xc6urLXfR zJ6+|1?Kt8@Bm#yYA)F+}pHl-txZDhiB<89)0%>_dl(ZmZAG^9r0>voZhurQ?iN7 z2%AwhBDjN(1ap|4Z-nsY$Mkmf*FYQhYymhX>!$=2_y8mCeM|s`#tuBq9yQsbhF!93i_@`5$8Z46Drhg%$pAf!#MI1?_i+Y* zoFF<(Yh)hiP`0+nt7Rti>f>OXWtr&uskAR5xFb82t!zN{+$C@t#AW2+z!%G9&sOlV zAo;Jra7$~B_E0Yw>{&KX{x99#yc?fDPng*68gxRTqXsQU6XnEBJ&x{puwBlD9R;R6 z>6ZA9DzEE5PV~0i&=(HZUG+^&O0rZ%*JS0?c%6{~2 zAkxvr4SJqwVAsD+I;)bi3}?UzUbE!3FyLHVJ*lcq%xmz+sC8_LS|m+ooV|htsT>6A z=Wu3vlA$}FY1XWT-`Vk+`NwuXK4;-A#=Ja^$d;W3-ejwcsE+(c`v#~3zoGzslEo6-b%CVEbG5>SRFt@_;kpY@!EvDHjOxl_6Z7!)Eoqb_c z@#DJdgI}KCcIwM7Jl6MxK1U8r9nw@P-_0Fa0QRJS!+;45J!Dy+>4=xq8l@W9LM&uq zOJU=yP>}bnUgFlXkSF9i1a+!0G~-OD4AP0zi7U)jdwBfK%FqMH_XPs@CJIH?kcu6N z?WI1T0D2!(akPiC8!W7Lpl@B$5Eu@VO{IU`3 z@C9+1#js)=1F;Wh$2`Ao*mk{TQr~|5Jzj0~=K3efzdmvQn4jM5mpCI&fK1H;48GG! z&7(}^-3Q;Q^v$*&{L8mJ`o1t?%Hr=|d~@H#pHgNwsVK7=THHD3p#LFv&X(LF7Otbg z8B!CyzQM~-@+2~%1BPm2ueJfZg&1LHwLw>*2r{PvbGA!zMlgqLtJH-3vkzZDPZ)^+ zEqS0`hk`=;IV=6p`G%%9C_OZFO9$aI=4kZe+j`@8sBXhW;LidW6Fa^6C$(%Iece6Jy^dG4$00xm9mR%_k(k*#)d-L$aL1*NA)?)loUf8Tx&c4^b0&64l-jaLo? zuWFoRke&?5);3M!)P~%EDwT|#hS4_dA&4uhI;7#Uz28qc%tlYOCzfQ5o>(X$k#Uw# zkQUqU1(6G3D4<9VD+hhEFJJlrjA{ewUfL8awHsCiF_&**%RVFtDIWSNg;O1am#Ko4 zrsGiQJhpw|bFsc1+!u8pICiNbR2x}g#t%A$m#q7DR24JVdTKGkyjG;hQn~E zfgxCGhWyDlAw*mK`$+5GX+lteV+t@v#*`(Oe=$6x)tJ||b)FEg{&e#f=1-U>wBGa0 zS;dQgP5sbv)fikfR&RMd^IBcvo(RjuwU!GZrlRdL_if+%(qC70ZquRj;}1Ue_L6O@ z9`ybyJiFV0+Wl?sbSI7KOH^`KF0oaf!UU2ma;OMcww_}z&3GNOZK=eC1Zf{*DiY>w z%u)|3Ex;iPG^A(M=!czc2?9^k$+H%SWxhgX6I|u55Lsx!rp{COoVt+Cg4oz%yrAPc zfnwU;a1Db-u$U@fi^$I$s)7$m5E-Lr*zg^R3y@)PF!JupqBV!a1C+J&Len|~dqG@J z9-Ope%ogV=W*Bl~j^(1`JAI==�~ZC@y80>1OF0+p z%qYwZ@9I-fbhC+^Qv&W>Z>V@OFii%MtBM>-cSKH59neE-5Ue0$N|>1!3&*&=cYuhPPq_r9du+5!;?OvS$B?=9_Qc~Y|B3dmkg6E-H#~; z+QRi4z6k=MP5iN#Ed{k(jH~e37Ora~A#pH6?zVY`*aO~0Z|QHIdL!tKme0Tae2e>S z*S5Ye_|kCG2PfkPM5Rsiul?R5FMjWyP35^G2NjJ>{5b3Jn39_@SFW$U*xR?yqSK$= z=lSurh4cHBm^wrR)V6&#_3HMf9PWFU2}VGB;&6wM3JyVW*!(#;Fb`N-Pv5qN=99B( ze+ZhAtt7ad6fIj&umq zRl*{)DaZmeiyx9{8$3|xhngtNyWnMRHPvpljHO+L;W6sKAVW43;WqC&Kd6B4XmFeJ z8}`Dhakdi7bue+Z-jW?ID@@FT$|!eCo$?Qa@53w3OFx!Z7PdY5{KT5oK6-8XfUJVf zH?E0a-qXfukxYZb4J>< zb;~EmXthUEGS9A9EM|&%c1Uh|J0c3Xmaa&V+Y6}p1OzfFW^5BNt%c+7z!<^^@z+HC ziFB0R<3JTm;ez?<=q6CUgb&Hmc$w>i3V(z#aKG{i<<0Y|>{UN4K6}}`n1Yg6UveQP zr=UAP12v}+!wBXLz7hpzwDjbj;p5pJeOGxr@c4+qR~P+|-D}#h@jFV^b+py4i8?)e z`jEDt#kE^;ZrQ@+e*JZ(#lzEo`)2&$FRI5EW)3R6abr(@%_rS*ex50X@U_Z~%`&hy za)L~&4PNSMwbdG+Rke|iR12>AYj52#CXw`CHJ7 z8Ei@sZLH2)(J$N`a`omzDI?1d8ES^U{!4&=kFj04CV%qN-h$S<=8YJFd5dkN3AKF8 zhBm`{jrQqmKHp_cY<1{N)X6`a*CcYXIkDB9-Fvy(D&>!~?9BUCOrO(gt93`xMbYv7 zR}WgUtG!>Z6Pdc@5A{f7@2yedAdV$Q?o zEpInHT4{1=k`HwdXw|F5$ETJ?AB(s!c-@cQS91zp*I#|=gS17{{+Kp@P1sMnZtrQ6 zy|qDcHJ=~c{O-k1${Y5vV~n*K-dg?9Pw7`rJ{2~nZ)4|uT$M?4XKzVtom%fID3r!x zQ;JM;8clX>x?@+*;9gnRUC!q}QIRH7g$Y*y96^nWR3YGKO?k-i%};XvFyLS`am26& zDv#Z;F}8K^nQ~Jmem^ew5yJhj8v%j79-!%Bh+*b;P{u}p=Wyz|O#0^Q7=!y9R1e!twQ;1n;+bodgjN8^( zfn`8gLr#c{zeZ$$b%13e(i*2*WAt(;DpL86-SmPpkZ&R?=*Yz8g${gfWm7%s0U^`| z*_U3OTMM`XARmt+V!Egh&Ns%OV_OdZhp<}+feDV$4wik`BWYmU08bg@ff6mwaOSk_puZMj2)kIUoWYDvG}pRR`;8|W ze4@AeOq76j8L&}=By2sL&vGtuErFll1qk(o8*pJI0K9K_w0LH+F z8{id|=rHsws z30CX%j9}sI8xZpXsZ8ZmZkd49MA5_@CMJ>R9OKbBBc6z<*%2|rC23$EeqPOy_8pya z1l*w^pd{X>AshiG&~KIiEzugW@d^x@=ixyv+=)?g2}%eg1@!u;!u>D?!~svCy^5Vi zjvnWfM1^Sqr85(n5%&kUY=kPRz8q$oq#k6xsh_}saumF+7sVkrD?LFvb$38ZBV2>e zX`b{D=RQi!VAmLvS*KMxo2r6M2jmV?2`5Zx=)^a20eP@#f!m9Cv$vBMtWHw1ghB*< zAadB$@6PuT2@Fo8T@C@sB-}t=R+p1SSN6hQdStPbdd`oX|=olDP2<%xu2Ma?W za(cb0v9VD(FbYpEELh-0TdQzd2Etkj>54>2iHuJv1e=SJx`REaJ&Sv){C&gVe-eMj za0+ZBw^Yz7j(>ojj6x#9j?N|2lmID3)Md*EV)p@j!INK7lROLLC?8);u!xP|1KXn+ zfXJE&SBZpt%!AVAZ>DmWO< z{5QkUA>{~L5WZ`IELa8L0;MZKgae!phhBuK2l-5Krg4hx%g&dZsWE&2@ju?C+W3Rng zW1a&93`!QC1DG!we!7!-q>S+m;hVtrqFcp{gUlvYvhhQq2uTqyB-Jq^f!94i8m9(j zbWmYy)w|XwfEs}yDW|59zma_?l%+!mQW_CEYpy<)x(;esL!6fM?qVjIY7$Ks(#}gv zA^nfd8J*=@niuvqR`ez+GfWOUj;xi869Pyy#jK~mMPUH!4WbLd``Xj@H3CpO-B^95 zw75ur&d5sWl$et~vF+vjmDlACHREN6^N9KjEO|?Qj`d-sGZ_&^j%`*;iQY=@4*8vG1bk+h0^TIRKDV%W;D_R|rmjGA^5$9=n9VP`+y2C0Dt3rfAm5V}2_>N{YJEDfFSk_`cHe*ir zN`kE?6%;mP3m9BIKX7GD%ze-`)yu=U~OH z4S{P{hh=^v_wMlW#c5W;Upuw`W{Oe%W*rGpD?%_Vvu3s78|5`=sg*<(fXhWa3-p*2 zCrRsnlG6=CmWfN|#79+p9VCl;AS@cJA!3|EKT}k|e5rut zrIIaV60NUF`C=N7Du^2G3#*S6XmvLx-*@!Dy4~3ge zm5G~G{jdxOTZwZWmt%Nal$8Yfpr=KNCg#bXAmcHY-Mm_`&H*ltCIRU(hy4T5hB@Z| zHiy_xQ{l+zrN|L$>|T*OK(6GyZdm~75x}aP9LRR0FopB*CLdPhoa|;DrFzhas;RV- zAj6Ppxv17Y&ebwjJVz)v#MGEJ%s!Pvwy5mmBM)+_ct=Dw)qRB$GMofU(P8DVQOMi!C$1}+GzHPx;I2Jt zWK!EZSTK~Wdl|F}0p^r3!nB0dqpN_E)*hAf)MSl|IDbISN>C@|#4n+&Nqjrm)=d19 z3GsIG2C>K2*Nope2GirI6MgVT*@s3lmgu03(&3Is;C9q8UHwIAsQkqnXcGs=ed5kB zDl8tnD7i7bivNNegagAOKK^(=8swjizWvnXoW#ZvHsdu|7*xr0Z)mFGsIda^_TbOi ztyqF`%A(kiY82xEp9B;W(3R!rK`%J3Qh{)f0(`p)O3EMvk5?s|_Hp+2(ldu!s6%I{ zT&)H?2C3c?sRd$|L0I`p-|BFc1K5VF}zN`cPD;bBTVu?Ey5g|wg_3(^o% zO4e)dxN2Sq=MrqJ{oL+Gi@8;930qve}A1eSNGS;0T6N{NOH(Bw6^A8%WscMC`+ zj{lcK@PuzBK=$35IrXJXK^Gq-8y|$#nu|LRgMUWV2pe2OlZl{{UR*}L34{Xfiy8&P zIz2Z!!$+vOa4xpUCD5Wtp(~9WccVWl@hXQC8MzLEim>j$Db-2KT*Y#7Q zy*z(Ldx5R^fN%(HAuK|GR&VC&mT)(7oiV1uxoZ8X(4QwGhrD%0+n_`IPe4ZkKRw(q z(z1W##Sl8lE*2^--wi?!cG-h*xD909LE&wHxTX5tm)Gcq!hjB$fSRUppyBqEs!cjeY z+Oxy;w}waQTn+<&s6p_m)C>_q!zQ_QQ*x2moEdfvg_05Mp^o8dl5FI5pXk5PTN95r z%u!{hdVW+$p_thL9-y<`okvHP9Iqk({5b7G$3;Us)6iE5lKy|4 zwKiFK4!1C@9N^lPu@E*`ar-zqJp@BUK|eBv+B#hC?pXHjS1o{2EX2%aB{cLiSq`Qzz^YT)I$jH3#RiSe|u_-Cg9MKy_B_XSP zuYmhfjmb)_0CK@3q%UANAV;Zzq3vcjfF*$dV^AD18V#R=_%xISc&119-OA12Y%opIkNO_nU{PMEHaNM$*Uc-GDzlg84*3m1t}tu`$j1rd?FQ8n%hh7?x1A6jp9)MJ!L+Q zL34RZgvi0+tly0RGV#r!}=6;=v58^iXoPnqk4N6c1du4lx+=1nnPF`7Eh};Xyg! zT%(5i)}76sWl&9EJbLa&&MkTtLd*3oDC*5>6$%b}v>??80a+i)rg(%*c8D{)S(8QG zj5s>I%gJ;A5otmp4a&t(?c$Ez`(A;aX2$e$$$uzbV?ufB7%lhS(SbhTgZB z6+_Ozng39q4N|lWuK_6SU`a=<5@KV>8(y<$G7YUK8p?<`Q0)eu5-G{Z2n~8H0fB{E z4Q-1Gd^sZ#g-&6Zn6x7H+=@$TY6b$Nay>&)qFn=7EK8GhD5wsBh?OtZ83;YjjZ*7;3tDaszRNz zvk5%oeT%jZ!q$l7Y3#K%HgBmnX6g$Z+BS=kEkvZ?+1mr~AU`N&8iAg3kSV~ymWh3T z(qR?Z;}POp*+WuwTSoT+>o$}BigJe^OutG0HOxc^k#s}>k$I74U4+4=1};m@a2zd@ zVU4Ihs+zFmw&2H8*&=u_L4shmc{m5iB?vUT_o_O8Fo^DBWQL(AoSDx7Ay{WcL#Y`@ zf-7Xs1j@iIa&yX@Ufd`!;64e;LweLmFnfv`y@xH6FY_(ads3VT z52?+6^kq-rp2T6wTmasj)aXvd>QRGIupZ!(_)gh5M(7Q-Y3pP87l*f`=}Z0;YC|Nk-L0J=?qN?XC}=^rK;`@e_T)_@+cbl3EKuW)F4w+m6P&G zYQkm+(uzT>I;7wXE)hYw?g%_F;T}0b-p;S5o;N@sK_A*hft&%f3WZUr8EHv-JQgCF zbVy|xVdu)~Ebi?3i^-!IM zOo{TWC}9)?Y|EVqy)&{7f6%sp#w4i^CriF_DoeRr4b=&VK)(~Bfg%M(KsZ7?CJHiM zHj3YIxiy=TYo8Per#&R(4w>UnWX_ZDy+SE%q!FHskZ?IPgMXlCbHlH=$7VCERk?js zM=pimip5Lwi|tx+1szzLWZplcHBPpZHclvATf1IcB)`2~7RJ&YwF*QH*Hfh;Z0B=X zE)X1N87Wn)sYYQTk0^M#vIFfQdm&robRkG89}l{#_*!1;JQ)7;GT=9rEa0omxaH%7 z_!Fp~VYoUdOBx7LSjT%VQIpKD3m_(B;UI2i(sIgBP$d@^yi%y489oYHk{nW=T}8R% zm4d93;SNybJSUevCgHtpfe#f;{+Jip9%VZBi8X;6d@&*=yz(({xp@wr9 z&I&1piwvHZu+$wQbdl5ft#o#hSc3)na$``!cZw8aqoE-j0)RfV{I;qn< zU6ZJOkQ@ba3N=YWBr_0l@~S|B7CL(wE)QAx0`iye)+ zHt-5h31SxFh>i)eFl2t^O9?FbBCZW1U?>DyX@u}kW#DPV*X{hG8W--g!|1XE(M;Mu z((>XY=^qqw?CHP?4AG`$72W-|#+c&mw8xvc=DGykfdpxs8Z zO9&LQr7^&yvX(3vKCAE>qGMuYbzxU3iBco-(zKsa8x|PsB;%!qhJr1S<^ef@=FWT*YymR^GG3LSSv5V) zdI>0GTOUZ82J#s_z0mvC)U-R(He3JyH zOZ1zlXH-&$!6BQVKgUE~@(hT}#YxqR85L6lIU>@iTg^I?xf;fW{jfogs(4>Xd8KB< zA$}NHU};_prUak~ZT-}E1M@+4U(e3mFu%gpBOzDR-zhc$J*-B~8Ly@VMY9902_9rP z0wV!0mYPX>`deTG9*PHg<-q5WI-F>@WN9HVgvv>{ObO7A5J{aDfNY`~8lQl~n5r04 zAjs7sDbR_}Wk$&m#?UZ!P6aYK71_j5kY?~yM6kYKA3a(dc#Y8q`@uojA19GR=QBPl z3qqtXr1sw-zp^DF@H8laQ6d^cj20Vg*A2(@I}w)jLGF$|v+5^1iw2~>6AIL>dF}V4L6A`cvZ;Eyz`KW&_v3g@jjhI*_0{xDL(T`yfll6Y+nQ8AEhef zRe6KST41`A#*!`4D_A}753q<4^y9_+FGRM2q%Sk);&@HM&y6f)!`=kTp@ath6zP|_ z9xxr6jb(+Iw?-JgrVpdvJ*STA!L@=ZdktTCYq zRwJocu$aDT$b)i)l8^flEI6LcwI?rfd2M~ca$Jk4-k$_Ex;Qgme5{BEyqacvg1m5hINGY-QV3n(Y(Rf+-hXF?RHaWbI*$e^6~YX~KY z6+#?rN}UmnV_~bnUUEZXkIEbQFf1qMBRc4j>*O@8@;v1MERf0y*TvdzNTZnsFipM* zh4?`M8_2N2CCJjG$gFR#@Kdi1Xc%5l&dHE+Z(Z4ZFz{9K9VHx=kGqD|L5Tx$k@L-5 zB;z8)FG#upc8FwuDdRU23WPJ5%i&$mGB9Q(GJpZXjo?X2UC1)1O2fs5M!hYW z!}VD&3kr6c()l8zQSSgzB2|}C5`_g`=w_o|tH!$-h*oPoe9fuZGf#)BVRn`|*C$4@ zttgg41nZbwBN&!F8mtBe`z-v$ zCW#pap%Ao$s=G#H(?Q5ICz#_f96+I&SGbt-;dp-~eyZHdqE~Ft0tEph0fs8QPP(mX z@)l}DrG?W1>tePRjrke>z<&oSrUfTE)1i44W-GCt0Y4 zDm24ta@5=gay=ByYKa7cX6&CpS-&z$D1;#?3129?Bx2{{%PNCd@T;_y1d#4i*FYCL zacW?!$PxiYO6xl%8oWaC!0+~YDXI%cs>QZroO%lkNeM}?H47QMi^Bw%p@BC{;m2Sl z1+%dTCisFhIVx6B*Wjn93HTNaWQwAV3eG_wQ3Kjz?ukA>!(*z9_)t(;>ad6=5>{C+ zw+KZ{?Lw`k$`CkV+!d4-oYWMkUw9<`C!m8w~LBX(_;n3C^7I!5y-T^K~IL1}k) zSZY0mkXRWZI?LEb&_LjgD5;W{UM|((?(H0}PAtkhjBt%O0<0p|f%qr%aXci+> z1?!j2n0^710gUs&sZy(SFQN}9)d+DM{CA#!l{;evl`}hHECN}|A|?HH`#tSJlux1z zLOdV&3(`hjtSf=F?J!qh=fK5aVsbjfC7LxD^MNC{5$ah5kJU17Uut$(P0D756zVcS z((Dg6$iOSn{c4G4fZ7r!m(dJPg$J9eV6;zGgLQDAB>*M)Gs#oVRO@mAnIU39BD@WW zugVQW&fKBX*LofLm;rDdKSsYC=g6&qEwC@;D@1z8vpUH)1@6VAx}jtgRZ+HHlCey0 zA@TKYM;Tv%*OcC!r)Om$!TMT6N7RlVwK+^ql-8NOdO&Wq#u49gTIDsg5QCRN4ot?p zIeVQp$`wiQuvi&bVM^XAtA-XCCgH}2nFh5dUXA0BX>e>IRY;EIn{dU92-baD% zuqkR*SVV`(6hj;xShKQ{we2WAQe8JOg9OZ2^t&a(QRU&L_5z7$qof2csFS)@ zso4Qb>sWb>6G%HRA7)*gIXb`CH#`1Ak-_3Sw2edTR2WB722Vo2S(GHRZY&gq`Rqu+ z3THCElU9H4khiHuC`HhA#b2aQk0lnu$tC@T1X(k;o~=2I>yRw5KNrJI`H4~l9-g{? zDxeZ%P?*b+#cR-VK<|4jv&o>tG`0)OFu=qRA*f++A?X9hreqh)f2n0Acm^1j))Q-^ zI1CGl%e$|v(;ll(M!^8EA`B%`r;%s3Nx%BueeDb>{(ttq>dWj$HmD5I9)h-|uM7_f zIs$Qcz6X86Vs$xF#pG}p)--L`!Mdm;{Au&4(6@Bsv{q#~$3%8ySl zxGT}0z$4D642%^~6N4|kId}m@5S}KcKmAUO0jjKdSnZl*F-UH;*l%yKYRa>g+3_u~ zF2)7_HjJw2>CbD&j#y>-8 zYU0iNXEB8wF)R&54R%Lw!QSgEhvg&|rKKusaD7duaRgcO=(am*knU01wR@Bn{KfwX zN~`a5)5Fgq8=>-Ad(<40V=i-aA~_Hoh{N z@nqEW)C)Y#u6(+w-mMXfc2Jr9tuYkLVP(rZ?-JZa`^-+Ik z$7sF9VVr*N(*LJldTlq2!@vCpO<)kT_Nch}(9bnc_V6XcQALTC6XbJ`i32YgXPM8q z+^*whIUErEFZ9KPz|^*W24U1Pd{NgLMj_$3+xo!0ORia!d;w8M)Z94PfUR-J-o!)U z*~cvyvSmpyra7BbWqy|SPy-|GO2Naxs@g0`j$_U|1+h_l^<@@j=wu~~-5~V@U2faS zVXMN`YIQPnZ(bw+OpizyJ3HxlvFn{bqI&xHe~w$_Qb z)BnOX^L$~+BqrhD`2qU=43TAu;9P~j`=5|+p(v!`^&NyQ93_X(c_$x%4^%7i@7?5o zr<)Y-;nrNGtkvZO)$2Sn9#>Yx9_f?0!sqhXkQ+z#EAJ)O?Me;}{%l2b+KOTk({nCB z^o#YX5pEIcMG+l)Cpa<@5pOu9eli*X3K5QjeiJ-Z8r`Bqz{W#ajR)1|GK_?QIY|?0 z9G^qiEb2E>jq(|$KZ6-?Qj3A93XvEI3ebzw4cnL56!1cbd}?|jEC)Bb0}O#HuQ=X@ zrbra+{N4Ts`3RGF-!WvMmSs`bF)W3S@tvcCR|dtN4sxvyR03pxU*_jNmoLc-KNJ+) z{QvG?^a~`$X((J!h^#V4Hi}?aAV}4_tIa4>Nxk+g8&Db1hXrBCc3kBcp&p9<;dKy4 zYUEKIMAmIc9g87boX1TiJMFFL`bE58#+VF$$V-rg%4o+!CP$$@f=(UcnRgIRiZ5qi z@&6?~1L3Un#*$<~HD(9Ng@j5962Ty43Y7>9s!F)duGN$8R;5dLngMqcXk7}Zr6AN2 zG*%jzU_42An*AY9p?2R5wHoMllF1`hZ@2m}eli;lv0D0RBz{Dg-%@t?-`<{pes`wj zHYeVMUB<*U1vL(^Nq~lSl+u&INUWLV;0)%}CSAfv1eC1cxZkasMjis6am)~opy|30 z93*d9bE?p6_HLDh;U{N{!rhkeG8mr9^_qSwYYR4&nBe}pjO@XoKP}&sEhYpnrQX1F`AHdv?Zc!e z=}3a3sv8nCpa8@xTRR5s;e{e9E&xB+uwW;M%s z@|MSkb33;y`l;{h`+grkWy+LWn>%?&AJon${>YHiA-LjvTIILNhh6e^<#` zE?(g@X#~$S91JgGXly-1AYhPmGjtsgdL)9S6*?JE54FxRO&{F_ANMj~DTtq|;W%}q z^iTpJ$+KBv(h@*I059q)Lg0PFWJKW;>U@|eMji%Vmm%+!*YpRa{@@;h?0Mr%N!}ph zu3sRuKy-k62(rQ+_Yh?7A;{iCkmVE@;DMzXQLZK8R)bzo)F&;Sa!R;;g;y5Mm-iCupqil!NmiM;E!aXgiO3W2jEH>_cSD6D}aa1Nwp zwE?Ermn9{ro&!om)UN_SQdvo`g_B(}+AE!ZJvckU_QbTe{F5UKhK9@xTBkkH=}NEP zvwEy+`Mm$Kk6wPX)t~*AEqvnJ&3+^NyPQn_>B`c9HTwe#^G9U5x!UzIcP;3y2xWo! zs3}_!5#>{AhIfPF6n#9Q^)`sTBHbGPfdCl!6%l-dsB9Zhc#8#^3C)q12e=G?25AT- zNZgfSvx(DzzV4EedWa$0cN{Nl1{k6CDAD{3MBG?V1CX6k^C}4-%9vaUStcgc{*Z(m zMLwdH2xkBis$wq(P7Ga&jEBPxFhcbln0~_I}~0uV10;+h0vFjr3w1l z>%{1gvWv<}lvtr^l~5sK--{V6glAhyP$c0r6mnJ$GJKUI0P=-%1q@L4nF<>eW;qxp zIT$+_jDXKfMZ6e9fn*5*9M+#L$msf^Al?V9^Ln@0heKNRbQ5}L|8jTD%mr?43)?;2 z-Rt|f``>VXrSR!>y*BoGc(-|Rqj^Izss#-9wNqAbv87E$<=7K2fj3|9?f0 z1%CEO>+d7o?jguxh7=qY#4G=gAjnFQ5c`pQ4!|#$*eqMaeeR&NirhCr4e+Q zRD@VLU!Mc@SgC>l(u_f4uSx(%*I}lDpeGdd2%c9Lix;K(R6{6fhSeWn9fns08ZYxr zfYs9;qB%OxA~P2rQbQ!oq|^$wKkG~2*=PI@qdh+l4JA z7C*9KQ0DbFeGfXc)UVEL<&^C1o{uB))BH1wzvx5N`P1J_9gn_Y^K&P zLZ5XpAWdnV6Hy&b3y@?H9TLd;!2O1UYRwfs2k%++=;0Kn8reWOgaFd;pH;DO0>o8n zMo^lV%7J{H#7WdwxduQ_A{zi!u<|$k=6cB6n+O?TRcY!M%(L7TT(-{oYqF&^eCc1| zWKz7!*alp{ctwulkVus>cxAf(sE2}<1X}Y(#9U7> z9uA5%_NiW)l>Swq<@z}P{?iAJKHIa^oAW0;U)+3O^Udu?cPO4PtF-#Nx06!m-r-K} z2>VuL$R8mn*=1woOo_6sJtVF=oRexeXc}GzLkZw(urI2i5lN_4;c?*x`KJ(2nlR^R zE{FuEqlVs=(i-o_meY(#q0CY-T6t(vnnZX~oVe=!@q;>Zgnk7g781-Ui7hBmA<@xB zEUY7cL-HFa;a^{x)e4Z<1Z*ueBP~M=Yl0hM)&(3ZHzBh~55ln8omnJx$X-~p6eLNS z+qnvri7D((%P|lDbgi+bYbk^kmly`5%!Y>|p&2%@1EZV~6~a9O99=+Ts#~bR7*M;k z(lkF`Bfz9z8g?P29m4N9wLalxWP~}8r}d|p@y*oWWofWQ^0Qp zf!W`K(>$OMH0hT^Gar+iQ>Kx<5a{JK;{$BkL(B^&>K4anS8<@N7?G`>1RMtN4%C8% zti=FWWjMfUfd=S*0(?nnCrzQ%02Src$W5yPo3P(GIRp{zA6D64MhbwAgy9YQtfWtU z0z-vZDdB0kEqe4sR`t0|ylVnfgXFm3G(;E~{g{i;)>uQ;*h*oBQ?6^QWCX3KSLUCT z&ZEmxlBPsSmatq{FN0tT#2jXCXd#m&n#pxHn(yg46zV}R<{?Yfn zav?eAo1oZ>Eq;${*>dJLZKqCYHL=*77`eaK+E$nMedgVwba%7k$9<2k4KtU&+9ex3 z<2elr(CVpP>BYiOpLwVS{kvgt zhn9~1@#(&$y9W%cE6Xj)%#HDx^^1(!b2#w!p8`7EIWCFiDm%jyV!J+l{?`5P)=dsP zJl|CPQU8d}vmYHlTH@pGe{MJajS(yFPwsN0S@?x%+jf_?JDz!U(9G&}J|!-NKI*m; zz5au5$(UKvHzK{jbC#(fZ&p#Ve#u00z}$%u{!4TPSLS@H8T<33gF}B@Ui8^VOQ*;5 z^)X(o8n~;b2~_p$(_VMSY29`0n}cgl<(pTT_Qno*r`vBy8Eb97z4PlV?{hz&Yw@h{ z{ngst{-x&!R0coC2n^#rS9-nP=FG3_no;s)j=$JUzcL9CdcG> zm*a)1B+viOOE27{T>m8Mk%bc)dSA6B>1cPoCuRAVUfQF6Z5mLBf>G=GJx>praax)B z<@8Gn&YnNtPz=R-mo3(gviC7E@l zC@rqHuxd@=##r-T+B9>a0;}<-9Xs}U?JyW}r1?DCW$7|v;}iAm$~>c6%dNG6z5D1p zpS`pIHK+q+@@T_nC*uTJom&5QB~faW-w3_5053HDh;4u%o6wFO@yREj=sI^#y{7zZ zwB0loc*snS^*axKm3ZsVGC63l%MN5O%5yS-q1(uqq7GBHl&@d;{bH9L+9KXg&i(pt z17mCZYF`aq@_4}2zvjzKqK23Fn9Jw2)uq6yFYwqX2Nyg^H~Ynyj@lPPm*j;R)<&B$ zR-imqCU=O~b~!R(3H^@~9+b=fKxP|Qt+BpSGJ^Z8J{CDN(ROP?c;&GH(w6LcL;9^# zSEX8S=eecIMWvP`Mn_H<6N>pb`SKm;!Jam4n)JEb0g2V)Q>HGQFkT)nlylo`jvDp; zSEXO@ujHDWau;LWH1ou}K6Esv#q>s$-YqmN zEW!2cO=(xZUoGG1@>No(*(b#YQ*U^*FOu0RMQs#X#8hoR?@nu=*2df@) zx$IiQzrWr)(YNwJ8R*hrdCLAR-_$(k-vv($;}hlg{#lLBp!nxAoG#`<(~4Qx(YNN% z@Ml&ZYk1tn(~liZQTH6xpPRnAs{w+%RK;!`(`eDIPhLHHTz0q{hqtM>W>P^aI-G_^%F>eGuQi> z^TWNhpWpr2O5fqbhf9DACED_K<;$a%E4T~WDmc5DokWQ$QN;sw4=D4-^b*IoYi@9K z?}l5~CknfZlpQ$xT1UtUl(%o`r=i@PzU%5^4Im+^0`r8E_IT_3_*St`l`rr7;HtoL z2M@OB(xuCq=VpH{6HO9ODSxK3_UOQ+-P*?Vr9we@b8P7A~}4i`cmHw=u=S>*;~~n zj*bqqE2Z3`1)zoKn>!l_h_?jMF70yXUs6(BX-iq2kr5EQQt$*DAA%^QWBqcsWn>&P z6z&9{CPz;V{tPoST+TvPYA}`;!<={iRap*|yRz{+YYm0f<;CfKUj|bF_097ZOUwyiCVW*&up;&4>E!)_ln#`J-pLKQhb1G?Q`(Ob4?w_Ik8TCTIyKU!BN6fR z=E_=U{TmP#^TQ-Cupp#*fre4VBbV-vTM@Z<1#%cD$IFyDrZp0sW;7kaN$Hi6&R!&C zn9Y*V10qhCM!~O3miHoY1AIw$n46gKf#F#QY7J#UmAu1h??>2UI4Gk}jWQ!F&Dblm zs8_`h#;lQ@>mhGJXHm!}mya7R{@Zr3%gU+Ux`h-T^L?Oe;#*g|es>?%edafAUB3VH z+dY1JHm!f>1KqZqBbKW{;ZlPamES8}`*M@}>vY$1Lw8e2eVLR}-c7(p3sJFaIpJ+> z$G9F=RLx36K{UynUveAalsc=#Px~^Ng_s+1WZ02R^ii8Hkg*Yxs0cwO5g|o;HlmB6 zyi4Uv5=OL)68hA!EPs}XYf@{6q@I<wSiE)!zH%c1(1zO2!G3iaM|P)sAxNy<1WqdCvEUZTLm`(~uPS+DH*jRtSVKRCdaVr6 z!%swh6**JT(IrHdqed~yMj~@$8u5HNTHz&RQp!MC8m5Uj`>c9jx8rK!m5FQwnTM6* znVYvpUJS8z?-JGC^irI7o_qTZmQXVwu=&lq$o1Z|ezfO#U+hL?ao=CFYAHtg8Q~v1YCD zf({?mY<^Gy&@GAz2hQ^-F+NiC3KO5X^kk!QL^I^?j9DPNqm8}Vp|l_R;#qHD10 zWyqA86hOjC1$tL$3l-RMbjvb;>~m2PD5BZi@f+dYL8zE^AVxhba>SkmuoMfDe;Ax1 z*Dg(~k)TSEs>Y%Vdh=J21$)-dk2)at(rHqsT2X|VLwdK{`$)T>2j738_4DoATTNT@ zQt$Gwr%Z`FIn%nuaHK*Bu}5v| zeluG2oY&6#{Vu<~?B1%)zb3qL<;kP>=e*Q6`KeuxzCO6zd!YHtu&gG`6ef{|JA{?3 z-pEHYi&bZpeD*UC|Hh(4QfpoPLsIP%at1j$pz8{pHZDY&DhJ2~T3Og#avS$5ueimj z$^DS>PEn(f6;WaSYHDO`PM=aU6CqPrbHXxyFXlD#O*op!34D}V+pXP1;o@jjND-bZ zLr*u)Tt!MkQHO}SsOeZO60SJJsOcl6e2JZwILa9Y5oD4%Pc@>OfK?Kf(1!<^-~aIG zZ+l78MeE<=o?h4DV>ce>pU^4LZeF{uvxc>E>mh&kh;SP>BP8f*nu~)v2EC)dgY3x*jHK-|bcUD)h zh~MV`?j+oC2r!)QR{EcyR40fQDzjK*tW$Ta2WfQhn21fVXK|3w4vZCHYIf*Q_pf6C zfQ|+n>^`y5G-@*fng~R&lPEB-6JMU*^OuOQMPt^1F5GkDI!jl;5a}Ed%Vo&B6Nbb+ z@~PLMc~7j9E|U9Gy{@#r);ha1_D@Zvq60eC;VV0&;^GFy4?InD83kAN3;D|D0FvT3 zTqeaA#hzsYusZG)GD`#oEqHJNv~4;j|Is#P?Ld9U0BgENk&|=k(sP=zQYH#B%Y|P_ zd90VfCDTzl2ukJK9o-fruX-a#R3Ecsus8W|U&m9>K_nGALftAMn`4bDU^Qr2zM+y3 ztCAp_(`Yf!kb+B2%Xssd6E}q`~ zaSq0UChwFA*HVIIyjs~Eq3qDjc%Z1DMOI*4DJXM0n;DdB4HP!)5^*+qi9fs ztslKZTw*?`1NAvG)jlo{>O)#n;J%$AQ&No(VzV%-8x=E&d0b_AH>I2vd8#pT`hw>9 zc6-}*AF8?k<(SJU=YQQD`$u5eC1Z3ibK=-aORKoLr|*j?PB8A-9dod_`lu^Sk}lr_wJn9FB1C9|0FupV8G`0;f-DXcgTJ0&r4tFklYzZm4k-ggF)w zFLjqiJyMNS{X<~i(0RwJdw zM9BCw>ValO&&Hgo3s|{Azx^YfHQ{*W+$5{F<&gILzRJq43_5MM>SvX#9NU@L^xyZT zRR3;HUC?WPc%MK0;hM#y5L3eLW@ul=ZL7n)pi!ZuSfT?Diu1>GJg;~JH7p}{ilgAD zz`_7g*idQ%A?PZs+^M9%kIvE|q7%?sk`tscgc2#1OzAhPrBQU#98!waTVNGl+6vZ$ zu?kB_8WtecSgBd9YGnm+?k)sGhT^t>NFaJbv{pD^TI>JleT%A%fd@Ps3sN}<7BqZm zGKhZ5=t<+VG%dQc8NV&<_KP`-GKyczk0`ym=6u(htx4(gPcKW)9cw&f%`BN*DjlFV zgMTUM+T*do*VaxiIyyRQR`V_oy`0rz^%L`_{?afGEviCEk<3j)GlRd{eCFU#MTl#- zO`K}*N~i<*G;C%~3WEsm45hbm|!US)qbx}9=4gNx|!MzL$8p>H3%TQa%gGOB{ zo=X!{ixM1^n{fyZEMAy>h?IDsew!~TW9YQVuY@45KzsM54-8qO(ksn|eYpAFAzTseJ3VE7#Wq@bm3nPdiq`G`C zQs|7K1cW~e_lQ{rM(8|HR` z@r&;lZusy8Awf@p4Tj-KH&kt1eGnPP;2CN{4viv51pU(b2N~mGN5Xs zSw^cImVt;!6q1qN>H^@DsirB(ik0;$g;OA-tDa36>{c+-vIxzuTo*LS6c#qAmiRE?ep)N-5a*l{M5}5AFW;LpAtIq?QEr zC43nLX@>{Vqs4>p-5R>VhU{x?yWJ`9vmoovkuQuJ`bf(OtsZ*0 zdh_o4YQFB4v0|9E;NqpFJV;GrVb!EWC!tb-2nnl7>M zoX|CzoRWY$hYbGPPuU}UJ{K!x^aX584MX&D*=~08P#y+q5d#l^SMVIujCOBaX}?wZ zs#{5qq+9!bFYffqq;2QI-)OCmJ)VB;(E;mPyg1~uBhy}fVZ?)74Ceih248*EuiHy8 zelv_+XMA#dd}++?gvoyl6!b2u{x&w6?$_iTtRWIs6R7xhmdjzb@1MM*#W4~V2iTQu zUN$W-t{{0suFKw;gg_*q=3c+Ry?%iPEOv(+4J=rd#_shC)SpFzpZ*iA4pqu=m_U`p zbXBp&%e<8)3AB19SCJ}!2&ExrGr_&o8!~ipR9e~c1eqK7I3kh6mE}y`VKZf@w+KC% z!Yp&aM>)Z#X zN_V>jZv#$i^j}1{tN8F@z!I01lk=gG39VtgN+3z8HF-hCo~teHnKGezg>zr70~Zj1(pT*%*jMB{Rqakwp$? zhJkKN{&K$qY!(0^7!%&G&YVOapm#zG0xVWYLPcQYvru@zMGjJ@vy0aW)I%K;uYjJK zW#6@%NwiF9;0r3EhdorUIE$OnBZMZj7-j( z?~GCe{8KMo3aHG)AcfM7#6)l0mEjt`2~E`+0k1IpYIPig9pM4s3tt2KiWv_Fspt{$ z9jmNx344tMMrmSRv9Ea`=a#Dj`N04Hv%aiD_AAFqlu3eV7=DWfh##P+rKwy+d-M+k z)#LF}nFNdv?^|FAVqewYZAEf&pf`KKK8Vfmq-p;84>suZ+Tj;9*SkSmb z|3LB_?w!aOmKB|83h6a4v;0dLqpcY`!p&5n-uITK@Q{} zZk(8&I6TOOJ26T!@I{DYOh80QEk31uNsKaJu4zcvWR~3oE#q3l0ea|}1**u7h#5`@ z;PPYA8LA#+nlV)HD$7(!H3#C5oBdzyeGOQYW!m=erxhxeDP{%swq>oWqEpD1({|Fya6+ z%=2C6dCv?3>id1i@qNefzTfxl9)~RqGtWHFeP2K4^>bgRg!3(KJ{{-?3vqe<2Cg)D zMe6Vz((54V+9Z69@$M*+0m&Yyl&7+W()Sq+VF)Ys(J8nR-jwykxc>+i?D%vFt?zOz9 zc$9q`sCo-&4n==D7sKx0eYalV!bA(I*=lKyjnOqQtr$iMzc{>iSA@{1)!h zf5grGwR}V?Hm-*nkt$Qi7w9KZZ;|aP&v3SgG)2Hl>2P?jaiy^Qxq?8W)1??+Vo$gL zar|*eQ8zN@k$J>5G8JtB;=}}rgzu+e6eu)Mgui4kbs_f_&y|50Qlrq~F(ay&QuQy!9)u=*JSHm>X%?j`a>@ z*Ph@N^v&z^AiB3)ln2qt0>>}MNe`O09A`mJWrAYgf*wddmOK~TNqPvgB~~g(GI!#V zU5H5?LagPCBB`vc0X(y`EczuVQCK(hRZB|JjCp($)Lwk6M47PJEO?tvh(sVaL>5Id zf8+0=zZ1~_C#zx*6f-4Xr$s;-G2~JRfzfkF3qhkSlq#^&2oRfdwPyM{urle+f;J&# zxWGh}>^7lw5WG+{VzRE(HxTEFzG(~ow)(5> z{)rncU5=+o-$G6md`c6@kznpWl|2k7mM08R?9j-87vwk}b4O7T0dnLq=-U#``NKTa z3XxAn*P`MtqX@@?(L)KvIudtm{-%P4#sUWuQH?i|fXRf3P&Atk^tz7|JnLt*JShW3 z_n5jqxk7O<&niHAkJ3io%ck@$$jOsH3J3wtT!fRUTCF+POdJAdtfStBOQxYdMwU4` zkA)5I1J8R*p&LYSlMSR;gSs3R$MrSXv5rs9_7+S(dOR1ZoK?R~GKewm$~L>-c3 zA*1whxj`bY_bI{3y2Be>!jMo(DBBj~J31CagzM*%Y#I2m19=I)k8BxDM~eq?rIAM$ zyrRHe{VetUAZO$WA{GYl0N>9c@L~ngB$L2gF>T2g^9PA#(t6Rif|YNkG_mT)E$S*W zx7?#YI5E=sQcW_(*J!691<*QO2B9Wwu_TtXP&wqc?exEepT8Jqe0;DaePFv2an{ve zF2+e-2rx`7DUj`hjRUncztq%7s{vHRH8vG&y)_bgIMS%-uos6-zype=kLb>k3iqK5 zIkrKG>3kdzmX-HWctunTe#B}R4#-IfFjvxiphAZN50ii)? z3U*azxgTPyI7HAL;}cmZnMg$spdpgV(?0`D5WYao0u+X9{%JkQR;>79Kmn^ju9&67 z84HG1FF**SOX2f?9x?npxNICd;Tg1FpldJ=x?+y70)mlHQp4e6v>mv!=D=lQXYE8c zX`+LyM#(Y=YZY>E@YCW%qw@e<#KzLawTcZ}tR4Rf-SG$s(NExLD7yBWuTsQ#h+L*W6 zYz5Fm#}E6w`JoVy0a0xPnTRV9nk?_>7^V_Q@|yWq!B5yoQEG8&I30?Ah#M>w01*cA zA@zVkhh;6W(9=Z!p8f8*UiRHsmb4 zin18nQS6Z5-^@?}D=pJ#rsoG_pxlEnN6)=NAwz6602ls&5Ldw)StTsBC?p2&KppjX zqdW%)vS-PmR=dl`Q72vGl)ToBQsm%pE;!OHFn4yKE&Cw!HKe4*nFpKeq1G!5L{l5*m$Ws8JT0fTp&%Bt<~X4Vbw>Y_rk{#sNW!tcowOR zwOb@`Waxq`FQlZ<=R*jjb`Z?&eYK?UEr??w8Um%{egTE)s1aO3jd_?CwoM@H02v-2 zsz|0Uke~Kos7&q5Bg$eNNK2&MLjMEGVi3k5c#{F!p!tH>ZIzdBuE2DFrbxttU>w$B zhU{kia-0UcfEy-DHCpHoB9~y#-7b|)U;+i#WuPE3SIHagbFCRI0#y2v*V6H(J2gUt&f`ee|}xE#wG zQH^y1Mk}!NF;w&s)xyilDKVY_Ak$%ggbF;e6D(8HhTP^~L%9)~4Xv6uw1dxI7Ct1( zZ^$C$rr79Q@=?PhS3+bI2`w^XyPDRRJ`S%^SO|gw?W`$i-8whfF=$nsDG*B zU>~dlEZ_<-Ma5@m;hiw=!6Y56tkilE^YZcz0ED#-$(pmSfjE)b0Ug($*dai7Jkn!Xi_ZxFL&%z}$-=VIblshy_| zGgRiL6p2JZ)WhDCN92`=Eee>ZRjCOW5=pS$OiB%qT)(sex#bQq z)0Ej@LdfCC13$o=9uL*n+!Ep8|o zp$^oqspN5w{b8^@oJ+@$9DhXuIF7i`yU`5#znxmx!6T4}{~gYT1nn*CLS}_k*t4bI z8Owu|k4{z($q;dn@UZi!}~1o2D^pPq<8R%Yt1dHgzB$9KIjMY*%&Wu6LcAB+1{8S9YSyps+W*QN9IQ zUAu=n4F}Z3M7 z4(*$1O3)e-Fv~+c5@G>krYvOufOeqZ5WtUN)$CR)lAao&}>y7Y{IBX%i1a4S*@BrSXm)EV+s7&EHD`FU zE`tk?kdD!%nE{}b0J706Drm!mK$iA$p3Joa~-bz&PSr#~u zFpQ{XRSb^5wT{DUQxvo6?-%mj^s6I{kBG4Ovjyu|p(9X6#(^SZ{8FqWGb04_xCKcB zM^v}P7U%KhDihIa3}f}qf9MaZ(hLpAh&t$@_!l3#K`*TL$%qMcRB>1s0F~^VJZWCU z;9EKxz!eE~V4GMMQxO(&VqRoecXp?nO(lBa~RVWOq5H!eNz4c{Ynqrdl!^{j*Q7qyu5rOq}G?dw}Brp}Mnb6wSj!A47 z!w2QL5-JM<^BM;q8+Bm-A|=k0daOd3jc(3sdRwJQoH z$y{dS81Ui**2@qCY7Y}CVZNpDYx$%Kn#GwTDULN!HUYPYT(kb5q@8YII1|50-p;Rw zRFv6ZjwO-cRcl!TtRrhZPQfI=pfCs&OF9^a$>MjB6W7u4hG9S*1}OBOUB#`EhmG+(J)=Y47`F+OF1CmK!6zp z9Cv2qrEbh))G)^&7iEhQEMpQ)14WMTL%C8E5ow_eut*Lk>H)BNHOZpOyR2!u-l1pk zq!(RN#qRP??kIRl1T%8LKz6lKJsn;QwF3>onY-dtszK(nxj#om2jA8aNm>EKDj-%H{wooEoL1UI$w;WgdSNH#7!2a*Kf*qCINN+VSK2QS$W7q=w31hLObzWw^?(#chV5piB%W_iHqVvc-fu&s-3Hg7gRAJ&qyr9|8n9 zht7RAn~BMQ3lK2LjYGI8M>*%vP=&((0Fj1{@UxI5DR<;~T$KN@w`MbG6_A!^5m3h# z08hrFaV2-t;e;2<&Vgq@yufULfEX6Ah)8m(xa>$H5_kf+`H(wJ5!@2oxpsm#3BL=& z$!Je<#Z~}LIm(XTseYcMPhoF)2FYWZ=!C>2vge2`5Nin;4NPa5Soq|UxNexCE918^ z*ol?c)ASwWE2tLR6^%LfIF4sUCWJAwF;f=QbVA7%p94lwc@h-|$x^VU5DOte$|?Lj z3bZ(k-+^D=&FIJB-uCEb6m8+c$}*QGs^%T-j!7tw86O_ zKw=4bZEW>?7_>5*=#SO7f%$c%FCK6~9LA6(moRCuB=mflby_5vaJVUN90p(qp;jr9 zRoFVKs`V``N$E_l*)f%kX($@WZl$@S_-Z&SIuK*ATpkO7Mz$m-n3QT^OJu=B-|!Fs zSvvScx*(m{%kssv+CX5qkm+z+px`oIg*I_fczlw9jsfeJB<-27I>=WeMZwG~O*nR$ z(Xfic$+r_aOT-A=9QhVtff|*NscLQ8VZQ_%vTJfa9X3oN9H)dcV?TK;X^~Wx+BHZU zzvP~?#EsM?qAg4;V>!(=YO~3mikcCgD+DH~z=Gto_5yEGi8=s>JOtx87V;9#!47qc zt?LF;#Acd&3w#oMD}v=ZfD6xJGviC$SL0|@HJp(VG7D_Y>%@`(41sGZn{xCA5vpMY zWvM;N&4S4_=BV23DIS7daDMq}ASl8PgeJIVxEC& z;yPF}2(%d1cYJLSKQa5@SvV$eDdf;_=4WLUkm=iXb(HDDaM%vx21)`#5P~6Qiw!L$ z#!t1^k(Sh>cIR`reoX^&Ch$>#oqc!CR*FMbuS!gY=PD4kz&-DdiQaZv2|q67myXg`0-S)>!n# zT}j||6u6|IJ1foWfS z9i3K8?oek@H1bp=RXr0%&l{t%FGU=cYbpu}@@%!a4Jz*fAFTozOw&N(75+i{0BYhC zl(b*bT)7l{)smpgaU!F5sWl`r=KM_E* z2FX`T>ahYP(h62MK-@3~k&ckD95iJTPBrzQ3s#v_+%STCv^wf&SGcNd;Dt!CQN{y# z;A-PniK!49Z~Q=dGSrDLpG-#|Pb(@(1KO8k%7p)j<2~seA|tOhrmSU1$yl{vzVyjS zipsbX?E^9?yrlMQ$JkYEhOxJpx65>LnXwO{K7{+?U8;x?7Lnx^Z7>r>FvLlmA>fa} zc~k>#P``vr$&`&?9sRcud{t*~GCQXIMN~5!wFbQ$+9>==_Rs+c%y^D*u`;%@Y{Y78 z?V;tx0?83w(K%SCmH4Y)zB*I@w-oJMi7?7)w$uD{nM^cTw6>!ZL{*m3y@@e7VqYK^ zG&cE=2^Hxo<2z)XH^y&~C;(8#Gl;Cgc&aUw!OjX3)_rVSc^?rn(gd{A+6S^%Md3UE zNnzuv81W{uD=zW0`N`8WY{7zW6*UnZzKtf7(s5Gk^+Kc)9XP0IMsppVW#~Vo@=Jn1 z=3y9IVu@JVh8aND3QU2@lSwSZP%qgbF-(9fxEOXY zyOaTX-7r~Ar%05$A8wG&iiKWw*Z>h4V2TPXXvE)~`YaVzv;AR!YhGKld&SCwp`;S$6gzX}G9679ke3}%>m%eZ-xXGWv{uL&VL%?XS%l*=1k zUobG%l7u_sk}q&kg^&29lnMsk?UE| zYot&O+tuNxu@l~2kD8fTl^d+6!qwzSnocy=R~X51z8BeaJCcB_WgDTecHkc?N>w5Y zB6DmBX|&V;8`C{Q7-0F}JE6;r3Gn3R*)0tvnCym@8WhEONWuUe-tT>CWH!BmOgO^q9v+)YSBM;3lrKu-XXOML1%57kVvaL!kV8DmX1b)kL^o zvIVZCV`8wo(Dmd>e4-kb3ijqFvl`% z6oncmdrR0s<*SaE_CqXjlLiJ;XrDwI1fnSevsK~jD-reKSs$zta1KHYMsZ~@mpH63 z6FDDP*3qcCmf3JrKB2xXYSPBGpy|hv#-6mA3-Qa0hv@rNi)WfT5+<9`F_r!TSctmH zrY#20IR7)h_2}3f19N$7NJO+D`BmBB0@#`MGl|4hm%tx00p7xoF)qhC@=>4`crJGz zB#EfAEmHb4yp2r_LJ7&Q%7t@~^w7|{S>_8gt^#o*|z@^lZ# zuG;OM{FV=u+wIVy!rrt4sA+rpw9BMjkpd6I%ESsw^5AQQ7sos5DqM z(pckr5Q;#mhzIQg((zvsCf~fOJemABVK@Bq4UwxJczqJ*_d}=lMS72kdqT zIotHO2eIElJTVweoxV^(gBC<9OH83}5+C+rjRQ*u)wEhAS6S4A<|7rl;g}s$c#Sqn z3-yg^1UG?b4!WqL!{*VpoGUZ4((ZAjp#X^$NZKhucMAIAY8?3oVwQ!Ukj)3=(IIy# zilbxysWwI|3#)Ey6lD#`Q-T%EWPK;8b>CrcXPV#?A=?)wN~0cIEJTydZ-@x8XKnp3e`sX|K_WAi`76PX}a11%7yoMlqW50w`qs5^@djy>#s zD0vFryJ|DxHP8f$R0DgXXr17=BBscFdU6%+&p8F_jHID%bOLzLKlf{@>D&Ld`_P}(C!y^ypbG~T2j>)_^{}=4Tf#Yb zPL=G#2av#$j-b{oKR&_au7q^P6~3$tz>2tu^zYWE-$oOJt6|=`7-Y_}5#3RzCRxhJ ztpk2z*HqY5R>#M&sS1T!K_k!sbQpnS7g-~(8)oIBur~k@z%lxQkTw&a!DBdL?{J2a zzKTYKt@oZIK+sQ`Y;QSI2WRN1Uo+^N>OG(YV=Mm5i%nIRk6*8=sRmBF>8q^fhuE^+ z8sEYB$v^QWNJP-F3?m8?i%cYd{LjH8jP#Ihn~7rFeGpnXO#_wD_+^`P3kt*7OJ1oJ z{4@Smg|~<)f}*@REFDb^pALP4(#(mo&gjH}<%h6nw<}x2?Yn`i%wx6npOW@ZNqb4n ztU#vc|AeHqo^;dpiBF>%q4PR^m8~h;cFube2?ZHyid{lVW}mW4{$i43B#M1TMW&p#Q*M_0iiKG`W zdvq*p6p=tlGXj2SXP~O8L1l?q{INwxv3LM2=h$lqJk9X{0N`kh<4v(KM9RUE2@qSx zr_?je!c`cCcCG>on;{1xYsqX2nk~hOBl2Otk=e{Q!?0Md`So1|`g(gW7-*EdNfqPU zty%xpxhKA#OlSVN>Hn{9I?iExB7yq}fg#ZGt0Z(sJYt8lN9xP{A*;%N?UJuss&6NZzWj7gb}%#mASl6r)+POx`Oi-6f+a{wN~ z+r}M)K@LF-ZN%JZ(|FHZUm%(2SS~z1z}TNDvUD+=QFuKC!w0F?1YRSNe`28Ii8*f+ zBQOkO%jrLN^8c!xl<1*4Nc&%%*VnKI$5sTr>Lhv)=^gJqJE23)2pMk#rQ>BZ0+L<` z9JCh@co1}Z@^JInjR)7~H;jadIVq*-yr09V*(CIDm{8<`cP(PV3Da4El`BLbvpLl* zfdjBFt0~Y0(;nb*Acr8;SIe{RANk&<61s(7d0xOrpphe)GEi+<^mQ!eNq#x>^-YBX za+^2gwxO9#OFuDoZg>5W!$oC>WmvFQ`v2d;+$Q}*#@(U2QB~gHnE(+g!A)|VZKnKp z=7}UBjNaMEj6RaE#w_nvZWrmH1vHi`>|4Mm=g{yJiys!<}4Weo~DJ4jxhP3bLLZ8fq+{cVb_gDRnPuqnV7vJ$Hn< zp{MBOhSHj zVPb&a{AaBzG?|$_fMp(ol7kpTwC$P|)UVo3JU$>jMF$0r*mCc}%e0s~b+Tt3)`Zx7 z^t!|*zLAM-H$b-Z6Z&{27F5hE#0#o2-~O#PzQ+H?sKFaw(Eqvr3kN*vpZs*pPv>-} zpLy%pqosk@k%WvbdiOtBrkLWb_P7g2ii`&iC27T5N5!p=bo34m{9)Ce@@orD4Y}6) zSiJMkWoeatm;d{9W1u(2--Pp$0Y~x0o$l2mqiYU4_SVJ4`MCr7Zh3LW>9@PCJpI+j z6MuZ=o*~J154JRwb}|+ny)wAy!8qfQaa-cihU66r&rjK*euCovSNHQsS)nT!=~Yx) z<;;#7Bq4&Yq^6CwgK759?S)q()BCMY)&df*HlFXG*ifT-?|bcUpDg+h8B2e>dTif_ zYyXyT_S;fJPM^Z_JCm$WBz(~RE;gs$-s6KbVKO+Bx4|h5>-~o)AAJhHluk8!w##hCe zR!_8MAE}H#H+Oi2{|<2{Z@O-T=r|MA31gz0Fz^}W-Xrp;n9a{_0^X5vB^Cv-adaN| zGK8o}rc0Be50iLN9V06R*mya;TYxk~Lc2|5fiv{UE;GCw6RXMSWkJ#NM;X1%>FN4| zK7LslL;&7EFsh*bor2lq@h@P@Kr1t6EvIwOBWbJLlMbYgpU8r1FCH)tT|Bn&ivGzp zA+xJek~*x3iGTBWcv<&{0v;Ha5&XBOo_Mg=9dX^81Glg3x+0}|lWEweV_a7@8hZLd zbFVE4(LE=Ed!6_-N7i5v&3C!3+sFlK%mY{q-76)9QjNy+vM_Qf|AWaUTM`2^FJe=%@L2VPK^Xr=+E{X!}M6TS? zj1%26_iiiv#b&tc=UYx?pWAd-`Rd(&2-~(~XW%RIdI>jW@TujCR^&hU%)CFIy`}5H z@oUCSZ+WYKcIu;fv6q&%JGCzZuVOs2BigNu7Ao`jU0s+}1^a+|2>PtT_oMfu#Wz4a z`~=7JgL99MglYMWx%J4!P(>x5RNlPFvYPv7;PiIPhnFnZ954z%8|zogFnuZ7VnjLi zn1p{Ag^m=rEQh?U+>mdhaHt@lbIw+!=d;^%wUgN;u6zwU- z)sq*F)IxX!x3~A#(b75zn$D&xTkQzoQ|1Y%zc0Jc;V@DOCtuQee-zj7L#j2 zJG;NR*%;Oq$#}iIc8BOS2?Hsy4r!Xh<|6SgR+FbjCHarrM(z)PlI((r0~Lf*V1iNH zFri(`yTf>QsE7eNOT7jbbKg+OQ4E+Q_>s&>fY-uiazu}TCdzInFA(TQ*iTMUUb*J2 z9I=Rt+wJ6IfDH4vtE`=nWnA#8>j2843Dr{wA+nj`BiI)t+fdjWCuCvYuqm8JC$w|R z1g^^VvONp5B}jmO7Uhh7bN zeO}it^YZufzWdL@q50JK%12&by#C22_GT`-oY?Y8cI^_|pNUPt@gL`U})fqlx$ zE!37T(YTQm%|Or?tDHv_#N(rDOp&mGKQ_A*W#SnovruTF3NOE;2bmQqt7Ye|%RAxa z<5%&RndFppWb7b~L(4Av5Yq=ZlujB3m}cuWoC)Bj`B=+F2pkrV%Q3U4@-N0R@AgTw?jB>=O8aE$l-h&H^q9UqtH@G>OMnGR|X5*xBX^grR7 zHN%3z2-#sbtXA;u%u&pKA1=LI<9hzohLrfa!Uel3HV;b>p3AXc%^NlB_P0}dmoERq z9Z!w#-TC?7kDah0Wzf1guYG^-%=*Q~;)0dwLDwr&XvX!}O5SD6M^72~9ce}#q zrC@om8Fes4jLH-NjUp}nmhN4IFhsGf;hw3RTvqHrk}1z{Ij<`A2l`3i2DU+g8xy3= zL_;*RFu6b!VCyiO$tDOJNLm~4Hp*lRDVlr?$-^Re_{wX6R0(mA`Vxdj`Z*7`i`9x2 zD|D@r{6!F>;65@nk-|*8vM6;r$fgO2f`n4NrK^MFGQ@r8ts)%@U?1|uxB(PP$n7v< zYf;*ep9HUL9u}V8;V0n`4HQ!0e_1|ES8-cVV5j?D9@gU-VHXbmuvoZ-pBww=Y+JYM zP?{EX6RS9i+(?vjV5+u2;~`Y}vA9718g#q}Wk|~bn*}0btP67X^tPxa6C0ba2>6dC zu?)#)0HU*~$)tnT0ka*!c|_4yN}ha^90vz;JOZUCN-7lJyW~o|;k!T zL|1_Gfz?P2$>Y_nLI}!3-m)h;!n(Bzv)nHqPokGMgtjMzNIm#0Ru0suO(mzI^TWf3 z3yZ8!$OeCSw#@zHRhf5q*HgWRRh$m)+4YvL_x%0+3+{s-7pw)xtibl_mEqSrz9^j> zWxk&3QF}nvNfyC&xP_((-YI-P=MXUJ!s3W!7e|tBftJ_BelH6;r*g1iqRRS+%O{1d z&o+QK)-{d>m3*@Db~W-4(j&%>yexcDtc$ydz!PB+RRS9WxXR!WmUu)RjEKB+dj=F# zRx7)d1Xm`;LkX1t%20L+RpH60MLir62no(#j{V{N&xYd#Ken@l{AKK2gMp^g7Yf-( z^G=~Yq7?{#@!l@IgYUa1;Ev$l^Y%?Plx`|4UEdOv;4aFWWh;m>=jifn6~%+yjrSHF zo*cc*>^e3%BRH_5V34=p9dyT!*Ks%q(dmsz(Dm$50Rw264N;>Q0hgj(b{5HT%SUgbu7yfx%!Kd(E|9KTERYUdH?$72fYYzVt`YLf8@4-dKy zmQBpnV>BVM;+9dXCjYi~_TI@wmIZT~!b_`4wCd={#?xAHmg|R@=-Ak%%Z~baIrcEu zFNtRkjEYImjGLP^F8}w@gYRGWr|W%LkDK_i*SOp4QGvDtg3{KGGc}B}?}3GIV7+7* zyr`n~g5XtxECiWy#|kSU&VbR@deEVX{nL@%82p_)E0ioTD1jSR5dT{JWgh8MBdXyN zo8UUB@)Dy!Rn(>(n!2lMDx({@9kQfRo(+uR715k=6EqcNwlqW4vxer9n%C0GNB_0r^YV)i9-9{On~_`In-@H7%g4W4H7T^c5otEw z44-{QFR=9`T`dANx>XV*XeC~^IgCPN+E1J%OVi3nj{YqkW$>C&9WXgPkcBDnD7(9VCTp~^yYD)z}O7QjJb;Se*2t*)k zom+0LqkEtF_d(A-G4Sgr`w1=VQ&04oW~jqhJJGMjT|TM`}$m@$sxK z{$M(fW3CbfG~KIXGJ&Fmk#dR=-GuR}FuD4J@GIJ}pfIKNh9f>fn5$cvf91iFrM}j6t zjF>e13GkP$ja$|0>%iwLH^pDM)7Z2xsHSK@?Vq#Cs`f|j2pQx^JJ>lXzIk-1tD&3Y zbot*4&uq+@|L}xqQ(hl1sON({dyRZ&w>z`wk#;$)u`Q+!!>*&ZmPfAby!Pf9D`nWhJEIUGF0#m>k9(XGJ z>Py3d(Djj>FWCKnUG#0ui9F^7&&Y2v-7qJ>Fks#XXJA+Ta%xAX=vmA>kYxp;MsnN5y6R`?p4s5 zjtLh^Q4X;x+*YF`=wD!VH@r%o!Ij)710@EwMr;VDAW1L^fj|TZW?WO%i3na00N((2 z&K$eKAYoUbAWUQkwl#hmL?TavSaZ`}#I1G)zqG&xn)1v`0QoS>%xl^3TVq}`Y%pwgZ+_d*8=ZrL5@oZK?jbmKJqIkRNj@9+U@JrLIj)o zM{6pK!!1ur(eU(zMr9zJFrnqKONazCR$U z=Yx+tJK&iuy(UEcHsV3+ve+dJi|@YCp4^yb?{Lw+QH8-YCa`3+^Toh2(}HK|a2DH< z0&FYK9uKZ<;$u`fm^V`km6Qfci%rx~p5fAh&jM#R=0c|#L>lwJ|u--gZ$W0fN49h2x>5 z@Nx*nO(ZQ&*MWcUfFEjKfQWF%x4Y3 zhi|=i>6FLzoGYGdeY}6+{?h9ypVR!x%YIRnJB-;SDiF46KEn}NL8xiKS)xIzLJqMW z!kdC3kc0x;uu(=;D*z3V{Wf2N`Y{Q}9b;z7AFS#K42HTZV`YH7*htXKHz5}(-bkmC z28y&69*$8S(G9H~988#VOIRhg2Bi}nK{|sxmvBE91}54ECGItyYJn|<4dYBv_-tqYd!!&KkTxO2=v)%H zZ=?I?^`C8C+x6`&Z+H5Y>%=SXq<@!Het2DYV*RWGDOdj#x+8qyf)^`ub7t?$iN2T- z*LbY7>3GSIL*t?+b=i39yeahv&G>QR^?8q&n*_x;y~$*a={%E~ zUd*4J19-qp6=Pew9r8%lTnPC*TDNUHMlVknf-sC36!R5m0+I*;SZSKF%uDiD$%mzP z;5Wge+mir$kylDb?ueK4ax@cDPz4B!2TJzLM_y~UBSz+CzG7*3MKBnQ3zEUA0AS35 zj)D4@VB#9I&G!upnPu>1HiEoLoTW8pS>+C+^WZWnUXfj8_@nrUQB}&DvnKDH<*$x! z4%83UyW>+5Gm4^qPWY^)`{OSs)w$l!b?r|o{CRJWbVtXsgCkA5pDu6QKPYAUJI7K! zKk%EzF9tt$XmHVi26;zSy44ncen#@bE+?zUhd8J9FMFfr;k+3&QRUKt(k^2Ws5{=# zy|>S*@QMWySF>FS*ZP?o8n42kw)l} zX*uwX>;ghz0~7;D>x8&Jv6QGih{M&QL}>wCoo8ffn7rsFYpgmgC&tU0#*p>FAJ>DK zS!}E4(~`*vA(uC`kU39*fjT%qod6@i8+;{F#6)`7XStGVWWGDj@X5;bAHtr`8hdK> z?n&n154##3vv0^M%jnfL;J*Ib?(5ud!ZcTTx2%+ZAGkZcXWj1Nxyi++PcJC2Um2SH zx5`J+J#?C5$oCYM9WJ`ZAGI|Y;Z+lAe_xA%bQ{_S(`>kj1=j@@z(j^)(=<EiL7bI|e--f92JMMcv;FS($0L1*(MEb{_ag%0ed%~QyVSULd2>WclVdT zP5ayX(=RMMB^*(0^r6{?iJX2*q2(Q!G%$XZj2viViM9DMUNOGs(|LixV_R}od~Dns zx^?Hywj?YK78_2W`dwceH)znHlnJwwll^a1`e-@Tr)R0LbJv#}jH|z}R4qJZu~>IG zYufg0HQSOba~;3!6y&!wEtY?5+qO4!o5^IBzQzN7w=Vn&v(?+R`IdlNHaExi8))ox z>cT<{Zg}+Z$Nle2nh$fag7O#tFhI)|O#Ix`3!Jgu{v+nPek-bvd-G!mTQUHwf?m+gQPes+A%#ilAP&RVr5agwxS`*ogbFaP++Oy`xn zpc!(Wf2KLcQM>2sllhpXBj15R6sJy|LIaQAM`X-Nr@h5;`JFp={$jJ)*Bv}!mKnZl za{^3{==XIC%l=LqRh8Hndp6JL%uAemreyA!+<>7=jJpSPDoee*sf~=ks5LBGwrthW zNrk;9o3k&-Abh_+H<%7g8&oO1$CcS>HRlq3*C{BkJhiW%G`-SbT=+$9(-n*R%D4dC zx{92t4c1Ykcdgd$|DAo?ym4*BcBA{i&!wgQ5~`(5|K{R@leXQ}=8D>pO{O~OLizsX zfMMyCnR8DkOf-g#jp?{M*=V1*t8t7ws}bLK=1BUzXUDW#`S(C=)K(^pqaI#(AiCCFY43paFuyfw$=N33d!+4eOK!mQHU`O^_)XNn1S|GkTWt*< zR{IRU;>9H;@4eYqi+kF&B&kA{je9o$$fOdON~O z+Z)cLHY$E+X@XryDjFhN0E@!feYiRH$sbBytvc+2B5#V;>-O2}c5Ah_+CHrvT|COJ zW$a5loNgX$I<<1{V9i_zj*kTo%-!*Yqn&lJZ3#_}n`CH^t0Y>!3rer=W2{db)%=^Y zyW5E8iZ5O%wb^lmC-!L2&93H7{yAhv47SE`CKl_0*uRC++ zSq>e^aYG|33gmV^`q- literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/bandwith-probe-user-overlaps.png b/documentation/docs/public/images/operators/performance/bandwith-probe-user-overlaps.png new file mode 100644 index 0000000000000000000000000000000000000000..ec3bff14fe08ab2f7847e33f249dd44b59981a8e GIT binary patch literal 146198 zcmeFa3s_Wj8b3aYMrKN`6`9JEZngrxsd zRWCgE%xj7LT8jg={`QS8kGFG5~! zlK;JC`uy`bOU}=Zie7fz|5*O;mUBTyWS}#wO@>6)_kE6c49Cr&stt0L^H-RzMUDnII;ze$tVRNB30Z+`Qx-9G%qSl_N3|&Ql`}?HQy=D9dWEa{Z}AYOIcI*pqIXcqD$WT{iaMm;SFg1F0=tx|E9a)Qd{9{OB=VQ}@zh z)o|^XH9HoDoSw~%VDFFLU8Z}>{C-NPn_?FI<+|8}l&5M62gS^4`*BK8(=KlDZ*uQv zFEzyqR=~a*ePjAr=*nweS^L{Xlb!p8@01l^jBMEbxU_6GmwGf-V|yiHjcb?ekXX8DbuNoP%lnwtA40%|DCdR%-gK&^F{YKmtB&Z7s|Tc z*Ov)+fSY}nt}#GrT^rZhseECSfy-E8UYi(c&BJiq8OQxjne>Yvwn zc1VqLT*n*pA~x-29cyzU%sW!|J1P;N>Z*E+VnM7$92s9 zDicmLqHdoq3S@R)ouoKrSnR$4U+vSJh&rD<7QNl^fAC zOYY_Ya<|w?!@_kg+p z8O2zCuSxA1ZhO>qP3=MP>~Py-r)L6jW#)^q^7T1&uCrQe)|`kXJ5_zHi$HpiojzS0 z8-Jer-4y+@_I=aNxCq95&`)!0Hn;tklyYG3sr=Q^Tn>m4Y{=-0p%d-KCyaUy& z>UME2FDPmOA+#AehnsL{4$%LP^J3hxk9~1K9MFF3j--XI6U}dyuf<1AyQsIEi{!4> z3#6|_lV20nwdZ(Z0R$oGL(3Ms0IMq*E5G4yW}=b2ZOWkl;PEX#cQ<-BJ3 zOBv&b>LRvSb`&H%bBFeBH&<-BJ?4`3?R|60_bsa$`un&qb*7UwO2QGMJV>xcjPL;O39rH=qq@ZVT?XNFQIIuT$fb28i z6r$cNaqlKRE<4)v^_s2Ufc6}pKW$EV#ERhKKsvWplt05SM4Tl2VeK{FY9CmgRVUZ4OnUHxlD)Al`7_DW$Ccc(CRTIC{$rK)fq^lf zy49dP@`3*)iMh9enpS-^x*&T`OGw(bCFiNlqoPJ-r#{s(OKDzlcj6;tUop!sH@#)i zJiEhfWl)*of6wMd-wBUN{Q1I>#4m>D6hD^C$}Vb#cBjvxjtmdVJ~jAV_k&zivg@9f z$jSz{FDZ%n^o>rZVqbJ_;(7Qpy5^A6pqh6b`Y$_A^*;h+nxYFEFr#r7_t$e}7xTM@ zX&+x5=st3KZS5iLU7KP(*Wv!Q>iW=Rb7d7dNwg|BGb9zYz%J>%8rH zq_dcwY4rd2Yfqu)?@>XwSml}ny~QfmkOVG!?^uNkyqa@=WWMziM`7j414%E3U8x?M zy;L_Wj(ue(FHg96T~X`CRjH0LF~(;qw7<(yYV6TW?A<4y7cB3 ztRd}YDj`Goz5He>mpOlwF;++O!kY_*MH-b>quZe6*Xh2$>@2?`*-l->=Rc!250EUH z8c`oB?|3Nb9kybJPuxY5y?^RSwY zJ7YfVtkiFAOzSFN=U%K`Q`4*OiSSsz+w$`K^&>N^Zj(w{Kb~rwV!RY>t^}^pv0v|O&uKp~Ka?juH>jv1YEk{(s>!;A zK=-Sfr2D!1GqoSD6w~@fBy8%{9+TfOUK-uK)s)oV>cA5YkaoZ8VGl;vexhZHfW5fS zXU60n>e9L$M-lZwOAqoZdO2N6V@~Dq=z{s#73{9|i*oam?BtN7*4x}XXgTb3>NnS? zAw~YB%1q1)TGHsaU%4Sr2Ju9WZ>MQCa3hf*1&0EQE)2mp_;9!DpLW@^{?!__zcs0GpT6TkUP90f`=!e^2c_&8X}h4$ z+W@}}P_*2J7r=Ga+dd0w@|2{{kE z180~G8rvN_!MKNH)~yR!=Ojg%|GQDL{kj$sv(t_||17m6sAAu#K<$Nfm5a45FZEig zh@=7cs$YYLk#{W#y40kToA2?k>|@H-p($srVQCKL*rYC7T2RUp9!_KvK)1*{$64Dz zmSz`xT(12_xEs6XBM<=pl;^F{aGT7P`wN<8ScLl*5%@+b#iD64a809vmV#^)2`jE0 zML>-ywZF1;FHduByq_P6iA+7_|F(Tkf8;!?sXU_N%98L-Z?l_qDFgYtu_~!y*~qZm zJxOl3iyI|%7Dm>9wBwnWIvGfrh98`-6ry|XU!v{2y$7Z>?yX7-VynlY@OQ7&p4oLN z^Qkih+8>vZC3R^#kYz(hY2w|`mzGXE9wFTKEL1Z{YQG%7wfAuD)-y&_qMFcS?!x!itmA1VZy5vZEw(Fs6JxbJoLffn@JXP7;0x(Yklg(LA^|05T zL=%`IiCa-dCgKV_=e(rcSd3hmD?AB6=n7L-i=4ukH_7wz)Ow9qPQ~7sZPnl^qQSvA%p^ zTjhZ!x3*&ww58*tOW{>}=!9UseY!Hr{a3EZkQZv8mM3nQ?LJ86Dpv#`;-z7gaU*0^`)bXeC zb|QSur%;7f0++amz_k-&52a?HJr8K3W6Gw*+)c4x=M=li#6%KnbY+oYP}o`gwb~eW zrhQwtP}Yd9uwCZgz2x$GwQpvY&xIE01M%&F_uA#@ehqwXF0Z|d0~oMN>kVwvDA}iS z?sQa*Xt_6dJeBG9@jMS%q;()sm5Tc%2iadf1KShyjIX)OvzS-3l26=Dzw*_y9<~fM z!$0MPpp;t7Xb4%6htUi`EtVm*Z&0ChSPf)t;cuX>H2lL&!cDTWBwuaLuiYh2H<#qF7LwAoJE=b0nS}@LUMUyY8R<3C4oWc9(k19=gML>*C*MeK<7Opfdg6$X)2nyu38WiOCoPv)7!Huc*sD=tu zFEUMhF??Bqihw*}zEV=Ny54P&io^_{@L4x7WOk>X0n8blFEEhNMpsnkmjo=-tqioI zDH)ffgIEY5Ftryo9*TjE;9R5mY3Ye|_vp_k{yuK$U@yBckydp4 zV81W1br(`YE(heT&r+S8LYt4KryK**evbC%c@bUf7QN#Uxjw8+-|7D_vya@EUR)d) zP|jm}RF$R)G0jg(9nXgX`L&JZ?1Z3BRLs;$*)S>P_)LF$c@od(h0 zmH^yYFmVr>n@{pGSbi~=JrkYMVyZlerz$~Tv3~EY`9+Q45UljM8m{~CzF(0Sz3d`d z-Eqv8>9+Ja)}*aL4bLMO;5;*2)^QKLWMo|XD?4q!gyygEE>MFwffY5OE_wGF$#?We zVRCYhP$*gpRLZihWg}f0$s#4HgPfb}qGGbqil>L)Ln-REW@dB48FZz{Nj(Htf*w42%{<}4kpYX$BO>V!jZn*|VjX~sJgav3hl5wy|5azRoNX`Uol zq4(Z`E9Gyk7OoO(&1tB&8WjJ~@rVgh)rKxu>;$Rx`P{|yxT=Jsz@YqEsEzI)5Q!H+oH3y5{n-_;`28uBBdZQG zND+ZKDHcNX0FfC{_zAEp-bPdjsPMGkAVZ)5;qe~6CE7TR$Qe-MB?$$!i8`V=+6l{$}CIqc4)9}8z0 zmEh4L|8*R8n+%KT0@)D%CXo+-Rrm=mUD_EQiBfEmx@)ZB^WY{l2}`&WuL9X6+6&uX z`p#=$alb{Q7tJISdbts8`xiBU$|BCt)5z2P+wj&%_-}b_0~(%`0fGzNhJDq|557hH z$B+h;)F;)=Km}k>qg4jLg@*uehDIgRo*jIwOAGwLZ-{#hPfBkoQN`R1Km)srzeeI~ zPdy^Cg)N#7uf=!-p6? zhOG&N5S4-Yhg<~YYXXQqK!nND0uT!VuVALSt{BQq)F-kND2v0+j?Jm!8I!+yE`7rN z#&<)f6nX1_hr)81+4cLVrg_f!VI7w|I1IHBWG$@mcsg1`?o-_lmZ@14@hQ5B;5BTd zPL9o~s43OA*Yfl>0Q3W#3MP|8%8iX|LjK$&KbV*({f85@^P96nCjtAD%%DS&gWYM-hmn#4g`$(#5dCx4pWRn}_eU zs(uWg=>$lD7*Z=xg&hkB_w3$I19%Acj_@S8*#tf21tk(h*NUD3ILHLR;&(q^6@!8> z1DUtqFN(?JN~NhUXPO$LBztPogUQrER`aYca~T? zDyuEv()ySK?$i9e_%!7g!9BkiXS<6(bZQ%dYh7Bo>G;PHVNeb@BJ%0}deN)uwoc^+SL6a6zl^}{3cm4k}A{<9cl0{G+Z)PIK%YR3N}y{J!;9@i6fBy1GwMw|TUdSf$M7 zTE#|WI@mxzlxe7@@g7D921e-1PALsAm&bmX?}d+j2*M2$FM;2sbpYn2foe%`st^=Mq(5|&iHD!WtB?;7IR^HqONzhGqWg)W0r<{3Gl5PbkHMt}+clv(sc6ET0sBK%N{pbP(fDz`wk zhal_R?ZnDP=fUS(T>oTtiX-dX9f;w!StHWmO!>!g1JN%*b6a1Jaug#tV4Lw|ba}DV z5mafwvjPPx7zzZXgMJVmsXu2P;!?j88*pQiK`4ct1#N?-zRX(V!N7KnC+2pUq8TDj?%*O9 zn%Xrd{2wiueEd$X;|&Hve)P0~D^o7a3I7{P1p=_6W#v+dC`Ghg+cN?{i$NG5A`N_q z0mX6h_$)j%{#I}kaf33dWQ`g9RVuzE1dZ4?;w*RJO$<8=CM*eN;%_BH4}snuihF+s zfM@hNBq%$H@hOzmo}=X;>CEd%5Ti;-;*a5L&;kOx z6t}C!B@waQlBqkW2MzfyH5t%U7u4^)W)|wF(ufb!y&{PEcaHOXMRy(@5m+2sc>Y-o z@0lx6Dxq0Lv^bn<${AhQx|!;l^aKzjpcGISxk6l3UjK`(h+>-;Ix7{L0AlzPalZ)Z zgm#w8iMkLTVTjE>K33j#EDvrY+_8ATGF)29=&=FC&==!#*<{;b`H5Ray8q+FrH+5iU|wj7z#TA`RMI)0u<>_IbmjYICQY?~Vq$M8A-7u*VRh7gDfUXDlw zS!EuA`h?Y82Z>uI&^_Ani^bPYfk+Ix z-zb_1LQtUSF)@F1f$*v2?QyYQ)=#Zfs0=s_6yu#&3 zL2?EOkLKw;nu;3@?jm|7>j2D%aSKZ7-=2U?y_z_cu;pNoQN&9CFgm+pzT7@Q0v>=8 zojXS%I@+Gi7Xosyk9c-g2clDW2;kzvaS*$_y)wpeZk(k106?Z_y%E5%SNhrgB>;{= z6@;CQ<$&&RB~Z&E@=Hu*TrOGDLfswU_76pwx5W|e$s4fKE<3^lTu?>8Rj3%z1*^}4 z3kjyNPKSmroce8V&yUF?R_|30{=AEO$$dEpE}KxHcoAuW79pAeLy9kG2@;fe(Q8tR z_eV_?=}KNua+$xLbW|n@L(W&$AT$?qHwx}DlkIm#>o>4veM!-|GJ(C!C{^HvehJt) zu?J_w1InOxV){d7K9~ZjS4UQz78rwKks-|x`CdGl&du#3br`D+B-+KWwh@U;T&?nkT zAG+C)!)`X$hcqr4u*!V6mkH{wd0;*`ob#PRuSnrX%_~Fr!DIRk0fZ4ESLw~yoDVk*9nD{znPSNyfk|A3EelK| z(3NwnsKD0Z(R|-)ce8Ijo|JVxRtzgmzU%+#w`N8m6h2J=nGL-_%~hT_lp33 zW;}8H0w9r8Nia6VPP0jboA(=;$Yq$x00}VNut=Up?nAPocWlhjwdWw;fc*3tQINWZ zreJq@zL@iU&PN=FOCIKm8$>729v2e!LQ-V{3L)GuxR}K6!IOjNLbO11KpByk6x7 znCDQ&F>V*+`IxWV@qb8D-NEOP*)<=4NeE6$34H;yj8`vlAFr5`^k9ZD>G#w29&DC> znNZhu^{1qF2ILag(?XvGf5m78=aqz6@E!Z5shb_lnc>QQ#Pvaq2b)Jq5G=xdKz7Y# za8J-kjWeTHipud)X2cmrZCG1CY=2u5WXXa4f)txV;&_TS=@Ah=(aH47KwT1|OMh1t z1HlMh$WptI{z0AS9wGJd&`U6VN8-FNuIMp%5y}>bukS?hhE^9j3zvkYrXNuR1U2=` zc(WuQ30PBb-d*Iw?i~Jq z0ltMX;26|?-n<`Jt3784RP;rRZmS-U^HAcvO;E=|t)`!^{K!11JY|Hpe$*oGC%UPH zpTHS`d4InQVLbkFbMGll5HKnYPuxUI8MtcY>dtth72xK95bpn>43#Z-W1c{ci`sVO zpR?SvBoR+Y^*SM0) z?TX7F7LCgC9dL^9K8W-|`nd+oXkZtQTtZl^(ga~^0`x;vv*uR6*%obxNZYB03PHX=7%-F26++Pgk^<~hqZM6Mym*IQ zg3KFk05F%>_MxLT#nUaBmP*rF>nNA42?1b98~RnSAQ#VaQMvAwET zapZL7m0E?>ud8g2kSgr=6Thn|IHMi|C67FH^=o~^ z2Zpi0GFOw}5Zba3`uv=aNf5&u(6KF*CP2M}0naBYH^*?eJeNi6h>p1X2IZt?A+FMwucmi*PA-i~wJ02MhyUa7O_+Uw8;;&7k`z@~wws#Qy|j z#|)Mr)D4%*xRDqKsBysoCGdvVQkDOdswr0Ov@L*yg+nQwc~G}21d2Z(qS5#Zp`Sdv~Qm?6S>o?Caa_a{J?wGx7F3vDiYtZ(7(hMHa^>ZH8=To;LZ(ulKLT*gkc#}hn0k&0?^(fzj#yM2OY_M z?Nj;72bQ9kC?CZAPe4)vSYkj)$62O9IIDoq`$xVZsEx?cBOWUj;OH33G|7S3fy>cH zBFqgyty2KBavy(QeQHV+qnqp4?Xq~_~Q317xRt70MKVj zPR1Xry|{B<(b7=aAJej21^z_kKQD?_vMasTTND%5brV$6mvqfC|Dkg6ks<$h1&qDd z_14N1bJ=D&l^tB?E|BK!F88&=e=?;p8-w39pMI85p|J( zj~ryL9@hp2m;^)KSjXT$co}Umk%$5~OTo(lCLs>kSD=)Y*#}F9o5CAF!?sT_**@f{ z=}K!uw?eX@Y%pfNwH*et1hPA$vlC4ZVwer@xJOco&W;)+KKiKcQ;NcM=-u?|{tw7; z6qMN&V4jk2ELhHKK)I1<4`#)J_{dakpL0+zGF1765&Fpwv-u<-Pcjw2jk0B71!jZ; zqC6xi0yVt1T!YiQWA-XEclN_S!fq}^s9*NP#CW8G4*is8b?b4 zgdhi#u=rQ}X+VT;U!@5JGL~8JUYw~DE#%Fbq^F2yiwU(XCSqbO44}Ai^(%|4gG3g? zY))AzNW{y@bNtAsxQhrqoAUvG(l29n9ep0d9&V0g$6a!5z8|KWxlYnUEJp0XySGkd zx?H>+lQGu>wlZAW33+v^Aa7$9)OqkpguA#w7*{(JopnKi2nqnp#8L@vdcpcw($>~D z_~tdDv%4mf34@NFU<+C#F@Hx^fv{G-E1kqzk?pNz-3Q5s0@>{%2NZd_t6fMnA!fls z^`r+ghlOHH5jg??b2pTOu{)tRId^evA}1-m$6AB&rsM(a7}2jdmjN#XQ~gjW z^Cm0z5#lnatFihNZv(Xs6ZS-s*g{vJNf8hOiEnOVxk^6~>=ti>w>N#$ozQ_sP|5Zw zWEmL_0G_OPF-(qj94O%XK`=FvG|m4Cfb!hrYe-*dZowkSMY{Z-V*5* z^D$&ZPwEvN2wn*cP4~5vms(0bz_eA2JMsJE2Je+msmHW@$s9gk!bi(P&qYd;==*>W4H;6o!ac%elxr<+j>vjW*4KaT-+Pe|w#XvA`Ek{Cbb2ibkm_3h* z$Gyy!pQo6WBL9ISxcDcquWjA=_BqrK9XSp(R#NyhnX~jf*%zYU^ zF1^vpXO&ppo^&)SseRSnVrA|w994sO;&I-_2z6=t-jK6oB zPx`0g3WTk6wu?L4T{2x*=*qo^LQBm8^zDuSVd@FwghqS~5=^=r4hiF%$1qwfzC4_n z01qxe2G)ZD2+XStM32no1S&Oyup{PHxbH5v)`Q*=L>Qh;asyD$+E4*FHtAm&VE=L+BJ}f1KI&PK2yxX9u+ z@>e?R0nzObJ_nZ#50u*Db7wU-AP%Hd6i#1EqdGyG>AUcp%Kg(JeZpNDg5f*7vw-DQ znnb8;RRO?{h}a{D4oL{$sFN*`s3e9f!AM8fUDy#rycZwyIe8c+!z67*qqzHGX37gh zB&%u5T3IP3hqg^HSw18%8Cn3OyNAd0!%}vH>K#PsjLnIbptC^oV!_=AUqRB%^pLHl z^X3q_7Q^VsX2J3Q7y;7oy0n(LO$xyaw}1 zd&hRsl-7VbjHL3B#3eApaVB1LQs%`7+rxYS`9}IUdHWd1(t&TZO$XwWS`XBQh)^#9 z+*PdA>>9|znncR99>;K+1d(S%3$0jR!HcZOrQnwV^N)`C3L|RnlEvXx+?vSq^qdd( z`vJlWWf_A_Fd&7=Rep+)qy*7sf)7AJ3jtn;2Pcr}@{1xu&QZ7OT^GJ<`%5kXuXJ3X zYB1SNkSgZp2~B-{b=wDUVGIT|R*CSz?jWRA4D~*5W4xMLIkNgR80RjW6C5eYTNK`&a*-=H#(b6;UWByOL*U+9PmWw@R6Yt0ow{Kb)T?Fuq6mfT{1uR(jezqC zl&i#y>eBX*NbOSzm(%$MlvpF03dnDkP|3lN;7Zdl)lp1h}Xhi{*C5#y4lGa?Prdxj8xbpq_{UNECWHrcr zn0N#HyD2_pEZoy5sexH}*-4+rn>-K_iGAdXU0;iJ^Eu8hDlkDYAR4YH7&rsah$Cr+ z?iy>bf;{dGw-i##)3J%u8L;d_F2nVYalAZ^1cI?f^V-U0pGEtc`n(889*VEU%_^hc zO!#gA6n18sQC^bt@+x7_j^}p^BFpG`bRb44!5XK;y26>xn!uv__|5yR>0S%b)|JrQ ziofJ;k?i(veb5UJ@|J~~v;(TCreiV6R>*x%M3SN#ikUH_jB~F3^1avilhl_05GIh& z5B(mR2IxMZAR}QiHv!mjcC4a7a~&PCb)<|JJ*S2qq4?{UYh#l)gmzZ&w1LiEseJVe zZ?K0E$L(oULu4_K$gMS`p&I5PUhdUYQcZ|?O2iO%=PAKr`8*{Lg$U8P_r=jdet#O$ z*u>BNcn%;})vne1 z4{KA=5=2*xSH1HP9EZFWs}_>8L@*mxDS8T;NpGKb2tEJ`#M{A6UWVe9R3zcGhni}L zeRT-yoqf4ateChl(5giUGr3G^aA--d2UwfP%4KwdLSx*M`6#rO`kA;7;q8bHD69UjT-Lnq8R9!N?l0+S))DVELLBzN5$DTTE<&?5}AV+==X zuU924GTHxB&f6*Cvf1l@SA6rR5#spV9}tj3)d2+wM3i1No-{F~^dqteEF2Cp-RiJi}#8XTu1Jtj5TQUYb z5s~v@g>aNF$e%_liW77Xz|#O_F$pDW+d`1pky_0;)L~7=Sc($B#1WwwET$BLcF+Y1k)T5x6A5vnj`!F?VLQ;C*jGd-E?ndbCl9OY z1GdeZRoC4vZ-`l_yF`2ruf(9UKX?=PTm|_9?iNwL_s62C<-2w8LXB?l`H7eYY?QcA zU$*T=IB&0Z#BZM~5yvir&w*H@L4VAMc-#8C1Z^c(b)_1BLJ*G60&MJw@^il>4OaxX z5>GJx@qX9BO!s}K2)w%~6!Zo!2 z_hLj2uYDFikll_bHDsM8KS^R(JS*yr?@NC;ma8q_PV%>Tn?gim3w@jDD%hhCwIVH= z(ei*;%KGw&0LO(~UJuo6h7U zep=+m;38a;%yYvRKJK%jHjINrv8P%wf|7=9AP`x@SR%#*+OcI%W-3O9JXu8k54i`P z;(R(q3!9_LuW#1cZg?rg27~zRI0`^};nhFv8IDuH#82rVcQ#qd1 zO&x>#%WTjXo^8n`3_gbeSFD0T6Fcc0;Oi3TS1YXB65fUzzS1uLL=<#^gjiueIMKn~ zh&1jmGg4pF1jD}o?NM05%{m30Sig+?69l0LRgG*!@Ua^z&#+oWn<76 z2cy@q`?g}tn@p;Mb}7yIFG55wo8+EiJPfmNNbI-Icg^>$m$HLVPLuAHMk^YNz3U_9 zYt8%IZ8lTPMHER(19R5YmeY>Tq_BPS4W1=_G`C$0Iw`L7+B3evdsrV!URQ$fF%EQK zkVH`ah&?~hQN%LC`yq+LShvF0P>umtw9K zTC0^N#Abo71F%q8SOjv-Lxf!B%aWWy>~!_zx1i2rYBS{T&&(L_+O*xY zep>u_Dq~cXKQYM2d-cpe`zr+f=TU_ls-xG|ydLw(c2)MD;jQ+}#?4d197|(<*X}7M z6z-SNKP>`V`LmI~(e&JNF!n1Ei%kUtvth6!ZsL$d(Lq`h~E#P%#u5dda~yAv!wx4_ms8-`4M24)Z(ZtB>s|PkDqd?&KbZV#A#o zy8bYOmAmiW+!&Z|>8*1VoB|i>KO~^~T3@@1TR%W9f}WZ2o4Y^y_zP_i6!E<4nPyt{ zQp)6lKUJ^U&Bi{V;U{m3v^O_eq(gbV!o5UFB5{IZ-39M(QTLg%UsSi}#8|s!)yhfm zzP7na`QMbb(((#7*HBqX=kD@wHr-kUHG`9!zf=X)MzbB3k9mMwcr)$vN|8F@nN5Gi zRecEcb@!U5iOE|Qo2qNgtSK?7Z--%<_G6AkO(mw}+Yit!d-V1_nLN*z^y+H@nnTY0 zHC#x{WsGOKFR|>zboP8p2$i!*b9z%u!gN@GcFXhi|U0nyWK~wc=5+M7n{^{0{ayHT6^JJ zRpP4Qu}N+3Y9=wC?q=(^jBcvTuWX7}jqBcGE|34^(V+LdwP*ragS+c#V=v`6@^c*3 z#Vh+^nd;(?3u{I%N_;BT{!kQCKJBB?`a~#c-dFWg*iY?+g@xAJiumvy(F@7v!oM=q zE6*rOaF4IOp3Yd1%5Ur_j*v14cFQ}-H=oN^S7^J zF%~JzI`jCQmCMSbNnzG=KhEMAM?_8^HsduDHSUGD_cuX(zO98k`puoj+IwEw+;}KG z^-L!UZso^cCA2KrRMNVo2ABHI?y$eNmiz8x*hMu=aU8kmVA?BpKxJC9BYRU^(br~! z&in_MKT0kb`{Du`Mk@{pt$g~CRlC`_mQ-C?sQ$FgY)E<#W_=3R>gF46h!{@dWdRd% z+Du4*>-qN8od<1An;zM*7$#Z1bKk+1y#-S#Hca-(zq}Q3xK}m+UO1bZ1~qu(@fQ7d zlM3cAz6|vC@UQn1Cob#pQmX>ySjHb268aZBr@yA^6X49uGMJYt5_0~w61*a|UxV!*C10uP!Ob~k#C>wETK@zeZJsuvHsH8PUt9|8St zjg0iiIk#Bl7OMy@$@QewEmpb3Dz{kWCQJjL%XCWt-BLh)B!~}}kbmA{m0PTGi&c85 zZ2k|jiV!(tGC#i#hI>PAl%-SRSA`PpCRf;0ZH+-nu z#bsJVUL*aF+MKjNbN~NLtSW2%vFa_0BIl6aA0W%)MLqh`T(XD)<-ezo%;v@p;;~kL zqO0eh*~>-4zUkMtbT4{4Yd1Ud`-7H^vU&iH{hj0uenyG1PuN*ouEj`uUXi~mX3rHR zIMS5_3*-=h+{KL`jnXDkw&Vg4TvM7WxILd*luGFDyBt z03`Pc_L;Iec+_nFOI1h4Z=PDZGT5>CN))tXGF^S#aG`NZX2tYFh{7FtJ?VjpoFOTb zZ}c92ylTl2H5lSP`W1Mczvqj7=5rUa{>%KRy(_eGalnqd0ku1C4G-0)OyX8R!^i9M zfZyM8$wKJOF5PiGtn3C?VmCWn9O38-8|63Oa`*g*hg*i3Kjyo|Dz{jrmqO+itK4Fh zTddL-OV>rUTMFow0`en4{P{SySmhS0++vkpDw|uZa*I`Nv5E(Tp#w#kn!V%=A1!oC z0o{@+z2ux*ta6K0Zn4TO1$0XRT`zjTsBQuK*TzI|*(#zqmFo)KVikXJwp*-ni&Z=- z#vg-te|C#i{$F4fJ#;}%gyDm(!6@m_ktn1cx?5sVxTtvUTCL$dY5$)XDOO0b>tNL0 zFllFaq@)JwI@Dcb6`u!_PJmD}_$o}8kU$H`mjtaV{Xgu6ujiIPqK!rIAvGD=A1nQq zY~Ju0-dA(|Fq=RDjW-XL9)ghz*rXeVd1LLi`7m~=YfSTYAMT~u?c>|;wab@7t`ZEG zg)W`Pp?w}1j&f0MeiGZ4c^cLE;i2B_!$M&vBN*!h?IikI?(KD`IP4-}Q7nLA7*}&s zZttZ4@RC#X$wJ}CVSCg;X!(V$qG9?8>1#nZtS?`Lt>**!S^(`m2)lfRi?-0&_ER#Z z-nP}0)L(+VruIo~pZ6*E$h!;fSz)q?_q8|m$!^6?INb9%59OwN26@kh|754c)!)70 zl53fZ3&EY~=fNmlXx_I5`%Yjlh#3~)YzHqPZt9ckQt4}9XhaY+zQ#-SEBrOsx1GX1 zGR$-`M6;&}QP=LVC-&v$lD(55O@eloJb`cOaPynFX?SPiaJp3DR%qmj{nv1$&97y> zv1E}bwYOq}kVI_1_iM?x8p${kdjkYuBf37d{_u)7R*LN#sO{J<9l9B!;Pn2oPoKC4 zA@$Q93hgFHr!_S;^}Lx9Lq9L&)?hCK`UtiahsGJ$Fb11e21AQjtqmq{&JcEe_Vf3> zAvqi5y5ZO|IpVS^yEuRW)lrWPPGz48d!qfS=l8_Uy}g_Nx7lgzI?|q8FwVaBS6H-X z3peV2hQU)?LB7DO&Y{qpY6$eXPuzs9lAwne^Z?Wv`Y0mYf5v8F3wo{}HX$b+Be5xd zKHeZ35hrbx6rG#U$KHlsBDxi@(tZJ&XJR+Kq<3({5KgtJTsE&P zS8Lebr%Yn+mEgu=n-zU6PJSS*m`G1tD^3Z5CNV+3j$>i@kOK@--_!6KWnhN8;dNe5 z4X=CsQbvl+M7Za%{TFG)jNM&v4#6>y6_dkqJ?&LVJ0I*qd_BbJ#%kC#JCi<#O$E*rcehFkKK4J*m-i7FkKNaBR?Vn( zY*a=@CZ+r7G~DacTe4x%`1JLK{jwmXJQ+s-Q#4B6&aERtp3+uPG8H`@*+eamqQLOGEbIQgoN zhs^&OcRQYp65I$fjbn}$hCtp;Uh_trYkruv>xhbO|VLV-^$ z2W?V79EZLv&ud`Y71-vDU4!=}9j;3sd5hPtWW)>ie8oN(gq;|;9D2B(fTs31bOl;O zlL<)iD0qoO8jg(+qlV*XRT!%ljx%si{7Tl4{ej>h*ppnrW&|1B!*Rl~#|2LK!vQ%- z#J+IqH9;2Oe z=@XN(myDOh?wx+5qDVJ=vE4rDEsNeXp0Z5A4(a{c@W!Kg7M6<*K#_Y;YC>=R5S*S{ zzh2s12L=&LRUoZ0gY4PkB#W(m@$?~d>gc&Z~I zqIJG}Ltr=z1-Iz2A12PB8;Z@bQ8En1ktS!r3@d?t{xEy+OS~feNIzw|PwYtT(>r$P zn;dkP>WQ|EaUE}loy{xIb<8t4UKkYuv#Ck~C{{(C*_qlJ+p%>f-++e5IyP!dcU-4| zw#KHE2CIj!30yO3^r$63jj*%9DGi3jiHlDpOn+)>!{CUHglS6a8+)PkII2#4Gj{pB zY170)m1($YP5T5z_lvl+rHfDCN}pD=t=Al>J@lZi^>WSMW!)!qjg?igLNk$iXa)DY zylub!2s0%&bec-{hS6F;cTV42Xn4%3Iy*Mx^xT-HV+Zx;4n0U1Z8n#R^HTr-5{zg7 zHGG^5Uxfi_o{^=!mnC+6b6`=I>Y%=<>)}|_v{FWG%~G$~XWiVW4oW_{GU;@w_C6~T zD~q}sEMEMh+>30TmHiC9Jh0}pCARyA9Oki?6w1{OrqRTVu&T;JlNLs_y(%BDyo5Vn z-@PK!IZ8qvpPQ;zzCCyT%H3=W@t{+?bYWXSsel`~1tyGzTOHUdA6t5pUX@+{kpS{h zOy&;jQMBK@aHF=<-G%b{tKqTzrY0~Wkd@PaD&JD8rfe$eID;2vQ;_rLpnf&&lx1pB z%~*Nhay_#{U%OCm9sSEMmxQn6W`E-hO>!#2GaRWkJ5zqQGiUmdfbja0xl8EKdd6COFF*FN_s4l+g%b5>~OKbRR2sS^bcanReNTRhPw`v6^vvE3)=eMhv$$+l*d7P z=M{EskCb4qf7jm8bhvp1&W0xUX?jCf~wGpe=kVbp@4CtL5=YN4x+U$`x(^Ru0mrLdk(dKbt6+NPP<=;CW>b&Tz^=8DCke^nZ?tzDm z&?k&&nD*DnU=qNzPzwwea!p@D&dwlO;^vJ5?&IDsMraeQIYn(KPx-05&OsYhlJ0c9 zV^UG`tMukcaP?(s6AZ`vx<%K9SJgWGlDy7Q#1^0!mYjKuTJ6$w@{+!^bS69GLUU~Y z&N*hKs;rW>VAMwEcdDnMp`dV9!^p`=<(k?jWahsbl|N8Nt*MMM0Xchf9(yNBUXiRF z4YGF1fhkG#%EVXIwi5NQV{ z!mplSb3ouVtkc)NXls-@X2ASL5b}nu`{SIK!p@dx>(?ZJ0%fY3QmgqH-$-&cYFmf? zGKkAo5RLMT*f87c*%he25-Y5!FkGtB5<4}e<3S10DxeuA0M{sqRKNNY&IGoVcbj!7 z1N*RCSrT~zSDslvBC_ZULl>Oq6V+X*`s~1`QkfA$H7U0jBgYb}NU&qF;txTd$-2+T zYLTFG(?DdT0_{W-;f>gF{fkph-mU?P%| z?2I}&lCIy>W|Z1uKsqiy&)uo-Dp10J)V_oavRfzX8}^fjvk%2NGvW>xPz|c@zuzya zCExwBP0{cr5N9`Q0F8$BZhOu$?}Wad9B+?o7f9Gc6M`sVgFQy$a_Y#O!LuM5CqUFQ z1HmvU&YhC9&CzuK7t|&}iVZNM2=J7cmX}L}V|=`#;HExdD2%&nremhlDC4H&hTC2b zu>y0Yoq0$PATpV^i|8h*m3}ZdPilZE)gd@Hp#bffI<$^MX~Xu! z+&Cr>r)oiCW1=estk_Gg=XRroU!`CdE>d;u2{YzMO9HllT_2R(y)r4UJaHgVJp${9 zvwY(WYAcm@r8|FCvQxnl4wD;<5vBE9b3AbkP#U2L9q)2m=3g`47q`$K!_YV~!Pzx@ zVh8rDMkoX3^9WQ%FOQm0n0vb#?-MQby@#lMakg!74d@O`4V&69BOYXBO6PR-RN6WV z8$=YMYpBKvi^MM_6P|4_pvYL=2e1(=`rMRrp&g9E5e{;-W7||v3K90v^3CXz2zyC# z`@t5ppETK@P@96OHG!8Zs~Z|)n0uzCR*jHk3>}(u{MGD3Ky7K_);QbYIJ_*MxLv4v zz!kyJ1<404`v&4J;czrCgVA%vxzDwULB-e-8%_K^=*)-YwrKfr6H{kudwNsFCT-)35NzEoM-&FfkQP)1OV@ePuYE2^3*AR_BYX%47VT>Af2SB3KSr}P^ zIKzivk>Kz8B^2w)VU+E#}a=ANS!y?y0a^bjG;J~jwIHwl@}%TKUx zkS(e*;85Wn$CzICZgb;rW))s3W>>7Kp-&EHo8v1@>#Erorvbmk+)cCw`uB7RbG{yq zLWi+Bup%{0>WY2+ixJrbTs4?X;JWU*{K_U)mUI}sp2Bk#^dso?q}QRop9V_SXgx?L zj}nM;Cg<5UIZ?Zio8kCTcASCR0ByR*r;YBdh(5gHm!dQ^qVvLhxvK{CrcI32!qi{#@@e2>TEIn#3 zKtm*d2!;p`!KrhlePpNf>%7Ig1#0vP?qQh~YznlCBJ3w6M|EB3KZhLfXd( zx)Mb-X9ct!FqwzKTZ+O38)tH!Yot$tyg}EK$Uq`g&@huS8PYSQg~!JeCt~EBO_int zb?}CRoC*6_n<_d>^Y0!kq8b+yC0FB zLcgNzGkDodx_*s$NlyD6VNLIclmb&(3tEB63^W&u^pgJmYy_WP z@NjNDs4-g=SikCy0yP->=&m@?PnDe}*cO6m+Q$igI01nSKNs*uKeH%YHa05D>^nio+yI@{Mf6Uui?#vlSrk{K@T1PfsmjQW@r@}cVWn@?P^(^o&_J^^s* z_3ZY4%$Wwhy&Bl+83e(7oojBuqg=qKR%!bNy=5+O#K26}K0p9{t!X;Jo&n+Fr#F+F zLk!F3wBPK!N20#%^krC?#<^EoZ&hDWqA@#g8c+iKX}t@47aR_E{&oQ8ZEz2zW)L*Q z)&l2yFd_vhEy3!sQu9#h8I(-txftP4RR5>ywI95nU_Cm@r0f1l>0FG^!ulgCpN;tn z0pK}w+eq72%I?J&3=lk!EeCjgX~l-P#@%vD=``3t-oiz3OYHXfiE4D75$di5mdMAz#2)Fm4?IcLI|U zv<6ufr$hBd6!Jm<2Igow?o>B}c-yDc46MP&G)kEn#Ki|7nrL0u;O5D4Yq! zrr?vYV|?`+*YX!zTnEZZS74yRniS{)CJd-b=D;398~{1)j4PH@r!$>ZW(t{G7?^oER9kEYb=P$i($4(kF1 z6qVYXWd^-;M={ac$4%Y;CU}IGdfcOEeS;-Xugwstiq75@IUb^CG%V(^S?} zym$7wlZaV}W6v-@&UaB>R_^H&D<^imqp)d{b_$^`-O#y=#4G+hC3i}{sSw_{T4fbR zeu#sB9HuWV0_DE#5+Gt|(;U=K%I>%m49Iv0E$fnZuOZ<*GR$@$c$*;muS32b*2k6h z{37q4fW?1`lWdwZ(m5Z=3ApQvXvbpQ%D~x2N!wtCEsh!l0SXfVH`u_j?1$;pz+;^L$9@jTU;C3K*??io0-7KqkPEV3w#18M?dT5dC1pV2!8 z;K(;C4rIq+ZKzfDRd+ln(DGh=f89@vVoB){=}~5AP)2w8RPgkS)|#1NAZijIDu%<) z9fcSgei?@RjKx=q$6h5*L_6I4q9Pr6jP08(1P4JA~Jb+|BV#v#ug~Pg&w#bv%fM`v&bj^JbmA5)h+9m%f)2J^+ZR&ip`k%TNkCF+UM1C` zbHZ3{5GhOmjMGtwUenl|Xh|ES4%&vS>;XWrFJSZ(!qt7)?WdvYHKC2q z079v^&(NQUR2woA&~vzoKw#>X;JI^ED;*>uz)?z<~qHP=mvAD-l}MDl zs;-7Pwx6xcbCM$aOd5uWs49g+a7oA%Fj1ow>jPk5WxW>TFPKb-Bk!sT<{#)=Bz42h zudF`xMg<$NW$rH+s0XyoiJ=T2AAov@4bhM`I@GFyf*XiAMtr!*5#Esxf#(b1l0Maw za5CT`G+J!{36EJ654z;z0$P49K?OW$AKWv9<)|u-_r*L zn41K?_)%8?ftyIC(K55=V&MAt|KTiOQyZq|>Ez~nye61Ei0o=8f~0Xtx|s=}%Y!;` za--Dxd~RDM*laSYWDWlKy2RuUuSYG4sm$Da1n8Nd=v?QFwKYqbWH2Qxm;re)Gvx); zn}9fjEX8~;z{lnQC6*3GRSHvmMU?85C}nd=G6KQx<)u;F<#O=&)5)j9_jghOOWw!S#R&28HF4TpJ9A$J9e64#`2=#eI#O2#|Y@8xc+1 zX8RF+4^r>#1 zPJLFM2+0VO_1*jNFZS9sb9*RCq5>b~W?(LrD=CQtr@w$;e0F=ooIE|kqZs;dHb77h zU8rO8wI}DBF@gbu6T7e|C#Vx;BYLg4&9JjWAP?g*6c>a^yWb4;3R9ok(&IlZ^m&Yo zq-pFAN+2rA45d3r=3~lu>vXU#)g9BR%^K$!sey!z*FoZ!D-_9*Y~-iKX1HAmsRA|R zn;5;uSSAJ|e}i^TSpeZbV)9@xe2U32G^`5}RY=+*_ZWtIiB&*gFRbJOh9)H-0mK5d zfZgZJ3>&c=evG*&eanEz#oRSlSiJ&JUc`rwf&mt1e%fP;ErygCw73Jn{wo3S1Ko!D z{UOUXyCPpurYo{2xS<2Mb%=V|K-1qZL0c{Z2vcMkOs_}wg%On* z1HdN>5?_%hQO4=c;Q% zJI+BO3Bi?6Kfv(VLNJ%{P8h9_(wQN+ed7Q#+gxP4)5UyXACRa4iN*GUP6o7q3)ns70Kj)ZY(V`xa7q9=LOY2F7m>Ub zV97mRHT(rbx$*}wkr0t)2=#}QM5dN!#&;R_RhkgHx*&5t58wrc{gW`s@*m&>GvFwa zs@YIPJ$@4m|MZ?|sDEI7W@Mufr>|p1qO!haJK9O72`eOCv zRy~m00X&5F5{n?mSshUPn-ysPr@SajYOhx%Ei&2vRNeNj_Yb8ex=b;z5kZ2&veP#l;b;yhTZfkON_x?n0<_h;lk#n^4 z3}Qq$?)?Z&BGm+5^BzoZKXLzsQw2zyN>kX*DKL}Wa3HVncOkgi_EiVHo zfs`bP6PP0tCMPxuAb*WXpb-|j@Khaw3jaUODd%?kB|Kyyg%SLe5MGCAw{*(!eh~k` zy!$vaIvIPb`Yj)sVfC7yg?GKirhB*=B7Dy-CY~YfySi}VBRKd1S6?yA& z6Tkh5AUj=JuOvcORn~z=N3}yR5i(OvB+H*9(PN@=n;#fjaP-&T4!0p36L(3-QU%$1 z2vSsH>b+n=|ztKqz^N>aoN$t7#R!*odmmH)bE`&pVWYP-)4TMQGO9oNA$nQ z6*i;khAE5H*(KW3bA|W3x6HnayMo{uak5YuW^3R{>Fog0cagC0Y%YNTys4g4(maGw zHpDbA9jzA1?4R;#;OxQR9-=|u;(x+mD7}%m#A}R$heGW0y86p2%|)N6FVNC)Ef3Xp z6QJ-!ln_WMmt=~sKjCl4ZNi$fqD z`+0$Eh*Q@_ zHP%xNC!H#$Z#Cgu1(-DMN9kL7wANxI;DiyQ7D_+IiJsH@pV<8M?3%R^pN9OoD4z8B-9VGjII*tbzv=?9!A^B5+)U=*{8u7 zNCFVP5$%61fZ3_cHUX(57+QTG8 z8oX~$5A~5t1b7DT7_aokciy6N-z&n+Y}7-KQ57!9z&n-p>g@HXi#GI*Z+P{5aZmW` z+#Sz;v(NCSgG9D=7Zo1A#dr)Iff?lo<`>*dT>}sCszbPjF#66R9y8l6wRli8f{{{_p z@dp@_M0JJojq(7E(rG;9>}1HxJD|-=q>gEZvIs=4R6dW#=f7!E+A>*4I;#Kox(-nZ z|Fjm8VN<_)`6%dSs>0ts<{8QbzD5fSj{o(5Rg^%qXQ2d6BPdA<=r(fEo8qL#DK-Dg z)%Foq*G(bMf2N^j=B}v89v$ocWcl#U^*Z-@ugj!NR$g9hbgi}>)BBGN>)odJOl;rL zcKe_XD(xlKR@fNGA~(AhYC4ZVk5BOk%B~BM^h^51t(un`5VS~6Mk6bBzaMWKRcXH$ zS!M$je4Kb;+I{sIk{siRA1Wh6YQ=!a_9Sh~(^lIlHrn8X-I@4Kz+T&`Ct(dVq8P*S1%FyFaNppq^@RmSrmIFd!5vFvfMFmQbWjj zj6k8IXS>;O9ps_DYh;a$8&TktuvD0{ys#0;!+NMtunnxF9GIb$GA>7~%HV4s>Ad~s z+&VPKc-BIOsIJ;!X!cA!+f4ha%Xdv9ZWVzxP&qsAHYkZ%`iG?%Qn^x!G!Z1F;>2E1 z@5kmtPr@;4IvQGdrkFBBHC_XSNq@mpe+QymZg;(#Ji8(KinJ|4m97=n+eR_MPXI|P%ZN=uI-H#2cnw?d@`^jz1e~8JyIiVr@ zM!c0-@tAGxWgX!H!w4T*oJsMJA>(vU#>eIwe0iQO0^#T?sw-4Ym~w^M8W~U5Umdg* zhjK08>9pu+bs2MVUr{byGjq+^Jc99UJa;Eh@$2PB3M#&9v6vK>$)0ZRNuO1oy~<|e zQ+J%6-tp0kVk}R zwDP_6S=PbyKn}f)eUoSa?2dahGyN6d8krjdCB|LhoS-uE5>nXcmz7d(Aq7DATKI** zP04L}run1Gl6#lwey`2lqHQtkKlbvmh5LMI{$u*07=L5T_uH z2p}y-Tc99X%pZ|#vZB?{w3KJ!SZw(&w8JcCt0MaUAm&>U=YA!(FVy+<>rrw5hWNJA zL&2$pV&Wd_NwVA$unjSWkCyfQ#sI6K{98un$c!rNnr6HG&=gmx$uqgA=lyqv&By9A zv{f_|jGMQ8Dfj-`;;w7GUl#kWb>^P9C+_2MsBwJW0J*#z25Ei$oQxd2*^b34pcCzBvJ(%q~lpv5DlBG(y;*xBiMMG}Z@|G#az- zquDapD|ndQ#)3xOQTlTr_u=!=bR3j7duK|H8IyO)iM{|Ng$t;0IZOIx{BJIv$9JO8 ze{)Lim!EI9?k>=}iaK1e44wX_IR8>x&vYD{x{kTVp1Cdt)dx0St>N*hF`TNAD61J; zFhWktsD;lw^HE9O{*q1}yTnsZq_jMdl6x&*9DMdj>)Y%ucCeCxqpd;TexD9p87t{$ z6nb*%I>{~ah-y~^`}&=^&cf`JzIPem)aq&<+tO$#*!`UC zS(sC$d!zZy4lHC7R|yi8ggUWcaW@@`zr*eoOWl9$J4?jyMz|b$Wf8qi(Eat>HHUcn zk{qPH2EsK_f|HPz9XGc^XsT1t_D(z_?e}C&*UA7Gab z1!NZGAaED?BLn^v{BZHT!=*8R(sv>I)o}r|@L`PsX(M3Ld!^fkRiQ{ly*%-p#lq1T zo&6e&`mdbZ(i5X}#*|~3exebtT8#JP zf3iIJ)!mQngcsncw46FLrDIT=GBvU3fbz&=l-+K(5<`e0Uc)f^IC{kq@Ik0+2>d8x zB@lE$fSnT^5Ghx3Zin&!Gmy|;+m?N7TovO+OXz_`HJyZ5i6zo1`g68i9n3W+v3n9~ zk~86I;O~5?y%ko>*zg>wUfA9GFVo+ev~x;j%aq{~Zi5Hzon*(K8M2~(0xa*$rI%{x zzRmiwc6VN~&Gpcx2L?OPN@m_CC`!!TT=s%!j!UHh<&W%Bd%D4M3LV9H_v6HEF+W+C zfeDrzpTjPpw3q0#k;d*=VCL6`?nK+SUrG&t!KWWrS7)$@&CCb;2*zffJPQL|y2>3Ab^@$Hpxj91*2++>`Ar%!>!kQUF`L z-(os|oRhhC)6OfQoDAj*D7tmAgZNz3o_6=ApI)gv3v2ax+|m!5IFs=?WZ8k zhn5rAb9wYM1d(^4{9zx{ekg~Q#rhu!6m(;Y9e-*O%43g@HFK)#ZihNW%ATltCYIC~ zPG6>}JO%M2iKAQ&;R~9-xDaR+$4LvVbRY%)sh?}(AAQrltgpu$5~Q#$yH3gU-$aDz zEF&=8i`6N`4{#WYhHf<5wc40N;Gklals(aE?LShE;^m2Z^*ybWs$#JZ2@g z-ASV++|V8;`kK6;`4VRtfOhseSKc8}~@;?!g$pDFt`=}x-%wNAIqB%sF2&vNmORxT&!+7BH zqMje!K5Ki`zE>tZbnDo>&S*#=y$7uau>3jmB*60oFEr~EyUy0U8*;T5#?5PF_C4&u z+gIm(s?EQ0%{{&waU&b@LJp0NeW$il(-bp(3gxE15xPUov_I2~NH;qhouh(5G zui^*vEptDZKo^n+aa4l+PiTfKy~mBRPht z&rvEJDEF`#h0R)Bzc#z0>Ghe9FGUz&dm8ngg$9&h!2sNe;UQ;3q}ttu{u71WJL9}N zHQeJA*Q+T_1UiBme{Zpc4zBk0S&g*L>~-M_@yjg_cHS9hztg+7(0eI7<0Xxc#^ioi zR>tS|T9mh<-LRS&g#O=Mk^q<42y8D52VVROp#J7~e{=bs^zxBT&vIjLbjTnge^S;4 zr$iNX!gB?pbmAw+zu>tPIqs({d3(^axu=H`+r=Dg&Y%EN*8X3)tFQYD2T)@^FB+H& z%bx|S*H-y27-j>?j`P!^iTVJCME?*sa|GSNaY^1$M{JU!<@OjeK!7l z4l^=mp2gWYHlu4S^3m@sp)(W%a+TtcTM-OD6r0p}w(9ohR@!od!8F>~8EyB@+CG1& z!2YE~_gy#Yx^FE1d`iU_bjNkaTlSm1`+>g57fHMs#3?zaGvpYPnS- zKe4M_BVwu0kS${|4KSh?i?XHXE0wm&<$C|8`c^gPVew(Sunt0L1l`I23zGJGWAAcf z_(Dh8k@lhspUowM!X zt~x(#<~g3k@?$eAZ-RG<-;+s?)a$b<`C@c^ThQ;JjH{*Nd$sYj)>Yz`#zD@Fk|4|- z1p$UZU|Y;@X5YsNPoee9{6n|Cm3>1lJBG0Y+Ipt!k^pl8O}o36-6(;yJ+Aw1oolV` ziYl3^)+b6m(^tjQ7fGPh(0KqUOh_sEMd_@CHM6sr#id@E^|@%=NfUUtPdgFk-}2bh2%(X%DB>n)eJK zcm#HF--#J>{@;1fQq}#l4CTM2ddIxZd#_Z1iC(2z)$XJOEb;i;`rn-!S%9S(QAJv6C%*y-UO01|gSZO)Y$TzzvM z-7){vY5JP}3z1^%63*|LQ`yLnk)iV*iPnbLLcNlwq&3GKs0lufJza4Q`$q+ddxEb9rZ z$Z1V`jlbUNtgH4R!x@Z2J6kwI>Vr^Q*YPXmCFRn&9i@ff3ZD+_Ccx#I1?ILwM_tE@ zPK-H31R=ksVHG?+EE!*PIP-frNC4*teA2&fEM~$=a~AfN#Qc;So(uG;9z;J0L6+b%RKHiPncnPf&VR zqk+jg1}KgT+t=s8n}OaGp@T|ifboy935j=~s+8#|$UA^hGg7AQKlkda8y$YY+{Nz) zdMPr^LJ7`kXxb$`_h~=ptRYV7lrCRFGIL;(S03psWF($^j_yVSk#-3R$-~G6?nGCe zBw!qNN~vq;)IPtiTi=N6E(tzbWXPk4^Sa3ld8=v+F#>9tlCC&4nl{V{ldP+7k}0}w zuVLx*Zqan9tslWNb(X#9{}SbJgYQNwdW9Ui`KXU+Sa=d+AP?Dz((bJ+As;=`z=47u zO!$-eoNN!TeZ{mBQ!`^uql|QUKz?2$8jNDhbl;9bwnmO>iD^DkiJ1 z8IH!1yf14EW5xK6QWuV1Vwqjrhq(CZ83hOJ*k;4TN50}!ae*2WZ(vwU>n***Y&;e3qjS2MpHl~wYnJ# z)Hytco8x?eCb+@#w?X&IVLis6vH_hR2!;(yd3vnP>Kq;4e54=>SnPNx!}aZC z&!*T9F(%~~>1phW7C93@VN;4gJF*3J>IbT&% zG^TnbMW`` zb+C<>uC@>JI&Oe|@*{j0qQ(XJb!7y8lU>7oZ@K8OGU`HAFQGHGS-p^F@GUw&)BIaq zr=b?5WuTI7|Al+58I-wH`y4I3mTroq!rehLR|}uto}h(pP&SpN|Q* zY-t2*0admJ8qD$^NM&M%Vq|xDL}fm93HoVS&WB9?*TwF?#z!|sl<3a-EeClxw-qIW zSJ=YQ#1`veY7S3X5o?(nlu{&mMTcgu{z3zU#BSfbPtXab#cb4DbJm@DD69z?T?X-; zbS*L~NQU7c99x|jTUMRdR2@<&47Tq+rR)54KMvi#f{G&rTOPbslYR1j)5px6R|}8Q zy6+WD-J+V={IAdC6_3i)a{eSo^pM?l=40>>2Pr}ES`%m~ODsVq!cl1YmdGAbw(;cz zc=E!QU~uHb5ebcFGd$x)@S?k7d+wNCl(-LN4zeDo#n$CJ>(%FTl&7^!Oj|}KNaJO- z(&)Dt51Cu3^~oU}tP$#*EL&iU-KN%w_?>K&f-kQU!p?@@@!l)N2a+Vw!pw>MAqZ*x zS&Pr|{BHB9+tN<{DC7d!(t87kqt%vUOb{msYS>XTrqH(qZQ_`DJ-}Diw(d^*diR63 zj@2YO{+x1*WX`=*9+1M)kjxJ!^mU(MEk;{AN6S|P-C;pZHTPN&S~@adAt)YslKmY& zK?cc|{h|)#%Z_1<81J$s`|HAr?=q@5jGr^|ab82{`HEsdR>?7);6*!<;|CTE4^D}U zp$)w(^i$ePqAeh$s{sS7!yGKgE#l=txx}$cgo5Kn29A~g#(YxB33cp1J7fP8eFnA_abUq=^W98JRhzE)IqvM8L zT6?>bw7XC`hCa$`U5xvBR*=C7s_&;?f+U?>RC>`Nqx^gHVnNsojlm(EO zs8yO(ajq+cO|EM=xv4>PxzFOOWg4XoTI&NGc3IbC9vGqKV;dp?qdPHME<%xpqT?u*jr1=i(*Rraz zs;r|jtUXp41%aELk`h0}{v)d*l*jSxc|OCQ9LiteSRi!SjY7`>TV~Mj@F5CB-vwT^ z6{bzjbV^70EBr)ltGlfjx-m?fn4Pud;Z5|cAFoJg*o(KKq@mQ)UKa33#t-BdpfihZ zyse@6Hq=DK+l7>3%ELjWlGMiF4>T0BigR9`^!1~8hg0*fW;JOs3&uihYxzJ@l@kAl zhu5Q1oK+C1O$ENCZ`vf(pHP~KJ3z63bz$ixkKma*yK$NmzkW2PWn<;ZjnD!menNc^ z>Z+Y1%dZbUi;LSVOu1GK9*$JwqL5wrb-lc-z;4W68Iz5nN=?1r;teD%#?$+}Xkd{6 z1}L8VAVRIPThMf7* zio-K2uI33F*89hJ_YDo5qpdGVDO9{c*fJlLD!}U8($y^p`dDI03BI$0)HilfYRJJj z6gV5EHkKQ>h?=a1oC)IBc!o4oE96$x+v60sWJB!m>d6`lK(>y6$N9(ZL;Moh|agI&Fap?WAK|tu@Y8Z zlUt!>7~!@t#;aOiCp98cEi*`AhedLjDZhz$a_+ZA1cI`L@JWd}`3HLU0(0*uDyc<^ z5w_#SY>JX=;D+_G%;?D{wxgWJ#}XM^3@|kaYNYUcUx5n-a!$%LE+K1FnOMH|l3BM8 zBMvC{?l&jKO;FTmg3k69&!|7?pS9wy!tB72w0*X3S zVY3##X}i_p|Ju@xlD4O=gHVMoQX`)NwG$nxD#tUeUwNs~zLVcevQ zv^|TuC|hpja_8b=XET?-M9kYDWjuNiaiQI`AdQ#|s>ov0Hbc8D+pu!wN~vlOTH}>oQ4SwIgD)C*fByH4&TVbtIuqf_vJevsJZxE!u+ZnI z*-9`^uY_G&Y8E4RUHL)26qstx=2-0ASU1v_adePF_lz84B%67n#z@#Nbx;mZ1s$9H%*cWE@zwDciAa|U!ZbK)C%w0nbI^OusG+q^bqs$zSXu1bgIgP3^~M zLOKVFVC13-v=ocyyEgbOG0OCXakA_Izo+w5tG^ZF9qu5Qp(-eHo^Mv&)vehX$oiGVlft*XZO$SX5Hd2eE6tuA=O5 z&yLZd00KTDv}vKAlp85#s-j6oby8oenj=)l6gtHpASiBkIsu5w@5r*|Cot3ls!?r1 zAW%nbzWO0Sb#$lcx2z)GCY?kF9bF*c-K)%FB&K0K~a)StARMdWO0=svV|Rf<1;e1t!~+~ zY|u+;UW(?BS{ZlMjrpp>-Zjq)y%=qtX8=|tR7#=1io*P_=dj6%v46a^YrLqm+3X|> zdcVp2bH<0LwdiB;R1o0{>?n8)su?d*&b~!MLO`Vz2?ZQaNkC1$qo!j>SaAmeJPuKi zr0F!^kSqJU2=_|I!z&d}L_-GfYHKMmew^>qxMPwm@UR4-wrUrI2dZLH1C-?f&cWyz z+EYPuSiX&~s;tM11cO{#K^+3;c8N~Pzaf-mJO1fE2I3Lmck!jqiYmlX_8$nxAt$X`E!^2U1Wr5??M7)fDpeRud028 z#(QWC?m=LeCqUr%?9Y;x<3hHu$;E?onfjxr{NyLi`g9&kG;(C}NJ&_e*aB4DNd!AC zqkNU9KRalF8dYHr|K@~}2YLWX@^PUoI&svasg%%7(#V_m`k+iG=KWc>yD04u*NTv) zzS`0wK1F2Lq5;C$m*yWeg(WP_VqS1J&OZ<&f{*y=C|aa!H<1M#Q6Qqhr;1$5#{@p@ z_v{mbk9iM@n*gI`lgu!OfJGx&4q>TiZUorDfq*>*MYI%fh8_#9jHfbs2bM-aJUt{Z z4-R6`_x009A}0JI!e1+gF*&dRh2Lv4T-%JhGILK&TdQg0UCa6|4Bj&1MD(XEL%t_O zy!c{1C@aHACs1?UDsjl~DBvUQC45O~xx{7+TY|3?mgNW-5~c3^rVmHNo*-YRx-*}$ z2;ZET`zlei)n(whNtdYZ+3w^w8>PK{K8_5cv81pGMtedgeygZf&N=PwGECs2 zwHLNi`dLbs&Rztp%q1cp<0CMD2(2ORTiP=OACedyDX-!O1Ra45 zy1D-=&w^=+$_a4%aw*O3O}XXQQ#HEFPGQKOFYP8;A zazwaDwBDZz7^YR42{oeMwAg59h{QPQa@QyTFPOx-^axF*>+JV3}5u`i0t5c3SZ1C1jXIFHXs zenDJ1R!SoT3*FFmtI)xB!=}t1GvkdCriDuzR1br8N&|)Sme9xs310!Qfo)Xg#yMX| zu(JmWO=Y$o4o9T8W4^EJ8o6Ik_?IAUzZos;1E1mlQ+7ntIcNVnAYwZ(rcv+{ibAS*7xo(aDqSx)p~N@ayKB!pCn1c7y7gk}&H zKPNj&v21ohN%kn9=*xt9mk*b~EHMPTm{=k}CJ=%C#wCuD@<3lH3&yrSlTv|UR z2RGe}UcwoJiCqmh8aku&VRz2hmYuC5Dr|qwDAy@($Vh3(9ru|bi&JO!kQog9Qc=vH zeSo0=GvH6kTv1FeC2o{U5pYRywk3*_vBEl6T-Tp_Awo|R_7n1BP8mY~cDs|j5a+%$ zgKECYatcGX947u$^2|MO8-Ia0##YEz<9RtFmLgCY;G6y}raUpH zi$4(K+gHKK)%9UkSUMo3abC~diZNvGCdEU^qv0J(HYl^Z{?rEDET%kh4q!(jl6Kq~ zvz@n-;{v&m`3#cvhuO?v58#i(PRa!|H2!uciSn4!_Zaiyb*HPH-E|F)*EWZxHLi$y zqH>KS@{euNNEMBdN8e2}$pFey?E?PSxAgs_31|LMsmW(IJ;gre?TZSvhY8h0LmArQ z{!f6x3&lIhO=+a0B#=YjEu}vew=|N*&RVT(q5Xc)0&2nU27t z7J6y?IaC0lC+`1~vYu=?M=P{DnOxM`hof-biMPLtpVRp?3VSK#S^LmucnNm76r;M) zH;<0A|9pqjQbR};Ll)0thX;Czzi{zq75DNBwi?ud>)Kc*y2)*j;D#K6IcmVj9Xj*p z^OHX*GC?W;H!NL*AaX#x5Zv)U8qd_OfblF0B)Tj-P?Rw$Sbw5qiWPMB=lTyAM!V_K+{@jk?{Ad}vLU2rx0h`dII%H$6^ak_}C6WU0Ppm;$ zEJ2i-)_yDvGj>Ir7AY?n$VdkHJLAm}9Jyn-;C?V@nnq4Wkb)_a!;#W0UF=*O&sI2c z9_bKF2t=;y=!|3HvUQ4w_mBPi_&9ftmR<_tqH zfALED?1czf#zKyv2ra7I!V&uQ3eEpW@i=tK2L8#H%K_tW7>jkvfz-j{i=?uI>G?_D>1V(vbm5cr#qNITaqaKNcNz^nM!yp&g z9+En3P&UDVQob<>RVloh**{s_FeMmQ(|ky-Hi_ulQ+9@XWruOk|G-cP>yvQTFF>^> z28icXx!xd!7d*?#So~8$-mU~u*or@+gM~m%I@SlCy`nr2?#SJ`Iayh&JxL4`B5hjD zzIbuO<<|!iWYpQcQ5x3rgg&B#NF$6ak4jV{=&(dd<%3pl+;I+_aL{a&DWViRU$Ln& z?i;;4@^~1>g*#)Psq25X#-d#D4YtZ{YU4_m!aK>tj6PX~$h%0ebO%RQNc>_X2|`@u zEAju3l?+?LAP|(Gs-mnuH6_c*+(`VUA?zN3Fz4p44Tt}*dnWQ=7d2HNtwIrV(2_@; z#WyRN#50vdtnAheSo6?G(SwgtWTF^=$ZMt_1#D;Y?z+b2f|sTYFgtA3)dGJk z&n2!^<8eLfpcy&E(=ypv9Na6E(^4YWC-Z-a0yOVB>z)UWfW=AmVR_yDitDg*zd(VQ zWca|^pun#COJt~p0BxAednjU4+@m3Z%K$FwuE40V@bfk5*)zKFOuq}4?;h)76Y{9nbJT9^74BEpsg% zv?v*X0-q#mrG9V%6O%gLL%|?&?1zDolnPl+z|;s`Pm2zINo5=*Ley!BZ8ETq=(0_9Yjdb74o=UB0T~4bwL0eoI?&h z@;obfT%NvZ9|E|=VtWy#=3QpSk8pf}>F3NE2>S&+i@vVulz)+eCh>?KkqtONtq zh|n_fQ-fZlD-i4q*uZgKHz0vK?K8>$B zmWKNjCY(@iLr{=VLTjCGmJJg@h=dbE&s^i{edXrx2P7W8?b6^+e4lYVgbynWA$X{1VVY0L=dQFQ(d>rf?mlZ(>9&~n}A4J6j2_{*f zK&Ar}u8xQbe~P}hR(>1~7DLn+T7X2BE{5UEW%y<&(x_EN7Jkkcfv0Sxgv*wh9K9qM zIPiS2CvXyQd_=Pm{8;0Ah=I1eLpII3I6c(0s&X;p^Ki8??lofDf&p21df+uR1q1_X zkxFI*N!364t0TDMpoPM#F*@}H6V4l+gHU@nMh=Vj z4%Ck$qk@tvdl4`Vf3Zlxf^XUPeI-Mm6Uh|>p3QCi8a_gNuweC4l=u267$fYi&k!P3 zXlewU34QJT#C^e??6)@q|Iv{#$XkWp^gMnt#)PMXAx`TX{p8EN&=N-YB3YM($LoQ= zbi_st^b#d@U`HMPLFe42|69`oBJFsfFMY1Rb94+`K0fC{M6B9HQ;E=EsK@&6Vk+)b z1Zt6|LGe#efV7x;rpRv70iD-?rr^{4b9j=uG3}qf0SOaf1A}`Me_UiojP}!S$W)x) z*KsJ9MpT#MwCQDQZ1iwUTWcs z$*~NP9E_Yh=SOM!S@*e6xaAkqE&^(f2n1@#pJ=Opyv1`zy#V$X+f6po;-$fM7Ear*P3!E}F_kQ#nsu@_*7)lpolVSG`l4`1_6i zUH?+|WN-Q!Q|a;jy?r{y%P+LEbE7|HOAc=Tc<0@mJC1J}VO`WdCfl8Fs>%(@MemL% z$PBbNga4gx<2A9j_HN#4+B-L(9Z<3&ntujzR%iJ;^IF%}c(c^to6Q~4n-#iFWSaKQ z417@~bx3cv=3v%r?^7#-Z#HcxZ)W^;%jZ{i1PW+M+?7M9uq)sDtUS;eUEg8cjL|ULu3LL>8It4Y4=%eiJv8axV);gaH;vY%MP>wzb|ICHe|Y5QF@dDmDE-bEfHCAvIeXZmGn zUmo8H!eDyy1H1IK-UAc$d$R21Lwej|FYYo;&pMb{tDl(cnOn5Syhj~ZRkTdFp{~31 zA6L&mY%I;ytty$fJWty^X(XO-?3(DPn6c%K(v-%n-$|~1tYm!m?BBF}_rMJ0p{HWM zmH1%i7q;Z3mVfPiE4}h}9mkIjW!IK+Kxa=mXfw;Mywfm_O{FKze?6Mgy75Ert4)(q zeXIWwpEvta!^iXA+UUQxk0I-N>cTlAhpw)ty!$Bb9EBN;*y7q;U^=*9vpar)e~jza z1Jl4tDW*3p$(|SUu1*~S1)}_OO&qQ=_RW}MoVb9E(70ov`^(XC>y|nPI{u@suYThk zS^4Hh|NZsO%gVFfwD5l2;r36#Us@;o-u6BdA@x7g>IVu*^wGhI zzYPQR^qz&i4RcJ&ZcHMMbH9=+?gp+W?dL}S8^!GMbXco9A4&Vo01NQpQ$;zKLYu2> z`Qw_ci%#A6pnk_1?MI!BL-F!EaJls|bKgDCZu3n$CgUpX|M;`_-aoE^-?-wnkIe&* zSPlC&XCc6~?#7P%;hfSN$ZV8*hT{HKF#?6Z+ngc28>h@hJ#D!~rokX_81%?Njj!*4c z81rS{W<^H~HaRc5?88FJRDbg|9^#y((e6_7w^tWFfM3Ijyb)wPNJ1H2iK4_r_O8PU9NGSpOs+RXWzQ~#}L-Ve5AyG zXm%c_*^b(ZyMVlPxQ1-=z3J*TS4y&H;~qkO1MebByDDXe^EdQm7?1sgdTbY04#nI2 zq2DN7-uHshs7dAfZ<$>^LwS~;7vnCP!1cXG=UElMZnzsMaP>m2%4W)2fSVI)=>q#A>Qxa@Bj~d!D z4t3w{Y1;#bli@&S*Bb%w%J1M6UCI7wMIZW~9Nq};{T#ga2ICrj$>@B`7z`}v{hi6T zcXjLY@(sIm-B;nwHMrkm3|wgcv34QHbRIt`H>B*y+UJ`$DY+#|--f$c7}t20;VZrw zQH|~QM#+WU1?{&OkNub@u?_*y;(z0vuHvq}=?SQcDk*prXIXC6!5)k|b?E03K9^WhzZ%qdyl&!{mEC1{W6jOI#o8OIP5r_@-mbO~Ezvqn~!VCt1G(?7k9uqY1 zxT)TcPbGd5iIY9$vGMQlf>T_J#{Q+{m5CV~a8Yi{N6RG%|Dh;F=bKO2H^ui>W(QhI0>55IVR9R|Ed#d#}I2vgKJ;#(fs zw;Uc_&bj%@J#{#!GnCTg-dq#;D}+IXVUY31;LkY3aq-&2>h7C4JN?WB=p7O&(qbj$ zHY_EUUV;`qx;mFW3_(^MRu8|ixqfMkzhT0Bae{62+op8x#8o^D6vl5~u(k!Zh0(tg znHqG*H6bjGR4+=_)?>}`+D?P-5!v&8U4`;87$=ft8d$l+Px6&9G=?{WI{24Y~Sw7(Cn)Bo0mA7SnIj#lx zR;~TR8OnR%DWRg}y%f=37NyD=16(>dLve8|dCdDs#l&s<_a|kqQEnUxEL?T!p(ea@ zR27yOS1f3b6s1a7@f6H-ir1TE%-iGRhk7<%#>=c}i0ZZ&kESP`oP_80Z@>kOZ>r!> zS%%jv750o^34m^k`N_mj=oICNmG2EH`eLSj<9=&blb~oo*lPIYyf0=Z{hHIFarspH zn}E4?{_AB`GMBz*{mLj@yoqd3Ze_ltir33>PfJhgKY$}cgxZT3@U%vdBcTva+_KO< z;GSB{T#r4$TY{D9p%9J#q<3vB>B=wOrhb0Czms1*+uACEOGzNbSJQE5dKa zoCXiSl2?V4-|Y9^rN`wIZtIh|X}$Q3RmHup)oRF}RTFmuRn8gkAG~pq<2ux&t&bxKa1Y0l3je=%1=vmu?5Gs2eS68yjsa?$KhxmMq zNKyGcmc+Giw!G+}38smggOPI)MagwtJ%7<47F5~12R;{U7i69MYlh+-Z|F1SJw7pZ zT0O$RshmfRhmYw0J+Y+5aQZS$fTwxe1nv;_eqyTIRnQFIQ|U^I z+wF^81hDTplCa|q0Up+NJc`lvyC}rmD7cb_<3xo3Bd8yAfS*)G{T(1sK|XF|JFtH9 z%+6)Tg>i^ZFWKhirsbTPHr^JM);5yKq+zE0Lqw(J5;g(6G7p;%(rS52kP9&-XI)I| z&*af?M{4)g=7r;UWrhpi>v<->V&~eS6gd;J?JxqeCPX9umAm@7zc2wp_TX+wDlC5% zWvuQxUXCM=y}?+9CoAh^;;Tix*T|Wgz4{A5xNuG8<7ZuG;=go%_chVr2u3zCL=&Ty zJsYi=H>tsHjvSnHo(@X2BX`C#!D+L`6=&scQhoYPCRaEd)BVj~4}G=M~t7WlRIJ z*Yz05$M^_!DH z$UelC(>E$F0}UBSFY*HLP8{v=sXmWD4cV=mkb(NRXND6g?M(noKk+ZW@q#7i8o=Ti2}U*Kb`mQbm_i3urv3k!ROPyBmzFT0YQUoBc#% zg|nxpvJFFs9F=8lJ1p0{5Oxoj__@gcQB1HEo8Nt%^04}_)(ENzt_Ymt?U)=3#7opV z%FakZxB`w$Qls8wY;$^OMfjn#mIXlLP?Ut_~jkn zN>Mk=`0d(`q;Ku&>zN79l=^{%Ku7;Ypj-2~&T_n!Q48}^c2%wYW8}W($N_PE6`%p1wco$`w58xKeYpLtR+b3MTHdq1Fw+eF|8^7{);%q8 z7r~#mZE=|w9yVK`%ix_})@o(%D=vJ`Y_zMUe%bJe-4kzO;HbY9e?Iof45PqYV(7l2o zhdtB=t`0+4P}nZHvBu*g+eN~SyR|xcu}XWntzT2~U?%6pD4{(bwkPI#W?u#-rTn(> z2k48{o7IeyhQzqTaB;2p+Y`lAdEm5eEaG8kub)_pr#Wn{XDa9I0buyA+?Cn)RqVcZ z?Q!N~T;HSWmK@Pf)R0O)z+?(J>mgrH%^33Q2G3<$?i4N>0Vzi)?LS2xPt999!Kwd3 zvQ>9WCLni_*lTUd_Px9|uCC*6!ivs<f_@9WOIAL((;Bl5+}mBxKs0J$xdrG%2Cc$#cAPqhX{K)Zw6=2dXK6Al*)>X~^v z!!M1~fWI$Bc9pX(&fSuW1*u$Z>)8wkqKq0!PJ06nN`UbdQ^~3SK2t#wpg8d;b4fU2 zk(*f;>m$%Q;1?tVJ|3Tse7!9bTbp%M|L+(E&TG7pPO>1Z-p1+EchSv(^e;&Ks_4eF zpUVwvgm~}=Qsb{pDc?&!GSx8_LOJ=Q!6;%S^@Ea<$p-JF>XqZ?{CJJD+&N5NojCCu zj0NYU&&3tN3iQC|@$yD81X3L|@J2ZLEvw#RfV|U zL3%eG)?;s`Z+f;>p|wGH_9O4Oi_#`_$^a+N1m#_10E{mJJD z^1hB9(m7bOxhgYh+))<4Nh+MmrBcM9BTlV2(O&sJqug}=jZ&^6@#KxUN35(5=LE5X z^2E4t>fMgMluU2$f`Pq6U&9Bg*-5v+9b{p5I#6A!%Rsh_ADOR{b=?(3`j6={vm%Hb z#)I5o#g5qmL6BAIdBn6Nx#?gfQ80dY;Bf0ReemF|aunRA|L({==hHc1IKACjd6OhC zX-nD{z&=cl2V(GW?;ngJ0>d4uiTu~$OkQrIYiGoXJB^A5Qlnv=thEMN(>0P#z&G!r zRMc1z_Qy`$5TM#@hq5QtfAVQkBBQG2Rvf-ZjvTTTDPE7{4Zf_=XBv(_L4^obT4E)2 z#;g`jc5$@k-8<^4Uh#yOX|A+@o3T2!I#65+DpK_2ewr9 zajEL?%6A3#5!e(O096VY7dbyPXh(ybq<;41P(EZ}V@{v}ToI6b9M^Wg#d}woEGWls zr6ms+Dw$7AbU<(Lx7t+qYJ#Rp@A$Yw1RErHdDi>3;BJCgs;dQxNTkAj+LKsVjn0RT z6qrWC;7&StmGZqI&~O_Rt*AX_CIJP&u#IKK-ov#7ui63FbZ!vcI{8TaUkxyO?{-j3 zp8ATi;~TW~7ivv*-K7yjd%w|sQh%Q`E$N@4E$nc0sLOz@867D?QQ8~ji6uq>s>{SY#H0E|PFbE)cQ za&Tan;UpiRkfssG`71%-^n~NWNPA?D%sQ?@HhFw=37 z5-d2CgA^921*9&PQ`_S5hcC(StewJIv#+7~?djrNn1!8_zEArRjs(4e2}(+G=*LG4 zu(8H(5A4^^$IKk26S827o)}%_-vB}TVQ7eO1hEU2mr+E#T1^F|ba#v4*pG{9Q5=GN zMuIo#Qq2d)UsLnP5PJeTmaphsS)(MiYz?x9vI-x}9RVRubg~T_>SN(B zwc=M7vc;Xcp-`nM!a{)Mu{>=&+zXc3Rg=w2m|-Z4TIXidHz=c_Z{vOG*dk9pMKmgq zxkb`MC_u9375h$%(d5-ay$8!}cQV=7nD(O!sZc1_4?#U=t|FVe*X9JFiZW}U|wdwn^eq-&tDgizGsbNg%rl2MG!LiK87YDl_%Bwr42ry;%-{^OcYCC>k&27Cqb)|*i5BA!( z0+7J>+lN8e6~6OiLh#WaxZ++If=YJ6V%9!Y4_#_bjz+#g3L^@_8t_Z7iuesukV3`j zn{A)f7R+hrNqFt^yHrvE0k;)8AtW1t#mLNMZHbUa`NNP@4sC@8vr!xzUG)W#X`$+} zOnWGTHSY;(saE&pG1eAXI?sY~=@2}!z7@HSz-c`VgM^^3IM_7u@94n_2=jx~NCsBzxoX|B-bGX*a@=`>hb@ zEU@_6*V5m^U6}c-nTDPxfcre&^njkqL$%Ljo##iaTlgnR4PR-(3?1vg&fnOyvs^RH znfS(vyJEh_u9NBo)2}Pa|4IC-z3J!3Mk3)v-;0&2n0=^nJvkQU7jPVj)+t?){! z1mfN(lY<&eV?PRghN5Mj8IUI7_*HP@1Ij9Y4A=FRUHYh)<0BrNy<^Scx69Dg)?k{Q zX#cF(vm^e|;6vzM`Y-bbXWsqcOL6YN>r$f8!-OnY`R#zOlGyE=>mdaRTrs7T#TS|u zP~UarQf)Q@e97(A9KN0rHrh?RTC@1C3z+eV>PBN|8>6T8gN(UU+Hr1(TH>5PE9o@v z4DZ?e(p%i~v^iIb^C!*K!A(_eeh!+|H>^z?lvVzxoZkvqjU(=0&%I|R`N|Z`=E5Q< z<7?y3{QBw_(+YoVgR*n`{!u~}p}H98(S%sNMTHQi z$ggruT-GY~RGL0KzSA530gx|%ZHvAwa0dHtD>;l&--f+yn4XvL?*19d`nSf9^&WDy zos|R%Zsr-}ihmA!?^H}j&E=|^+ciSQl8vnNu8pOl6W3CsE;!eC81(Es{4c67kJoj$ z=Oj6Eo0FCYh|8T*G)z(V1Aei9!MDv>M<^_oKPh*++>4pYr&+j*{fAU%Kp;yb+bhDq;_UXwj5^0e{aXL8xKj&o++HAKd)1 z6T5n!;p@#%%bs6;8JTYSsv+iXlx<^-L9G~TLRq6)EMwdyc98N%J*#phWe8-RdK6~` zHlQ%z{EdxEgt`h7(M3)a?J5}i7(oyuvQJHmvl&p8o~N;3PC*e(ZoUU_Ea(dQIXjhZmHC8*yL8HizbW4F%4559za&l3j(wv`=d06?D?pfzO zy=(1I@Lk|C5Z>bfr_^=)i!-+CZfZN)NtKjZ{W}(*8i5K_yAy1Qm^*70-&ztN@!OOLa}X`0805n_Y1$8#h3(=7Aq=s9HA6 z;N85ub45w=>sxohPo~|N!k`?);DGhJnSqvgzce?MR`jf&t`TOI zRiRSUn#mi%yV)q)JXaZjbvNQs5n^d1Rfd7=BX*@|81S7WA!X6TcqqdqkuE=M{2dAO zK;@0>EMEKy9Sbu@P)Puk5}lcj0=484hZwKKDrM!~VW|$T(L2-EHXmP;@!zjv-*zru z7rk=l`ix-N#{c=~T~)lp*=4r{yEH@eh4R((wLjT?Fv0q7KM+Novi#BSZpY1_lZ^hv zfdLe%LkwTQ;N-r_uV=caAsnLS-}xoRCCpInOm4d^PS`mD`6F*?iTtIA)1`A?#mdm# zl9>qyHhSRRV{b+e>1bB+7J%Xz1}V||2Qzd{H)zPPkr_b>FH%b;wdeU#(fuh8e4u|* z+l(s1IxJW);G6YUXI-BC;9ELlu$eC8M%br-ePAjz_JBszU_68{ zNQ*`4$PAgvukx*ZfX8RO?_UGbvyiQ9^e3F~$l55T|Gaz<>(DdzMkIHsq=!5OvbwQF zwaAi=b@a|B(A%Ko!3B!6lOQ{r(U9jrS@X{cwhhX4KYUFYB_=f23}(A^(VC|Yjw0VH zk|%gpTMxO0AU>a4aqOPnuTgm8+1ZpcjMOIUiTsE-Tb`_gJoLRYVdQ&%MsnVK+@T(JSZ5KrCYwyXpvXw zljoR#$#Gy<9->Q8ZW>CW_X^);RJR;V?wRrJV8ZPe<{JLm8$WdjT_EEG)qzo^C~fC^ zT@M!~AA;Mvgh(DfT`gLx(0E9#RO3YMfGY45IDnjWXhi~gS}Xkrl&hCh0x`#WVk}lJ zV6*PH$UDB|A9Y;^V>8k3dNT(O)uNs8`6?7+l2v}gIc zinP0X%B4Lt!!81|9q*4s{6WXwlg$LD<#(j)n7a?7AmF?q!}9N-l;#SVe8kjRdz|3@ zsLuW)LP52g%lf#no&w-#u7Q*gM?pbc*!wklGMr^d3+O&#hSEgFkqWF9$PvI7K^8?J zJ^QL`OnilCp?C%-PT5!%KU%emr1r`mkq{hW%P-wCZ9Qq~_5yNYfEQTlzXT#A$v*G@=lB@pNn+WBfiJTg*GsSgcM4=5h^ABOm}*i#;G zRr)7HPqdo?D=MvW=5@FMhYp(?h&=#8puv0?qo~jXgy1NO-@?#Bq@se5A8io)=vk{SX_a3QiK(GfYD!A`hc>mjtNl*N87jprmbQ2#qd>icakc z?j)~#7Chmf_VBG^%Xt%~(__~unP{3(y5lWAKW?KfI*rNXb8W|3jM|I42Klgeo-iBkG|% z0$Y2^gOY>;FoKD!A?+U1F&kpWD~6%pZnI7VQ@9WKuTMw`%~!p>Dciy#d+%ym46q>i zlpfZy)V`a5{ZM%^aUu^hW?Xizd0ZcF_uLV@SDQ^*g2GrQFzJM@QhNe9kV1R8#ZhWDi7*9 z-~k8=7C7HtYFW%K@)^n+Vgj}+d+((c;S6q2CZVqBqLz)-cox)q^+TwbP_06CM<9qV z;JDeMOj0pX$F@01N~E4cRX0zlMR80{ZrnDHHCOuFLgmv5c2G=F^!mijs*+3PDn)L` z6N=z~9={D;$TNRIHeO%@60EC)%`ivakQ)vJl((s;8kbSN3b%B>`|zgi^P7eTtlN7p z?jerJJ+f<3PWM0H&T|aH*gL`7v`%K-qbFW8=jYRm-#aYgSBF2KosvLZDf^j zuk<22`@rfjF+Wd!puH2L1yv!Y7D{)>6Z0-b2}0-z8uB?`e1?}RI<`pfTx7aJ<-t)B znK+NRgIj;>4>9>SXY{_1vG<-h_kR@C?k>=}===<)Y78s1t)p>KboPpx?9o_D%PEWE zwYawFJrj9(aMapK3!aPdH^z)?d?F?HT3z>zx(|76duH=Tm$f_7%{}RL9Ur|oru_3M z6=P!ZPu!DZ@Ov!^2;!rrUv7Ii#A!N|eQlNPZOP-a?@$-kmtKcCV(Tl~@z}$-fHP&zjKmKK|D>92xE5j1=I}I}!ssC43etMf=H6+)UG^(^W5_I?( za%R+wZx<0jTyK>Y{h8p5+WRP6L!iUJ1epWhqsV0Pw5fszNsSa~gc0i2S*Bu5k-1RG z;T77S{DANP{byq&eIhgI0F3l)a*=|PE>Wk0*E~nfF3(=&$~%NBuDN(S$CVG$U@6Ue zqTtGtdza~cKW^UkrP@~B+MRP`SL~hyqdg(Bt9feLOWcd&_@zYMgz0ZJF4Ofco4la; z5@%U<*9|cL-H#2c+Hdym&+KmfmrBbk;vapriAQ>tEiEzB z*W}k*h9}$jL1uNTC4bfUK05}0t(91QOS0(Utotw!?(Au=>!54zYg1!fl%S{1S3w)N zAUMjeIMb6=UUclpHWZmSF+s%nYt<$;zjPNJbGc3-&-qZ?5~&4{uY+-k@L)45kIe*g z>Z!1{)WE18-1LB^+`HeLn9(&hgBOX@!h31)v}s>M=VA!WLdWF(bv}Tan}&Ngo={`Q&Z;aq3(E}nID2Ma zamZio?v2a&MR!=+{*1p(&q!EAVVC%itACSXcs*`T+iDDidk zca83Iv?fofX%3u&S*O@_HtrW$P1zneAmEAsFH8j#JWFO-c6^jZFL$toV~|0{Ev(Cc_-=A6W(1qZ z5071j>-CJL=G_HeVx|4ZUJjj*@Shehu^4E-Cmb?B8vJPUUFR-I>SUT3uN4o!T|WAS@FFY5Ub4kceZ^-hx|XP!1bt+k-?L_wcL zMq03K!d*HyyT%MQG?*nA0(6ADsHi$v&q#j6`7@2d_M%p8w}!&*3i#W5P^-8FZSyvI z4}t$E=A4IppZg3b^9R)|DWmX>eo;DW_`46@+IynV|EsjGcc=Xh&e+^aZM(sUwX%#N zWXLoVa@cGzmRT?yZ7Y7L>!^U2$#JbV=1hNU(je-}ia$MNteI(c%!~_{$=kZ#i}|vd zy4RV8Q`XMc^_~P)3=B{yk5T72)K@y!ETX=F3>o^AR;dR>a*YGt5qC{s=`t29qiBhr^CCWxNKnneCjNCBr!+6V{W> z=H!L>WM`;LfXrR3t zirqhKuk_5*&||@&X~fs3U4{2DZY0t_X!Ras$Yt1Go_zWbb=fT|By8jslE5fiw@rl?o=P{}q z9j8}Ru?`DTQ2YYQXVe6eCq~AUl=c!OHX0^RP+>W_eT`={y>F#W_IEa&<>7|LLBfX$k!g^p7{ooI&l=8v;^#|}H=AVVC zdD`Z{ePrTZ9K%_ZG4$N1f0^tB=+eFET8K(ns~am^sLBGMFqh6(7S&QpXSP&VG#!-b zI^Y3Ih3-J^uaT)i^sUsKLDKHoo>2YO!I`@&A@3glO_G24WWnngI~+B7OJ1_Al%T|ohV z0m4FZ;nN5P}frV!Y1=1?BXq6FD`sT>S&5UlJ|Jy#j>46_cAh{}Uzc-4=YhN@Y;Gtc5|wHexN zw8EGl0kv?&i4Pa57;|Yu_ifgfQ;m+)=tg=1*HM%2p`zNZ7RbCl{q#ze2}Fv}pjpBf z*_Z;C;=L@VCZ@Ga%yy(27lk=%eGA^T{tVA2;AoKlu}X(I8)?92U-9~in#HFnAf7-v20aUE7SdN13JkLVMC)-jp$*is|`&q-$kYM7`!Kt1@@`Mt6`NX012#}^>_OC$E2ki9IS(NLIM*RtJ8_QGdX^7-<$NW!KWPfxQmDHG67 zFU0+kojY+)+{fy(8#j^TLB2O1sj=jF_9W{of^%_}H08Yo=1I&t4yi8>&jtD=Yy6|% zw)klD(_IwB$?$?ypQVePy{Z0>PZ88DB}!3B}+*jT*rSe8+E^*qE+rqOF^-=v>eP3Jrx55Is zR2uRM^d8#WE!q~BiwlkOVOVKHDwVWCFb8vDO~_-|BomV?EcOJE%rLQgSU_>twZ%Kr z;r%OXCG?ZevIv0e_n z?fbsp%;X~CZg*FAeV!m>X1@8p|M5HC_x=6;vK(A_MF@tc)hj1uFbGfyXxQ;>#f?Xi zb+z6OpwfXi08H!LZhem%!+wZ=^79`0N*Qd&6GgLHxRHFdZhtHyo%5_nEUIJ|MY@EL zTN0p6YV_i{)hfsoW7zkw`Qw=h(~#q^(*TOYR})aSNpV)zGGi{H#xc(QP}qEfbOy# zpkpM~NQdcXfWpncLAkqLhdE)iVZi`lZvz|7$l<%N`$b%l5d6^A$+j+`S^_v7Xc#vn28``c?-50 zK!qWT>7Wxoe=vGr9ifbjxp<%$TXT#HJJ8boWBpHHpk6gR1ED@;?d=n0Z9W<*GhTh7eFX0>U@v+&Qa5WJ9-ZQCGMp9F4R#RkS7dd#XaKohF7$ z)JO_NcrzKMFxJlh1#%!7k)Yja6%O+Zq8mk#3TMK=PR5<|s*4W;U48)etXjri)(1v6 z@qNr*TU~VE0TWjn4s=;a1OxvZ;h}!c`}ooi$2Sw`amg{udEdL`%Ki-uK=dF>-N_bU zZxb}8Ri>K5?21kE%$C0v{u--ZcF0ynqnw5+7KDJT6III!GB0aHLre85is*}9?gC|O zJHH0R1xm{wf)g(}oLL$Zy#R|Ju6I?%Qo@_GHYOdysHvS(LD!h{oWe&YWJs)>`>^L0 z-YHm`AM$atgkb1uHzpF{DV%^sF($T4JCV44!W+h)xv6MaC@7KOV$$y@sRYu|y_2`C zjK7oyonSJmY()5i(AyHo7WcX&SmeCJlpDSU3UVMNJH(QH$oXSIWaJ{VeErkl)B`Yx zKI1_LZeFbmQ8pg@x~*Yjs`4j4aLt@t?ib*t5lxEbLA(ya^eG?;#i?eB!Kt&1nzgf> zFb(rKV5R~aD$}#>;)~(U#C$o?%49ntgHB9V_Q>0VFpJ*IWn(i2;++xYFQwP+)ul+E z5%Zb&*|LexJ|90#sH>KUZlHfbx09Tvw;1(st586p20sN<7~K*KT~~*B9d-;+K{iw- z+Gk6oPDIOUw#m6zXJbK=i;#izTc`p;nFkk9kVlJ;RzE^0IYBbEJi{#ju`P12J3w32LJ^t2eckmmCX(*K_%I^e1z)^+IQ5--_0v@H4 zJRBp0$U68(;CESsF^}c&hl z;N7EOO8YNDurXL5_GpKM72f!pfUgWoAjmOyISMY%>PRhtQAP$7byw%UIvSF;P0q;Xo+BfI=b& zhGS&dNKa}WJRUfbZ!Z=_Kms6U)T{?E`*v+7d2Gh7%&eKZ3xZmPWlwfl^d@mT-9Ufd z+_nMDdE~Y{9))iNKFmCFrxVCw0cpHoNJ#cBBIEU#%$t-p`2>WGy zJ(f!-&ywpiUT4~1cGRauNhQ~SrN=arz?MZ{<>_e78WbbeJ3 zbZ=i~d@Bedccc@uRE)*JwR+R6l>?+27|T z>&5`}nsp))0?)LT_%`)G&k$V!S&ben?CRgFh#uw)RSCWJVHof4NS`@sgXs7~D^qlb z+X%Ql)j%+kmUa38TaV+@v@3q%kY2r5*&*XRhxy)De&=u{7Gfk?CSmdQ1LRLPij@{| ziZ3ju`N}LkoEbrwxA~*Z6W42Rk$wXMd8)vbL%Q$1RY$S8d^43l#`!;p+aIL9nbcai zu=q1A^V1I%e{=Tx_bS!{DF1+lXc&Xv`F4$1?>=D^QjilslYx6#u!_Sf*}<#;)gvt1 zKxG)~w;1oKTet)-)OtsuC)xZ2poly*#MwwRT3OqM4A!c~)zR7o!RbL}>sIXYss)_IMvX z`C>KC+hAuNmOD{^5o%=jU-(FuHqy9E83dI90|1DRZ30J`q=ZaktL&yJ+9*#e4s@I< zauPmld4+b)xJoJ)I@Im|bOV1wB=4K5(_x-2hP30O&0Tq9Ux3IMjG6iBd5%6eW<9XM zUcXzhF}Dqh{aL7DHo1(eNAdItS|s!g(vcuw9AbZ-8Joz1214qL(}>h*nglGMFCz*_ z2dX-*b|Uq?X{*LkNUDcr(u`R#inR#gmG z%y5BLtK>%c_?Nj+mWEPy;V(S`0gLX6k@0|ep^Zz6g)L`X$^Fb5Ch}upz|95N!UW7B zosSIj7dZ8C6gE*4;|=!CSIG?6q>bEZZ99VWZ51Lp{OY-PXf~wzqH8#wHqn)433b)Gzjf1> zx%cf@_R3pA8efH8rdXjD92@{wP&!3PR1T*K7B}`YXi+Af+8T@aV+^Y$6_8UKYazpB z)g<$17H@Irge>GH|}VT0LmfQ^%lj&0xfwhQ-fnloD?R=@6I73nsw$b+i1l@O6t;H1oD^?PRr6j zoSQU2P`YkXOnGodZy?n-E!`)$Q}g%AQ@)sb%F8Evii+=APXe+sQlQA#r6NmEyVt)$ z7Jf>l8=WhPtKCe|cen;ozsxQ&Ozn?U<+w)WWw=S-eiL0<<^y&HxiwNXfvmSo4)&rm z?qMcoVilzIBx{UmxWw6XNs&{&xC(m=fh&Cird9h)eCh!sHrx8?v~EEMBkxx$Z|DKH&)Chsi``6cI( zp;O6`A!XNgdzw20iJ9Z2%$j_c<8)hdeYG1saZSTWy@#coZxSQOYq`!2hQl`bNQH#j za|Nl42|s{AR!o=$ju-v7n8zZ2@5etwsYYT9fxao(|p zBlC7d<_klz>ITf|r@4sItztqYzgDK^a@_^372|i~Dy71a+3!cbj(3nXP4ZPFZ*sW~ zjCUXVqTq%}vJu7ZoZN$~_6Ix~)x!Le^-t^}fGRWVRi@g>*!=&UwY7g7PRE29k-u>` zXgqQ-@5)$9uF=#WbX!QepOIuJshg&#bSEV6$p|}aNj%fyT+}ZSiX}Cn*9&y3Ms#543 zn+1rl07L9m8W1$aa&pt%0_%=kFB!-#>mdae5oFzLREvmv3PAyjy3R_CLI=QGT*5Ta zR4b7;jcfmP+>vnM2DqKhF^%a|)Sh^$c7^${iX3^PU141igba9)kZ1_pPX^H=`=LXS0J*qaHjv`qF3L}? zN6PZe>5Jlp=lT@gDgq9Tnr$T?ChWycB{?^nii?t-6XZ^;N}ywyGUhstUO=`<5T#rx zRVSiju;78B16oTJ+|2R}vCi#gIn&wMw%_)Q?2XK9UvANaF)*gKL8x=fiu|?}C4VGdKq#R_P6R1{7*)nC;Rw^}ppLSc_*LTjm}^i& zkZ*EPnaPFl!uN5HTvW6{8FwnoWwDzi7F>jbl-ck@9^O!h&D9OV`26gKtIUcS!Y^XE z&grI%wStVP%2kMLev%Jws*a?9cp3Iq^cW+orDCyIp(oKUA2+HcM3=cJlIWuRai1`W zh=xpA68EeMpGZozT6cZrqY%gj_@#y+=qvRDa*hcSJW}EdUYap6I4xghu)ql=`=da= zl-nz%GeXlrQ@VNsmX4NnW=Kn> zQ-uAAl&!Orh8^#;)G=b#rGWfI5Yvr2b7$N;KynBJy{iCSH^3P}|0eLOQyM``c{Al` zwj8=>u>cpOrz3&fDE!w3r|ESPM54UNG7q^{4pR8vP-}>pWYi($Ctg(11WkNOpdqE9 z-GrYw)rvGIUV?3LawzytOJj*=s(C4DjL5CsiCbpffvhTv+jIjxQkB*Ovp=Wc9n}L! z7s|MwN+7bfY3w|J2CP$cvNlTAd)mhr+2zCIZtd?NMq@#6@Ga765jD?vnYNpXO{O@E zgW*r)(M&xjBc74YmXVs=aDXh5gyTaWB^N^9=yHksB@K=_h5f2_a}pR&DF?=7oT@+d zFoxCmuQ$_nIvI_=SRA4R!2$QOW6dMDFIz{*a!v&f@Ao=3c$EhIAJJ{ z0!LV{XU~Z}`={lpcIJMpeUb6TWwN5=t{B50hBL#m8s-!*z!72+#CYDJDTL*wR)DJ< zuF$Nfm3o%zpBNKeqPG|?x3TzbA{1>egeo26{elc$IRCWL-0pO8C`nQ@rsEG>rtE3C zaMGF~p>o*AO!ABe0mD<^tKFfZoXADwb=WQm4BE7}(l0DWFAa1uF_ z9Y!I{fBKzo{P!2Ob>u$;m`y>2Ny95;OUqvJ5)2Bg^v4BqSf3iBwD5TdpKL0}GLlUts zqyPcKZmi>?Iv+)D=c;OuwgpzyT-o>hcVDsRyxTA8QsifJ4%rRcQK{L;pEY{ z=YRhpJDev&+aIlWeV^Y|b{%75+t71O0i`X7W&YO~Xuq?W28HV2AOJJp&Na&)*%)T- zL;zh&jex&L5gku>zqW zG(zw%!@X}W4ox2yF1%%X0Yei0gGvsIqDU4qF%KJP_BCKFOn=k%6|->0U_=@S(;j-= zqIE|bm#|MEA4%1cYeLc=;w_O}%xx?wLFRX1xhhU*EiH7tSY4LTNZ6j{AYoXj2ry@x z!a?Ei79p=xKK0}?{HIEf9}bKR^-&P~-KTupaahVQK_<4n3hV81@r7L6sENJ>MFFaa zXR=V_3^T!vUTJf$;r`;@0tjT=g6+Z@KL)wd^QjbpR;j0Z3r6rj3Z)DZBb}gnlSZ#% z;-|2ow%G%VLZOkUXz%zivE^5`AH(&{aPU#YAt_@J-4b{dGRDQP+*7nimZ9|Xo=3c;|=J=JdMix@bf<_8MMr01BB5D>#N+DWrg=|#gL`M&_soSvLn zz?%`Om{MPG9`s=zGN^j05BnZw(cVG0&qRTg^SCn0;-x=i5J_XCq2gVb+)wlwtpbJ4 z3g3vJwN&!}HvihS=)f9^^Vbr|bfn^&;IKASSV?Se{BTB>~W2{=HqG8sY zO`XGr4NJAlJ(;CsOr(@$@mi+r&}2l33Q5n4hD7ifOkf79b$}#1MKJ1(s7mgx__O7* zWSVk+8MeTbb1aWVL~|u^6a}veKKitfNs(rUWGu^fOieL;R_tf|jQK>WAjCpq`qqU? zuwtciLSt%fz32dnlk|4%TxG3VM$w2dXqUpV2e-XBW`Q>u4Kkyoec%q%D62`a#_f?-rh&n>_AH5T=%^!)2SaS!PgpS-y{%DjE-{)sM=8$kJU{0B? zb`=m16Y-*uGPY6@@bCx%Q&eiH8D$+e(@yRI?GDo|^Ba6~n8Z`$3*LgTN0XEi3d8ZxRFA&jwD-IrF+3j0YsFSX zpCRUM39T00kgA4r)a-<-DWw^NQfb!vk=d7FJ?VzDymJK4v3pwgF!`;M&W7#IlmE;U zlwX7YKyj-IR=l)iEJCsMZPb_Wk?xXkR@n4@y{Kus2p4IYzaDqkVHSrd-453swyPSK zCPFEAjH!=+1(VfK3?}+dhLXk`y$wV4w}f}tF)c{=6P==2vTfm?@=@xL$H*tID%ea! zCDq79dfEf~el|{_?*e@iaNx+E9{4OeT71S3_-jBa1^GmCQ@J#F$J2-0P6s++MM zB)Ixj6ZSo_bNjP>lDvdBf(%WdG?bw!m*rzvKg39JetRy8P=L=6Ls+N%Fg%Oo!uRrH zL@j3D2VDUxwloy>w}TftfBkKb=pi{sq4!#J|G9q}u|fW`k9xfOn(6VqeP8JCzT9W+ z|EF%l_Q$)DigkWD<>->TZ2l`cuG36gKN?<8Ri_3=AbIS6MN9JV!`q_&>s{BwaDqRx zZ*<#tM9()H&c1-eIhSFN1>So~jM!dHZGvy`=c7H6E@yoB1w~jrouP5rxkZzKX;n2f z=Aj0*7hZjp=i`2f$Nf@QqrvWZ6a8Gd!}_Z}*tT1$uw0;kfZ)-<132%xcZY69q=#HGNaZ;qN@N#5Q@( znk|8}i+7jXf6ur3XX3BHZ`uCnRD5Q5<&|i2^4r_dkz?)98NMku$D_yUuj^NG*am&K z*DW5$8S%42!?x%H9C=T0p~y4 z-aBUvyFc3Yo-TAAxbb3qq5X&EuVQ|9FgXYl*}lJPYsqCi3=l^bw#L18duqnn6X0vA zKA14=Z}{Yu^K~|$vF_E(ydST<9%byuH{F)lxqxFB^X$q`CJl8B+BxUR=&}0>>Wx?8 zV-wfgc8xOj-!~`RiVIJXan2QG% z)-Jj}xb5Ej_b4C$2gl=b=+;}S59C`NIzY(IA?<#(ak#SC&@7h!^R;{M z@U}ni%esIUHIg5TN!=7vx9!k`>KpBAja7LWO+O6`D)vR*5jP@>Q~zKo;+CdZ=-5Z?=|7x4ULaId15Y(_xknim%}()lh$4z7_sq+%h7eK z{`k(L$#+buzNln$Lb;=+b4%hcPd)hf`jLTzPx3F#*wgY<($y>M4OZvY@?{Gn=Gy&F z5gF(x3pY&caBh8b579XLF)SrwOE05qRY&fJ_tg`+GIx#<%f-Y{f*q`Eo6M;<2W&vJ^b`@L@HcM{Yfk_^Zzvuu>|`m4e-v@b6eFkJaz{`)B7Kz&CEX zV)^WRbd~%pFMfM!!?ij+=e7eYc5k2Ndiq10=1v>Z7}4t&_C38n6Exeh5f>B!bq_S8bG7)b|B@eJAD!^d714R`8dDll z+M@q4zAW=(+YNQM&G6@Le`~?mEmQQ)`&*Nrz}#Yr(JMF>zvOE({D-G_R{yaLE&tp9 z@izqx){UoeIOCTxxFMTn{3w4n?yl9iufn>2x?{sDS!0Ylr)G^QzPomLw+mh7TaZ=1 zD*KbOWlEn%B<$CzQ}R@D}8@nSJ3TojGI=?ENH*EY`o=})Q+D|E}Vbp(RFjD z|Hg5|UY=r{O>y77DDGTtAy8i$-84qG=#L(8V$NcmblC05LLad{`}=}+HezsSF<*4` zo)fQ*sCjq#hRJVD|H;JV#y2+Gm*(!ty0q&_jO2}uh;J@-=WHyfU4Qh+>uTOL($>wz z-^$u=O3u38n8g08^_!P;e}>nLQQ^@tCghvFwfz)$#l5sK`gQ*V^FAGaipu(j$0iYliRF>j!1HmByHY;MxzUK8?A!6vTGxwlo{GX2XC3>W zTZgpW5E^6*d`H6Y6LT~&uj0jIZ|Rc40ZD_qwIRO<#%}z^_L|F^KPaCK=Qd<=vS*0B zc}U#;w1vpc)qP3H`rk)Z<@|zoWu(j<6d2t0(mr3KGjQ5jdwgS3@UGUKd4LC(8sF*f4d=dX zyT8g_`ra*S9-TQbWyFbHI6-Yo;FjvpbDjGQ+d2*xU)eUNF8yXtG49`%X->4Oep#Hc zH+qMs@Nw(!jOEwm%>2IFvp=`}=*;$n`Of&J+NFi-GJf$Q`nB6`TQT#Az+lh#$eCH* zk0avNVAMNO9&USKPTA_*G92ZevTNq#l0WZ98+7ZYcedVYThsp1vXNz-*XHjZF-|jv<%kyZ~=o#1K%;`WrY<`8FH)$~Ak z){Rq7jVR4MU0*&sg00T)E?!sLqdRe6cW}7!2ccJf;QG^dFUohet#P(#inat|7O@|? z_kxL0SSS7&pRPYM5evfJ%+qGhWoe8D<9yNiO|=)s4JsLJME}UQW1lz61M>w_YD9Un z2e>gh8#!oysQI=#?evBgom+EH?^lMW4Q>9}&E_rtZLRCmgyWkR-ug~d^R8UuSfuN= zveEw>`RZ*4j1dR!pHlqj)wa$TlN+|A9Jl=rH+wicrEcqW6aKy1$+-Sxc(lXi?nfHZ zVXlm`qa0^?F2@eXyq<3`ZH<3(@bPQ!KDg`&`{)_|**nj%RE*>2Te;^ldoaNHZFQBl zmSt%}lV5m$*-wVLjBmNN{h{XO)pq~>1kWLu0AmUVW@N_oD>m#{hzVH!{LVuS1vlB# z{#21}J+}Q5<_<^8rqz`WN*U37@K%o3yl)kL>KoILe(8?3#^qVJ7AJm~onM|AReSf* zKRkg(_r{Uy=DyiJXPrT+mI CUpGns literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/burst-charges.png b/documentation/docs/public/images/operators/performance/burst-charges.png new file mode 100644 index 0000000000000000000000000000000000000000..9f0d583d5896b47c3cf38bae0483baff98e013b3 GIT binary patch literal 194950 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%0D%q&^yJSC*&s9y$HPN&uWn=I$ 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 aR98xhybt_Cms^Y~{1}T*9_=lxX#5XrWj=iX literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/capped-bandwidth.png b/documentation/docs/public/images/operators/performance/capped-bandwidth.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2f2383acb6f7298609d7a6ca2ed85424e7a028 GIT binary patch literal 62687 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 RT=2i>c?+UGdUoZT{|6D!EtmiR literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/popular-gw-probe.png b/documentation/docs/public/images/operators/performance/popular-gw-probe.png new file mode 100644 index 0000000000000000000000000000000000000000..2bc5e6f3dc1d53b69de86e726240615fe22b523d GIT binary patch literal 183948 zcmeEv3s{t8+W#mT6)CxHQXZJf%H1@l))WuG%Z8xj7nuPD=HF1GKSNPhgB<5 z*376-#&TOrKb_1)LGm{ksp(Gw=QRsre&r9eb-lAQh{_{mW|)x&M3PgWQk*q|E)@w0m{7ckFHf(#SUv}Q)ycEyEVU4J=(p_#{BWfLPO0P+^PJc3)vZA+~bR#Z*7hW zRE3qs-4b)Dt#q+j_*CS#9Yp4_UyNZn}7rK|c6XP)Ln`C}uswK3PLigUO> zSY-DmEIE~Y*XE>i^1Dj+-J(dU&NkLBhMD3c*1*MxZTWx z=9wH*_oj7wLfQe5!~HJ)h57eNR|lupO_JTw9reU`EvE_Y9g)evMTRAd&EgHmYPY-oBKwS94Z0DvQZvcWuvXu^hkN9{hPJNk&a-Y=C%n`D zCv5PKe1LZ6)f4)O8znRZEBMF9Zf$5=By@Z!=GBhBk{dg0b>qRq*JfSRn9oFU*IS$+ zH(RIdw+qYL3ekYwX1a&FZwROex9dWB4H)c9{w-|I@bod!Y}U)BB_ZOR78*7iJjU<> zO!NKfWHee29QY4wAvgc#ND$Cgc8QSfQb(Tl88$ceSfI0Pk}Ayb(*D%=%B+v)>#OD8 zIwIFtW`uvT*R^|A8ib*EyZ`0x(S=)Hi=xw+x}y{`FxGF@`Z>wf8Em%@6YvaFE3Fa0}pnXv9O zCw(J^AF^9Z$f|kM7T?{t@9;I-hb(_TzveKe>EWM*G(Wv4xMkr}s-Xw3*qB%3vl~TI z*%49U(g#KFHhpPTTV9HJ_u_%}i$`>$e)C{7TX`a}yy@cZgT-%$iT=1I+iO5c@T8aD zxt@Axf7-D3Pjas@?6D=qX1(IJ65IXhW=TklWxC}3j+7?m@y(M*sv~!pzbs6dd#mc# zZlzch;d}c+E^+1JL}~Zc{}$C(2mPh-OEMR`qPCn!t(gnt zWut?0PX@g#{Vfm0ybNpZUY!k>7c3K%!==iL`xmLMy%*gmF}&n56+J3C*7oVfonL`t zn|x%}qMFFHAr+u9?pKK`7nuI*t=yEGK{D?|9nroUcu6un_igGwtRoyqUTpFW?L)wuo<(0I>_{qWPyG<}(JPmJ!uf=4oQxwu2^W0a}QcUVLGu6IrU z${7S7ana^8Ch?NDllI%ypZ~>c(eHhcW0IFvMM%fVHpUh-SwEN`Q&=jWwC$uD86v*O z0dyVd{+(NRrrO3dwuY)kFl7hpR-{)K>i) z-KV0~B#%!cm;11A`F^|dHMcJho^ARveWb6jJbr;IyxoJGy@cfZYecpQT>8?;&-S{~ zK2=8o9k_#k7`t&M_g?y#wq3w+vTfIqN08(9Jl_3EGZR$m`#g4%?Q?NKcE0lx)4GH) z3sJ{=4TF`NAD6EbCD`)hRfV#4vElD&S#F@v6-PA|olTz+&8lCDwATTT;_o%<3FF_0 z%-QRTeOQ>G8=Vr@ukbB*`+Dd-+%UQEgN)+l==hfX_0!RUgYCJKzG2?%GbB@p`hs?{ ztaXO&(h}3((>7ao>Qja~_Eyl`xK{?~5PLagR{z)vKV7)R)qFm~WBUD!Azx>D3|_ib z7r_Ixe9td&dA;C+n{czAjKpaFIf0jQqxXx?_wt5juDbV!X7M(3KJvdms&tbG?t$J8 z&`%k-Ie+%x4UL2w=C#FO*NF@Oc%fxOSW=nsu3qZOX~3cn*{&yCgMjqpH%gU}<D5*wIT)9+SKG{rJ-hxmnLX=pM7>UBBP`m5`g?YgO(OcTKW%q6IE8 z9pxc4Z(JW;?7|E1%5SHO(z_Q${1qLBuc7(S<(pG3E9>!n6F z@N3MSZkxTaG4P`)dKl%#9G8SIQwZ%_(=OyLjBLz{zr3L(qG!17pUh14KrW-%n}tnJ zSjHP`qv~2^xQO3IhSKWejhD2T!?T2Z4bL0dkop;uT-LYAe)c-^ln8JAO6{HQ^1 zTp4`H&64-J!V2S(8`l+UZ>iIZau2A3(;G7Z@c9>+xyr4&B`Ymou90VDr+w!Mvpj2~ z?s&p7)plM}u+>pyTd?D0pSSre_mOMzVIXC*q*2SYjSqgCP$%tJRmAH(QI>pT7Pn=R zNpIFFY`1zQ$-O4#!nD$zh40jaUu~Eeqnlgn9abfGe5=i3H>uNy`@O2i9{hgd4Vn!B zwmL36zdg(Bc}EX|at~yw;@4^4VGrc~5=G*|*P`qVm$GJ`4lF*uN${3>ve5E}{1tuO zDkf=8#EGxX6k1;l8~ROz61-~tQIA(0paybUaBq9Kd+`~DHOf^1{ixVQ7|4k9#<=>D zp6UJUPiF2`KZ8mg<-9(>_`b05ie5C+%+;%9mlv$;J3;Ou#9|*7ibgookU;p653fwc z!$?^>k>71}T@F1IyDeC{Z(Ko>RNZHcYy#21pSz4i$HrQ%!j#`}F>=?Z%Kj(L-SZW! zyL?UIJAsi`(sD~!SMyyCXGvi3oqYqBh0$yRILMzcr~&AmD{3OxA2-yi$8|-89>eRo z-4$lDF|#TI>hlWQboJBwEU3ra`uTuMA?PWA*s8H$d38{qOF-j(^s@mx7qu0k#|Z2r z7@R9A7KWewtW+mjK%wgURnG4eb!FYEPE^jm+T(dCcbBYtqU6JIo7G-~>X8Wid#&8`BCukjebJx>GE3v*LxPAGEhe5km!D72c5pBXtY z+LDYK(la|#B4~NvNq`B!n|lPoS)Aq5x?vR~14{x`=Qq`@Q29pBUfu7(q~S;`xp}03 zB(MMO9HLw`F>JiPuhnqNfA%t$rQpX=+;>7fQ(G7vA>@^3NnwDnD?o(f{gto}L6W*10GtCmh78BMMzZ-OuJdCkg9vvW)twT2}tJA2_R1U>ao{`xd)W&S1l?abCtpD zi3oHo0Q!9$3-=Uiy$S3s0!-9BFE$DHEgnN@|X*QE)j)h=WxCh|_5W`#gt@0w#20x0{(7UxT?= z9KWs~i1FAMMA+JOpcd>LwtKXwbCx)1vSaUiA+N~Kfk9VCJ5P38SB^!^>Ki0*Tb;k; z7FOTYuLb$83CSS{(=gn~@Z)z!Gpm7_$AS5qQ?bJQPD@rcCR+e)gi|$-0EJ7>F44 zhPp%A(twP1eccJqmEM`KQN~$f$J^b}qb;?$(J{KxIpO&oDTc>1_BqM^a%A;pv?Ip+ zo~R6YlL2Eg|1tM|x@Z^#x9qt3yg7!Dd|e`wFa7!~lCfb5^T)w$1sQ-C$I;UQV~?)~ zrS6NdTs+9uS-vl=PXAEMwMWH{EuzxcqSkdO@wm{P2tO7_<{}G7-Cx#R(IM@&j+EZP zrH?M5rb%f1{(zypqaNr$Y|**LFMt^Sh6VtHJ-MbYKFISY)u$aJPkgZ9+C6|~qT@&> z!oRC8jO#Us9l39-KUCX3-3{r7R7gLJ?E5%hnHAlRV5YeO(NZGQo@H?^IHX;V%pxv% zM2YK2Fa8Q^$koFOMp+77QZ@4mL@khihaf|6T{+HwVYon%CjU8rL4<7Z)T?_MHHCACOMAJ9<+{Iq1KifbE(N43)r29RuQoA_3{k za`j|O8sur}KyQwsA6^Ekq3Ql_zmz9UkgJDPc3{~9z)!jqz3TzyP0;)2{8h%`4wkllntq=#_PhMgSp&&fBBk0!~oa*Kz4 z_6@*T?jzr8$@ld9#R|zUZvvGeJFC-d4`>7?f|Tf`w3q@7_}-#)1c4+>!fbG_v7P(V zioH#xD#3h9_@|qu1>bXI78LaopBkT=F|yXW^|&{Qz<^m}CoqqOUPCHLo1Ze-&|k|{MU(_9&Ytg{Yc5*aFDhw_2kTA(RD z&Wy7)*!OAd)`o_LMFGnDuYS2)eCJF^gzj^_WzkD*EwL$cpUc+0w(4p;)JH6_A!=1u zd$Dc-RMqU7<uB-6h5?t7jYd`l)6jSg{sLJ@$k3(_p-rjfXq3 z53vm;$uOKH=|weZMS6aao-zh^%fI${J-E!R!jNGe)QnI!F=T-3^iDu~>&2|}C#cd0 zY8o!aY!30U(%|$*dg4EBd;)tuA;Y;!Vp+w!dFO`Rv2F8Ff8^UWvyvyw-`BE-d*SrR zAeq*=3MR_UJETd2i+I@=p)MrC+qnaf2IpT5aaVN!`atyUofi|#x8u8Ph?~glj|a;d zGckySNQJvdnk%ob$*5P3-OzOPQ`?yme4ONJ^64d&Pq#yH=i`HAYc;dv6X5cMrH-PF zOQm*L^>+C=y44d@x&nB$ga_5IdzRjroBOGdU#M*|ZQZKzd7ELaX3d#m-C?Q$bmhkM zI}1Ob1KnUkAhnS7IXybrc3qJI3=0K{vsvSL`fyuNW?=cfF~4O#LFnw96c@#1%C9tVWu+J9%-W$Es2u!F8`l4!H#w(JCq ziiGwZ(1LJLY|vj11g zm8YCn(0pZRL^ZZniK}&yC&ZNRf`1E>834f&hG64>Yr@Dyt>Y3hZWD6fFs*yIS+eW< zH=P-B(Pvf6-rYTkN-+G`>cvQcg*^Hq|XXDa4W$hyx8b`!< z%HDQ(I6gmgLlZ69LT(6v+M|qAQw=RdWm)y??QScO|1B`M%&>@m8Ts2D_X$7ALwl0w z+?xb8__kZ64@a}g&WL>R+Op?THnuCkHDt()#W^-(VJL*(tk~3e{!&zt5mvI@*(u^W z_j#V3c?I=D7=Bw>6u&G18S0L##%~rjG}(7UHC`c6>0gsM`K2iht$We&H7(>0SX@al z#%57nbE4{AO^dNvqzLK27GX-f%G|j@F%-K%*g$)3t*~_IUR9Yn3Or*Z&fIBT5)8Qy z*Sd(qdEL*@TxP>sGwG9i5Xk+LS(xPswjm2~$-Aa@oZdzA+T_DcSGQlyUTl_Vzgm^v zvM;Mi{Z16%BNr7xi`$+rYtJUfK&}sY#k_}aD|0L2Xd21&)Y3V1hPO|5EdUpq^uz38 z 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 literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/sad-users.png b/documentation/docs/public/images/operators/performance/sad-users.png new file mode 100644 index 0000000000000000000000000000000000000000..45140fa29b4d861e6dbd8083351db9c5a2938316 GIT binary patch literal 241501 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�eukLY<*{dLcO z+Gp*Kn}7S8XBT^_kEXd^UGiYc))!WkS0NpD{b9$12fy49^S9Njw+$$NvJ=@G3awbM zm>a)-9D(5fJrH3JI51a$ZQBES;y;!Y>JFg zqOmXkJFy2smrQLVk-Yel3LPg4CtwV%LbTqj>AS*&$@Zmcs)(A_LrNR7HRKEKuCoQA zXtuAO+}uCzX#RH}e)O)Gn-_lf=7qL5hxH-D)RkA=|D&GQ+%uH2}h##okO4lg*wGH?s;nf4Bh52&J*(*K@~GGp>W6Phv?6vhxpbe z?A*2XhS#D;R-F0$*g+MEM`mz_@wyx_Auf%5_#Y{ewHsqTb-CO)4OP}v05Do#RoYfF z{;D1{0TVHqt_=e1Q~V}pApv|iVq_CP09!{bEhH?&X4&-EB!Ob{hPupCtk5b{M>$c1 z0~vv3KGG->{f6ZABbrF*DQbBb9cO`7l%16HaiVPF@d7S5Pcp32xRvzyIj|*&`XJX2nmqqVK-t zy{jqud-v@-d}`l{;y!I{Z50^5eKK{&fKG!Ew>Iv=oS&y~Pu>~y)u zEFK)v!5p}rMlwRJYbVZ2Baa&Ao|9>qaFzv3)s6EPiNS z^M=0vcmf9Wlgxma=O~}n3zT-(9-3}4S924t0FGDSEiot4Wy)r(1W8-^I54m~W_A99 zOnhN0xiF%hdK)Gk=lewoqee>F>TR~nQ#8=(yVQpmN@s7WUnnhShnZkaivfF?24reyLG>0VYj6VA3k-Rz2e13 z+yk?{83(J!*B&a3x$M^aMm)E;U-Iom^~cfkTWZ;Vddr7Hr+*OpmzA65=6!P$A3q!- zFa~wb#T;dB-=Xzy{MVl5*laJ|Xl*wnB&t;-{^&LZrxLQa$2t;NL2+&T8l~MC`3--} zUOUopu}yTWXd`@B8t8=sX@6+heQEvZ;!BnfnC$YuTvOsr;`|}(AP=E;-igm%9rrX4 z-*Fh@jF+(S%L31eCotrHz0x4I$FM$}EQXp0ePep0O^b@BEY=DQCVvxOnZ!=j;86+3$|>Ey`+s)m<`UPSVY@KEH6_Y3t&` zwjKAA1kZW}UB9=pYKmT?w45&Vd{N>(xQ(slO`CdP(yL?2(waZvsvd|H;M$&bI`d;k zOn@*9JDRw!f1a;bjdxl>;KC0}YkFC6YO|2#lm!S|oVPr;YCwVWj!!bzI@$`IZF@-2 z=fCFA;^x?1>(?wVJlM4ajD}rWrWS@fN2A!zk8I9Lf`&4YxIX|z#5$3hkfSHPzu|Gl zghFw-I^^^iq+pyL$hqXAoa*9UADaV0^5%I!6wZ!RK+=C`RezjqhAPr@M&%S{EGRrY z0P{8(lSRF%&99@?6cb`H&smEr(FhU6JsfKW9ifB!#B)%6U<_)v&90QCfFT}CSrHL9 zZxtDAbCiaq#6_t?V zU7|;G=Fs#|e(PWJg-l<_!Rt*3r!di6+|9bC>@Q1JygvK6J;QU}Y+jz2aOj^~wpKe& zy!7JioOQE588$HHVD*8Ar=7X4D%O#jpO*dQ_

Ecb9$po)h(_?nr`Av|3N2U4Q^_ zs(XmH&VKc)GsdQryw^!sT=)H>+;=9$I&?N6>S|bk?1REdSf8hY}bkkc}J$dTZn>A}pdX(@8xkHNKY3Fg6mbA0pHrjXa z_krykU~1$d?YKwzdYwd3+(-L%-6=cQ35mM9P@;j+9!gl~8QK^f^XwtrJC0usci>F= zJm;K`&h(leb@_1H%z2shQTdHq%6IM9P*VN~t_XH(6UA8hC&$#g2JZAit=IdNA~Z z+k(}VLynPculYvaljWXn>PUfS5e z)XFkZrr{E7qLZZqkF4WgrQWdHu^S&=ebEa&@9Q&s&C2q}AC0=9v?}Y16-O`1bJWHq zpLxvN@I(8M>TmwKHMMP#eRb}Fw@=r-=5*${12eOl_Y|!D!$%*@jNP<&_(EILGq=?u zDGwyx^5?qwWeKmAB?jvMvrE6-nlZM2<4fsxt2PP^uc#g4IE9g9qDYJceNk6tFej4;K>V9j_zZX zy@ap>-oaV!UzRq-xZZUx1EGp4z-=ED1$vpX=!o){u0N~x*W}v5b>OM(X4Xk$dSf>R z-M(#&+@AusYC3J22p{uD>oO!q)SGKU%*os}3QIfHye|b<4n-dN5P~|eM8Rt{(1<7j z);9R@XSVuLph#}G5ULO3Wz%cb)!~W-lQ!@RGChXQ8OkKSR^;KxW8+L2L2OtxN!J^U zG;oBdh`7l-=3HG(;cjluwbDVld~g{a8y$duUT=^CMVQh+jmGQeM0>xEC~?VWMei7yhQ0id@wC zQ;nBqj5sCpp`+aYZZPFAzj^B-p`8A!VM}d?co)_aDjCHzP}ogg5S5`^_#J(<@IXT7 zQ&637^~g8!k}WaQJTHDQviS4@9APe8`_RBM*&F9otQj!zR=2zFbl=K^Bg2REp1%1l zyRYKpyQ}U?DEN?hRmz@|14d>3W9}~s$~*0bHMRHT<^F$SMXybqKQVG)L-L^mi48;0 z(6%DO=+w)To9Fn}lskIoIxvI;vh(?KPG3Z5>3$3NAd3(X)@7a8-zDO7SK2}A zZU`}P#6wXN5WN{NOP1j^VWVWMl>Lk|#8lvUk2u7LHJut})Ts@Iwd7Lk8U*J=a-C@= z6yX7J*1FS6Oy+nPS#rWJ37P>#28^!dQi++Uyr=x9x6Yr~-`%ic-og3#S9{*dZ>ezg zxj$+C$%19sCkGzfzT&E0Pum)AfAtM;t+iUm>T{h5C!0R#7`e1ME7z{?=i5U|>Dq1* zU-pCnE8g(y?u>~ez~TMkesub z|7qxGl%qNq;J?28BpkP%nD|NJ`u)Z3!F3;`G(3T-e-^@*s_5S9>vk3Q{JgMmki&OR z+1uBT?>d6yFT3~Ndl6j`b$Erja?*=fuC$DKX#jvbe63Ask_0h!qZW`bti?Ce|63*m zrD?ApraX=YiY1-}lq%ULm>5zTHLnG1nHR47D{ zd!`a8N@Pu&n*w{Ox;9N&3yr?Q#LD|8);;&DS7uy(Q?{pOaH==`dYdQX@PUjurxPnj zOz3mb1y}WZC+CKFkt2_egL$!HA-YP;H=+YlmK$Ha_p|ZaC-m=J$@u_ytt>$Tzyfb~ z{$zsV8=4{K4o2Rd3)znOyteI(VDX*x;0{Xm9n2S=M1NrDi$8-U9#lO)6Ih}dx^W%6 z=k5HBu7!KHq6JX4vOK9X(Row;L}1PU!{_0T?%l{TG%7YDCe5LqjcBBtmS-+6ucYHe z%&c(TzL`aQRcDle4P<2+gUvtmX0h(3f-x(Xw?S@;89`eMD5`?Bi9H5E){-wuXPy?y z@)+eC)G#`Augf8XJ4bpuD*zj)vU-;hz$zXEFd(M!`R z2KAdW<=BImRQ^NbPYXVsvEkW=t9tzD25j#AbE97iWzUr~e91qbbQAy#RbNdi=rm;# zK*M|Q(^%n0mOMPwGu=BCXEb&_Q8nx8viij{a(jI28<@daGYxUIafaZ(oST8VH*nwH zuMRDB=5soE=;XGNj2nKlJfY#;Tv*`FZB&0byFGiq`l|9LqcXpxq8cUZ?r=n||e)gI$^+3J=c zC04ZLcEek7xxK4-*n2c{#`-Ig-{ogv-qgmcsMUrRw&FNae!-b$NJCG$k@g0@K5)qSI+$u6 zPIkWfWqCe_r1okPU9YE43PfSwuZOkk=)cglJ&4L2D}fBAXHO0WYFxhgd`|k0Xvwi$ zKw~41g=Ql#9>iMER^>1iFoNFI4ClY_8G>mvS5DA}um)t#bA_bfcYe z#v+lIS#4}&!YX?j@^7)biB||1Ye)ok5jM2Bur-)vtx0WTVs0{-F;Hos2%qauI*#U` zJZ!0+ez3Y8@A*g_D7TwkZ6Zk6mp)oHr0I(K(Uo`IENU zb5O)46hU+Bb)NnEvnJ(ieau?&lgvBz7x%%8>ZF2__uJphpImPC<3Pcwt*Ig0o1y`x zvPtt5<0#&OS8xe-lje-Bf%RXc3#tgzct0p;`5>W?DFW2+vYhzVKgO$V6rm~#9oQAv zj?x(>%0fWZU9DzC0rd8i{q~^4`6iG1p>1^)0*3#6Wg?h2k^^!f4 zI1$d{6qEteypqdJR*fZGsq{-@x#xiIK?cV{t0}GF=m+uwB}dfw3e_wam$(7KWjn-c zrY|qgyo04vxG$X_)U{j+lwhyTN7Q_`nY@njfR+jiJG2Kujc0+*x@J_q>(27HK-7w( zwo4Og4vqWOq>rN-Gi;yky?6bMNhf;5z2uJ=cyQ-uD<2#7X~Iu`@Z^W-Tfgj)*YM8) zF7Ip62`AR}{o~aGAsw5xy>U1%YgN@Iccr?G`}bGPLbpBG185rDeLgr~l$Os$TWv@~jyQVQ&wX~bkV`Q$wg(XzEL2}aNz z?i5ajEEH^^4t|DY7Ai~G>9vM9OmbcMr&au5z`;s5?PbP7?GxO@xbnoSPe6>t1p34h2dIjcds>$(Uv}-0;ip$H6%Ffg*dvJzqsbOF+w<}%sY(-~ zSn#IzmeR7|Uhh)?&#GGQZx|VL2=rP0k}t1TZqLGqb6N*X)**~`ye|++uswU?uU~PZRr=W_?JVfE}p#K5xuAB8fc(3 z8}ShHfzI2|>N?b1U&Y;;d4J}wa}F)FzI;A$e(W>wvFF>ZCgtgj4;$GGQejep@6ft4 zIWFd7x!u$!Hn3E98OCO?Y2?!31!oS5SnE}U!S!c$>>E|jNEP1nJ2_M!{*q9rXtF9X zP^E4p;HhBHO{oHmZAL`3jsGB8mQHZ1@i^VFv?wp-fU9f%m=>eM`xU9CM=|{J3nm%p!s#Sv>whr4 zcki#7C)IqFeu?MB`jS<@A6$Iwv&6$675FoHYL?`ci>|tV$~BlJnKx(m^1{@K(}zqR z;*X$X8Yo(T7@hX+TyD5RaPcu~iDADKC!IKCOcv1Kik($uLlf4{(_jj{m*erc&qXJa ztLdReG*K_DJ0#Y%`URA}P-*M-QA5roy|p?u?r(uRhFagmE>8Nm=ct@vH}vZBNxyl6 zF1p~RdmdW-;^x*ft5=P$+EL{HXVzJ>_0}XCkM?!&sU6fU?$GB|wHu1+cdt77N&L~T z_FZ;M-@-S3IqQ=5-%Y>x?x(A6`E~4>tK3f=SrotN`iVnxOIpTvN<8^R9G*MZ!|FBn z(T`WZ(f32&FY@j@xaFcW-(6+tKfLz9h^_xQ@~P+%@4T_(rt(P*&uz&ZQhn;!q-pg> zmVGwRdDmHA*7P9fbcYGjY<|R@eU)v+*SD{z|G}}5 z-k&$xa&Gy2{??0MTN3}p-}8>0wIF%DF$TB=)u5I&qx_eYo_NG{odGwS<2n4$Ai!dt zXBDkiXd+bOws!1k>UA>n)sm>QpQ0cF^F|t|tm8o-UrVk3YH(v@d&;Nxj&Gb5?{4>P z9e?sCb8JnW&JO!#Zl%@PE9a1F^J?djtj~&8Ua*FFWj%+PI*Dq>Z!^Q0?E?W#I4H2z z`7Y;yIow<1DRh9=_Qfe1{<{yge;hwqOCm1u#b#Eer9YAs7?3oBlkuC*d|xB4|IU{% zOWu{-T>r1%y49n@NyoExv+HKHx-r=LzkOF&PXdkq&HQTkUEz!H^ho%Zv-at%_b2xL z_SVm}T;HzxxmE?QeJe2MR$U0pC0#8>lWW~w4|RC4$+bSSq_ertywcVsqereW5-kOA z<2YNt1PD~e&nND`>!Auq+vyIk!SK1eoo!F7OW%I`?fE+<6!+oDVN6MO{zwO>;I~H( z>s%4y)J4y%tgQ2YB)G$|i&J6s4M$5m&C9R6J5b98!J z=vioe1HI32+Rp0v|LBx!SMwei$=S+TMPL7A!N;9WRa?*F`=b+^*LL30a|+HCUCz1J z{%lfbZv~M(f1K4}O^t_d%8x#K|IT_>cwhY05&y%75zl|^vqF;pd$(@Y3bNM#KyV05 z@KK$2tK*Futm}UI+Ktl%^Uoy!>3JM2LP5x92?}DD8L9^=W-xRvhWR9P1JdJ zhrpnTd?x%5;$1Eac!_mQSYDe>HULM&$_HF5k_F;z0BfYHMq;|ix&MFgYX06KBj*I5 zu0fZsBkUBRlfH*%5)h@@EP@vKNLcV3wj%JgOLZ2)2oafF&&BC1A_A=Pa218SXKN>Y zbgslHZBrH#woMqOIDNFAq-Y{rCIZz|SBN~xIfoD@f;kZ$C9q8li7}E*!@5Lxy5y!X z*cSn#jygiO9)!)pgh1j}BI+WGyg;>S!l$^7h@pYCJ+@5=2jiIp=x0tST$ktowU5An zGEO{_zg4@;ZaJAd>esOX9|DybAea_{a2Z-u;+R7`h;5`Y%zGo9_zUr0Yu|lo7!g(o^H*hGi4%B=pqb4fAFZlHAak zh>=f_Vg+{tYSh5k6KB62o7=ur+ag+XR=;XQ`b})20udMDw89i^x;TCbOrzRLXs@hg z?Xbo@-O)$ORsRdzL8?wKp$15ZNccw6YviAldCHDn=Akpt0!1hmW%F!Ed*31 z)D$)o(~19V+V3F{olPvp8Duv0P)KB>Szw@#3piP`@X6nMgNUe{L?)IilY2xCf#{%l zY;x@-h!}CSBzru+{@vK!0wWqmRTBSEhrP9~sU^cMEXyj=)Cm742-7Z- zH}bv+$1PwdqXzp8y~C33r&84u^~yJC2#Bu8?N&PgQb6EK>9j$b6`03xxGJ7v*~~pm zb+tdTNNPwfDSk4;HBYP>A_5eZWdF2Fj1G6`hwT#AxOoGjr8agbWZ-7cbd9*^l(C&8vhyS9ZbQ9>bEGHjHJ zwCu99?jj=r`H*M3S;)2$@-NezBF;t0=jO z;Fz@ZYX2B(DB0xm*aW4iMX^RuUkL>o)`eA`kf^=uTu!y39WFV~e%Lp|Gl;2~JYI%U z#2B#?6h%Ve3o6|qt)vzUhm3~SP1tx2$!3i1yn&;`md4Q9!G;C-uZb=!Am{=DB38Kl z*XhA&RAv7pCQzlj%ZUsomgn_FJ5$@b7cw@hqc&u9_OAkZmxbbM3 z(SY+;*v`OWPR$7TnS32I+frd}jDXwavGt%>FdEN{aV+hL#)2-y8YBJ20bK-u;Q?z&a%A>ygwVXoLusmqmAWX0_>j&m z;y?ok-w8wbXgwxzB!8W#D0Wj1oPSaWM-Z6lqh(m}OixD9qTm~0gc}n#hV}ur1oQ-% zG^JWsIA^D58VNf)0giB8NL6@F#DLSsacL+y1mY%(f_*z~mijA$E%7Dybhs8{E7++7%sxyGXPE(P{FLgT|ovN^onN!UXj8 zH-!Va^fs9n141`LZz7=^h|Ey1r?H$y@(I`OPPQryeK7uApyx}{GW&`#tnCg_-dK_` zqQ67NY}olQE+q{EMUu^&R?y@r`Y?ePwN)&ySXs~dR1u}E9FsLb0Uv$33H{-%Vvo=l zc@31hi^hy%EE@z#ra2bkCYF;F?{YoXYn0};63+q!49>YYTot%O2Fm&=!C$u+>m^4> zs+E>`yiKzvTH7Qc)Ji1V$#EWo?HSk!6g86UA+*#X#$38F`hevczmhd%cZ=7s$x_)j zi&}VaHk97_bjp*)OOxCu2#o^gdz3OC3hVc0hH8S01uw#S9_LxujI zw<2t6&PCYtJZ^u5yMAWEna^^MI@FWPXK--d%?d^0ffC88)>|iqq!P=*G#?Bk$#4-(JV4DJG|>50 z)KW_shK`lr;6q4xc@3KakED0XL5d(oU!e^OKvhne$fwTSplK9Kq~Khc1%xSRkj2x8-XS^~5G2W%p8|N)W&> zQ2KazH+lvA%}SylL+gqOD)vwFk=Rg}S>c3JER{@=xr7WpP;)Y1F@d9HC$=})gXm%n zPP+BGFmkVfL5*N&gZJ9VSIFo=bWs=@2;-~H*16d*0P$!xX4`ns-8T}$<#I|?3j21h zYhXDHdFVi%O%r~|9}RaY%xH+s3MNb@5xo+f1e8cFLTpyd003DPoEI%G{}JG`kTWH# zJp9!~b1c%S8bkXvQsiVJPDR+D&}>mNpx1}UK;tFd*AU5+aARSuLVMjXQ*K(P1Qi9) z6_o;i^bZn_P_-zb}cJun9KSQ7+zHY9CW4W;L}TmF~Ya4xs;tsH$T zMq-oIxPnm|*(CX32U6&KC zkH{TKJ%>@>IA*`yFFI+bh z_7U|gS}CAKsP3Et+dkg34u6IbdqmUeTJukd`oLd|ZxRpvx=rFeHiOY3ow5 z%X*Rb9TQx5*t?su6Qw0uj##CWbCmw8MXqIHYq{EQMebXXqX9Dd_kTjMd{ z!@+h&c1Vg;!yD*q9N1X!QYaOqrI{&hML2HX#J`gKAz%4b$hK@{G%^R2gh3m~^ryy4 z@)#<9>_!FEDXh0Dpt3<>nY|-&LMp_lkXk*vl1Z#F)vO|94@Hg*Ku!ijip{8M5vtRv zfUKKhfLBB?d{)26P1=U!ytofXwHUH9t}|pZ%!m;LD#cVWm@3OEC68}M@PMHDDzpPK zJSeY^cuB=!RVtQq9ZbA!iYS?k+g*EP;o_N*wxg-rg?FC4D|Y&&Bmsu8!|Y{(cQr$x zj!Ez=Suj>SOx+P{q2!|a43lEB=9{^)BnIN!lxyXGtzeuh6qAZ7<5U-oSTKqXcgI2< zsz#N&QBYvvibZB_O)$3OBay$8Mmtu^r4qFMiipv=N!!c(Uu_25fbufh^MswO@l16k zTTRI%b}hac*@ok741i5u6_JA|t{dnKRJz0gY|M!AK4BdVWwF^qey1_qhQFSHoQ;O} zVo^DpR?YeMFp5*ba${T}aT|6l;i&DRS_YnS3et5R1-B^`X7t%iR|EHGU#iSOf&3(j zk^H$s9?exQ0*RF}{?`4JG^G-TZc|y$?9$`2SMjW-r;p>;pT%n}-6hG4*VyzCdY}SO}+)kjk;*Pks zy=6pZ>k{o=qu2tAV?t);h2(m>C`Uez>Odvo6RDI>e`r&^QVAc^ZPo~TuF)_ylkq$R+JCskiP0;a#09>dbdx)$?EPSyC6-?Z<6{Z9vF=ZWv=F+;F_sjGs zm5_`y#_W5lG+?-g{5*cprH(o8fl}1n=CKLd!%*GQH4`k5w2s_DEH#xUlE4 zRbb!=mYA45Q8Q=YzsN3l%21T&iCbBVp}7pv&uWv%6K4x%HDtyLte`tFhMTDX1ctp_ zx&{?o=`{Ok9-Hexs1pWZGQjY?k^C@gUeT(wsI(+g#{>2n<1lQ`bk0;xc{&<)Tk-C( zC0FP{8{zJor7R>NYtv&d0IiIo4kON7d^PWMn9eY3^2}_ibb=Lq^^sTyRmE{UCnP96 z1t7Uvhs?E@x+%wn#gv@HV!MMmOp)w$v9R2GI4xVY6i(zM{{@^jXS~aM|hNbRgsGJgNjgTu72aa*q>dW%U5KHM4 zmi$%X4#fq^L+DwUSEyFO>MjH$!pt5(2m;Hb?-W0lWVNn=O8XZMrj%w9LdHGOz!nkbcxm$lax zM}U9_rcjsVZJKk)tSqa6ZQrh15~tRxU*-z&CsUAN_EwAkV;Mh+A-ZDRLku|(JR=uLkbw!wB*CvO>x0W#xw*+$dcaSrm!x+ zv&fRn7%^Duvb@bGrgw_eA%sqMjQAJjDT>&L)K4^-ikiHGp$D>AJjrStnKX=X9@Ap% z1I?d`lKF>e$FOn5{m`S2=0p<36Z0Y0h6~2WwMv{rqlG3EZXHM3WQ?reK~Lg{J47iT zPHM86G=EchW8!WlR!qfB%Y636ZaIuMD2Bc<)ZgX}qkKPBQ;qvtlg1T87_FLb$loyN zr)5wnz}U-1?yF6qwc7BJ7#za@ABOIv64o_()vO?`mXUL2x>UL%bv~oiw!tma3`1Y3 z>;`a>@?zM@twZxvW$8Y#1;->WK>G`&Alz2cjLiO)I4#*P>8-sEE&Q{Z$hj#<0=m!yl>)ujs?Ij_tX=j>^8= zd_$oo*Fj&)c%mvuC`{>+$V+0z$(X4ZZqjj*qMKPP4L(vRTguhrOL~XR1lk*HID8gm zoiHBm(=4AE8yI|MxPLx`8GB;zBEeS)NbwSPkY8l|fLqQ#7J0Od)-I(GT$EUXrkY+a zm)?y)j%6g4pJYm8p%@Mzo~b^=PnZ#bSv+)XC&y%w2l^huQ$pW1X}*+@xtXyMLG4mx z#f+F{3dcWt3dLh@3U%UB?*m*M3$F%q0aYekhV&>XO7^K%F6n|X4ZdoYf9 z-CS;98+0hJn4jQ~Ol6BEVGm*o@I#K3&?ul^r6j5P414a9SLUGBbKH3c<;T9AH%$j^ z&82YiuFmG>@^4d*IW%xe`yx}q^){6(l-U@d|2et!&&4I)7!Oi6ysI_lr1&&3pRfziNL^38b zb7+5^GfaG3o2nMvTkZ}kBdoHj%f@xkU|PtU6}%LbO4lCa7F8l+2G@rt>{)4;#Ut~h zNXS_;5J6@xBMcM=OJ6s|&5Xu@&QxBAx6LRNqaaCn`%NfL*bzugV6igB1GHNGc+)g< z_)ZvQt`Ib0VDLallk=a@t8fmAP?TZCGW4FBtz)c`XK(1kZl8P%wc{HIpc#lr&J z4h>p#D4VB`Gs(2|5KA!1<&)kaf-#4ehlOhxuH6duSpwLFNQ>iP=%Q+XL+Uw$UZERP zn5nyCKqq|G0pF#|lJ4T|s$SS0ZWpvJEvU2>X!mG-ia2%L%<^AgNlPg9vMHR6-6)BK zu3ny_v00h~Q$jMSNf6lyf;SI7BI(gkIaAG8)pc2EQxQaA7^2n)DA2F@KOLuEkGy|i3V*+EMq|HaalkLJA)EhgHX_+a44E{m=_9u z{xSPrl$8*rw70cSb&gUXU>Xr*&`hR}BUz=@S?QXhwYFgH_u%a4d!aR^q^ogDzKQT_ zKwN}DhZ(}pa%RfA%{)w$Mv=J-$&;|V>v*(8vwGFlDEVn0qxRttl4cTTP{L_c6ne92 zCY28r3e3zuu45eb31;yKFm!&I_QCf+u+YSsFfVC+K-7l+)nwxdqm?29bAiM(N}~?sG&v?Txu-`eNyKFfuavE0w++_~OO=Si0B3 zwXh9hj4y!_G)Av_0>cbxB*lehlWDLHD)_ZlxQ--z5qU6FA>(&)jjZ2wPRLqZ$KaZQ z^np$xgN=|4-js^w7DUyA`1n4Trj!`D&^pBB(Ccz{Dr#xEy;&7iab=IW)hkOe)3ZBl zh9Act@4XSky`e}}l@mrY%8FoFVF6_4>s<#r+5M>qpDFuHl$Fmh_WWP$y?b1g<=Qqp zh^UE%m4=%H+nBA)#+H?p2wJ(U?K8_g0;bl51UD7z7c&CJ~2c^ucwFoX7dzvuV8yYG4VqqSsq_kCa2xjD|wbslL~ z5SgHNOAG`yJ02>A-PSL5JvBTH%nG_r6*z$8Xt(A^7>4Q(*XBo<@OhI7|MHh9>G@IU z_#`1XBo*F4hp3QCse(x8yh@n9AgzA|m2wkh&3$|-O{N7(J1A^D4Hyk06@jD~UR{&M z-(1LP0cA^ps<1tL712HcTp-hE%#X4C-47kiBL$F#9K{E(9iZTteU1AL0pe%?vS8=2 z&rX8pjAl+_{EaRP5k&@E%#VnBb8MR+;1XK{NF|2dWMWELY{Li{I^#B|38HJ!ot6$`1TfI02e)6W3T#ZM|$4 zGQdn;ahsK$fP%~Kae8(pV$2M*n!wYB9ECTQ(NhA7ZByXAtWu&5+E2`uNOMFN*dS}n z{%P$Vv3hKPk?uvaOf^toH4`!j?Nbqo{s57m=r?0qoNvIh8^C?)tkJM;#`>EqF=Hu1 z63bl(qZt#itQ2@oHEYA%MIxwbGKa+4upjD=A46bP^CUd$c%6A@zL z;DxbDb}7U{^r_m@VXM$R%DKmg@nQrqaW^H1=r6~v53DUM3&*7|ysw_B$ zs-ADz4Bw$d8!(G-ds7(8F#Z)duo!#H-8)4+t z(I@w55+37`A$7>h%dR%W;Lw3wnE@MunT8lZfbiw8541;4pa+CVfk$+~yogj+!}0*V zfyPHjHAJfV7^Px3=#4k!P#_#fK_#|0CTnHvqmI5rO)3prSJ!LH+kyW3hBlO^Zdq z?Af@(d2yWt^GE!|!zdixYMV=Gp}t|o5!?}pLKk&ZDTs8vsV*~b=(469Fv4R6vXC~; zmQiK5E2okCPeG%sUBgz3;^ zW}1;YX7@F^=Xjn-3VvlsBhzcHZ-m8Z7EAmtZI=RP+IO@fC{?NFr~NNOV=~jhJ|t1*AC5XyvPLnw8pCNo$p~`zY7yeA@p2Nozg?X#k@M z)ksJ#2I>!6<4o47;lWpjBcexWOicl0g*fLpf79FYaRkB6)IIx77=EBOr*&kwVUM@x z8`eq@NMRiJ$Hm1rC+kgD89yFvKfeo=m-qlv*utYVXX)3hw^RU$z41r)t6R`W4jnh26 zb<_X5Z@Nb$@F5|vIwmclJNz>O3aFftl#C7KKq62EW{0?WixLPB|vxx14a6{#mq|R#IO<<}{?xOHY z(a|54mHWdT&q8N+oY?M%C}O0~!UA#KunFn4cxp+W_#`k)7hF}qpicD{14e6XQer;U zeg4xe9D(zX1xn_ke!q0(nbXr={kT4Q4OTHwCm;tBU-xeOE#p!>f z58)o4cb0hE2Vwnd;7^o$61*Jt6Q08txl7`C=lArB1@N;?%azHqs)KPXc+$I2p)WP8 zF_i%v6jX{(U%iR^nM}6B1oWWZXSu9Fo zk_G*yI}mqaWklR0ohFMF{sQh4*`8M=o81jhA!@)1B2t%Wm{`K?lKVqpFnl@D51h77 zy+i?HP@B6g0Z9SIH!9^BGe&-dHBvNrVD*goKnWI}z-_Lvy=XE^(h1QFvy#ZEjV1O# z1HKx|z-2c6;`$hpL1HfhF}48Tb1nFrEbKsq+Eh`>VZddbB8pHJkG{QLy8E61=cla7 zyniDSa{8ndOV5Jea_)WF$q}!Kng8Ga2#vvQnup!hYCkhHM4_ICtP#u0 zTxy(}_s1X(tmW9Dr->FJD@>w6tejz<1{Q?{=tY%Wk__iSDnY{_H~Fp<+hjVNA!F^F zUMaofmoHsv+54AuTZZX;o_Z>zeXrNob*$Z0`dZ4!0ftY;-)LB5tUS9SXO@5SbRum$ zJL-|;48U;*B+auf89o8jM0X6UWxs7>{+FpM*i)De9O-ZCF)~(L3q6H4zfv2Pj}*kL z-z-*^{BiTJ?a(_BGtEtb#F^QcJ{{hbl$ds*dkjZYmSH6x78B@8F%v)FYPHZuVs0aO zbPt`sIRR8&(uY6?NY(>q#(;#Y_=W9G))AisWLj0W)j2QUhs^_$rx3#2pM*dR_a?-P ze3`8kNWJ;jpbtY<0NG}aQ=()gb?DmbA%I|(#n>~1oA#G&+lyCYC+ty~p zJqdTnB<~N(UR~&S!}P!0{zCs=_E5dC>7kG}<~=`sO-_)<7W9IKQJXhvS#0CjlxhTm zqTO~L{i+S?;IZ1Wl8t0zLtMmJVQNHRt>F;r2jDd8fWiz1&`To4(U_5N-?%=A-M`=P1=y^i=>PAJpq3@PUgaLjmq9Tsw(06Acgqy?t%EBcF&mU~B>v^l62-J)9r~7SbSYZq;zH+v> z`-b#yy0lp!OW5g)M`M4eem-pO2P@+aCytFf_-LOc6Yu~2`RL0ctQ*#(?e5ykJ-Jge zdN_9~zZU6p&7fc$@U#ciJ}-L*dKKaT5)*)Iv6%Cg;`VG$xjn|Rb+&bTEJ@3IKN?I;3Ey}npA*YZqUj!d~03 zx5O$-E{Bcy^S2eVFj$Q5Dl6|i%s+k+N2Ck;BVwO z0XMc}S5%oW8gfFq7Wr`mG}V!)gwqXRi(mvTHcBrSUix=#*oh_{`nXkC&=NBLD7r*5 z>RyyKvHz$Az^lN!BvNn474C!1Wf9lj2vq>1&@&_3o_!CAl4MVT$ef99(qFz5&@;Yw z?|>Kld~PZIJhXiJ7NbnG%B`5ZZ0$YIMHjWT94S0<_Vq=Bqt_0|)fVY%K8ScHz+9Cz z_}gRtUmks_=qtOqXpXVRH`h*Dj{Ku-D#c}W+#LzvNiPMaC`%+`FWax9?Omb9Bs&4a z2xfc%k6#cEzWRMB|P7+f1379{;>gV zI_iIHbLPJ2w7EkLp7LKBQGaCq+3IIfiUwYK(l~JZro3$#(br6$ZZ!BhOTG$=xvjN< z>_8I*QIQam0%)f0i>s->5!oM0lt^1>r6n{4^j_x;>$y4c61*4>3lLpEl3u*!M=EBp z;OH0A!&5GMl8P8LAH%yqcZxZPQ|ut$Vss68*i&I_usjs8qR9@1Z2e({xp=7&wJ>mW zj52#fuo&e6=rXVrR*IyLsouQnrYn5M^$esMbhb>`WWY!t8adi_b>g609AZTRl8@<`83DulCt}Ows#yj*P#&Hm-i8dDozd?(258&&hxK zZ2jzv+Y@w;zZw2$Xvi}6iaHnA5#a$QT*vkir-mIBdqmF@FGAZ>@p*ydN3c-#*E0Fp zu|z`2h<50<1@#x1>clBRMz{{7Hzd;<5E+`JMLFs_>8^nvHvCWMm5AJ=s zC_r z24Y06+y+q!=!N7aaEmkx0z>9!H51Xo|Ke5`i94u<^%k*&xggm$x$Y}rbXB|oud2eu zjF>eUVz*`(31bjUP>?{}3c*SK=l;H5Ki=ksyKZ05ri)M}9Jpor=_%Tqd*7Q<@NkVS z#NNZ#VE@;I{eQ}`Z253hY-iy_?{h=ju3L{)sD3XGGpUW$b?}ZHl&(A4$I635h}h^D z#UjeAUQf&^>!x@x>3(cZKJYdPP6H|r2v3Q@l?-ukzlg+rxxrxM(w+f)X@btmKS(r& zYl$LW69%U$eR4V0Ll;+&i?MWG$7g&pIQ~G+(ne!Tp3Uhl$1U z;{vE38T^_!z8o`73J~GgXn`aU4>plm4E4jCTaRe-a|q4uOO*H!L@5tLL2bi9oa z%{!IPC`TZq@2L&NvVN&~l~D5up)_#|?7P!g3vP;*1LB2}c_)}n5zsmwTJ}!Q)mwM9n>20JcU5=ph&*(BQG0T68$apXecHFX9)5WFVqj&Di#eSvrrD2BK<=TrbKx5RQ@+<_5 z+*WO}ya6y)8c(lCOe(u0m@__!w3h}@xX&^I+>mIYNxFr?y9$0!r$HB$68UfF&0gxj~k9)ZJ_pJ9Xo$&}L_ z8v_>AMn2yExrDaA*bX>O%P5l}aXlQR7xu+`v(#Aj&FEhB7Gp^9vLWri5^|ewLh2rf z3cuLx;pLf!-zrFW@Qd4heBY`mT%NOU)U}L2{dH|ySR7?`lIh-{nG|>Z0TzfD6$F+F zFvAq-uu}-EfE;ynF<}DDPD4jXr$>1%m{6yUBQHmkblj*P`!M4;e&?U zxE>X^MHa@V$8D@SGdg}iXvK=k;)P+wb8_uFezqJk{%A_qPK1VC{XDQ?i79K1HQG3( zDj;QiQQMwJm-Nb9aQu;7pZB=G_sqAd|LjixI9CjkD2E?C;sB?1YIislQ=m-MZbq2y zu$pF6;u`Sv0)aJ1Nc}>tgk7JN{UA9*o^oPBR}tbOg8;TqfqtZsZDM4s-D0n(blgwt zf^<;TFro=sDXa@1erg&P9lYucwt>*IzjmHa5Z=q8cnY-fH|Pk`NvWrqn{4KR)gQR- zTNv@CKn%l2su;6^@yxemNTc?cFCVM;CjI@Cn>XBEG`B9iTgnX&=M?T*QydTwkz%y( z=&L`FV|_O6mks89CECQKH8Xuz-@c&TgU9CtWJcC?{M**+fi-pZq{UL(^~_RZeTc91 zhnXy3L_!UhhiC7j;AaRd5~_?it+7a9rk;jVWL^h3=xPM=x@?dQBVE~%t7{hpJo~=v zLYpdzoun7a09;}J8E!HH3ERg65;A>CkCE6>lF#f3QXV4w;zr{a;aer!CGmvwIYmzf$@+f=_e{eT#+23gr#bxcE0(xH%o$C*+`(n@hkGeM08c5ysaoeA>b zn8lu;5y8oV6N5jb;~!Y@Oj)Cqi% z^KSnmx?){dUo9^~o0QTZ^sC6Bn1MOtjGZR+2~Rh?@r%|7W!S-+)ZN#&hm zKiK%zpN|&R-W1Vr@$}UP7U^at`E zXVAd&ukwOzWc0}|D~pErG8~!EE1-DI{kefFXD!MPsq2?**&Y_))8Q`R_x{$$_l9Sm z@ZC`T-PRv#=T!Vhdfw&@VF_~oS}Bf3M^BUid*NQ`w?-ol!?$R0a6vz3?4BkTlHS(* zPf;gi9X2^;GXj1A7NfyjOw|nM9~rFAnQDHWRJkv6NZIY>=3>ie!vmL+7FV_H&~>-2 zxMS3($CnRFJpTQtMgI|LOdj&^+0Rao&Kc}&v!udfY}S0qmX5Dz z9J6KZ&<|(LTC?iK4ikGwG1>Rw)Q{#&OsOsyaew2)f|;e3lWW30aevd5ay0w?F?C+; zE6aXd6TSOj%K088YYS%NjgDH+I*+ej5GPSvhy7eDWXpQ9n=5y*qGp zZqHcD$ZH6kUo^G-PaeSUA9DuR{5mMO-Og!`9h#P%+;A-C*AU&SiwAu5-JYV0i?(gq zaP85>GT-Y5EF!hFX_p9vkkK-1n>}>TkEs(QuLV)|sn;)1V8b29A;(OZcqDY3A`twa ztd?i&q!dVt(Onlz?0q^p@>a7b>@s0O{zox$YYNcCw=%%f1%3N-ukp*aCR3tLGJNIQ4fuoBah#2 zG`=xu(!#*Was=Abyf+%zqms1Mo-c8vw&Cf5AELWkO+W^zGxOhFpAlba8G|MTwVr zZcL9d&$m|Z?HBstiJtn!Z>{zOorXoV^Pc%r((w(WExW%z5&g@G)V(rVCC_UUBWE># zUrVf%;MQ?*f;bwj?2Xc~BlnK1e*F6rnfAKVS=O_$7%V2Nxl(TPTrzaM^n7oDZ2p|N zb5EJgWeZM}KLn26a~DS&9vf_q8zcwBJeQ$t^;aL9jx_d8kd}jGu@za10>9e6|4N4W z=N#+VLkPh3?{6ouqQ_UZG^S1N-VQ&1=FA%gLt5a7$?-Sp#J_5m_@)d)(~11~XY%bm z3qP+96d~Q5an`#wUmH<*;llf;rtSBiRd@O2pHqh(@>l{b_VDCE(o_3bMOImmqpyfV z`Q{8)TOo~+HukB;)v^)h+-^F_#cN52ZPN;0YO&v2>+0$}*Ir9qGyTU8wFp_k2773}qX=c#}P!b3(20<^0(pffDXG%+XTvENP!{BEDnvKyTx& zJq5t*@tQOlhNs6sPFrw)J5pk2Oue!JQC}0G(c$k;f1_~V*Zk-)r-IUPY8_d~LFv!|tyBm#VJxtN<%4=79 zt(l>8SNrzu)An_fc)KyI66ycokWPC>TJAV`_H1c=b;)f*<}7I;5EE*H%SALr^D%@# zZgGLkFo~YHC9AY&kgc%&^Imk)T9znQhBm?Q_U+cKyS{mTLuO@e69)Xfxw(4xl9KvkJ4gD$q14IYir@3zHV)Q5x%uOfp*0`A z5_@I4hwQ>5%;q{Z92oiczZQ+asZ)<}ABIKa`fq*+y6!Kl2pP{0j~(D4Ya*iuAIg7a z&z->yPyO{z*#mztm!mS8!mHnUQ{)k2;g988CS7Ce@=wdi9<&*Gs%9*kzRz9f3tBIE zRGfLQ(m#@$kzqZdoYK4j;V?+s^TR!Dksx_<+3KlVCdS6D@sKS?C-m4o2ei%pYWVxYC*vho8?|^yoagh87s=Eg7FqFHV8gEJlDwFS)55w-u%*q;i@9BL z^`4)QMp0vKrRS|`pS-m?8f=`NAFDMCH(PD~%Y0w(z7LP*x%Q2)fa@1DuK%S*({)Jg zum4d-OO`*5q^`Y{jata{b8y%BD6ZLh>mIV@u?ddWRrj>-&5P73FwJY>`LF+x0^{hm zaqJ5(b$|2lrw@9XJ|&*v9sZLXhJJ5#+`SuWZn!OF{Hgn!c zDcG>`)xkkOdx0n90*1P{AU(w2Z7s@5e!r-X?qb|icRA?6Te=RvX}vV^ciH(t_KI7M z_b$kGJhAMhewl0Y3%69f_;g24LyBLv8{7XuVoH0?*&hbxT`6Rsly8&@kBnzSJs!^K z?G0!4Pg)fG`lOPOtv7w$zsoS)%{QBNwd?Wqv=ug%mvN|lDtYhKY{dUCMl16LHyM|BZwRy1rbMLmfCsEh-qv#tS z{>Spd$z31c{@t-kOU;gmJsgw`8XTXdPAm>hIL9s$jOIva|ds3YrezykN}!{6h|$eQ6TE~aCXyFt+Vpo$t* z@`Rk1VR=0sAu44Lv(bSlFPd z1v%#Sjp$`$V;(!~45w!ANvpm`>pFA&`j?0KbQ|vD_gvdHH^^bPZ+8ys`S{VDZ#~(i z-@O4+Y3sD-Ve8d&nHK7uZ7d{Bq^4|{7-MT?h~;+1R; zHy)S$hstOlsn%okUbB@W`4Z}`&>|5Gb+!poXPSfd4p(z4+9q)-VmM@ubzhder8*}8 zh|HK2okVdi)6C68vo2&2@v5A6D znZe#~zHNKRx#2P$y7jn;9O`I2Zqj<(B;;Un@l#W(-h6%Gg06SPnJb1wS)+UF%rQl0 zVwPSBD;_bqPv;xD4_uyb`%2%D=O=m>?j)1gdfcS-xJm1Alh)%VQjcgoZqj<(M20)G z9ye({Zi4b1N_NEZLB#SrM=!-la4c2fOd97TNY*8=6s5uFm2+bPQT+17K_HweLl7oi zJ5>cd0>p#7h$zB%JmK4brh$CjkQ`f6;b4V&te3<&RDo z9I+y~U&PX!hR>U;n~mlRoc|71Fr6CxE^I^2jy1zzSFeISLuSunP?(&=lwh1p3(3VY zv{hnlVY3pLz8)OE96~QsqBxXP-K!Ra!R+9l)ye5kgGmOJYAa;mEvPT0VPM>5&tB26 z{O@*rxFNM+plhxA!{8Slf0QA>MzHC*iH$hH&v+b@r!8PFmVvYtR-AKo9D`7HfZ`xX%s}W;0z-UmI}+WqT!RH zIX9DSnDc=*aXd3-TUX%@6>+!F8kazgz1EEv+DxAG{4Yu8nT#SW7OL-zr8p^T!jn+f!w4Rl<;g$PHu!p1} zCL}BNH%w${UkDb^1~QrIVYJZV9KeCB{2-aVFhJTi6{KHa)~-f~=2_S8#~TK5WC0`&83-ES$+szCBJPHvU37 zvu9<`Xa+H~U)eJJe9Ra-hGlce`w~v~j;BMwbmN-z>TuaJmF{NBv zkJ*kK{>+vTeh@3hwKSf1>IfaDLm0>nHIRa$*_-AEP=AAZE9Pi+G;P6sR+%s2vrvMzJNW|G1VX|D)GDGjqczr;hv~WG zm2~taM?FlvZxx3vjKw)3>JTU*)D(8@Lr$R(A1uCjM75JUYeqK;LOl5rw60`sa*6xLCbt@(Z`WJ@%g0TxittkFbHdA;PVAZzJQ^_yFL#GwH_CcI~zvwYuwkhl< z97VzuD9|%b1kV;!1wXoPU!{rq`Z@8ow$FoJh*YN(@*iFxhX@dJ-r?52T-p{yd#rVdMw| z37OPfWb#V{CL}8cdkl&mc5L=G zfzIJO;mbudhU6R{QVsZoiD#I$YsJV7Qb)#xwg>kgEyR_#Mwfto4HN)kvGNV}e6SuX z@=`@T?k|{=FqngQHV5&~9ruxAv$j!r?XdOAGA5Elx z22}*1RvlZ+f%1dN$r`83!dw6N0qfaOLMHq6zI ztUV#C4*r58gAJC!7URK+iu<)&X`l>Wl5jGf){AyDE3GL@5!0$Q!P*+q$!$zJ7!E0h z_b$5^#0`)mH+3lauwkiJQf`$^hYxs(L(OOnasE`U@u*ILhjV}#gsh~>BbhenKxtIX zCE${kMJD_uN4ZEBNjGS|=)S=$2{h0MN?$R#9`r-Rj#)let|0SB7+DBJj5Jl%Y4Bjgcw6lPF59@fRJS~{RSR_ z%8P60NT8@cFjZJ#6|+4Xfx$5gr%Wj~<~dCxBMg$$$Zlns<$oAH&^Lb~PoS91_#K!p zx@DVOnEy~zHZT}*U@jw_2%m?VnHW;HHRXIfIX2SB)d~QkBhfoW6+MYM=Trpk0eUxh z1-@rU7h^?2V_62-KVUCxsF>NZIr0*;2NoX8za%CTH3vm7+?-f;6@|%9z{OTrDY_Vy ztb|ks42krRsX{*MriQVADBBfDVG7X*j$8*D5?n&|*T__<33zu(j6;xzUk)tAx@s>8 zyulDJPMk$AEWgwT&P~iHISgdsaKB;_(Y(zmViZhprf?&rLN34>mKXoYP1?pQb{YI> zhBW&^N8ori9ZFK zQ)(Lahyt!yW3tTdjq030uqO!EmqefPI|`!6YA{w6%!2>-pbu#V*kf~Mw93)G2uzl3 zm81WP9BD_~n2wB1D!)g&$DA3&egI$I0^$w92h8dutFIABT5i*RFtZIRZ2s5 zdIj>nt*_59Hw`6^y zyd#guUt+|ZMKUy4j)0xO3fqL$DBU_w54%feM3<(bW`b+rN`x(CW#n3eed4Lw{j}0h zddC3f9GZ#A%q61IB!p8&5I&B6l%8>nGq7(=*B-+%MAQH^sAT~sx>#F0^9dY$Fw5Ch z{Q+4Y01+L}!>AajJm+jOmb|QvQ4k_}{Q;O7qEx;!$NRZK-K{P{v_=@Bh^^IP@CCTM zf=WOVA7tGkYF~`l7c0ogf)!}??$%fYjgS^!I$|f&4bE|Soo=yMad)jE2ioISk^7$^ za<%48E}(T2LK_Sz16#dBDRbv-m|IK+zkFog7z&CeMGvR82F7j;EWx|TOOIxJ<+3fH z^Am`f-HvF(R}4VTE!L*m2yHeLKe-s7x;}#%2_?~q!XnQs$VoyWph7~dY6)VyDVHzy zN_e4RY2pcnfX%9)YC0yrBM`jvrsNG_k#L6e65}<1doX-C=7IvU104_~GO!R3h!E2< z3_uJj3z!X71`K)AkrEen0ETBWi1|RFk!j{AmlIeAB)cl8pte||*obmkxD-UBB)YRA z4iDUiz%KVfa_;+0!VBjZz+Wa~i&qf5o5ltA(!elS)`G!Bl)DO%5Qu69K|DUjSj%)3 zV4Ta4ltr!=7%?Y`ZgC#-$4d>gJCaa9;tE@ht#M*II1%B6cooa%&*dUJuZzRe@DaBc z@jtRFxB;erVb6muAW0($3QgwLh}8`5D$zz*o^hX;cpVrQeO8&ukg<{it^{|yPuY0= z;tip-->5yrZz{uWv0!$cY?Ta)*DPV}3-Olr5w`Y^_b?I32)Z#@p^yxG*fWLG-cx`v z&mU(!71=4!CtVF01eH$$jox;w1LJ=qJ({_k?8D<|{0(2o6;vpJM-WPyy6-nsj}WH$ zf=CgSNNF|IYFv$~C-(&Hw=?t$EOm*Qi6rd^bjglMwpBh}Hp2pB6(EgNAj4M-z_ASa z!yJgr00X%?>Ay1!a+dwHMZ_I08uS)ucPX)jERKTAhzk+VwIek$)j^bGmVo)Hp6S&+ z`Aa%R{0#UIZX-w7wvZE45u68IaFen&=TM31N5-EUS)Wov-f9Vv9u!l;SQ^r&zLg#u( zRM?GKWIU<+$tcr0f;EJ#D(1+L#3oWBgaXKWOO^$y&zv;YU46lY_bN#4M+rqVM?zet z|Dm1vu{nW=ck!RBWcn_K@GQ8J@ntIUlgfMGfi*v<62TXYp?)KR`O4~9dh0AM6f-Bx zjXBd0DtN?CFL>Mii0xS;7;v_D0OLm@PVAi6%uF+k6%uO|l7F_w5^KQ1;%;S*Z3sTB zW0GkG3Kqz2+NJ>c!Q+~6@)zTQXUX7~HYgVcU0`i=heUbJm1(!73D2aqY)zSeAJSh~ zJO=)>wCUBzd2!+J6gJr?CSr6fyf6(bi9(o8)+rR^h1jsz(JW>*oa3g6@wE$E%zado z=3*9q`#_4VgEmG)G5%fnP2_MP7mR{8{nnABxMkd1WDqE5rtgtuMWzF*#aj>`;mb-0 zFClL=tmMThzR~VXVOiN55p{3KTpb|Sv=Q~?A+A)-KMO7IN8EaBwAD9%}^beId31nvO+avBr)WMhv;e56qlak2l zaOWgVV;v#_MX^+gFV>)(fjd)$Dg{I_h50QCb}Z03;eHVZaY%p|W3rTyh}Ku+XLL!t z8Z_mZ#}v0o)_T+peXHmkB?Ww5^s{sX&9Yl>8Br{t<;KFsUB^~QTE>}TLi7a9947xS z(FH1%>+pB*dE{acKG3F!Yvm?^1y{!nYML+EM}O@U+=-orTLnW5@8B8`MA2!klDdXb znhgp&%U}e8FdAUV*07}jIWJ#oC{jyYvk_Y*PcJ7WUZ%fq;*wws3DtlDbZ0MZKD(F? z+JI@ZR2Jz#FxmOo!hd^&s6&Y}7M~QuO^9_0DzSuFU`2&aFr&{p67ryU^mL47;#>J{ zYhkBFDl5a&F>84k8yzK+tt??c13T@@mMyDKK??=07W8Il8Yee5msfC$5J5krk$hMV z_LoWxFHfmxLNthbaH_Q&T93v$(mERnTH~p$5X+fH+$rq3s2@VRn-f^n+ZI~Bt=tzXb!eo{bAu0h#E94$lzGDirZ++poYk^A_dHdw5>DTYs|&~#&L5ul`~{2_uj5^CEOD0W#YCh6l$ z*0=!5E07HyJzuaQ-?B{=RZXOzs|{68hZh4&;ZGo&QtX3`iAflTfWBgG zp!hfJg!ig>Ij#0(+Z0+W?7i3y{Q-HVEVy84o${y;M#0shK$VRuzm8R3XF8?cRT`0m zZMY&%XI&QSC|HVfOX#oCN{I^)htRW#mriAl2H9N^3>`xRpbG6b>N~^_X<06zP`j6% z7Yi>BiodzJ&WsYvOtePMIKjOV(d(4sU}R$4kM*Kwx6zklA3N5~bAuwj)tDvFEl;Fz% z?B`JHhPmv+_5@L(EEHbEib}8qQ^?EWHvItsnOSB5JFpb*a_6IVV1=pzw4IQCGQL;L zl@Jcb8Yj}&RFIlR0f#Szv6CBT5)n=)Y!57vG{;4QJ2U{%AAntpRF3>vn= zpnQ-Pl$^ShM$@HgU-hK=cs_fk|Pz0a}XD7MH4P>x{TKIj6xl5nIVTuz?} z(QUb@Go(VIit-^Dyee+qWCHf90qD~acn1(+$>U_fi0d2I>x<1`-ioYM)oVNljF!nn zLj+G5SSm{aU}GCC-Y(NDTkIEu{xy_|4`5S}7nm*^Ldo=Fl?s=gh1*O7A`$U!lK_b= zOX9oi%_zVM@n7sufeJLOmH(m55@+FbWYjR=Jos<9ahN~ab`vS(;W$=Fjoueug?LJT z$WooF3E(RA7I|M-XpC8nMq?6Q}|NdQPG6J*(sI-Up zWP497I0xw=x-CwYfr(a@u0T@hPURvpAwmT+AM|TFm(k2ip?k3^5yd4i4pmqYqN)UI z5)0v~-pec%HN6Kyz3{Hiz^CQGHOai{f24*}L*Pq+R?sR?11oJCwZ-U|hf=-5CPYPe zcI^dra45qDA1(fnX?TL-h$58dZV9Wt1)Hyfn^ge@n%96Qss$(>ldrgv4bBc68Z*@y z#Bh91n9Y~HSe+8^*bqwFRMzcr1!PW=_$U*s%0v0^|f&GW|qTf)YB#TkuR&EWV*y z1V{}P2vH{yqY?SOf=Xmm^oOa0h|QFZP})V2TMyp_GbNKQ7wObw|60SZDYgSCRnCPY zprLMKmznC9RX_$W_v$F)zsQ>;ObxJuut+crKNE+>OMAsy?VnH}`e<5JI1XI`JuDS} zA|Dmlht?k5OfCbUYes$80kNMNL#HHof2fWQu?f`LbOl1t{5s-drVFSeSR?87z&Fs> z(gEo*B*?@~%5%LpQikpUm)}DrN;;ycpvgLS#HD)JdiiUlm zDZzR(lZ7-Jrb_*yxBor7D}L=8E-4Ko^31SeDmU!d1n-#L2hz&L$Ajva@1p?8_jLiw^0LB$I6_7YF29$aCm``rt%DG7veCl#8z;Z77f1D}h-H>@9W&nGtrp z;$E;00D&wX!J6g&=#HvkE4)jf91kD%wFimb*i{6#ZCTGAUcwz#qhR9Il4hx%v-It9ieMr{{3G#o z$-);hgK-r?CjxE-U2wy2JMhjr`cIWPy(H_2?I0($N7_7lpbDn7yODxnEU!NRb}Y20 zuXE=x%$ErE!Co)%&ztc3QblD02W4p(yaGd*%u9ZfzQ3MrUk&WfT3R#Q1`SNLc7!<_ zn4bc+eje*l78!9NJxvX91g;JnJ?2-m(#+b;Op=Qfa)kUkl z&R%U_^eU^At~jEGH2KghqdakPF$}txA^A7)8{=-(52IR$wXxm2@ZpV!>AB?BesEX&I0W!>!?hj%5`WLM$DEd9sq+w1z{f?eN~9eoG>nF zI0EZ7D+>cKoxq+2tFj-)ZDs*oRuj|+2Ie)809C117$+E%OlK2HX5P?cn^KR9j1z}8 zAANBBYu+(Cyo_5up%K6k#G-m(8)CevXC^7^RBTRutOVg=2M}h_0Xh1Cl1PT`RjsGJ z;XSLCJpd;sGIF=Q*rtk62w#QNJr~Xfd!~%9O!uZht9%0TQ4}?V3^1E8h;-ZWTq{>& z&zLjPnM1rRzsWT+9P|#zY!S%j2(6aZ5~ug81@#W_Bq7xxhLE?1b0F z?o?R0hd5hMvat-&QbmU9o}KKRi|I&d`Y^cRCKr-r<^*VlQIS|yu>k5Ug1N$#XX4+O zj}6&Jpv-s<*4i}3)w?B56`RfTI@oQ}Z@WDW%nBk+f&)s9A-O!=mJu$Oo@u7PZH&ao+@n z#CGgF*6|>ecA9-GVw=?8=&}$|WWdGzh%AJ53g8l314t!?y{rr=WzZ+D$7nt11=mM( z4ZDVC%v1^U$eCE3-E55}-7@}_JrGwx$s{BUiwqYBVbZ}u!tZjuRE|~If$ckX9J1pk zuCbzqW3pYy05f^TZB}*y3eKmJ#2aJG@mM@~+Mo;Y#=_Appx7}8-m6ItVq`mEJVC^7D1Zz?`&5JyNaTlF6JuNHxkqcECF~UZrb2e8 zo2mMnEHPs#<8GF_5Jod5Vp++*hRxavLvQ2?s52g@gAmctv8hs|++=DRVj(HO>Re|Z zQq!0_@FOC`#yO9%l*UUT7NSqp&VT_$_b7oo;ajbo68bSr7v}{@&!x$z*s>s)Y zqqP9N$i~cKgrUM}ozrS&_i;X#c93?Nd8Xio4}*)asXAnlP!89+F+yfO3^7d%qW|#a zj3ndHA|YpEAk5ZSAnE218mCSS$yibxJ+U$0k-V=B0yYLSHu@C(0oVujk~)DN5F!Mg z)|hz_X|GNz0rW;3wqD2wBxvLq-gDk~(~;gNj^jmj8Y{ctP|j`IM?_634Qpju94+So zS4G;oCb$y!X;NH4Qd1@B%KVr)QYOX5OkV>)0JA?SvqU_jjA9F9qCavEm$plRGs7ub5tORb z^V7cZ*c;Q|a`QS@{?M_RNlCiiO11oe5w5I2y~%k{x7|*83fy~4Jimb7AmOYu7|dj3 z2J6JP+OHN>0h|>{(HOVH!cIfak=sb`l3sivKff|nF5a4UbQ2<`nTiDwnHk=TYwf(X5oGMp`FR&_52|VAR zl8!jCiQMdKlEP0rkKl_@1ak1=CemvDl(w6`1;6G@D)G2+L)?u!`38bc$xlg8buUT+ zhkaGn?GROV zf`r?s-W+sG!1>`n@g*28Pak=drACS0)JZB-f(m4%U_n{Ta;3GcY?@GKp3*L|PsSC| zx}Yb1X)D3Cau+-`#G-8baRP-wEr2B)?DNalbQGqhnf(4Mikla!D65bTdoTS1Wi9Di; zr?ib?1j&<+M^&c|B4_Pyu8c|yj_!zULgd3_j>W??^VUsQCk6hyZn{S#!19x-F@kRc{+S*e{y7Urju95Y=c9}p z62@Yg)5m4G0+2AazpC0iz_dDNLd*cN7G@gZ^t4Z*fuOZurzTROZZ+U>8o@(G_9H|Y z`5Wd*a!UZy?AcSwFMpYL6AmM{O2fnCX_lCP(IwD0Re3p${3kBW6naRQ00(BXk&Qy) zM;pf?ooKbH1c~o8U1$BGM}<(d@6`keM?QN#mJqfvq|?L?nO0ev`mMr6W}yF1rs;;HyL@3Jx4*!o(bE zZLaUF2liznA+nG1V}^7loYeRdG*1zNZb~&u(9N_f)El~xPF#)(ubRri?55#M*T-;3 z9{nmCoiE5&sFBBr1WUP<3db8qJ(sv6o!EurRsmB1OwwN z^h3_PaI8z@(zi>O2zo0F-_rpAP;q3IXZPindEt_t2IRBNMFJ*MC3!bV{es|0PH;GX zLpJ;WYe2#Rsdf?O?uC50au=8f9Rm=?fE=D3j;O?AL!EUC~?Uq2I%CpP?x z$w=I@57do@+HR^jnHPF1=7374t zzW0in+Ne~iYlU!0t%I=j29|<7TjbC4`%~7CIeV?gYjVk#b*hid<3wm}*zRM;ZXyZy zj7Qc zmMdycIXbQc`_l3a_p@ku*I`;UEE(7TzxoX%VgC4uCS7+8KOHn>m5}awK85Gw*@Le` z8mrv|5aszX_p@+whhIzTC(Hftn(E!JL>+l3q<&YxSKh43QJeFpPB+@;cyH2_>+rg1 z9i*6>J#g@ucW&A4$xq&x_O|?fVf(OE-V1O&!7=WZoSWxf_x|T*?*$N%6$|HmH-G%+ z|40hXYp>Z#e0u$zXkGPdWrZu%Dln}AbFBe(pGv$|YX0{LOyk(E!^gZlaoqz`e(_{( zSGPFt_G=xM+fC(k$+LX(*-!mugiL>9+h<>H8rkKQ50`KLcIDu2(+1B>3r{=~{m3=m zvsU+?EK6$2)D6bM;kFx3Z;L(px98f9c)v|?$0v0CYMy=eZ*yl@8Ur33x3+Lj_`)4O zj_vy=Z*L*kO$!q2=14#7x6IO})1F~wtM@0g9Lb6bgFRl=1|wO6l9l9X(d{b58uk)O zl2fL~$wv$sYv=Sz=^ej(=~BzyzpUFbOy~2|Qz7kpy}qtv?XJ?-QbrCid@}wS7wi-=QdBf+LUdp$gld>#b>hKuA3*zqYV~#iFKVb zcWzec>ZzU+pEqh(WWk~*-gTy<33$_%Rb_rb4>&r_T)*z+VSe5I-KOim+q^4s znz=in(_PCGbUpsw{m#Ub--Oid4%oJM#pM%=FoiYZ^5x4j>Mp+=zT9q~FOhfXmaNjA z-ezEvoYF{{*u6f`cB4RB?f9Q98}2OLlu(k*=yUw|@n|^pI_zoBmm(`p*uYMh%AtqS zU2i-zHMewXjrpRKr(wqo2k|_1(h`h~+c);yh}mdOtrqTb5@)-(&8NVmkpCK-%oQ1O zsPO)k(%>$saWHyE|0GOjb}GZ_Qlm#7$&Y&m_5l`zjLzrB#wW?z;>zeU zuK{O*b9H;=9P5RXz$fm?ku+QFO_A1H^B$T1 zOj4H)cWoK?YM&#gwk=I-%o>$_ZqlvU#iM@qnb;}n-)nbInrmDXcE;BAtCKi*5r$mE z_LshTtJn|c5>Ed9`)iXXE%b~G8qFdDs>SuxsZ$MaB^1hH$2VmdVgu`g!rwp9bM(Al zR%BM@HhI~SO^)&cNpXZ!e=z!s?fb=c)Y^nr+};&U0@`V`KNvPcEEfyooTL{V{cYfc zb6e=(x{1O2r{0_VDuU zB$}wO4l!DWh;;KT7ngT^J=oB;{8;>6QOe1S6;G}axxAz9lcl4z?_wJg({oZbuiYKD zW8J+k4EO8MXPDm$!`GgCG(7X-SE-Tp6_#vM-q~IA1Mhy}-Ni@$GBNibvr3MoO9n%W z_}AYbncw)J{%=#4_8WTfX*|A{L(=Y+*4p6FamBa1wYgefUysM+G;gjQM zKN;6m|K!xArz4GPV=Hr3qLX*&(#|43o;E@}>3>Y@e)7zjH|EY=DVhO|Fq{H)JLMA# znL{Tet#{%_&`SY*#(yRg1Py1LtUILH9=zN1Hy0gyM%fn3m38#RqGytr zzQRgk@S(P%fU*YkFiRhCK_v)3^c%VOOU?C5r8zeQiL?>bl-?6lbHKBTnox=PH8CR_ z#8_~C{NVVK!KDp~;txJmki#trfDbeq1L-m$_0@X0fz;hb%#X#kxy}pWy6CI+T~I-G|YL!E_cONv_H3EqPzb!-lL(DvA4L0@-lbNAtq^G}?4 z#V}urr)Q4bHe}4Ys@*q~uGzIF=irTzRgaC2(*h#S-D12Dlv@-P`ReC^fBpC7-On@` z_gsk|^!JY?DWw%k6JJScY(-JhTbpM#UCD^5%(3D;>bGL;MHoG;wqrw&_ZCRYu(;n- zV%SG~_-UFiQYBip*>T03TRS_#I@{Q;{vL_>N{0faSg1aPvP5VOW&sTN<9rEV&R_BnUJZ4V@~OUlx#qXQ?&Y& zG9n)m9b{3UM6UG*nsO_fYSu>sfXVJUmO%uFy&z_O4N~D6BnDE){UROZ`bMZN9Z^{w zEQiaDom&7)3a6)=A&1)r72mOXc9(T`#FqyIJTm*cnufG_z0cgSu4;Y%qel|0F&Qg9%Q;$~ zWG*P{ZNA$5#?PO<>c4IKypY)Bm9(fxK1mNzL6m8zZPa@c3r~!X^h&)r(wAR-$Y?)p zoZlZUmzw{l4X1XtNY_B=wVNwz?yua9Vm&mR4#l`HUF=~MoG;u#S(!+7+}X1EL3G60 zlj1fa_u5^q+E?JDy*J+Kh~11S85}<;yen6OI`EK~$na$3*t8BX%+^@+8C9Uh4_)G> zU_)$EvrDJu-feBd@`tY?=~Fx}m3(Pz{Q0r!P?eIqa7w`g!xjY0OPBpDpZ9u=5BJaB-M>mt{|VCxAOe5E4jMVd4}&7XjjpO{ zQP^kj+wA(6+Q*;aTO#czB9Gu}VyKC#YWf>RFase6L`X0=)o2BxWJ2IF;>$BiVHMdOskHrES#?~VPiMosR9rE%Beou&{zR|D zE>Crtab34A0B0TbpFPgg4_#-DoVbZG{jb9PAl7H zEDXx6EuTJl%7((E>NmUGGc4!iPqCQiF#4~53MqXcrKmc^5F*KaFHmGCJaIU#cWP&# zp}{~yP4aiILeB)QGe2Qi02wHTL1Y~Rd*6^xm8r1GX6DlPpic?wdcWv=He9Dp76akn z`FOZGu~8vMMTHS20=A>kUp5n_T^=0W+?Bn+_UT80?$4_Ikl%T&L_RLIrF{wYMufKK~pY;@9C&bxyJ2nll| zWtw^8erNa)Jspb5*X(LU#<`^u;)sC>$$&mG(orlRcB#IrlR4?NvYGem zdq;JszOVS@yX5%6yq_yOpX~F&n#fDh@j;fad#t?iFOvEAcgfX@i}wz?VQ;s@SEYFA z6|`;CcKo=dBum#ttnL0@#_C>SncM50-?{MG(;ix1k!1QmyL+Yd9H&LRXGs(>66wDI zvlDOtY4la#fe=9s?F(UoXm%*@fHcq(?QYR1Qkrm~xtM?+c#rFRe!|%#WjV!w8xM;u zOTu|G$TXBuWrbkj0k3pGVV3k-%4#2y-q|6&;fk|b5m;Bul~1~c7YKeTatDTnwjXBq zu|BgQX7B0T9(rw7uYz|bna0K)?EFg9S2eb{U-BXjJrVS)%#}S{zuS}(^g;iEL7Qpt%WCkADtsOrg~w_!!k6`ZhWBAp6mOtl?r;p_rtGD z6m0G`x%$JhXqjf5kEubkb@n~V1!x}#vG>^|bONBqNi^Fp!7Vq2HG-^>&2m908GtC8 zYr*k57NQSxxC)-jlXj{5@FF$}6-zt-H)o4DT8lx->z?`oTR+r{*wdWC>lA( z{KcY3D^*QqUcq9k=nWFa(YFX{p1_gvZ@<{!CTQH(Qive1& z$y$W24%}5&_i$cHaM{VNlMYWF)I!n!Av2rgwsFG!MEOI&v&qxN{K1e2Opo)`QOPj& zOh#;N&Yw4cvj773A!;m|Buuk4nZT*aX}>=C+HSf|gDj zxIFRQ%G2|wR0O5_77o#84@uu@ADMli(-*h<__n)w;JI0aUx$c8Y1CfJ2^a8hty+)l zbA5HmZA0cPIW-Mg5O=oUK04~1clL^nk>nP1T7U3xia^o$lJo|&h>T|naPYE{Db@O~ zx6cxpn0aM;zIQZeFFSSe6C@Al!M!s8q;+P#)yz2_XFe9A_cG zuYss(N8}A|gPlH$_#G01j0;_^b~n6yJaSq|$QW41i$T1H$3a}lL3kaWM_0;+<${ZH zY?t50_kdi&c%~4@nLV>&uf=+&rs2dIHY9vG6#{kux2z);07iwOm7gJap|-5gd?EP8 za`U?{t<&A`MZ<^ojPvn^IrV?G9XXb4`Fk&e>G`yWWpZ%L-rjR>{M((MJ^FmiR4 zzx1EhXXdBJGkxBA>WMb(emS@6c4wq!%*51zmA{V5l0K-+y5FaIxgqV~!w)}v^5n_F zU%z=Cxf~=8zdsQ@asN!)n}whIi1Lq)mC@~2N`5e}30!~Tr#piip4yUAH?D;qJcc}P zO5C|S|MVrYkvSKbSQIh7i7Ai3a~yESoQHpu*fr4Wq+O-}1Gv#+k2ltihsNt942)ky zV-i_|Il2Xv02VRBWs#u#nP#Lnk}-1$-jFZ@K&~kVPD~O6K!N^D#5l7z2bc~^^eBY{ zU4R52ZWMJXtAm^nzfuTBY#$%=(<4`-pL%M>>ad91PIH$D>EYPW7waqf8E*}?9-J#9 zKxYmyJ0_Hg6rU-}H%v_nZakJ8x4*35NNl!wQ2nC3%`@6`esh24f}L-DR(Pz_%4M0~ zNB58=(-xlSImMKEKIxn7H3vq9el#^b$E*9L(R>aWaGHL8<0jt=i$q*`<9}t6yv{^=>U92Ws+^o)p6#)UuPFQA8}J~ z-)EoLU3od@-k@8i&D*tb@V?-n+#o~K+)?4nV=LFze=*vaoTu&SIJl(UgHOm-eRU;h zhWT>0Rj)~RjNPEdScswNE!f->+clcs6ibABk6~AJPEJlnJ0vz&f06&)5&u80IdYA5 zZE`fBVt2Ws0!A(80vt9q1BkjbiHRs|jE?vixenl5SQBw71h6nbrSa(vtJ4og@#K{# zvrqlMgBx#$F}sOLVT@LckR+F+B+M`%WU6BHLyH4Q2I~)Pi$R3x*ietGQ~ae3@g3=S ziFwuTlxM_G<<<%=X8=mrkLaYI98ALjcGMG98U_5uj)z>k{~0v4pt4&;bvKqqB`w+} z0aG{%VeZhR2n36%x3Hl<*_k+ik;eE%9j{3h6iWf7E}$x>!s4ERU)5Jo9PllK`1+7- zN5oxpmzi7Yb<9qH9q8+t`uDT)|4{>Co5N^T7L%Mb638<^H!m%MpUNb#4`3&-RK z&nW5Kd;EC6wue4Hw|n0Q8$#X|Og+I8Ylzq58d3easUi-TC9n(j*LY@Uplf6TQRYSvHTL zC#aWZ##pLnA{`pgR|7On$I=r0RRcwZ{;RBRwTOeucDZ9K9(qRjt(_u50DM63%F+%Dd* zg>h}(t;z|4LM4{W9!MlRMUqy`6qS`>-5JL5v24&MrppkG2D~GNq&n>i%<9jTwi~TN z0^T%`iR&03LKG_)$7x*|GYGcufzjk2QL%s-p^lQURK~6iH0Vq;jgyr3 z+52>}pNDQU$;|x!_pfiQcfD(U>wO`=PxZl(@mrrP={e%H1si)fs%Fm5-(4Dc{4Zgd zFMgifr`ts@jOo?wwVuBW&pfoF*PNoKnqJ+Qx5_@M;^*~ygu&THI<9pM&T$AZGQZbn zF&8fD?43WfSM1iv{>S^*J5G(vsxHXyt zW}pnw^n);qzKQ7zo~I7U;sx)J0G+>_D#`?r_C>pJKHngy)M3U zSjQU%J~8Iwu<#2W{AKvc>QB~esGU*qVNTIUE8{bWu#d6dKY5HsShom64#J|?A& zc=LhbEwPySLti#Y4}wh>MqSBFSNWb-!uW`a7%p*jR)T)WUC&7v&YG{sR&HB=clq@v zU8U}!_B&3@d!?#<$1a;~rJbfP*|%`u+2U+uZ}t5JX2mHPGb54B&C{Of52Kh1pW!{X_C zCU5#_^w3RL&vFlGE6wO^{|`DyBmQm1oi$(gj_FW1=@&aExdAMJjBs5(3uQ>aJ_)_ju``YLGZ`qJFCaG6AO`hB!( z?a$UE)GA+0xEVJXOvhR;S&Ls-DgU5ttL;1O-9W#zeYx#j>Pu>~BY$)mT3m(s$fojh zv=INuN8|11Fa6w4;{2+g!?tL%=MCon4})oue6iAW{@6;WMO){Otzb7>=Z~%Ui?D4V z00D><_YbDGHpBsCJpCVdgi>haA9MbRz4PeZXJ=wUOn&2fa@ z-_&HkGXQm(axqtn6C;tC`iEU@UqInn&^4$hqUtJZKU|j-!>Dr{TqZpkuDm zhv6`w3MtO<3}?<%a+>_-U^5fc7^XTna>NvypjpOlH)~aJ##j}vu%yy|>1B!P#Ns^L zAv!_+nf16FKin4WY9ungXb zP2~J=TGYCUlUT?NszZdPVl4_jPZC)=P)%)Y5=&FObyGn|NF|nqD@}!BF-$7-QPaU# z18hu`D2Ds|na#iS;g79(ej1nvjXHfD zuynMxVpC~?n*AdR{o(of3Sb2qkjx!3-3%JxmB)U86PB7kNGmf!?7C$a=U;2IB%h&w zu3zAswbu;uz+2g|mokjoQfH7Q=`k$mM>w6-CSz+JpP;k(Ip|pTmN=WP)s5>2K4@>F z19Ogzl0fAVs&L!LDjVm1BL|fwOVeB9TFhpVKbLEyoP$0t0Zl@5n#cP`_7!tpu8Sn>?=V}qiOQ|$xM*f=n73M7!IaglRfpIIrd*x zNYBBobV*<}@Gm??O?!QR8)xJY>VkD=a zf`K($+k_+GHF9=83xM`NQR4t}N~xVPOzs?O`h+Id`DI?>CE1P*cMwkxV@Ol!!1W`1 zjQtJPao7Sf4zo@-Gpb8g3m>8r_9kNUMzLUK4Dv2quqM|jgjgs1^ZyVzF>LGL+(3{* zsize&QZQQ2NrQL^L#zk2jaJS~?P(J(QJkc_nZ}EH8mWRpFBK-SwAc_e5ViF>zN9(w z?HV~MS=YMEGh_u3oHfbR;D7s<@rtZU8dvHa~>2 z=IawABmfNL;2?4v{9%4~jY`&O6AyJ)x6A)>AE08PDIK?H#-iL-+JH!+CY~3;;u`^5 zb>+KGHY){oVVwiLE@nw}cq?2Qx7_yii%Fd6fop2|Dp-VuuLY;*i!jD;WA}p)w$dbA zwu|BGeEn&SR7-(aP#B9^^nY^7I9tM#CM5JA6Nntc8CHu!QIyQ%bJ60r6__V9(Qk!3fTcDZ3G6kbT_{8(u{DWu_ zR^s;Zk2K85zJvV{be3we&gG0(lqat@zKZ>r{QV%rAW4Q%j9@Cq^I~_oXk!`>&FMaP zO|v+O3mC#-k}7Foz8zbo%tT8wUMH4axg5^tZvi~}OwM)!KFQo^i!oZwRrE>MG)`*- zELCPqAH=c_-LXP7=Wf{iJg~(I7RQUa2^hRdpPS5YbW?V+`1@_91yg*bj84(=Rpx zfDvY_Ge+qdNga+c(hc&4>O7jWibYn0;ZQK1ENK>6BHWNrJO_kD$`L11?1+0UE89QS zChLH<9tWUxZdlftI(0S)FV}OJV8TL9c`d2rAxUekRD?N8+a`d?p`C5{blsc zF>OQFQ#j*eUm(>c$KQCB=){Hl(~$ByV1g&iqM51HMBiFtA{KzhAY9yA&|gzDn9Sd??zy#2q#PkEj|76=|z$&8XfW{3p0qDdAVRMh%(b zmStS6n2G-po@5ZzC}W!W#nPe`I%Zgoi}z3K@e7ObQew^wirI=lW-HYFaA)Rsr}A;0 z#=%8MKrr;9zPHuC~ z=OJ9duG5&SBzy!ztkL0=C^?omOoBeJo;LHbyqx;Y%+U|U0sfGw2N{%^~>R z5zn1LNtAS3{= z=HGfjDUk!l`41OqUBMw(o{jjiE|;I9IN+Bn=%~F<^`(yi8wAa|NTO5&{qPb&n4^ep zb~=+8daJ;*PFScg%?md3Yth{Bg%l*&erMb?<_=#fl)0JfsT`1S*uH}+&hi^JByWrV zIQVC<5Dixe--f`=dZaQPx<}pzn{t`YC{vSx`~5^fg96EUxUPo?*j7j6fX^{v5?BpB zU0yB!|GDQj#g?46BLK=!}t7Z zkkYZ_82=6$8pddye-lDadL~f}0XC-?|m2;->6h1uWGn9+0x#|!hX7YE0ehbo%pJkNgpTpZhsqSMjb zM5SuVfr64%c^Y1-Cl)197NJx=3<*4h+&A5nS$m;1!I1cn#R!g9^fYQXJ7a}}t1#B> zpjMzcx|{KOqBRtV{dlZZKE-p^oC;$qsNaIip892_SbkxSLLy`;Jr;EZb;&SPA z$bJFDnjyJtgi?A;bRdw(jF?F;Q_MJ$!O9|dmpnrU8Jc!RGLC+LjtBI*8NFJ;WA)WJ z&vP9}-Zg52S_wq4^~EALeLV<6$+{Sk)4`gcDFs~$AsgYD@^nI=&?Gp&7oE#4G9E@x z1Z%+)Os`q z+wqnHS}0X>wOry&0#eu6LahRAWVv{ql-rR%k4z;=Q{g!YpUi+5z0KKF;;c?$Wy8k& z!3LN|;D-DY$sMng-qEPg=^3hYVWg;y2qqqt?GQ=CFp)Vb)%^G~gn}i=2!=5tVdrVs zK?@2;WfyW8G+?Id9J^yvDonSoP=oL|_<3ax1oHNeXh!tVC6$V3o>Zodj&J1rV}1yv z5=PZYGfFil+A|WBn34Kq&1Og$MBSmO4yAtcB-=qVbE}%dL>FbU?DDe`9%NQ2T~tx9 z{4;H!Y$f1Yp(u)xoAQvjI+WsE7y4U{tm_rUI7*()eJ#;$Vi~c8^f<)oAuk**=1uBW zB8ad_2@&VOkKQ8&i@eEz?t@X{LLJyKARK$eJeCP)IXu#r7;BIsZDhr)$u5# zWL?GUReFeHEH$h#v+$>Z(UGa-Cz_b$wXLgv5M9CDl6-1x%udo@bQMbc>1n+a#d&Gr zco$M2Bf>M1QuNuRBk4L-rx4^-swbAH+00a1mWvq}98+ISS!o(_d(pI#%k$6aW!xm` zOch&Y!OyH~XA0qZwqOv1SAD&4eo0J+R*RP~8Zly^EP^{x0%$kt%VoaJOksV>cZ+8~ zW-3YA`?0SOq$1nW{CmYJWVpdQWALkc)mJ2Oa$K17FarEu6Ag-HImHlPB+WSroFQ4;RuqsHUhbED z3GrJPWta!C;n)Xfya;vA%QLub2GZ3Sv9*>wCc-9pw;IhP7gNR9%>4<^K<+cRZKi*k(;_Iw^TQpjt|vl5o77lZM*NZ_ZI4qIcxDnYNhizdZeqwGoRWMV)R)@ zlH4>I$B6(~`jxM5&|5gpF0bek zX@Z03U~J+XH{*-+^$Mct%m&HD`nNUKKzux^l5tbc+N)hoNX1T@wF~(#g>qFhwqTCu}y?BiD1@xafXse5Rb?48Vq97yg*L`nQbrqudykh4IGsy!31-9m2OY3dmIm%)$GpC;b-59V0D@4Je?O| z9tA2oiF2LeV0HL#`~mG~K0amcM!AqkOVFGFCCW|6Ea(L1qSTrDLt?tzUTjve5s_)B z33&2vYHKR8IYJ0}bcDl#{Uc?#aq;-jVEap+!k9<}S&HEgnY?iora1(Pn;@ih6Frqk zdMFmVwg{OK+3?o;0xRlQ*3|*$;1{&aF#qa|`!fu(pfC=0U zH-0;19BJQ-pM8b(7`>IAJ$y$LiyaEVE$V|s3biay@j3d1!2NVepfs|{Gt049O1i>& zx-+C@oG>XW#kW#qtgMeKt4=UABaq$2vo*TaGy?lNmCb2>q-42-{Fs!y#k20hjq+zc z+yJAbGLyWKKTim*M7QIHD^g~XGnL7Za;SL4az4j!3YDW|h?L1+24F{y)5)x|hGkbH zrDVj1aXX?}lpVQv)-|b?2(YA*_d(YRe8=7+6~rk_Bkk9rJRIu67K%t=ts8fMahs-_ zD0wmr(j-e_i}cLi#TeGE62LnZl9A*Rfli42J9+BbG{0 z^lP|q8n^JSvx=SwNJ}&6!ueL(QX3~SqF^)^Umnib46Q1SPMCS&4#6!4eg08t#327+jYtXCl3Q#8x^0$zE9;Ne>2srZ!{j98iv1iT@4V|AhlW!Jr&&B=JSLOxf?*Yldh`TFCHv z)-1y(FAKK9XiFrP=~b;DJ+a@;ndu_TVKXD(<#!kE!X@K|F{y@|ohswuDgx3dBMomv zFDYzGm%fpEN*0?gsALThJ;bn;urSaPCr=lb3o6~exr9uV9oFOrn5n#CD0G36@fcC(-~E`{4Qs z@M!Y#^s&46(A=tpD;C$&J>zSr z6^(VcCPU9sjaj0A#4`k%99>6ApYWF+)DOTh#iufb5WtulXwfuM-+2hM43uQyNP5dd z(Y$|$szZsEQ7r=bz1TJzK~v}038RE=gz2K(+Jwx_jE^w8%OERyX1FO1@CuCEZi=a; zmP=sa1ZcFk`IJTVMLVl3#iF6FpMe;~K(D8R}AjN2TRR#{5iLgq! z-&R?hjlpyaV%Y)?z!pS(D(Ap|I+Qw%Vf4q=3Dek0ZtLl+(Iz*)j@(Fefe1XU5e_hO zv#9}7<#tN>u!D+^NfoA#{7=}oPPo~$>(Tfl>M@FDG9w^|9N8D~@2Jvb|CAAcO)_!u zjO2Tm1aR(zE*pQKB&mdhTCSzNs+k~$#92ut?Ps29%?Qbd?2BNWysC3#`}XfxW3KW; zCdCc862np8$&qG*+un5Me#aZp+xTf82#GL!h-W5EVz^=J8M?Mu$x3nYd84)r@x9uZ z#&;9UslJYetfPStY;@hU=(HX((pPhF=H+3IfJiT*J_ZrzX=V=1uah>!?RJntt(-fa z4&OnRwWAsWxPu7-gWhbN-zw{h{b5m!fz05JV9L!#g7sbqAl7~SyC#54>nr|O^z5&q zs|~ry-snA~N0{3Zg`yQ?=k!^E;^f3=HTF-r?5dANE9Ih_vt%dO&p3f;-5cyf+<<)* z%t70!q(F5gb*Xv(+E zaC5UqV-ey&vYH({(`eA*r&fN zSj2Rl;1i{>D?g<-;FjmQ2=ELPeWcEj6A@_dBTDHVKq>QEq7*tJwg{Rj(V$M#oSwAK zri(WIyIBRrv#JMj*Qni#tK#cPepN$B)QB@JkCQqS%$Rq>YGqlX>1i z^pf)9bIk7!?VOTIgmp=}*Tbm{6Xs!V!;c6M1xHQKKir-C!m#g=#S7TuGZhW(I}FjJ zMqqwrA|c9JX*Cmx$bZnO=Rrse&&=c^_&irB|C$6SiP6sDaOqG2O(+#pGs`|Ge@-=o zbDm{Mcus~Bv`>b0VhBOz`(c~PHy7w@hMr9TS*%HrDNM7p39b9^M`kjUN;S>;(%RpC zWE5Y>rIx8NWuV)nDbXtOT*@%~jXepEuq*{= zr@``iWQn5Wn-emtn4uY!3s@OJZ@>p9Pd27%AU-}%Qgp&7^bX<3zKno(V}H8t^vqc$ zW$RDe#cZh&j{(8Oag_}tn0c0~j0$DH4`oi&_NuH1o|T73gc5RR(SZj2KH)R2N*+l$ zJ+bH7QE+i^DB?Jnp0LMVB#hQI67fCE{MtF+-{PPv(>LDICI(=}4Y@LO0y zN=c_zhc8y!vQ7I2$(k(RCceek!ZT?7Yve_EoBQ|-O=c~Jub{7&1CwJ^aJ-*jQFleZ z2>}J6^4hYN!{0n`^oZ=xWve-W@d*>n2!8B;S4xx9Hf@CVUfd z2;0HagUvLmrq&GZ2QHlXxwbel(ABQc$c3FY;*X}bJN`#OfP>~)L&o}Viy+dcfr}&W_MfbSb zI}~EKs|KH=a+lI*;-`etAD9F?FxwW0A=@QvJO7o-ljNY%Lll+?RM(wqbV%C1~Ee_>+M?o~y zE!J5PQ(15nspp$}XBk&8*f(fhC_mA}tpzv~D2p>8DOYQNIhaCP%l-zRa3cW8x!`C4 zK`+@DlVK>WzKH9{ThXx}-k1Fo`enm24S}l>5Vyf|C>OHNQ-&-)j5&>}JkdwEdPaXT z;Sm|LIrOQJnHjZ22H7;9HA`%G(H|e`E)Hi+1d^0vi(5GVy#DJwuaILHFAJot$((&Fk({A#2z5jgz+lv&qrXAt z!BZ$65mm7n!c@@UYXo0AKL@}&UG*0Ac3{^Ff~vOPRSw^9b$kP>0-i>8gc#CM?;tme z8j*LrDlOVzOt^rOR;GQq(!>^i8jO(+S%a$wWQUtyu<_qA<$aYR2MWA8_HzcOyNGdEiTLPm$P31Ai zYRJJ^Sko~T{Bw5NG?Vp9lt1bymo~5P5pQz3I$Xrq=hQNI0~`^f(IpV$yG|6_n~GD| zM-_CE<+?7myb)Z^RTP!SQXWB`BQ6&o!*(Q<@{g-eU|Hve?m(0*KMAwDd6HjrhW#Uz zWVkz<32%d0La>FMB1ix&S12nm&Kh_^0DRV(=rUatMgYHsbkK1~!|i#OmZ%h!EIOYt zojR0pir>dPm5hpx$ip`=^AVZjHOD0BSSG7!itTJ13?Vku6kO<(0>lZ2{Q-xY!3k|^ zoJ|M#6wg2Of9Z!Fk_m`#Gc`tXg&?x}DuN@IOrDILt+a?Sp9#FvsjcUaae)M+-l_Ii z7+AXufiv|mOxDLxh=5F^8VT)x;STJZ=5{=;_o+)+e`SM1}Jm})j7`+ zHE4Z>WZZ7LFTFwRhsY>8PQ4z5#IAy!yEZn9EB9=zJDM29|t-tq}`kV15V(1=b^MpD+W3b#hnDHZq-gXgm4Q zCmxr})DIaGgd2fjqH^#sjX(I?#$sw)1Jp!3mWyax@#q^4Nx- zfO+@LwP(^)$-w9)0uAPKn39JD3WoO2bj?~{o>R`s=ECa@Vi?@KrcJ1fzQfn!_Tt9J zW2(71WW9n88PC;52_4p>0rC)f&&;u^E;u%?ZdqhOPiyh)oxL|Ljy^Ur@zl<(){{An z8*(Nlyriy991ci5%=8lg)rO6Ld*)HmVc!E0iy=a_XE+n=UO4?vo{{0v{z1@?VAy>4 zgA`9pcw*pCCyKaG;d%f224nC-9@|k}0VXd&n8Qq*p*zr)7}4JjqKe?4kw(E4OvJk; zA0nd@Cb+K%YW+I!XVlkV-&(ZLJWZeHapZvX|6usYReO8(@o*=Z)O zaa66nh*$!83hgvdgX%F0O3e&>Du{tEtE-&G##>1;PzGR*CW%vBhEwzrmD*KtT6lnT z4QLmVF`yt8z;0d6S?Zh7@lT&4(*esKjbVwwf($ z-H-ccUesRGhg4`=lp6I5PR(Zp!L)x-u}bni>C!J`BY@)@ zl0|{9%sN0R)M^T$NTUO+Q~6mwZ+>he1PNzfY1B6~g-vtjjkFjgPa^TP4cFUvUlJR( zfA{>B?CP7WE>o8;e{5h_*Fj-e{B{>yGUCdQ3kP0(&)&ibzq+L7&7F~0UAU#6=S9%e}YI{MzGuGnO8 zLyN&CAfYR=l7at;To`yCYOzK_T{=<|>b_r<8V;qkhzEDrSJI8)!+bZgD(#s?2?Yr~ zMDM4GNX(Agb}?)Wy@*vtePD0rrb~=)!;@<$v7wf=X469z3$%n!f{D`Cb@1(nm{pKr z`R&zXxb@r=FX+eD~Z}9=dea&h0Dh-xZ{NUVO0Vn+L~i8ud`u50L}r}J$dN?a*&*3iZp zrI#&vOXC)^vJvj+ql}|jo*JTR`Z-ThCv=gWP|%f4h}5F--G;?#*4CmE%*vMeap9?8 z6~_OO`bCsmnlxWsQ*bFr9bB|`B>aY~jR*@kkx@k*eGB<(BLc-aDm2$JGXBJQaMOIc z(c7r1MlTKw86du;n{Z;#mYfx3b3W)kdUM*>8kiXQtl;X74`t-vYTfNwBvdCkqsdCI%FMCJaEWV5rd>X=R7U-XO}cdDAMP> zpDH_HQeeFbdb}l-`VKwZ1CS!EqOeR{uC$2=Bf^sDR}`XS*|H$HdIr9PM}(j$9H)p> ztc2e|eHet&goPfc)I%Vh&_X&jbQOwtgeXxpOw|yc!ZL#LM1!SrFV!jMX(|Y%1oSM! zMZm)u_7@ul4?H}0#ImIkmF~$s@0#^~b(AB|dH1Ft?zr~e_l`%8n^>EC z_KMgxsti_=zvSC$GDTD8GZgzjI(^am|iP+L6%wB z%;k}2{a@waz#=CetJmvNUn08PtSd!Vl4FxUS8lH*1OoL-g@edH=A*M5;% z@Oo$K_}$6duM6)|x6Jd49oIN2`nA7gV8`9J6wNQ18WR5m53E~40%eH1_ZfL-EaFxg z?Rl~4e_^rekjKt|*Y(HZKB9QS0(uwOryN>h8TVJ73%bpXH4yjQ&Mit%un`fviji9# z37(nu#nNi0lT|w>JPREy+kjy69O(#*O+iP#+3W)EEU2y(T*?Cu0ogj67efH9!p5;3 zl0TycuP>J*9vi=;xhIb}nR|<+U@3n2W$T-y;8k8u_q^T+d@cuX83ZF#jlo6m5(WGL zLt>4vp7gC5e{o^;lysu^MjA(b9|0c;R5$i#GN^oGBcf`aOX$B}lDi)krNSc^Q#;bp zm#LkEN9nbO?Oxx0`2Xxa=Y|^|vduk^6qB;~*~U{buYFtf>VbQ~&&7{Dl#~6*&YuGp z_MJ8%XU@QO7u+x><0t+8ex1oyn~#pxTAgfd{3$VuH5xZkxihFFO=Z-CE<&tWH=9Hv z8Gg_JlDgtfoQbnl83+0)APN=8f>K(zUP+JZ0Slixb`ZWuFcAMCy)J&2G`tu~C4g*T zn-<@`gEOd+`Prl`iW>xykUy3VS7OUE4wD(SJcy4g% zlJ=#Y2K8!lgbvQ}Tqk#iTQ9&+rJdV|Ot$F~T3ccb+s6!Si+~S@SzX414y>zXAD6Wv zPG4L|TMDRB+p2h1G(hVCAT{;R;)SHGk|JZE=kK`Vgn#v`rgZReOJIwdolexv=Oe3M z#-o0e?X{VZc9JL$r`JkvOqkoquH}3qHXT*Nk5&h7;A9NY%4TNe)x@4w$DgDOs#yA< z`=#93y+I50TmQrMtem<<*Q`JGo1^vhf68>cH9zjJXxCd(JuiD!|I0?aRQ~4Wt>7^< zq}!ca^U1zm2$bPgMu4kV0wO;&qZmLqa@>Of;=>RqlsQpDap2CQdsZ;?%h>4&bzDJ z7cr=2^Aq+_M@KrU$7O9BZ3};U{2jkJ^S{5R+sPK-j=}^=q{M3N#?Qj?;c}eTH9Y-j z{7x^@6=npcL;I9JoAyQ(^^B5OhQln>R7xKdF)vwEUHpUTd zIkx}t!C&_7_wDFcFM9Zj^rt+}rZiM__l>sRtSkN`?1hW^eY?HG-##qZ)`HN0%d&Dp z=*N&0vmudb^?w7I=awQFzQk7CnSU?UI<_h=2o+nW;G;QIu7puKbFN9C9oQXUbV7wa z`E+ssJF6&l>rI-5lUPziH$n^4KVMMV6%bwy9a~Bo>N-atE2iHuE_os{SI`a&%Wg9b zhyl{eeF`Up%(p&xaw|f{7r5joqg?Lyk7P!ep=i&$PhZzS!r6 z(cK^DcI_v*$rprJj~2DT9+BY}7-

?0-~76P$?}VG2ab3N~{v16i7$jW`Z83TtO8 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 literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/two-streams-space.png b/documentation/docs/public/images/operators/performance/two-streams-space.png new file mode 100644 index 0000000000000000000000000000000000000000..1f602a67c9b9a0a92463ecbd3d7333deaa3221d8 GIT binary patch literal 157019 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

YgyL?E6IgzuZ=4~!U+9zRdS+*cj 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 literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/vps-quota.png b/documentation/docs/public/images/operators/performance/vps-quota.png new file mode 100644 index 0000000000000000000000000000000000000000..cae056fe63f4bfc1752ef8ba2ceac734092c448f GIT binary patch literal 283709 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 }SzC-^c#WMaMk=(R_D%52p)22;obS%i);)sS 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 Date: Fri, 7 Nov 2025 21:17:42 +0000 Subject: [PATCH 08/26] Typescript SDK 1.4.1 (#6146) * wasm: mix-fetch: remove harbour master client and use Nym API client * wasm: mix-fetch: fix up internal tester * Release Typescript SDK v1.4.1 * remove bump version tool from workspace * ts-sdk: contract clients: update and re-run autogen * ts: fix linting errors * update go * pin minimatch typings to fix lint errors * bump versions to rc * Update publish-sdk-npm.yml * Update publish-sdk-npm.yml * Update publish-sdk-npm.yml * Update publish-sdk-npm.yml * try disable typedoc because of minimatch errors * bump versions to rc0 * limit packages published to only wasm clients * TS SDK 1.4.1-rc1 * simplify version dependencies and add dist to dev mode * add back version complexity for CI * TS SDK 1.4.1-rc2 * ts-sdk: fix minimatch dependency and correct casing on `selfAddress` function call * wasm: rename `main` to `main_js` to avoid collision errors in exporting main from tests see https://github.com/wasm-bindgen/wasm-bindgen/issues/2206 * improve wasm js tests * TS SDK 1.4.1-rc3 * update example docs * TS SDK 1.4.1 release * update docs dependencies to SDK 1.4.1 * update yarn lock file after TS SDK 1.4.1 publish * Update ci-lint-typescript.yml * Update ci-lint-typescript.yml * Update ci-nym-wallet-storybook.yml * Bump node tester version and add additional yarn install step to fix linting --------- Co-authored-by: Mark Sinclair --- .github/workflows/ci-lint-typescript.yml | 19 +- .github/workflows/ci-nym-wallet-storybook.yml | 2 +- .github/workflows/publish-sdk-npm.yml | 11 +- Cargo.lock | 13 +- Cargo.toml | 2 +- Makefile | 8 +- .../sdk/typescript/mixfetch-example-code.mdx | 42 +- .../sdk/typescript/traffic-example-code.mdx | 62 +- documentation/docs/components/mix-fetch.tsx | 8 +- documentation/docs/package.json | 4 +- documentation/docs/pnpm-lock.yaml | 20 +- explorer-v2/next.config.js | 32 +- .../search/NodeAndAddressSearch.tsx | 18 +- nym-browser-extension/storage/Cargo.toml | 2 +- nym-wallet/package.json | 6 +- nym-wallet/src/components/Buy/Tutorial.tsx | 48 +- package.json | 85 +- .../codegen/contract-clients/build.mjs | 4 +- .../codegen/contract-clients/package.json | 6 +- .../contract-clients/src/CoconutDkg.client.ts | 485 +- .../contract-clients/src/CoconutDkg.types.ts | 255 +- .../src/Cw3FlexMultisig.client.ts | 89 +- .../src/Cw3FlexMultisig.types.ts | 100 +- .../contract-clients/src/Cw4Group.client.ts | 45 +- .../contract-clients/src/Cw4Group.types.ts | 2 +- .../contract-clients/src/Ecash.client.ts | 256 + .../contract-clients/src/Ecash.types.ts | 106 + .../contract-clients/src/Mixnet.client.ts | 1263 +-- .../contract-clients/src/Mixnet.types.ts | 577 +- .../contract-clients/src/Vesting.client.ts | 287 +- .../contract-clients/src/Vesting.types.ts | 41 +- .../contract-clients/src/baseClient.ts | 200 + .../codegen/contract-clients/src/index.ts | 77 +- .../examples/chat-app/parcel/package.json | 6 +- .../examples/chat-app/plain-html/package.json | 6 +- .../package.json | 6 +- .../examples/chrome-extension/package.json | 6 +- .../examples/firefox-extension/package.json | 6 +- .../examples/mix-fetch/browser/package.json | 6 +- .../examples/node-tester/parcel/package.json | 6 +- .../node-tester/plain-html/package.json | 6 +- .../examples/node-tester/react/package.json | 6 +- .../packages/mix-fetch-node/package.json | 4 +- .../mix-fetch/internal-dev/package.json | 6 +- .../internal-dev/parcel/package.json | 6 +- .../mix-fetch/internal-dev/src/index.ts | 9 +- .../mix-fetch/internal-dev/webpack.common.js | 3 +- .../mix-fetch/internal-dev/webpack.config.js | 6 +- .../packages/mix-fetch/package.json | 4 +- .../packages/node-tester/package.json | 4 +- .../packages/nodejs-client/package.json | 4 +- .../packages/nodejs-client/src/worker.ts | 2 +- .../packages/sdk-react/package.json | 6 +- sdk/typescript/packages/sdk/package.json | 14 +- .../packages/sdk/src/mixnet/wasm/worker.ts | 2 +- .../packages/validator-client/package.json | 2 +- sdk/typescript/scripts/build-prod-sdk.sh | 2 +- sdk/typescript/scripts/dev-mode-add.mjs | 7 +- sdk/typescript/scripts/dev-mode-remove.mjs | 7 +- sdk/typescript/scripts/publish.sh | 6 +- .../internal/sdk-version-bump/src/helpers.rs | 18 +- tools/internal/sdk-version-bump/src/json.rs | 4 +- wasm/client/Cargo.toml | 2 +- wasm/client/Makefile | 7 +- wasm/client/src/encoded_payload_helper.rs | 49 +- wasm/client/src/lib.rs | 2 +- wasm/mix-fetch/Cargo.toml | 3 +- wasm/mix-fetch/go-mix-conn/go.mod | 8 +- wasm/mix-fetch/go-mix-conn/go.sum | 4 + wasm/mix-fetch/src/error.rs | 6 +- wasm/mix-fetch/src/fetch.rs | 10 +- wasm/mix-fetch/src/harbourmaster.rs | 59 - wasm/mix-fetch/src/helpers.rs | 30 +- wasm/mix-fetch/src/lib.rs | 2 - wasm/node-tester/Cargo.toml | 2 +- yarn.lock | 7263 ++++------------- 76 files changed, 4506 insertions(+), 7286 deletions(-) create mode 100644 sdk/typescript/codegen/contract-clients/src/Ecash.client.ts create mode 100644 sdk/typescript/codegen/contract-clients/src/Ecash.types.ts create mode 100644 sdk/typescript/codegen/contract-clients/src/baseClient.ts delete mode 100644 wasm/mix-fetch/src/harbourmaster.rs diff --git a/.github/workflows/ci-lint-typescript.yml b/.github/workflows/ci-lint-typescript.yml index b0f4907834..59a7dc2ce6 100644 --- a/.github/workflows/ci-lint-typescript.yml +++ b/.github/workflows/ci-lint-typescript.yml @@ -6,16 +6,14 @@ on: paths: - "ts-packages/**" - "sdk/typescript/**" - - "nym-connect/desktop/src/**" - - "nym-connect/desktop/package.json" - "nym-wallet/src/**" - "nym-wallet/package.json" - - "explorer/**" + - "explorer-v2/**" - ".github/workflows/ci-lint-typescript.yml" jobs: build: - runs-on: ubuntu-22.04 + runs-on: arc-linux-latest env: RUSTUP_PERMIT_COPY_RENAME: 1 steps: @@ -25,6 +23,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 20 + - name: Setup yarn run: npm install -g yarn @@ -37,14 +36,12 @@ jobs: run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - name: Install wasm-opt - uses: ./.github/actions/install-wasm-opt - with: - version: '116' + run: cargo install wasm-opt - name: Set up Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: - go-version: "1.23.7" + go-version: "1.24.6" - name: Install run: yarn @@ -52,7 +49,11 @@ jobs: - name: Build packages run: yarn build:ci + - name: Install again + run: yarn + - name: Lint run: yarn lint + - name: Typecheck with tsc run: yarn tsc diff --git a/.github/workflows/ci-nym-wallet-storybook.yml b/.github/workflows/ci-nym-wallet-storybook.yml index bfdfd358b6..cb43bdd91e 100644 --- a/.github/workflows/ci-nym-wallet-storybook.yml +++ b/.github/workflows/ci-nym-wallet-storybook.yml @@ -8,7 +8,7 @@ on: jobs: build: - runs-on: custom-linux + runs-on: arc-linux-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/publish-sdk-npm.yml b/.github/workflows/publish-sdk-npm.yml index 173f94bcff..642737a6f8 100644 --- a/.github/workflows/publish-sdk-npm.yml +++ b/.github/workflows/publish-sdk-npm.yml @@ -4,7 +4,7 @@ on: jobs: publish: - runs-on: arc-ubuntu-22.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -17,10 +17,13 @@ jobs: - name: Setup yarn run: npm install -g yarn - - name: Install Rust stable + - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: + profile: minimal toolchain: stable + override: true + components: rustfmt, clippy - name: Install wasm-pack run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh @@ -29,9 +32,9 @@ jobs: run: cargo install wasm-opt - name: Set up Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: - go-version: "1.23.7" + go-version: "1.24.6" - name: Install dependencies run: yarn diff --git a/Cargo.lock b/Cargo.lock index 6d5dd1e0db..e9d1b051cc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2579,7 +2579,7 @@ dependencies = [ [[package]] name = "extension-storage" -version = "1.4.0-rc.0" +version = "1.4.1" dependencies = [ "bip39", "console_error_panic_hook", @@ -4478,7 +4478,7 @@ dependencies = [ [[package]] name = "mix-fetch-wasm" -version = "1.4.0-rc.0" +version = "1.4.1" dependencies = [ "async-trait", "futures", @@ -4488,6 +4488,7 @@ dependencies = [ "nym-ordered-buffer", "nym-service-providers-common", "nym-socks5-requests", + "nym-validator-client", "rand 0.8.5", "serde", "serde-wasm-bindgen 0.6.5", @@ -5283,7 +5284,7 @@ dependencies = [ [[package]] name = "nym-client-wasm" -version = "1.4.0-rc.0" +version = "1.4.1" dependencies = [ "anyhow", "futures", @@ -6649,7 +6650,7 @@ dependencies = [ [[package]] name = "nym-node-tester-wasm" -version = "1.3.0-rc.0" +version = "1.3.1" dependencies = [ "futures", "js-sys", @@ -7833,9 +7834,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" dependencies = [ "cc", "libc", diff --git a/Cargo.toml b/Cargo.toml index f0a5cdf1ba..c07db1f4ba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -150,7 +150,7 @@ members = [ "tools/internal/contract-state-importer/importer-cli", "tools/internal/contract-state-importer/importer-contract", "tools/internal/mixnet-connectivity-check", - # "tools/internal/sdk-version-bump", +# "tools/internal/sdk-version-bump", "tools/internal/ssl-inject", "tools/internal/testnet-manager", "tools/internal/testnet-manager/dkg-bypass-contract", diff --git a/Makefile b/Makefile index a2a7562c54..eb58f2ab5c 100644 --- a/Makefile +++ b/Makefile @@ -107,16 +107,16 @@ sdk-wasm-build: $(MAKE) -C nym-browser-extension/storage wasm-pack $(MAKE) -C wasm/client $(MAKE) -C wasm/node-tester - # $(MAKE) -C wasm/mix-fetch + $(MAKE) -C wasm/mix-fetch $(MAKE) -C wasm/zknym-lib # $(MAKE) -C wasm/full-nym-wasm # run this from npm/yarn to ensure tools are in the path, e.g. yarn build:sdk from root of repo sdk-typescript-build: npx lerna run --scope @nymproject/sdk build --stream - # npx lerna run --scope @nymproject/mix-fetch build --stream - # npx lerna run --scope @nymproject/node-tester build --stream - # yarn --cwd sdk/typescript/codegen/contract-clients build + npx lerna run --scope @nymproject/mix-fetch build --stream + npx lerna run --scope @nymproject/node-tester build --stream + yarn --cwd sdk/typescript/codegen/contract-clients build # NOTE: These targets are part of the main workspace (but not as wasm32-unknown-unknown) WASM_CRATES = extension-storage nym-client-wasm nym-node-tester-wasm zknym-lib diff --git a/documentation/docs/code-examples/sdk/typescript/mixfetch-example-code.mdx b/documentation/docs/code-examples/sdk/typescript/mixfetch-example-code.mdx index c9e9320462..85eb29277f 100644 --- a/documentation/docs/code-examples/sdk/typescript/mixfetch-example-code.mdx +++ b/documentation/docs/code-examples/sdk/typescript/mixfetch-example-code.mdx @@ -1,27 +1,26 @@ -```ts copy filename="mixFetchExample.tsx" -import React, { useState } from 'react'; -import CircularProgress from '@mui/material/CircularProgress'; -import Button from '@mui/material/Button'; -import TextField from '@mui/material/TextField'; -import Typography from '@mui/material/Typography'; -import Box from '@mui/material/Box'; -import { mixFetch } from '@nymproject/mix-fetch-full-fat'; -import Stack from '@mui/material/Stack'; -import Paper from '@mui/material/Paper'; -import type { SetupMixFetchOps } from '@nymproject/mix-fetch'; +```tsx copy filename="mixFetchExample.tsx" +import React, { useState } from "react"; +import CircularProgress from "@mui/material/CircularProgress"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import { mixFetch } from "@nymproject/mix-fetch-full-fat"; +import Stack from "@mui/material/Stack"; +import Paper from "@mui/material/Paper"; +import type { SetupMixFetchOps } from "@nymproject/mix-fetch-full-fat"; -const defaultUrl = 'https://nym.com/favicon.svg'; -const args = { mode: 'unsafe-ignore-cors' }; +const defaultUrl = "https://nymtech.net/.wellknown/network-requester/exit-policy.txt"; +const args = { mode: "unsafe-ignore-cors" }; const mixFetchOptions: SetupMixFetchOps = { - preferredGateway: '6Gb7ftQdKveMjPyrxDXeAtfYAX7Zg5mVZHtnRC5MmZ1B', // with WSS - preferredNetworkRequester: - '8rRGWy54oC8drFL9DepMegBt2DLrsqQwCoHMXt9nsnTo.2XjCPVbb4FpQ9hNRcXwb9mTzEAVVk1zf1tcch3wdtNEA@6Gb7ftQdKveMjPyrxDXeAtfYAX7Zg5mVZHtnRC5MmZ1B', + preferredGateway: "2xU4CBE6QiiYt6EyBXSALwxkNvM7gqJfjHXaMkjiFmYW", // with WSS + // preferredNetworkRequester: + // "CTDxrcXgrZHWyCWnuCgjpJPghQUcEVz1HkhUr5mGdFnT.3UAww1YWNyVNYNWFQL1LaHYouQtDiXBGK5GiDZgpXkTK@2RFtU5BwxvJJXagAWAEuaPgb5ZVPRoy2542TT93Edw6v", mixFetchOverride: { requestTimeoutMs: 60_000, }, forceTls: true, // force WSS - extra: {}, }; export const MixFetch = () => { @@ -45,7 +44,7 @@ export const MixFetch = () => { }; return ( -

+
{ defaultValue={defaultUrl} onChange={(e) => setUrl(e.target.value)} /> - diff --git a/documentation/docs/code-examples/sdk/typescript/traffic-example-code.mdx b/documentation/docs/code-examples/sdk/typescript/traffic-example-code.mdx index 351e5bdbde..6631759392 100644 --- a/documentation/docs/code-examples/sdk/typescript/traffic-example-code.mdx +++ b/documentation/docs/code-examples/sdk/typescript/traffic-example-code.mdx @@ -1,15 +1,19 @@ ```ts copy filename="MixnetWASMClientExample.tsx" -import React, { useEffect, useState } from 'react'; -import { createNymMixnetClient, NymMixnetClient, Payload } from '@nymproject/sdk-full-fat'; -import Box from '@mui/material/Box'; -import CircularProgress from '@mui/material/CircularProgress'; -import Paper from '@mui/material/Paper'; -import Typography from '@mui/material/Typography'; -import Stack from '@mui/material/Stack'; -import TextField from '@mui/material/TextField'; -import Button from '@mui/material/Button'; +import React, { useEffect, useState } from "react"; +import { + createNymMixnetClient, + NymMixnetClient, + Payload, +} from "@nymproject/sdk-full-fat"; +import Box from "@mui/material/Box"; +import CircularProgress from "@mui/material/CircularProgress"; +import Paper from "@mui/material/Paper"; +import Typography from "@mui/material/Typography"; +import Stack from "@mui/material/Stack"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; -const nymApiUrl = 'https://validator.nymtech.net/api'; +const nymApiUrl = "https://validator.nymtech.net/api"; export const Traffic = () => { const [nym, setNym] = useState(); @@ -17,27 +21,31 @@ export const Traffic = () => { const [recipient, setRecipient] = useState(); const [payload, setPayload] = useState(); const [receivedMessage, setReceivedMessage] = useState(); + const [buttonEnabled, setButtonEnabled] = useState(false); const init = async () => { const client = await createNymMixnetClient(); setNym(client); + // start the client and connect to a gateway await client?.client.start({ clientId: crypto.randomUUID(), nymApiUrl, forceTls: true, // force WSS }); + // check when is connected and set the self address client?.events.subscribeToConnected((e) => { const { address } = e.args; setSelfAddress(address); }); + // show whether the client is ready or not client?.events.subscribeToLoaded((e) => { - console.log('Client ready: ', e.args); + console.log("Client ready: ", e.args); }); - + // show message payload content when received client?.events.subscribeToTextMessageReceivedEvent((e) => { console.log(e.args.payload); setReceivedMessage(e.args.payload); @@ -48,7 +56,8 @@ export const Traffic = () => { await nym?.client.stop(); }; - const send = () => nym.client.send({ payload, recipient }); + const send = () => + payload && recipient && nym?.client.send({ payload, recipient }); useEffect(() => { init(); @@ -57,9 +66,17 @@ export const Traffic = () => { }; }, []); + useEffect(() => { + if (recipient && payload) { + setButtonEnabled(true); + } else { + setButtonEnabled(false); + } + }, [recipient, payload]); + if (!nym || !selfAddress) { return ( - + ); @@ -67,10 +84,10 @@ export const Traffic = () => { return ( - + My self address is: - {selfAddress || 'loading'} + {selfAddress || "loading"} Communication through the Mixnet { placeholder="Message to send" multiline rows={4} - onChange={(e) => setPayload({ message: e.target.value, mimeType: 'text/plain' })} + onChange={(e) => + setPayload({ message: e.target.value, mimeType: "text/plain" }) + } size="small" /> - {receivedMessage && ( - + Message Received! {receivedMessage} diff --git a/documentation/docs/components/mix-fetch.tsx b/documentation/docs/components/mix-fetch.tsx index 252dcc1d1c..6726b74998 100644 --- a/documentation/docs/components/mix-fetch.tsx +++ b/documentation/docs/components/mix-fetch.tsx @@ -9,13 +9,13 @@ import Stack from "@mui/material/Stack"; import Paper from "@mui/material/Paper"; import type { SetupMixFetchOps } from "@nymproject/mix-fetch-full-fat"; -const defaultUrl = "https://nym.com/favicon.svg"; +const defaultUrl = "https://nymtech.net/.wellknown/network-requester/exit-policy.txt"; const args = { mode: "unsafe-ignore-cors" }; const mixFetchOptions: SetupMixFetchOps = { - preferredGateway: "6Gb7ftQdKveMjPyrxDXeAtfYAX7Zg5mVZHtnRC5MmZ1B", // with WSS - preferredNetworkRequester: - "8rRGWy54oC8drFL9DepMegBt2DLrsqQwCoHMXt9nsnTo.2XjCPVbb4FpQ9hNRcXwb9mTzEAVVk1zf1tcch3wdtNEA@6Gb7ftQdKveMjPyrxDXeAtfYAX7Zg5mVZHtnRC5MmZ1B", + preferredGateway: "2xU4CBE6QiiYt6EyBXSALwxkNvM7gqJfjHXaMkjiFmYW", // with WSS + // preferredNetworkRequester: + // "CTDxrcXgrZHWyCWnuCgjpJPghQUcEVz1HkhUr5mGdFnT.3UAww1YWNyVNYNWFQL1LaHYouQtDiXBGK5GiDZgpXkTK@2RFtU5BwxvJJXagAWAEuaPgb5ZVPRoy2542TT93Edw6v", mixFetchOverride: { requestTimeoutMs: 60_000, }, diff --git a/documentation/docs/package.json b/documentation/docs/package.json index 8ff630dad4..c66bed7698 100644 --- a/documentation/docs/package.json +++ b/documentation/docs/package.json @@ -38,8 +38,8 @@ "@nextui-org/accordion": "^2.0.40", "@nextui-org/react": "^2.4.8", "@nymproject/contract-clients": ">=1.2.4-rc.2 || ^1", - "@nymproject/mix-fetch-full-fat": ">=1.2.4-rc.2 || ^1", - "@nymproject/sdk-full-fat": ">=1.2.4-rc.2 || ^1", + "@nymproject/mix-fetch-full-fat": ">=1.5.1-rc.0 || ^1.4.1", + "@nymproject/sdk-full-fat": ">=1.5.1-rc.0 || ^1.4.1", "@redocly/cli": "^1.25.15", "@types/mdx": "^2.0.13", "chain-registry": "^1.19.0", diff --git a/documentation/docs/pnpm-lock.yaml b/documentation/docs/pnpm-lock.yaml index 3fa8337bc4..1ff947d4a0 100644 --- a/documentation/docs/pnpm-lock.yaml +++ b/documentation/docs/pnpm-lock.yaml @@ -78,11 +78,11 @@ importers: specifier: '>=1.2.4-rc.2 || ^1' version: 1.4.1 '@nymproject/mix-fetch-full-fat': - specifier: '>=1.2.4-rc.2 || ^1' - version: 1.2.3 + specifier: '>=1.5.1-rc.0 || ^1.4.1' + version: 1.4.1 '@nymproject/sdk-full-fat': - specifier: '>=1.2.4-rc.2 || ^1' - version: 1.2.3 + specifier: '>=1.5.1-rc.0 || ^1.4.1' + version: 1.4.1 '@redocly/cli': specifier: ^1.25.15 version: 1.34.5(ajv@8.17.1) @@ -1679,11 +1679,11 @@ packages: '@nymproject/contract-clients@1.4.1': resolution: {integrity: sha512-HuJZ4Hv+Rl6ZZEtCHKgurNLJapM+QQRJlGkevFH2a4UdqUqF9omUkUi3AVes4679dPoSFgvA7plyVSDBdbgV6w==} - '@nymproject/mix-fetch-full-fat@1.2.3': - resolution: {integrity: sha512-5yAQhw33LC0cNsyV0Rj+LIa2kvJY+8jsfgOSr1aeKNfQ7dG4fngWkKnGUbPGzhUTJjqgXPTwNVeJSd6hwGim+g==} + '@nymproject/mix-fetch-full-fat@1.4.1': + resolution: {integrity: sha512-AMa21sEd9FELqAJe1lCyHPqxxbc13ApiJ1P/exAslQjiFPb/de/3Ow0FHqKGNPrwyVRS/T2pSzjQ3l8TddiEBA==} - '@nymproject/sdk-full-fat@1.2.3': - resolution: {integrity: sha512-lheA1Zk020o2t95FPVZfdUR0aSI52aD0aJQs074fjH16QkoNNEMotzhJGAnsnnczVg3bpddKghNpCLyDOWvg9A==} + '@nymproject/sdk-full-fat@1.4.1': + resolution: {integrity: sha512-dh5bvMUj3m8nEssvO8Nl66WpcJAjwRZrGNwqfczJWLG4nX3Vt95tPLv4v0/Z1W3DQWQFW6WmEPPYHNjl18V/fA==} '@opentelemetry/api-logs@0.53.0': resolution: {integrity: sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==} @@ -9247,9 +9247,9 @@ snapshots: '@nymproject/contract-clients@1.4.1': {} - '@nymproject/mix-fetch-full-fat@1.2.3': {} + '@nymproject/mix-fetch-full-fat@1.4.1': {} - '@nymproject/sdk-full-fat@1.2.3': {} + '@nymproject/sdk-full-fat@1.4.1': {} '@opentelemetry/api-logs@0.53.0': dependencies: diff --git a/explorer-v2/next.config.js b/explorer-v2/next.config.js index ba18864d7e..86f3fcc2e1 100644 --- a/explorer-v2/next.config.js +++ b/explorer-v2/next.config.js @@ -2,23 +2,23 @@ /** @type {import('next').NextConfig} */ const nextConfig = { - reactStrictMode: true, + reactStrictMode: true, - basePath: "/explorer", - assetPrefix: "/explorer", - trailingSlash: false, + basePath: "/explorer", + assetPrefix: "/explorer", + trailingSlash: false, - async redirects() { - return [ - // Change the basePath to /explorer - { - source: "/", - destination: "/explorer", - basePath: false, - permanent: true, - }, - ]; - }, + async redirects() { + return [ + // Change the basePath to /explorer + { + source: "/", + destination: "/explorer", + basePath: false, + permanent: true, + }, + ]; + }, }; -module.exports = nextConfig \ No newline at end of file +module.exports = nextConfig; diff --git a/explorer-v2/src/components/search/NodeAndAddressSearch.tsx b/explorer-v2/src/components/search/NodeAndAddressSearch.tsx index 22eca32f4e..6f0de3a6da 100644 --- a/explorer-v2/src/components/search/NodeAndAddressSearch.tsx +++ b/explorer-v2/src/components/search/NodeAndAddressSearch.tsx @@ -1,5 +1,6 @@ "use client"; import type { IObservatoryNode } from "@/app/api/types"; +import { NYM_ACCOUNT_ADDRESS } from "@/app/api/urls"; import { Search } from "@mui/icons-material"; import { Autocomplete, @@ -13,7 +14,6 @@ import { useQuery } from "@tanstack/react-query"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { fetchObservatoryNodes } from "../../app/api"; -import { NYM_ACCOUNT_ADDRESS } from "@/app/api/urls"; const NodeAndAddressSearch = () => { const router = useRouter(); @@ -50,7 +50,7 @@ const NodeAndAddressSearch = () => { } } catch { setErrorText( - "No node found with the provided Name, Node ID or Identity Key. Please check your input and try again." + "No node found with the provided Name, Node ID or Identity Key. Please check your input and try again.", ); setIsLoading(false); // Stop loading @@ -58,7 +58,7 @@ const NodeAndAddressSearch = () => { } } else { setErrorText( - "No node found with the provided Name, Node ID or Identity Key. Please check your input and try again." + "No node found with the provided Name, Node ID or Identity Key. Please check your input and try again.", ); setIsLoading(false); // Stop loading @@ -68,7 +68,7 @@ const NodeAndAddressSearch = () => { // Check if it's a node identity key if (nymNodes) { const matchingNode = nymNodes.find( - (node) => node.identity_key === inputValue + (node) => node.identity_key === inputValue, ); if (matchingNode) { @@ -77,13 +77,13 @@ const NodeAndAddressSearch = () => { } } setErrorText( - "No node found with the provided Name, Node ID or Identity Key. Please check your input and try again." + "No node found with the provided Name, Node ID or Identity Key. Please check your input and try again.", ); setIsLoading(false); } } catch (error) { setErrorText( - "No node found with the provided Name, Node ID or Identity Key. Please check your input and try again." + "No node found with the provided Name, Node ID or Identity Key. Please check your input and try again.", ); console.error(error); setIsLoading(false); // Stop loading @@ -92,7 +92,7 @@ const NodeAndAddressSearch = () => { // Handle search input change const handleSearchInputChange = ( - event: React.ChangeEvent + event: React.ChangeEvent, ) => { const value = event.target.value; setInputValue(value); @@ -107,7 +107,7 @@ const NodeAndAddressSearch = () => { const filteredNodes = nymNodes.filter((node) => node.self_description?.moniker ?.toLowerCase() - .includes(value.toLowerCase()) + .includes(value.toLowerCase()), ); setSearchOptions(filteredNodes); } else { @@ -118,7 +118,7 @@ const NodeAndAddressSearch = () => { // Handle node selection from dropdown const handleNodeSelect = ( event: React.SyntheticEvent, - value: string | IObservatoryNode | null + value: string | IObservatoryNode | null, ) => { if (value && typeof value !== "string") { setIsLoading(true); // Show loading spinner diff --git a/nym-browser-extension/storage/Cargo.toml b/nym-browser-extension/storage/Cargo.toml index ec61e945b8..61a34e51e7 100644 --- a/nym-browser-extension/storage/Cargo.toml +++ b/nym-browser-extension/storage/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "extension-storage" -version = "1.4.0-rc.0" +version = "1.4.1" edition = "2024" license = "Apache-2.0" repository = "https://github.com/nymtech/nym" diff --git a/nym-wallet/package.json b/nym-wallet/package.json index 6702636f1c..190dadbc1a 100644 --- a/nym-wallet/package.json +++ b/nym-wallet/package.json @@ -32,7 +32,7 @@ "@mui/styles": "^5.2.2", "@mui/utils": "^5.7.0", "@nymproject/mui-theme": "^1.0.0", - "@nymproject/node-tester": "^1.2.3", + "@nymproject/node-tester": "^1.3.1", "@nymproject/react": "^1.0.0", "@nymproject/types": "^1.0.0", "@storybook/react": "^6.5.15", @@ -80,6 +80,7 @@ "@types/big.js": "^6.1.6", "@types/bs58": "^4.0.1", "@types/jest": "^27.0.1", + "@types/minimatch": "5.1.2", "@types/node": "^16.7.13", "@types/qrcode.react": "^1.0.2", "@types/react": "^18.0.26", @@ -131,5 +132,8 @@ "webpack-favicons": "^1.3.8", "webpack-merge": "^5.8.0" }, + "resolutions": { + "@types/minimatch": "5.1.2" + }, "private": false } \ No newline at end of file diff --git a/nym-wallet/src/components/Buy/Tutorial.tsx b/nym-wallet/src/components/Buy/Tutorial.tsx index d3e0a11fce..4db45f6844 100644 --- a/nym-wallet/src/components/Buy/Tutorial.tsx +++ b/nym-wallet/src/components/Buy/Tutorial.tsx @@ -1,32 +1,32 @@ import React from 'react'; import { Box, Typography, Grid, Link, Card, CardContent, Stack } from '@mui/material'; -import { NymCard } from '..'; import BitfinexIcon from 'src/svg-icons/bitfinex.svg'; import KrakenIcon from 'src/svg-icons/kraken.svg'; import BybitIcon from 'src/svg-icons/bybit.svg'; import GateIcon from 'src/svg-icons/gate22.svg'; import HTXIcon from 'src/svg-icons/htx.svg'; +import { NymCard } from '..'; -const ExchangeCard = ({ - name, - tokenType, - url, - IconComponent +const ExchangeCard = ({ + name, + tokenType, + url, + IconComponent, }: { name: string; tokenType: string; url: string; IconComponent: React.FunctionComponent>; }) => ( - @@ -51,17 +51,17 @@ const ExchangeCard = ({ {tokenType} - GET NYM @@ -78,44 +78,40 @@ export const Tutorial = () => { name: 'Bitfinex', tokenType: 'Native NYM, ERC-20', url: 'https://www.bitfinex.com/', - IconComponent: BitfinexIcon + IconComponent: BitfinexIcon, }, { name: 'Kraken', tokenType: 'Native NYM', url: 'https://www.kraken.com/', - IconComponent: KrakenIcon + IconComponent: KrakenIcon, }, { name: 'Bybit', tokenType: 'ERC-20', url: 'https://www.bybit.com/en/', - IconComponent: BybitIcon + IconComponent: BybitIcon, }, { name: 'Gate.io', tokenType: 'ERC-20', url: 'https://www.gate.io/', - IconComponent: GateIcon + IconComponent: GateIcon, }, { name: 'HTX', tokenType: 'ERC-20', url: 'https://www.htx.com/', - IconComponent: HTXIcon + IconComponent: HTXIcon, }, ]; return ( - + You can get NYM tokens from these exchanges - + {exchanges.map((exchange) => ( diff --git a/package.json b/package.json index 0170158389..febd76c583 100644 --- a/package.json +++ b/package.json @@ -1,66 +1,67 @@ { "name": "@nymproject/nymsphere", - "version": "1.0.0", - "private": true, + "version": "1.0.1", "license": "Apache 2.0", - "workspaces": [ - "sdk/typescript/packages/**", - "sdk/typescript/examples/**", - "ts-packages/*", - "nym-wallet", - "explorer-nextjs", - "explorer-v2", - "types", - "clients/validator", - "sdk/typescript/packages/**", - "sdk/typescript/examples/**", - "sdk/typescript/codegen/**" - ], "scripts": { - "nuke": "npx rimraf **/node_modules node_modules", - "scrub": "npx rimraf **/dist dist", - "clean": "lerna run clean", + "audit:fix": "npm_config_yes=true npx yarn-audit-fix -- --dry-run", "build": "run-s build:types build:packages", - "build:wasm": "make sdk-wasm-build", - "build:types": "lerna run --scope @nymproject/types build --stream", - "build:packages": "run-s build:packages:theme build:packages:react", - "build:packages:theme": "lerna run --scope @nymproject/mui-theme build", - "build:packages:react": "lerna run --scope @nymproject/react build", - "build:playground": "lerna run --scope @nymproject/react storybook:build --stream", + "build:ci": "run-s build:types build:packages build:wasm build:ci:sdk", + "build:ci:sdk": "lerna run --scope '{@nymproject/sdk,@nymproject/node-tester,@nymproject/sdk-react,@nymproject/mix-fetch,@nymproject/nodejs-client,@nymproject/mix-fetch-node}' build --stream", "build:ci:storybook": "yarn build && yarn dev:on && run-p build:playground && yarn build:ci:storybook:collect-artifacts ", "build:ci:storybook:collect-artifacts": "mkdir -p ts-packages/dist && mv sdk/typescript/packages/react-components/storybook-static ts-packages/dist/storybook ", - "prebuild:ci": "yarn dev:on && yarn", - "build:ci": "run-s build:types build:packages build:wasm build:ci:sdk", - "postbuild:ci": "yarn dev:off", - "build:ci:sdk": "lerna run --scope '{@nymproject/sdk,@nymproject/node-tester,@nymproject/sdk-react,@nymproject/mix-fetch,@nymproject/nodejs-client,@nymproject/mix-fetch-node}' build --stream", + "build:packages": "run-s build:packages:theme build:packages:react", + "build:packages:react": "lerna run --scope @nymproject/react build", + "build:packages:theme": "lerna run --scope @nymproject/mui-theme build", + "build:playground": "lerna run --scope @nymproject/react storybook:build --stream", + "build:types": "lerna run --scope @nymproject/types build --stream", + "build:wasm": "make sdk-wasm-build", + "clean": "lerna run clean", + "dev:off": "node sdk/typescript/scripts/dev-mode-remove.mjs", + "dev:on": "node sdk/typescript/scripts/dev-mode-add.mjs", "docs:prod:build": "run-s docs:prod:build:ws", "docs:prod:build:ws": "lerna run docs:prod:build --stream", - "sdk:build": "./sdk/typescript/scripts/build-prod-sdk.sh", - "sdk:publish": "./sdk/typescript/scripts/publish.sh", "lint": "lerna run lint --stream", "lint:fix": "lerna run lint:fix --stream", + "nuke": "npx rimraf **/node_modules node_modules", + "postbuild:ci": "yarn dev:off", + "prebuild:ci": "yarn dev:on && yarn", + "scrub": "npx rimraf **/dist dist", + "sdk:build": "./sdk/typescript/scripts/build-prod-sdk.sh", + "sdk:publish": "./sdk/typescript/scripts/publish.sh", + "sdk:versions:add-rc": "cargo run -p sdk-version-bump --pre-release", + "sdk:versions:bump": "cargo run -p sdk-version-bump bump-version", + "sdk:versions:remove-rc": "cargo run -p sdk-version-bump remove-suffix", "tsc": "lerna run tsc --stream", - "types:lint:fix": "lerna run lint:fix --scope @nymproject/types --scope @nymproject/nym-wallet-app", - "audit:fix": "npm_config_yes=true npx yarn-audit-fix -- --dry-run", - "dev:on": "node sdk/typescript/scripts/dev-mode-add.mjs", - "dev:off": "node sdk/typescript/scripts/dev-mode-remove.mjs" + "types:lint:fix": "lerna run lint:fix --scope @nymproject/types --scope @nymproject/nym-wallet-app" + }, + "dependencies": { + "lucide-react": "^0.453.0" }, "devDependencies": { "@npmcli/node-gyp": "^3.0.0", - "@types/minimatch": "^6.0.0", + "@types/minimatch": "5.1.2", "lerna": "^7.3.0", "node-gyp": "^9.3.1", "npm-run-all": "^4.1.5", "tslog": "3.3.3" }, - "dependencies": { - "lucide-react": "^0.453.0" - }, + "private": true, "resolutions": { "@cosmjs/amino": "^0.32.4", + "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/proto-signing": "^0.32.4", "@cosmjs/stargate": "^0.32.4", - "@cosmjs/cosmwasm-stargate": "^0.32.4", - "cosmjs-types": "^0.9.0" - } -} + "cosmjs-types": "^0.9.0", + "@types/minimatch": "5.1.2" + }, + "workspaces": [ + "ts-packages/*", + "nym-wallet", + "explorer-nextjs", + "explorer-v2", + "types", + "sdk/typescript/packages/mix-fetch/internal-dev", + "sdk/typescript/packages/react-components", + "sdk/typescript/packages/mui-theme" + ] +} \ No newline at end of file diff --git a/sdk/typescript/codegen/contract-clients/build.mjs b/sdk/typescript/codegen/contract-clients/build.mjs index 5a6b6220f6..ffc5cd4005 100644 --- a/sdk/typescript/codegen/contract-clients/build.mjs +++ b/sdk/typescript/codegen/contract-clients/build.mjs @@ -3,13 +3,11 @@ import codegen from '@cosmwasm/ts-codegen'; codegen .default({ contracts: [ - { name: 'coconut-bandwidth', dir: '../../../../contracts/coconut-bandwidth' }, + { name: 'ecash', dir: '../../../../contracts/ecash' }, { name: 'coconut-dkg', dir: '../../../../contracts/coconut-dkg' }, { name: 'mixnet', dir: '../../../../contracts/mixnet' }, { name: 'cw3-flex-multisig', dir: '../../../../contracts/multisig/cw3-flex-multisig' }, { name: 'cw4-group', dir: '../../../../contracts/multisig/cw4-group' }, - { name: 'name-service', dir: '../../../../contracts/name-service' }, - { name: 'service-provider-directory', dir: '../../../../contracts/service-provider-directory' }, { name: 'vesting', dir: '../../../../contracts/vesting' }, ], outPath: './src', diff --git a/sdk/typescript/codegen/contract-clients/package.json b/sdk/typescript/codegen/contract-clients/package.json index f429659cbb..3be66eff66 100644 --- a/sdk/typescript/codegen/contract-clients/package.json +++ b/sdk/typescript/codegen/contract-clients/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/contract-clients", - "version": "1.3.0-rc.0", + "version": "1.3.1-rc0", "description": "A client for all Nym smart contracts", "license": "Apache-2.0", "author": "Nym Technologies SA", @@ -18,7 +18,7 @@ "docs:watch": "nodemon --ext ts --watch './src/**/*' --watch './typedoc.json' --exec \"yarn docs:generate\"" }, "devDependencies": { - "@cosmwasm/ts-codegen": "^0.35.3", + "@cosmwasm/ts-codegen": "^1.13.3", "nodemon": "3.0.1", "npm-run-all": "^4.1.5", "reload": "^3.2.1", @@ -27,4 +27,4 @@ }, "private": false, "types": "./dist/index.d.ts" -} \ No newline at end of file +} diff --git a/sdk/typescript/codegen/contract-clients/src/CoconutDkg.client.ts b/sdk/typescript/codegen/contract-clients/src/CoconutDkg.client.ts index c86b48d22c..cb960c87c0 100644 --- a/sdk/typescript/codegen/contract-clients/src/CoconutDkg.client.ts +++ b/sdk/typescript/codegen/contract-clients/src/CoconutDkg.client.ts @@ -1,23 +1,58 @@ /** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run the @cosmwasm/ts-codegen generate command to regenerate this file. */ -import { CosmWasmClient, SigningCosmWasmClient, ExecuteResult } from "@cosmjs/cosmwasm-stargate"; -import { Coin, StdFee } from "@cosmjs/amino"; -import { InstantiateMsg, TimeConfiguration, ExecuteMsg, ContractSafeBytes, Addr, QueryMsg, MigrateMsg, PagedDealerResponse, DealerDetails, Timestamp, Uint64, EpochState, Epoch, DealerType, DealerDetailsResponse, PagedDealingsResponse, ContractDealing, NullableInitialReplacementData, InitialReplacementData, PagedVKSharesResponse, ContractVKShare } from "./CoconutDkg.types"; - +import { ICosmWasmClient, ISigningCosmWasmClient } from "./baseClient"; +import { Coin, StdFee } from "@interchainjs/types"; +import { InstantiateMsg, TimeConfiguration, ExecuteMsg, ContractSafeBytes, DealingChunkInfo, PartialContractDealing, QueryMsg, MigrateMsg, EpochState, Timestamp, Uint64, StateAdvanceResponse, StateProgress, ContractVersion, Addr, PagedDealerResponse, DealerDetails, Epoch, DealerDealingsStatusResponse, DealerType, DealerDetailsResponse, PagedDealerIndexResponse, DealingChunkResponse, DealingChunkStatusResponse, ChunkSubmissionStatus, DealingStatusResponse, DealingStatus, DealingMetadataResponse, DealingMetadata, PagedDealerAddressesResponse, NullableEpoch, RegisteredDealerDetails, DealerRegistrationDetails, Cw4Contract, State, VkShareResponse, ContractVKShare, PagedVKSharesResponse } from "./CoconutDkg.types"; export interface CoconutDkgReadOnlyInterface { contractAddress: string; + getState: () => Promise; getCurrentEpochState: () => Promise; + getEpochStateAtHeight: ({ + height + }: { + height: number; + }) => Promise; getCurrentEpochThreshold: () => Promise; - getInitialDealers: () => Promise; + getEpochThreshold: ({ + epochId + }: { + epochId: number; + }) => Promise; + canAdvanceState: () => Promise; + getRegisteredDealer: ({ + dealerAddress, + epochId + }: { + dealerAddress: string; + epochId?: number; + }) => Promise; getDealerDetails: ({ dealerAddress }: { dealerAddress: string; }) => Promise; + getEpochDealersAddresses: ({ + epochId, + limit, + startAfter + }: { + epochId: number; + limit?: number; + startAfter?: string; + }) => Promise; + getEpochDealers: ({ + epochId, + limit, + startAfter + }: { + epochId: number; + limit?: number; + startAfter?: string; + }) => Promise; getCurrentDealers: ({ limit, startAfter @@ -25,22 +60,67 @@ export interface CoconutDkgReadOnlyInterface { limit?: number; startAfter?: string; }) => Promise; - getPastDealers: ({ + getDealerIndices: ({ limit, startAfter }: { limit?: number; startAfter?: string; - }) => Promise; - getDealing: ({ - idx, - limit, - startAfter + }) => Promise; + getDealingsMetadata: ({ + dealer, + dealingIndex, + epochId }: { - idx: number; - limit?: number; - startAfter?: string; - }) => Promise; + dealer: string; + dealingIndex: number; + epochId: number; + }) => Promise; + getDealerDealingsStatus: ({ + dealer, + epochId + }: { + dealer: string; + epochId: number; + }) => Promise; + getDealingStatus: ({ + dealer, + dealingIndex, + epochId + }: { + dealer: string; + dealingIndex: number; + epochId: number; + }) => Promise; + getDealingChunkStatus: ({ + chunkIndex, + dealer, + dealingIndex, + epochId + }: { + chunkIndex: number; + dealer: string; + dealingIndex: number; + epochId: number; + }) => Promise; + getDealingChunk: ({ + chunkIndex, + dealer, + dealingIndex, + epochId + }: { + chunkIndex: number; + dealer: string; + dealingIndex: number; + epochId: number; + }) => Promise; + getVerificationKey: ({ + epochId, + owner + }: { + epochId: number; + owner: string; + }) => Promise; getVerificationKeys: ({ epochId, limit, @@ -50,37 +130,89 @@ export interface CoconutDkgReadOnlyInterface { limit?: number; startAfter?: string; }) => Promise; + getCw2ContractVersion: () => Promise; } export class CoconutDkgQueryClient implements CoconutDkgReadOnlyInterface { - client: CosmWasmClient; + client: ICosmWasmClient; contractAddress: string; - - constructor(client: CosmWasmClient, contractAddress: string) { + constructor(client: ICosmWasmClient, contractAddress: string) { this.client = client; this.contractAddress = contractAddress; + this.getState = this.getState.bind(this); this.getCurrentEpochState = this.getCurrentEpochState.bind(this); + this.getEpochStateAtHeight = this.getEpochStateAtHeight.bind(this); this.getCurrentEpochThreshold = this.getCurrentEpochThreshold.bind(this); - this.getInitialDealers = this.getInitialDealers.bind(this); + this.getEpochThreshold = this.getEpochThreshold.bind(this); + this.canAdvanceState = this.canAdvanceState.bind(this); + this.getRegisteredDealer = this.getRegisteredDealer.bind(this); this.getDealerDetails = this.getDealerDetails.bind(this); + this.getEpochDealersAddresses = this.getEpochDealersAddresses.bind(this); + this.getEpochDealers = this.getEpochDealers.bind(this); this.getCurrentDealers = this.getCurrentDealers.bind(this); - this.getPastDealers = this.getPastDealers.bind(this); - this.getDealing = this.getDealing.bind(this); + this.getDealerIndices = this.getDealerIndices.bind(this); + this.getDealingsMetadata = this.getDealingsMetadata.bind(this); + this.getDealerDealingsStatus = this.getDealerDealingsStatus.bind(this); + this.getDealingStatus = this.getDealingStatus.bind(this); + this.getDealingChunkStatus = this.getDealingChunkStatus.bind(this); + this.getDealingChunk = this.getDealingChunk.bind(this); + this.getVerificationKey = this.getVerificationKey.bind(this); this.getVerificationKeys = this.getVerificationKeys.bind(this); + this.getCw2ContractVersion = this.getCw2ContractVersion.bind(this); } - + getState = async (): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_state: {} + }); + }; getCurrentEpochState = async (): Promise => { return this.client.queryContractSmart(this.contractAddress, { get_current_epoch_state: {} }); }; + getEpochStateAtHeight = async ({ + height + }: { + height: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_epoch_state_at_height: { + height + } + }); + }; getCurrentEpochThreshold = async (): Promise => { return this.client.queryContractSmart(this.contractAddress, { get_current_epoch_threshold: {} }); }; - getInitialDealers = async (): Promise => { + getEpochThreshold = async ({ + epochId + }: { + epochId: number; + }): Promise => { return this.client.queryContractSmart(this.contractAddress, { - get_initial_dealers: {} + get_epoch_threshold: { + epoch_id: epochId + } + }); + }; + canAdvanceState = async (): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + can_advance_state: {} + }); + }; + getRegisteredDealer = async ({ + dealerAddress, + epochId + }: { + dealerAddress: string; + epochId?: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_registered_dealer: { + dealer_address: dealerAddress, + epoch_id: epochId + } }); }; getDealerDetails = async ({ @@ -94,6 +226,40 @@ export class CoconutDkgQueryClient implements CoconutDkgReadOnlyInterface { } }); }; + getEpochDealersAddresses = async ({ + epochId, + limit, + startAfter + }: { + epochId: number; + limit?: number; + startAfter?: string; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_epoch_dealers_addresses: { + epoch_id: epochId, + limit, + start_after: startAfter + } + }); + }; + getEpochDealers = async ({ + epochId, + limit, + startAfter + }: { + epochId: number; + limit?: number; + startAfter?: string; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_epoch_dealers: { + epoch_id: epochId, + limit, + start_after: startAfter + } + }); + }; getCurrentDealers = async ({ limit, startAfter @@ -108,34 +274,119 @@ export class CoconutDkgQueryClient implements CoconutDkgReadOnlyInterface { } }); }; - getPastDealers = async ({ + getDealerIndices = async ({ limit, startAfter }: { limit?: number; startAfter?: string; - }): Promise => { + }): Promise => { return this.client.queryContractSmart(this.contractAddress, { - get_past_dealers: { + get_dealer_indices: { limit, start_after: startAfter } }); }; - getDealing = async ({ - idx, - limit, - startAfter + getDealingsMetadata = async ({ + dealer, + dealingIndex, + epochId }: { - idx: number; - limit?: number; - startAfter?: string; - }): Promise => { + dealer: string; + dealingIndex: number; + epochId: number; + }): Promise => { return this.client.queryContractSmart(this.contractAddress, { - get_dealing: { - idx, - limit, - start_after: startAfter + get_dealings_metadata: { + dealer, + dealing_index: dealingIndex, + epoch_id: epochId + } + }); + }; + getDealerDealingsStatus = async ({ + dealer, + epochId + }: { + dealer: string; + epochId: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_dealer_dealings_status: { + dealer, + epoch_id: epochId + } + }); + }; + getDealingStatus = async ({ + dealer, + dealingIndex, + epochId + }: { + dealer: string; + dealingIndex: number; + epochId: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_dealing_status: { + dealer, + dealing_index: dealingIndex, + epoch_id: epochId + } + }); + }; + getDealingChunkStatus = async ({ + chunkIndex, + dealer, + dealingIndex, + epochId + }: { + chunkIndex: number; + dealer: string; + dealingIndex: number; + epochId: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_dealing_chunk_status: { + chunk_index: chunkIndex, + dealer, + dealing_index: dealingIndex, + epoch_id: epochId + } + }); + }; + getDealingChunk = async ({ + chunkIndex, + dealer, + dealingIndex, + epochId + }: { + chunkIndex: number; + dealer: string; + dealingIndex: number; + epochId: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_dealing_chunk: { + chunk_index: chunkIndex, + dealer, + dealing_index: dealingIndex, + epoch_id: epochId + } + }); + }; + getVerificationKey = async ({ + epochId, + owner + }: { + epochId: number; + owner: string; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_verification_key: { + epoch_id: epochId, + owner } }); }; @@ -156,91 +407,142 @@ export class CoconutDkgQueryClient implements CoconutDkgReadOnlyInterface { } }); }; + getCw2ContractVersion = async (): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_cw2_contract_version: {} + }); + }; } export interface CoconutDkgInterface extends CoconutDkgReadOnlyInterface { contractAddress: string; sender: string; + initiateDkg: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; registerDealer: ({ announceAddress, bteKeyWithProof, + identityKey, resharing }: { announceAddress: string; bteKeyWithProof: string; + identityKey: string; resharing: boolean; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - commitDealing: ({ - dealingBytes, + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + commitDealingsMetadata: ({ + chunks, + dealingIndex, resharing }: { - dealingBytes: ContractSafeBytes; + chunks: DealingChunkInfo[]; + dealingIndex: number; resharing: boolean; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + commitDealingsChunk: ({ + chunk + }: { + chunk: PartialContractDealing; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; commitVerificationKeyShare: ({ resharing, share }: { resharing: boolean; share: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; verifyVerificationKeyShare: ({ owner, resharing }: { - owner: Addr; + owner: string; resharing: boolean; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - surpassedThreshold: (fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - advanceEpochState: (fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + advanceEpochState: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + triggerReset: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + triggerResharing: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + transferOwnership: ({ + transferTo + }: { + transferTo: string; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + updateAnnounceAddress: ({ + newAddress + }: { + newAddress: string; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; } export class CoconutDkgClient extends CoconutDkgQueryClient implements CoconutDkgInterface { - client: SigningCosmWasmClient; + client: ISigningCosmWasmClient; sender: string; contractAddress: string; - - constructor(client: SigningCosmWasmClient, sender: string, contractAddress: string) { + constructor(client: ISigningCosmWasmClient, sender: string, contractAddress: string) { super(client, contractAddress); this.client = client; this.sender = sender; this.contractAddress = contractAddress; + this.initiateDkg = this.initiateDkg.bind(this); this.registerDealer = this.registerDealer.bind(this); - this.commitDealing = this.commitDealing.bind(this); + this.commitDealingsMetadata = this.commitDealingsMetadata.bind(this); + this.commitDealingsChunk = this.commitDealingsChunk.bind(this); this.commitVerificationKeyShare = this.commitVerificationKeyShare.bind(this); this.verifyVerificationKeyShare = this.verifyVerificationKeyShare.bind(this); - this.surpassedThreshold = this.surpassedThreshold.bind(this); this.advanceEpochState = this.advanceEpochState.bind(this); + this.triggerReset = this.triggerReset.bind(this); + this.triggerResharing = this.triggerResharing.bind(this); + this.transferOwnership = this.transferOwnership.bind(this); + this.updateAnnounceAddress = this.updateAnnounceAddress.bind(this); } - + initiateDkg = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + initiate_dkg: {} + }, fee_, memo_, funds_); + }; registerDealer = async ({ announceAddress, bteKeyWithProof, + identityKey, resharing }: { announceAddress: string; bteKeyWithProof: string; + identityKey: string; resharing: boolean; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { register_dealer: { announce_address: announceAddress, bte_key_with_proof: bteKeyWithProof, + identity_key: identityKey, resharing } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - commitDealing = async ({ - dealingBytes, + commitDealingsMetadata = async ({ + chunks, + dealingIndex, resharing }: { - dealingBytes: ContractSafeBytes; + chunks: DealingChunkInfo[]; + dealingIndex: number; resharing: boolean; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { - commit_dealing: { - dealing_bytes: dealingBytes, + commit_dealings_metadata: { + chunks, + dealing_index: dealingIndex, resharing } - }, fee, memo, _funds); + }, fee_, memo_, funds_); + }; + commitDealingsChunk = async ({ + chunk + }: { + chunk: PartialContractDealing; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + commit_dealings_chunk: { + chunk + } + }, fee_, memo_, funds_); }; commitVerificationKeyShare = async ({ resharing, @@ -248,36 +550,63 @@ export class CoconutDkgClient extends CoconutDkgQueryClient implements CoconutDk }: { resharing: boolean; share: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { commit_verification_key_share: { resharing, share } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; verifyVerificationKeyShare = async ({ owner, resharing }: { - owner: Addr; + owner: string; resharing: boolean; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { verify_verification_key_share: { owner, resharing } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - surpassedThreshold = async (fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - surpassed_threshold: {} - }, fee, memo, _funds); - }; - advanceEpochState = async (fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + advanceEpochState = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { advance_epoch_state: {} - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; -} + triggerReset = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + trigger_reset: {} + }, fee_, memo_, funds_); + }; + triggerResharing = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + trigger_resharing: {} + }, fee_, memo_, funds_); + }; + transferOwnership = async ({ + transferTo + }: { + transferTo: string; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + transfer_ownership: { + transfer_to: transferTo + } + }, fee_, memo_, funds_); + }; + updateAnnounceAddress = async ({ + newAddress + }: { + newAddress: string; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + update_announce_address: { + new_address: newAddress + } + }, fee_, memo_, funds_); + }; +} \ No newline at end of file diff --git a/sdk/typescript/codegen/contract-clients/src/CoconutDkg.types.ts b/sdk/typescript/codegen/contract-clients/src/CoconutDkg.types.ts index 1f90bc5ed3..36483df717 100644 --- a/sdk/typescript/codegen/contract-clients/src/CoconutDkg.types.ts +++ b/sdk/typescript/codegen/contract-clients/src/CoconutDkg.types.ts @@ -1,11 +1,12 @@ /** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run the @cosmwasm/ts-codegen generate command to regenerate this file. */ export interface InstantiateMsg { group_addr: string; + key_size: number; mix_denom: string; multisig_addr: string; time_configuration?: TimeConfiguration | null; @@ -19,16 +20,24 @@ export interface TimeConfiguration { verification_key_validation_time_secs: number; } export type ExecuteMsg = { + initiate_dkg: {}; +} | { register_dealer: { announce_address: string; bte_key_with_proof: string; + identity_key: string; resharing: boolean; }; } | { - commit_dealing: { - dealing_bytes: ContractSafeBytes; + commit_dealings_metadata: { + chunks: DealingChunkInfo[]; + dealing_index: number; resharing: boolean; }; +} | { + commit_dealings_chunk: { + chunk: PartialContractDealing; + }; } | { commit_verification_key_share: { resharing: boolean; @@ -36,41 +45,115 @@ export type ExecuteMsg = { }; } | { verify_verification_key_share: { - owner: Addr; + owner: string; resharing: boolean; }; -} | { - surpassed_threshold: {}; } | { advance_epoch_state: {}; +} | { + trigger_reset: {}; +} | { + trigger_resharing: {}; +} | { + transfer_ownership: { + transfer_to: string; + }; +} | { + update_announce_address: { + new_address: string; + }; }; export type ContractSafeBytes = number[]; -export type Addr = string; +export interface DealingChunkInfo { + size: number; +} +export interface PartialContractDealing { + chunk_index: number; + data: ContractSafeBytes; + dealing_index: number; +} export type QueryMsg = { + get_state: {}; +} | { get_current_epoch_state: {}; +} | { + get_epoch_state_at_height: { + height: number; + }; } | { get_current_epoch_threshold: {}; } | { - get_initial_dealers: {}; + get_epoch_threshold: { + epoch_id: number; + }; +} | { + can_advance_state: {}; +} | { + get_registered_dealer: { + dealer_address: string; + epoch_id?: number | null; + }; } | { get_dealer_details: { dealer_address: string; }; +} | { + get_epoch_dealers_addresses: { + epoch_id: number; + limit?: number | null; + start_after?: string | null; + }; +} | { + get_epoch_dealers: { + epoch_id: number; + limit?: number | null; + start_after?: string | null; + }; } | { get_current_dealers: { limit?: number | null; start_after?: string | null; }; } | { - get_past_dealers: { + get_dealer_indices: { limit?: number | null; start_after?: string | null; }; } | { - get_dealing: { - idx: number; - limit?: number | null; - start_after?: string | null; + get_dealings_metadata: { + dealer: string; + dealing_index: number; + epoch_id: number; + }; +} | { + get_dealer_dealings_status: { + dealer: string; + epoch_id: number; + }; +} | { + get_dealing_status: { + dealer: string; + dealing_index: number; + epoch_id: number; + }; +} | { + get_dealing_chunk_status: { + chunk_index: number; + dealer: string; + dealing_index: number; + epoch_id: number; + }; +} | { + get_dealing_chunk: { + chunk_index: number; + dealer: string; + dealing_index: number; + epoch_id: number; + }; +} | { + get_verification_key: { + epoch_id: number; + owner: string; }; } | { get_verification_keys: { @@ -78,22 +161,11 @@ export type QueryMsg = { limit?: number | null; start_after?: string | null; }; +} | { + get_cw2_contract_version: {}; }; export interface MigrateMsg {} -export interface PagedDealerResponse { - dealers: DealerDetails[]; - per_page: number; - start_next_after?: Addr | null; -} -export interface DealerDetails { - address: Addr; - announce_address: string; - assigned_index: number; - bte_public_key_with_proof: string; -} -export type Timestamp = Uint64; -export type Uint64 = number; -export type EpochState = "in_progress" | { +export type EpochState = ("waiting_initialisation" | "in_progress") | { public_key_submission: { resharing: boolean; }; @@ -114,36 +186,132 @@ export type EpochState = "in_progress" | { resharing: boolean; }; }; +export type Timestamp = Uint64; +export type Uint64 = number; +export interface StateAdvanceResponse { + current_state: EpochState; + deadline?: Timestamp | null; + is_complete: boolean; + progress: StateProgress; + reached_deadline: boolean; +} +export interface StateProgress { + registered_dealers: number; + registered_resharing_dealers: number; + submitted_dealings: number; + submitted_key_shares: number; + verified_keys: number; +} +export interface ContractVersion { + contract: string; + version: string; +} +export type Addr = string; +export interface PagedDealerResponse { + dealers: DealerDetails[]; + per_page: number; + start_next_after?: Addr | null; +} +export interface DealerDetails { + address: Addr; + announce_address: string; + assigned_index: number; + bte_public_key_with_proof: string; + ed25519_identity: string; +} export interface Epoch { + deadline?: Timestamp | null; epoch_id: number; - finish_timestamp: Timestamp; state: EpochState; + state_progress: StateProgress; time_configuration: TimeConfiguration; } -export type DealerType = "current" | "past" | "unknown"; +export interface DealerDealingsStatusResponse { + all_dealings_fully_submitted: boolean; + dealer: Addr; + dealing_submission_status: {}; + epoch_id: number; +} +export type DealerType = "unknown" | { + current: { + assigned_index: number; + }; +} | { + past: { + assigned_index: number; + }; +}; export interface DealerDetailsResponse { dealer_type: DealerType; details?: DealerDetails | null; } -export interface PagedDealingsResponse { - dealings: ContractDealing[]; - per_page: number; +export interface PagedDealerIndexResponse { + indices: [Addr, number][]; start_next_after?: Addr | null; } -export interface ContractDealing { +export interface DealingChunkResponse { + chunk?: ContractSafeBytes | null; + chunk_index: number; dealer: Addr; - dealing: ContractSafeBytes; + dealing_index: number; + epoch_id: number; } -export type NullableInitialReplacementData = InitialReplacementData | null; -export interface InitialReplacementData { - initial_dealers: Addr[]; - initial_height: number; +export interface DealingChunkStatusResponse { + chunk_index: number; + dealer: Addr; + dealing_index: number; + epoch_id: number; + status: ChunkSubmissionStatus; } -export interface PagedVKSharesResponse { - per_page: number; - shares: ContractVKShare[]; +export interface ChunkSubmissionStatus { + submission_height?: number | null; +} +export interface DealingStatusResponse { + dealer: Addr; + dealing_index: number; + epoch_id: number; + status: DealingStatus; +} +export interface DealingStatus { + chunk_submission_status: {}; + fully_submitted: boolean; + has_metadata: boolean; +} +export interface DealingMetadataResponse { + dealer: Addr; + dealing_index: number; + epoch_id: number; + metadata?: DealingMetadata | null; +} +export interface DealingMetadata { + dealing_index: number; + submitted_chunks: {}; +} +export interface PagedDealerAddressesResponse { + dealers: Addr[]; start_next_after?: Addr | null; } +export type NullableEpoch = Epoch | null; +export interface RegisteredDealerDetails { + details?: DealerRegistrationDetails | null; +} +export interface DealerRegistrationDetails { + announce_address: string; + bte_public_key_with_proof: string; + ed25519_identity: string; +} +export type Cw4Contract = Addr; +export interface State { + group_addr: Cw4Contract; + key_size: number; + mix_denom: string; + multisig_addr: Addr; +} +export interface VkShareResponse { + epoch_id: number; + owner: Addr; + share?: ContractVKShare | null; +} export interface ContractVKShare { announce_address: string; epoch_id: number; @@ -151,4 +319,9 @@ export interface ContractVKShare { owner: Addr; share: string; verified: boolean; +} +export interface PagedVKSharesResponse { + per_page: number; + shares: ContractVKShare[]; + start_next_after?: Addr | null; } \ No newline at end of file diff --git a/sdk/typescript/codegen/contract-clients/src/Cw3FlexMultisig.client.ts b/sdk/typescript/codegen/contract-clients/src/Cw3FlexMultisig.client.ts index cfe3b9f76f..cae76780ea 100644 --- a/sdk/typescript/codegen/contract-clients/src/Cw3FlexMultisig.client.ts +++ b/sdk/typescript/codegen/contract-clients/src/Cw3FlexMultisig.client.ts @@ -1,13 +1,12 @@ /** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run the @cosmwasm/ts-codegen generate command to regenerate this file. */ -import { CosmWasmClient, SigningCosmWasmClient, ExecuteResult } from "@cosmjs/cosmwasm-stargate"; -import { StdFee } from "@cosmjs/amino"; -import { Executor, Addr, Duration, Uint128, UncheckedDenom, Threshold, Decimal, InstantiateMsg, UncheckedDepositInfo, ExecuteMsg, Expiration, Timestamp, Uint64, CosmosMsgForEmpty, BankMsg, StakingMsg, DistributionMsg, Binary, IbcMsg, WasmMsg, GovMsg, VoteOption, Vote, Coin, Empty, IbcTimeout, IbcTimeoutBlock, MemberChangedHookMsg, MemberDiff, QueryMsg, MigrateMsg, Cw4Contract, Denom, Config, DepositInfo, Status, ThresholdResponse, ProposalListResponseForEmpty, ProposalResponseForEmpty, VoterListResponse, VoterDetail, VoteListResponse, VoteInfo, VoteResponse, VoterResponse } from "./Cw3FlexMultisig.types"; - +import { ICosmWasmClient, ISigningCosmWasmClient } from "./baseClient"; +import { StdFee } from "@interchainjs/types"; +import { Executor, Addr, Duration, Uint128, UncheckedDenom, Threshold, Decimal, InstantiateMsg, UncheckedDepositInfo, ExecuteMsg, Expiration, Timestamp, Uint64, CosmosMsgForEmpty, BankMsg, WasmMsg, Binary, Vote, Coin, Empty, MemberChangedHookMsg, MemberDiff, QueryMsg, MigrateMsg, Cw4Contract, Denom, Config, DepositInfo, Status, ThresholdResponse, ProposalListResponseForEmpty, ProposalResponseForEmpty, VoterListResponse, VoterDetail, VoteListResponse, VoteInfo, VoteResponse, VoterResponse } from "./Cw3FlexMultisig.types"; export interface Cw3FlexMultisigReadOnlyInterface { contractAddress: string; threshold: () => Promise; @@ -61,10 +60,9 @@ export interface Cw3FlexMultisigReadOnlyInterface { config: () => Promise; } export class Cw3FlexMultisigQueryClient implements Cw3FlexMultisigReadOnlyInterface { - client: CosmWasmClient; + client: ICosmWasmClient; contractAddress: string; - - constructor(client: CosmWasmClient, contractAddress: string) { + constructor(client: ICosmWasmClient, contractAddress: string) { this.client = client; this.contractAddress = contractAddress; this.threshold = this.threshold.bind(this); @@ -77,7 +75,6 @@ export class Cw3FlexMultisigQueryClient implements Cw3FlexMultisigReadOnlyInterf this.listVoters = this.listVoters.bind(this); this.config = this.config.bind(this); } - threshold = async (): Promise => { return this.client.queryContractSmart(this.contractAddress, { threshold: {} @@ -197,36 +194,35 @@ export interface Cw3FlexMultisigInterface extends Cw3FlexMultisigReadOnlyInterfa latest?: Expiration; msgs: CosmosMsgForEmpty[]; title: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - // vote: ({ - // proposalId, - // vote - // }: { - // proposalId: number; - // vote: Vote; - // }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + vote: ({ + proposalId, + vote + }: { + proposalId: number; + vote: Vote; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; execute: ({ proposalId }: { proposalId: number; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; close: ({ proposalId }: { proposalId: number; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; memberChangedHook: ({ diffs }: { diffs: MemberDiff[]; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; } export class Cw3FlexMultisigClient extends Cw3FlexMultisigQueryClient implements Cw3FlexMultisigInterface { - client: SigningCosmWasmClient; + client: ISigningCosmWasmClient; sender: string; contractAddress: string; - - constructor(client: SigningCosmWasmClient, sender: string, contractAddress: string) { + constructor(client: ISigningCosmWasmClient, sender: string, contractAddress: string) { super(client, contractAddress); this.client = client; this.sender = sender; @@ -237,7 +233,6 @@ export class Cw3FlexMultisigClient extends Cw3FlexMultisigQueryClient implements this.close = this.close.bind(this); this.memberChangedHook = this.memberChangedHook.bind(this); } - propose = async ({ description, latest, @@ -248,7 +243,7 @@ export class Cw3FlexMultisigClient extends Cw3FlexMultisigQueryClient implements latest?: Expiration; msgs: CosmosMsgForEmpty[]; title: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { propose: { description, @@ -256,53 +251,53 @@ export class Cw3FlexMultisigClient extends Cw3FlexMultisigQueryClient implements msgs, title } - }, fee, memo, _funds); + }, fee_, memo_, funds_); + }; + vote = async ({ + proposalId, + vote + }: { + proposalId: number; + vote: Vote; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + vote: { + proposal_id: proposalId, + vote + } + }, fee_, memo_, funds_); }; - // vote = async ({ - // proposalId, - // vote - // }: { - // proposalId: number; - // vote: Vote; - // }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - // return await this.client.execute(this.sender, this.contractAddress, { - // vote: { - // proposal_id: proposalId, - // vote - // } - // }, fee, memo, _funds); - // }; execute = async ({ proposalId }: { proposalId: number; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { execute: { proposal_id: proposalId } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; close = async ({ proposalId }: { proposalId: number; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { close: { proposal_id: proposalId } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; memberChangedHook = async ({ diffs }: { diffs: MemberDiff[]; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { member_changed_hook: { diffs } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; -} +} \ No newline at end of file diff --git a/sdk/typescript/codegen/contract-clients/src/Cw3FlexMultisig.types.ts b/sdk/typescript/codegen/contract-clients/src/Cw3FlexMultisig.types.ts index 570e09b83d..d5fd3376cf 100644 --- a/sdk/typescript/codegen/contract-clients/src/Cw3FlexMultisig.types.ts +++ b/sdk/typescript/codegen/contract-clients/src/Cw3FlexMultisig.types.ts @@ -1,5 +1,5 @@ /** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run the @cosmwasm/ts-codegen generate command to regenerate this file. */ @@ -84,86 +84,17 @@ export type CosmosMsgForEmpty = { bank: BankMsg; } | { custom: Empty; -} | { - staking: StakingMsg; -} | { - distribution: DistributionMsg; -} | { - stargate: { - type_url: string; - value: Binary; - [k: string]: unknown; - }; -} | { - ibc: IbcMsg; } | { wasm: WasmMsg; -} | { - gov: GovMsg; }; export type BankMsg = { send: { amount: Coin[]; to_address: string; - [k: string]: unknown; }; } | { burn: { amount: Coin[]; - [k: string]: unknown; - }; -}; -export type StakingMsg = { - delegate: { - amount: Coin; - validator: string; - [k: string]: unknown; - }; -} | { - undelegate: { - amount: Coin; - validator: string; - [k: string]: unknown; - }; -} | { - redelegate: { - amount: Coin; - dst_validator: string; - src_validator: string; - [k: string]: unknown; - }; -}; -export type DistributionMsg = { - set_withdraw_address: { - address: string; - [k: string]: unknown; - }; -} | { - withdraw_delegator_reward: { - validator: string; - [k: string]: unknown; - }; -}; -export type Binary = string; -export type IbcMsg = { - transfer: { - amount: Coin; - channel_id: string; - timeout: IbcTimeout; - to_address: string; - [k: string]: unknown; - }; -} | { - send_packet: { - channel_id: string; - data: Binary; - timeout: IbcTimeout; - [k: string]: unknown; - }; -} | { - close_channel: { - channel_id: string; - [k: string]: unknown; }; }; export type WasmMsg = { @@ -171,7 +102,6 @@ export type WasmMsg = { contract_addr: string; funds: Coin[]; msg: Binary; - [k: string]: unknown; }; } | { instantiate: { @@ -180,54 +110,30 @@ export type WasmMsg = { funds: Coin[]; label: string; msg: Binary; - [k: string]: unknown; }; } | { migrate: { contract_addr: string; msg: Binary; new_code_id: number; - [k: string]: unknown; }; } | { update_admin: { admin: string; contract_addr: string; - [k: string]: unknown; }; } | { clear_admin: { contract_addr: string; - [k: string]: unknown; }; }; -export type GovMsg = { - vote: { - proposal_id: number; - vote: VoteOption; - [k: string]: unknown; - }; -}; -export type VoteOption = "yes" | "no" | "abstain" | "no_with_veto"; +export type Binary = string; export type Vote = "yes" | "no" | "abstain" | "veto"; export interface Coin { amount: Uint128; denom: string; - [k: string]: unknown; -} -export interface Empty { - [k: string]: unknown; -} -export interface IbcTimeout { - block?: IbcTimeoutBlock | null; - timestamp?: Timestamp | null; - [k: string]: unknown; -} -export interface IbcTimeoutBlock { - height: number; - revision: number; - [k: string]: unknown; } +export interface Empty {} export interface MemberChangedHookMsg { diffs: MemberDiff[]; } diff --git a/sdk/typescript/codegen/contract-clients/src/Cw4Group.client.ts b/sdk/typescript/codegen/contract-clients/src/Cw4Group.client.ts index 42482b9aba..2e1bfb2c01 100644 --- a/sdk/typescript/codegen/contract-clients/src/Cw4Group.client.ts +++ b/sdk/typescript/codegen/contract-clients/src/Cw4Group.client.ts @@ -1,13 +1,12 @@ /** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run the @cosmwasm/ts-codegen generate command to regenerate this file. */ -import { CosmWasmClient, SigningCosmWasmClient, ExecuteResult } from "@cosmjs/cosmwasm-stargate"; -import { Coin, StdFee } from "@cosmjs/amino"; +import { ICosmWasmClient, ISigningCosmWasmClient } from "./baseClient"; +import { Coin, StdFee } from "@interchainjs/types"; import { InstantiateMsg, Member, ExecuteMsg, QueryMsg, MigrateMsg, AdminResponse, HooksResponse, MemberListResponse, MemberResponse, TotalWeightResponse } from "./Cw4Group.types"; - export interface Cw4GroupReadOnlyInterface { contractAddress: string; admin: () => Promise; @@ -33,10 +32,9 @@ export interface Cw4GroupReadOnlyInterface { hooks: () => Promise; } export class Cw4GroupQueryClient implements Cw4GroupReadOnlyInterface { - client: CosmWasmClient; + client: ICosmWasmClient; contractAddress: string; - - constructor(client: CosmWasmClient, contractAddress: string) { + constructor(client: ICosmWasmClient, contractAddress: string) { this.client = client; this.contractAddress = contractAddress; this.admin = this.admin.bind(this); @@ -45,7 +43,6 @@ export class Cw4GroupQueryClient implements Cw4GroupReadOnlyInterface { this.member = this.member.bind(this); this.hooks = this.hooks.bind(this); } - admin = async (): Promise => { return this.client.queryContractSmart(this.contractAddress, { admin: {} @@ -103,31 +100,30 @@ export interface Cw4GroupInterface extends Cw4GroupReadOnlyInterface { admin }: { admin?: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateMembers: ({ add, remove }: { add: Member[]; remove: string[]; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; addHook: ({ addr }: { addr: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; removeHook: ({ addr }: { addr: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; } export class Cw4GroupClient extends Cw4GroupQueryClient implements Cw4GroupInterface { - client: SigningCosmWasmClient; + client: ISigningCosmWasmClient; sender: string; contractAddress: string; - - constructor(client: SigningCosmWasmClient, sender: string, contractAddress: string) { + constructor(client: ISigningCosmWasmClient, sender: string, contractAddress: string) { super(client, contractAddress); this.client = client; this.sender = sender; @@ -137,17 +133,16 @@ export class Cw4GroupClient extends Cw4GroupQueryClient implements Cw4GroupInter this.addHook = this.addHook.bind(this); this.removeHook = this.removeHook.bind(this); } - updateAdmin = async ({ admin }: { admin?: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_admin: { admin } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateMembers = async ({ add, @@ -155,34 +150,34 @@ export class Cw4GroupClient extends Cw4GroupQueryClient implements Cw4GroupInter }: { add: Member[]; remove: string[]; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_members: { add, remove } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; addHook = async ({ addr }: { addr: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { add_hook: { addr } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; removeHook = async ({ addr }: { addr: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { remove_hook: { addr } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; -} +} \ No newline at end of file diff --git a/sdk/typescript/codegen/contract-clients/src/Cw4Group.types.ts b/sdk/typescript/codegen/contract-clients/src/Cw4Group.types.ts index 6fe03352a2..836a46846c 100644 --- a/sdk/typescript/codegen/contract-clients/src/Cw4Group.types.ts +++ b/sdk/typescript/codegen/contract-clients/src/Cw4Group.types.ts @@ -1,5 +1,5 @@ /** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run the @cosmwasm/ts-codegen generate command to regenerate this file. */ diff --git a/sdk/typescript/codegen/contract-clients/src/Ecash.client.ts b/sdk/typescript/codegen/contract-clients/src/Ecash.client.ts new file mode 100644 index 0000000000..e2dd496d3b --- /dev/null +++ b/sdk/typescript/codegen/contract-clients/src/Ecash.client.ts @@ -0,0 +1,256 @@ +/** +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. +* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, +* and run the @cosmwasm/ts-codegen generate command to regenerate this file. +*/ + +import { ICosmWasmClient, ISigningCosmWasmClient } from "./baseClient"; +import { StdFee } from "@interchainjs/types"; +import { Uint128, InstantiateMsg, Coin, ExecuteMsg, QueryMsg, MigrateMsg, PagedBlacklistedAccountResponse, BlacklistedAccount, Blacklisting, BlacklistedAccountResponse, DepositResponse, Deposit, PagedDepositsResponse, DepositData, LatestDepositResponse } from "./Ecash.types"; +export interface EcashReadOnlyInterface { + contractAddress: string; + getBlacklistedAccount: ({ + publicKey + }: { + publicKey: string; + }) => Promise; + getBlacklistPaged: ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: string; + }) => Promise; + getRequiredDepositAmount: () => Promise; + getDeposit: ({ + depositId + }: { + depositId: number; + }) => Promise; + getLatestDeposit: () => Promise; + getDepositsPaged: ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: number; + }) => Promise; +} +export class EcashQueryClient implements EcashReadOnlyInterface { + client: ICosmWasmClient; + contractAddress: string; + constructor(client: ICosmWasmClient, contractAddress: string) { + this.client = client; + this.contractAddress = contractAddress; + this.getBlacklistedAccount = this.getBlacklistedAccount.bind(this); + this.getBlacklistPaged = this.getBlacklistPaged.bind(this); + this.getRequiredDepositAmount = this.getRequiredDepositAmount.bind(this); + this.getDeposit = this.getDeposit.bind(this); + this.getLatestDeposit = this.getLatestDeposit.bind(this); + this.getDepositsPaged = this.getDepositsPaged.bind(this); + } + getBlacklistedAccount = async ({ + publicKey + }: { + publicKey: string; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_blacklisted_account: { + public_key: publicKey + } + }); + }; + getBlacklistPaged = async ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: string; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_blacklist_paged: { + limit, + start_after: startAfter + } + }); + }; + getRequiredDepositAmount = async (): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_required_deposit_amount: {} + }); + }; + getDeposit = async ({ + depositId + }: { + depositId: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_deposit: { + deposit_id: depositId + } + }); + }; + getLatestDeposit = async (): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_latest_deposit: {} + }); + }; + getDepositsPaged = async ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_deposits_paged: { + limit, + start_after: startAfter + } + }); + }; +} +export interface EcashInterface extends EcashReadOnlyInterface { + contractAddress: string; + sender: string; + depositTicketBookFunds: ({ + identityKey + }: { + identityKey: string; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + requestRedemption: ({ + commitmentBs58, + numberOfTickets + }: { + commitmentBs58: string; + numberOfTickets: number; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + redeemTickets: ({ + gw, + n + }: { + gw: string; + n: number; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + updateAdmin: ({ + admin + }: { + admin: string; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + updateDepositValue: ({ + newDeposit + }: { + newDeposit: Coin; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + proposeToBlacklist: ({ + publicKey + }: { + publicKey: string; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + addToBlacklist: ({ + publicKey + }: { + publicKey: string; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; +} +export class EcashClient extends EcashQueryClient implements EcashInterface { + client: ISigningCosmWasmClient; + sender: string; + contractAddress: string; + constructor(client: ISigningCosmWasmClient, sender: string, contractAddress: string) { + super(client, contractAddress); + this.client = client; + this.sender = sender; + this.contractAddress = contractAddress; + this.depositTicketBookFunds = this.depositTicketBookFunds.bind(this); + this.requestRedemption = this.requestRedemption.bind(this); + this.redeemTickets = this.redeemTickets.bind(this); + this.updateAdmin = this.updateAdmin.bind(this); + this.updateDepositValue = this.updateDepositValue.bind(this); + this.proposeToBlacklist = this.proposeToBlacklist.bind(this); + this.addToBlacklist = this.addToBlacklist.bind(this); + } + depositTicketBookFunds = async ({ + identityKey + }: { + identityKey: string; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + deposit_ticket_book_funds: { + identity_key: identityKey + } + }, fee_, memo_, funds_); + }; + requestRedemption = async ({ + commitmentBs58, + numberOfTickets + }: { + commitmentBs58: string; + numberOfTickets: number; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + request_redemption: { + commitment_bs58: commitmentBs58, + number_of_tickets: numberOfTickets + } + }, fee_, memo_, funds_); + }; + redeemTickets = async ({ + gw, + n + }: { + gw: string; + n: number; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + redeem_tickets: { + gw, + n + } + }, fee_, memo_, funds_); + }; + updateAdmin = async ({ + admin + }: { + admin: string; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + update_admin: { + admin + } + }, fee_, memo_, funds_); + }; + updateDepositValue = async ({ + newDeposit + }: { + newDeposit: Coin; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + update_deposit_value: { + new_deposit: newDeposit + } + }, fee_, memo_, funds_); + }; + proposeToBlacklist = async ({ + publicKey + }: { + publicKey: string; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + propose_to_blacklist: { + public_key: publicKey + } + }, fee_, memo_, funds_); + }; + addToBlacklist = async ({ + publicKey + }: { + publicKey: string; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + add_to_blacklist: { + public_key: publicKey + } + }, fee_, memo_, funds_); + }; +} \ No newline at end of file diff --git a/sdk/typescript/codegen/contract-clients/src/Ecash.types.ts b/sdk/typescript/codegen/contract-clients/src/Ecash.types.ts new file mode 100644 index 0000000000..e7deb4ee28 --- /dev/null +++ b/sdk/typescript/codegen/contract-clients/src/Ecash.types.ts @@ -0,0 +1,106 @@ +/** +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. +* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, +* and run the @cosmwasm/ts-codegen generate command to regenerate this file. +*/ + +export type Uint128 = string; +export interface InstantiateMsg { + deposit_amount: Coin; + group_addr: string; + holding_account: string; + multisig_addr: string; +} +export interface Coin { + amount: Uint128; + denom: string; +} +export type ExecuteMsg = { + deposit_ticket_book_funds: { + identity_key: string; + }; +} | { + request_redemption: { + commitment_bs58: string; + number_of_tickets: number; + }; +} | { + redeem_tickets: { + gw: string; + n: number; + }; +} | { + update_admin: { + admin: string; + }; +} | { + update_deposit_value: { + new_deposit: Coin; + }; +} | { + propose_to_blacklist: { + public_key: string; + }; +} | { + add_to_blacklist: { + public_key: string; + }; +}; +export type QueryMsg = { + get_blacklisted_account: { + public_key: string; + }; +} | { + get_blacklist_paged: { + limit?: number | null; + start_after?: string | null; + }; +} | { + get_required_deposit_amount: {}; +} | { + get_deposit: { + deposit_id: number; + }; +} | { + get_latest_deposit: {}; +} | { + get_deposits_paged: { + limit?: number | null; + start_after?: number | null; + }; +}; +export interface MigrateMsg {} +export interface PagedBlacklistedAccountResponse { + accounts: BlacklistedAccount[]; + per_page: number; + start_next_after?: string | null; +} +export interface BlacklistedAccount { + info: Blacklisting; + public_key: string; +} +export interface Blacklisting { + finalized_at_height?: number | null; + proposal_id: number; +} +export interface BlacklistedAccountResponse { + account?: Blacklisting | null; +} +export interface DepositResponse { + deposit?: Deposit | null; + id: number; +} +export interface Deposit { + bs58_encoded_ed25519_pubkey: string; +} +export interface PagedDepositsResponse { + deposits: DepositData[]; + start_next_after?: number | null; +} +export interface DepositData { + deposit: Deposit; + id: number; +} +export interface LatestDepositResponse { + deposit?: DepositData | null; +} \ No newline at end of file diff --git a/sdk/typescript/codegen/contract-clients/src/Mixnet.client.ts b/sdk/typescript/codegen/contract-clients/src/Mixnet.client.ts index c775e31a3d..7d068a8a71 100644 --- a/sdk/typescript/codegen/contract-clients/src/Mixnet.client.ts +++ b/sdk/typescript/codegen/contract-clients/src/Mixnet.client.ts @@ -1,64 +1,31 @@ /** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run the @cosmwasm/ts-codegen generate command to regenerate this file. */ -import { CosmWasmClient, SigningCosmWasmClient, ExecuteResult } from "@cosmjs/cosmwasm-stargate"; -import { StdFee } from "@cosmjs/amino"; -import { Decimal, Percent, InstantiateMsg, Duration, InitialRewardingParams, ExecuteMsg, Layer, FamilyHead, MessageSignature, Uint128, ContractStateParams, Coin, IntervalRewardingParamsUpdate, LayerAssignment, MixNodeCostParams, MixNode, MixNodeConfigUpdate, Gateway, GatewayConfigUpdate, QueryMsg, MigrateMsg, Addr, PagedAllDelegationsResponse, Delegation, PagedFamiliesResponse, Family, PagedMembersResponse, MixnodeDetailsByIdentityResponse, MixNodeDetails, MixNodeBond, PendingMixNodeChanges, MixNodeRewarding, ContractVersion, ContractBuildInformation, CurrentIntervalResponse, Interval, MixNodeDelegationResponse, PagedDelegatorDelegationsResponse, EpochState, EpochStatus, EstimatedCurrentEpochRewardResponse, FamilyByHeadResponse, FamilyByLabelResponse, FamilyMembersByHeadResponse, FamilyMembersByLabelResponse, GatewayBondResponse, GatewayBond, PagedGatewayResponse, LayerDistribution, PagedMixnodeBondsResponse, PagedMixnodesDetailsResponse, PagedMixNodeDelegationsResponse, MixnodeDetailsResponse, MixnodeRewardingDetailsResponse, NumberOfPendingEventsResponse, GatewayOwnershipResponse, MixOwnershipResponse, PendingRewardResponse, PendingEpochEventKind, PendingEpochEventResponse, PendingEpochEventData, PendingEpochEventsResponse, PendingEpochEvent, PendingIntervalEventKind, PendingIntervalEventResponse, PendingIntervalEventData, PendingIntervalEventsResponse, PendingIntervalEvent, RewardedSetNodeStatus, PagedRewardedSetResponse, RewardingParams, IntervalRewardParams, String, Uint32, StakeSaturationResponse, ContractState, UnbondedMixnodeResponse, UnbondedMixnode, PagedUnbondedMixnodesResponse } from "./Mixnet.types"; -import { GetCw2ContractVersionResponse } from './types'; +import { ICosmWasmClient, ISigningCosmWasmClient } from "./baseClient"; +import { StdFee } from "@interchainjs/types"; +import { Decimal, Percent, Uint128, InstantiateMsg, Duration, InitialRewardingParams, RewardedSetParams, RangedValueForUint128, RangedValueForPercent, VersionScoreFormulaParams, OutdatedVersionWeights, ExecuteMsg, Role, MessageSignature, ContractStateParamsUpdate, ConfigScoreParamsUpdate, DelegationsParams, Coin, OperatorsParamsUpdate, ActiveSetUpdate, IntervalRewardingParamsUpdate, RoleAssignment, NodeCostParams, MixNode, MixNodeConfigUpdate, Gateway, GatewayConfigUpdate, NymNode, NodeConfigUpdate, NodeRewardingParameters, QueryMsg, MigrateMsg, AdminResponse, Addr, PagedAllDelegationsResponse, Delegation, MixnodeDetailsByIdentityResponse, MixNodeDetails, MixNodeBond, PendingMixNodeChanges, NodeRewarding, ContractVersion, ContractBuildInformation, CurrentIntervalResponse, Interval, CurrentNymNodeVersionResponse, HistoricalNymNodeVersionEntry, HistoricalNymNodeVersion, TotalVersionDifference, NodeDelegationResponse, PagedDelegatorDelegationsResponse, EpochState, EpochStatus, EstimatedCurrentEpochRewardResponse, GatewayBondResponse, GatewayBond, PagedGatewayResponse, KeyRotationIdResponse, KeyRotationState, PagedMixnodeBondsResponse, PagedMixnodesDetailsResponse, MixnodeDetailsResponse, MixnodeRewardingDetailsResponse, PagedNodeDelegationsResponse, NodeRewardingDetailsResponse, StakeSaturationResponse, NumberOfPendingEventsResponse, PagedNymNodeBondsResponse, NymNodeBond, NodeDetailsResponse, NymNodeDetails, PendingNodeChanges, NodeDetailsByIdentityResponse, NymNodeVersionHistoryResponse, PagedNymNodeDetailsResponse, GatewayOwnershipResponse, MixOwnershipResponse, NodeOwnershipResponse, PendingRewardResponse, PendingEpochEventKind, PendingEpochEventResponse, PendingEpochEventData, PendingEpochEventsResponse, PendingEpochEvent, PendingIntervalEventKind, PendingIntervalEventResponse, PendingIntervalEventData, PendingIntervalEventsResponse, PendingIntervalEvent, PreassignedGatewayIdsResponse, PreassignedId, RolesMetadataResponse, RewardedSetMetadata, RoleMetadata, RewardingParams, IntervalRewardParams, String, EpochAssignmentResponse, Uint32, MixStakeSaturationResponse, ContractState, ContractStateParams, ConfigScoreParams, OperatorsParams, UnbondedMixnodeResponse, UnbondedMixnode, PagedUnbondedMixnodesResponse, UnbondedNodeResponse, UnbondedNymNode, PagedUnbondedNymNodesResponse } from "./Mixnet.types"; export interface MixnetReadOnlyInterface { contractAddress: string; - getAllFamiliesPaged: ({ - limit, - startAfter - }: { - limit?: number; - startAfter?: string; - }) => Promise; - getAllMembersPaged: ({ - limit, - startAfter - }: { - limit?: number; - startAfter?: string; - }) => Promise; - getFamilyByHead: ({ - head - }: { - head: string; - }) => Promise; - getFamilyByLabel: ({ - label - }: { - label: string; - }) => Promise; - getFamilyMembersByHead: ({ - head - }: { - head: string; - }) => Promise; - getFamilyMembersByLabel: ({ - label - }: { - label: string; - }) => Promise; + admin: () => Promise; getContractVersion: () => Promise; getCw2ContractVersion: () => Promise; getRewardingValidatorAddress: () => Promise; getStateParams: () => Promise; getState: () => Promise; - getRewardingParams: () => Promise; - getEpochStatus: () => Promise; - getCurrentIntervalDetails: () => Promise; - getRewardedSet: ({ + getCurrentNymNodeVersion: () => Promise; + getNymNodeVersionHistory: ({ limit, startAfter }: { limit?: number; startAfter?: number; - }) => Promise; + }) => Promise; + getRewardingParams: () => Promise; + getEpochStatus: () => Promise; + getCurrentIntervalDetails: () => Promise; getMixNodeBonds: ({ limit, startAfter @@ -117,7 +84,7 @@ export interface MixnetReadOnlyInterface { mixId }: { mixId: number; - }) => Promise; + }) => Promise; getUnbondedMixNodeInformation: ({ mixId }: { @@ -128,7 +95,6 @@ export interface MixnetReadOnlyInterface { }: { mixIdentity: string; }) => Promise; - getLayerDistribution: () => Promise; getGateways: ({ limit, startAfter @@ -146,15 +112,97 @@ export interface MixnetReadOnlyInterface { }: { address: string; }) => Promise; - getMixnodeDelegations: ({ + getPreassignedGatewayIds: ({ limit, - mixId, startAfter }: { limit?: number; - mixId: number; startAfter?: string; - }) => Promise; + }) => Promise; + getNymNodeBondsPaged: ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: number; + }) => Promise; + getNymNodesDetailedPaged: ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: number; + }) => Promise; + getUnbondedNymNode: ({ + nodeId + }: { + nodeId: number; + }) => Promise; + getUnbondedNymNodesPaged: ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: number; + }) => Promise; + getUnbondedNymNodesByOwnerPaged: ({ + limit, + owner, + startAfter + }: { + limit?: number; + owner: string; + startAfter?: number; + }) => Promise; + getUnbondedNymNodesByIdentityKeyPaged: ({ + identityKey, + limit, + startAfter + }: { + identityKey: string; + limit?: number; + startAfter?: number; + }) => Promise; + getOwnedNymNode: ({ + address + }: { + address: string; + }) => Promise; + getNymNodeDetails: ({ + nodeId + }: { + nodeId: number; + }) => Promise; + getNymNodeDetailsByIdentityKey: ({ + nodeIdentity + }: { + nodeIdentity: string; + }) => Promise; + getNodeRewardingDetails: ({ + nodeId + }: { + nodeId: number; + }) => Promise; + getNodeStakeSaturation: ({ + nodeId + }: { + nodeId: number; + }) => Promise; + getRoleAssignment: ({ + role + }: { + role: Role; + }) => Promise; + getRewardedSetMetadata: () => Promise; + getNodeDelegations: ({ + limit, + nodeId, + startAfter + }: { + limit?: number; + nodeId: number; + startAfter?: string; + }) => Promise; getDelegatorDelegations: ({ delegator, limit, @@ -166,13 +214,13 @@ export interface MixnetReadOnlyInterface { }) => Promise; getDelegationDetails: ({ delegator, - mixId, + nodeId, proxy }: { delegator: string; - mixId: number; + nodeId: number; proxy?: string; - }) => Promise; + }) => Promise; getAllDelegations: ({ limit, startAfter @@ -185,37 +233,39 @@ export interface MixnetReadOnlyInterface { }: { address: string; }) => Promise; - getPendingMixNodeOperatorReward: ({ - mixId + getPendingNodeOperatorReward: ({ + nodeId }: { - mixId: number; + nodeId: number; }) => Promise; getPendingDelegatorReward: ({ address, - mixId, + nodeId, proxy }: { address: string; - mixId: number; + nodeId: number; proxy?: string; }) => Promise; getEstimatedCurrentEpochOperatorReward: ({ estimatedPerformance, - mixId + estimatedWork, + nodeId }: { estimatedPerformance: Percent; - mixId: number; + estimatedWork?: Decimal; + nodeId: number; }) => Promise; getEstimatedCurrentEpochDelegatorReward: ({ address, estimatedPerformance, - mixId, - proxy + estimatedWork, + nodeId }: { address: string; estimatedPerformance: Percent; - mixId: number; - proxy?: string; + estimatedWork?: Decimal; + nodeId: number; }) => Promise; getPendingEpochEvents: ({ limit, @@ -247,29 +297,26 @@ export interface MixnetReadOnlyInterface { }: { address: string; }) => Promise; + getKeyRotationState: () => Promise; + getKeyRotationId: () => Promise; } export class MixnetQueryClient implements MixnetReadOnlyInterface { - client: CosmWasmClient; + client: ICosmWasmClient; contractAddress: string; - - constructor(client: CosmWasmClient, contractAddress: string) { + constructor(client: ICosmWasmClient, contractAddress: string) { this.client = client; this.contractAddress = contractAddress; - this.getAllFamiliesPaged = this.getAllFamiliesPaged.bind(this); - this.getAllMembersPaged = this.getAllMembersPaged.bind(this); - this.getFamilyByHead = this.getFamilyByHead.bind(this); - this.getFamilyByLabel = this.getFamilyByLabel.bind(this); - this.getFamilyMembersByHead = this.getFamilyMembersByHead.bind(this); - this.getFamilyMembersByLabel = this.getFamilyMembersByLabel.bind(this); + this.admin = this.admin.bind(this); this.getContractVersion = this.getContractVersion.bind(this); this.getCw2ContractVersion = this.getCw2ContractVersion.bind(this); this.getRewardingValidatorAddress = this.getRewardingValidatorAddress.bind(this); this.getStateParams = this.getStateParams.bind(this); this.getState = this.getState.bind(this); + this.getCurrentNymNodeVersion = this.getCurrentNymNodeVersion.bind(this); + this.getNymNodeVersionHistory = this.getNymNodeVersionHistory.bind(this); this.getRewardingParams = this.getRewardingParams.bind(this); this.getEpochStatus = this.getEpochStatus.bind(this); this.getCurrentIntervalDetails = this.getCurrentIntervalDetails.bind(this); - this.getRewardedSet = this.getRewardedSet.bind(this); this.getMixNodeBonds = this.getMixNodeBonds.bind(this); this.getMixNodesDetailed = this.getMixNodesDetailed.bind(this); this.getUnbondedMixNodes = this.getUnbondedMixNodes.bind(this); @@ -281,16 +328,29 @@ export class MixnetQueryClient implements MixnetReadOnlyInterface { this.getStakeSaturation = this.getStakeSaturation.bind(this); this.getUnbondedMixNodeInformation = this.getUnbondedMixNodeInformation.bind(this); this.getBondedMixnodeDetailsByIdentity = this.getBondedMixnodeDetailsByIdentity.bind(this); - this.getLayerDistribution = this.getLayerDistribution.bind(this); this.getGateways = this.getGateways.bind(this); this.getGatewayBond = this.getGatewayBond.bind(this); this.getOwnedGateway = this.getOwnedGateway.bind(this); - this.getMixnodeDelegations = this.getMixnodeDelegations.bind(this); + this.getPreassignedGatewayIds = this.getPreassignedGatewayIds.bind(this); + this.getNymNodeBondsPaged = this.getNymNodeBondsPaged.bind(this); + this.getNymNodesDetailedPaged = this.getNymNodesDetailedPaged.bind(this); + this.getUnbondedNymNode = this.getUnbondedNymNode.bind(this); + this.getUnbondedNymNodesPaged = this.getUnbondedNymNodesPaged.bind(this); + this.getUnbondedNymNodesByOwnerPaged = this.getUnbondedNymNodesByOwnerPaged.bind(this); + this.getUnbondedNymNodesByIdentityKeyPaged = this.getUnbondedNymNodesByIdentityKeyPaged.bind(this); + this.getOwnedNymNode = this.getOwnedNymNode.bind(this); + this.getNymNodeDetails = this.getNymNodeDetails.bind(this); + this.getNymNodeDetailsByIdentityKey = this.getNymNodeDetailsByIdentityKey.bind(this); + this.getNodeRewardingDetails = this.getNodeRewardingDetails.bind(this); + this.getNodeStakeSaturation = this.getNodeStakeSaturation.bind(this); + this.getRoleAssignment = this.getRoleAssignment.bind(this); + this.getRewardedSetMetadata = this.getRewardedSetMetadata.bind(this); + this.getNodeDelegations = this.getNodeDelegations.bind(this); this.getDelegatorDelegations = this.getDelegatorDelegations.bind(this); this.getDelegationDetails = this.getDelegationDetails.bind(this); this.getAllDelegations = this.getAllDelegations.bind(this); this.getPendingOperatorReward = this.getPendingOperatorReward.bind(this); - this.getPendingMixNodeOperatorReward = this.getPendingMixNodeOperatorReward.bind(this); + this.getPendingNodeOperatorReward = this.getPendingNodeOperatorReward.bind(this); this.getPendingDelegatorReward = this.getPendingDelegatorReward.bind(this); this.getEstimatedCurrentEpochOperatorReward = this.getEstimatedCurrentEpochOperatorReward.bind(this); this.getEstimatedCurrentEpochDelegatorReward = this.getEstimatedCurrentEpochDelegatorReward.bind(this); @@ -300,78 +360,12 @@ export class MixnetQueryClient implements MixnetReadOnlyInterface { this.getPendingIntervalEvent = this.getPendingIntervalEvent.bind(this); this.getNumberOfPendingEvents = this.getNumberOfPendingEvents.bind(this); this.getSigningNonce = this.getSigningNonce.bind(this); + this.getKeyRotationState = this.getKeyRotationState.bind(this); + this.getKeyRotationId = this.getKeyRotationId.bind(this); } - - getAllFamiliesPaged = async ({ - limit, - startAfter - }: { - limit?: number; - startAfter?: string; - }): Promise => { + admin = async (): Promise => { return this.client.queryContractSmart(this.contractAddress, { - get_all_families_paged: { - limit, - start_after: startAfter - } - }); - }; - getAllMembersPaged = async ({ - limit, - startAfter - }: { - limit?: number; - startAfter?: string; - }): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - get_all_members_paged: { - limit, - start_after: startAfter - } - }); - }; - getFamilyByHead = async ({ - head - }: { - head: string; - }): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - get_family_by_head: { - head - } - }); - }; - getFamilyByLabel = async ({ - label - }: { - label: string; - }): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - get_family_by_label: { - label - } - }); - }; - getFamilyMembersByHead = async ({ - head - }: { - head: string; - }): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - get_family_members_by_head: { - head - } - }); - }; - getFamilyMembersByLabel = async ({ - label - }: { - label: string; - }): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - get_family_members_by_label: { - label - } + admin: {} }); }; getContractVersion = async (): Promise => { @@ -399,6 +393,25 @@ export class MixnetQueryClient implements MixnetReadOnlyInterface { get_state: {} }); }; + getCurrentNymNodeVersion = async (): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_current_nym_node_version: {} + }); + }; + getNymNodeVersionHistory = async ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_nym_node_version_history: { + limit, + start_after: startAfter + } + }); + }; getRewardingParams = async (): Promise => { return this.client.queryContractSmart(this.contractAddress, { get_rewarding_params: {} @@ -414,20 +427,6 @@ export class MixnetQueryClient implements MixnetReadOnlyInterface { get_current_interval_details: {} }); }; - getRewardedSet = async ({ - limit, - startAfter - }: { - limit?: number; - startAfter?: number; - }): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - get_rewarded_set: { - limit, - start_after: startAfter - } - }); - }; getMixNodeBonds = async ({ limit, startAfter @@ -541,7 +540,7 @@ export class MixnetQueryClient implements MixnetReadOnlyInterface { mixId }: { mixId: number; - }): Promise => { + }): Promise => { return this.client.queryContractSmart(this.contractAddress, { get_stake_saturation: { mix_id: mixId @@ -570,11 +569,6 @@ export class MixnetQueryClient implements MixnetReadOnlyInterface { } }); }; - getLayerDistribution = async (): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - get_layer_distribution: {} - }); - }; getGateways = async ({ limit, startAfter @@ -611,19 +605,191 @@ export class MixnetQueryClient implements MixnetReadOnlyInterface { } }); }; - getMixnodeDelegations = async ({ + getPreassignedGatewayIds = async ({ limit, - mixId, startAfter }: { limit?: number; - mixId: number; startAfter?: string; - }): Promise => { + }): Promise => { return this.client.queryContractSmart(this.contractAddress, { - get_mixnode_delegations: { + get_preassigned_gateway_ids: { limit, - mix_id: mixId, + start_after: startAfter + } + }); + }; + getNymNodeBondsPaged = async ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_nym_node_bonds_paged: { + limit, + start_after: startAfter + } + }); + }; + getNymNodesDetailedPaged = async ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_nym_nodes_detailed_paged: { + limit, + start_after: startAfter + } + }); + }; + getUnbondedNymNode = async ({ + nodeId + }: { + nodeId: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_unbonded_nym_node: { + node_id: nodeId + } + }); + }; + getUnbondedNymNodesPaged = async ({ + limit, + startAfter + }: { + limit?: number; + startAfter?: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_unbonded_nym_nodes_paged: { + limit, + start_after: startAfter + } + }); + }; + getUnbondedNymNodesByOwnerPaged = async ({ + limit, + owner, + startAfter + }: { + limit?: number; + owner: string; + startAfter?: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_unbonded_nym_nodes_by_owner_paged: { + limit, + owner, + start_after: startAfter + } + }); + }; + getUnbondedNymNodesByIdentityKeyPaged = async ({ + identityKey, + limit, + startAfter + }: { + identityKey: string; + limit?: number; + startAfter?: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_unbonded_nym_nodes_by_identity_key_paged: { + identity_key: identityKey, + limit, + start_after: startAfter + } + }); + }; + getOwnedNymNode = async ({ + address + }: { + address: string; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_owned_nym_node: { + address + } + }); + }; + getNymNodeDetails = async ({ + nodeId + }: { + nodeId: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_nym_node_details: { + node_id: nodeId + } + }); + }; + getNymNodeDetailsByIdentityKey = async ({ + nodeIdentity + }: { + nodeIdentity: string; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_nym_node_details_by_identity_key: { + node_identity: nodeIdentity + } + }); + }; + getNodeRewardingDetails = async ({ + nodeId + }: { + nodeId: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_node_rewarding_details: { + node_id: nodeId + } + }); + }; + getNodeStakeSaturation = async ({ + nodeId + }: { + nodeId: number; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_node_stake_saturation: { + node_id: nodeId + } + }); + }; + getRoleAssignment = async ({ + role + }: { + role: Role; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_role_assignment: { + role + } + }); + }; + getRewardedSetMetadata = async (): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_rewarded_set_metadata: {} + }); + }; + getNodeDelegations = async ({ + limit, + nodeId, + startAfter + }: { + limit?: number; + nodeId: number; + startAfter?: string; + }): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_node_delegations: { + limit, + node_id: nodeId, start_after: startAfter } }); @@ -647,17 +813,17 @@ export class MixnetQueryClient implements MixnetReadOnlyInterface { }; getDelegationDetails = async ({ delegator, - mixId, + nodeId, proxy }: { delegator: string; - mixId: number; + nodeId: number; proxy?: string; - }): Promise => { + }): Promise => { return this.client.queryContractSmart(this.contractAddress, { get_delegation_details: { delegator, - mix_id: mixId, + node_id: nodeId, proxy } }); @@ -687,65 +853,68 @@ export class MixnetQueryClient implements MixnetReadOnlyInterface { } }); }; - getPendingMixNodeOperatorReward = async ({ - mixId + getPendingNodeOperatorReward = async ({ + nodeId }: { - mixId: number; + nodeId: number; }): Promise => { return this.client.queryContractSmart(this.contractAddress, { - get_pending_mix_node_operator_reward: { - mix_id: mixId + get_pending_node_operator_reward: { + node_id: nodeId } }); }; getPendingDelegatorReward = async ({ address, - mixId, + nodeId, proxy }: { address: string; - mixId: number; + nodeId: number; proxy?: string; }): Promise => { return this.client.queryContractSmart(this.contractAddress, { get_pending_delegator_reward: { address, - mix_id: mixId, + node_id: nodeId, proxy } }); }; getEstimatedCurrentEpochOperatorReward = async ({ estimatedPerformance, - mixId + estimatedWork, + nodeId }: { estimatedPerformance: Percent; - mixId: number; + estimatedWork?: Decimal; + nodeId: number; }): Promise => { return this.client.queryContractSmart(this.contractAddress, { get_estimated_current_epoch_operator_reward: { estimated_performance: estimatedPerformance, - mix_id: mixId + estimated_work: estimatedWork, + node_id: nodeId } }); }; getEstimatedCurrentEpochDelegatorReward = async ({ address, estimatedPerformance, - mixId, - proxy + estimatedWork, + nodeId }: { address: string; estimatedPerformance: Percent; - mixId: number; - proxy?: string; + estimatedWork?: Decimal; + nodeId: number; }): Promise => { return this.client.queryContractSmart(this.contractAddress, { get_estimated_current_epoch_delegator_reward: { address, estimated_performance: estimatedPerformance, - mix_id: mixId, - proxy + estimated_work: estimatedWork, + node_id: nodeId } }); }; @@ -815,93 +984,54 @@ export class MixnetQueryClient implements MixnetReadOnlyInterface { } }); }; + getKeyRotationState = async (): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_key_rotation_state: {} + }); + }; + getKeyRotationId = async (): Promise => { + return this.client.queryContractSmart(this.contractAddress, { + get_key_rotation_id: {} + }); + }; } export interface MixnetInterface extends MixnetReadOnlyInterface { contractAddress: string; sender: string; - assignNodeLayer: ({ - layer, - mixId + updateAdmin: ({ + admin }: { - layer: Layer; - mixId: number; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - createFamily: ({ - label - }: { - label: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - joinFamily: ({ - familyHead, - joinPermit - }: { - familyHead: FamilyHead; - joinPermit: MessageSignature; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - leaveFamily: ({ - familyHead - }: { - familyHead: FamilyHead; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - kickFamilyMember: ({ - member - }: { - member: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - createFamilyOnBehalf: ({ - label, - ownerAddress - }: { - label: string; - ownerAddress: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - joinFamilyOnBehalf: ({ - familyHead, - joinPermit, - memberAddress - }: { - familyHead: FamilyHead; - joinPermit: MessageSignature; - memberAddress: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - leaveFamilyOnBehalf: ({ - familyHead, - memberAddress - }: { - familyHead: FamilyHead; - memberAddress: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - kickFamilyMemberOnBehalf: ({ - headAddress, - member - }: { - headAddress: string; - member: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + admin: string; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateRewardingValidatorAddress: ({ address }: { address: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateContractStateParams: ({ - updatedParameters + update }: { - updatedParameters: ContractStateParams; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - updateActiveSetSize: ({ - activeSetSize, - forceImmediately + update: ContractStateParamsUpdate; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + updateCurrentNymNodeSemver: ({ + currentVersion + }: { + currentVersion: string; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + updateActiveSetDistribution: ({ + forceImmediately, + update }: { - activeSetSize: number; forceImmediately: boolean; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + update: ActiveSetUpdate; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateRewardingParams: ({ forceImmediately, updatedParams }: { forceImmediately: boolean; updatedParams: IntervalRewardingParamsUpdate; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateIntervalConfig: ({ epochDurationSecs, epochsInInterval, @@ -910,95 +1040,94 @@ export interface MixnetInterface extends MixnetReadOnlyInterface { epochDurationSecs: number; epochsInInterval: number; forceImmediately: boolean; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - beginEpochTransition: (fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - advanceCurrentEpoch: ({ - expectedActiveSetSize, - newRewardedSet - }: { - expectedActiveSetSize: number; - newRewardedSet: LayerAssignment[]; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + beginEpochTransition: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; reconcileEpochEvents: ({ limit }: { limit?: number; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + assignRoles: ({ + assignment + }: { + assignment: RoleAssignment; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; bondMixnode: ({ costParams, mixNode, ownerSignature }: { - costParams: MixNodeCostParams; + costParams: NodeCostParams; mixNode: MixNode; ownerSignature: MessageSignature; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; bondMixnodeOnBehalf: ({ costParams, mixNode, owner, ownerSignature }: { - costParams: MixNodeCostParams; + costParams: NodeCostParams; mixNode: MixNode; owner: string; ownerSignature: MessageSignature; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - pledgeMore: (fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + pledgeMore: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; pledgeMoreOnBehalf: ({ owner }: { owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; decreasePledge: ({ decreaseBy }: { decreaseBy: Coin; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; decreasePledgeOnBehalf: ({ decreaseBy, owner }: { decreaseBy: Coin; owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - unbondMixnode: (fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + unbondMixnode: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; unbondMixnodeOnBehalf: ({ owner }: { owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - updateMixnodeCostParams: ({ + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + updateCostParams: ({ newCosts }: { - newCosts: MixNodeCostParams; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + newCosts: NodeCostParams; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateMixnodeCostParamsOnBehalf: ({ newCosts, owner }: { - newCosts: MixNodeCostParams; + newCosts: NodeCostParams; owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateMixnodeConfig: ({ newConfig }: { newConfig: MixNodeConfigUpdate; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateMixnodeConfigOnBehalf: ({ newConfig, owner }: { newConfig: MixNodeConfigUpdate; owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + migrateMixnode: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; bondGateway: ({ gateway, ownerSignature }: { gateway: Gateway; ownerSignature: MessageSignature; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; bondGatewayOnBehalf: ({ gateway, owner, @@ -1007,102 +1136,120 @@ export interface MixnetInterface extends MixnetReadOnlyInterface { gateway: Gateway; owner: string; ownerSignature: MessageSignature; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - unbondGateway: (fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + unbondGateway: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; unbondGatewayOnBehalf: ({ owner }: { owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateGatewayConfig: ({ newConfig }: { newConfig: GatewayConfigUpdate; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateGatewayConfigOnBehalf: ({ newConfig, owner }: { newConfig: GatewayConfigUpdate; owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - delegateToMixnode: ({ - mixId + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + migrateGateway: ({ + costParams }: { - mixId: number; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + costParams?: NodeCostParams; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + bondNymNode: ({ + costParams, + node, + ownerSignature + }: { + costParams: NodeCostParams; + node: NymNode; + ownerSignature: MessageSignature; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + unbondNymNode: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + updateNodeConfig: ({ + update + }: { + update: NodeConfigUpdate; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + delegate: ({ + nodeId + }: { + nodeId: number; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; delegateToMixnodeOnBehalf: ({ delegate, mixId }: { delegate: string; mixId: number; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - undelegateFromMixnode: ({ - mixId + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + undelegate: ({ + nodeId }: { - mixId: number; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + nodeId: number; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; undelegateFromMixnodeOnBehalf: ({ delegate, mixId }: { delegate: string; mixId: number; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - rewardMixnode: ({ - mixId, - performance + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + rewardNode: ({ + nodeId, + params }: { - mixId: number; - performance: Percent; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - withdrawOperatorReward: (fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + nodeId: number; + params: NodeRewardingParameters; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + withdrawOperatorReward: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; withdrawOperatorRewardOnBehalf: ({ owner }: { owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; withdrawDelegatorReward: ({ - mixId + nodeId }: { - mixId: number; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + nodeId: number; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; withdrawDelegatorRewardOnBehalf: ({ mixId, owner }: { mixId: number; owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + migrateVestedMixNode: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + migrateVestedDelegation: ({ + mixId + }: { + mixId: number; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; } export class MixnetClient extends MixnetQueryClient implements MixnetInterface { - client: SigningCosmWasmClient; + client: ISigningCosmWasmClient; sender: string; contractAddress: string; - - constructor(client: SigningCosmWasmClient, sender: string, contractAddress: string) { + constructor(client: ISigningCosmWasmClient, sender: string, contractAddress: string) { super(client, contractAddress); this.client = client; this.sender = sender; this.contractAddress = contractAddress; - this.assignNodeLayer = this.assignNodeLayer.bind(this); - this.createFamily = this.createFamily.bind(this); - this.joinFamily = this.joinFamily.bind(this); - this.leaveFamily = this.leaveFamily.bind(this); - this.kickFamilyMember = this.kickFamilyMember.bind(this); - this.createFamilyOnBehalf = this.createFamilyOnBehalf.bind(this); - this.joinFamilyOnBehalf = this.joinFamilyOnBehalf.bind(this); - this.leaveFamilyOnBehalf = this.leaveFamilyOnBehalf.bind(this); - this.kickFamilyMemberOnBehalf = this.kickFamilyMemberOnBehalf.bind(this); + this.updateAdmin = this.updateAdmin.bind(this); this.updateRewardingValidatorAddress = this.updateRewardingValidatorAddress.bind(this); this.updateContractStateParams = this.updateContractStateParams.bind(this); - this.updateActiveSetSize = this.updateActiveSetSize.bind(this); + this.updateCurrentNymNodeSemver = this.updateCurrentNymNodeSemver.bind(this); + this.updateActiveSetDistribution = this.updateActiveSetDistribution.bind(this); this.updateRewardingParams = this.updateRewardingParams.bind(this); this.updateIntervalConfig = this.updateIntervalConfig.bind(this); this.beginEpochTransition = this.beginEpochTransition.bind(this); - this.advanceCurrentEpoch = this.advanceCurrentEpoch.bind(this); this.reconcileEpochEvents = this.reconcileEpochEvents.bind(this); + this.assignRoles = this.assignRoles.bind(this); this.bondMixnode = this.bondMixnode.bind(this); this.bondMixnodeOnBehalf = this.bondMixnodeOnBehalf.bind(this); this.pledgeMore = this.pledgeMore.bind(this); @@ -1111,182 +1258,90 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { this.decreasePledgeOnBehalf = this.decreasePledgeOnBehalf.bind(this); this.unbondMixnode = this.unbondMixnode.bind(this); this.unbondMixnodeOnBehalf = this.unbondMixnodeOnBehalf.bind(this); - this.updateMixnodeCostParams = this.updateMixnodeCostParams.bind(this); + this.updateCostParams = this.updateCostParams.bind(this); this.updateMixnodeCostParamsOnBehalf = this.updateMixnodeCostParamsOnBehalf.bind(this); this.updateMixnodeConfig = this.updateMixnodeConfig.bind(this); this.updateMixnodeConfigOnBehalf = this.updateMixnodeConfigOnBehalf.bind(this); + this.migrateMixnode = this.migrateMixnode.bind(this); this.bondGateway = this.bondGateway.bind(this); this.bondGatewayOnBehalf = this.bondGatewayOnBehalf.bind(this); this.unbondGateway = this.unbondGateway.bind(this); this.unbondGatewayOnBehalf = this.unbondGatewayOnBehalf.bind(this); this.updateGatewayConfig = this.updateGatewayConfig.bind(this); this.updateGatewayConfigOnBehalf = this.updateGatewayConfigOnBehalf.bind(this); - this.delegateToMixnode = this.delegateToMixnode.bind(this); + this.migrateGateway = this.migrateGateway.bind(this); + this.bondNymNode = this.bondNymNode.bind(this); + this.unbondNymNode = this.unbondNymNode.bind(this); + this.updateNodeConfig = this.updateNodeConfig.bind(this); + this.delegate = this.delegate.bind(this); this.delegateToMixnodeOnBehalf = this.delegateToMixnodeOnBehalf.bind(this); - this.undelegateFromMixnode = this.undelegateFromMixnode.bind(this); + this.undelegate = this.undelegate.bind(this); this.undelegateFromMixnodeOnBehalf = this.undelegateFromMixnodeOnBehalf.bind(this); - this.rewardMixnode = this.rewardMixnode.bind(this); + this.rewardNode = this.rewardNode.bind(this); this.withdrawOperatorReward = this.withdrawOperatorReward.bind(this); this.withdrawOperatorRewardOnBehalf = this.withdrawOperatorRewardOnBehalf.bind(this); this.withdrawDelegatorReward = this.withdrawDelegatorReward.bind(this); this.withdrawDelegatorRewardOnBehalf = this.withdrawDelegatorRewardOnBehalf.bind(this); + this.migrateVestedMixNode = this.migrateVestedMixNode.bind(this); + this.migrateVestedDelegation = this.migrateVestedDelegation.bind(this); } - - assignNodeLayer = async ({ - layer, - mixId + updateAdmin = async ({ + admin }: { - layer: Layer; - mixId: number; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + admin: string; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { - assign_node_layer: { - layer, - mix_id: mixId + update_admin: { + admin } - }, fee, memo, _funds); - }; - createFamily = async ({ - label - }: { - label: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - create_family: { - label - } - }, fee, memo, _funds); - }; - joinFamily = async ({ - familyHead, - joinPermit - }: { - familyHead: FamilyHead; - joinPermit: MessageSignature; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - join_family: { - family_head: familyHead, - join_permit: joinPermit - } - }, fee, memo, _funds); - }; - leaveFamily = async ({ - familyHead - }: { - familyHead: FamilyHead; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - leave_family: { - family_head: familyHead - } - }, fee, memo, _funds); - }; - kickFamilyMember = async ({ - member - }: { - member: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - kick_family_member: { - member - } - }, fee, memo, _funds); - }; - createFamilyOnBehalf = async ({ - label, - ownerAddress - }: { - label: string; - ownerAddress: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - create_family_on_behalf: { - label, - owner_address: ownerAddress - } - }, fee, memo, _funds); - }; - joinFamilyOnBehalf = async ({ - familyHead, - joinPermit, - memberAddress - }: { - familyHead: FamilyHead; - joinPermit: MessageSignature; - memberAddress: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - join_family_on_behalf: { - family_head: familyHead, - join_permit: joinPermit, - member_address: memberAddress - } - }, fee, memo, _funds); - }; - leaveFamilyOnBehalf = async ({ - familyHead, - memberAddress - }: { - familyHead: FamilyHead; - memberAddress: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - leave_family_on_behalf: { - family_head: familyHead, - member_address: memberAddress - } - }, fee, memo, _funds); - }; - kickFamilyMemberOnBehalf = async ({ - headAddress, - member - }: { - headAddress: string; - member: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - kick_family_member_on_behalf: { - head_address: headAddress, - member - } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateRewardingValidatorAddress = async ({ address }: { address: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_rewarding_validator_address: { address } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateContractStateParams = async ({ - updatedParameters + update }: { - updatedParameters: ContractStateParams; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + update: ContractStateParamsUpdate; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_contract_state_params: { - updated_parameters: updatedParameters + update } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - updateActiveSetSize = async ({ - activeSetSize, - forceImmediately + updateCurrentNymNodeSemver = async ({ + currentVersion }: { - activeSetSize: number; - forceImmediately: boolean; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + currentVersion: string; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { - update_active_set_size: { - active_set_size: activeSetSize, - force_immediately: forceImmediately + update_current_nym_node_semver: { + current_version: currentVersion } - }, fee, memo, _funds); + }, fee_, memo_, funds_); + }; + updateActiveSetDistribution = async ({ + forceImmediately, + update + }: { + forceImmediately: boolean; + update: ActiveSetUpdate; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + update_active_set_distribution: { + force_immediately: forceImmediately, + update + } + }, fee_, memo_, funds_); }; updateRewardingParams = async ({ forceImmediately, @@ -1294,13 +1349,13 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { }: { forceImmediately: boolean; updatedParams: IntervalRewardingParamsUpdate; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_rewarding_params: { force_immediately: forceImmediately, updated_params: updatedParams } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateIntervalConfig = async ({ epochDurationSecs, @@ -1310,61 +1365,58 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { epochDurationSecs: number; epochsInInterval: number; forceImmediately: boolean; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_interval_config: { epoch_duration_secs: epochDurationSecs, epochs_in_interval: epochsInInterval, force_immediately: forceImmediately } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - beginEpochTransition = async (fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + beginEpochTransition = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { begin_epoch_transition: {} - }, fee, memo, _funds); - }; - advanceCurrentEpoch = async ({ - expectedActiveSetSize, - newRewardedSet - }: { - expectedActiveSetSize: number; - newRewardedSet: LayerAssignment[]; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - advance_current_epoch: { - expected_active_set_size: expectedActiveSetSize, - new_rewarded_set: newRewardedSet - } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; reconcileEpochEvents = async ({ limit }: { limit?: number; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { reconcile_epoch_events: { limit } - }, fee, memo, _funds); + }, fee_, memo_, funds_); + }; + assignRoles = async ({ + assignment + }: { + assignment: RoleAssignment; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + assign_roles: { + assignment + } + }, fee_, memo_, funds_); }; bondMixnode = async ({ costParams, mixNode, ownerSignature }: { - costParams: MixNodeCostParams; + costParams: NodeCostParams; mixNode: MixNode; ownerSignature: MessageSignature; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { bond_mixnode: { cost_params: costParams, mix_node: mixNode, owner_signature: ownerSignature } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; bondMixnodeOnBehalf = async ({ costParams, @@ -1372,11 +1424,11 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { owner, ownerSignature }: { - costParams: MixNodeCostParams; + costParams: NodeCostParams; mixNode: MixNode; owner: string; ownerSignature: MessageSignature; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { bond_mixnode_on_behalf: { cost_params: costParams, @@ -1384,34 +1436,34 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { owner, owner_signature: ownerSignature } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - pledgeMore = async (fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + pledgeMore = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { pledge_more: {} - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; pledgeMoreOnBehalf = async ({ owner }: { owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { pledge_more_on_behalf: { owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; decreasePledge = async ({ decreaseBy }: { decreaseBy: Coin; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { decrease_pledge: { decrease_by: decreaseBy } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; decreasePledgeOnBehalf = async ({ decreaseBy, @@ -1419,65 +1471,65 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { }: { decreaseBy: Coin; owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { decrease_pledge_on_behalf: { decrease_by: decreaseBy, owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - unbondMixnode = async (fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + unbondMixnode = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { unbond_mixnode: {} - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; unbondMixnodeOnBehalf = async ({ owner }: { owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { unbond_mixnode_on_behalf: { owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - updateMixnodeCostParams = async ({ + updateCostParams = async ({ newCosts }: { - newCosts: MixNodeCostParams; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + newCosts: NodeCostParams; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { - update_mixnode_cost_params: { + update_cost_params: { new_costs: newCosts } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateMixnodeCostParamsOnBehalf = async ({ newCosts, owner }: { - newCosts: MixNodeCostParams; + newCosts: NodeCostParams; owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_mixnode_cost_params_on_behalf: { new_costs: newCosts, owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateMixnodeConfig = async ({ newConfig }: { newConfig: MixNodeConfigUpdate; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_mixnode_config: { new_config: newConfig } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateMixnodeConfigOnBehalf = async ({ newConfig, @@ -1485,13 +1537,18 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { }: { newConfig: MixNodeConfigUpdate; owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_mixnode_config_on_behalf: { new_config: newConfig, owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); + }; + migrateMixnode = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + migrate_mixnode: {} + }, fee_, memo_, funds_); }; bondGateway = async ({ gateway, @@ -1499,13 +1556,13 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { }: { gateway: Gateway; ownerSignature: MessageSignature; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { bond_gateway: { gateway, owner_signature: ownerSignature } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; bondGatewayOnBehalf = async ({ gateway, @@ -1515,41 +1572,41 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { gateway: Gateway; owner: string; ownerSignature: MessageSignature; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { bond_gateway_on_behalf: { gateway, owner, owner_signature: ownerSignature } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - unbondGateway = async (fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + unbondGateway = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { unbond_gateway: {} - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; unbondGatewayOnBehalf = async ({ owner }: { owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { unbond_gateway_on_behalf: { owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateGatewayConfig = async ({ newConfig }: { newConfig: GatewayConfigUpdate; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_gateway_config: { new_config: newConfig } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateGatewayConfigOnBehalf = async ({ newConfig, @@ -1557,24 +1614,68 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { }: { newConfig: GatewayConfigUpdate; owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_gateway_config_on_behalf: { new_config: newConfig, owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - delegateToMixnode = async ({ - mixId + migrateGateway = async ({ + costParams }: { - mixId: number; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + costParams?: NodeCostParams; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { - delegate_to_mixnode: { - mix_id: mixId + migrate_gateway: { + cost_params: costParams } - }, fee, memo, _funds); + }, fee_, memo_, funds_); + }; + bondNymNode = async ({ + costParams, + node, + ownerSignature + }: { + costParams: NodeCostParams; + node: NymNode; + ownerSignature: MessageSignature; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + bond_nym_node: { + cost_params: costParams, + node, + owner_signature: ownerSignature + } + }, fee_, memo_, funds_); + }; + unbondNymNode = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + unbond_nym_node: {} + }, fee_, memo_, funds_); + }; + updateNodeConfig = async ({ + update + }: { + update: NodeConfigUpdate; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + update_node_config: { + update + } + }, fee_, memo_, funds_); + }; + delegate = async ({ + nodeId + }: { + nodeId: number; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + delegate: { + node_id: nodeId + } + }, fee_, memo_, funds_); }; delegateToMixnodeOnBehalf = async ({ delegate, @@ -1582,24 +1683,24 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { }: { delegate: string; mixId: number; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { delegate_to_mixnode_on_behalf: { delegate, mix_id: mixId } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - undelegateFromMixnode = async ({ - mixId + undelegate = async ({ + nodeId }: { - mixId: number; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + nodeId: number; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { - undelegate_from_mixnode: { - mix_id: mixId + undelegate: { + node_id: nodeId } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; undelegateFromMixnodeOnBehalf = async ({ delegate, @@ -1607,54 +1708,54 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { }: { delegate: string; mixId: number; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { undelegate_from_mixnode_on_behalf: { delegate, mix_id: mixId } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - rewardMixnode = async ({ - mixId, - performance + rewardNode = async ({ + nodeId, + params }: { - mixId: number; - performance: Percent; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + nodeId: number; + params: NodeRewardingParameters; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { - reward_mixnode: { - mix_id: mixId, - performance + reward_node: { + node_id: nodeId, + params } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - withdrawOperatorReward = async (fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + withdrawOperatorReward = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { withdraw_operator_reward: {} - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; withdrawOperatorRewardOnBehalf = async ({ owner }: { owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { withdraw_operator_reward_on_behalf: { owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; withdrawDelegatorReward = async ({ - mixId + nodeId }: { - mixId: number; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + nodeId: number; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { withdraw_delegator_reward: { - mix_id: mixId + node_id: nodeId } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; withdrawDelegatorRewardOnBehalf = async ({ mixId, @@ -1662,12 +1763,28 @@ export class MixnetClient extends MixnetQueryClient implements MixnetInterface { }: { mixId: number; owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { withdraw_delegator_reward_on_behalf: { mix_id: mixId, owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; -} + migrateVestedMixNode = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + migrate_vested_mix_node: {} + }, fee_, memo_, funds_); + }; + migrateVestedDelegation = async ({ + mixId + }: { + mixId: number; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + migrate_vested_delegation: { + mix_id: mixId + } + }, fee_, memo_, funds_); + }; +} \ No newline at end of file diff --git a/sdk/typescript/codegen/contract-clients/src/Mixnet.types.ts b/sdk/typescript/codegen/contract-clients/src/Mixnet.types.ts index f0630f673f..9f38ec385c 100644 --- a/sdk/typescript/codegen/contract-clients/src/Mixnet.types.ts +++ b/sdk/typescript/codegen/contract-clients/src/Mixnet.types.ts @@ -1,80 +1,66 @@ /** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run the @cosmwasm/ts-codegen generate command to regenerate this file. */ export type Decimal = string; export type Percent = Decimal; - -/** - * This instantiates the contract. - */ +export type Uint128 = string; export interface InstantiateMsg { + current_nym_node_version: string; epoch_duration: Duration; epochs_in_interval: number; initial_rewarding_params: InitialRewardingParams; + interval_operating_cost?: RangedValueForUint128; + key_validity_in_epochs?: number | null; + profit_margin?: RangedValueForPercent; rewarding_denom: string; rewarding_validator_address: string; + version_score_params?: VersionScoreFormulaParams; + version_score_weights?: OutdatedVersionWeights; vesting_contract_address: string; } export interface Duration { nanos: number; secs: number; - [k: string]: unknown; } export interface InitialRewardingParams { - active_set_size: number; active_set_work_factor: Decimal; initial_reward_pool: Decimal; initial_staking_supply: Decimal; interval_pool_emission: Percent; - rewarded_set_size: number; + rewarded_set_params: RewardedSetParams; staking_supply_scale_factor: Percent; sybil_resistance: Percent; } +export interface RewardedSetParams { + entry_gateways: number; + exit_gateways: number; + mixnodes: number; + standby: number; +} +export interface RangedValueForUint128 { + maximum: Uint128; + minimum: Uint128; +} +export interface RangedValueForPercent { + maximum: Percent; + minimum: Percent; +} +export interface VersionScoreFormulaParams { + penalty: Decimal; + penalty_scaling: Decimal; +} +export interface OutdatedVersionWeights { + major: number; + minor: number; + patch: number; + prerelease: number; +} export type ExecuteMsg = { - assign_node_layer: { - layer: Layer; - mix_id: number; - }; -} | { - create_family: { - label: string; - }; -} | { - join_family: { - family_head: FamilyHead; - join_permit: MessageSignature; - }; -} | { - leave_family: { - family_head: FamilyHead; - }; -} | { - kick_family_member: { - member: string; - }; -} | { - create_family_on_behalf: { - label: string; - owner_address: string; - }; -} | { - join_family_on_behalf: { - family_head: FamilyHead; - join_permit: MessageSignature; - member_address: string; - }; -} | { - leave_family_on_behalf: { - family_head: FamilyHead; - member_address: string; - }; -} | { - kick_family_member_on_behalf: { - head_address: string; - member: string; + update_admin: { + admin: string; }; } | { update_rewarding_validator_address: { @@ -82,12 +68,16 @@ export type ExecuteMsg = { }; } | { update_contract_state_params: { - updated_parameters: ContractStateParams; + update: ContractStateParamsUpdate; }; } | { - update_active_set_size: { - active_set_size: number; + update_current_nym_node_semver: { + current_version: string; + }; +} | { + update_active_set_distribution: { force_immediately: boolean; + update: ActiveSetUpdate; }; } | { update_rewarding_params: { @@ -102,24 +92,23 @@ export type ExecuteMsg = { }; } | { begin_epoch_transition: {}; -} | { - advance_current_epoch: { - expected_active_set_size: number; - new_rewarded_set: LayerAssignment[]; - }; } | { reconcile_epoch_events: { limit?: number | null; }; +} | { + assign_roles: { + assignment: RoleAssignment; + }; } | { bond_mixnode: { - cost_params: MixNodeCostParams; + cost_params: NodeCostParams; mix_node: MixNode; owner_signature: MessageSignature; }; } | { bond_mixnode_on_behalf: { - cost_params: MixNodeCostParams; + cost_params: NodeCostParams; mix_node: MixNode; owner: string; owner_signature: MessageSignature; @@ -146,12 +135,12 @@ export type ExecuteMsg = { owner: string; }; } | { - update_mixnode_cost_params: { - new_costs: MixNodeCostParams; + update_cost_params: { + new_costs: NodeCostParams; }; } | { update_mixnode_cost_params_on_behalf: { - new_costs: MixNodeCostParams; + new_costs: NodeCostParams; owner: string; }; } | { @@ -163,6 +152,8 @@ export type ExecuteMsg = { new_config: MixNodeConfigUpdate; owner: string; }; +} | { + migrate_mixnode: {}; } | { bond_gateway: { gateway: Gateway; @@ -190,8 +181,24 @@ export type ExecuteMsg = { owner: string; }; } | { - delegate_to_mixnode: { - mix_id: number; + migrate_gateway: { + cost_params?: NodeCostParams | null; + }; +} | { + bond_nym_node: { + cost_params: NodeCostParams; + node: NymNode; + owner_signature: MessageSignature; + }; +} | { + unbond_nym_node: {}; +} | { + update_node_config: { + update: NodeConfigUpdate; + }; +} | { + delegate: { + node_id: number; }; } | { delegate_to_mixnode_on_behalf: { @@ -199,8 +206,8 @@ export type ExecuteMsg = { mix_id: number; }; } | { - undelegate_from_mixnode: { - mix_id: number; + undelegate: { + node_id: number; }; } | { undelegate_from_mixnode_on_behalf: { @@ -208,9 +215,9 @@ export type ExecuteMsg = { mix_id: number; }; } | { - reward_mixnode: { - mix_id: number; - performance: Percent; + reward_node: { + node_id: number; + params: NodeRewardingParameters; }; } | { withdraw_operator_reward: {}; @@ -220,42 +227,62 @@ export type ExecuteMsg = { }; } | { withdraw_delegator_reward: { - mix_id: number; + node_id: number; }; } | { withdraw_delegator_reward_on_behalf: { mix_id: number; owner: string; }; +} | { + migrate_vested_mix_node: {}; +} | { + migrate_vested_delegation: { + mix_id: number; + }; }; -export type Layer = "One" | "Two" | "Three"; -export type FamilyHead = string; +export type Role = "eg" | "l1" | "l2" | "l3" | "xg" | "stb"; export type MessageSignature = number[]; -export type Uint128 = string; -export interface ContractStateParams { - minimum_gateway_pledge: Coin; - minimum_mixnode_delegation?: Coin | null; - minimum_mixnode_pledge: Coin; +export interface ContractStateParamsUpdate { + config_score_params?: ConfigScoreParamsUpdate | null; + delegations_params?: DelegationsParams | null; + operators_params?: OperatorsParamsUpdate | null; +} +export interface ConfigScoreParamsUpdate { + version_score_formula_params?: VersionScoreFormulaParams | null; + version_weights?: OutdatedVersionWeights | null; +} +export interface DelegationsParams { + minimum_delegation?: Coin | null; } export interface Coin { amount: Uint128; denom: string; - [k: string]: unknown; +} +export interface OperatorsParamsUpdate { + interval_operating_cost?: RangedValueForUint128 | null; + minimum_pledge?: Coin | null; + profit_margin?: RangedValueForPercent | null; +} +export interface ActiveSetUpdate { + entry_gateways: number; + exit_gateways: number; + mixnodes: number; } export interface IntervalRewardingParamsUpdate { active_set_work_factor?: Decimal | null; interval_pool_emission?: Percent | null; reward_pool?: Decimal | null; - rewarded_set_size?: number | null; + rewarded_set_params?: RewardedSetParams | null; staking_supply?: Decimal | null; staking_supply_scale_factor?: Percent | null; sybil_resistance_percent?: Percent | null; } -export interface LayerAssignment { - layer: Layer; - mix_id: number; +export interface RoleAssignment { + nodes: number[]; + role: Role; } -export interface MixNodeCostParams { +export interface NodeCostParams { interval_operating_cost: Coin; profit_margin_percent: Percent; } @@ -291,32 +318,22 @@ export interface GatewayConfigUpdate { mix_port: number; version: string; } +export interface NymNode { + custom_http_port?: number | null; + host: string; + identity_key: string; +} +export interface NodeConfigUpdate { + custom_http_port?: number | null; + host?: string | null; + restore_default_http_port?: boolean; +} +export interface NodeRewardingParameters { + performance: Percent; + work_factor: Decimal; +} export type QueryMsg = { - get_all_families_paged: { - limit?: number | null; - start_after?: string | null; - }; -} | { - get_all_members_paged: { - limit?: number | null; - start_after?: string | null; - }; -} | { - get_family_by_head: { - head: string; - }; -} | { - get_family_by_label: { - label: string; - }; -} | { - get_family_members_by_head: { - head: string; - }; -} | { - get_family_members_by_label: { - label: string; - }; + admin: {}; } | { get_contract_version: {}; } | { @@ -327,17 +344,19 @@ export type QueryMsg = { get_state_params: {}; } | { get_state: {}; +} | { + get_current_nym_node_version: {}; +} | { + get_nym_node_version_history: { + limit?: number | null; + start_after?: number | null; + }; } | { get_rewarding_params: {}; } | { get_epoch_status: {}; } | { get_current_interval_details: {}; -} | { - get_rewarded_set: { - limit?: number | null; - start_after?: number | null; - }; } | { get_mix_node_bonds: { limit?: number | null; @@ -389,8 +408,6 @@ export type QueryMsg = { get_bonded_mixnode_details_by_identity: { mix_identity: string; }; -} | { - get_layer_distribution: {}; } | { get_gateways: { limit?: number | null; @@ -405,9 +422,71 @@ export type QueryMsg = { address: string; }; } | { - get_mixnode_delegations: { + get_preassigned_gateway_ids: { limit?: number | null; - mix_id: number; + start_after?: string | null; + }; +} | { + get_nym_node_bonds_paged: { + limit?: number | null; + start_after?: number | null; + }; +} | { + get_nym_nodes_detailed_paged: { + limit?: number | null; + start_after?: number | null; + }; +} | { + get_unbonded_nym_node: { + node_id: number; + }; +} | { + get_unbonded_nym_nodes_paged: { + limit?: number | null; + start_after?: number | null; + }; +} | { + get_unbonded_nym_nodes_by_owner_paged: { + limit?: number | null; + owner: string; + start_after?: number | null; + }; +} | { + get_unbonded_nym_nodes_by_identity_key_paged: { + identity_key: string; + limit?: number | null; + start_after?: number | null; + }; +} | { + get_owned_nym_node: { + address: string; + }; +} | { + get_nym_node_details: { + node_id: number; + }; +} | { + get_nym_node_details_by_identity_key: { + node_identity: string; + }; +} | { + get_node_rewarding_details: { + node_id: number; + }; +} | { + get_node_stake_saturation: { + node_id: number; + }; +} | { + get_role_assignment: { + role: Role; + }; +} | { + get_rewarded_set_metadata: {}; +} | { + get_node_delegations: { + limit?: number | null; + node_id: number; start_after?: string | null; }; } | { @@ -419,7 +498,7 @@ export type QueryMsg = { } | { get_delegation_details: { delegator: string; - mix_id: number; + node_id: number; proxy?: string | null; }; } | { @@ -432,26 +511,27 @@ export type QueryMsg = { address: string; }; } | { - get_pending_mix_node_operator_reward: { - mix_id: number; + get_pending_node_operator_reward: { + node_id: number; }; } | { get_pending_delegator_reward: { address: string; - mix_id: number; + node_id: number; proxy?: string | null; }; } | { get_estimated_current_epoch_operator_reward: { estimated_performance: Percent; - mix_id: number; + estimated_work?: Decimal | null; + node_id: number; }; } | { get_estimated_current_epoch_delegator_reward: { address: string; estimated_performance: Percent; - mix_id: number; - proxy?: string | null; + estimated_work?: Decimal | null; + node_id: number; }; } | { get_pending_epoch_events: { @@ -477,10 +557,18 @@ export type QueryMsg = { get_signing_nonce: { address: string; }; +} | { + get_key_rotation_state: {}; +} | { + get_key_rotation_id: {}; }; export interface MigrateMsg { + unsafe_skip_state_updates?: boolean | null; vesting_contract_address?: string | null; } +export interface AdminResponse { + admin?: string | null; +} export type Addr = string; export interface PagedAllDelegationsResponse { delegations: Delegation[]; @@ -490,23 +578,10 @@ export interface Delegation { amount: Coin; cumulative_reward_ratio: Decimal; height: number; - mix_id: number; + node_id: number; owner: Addr; proxy?: Addr | null; } -export interface PagedFamiliesResponse { - families: Family[]; - start_next_after?: string | null; -} -export interface Family { - head: FamilyHead; - label: string; - proxy?: string | null; -} -export interface PagedMembersResponse { - members: [string, FamilyHead][]; - start_next_after?: string | null; -} export interface MixnodeDetailsByIdentityResponse { identity_key: string; mixnode_details?: MixNodeDetails | null; @@ -514,12 +589,11 @@ export interface MixnodeDetailsByIdentityResponse { export interface MixNodeDetails { bond_information: MixNodeBond; pending_changes?: PendingMixNodeChanges; - rewarding_details: MixNodeRewarding; + rewarding_details: NodeRewarding; } export interface MixNodeBond { bonding_height: number; is_unbonding: boolean; - layer: Layer; mix_id: number; mix_node: MixNode; original_pledge: Coin; @@ -527,10 +601,11 @@ export interface MixNodeBond { proxy?: Addr | null; } export interface PendingMixNodeChanges { + cost_params_change?: number | null; pledge_change?: number | null; } -export interface MixNodeRewarding { - cost_params: MixNodeCostParams; +export interface NodeRewarding { + cost_params: NodeCostParams; delegates: Decimal; last_rewarded_epoch: number; operator: Decimal; @@ -545,9 +620,12 @@ export interface ContractVersion { export interface ContractBuildInformation { build_timestamp: string; build_version: string; + cargo_debug?: string; + cargo_opt_level?: string; commit_branch: string; commit_sha: string; commit_timestamp: string; + contract_name?: string; rustc_version: string; } export interface CurrentIntervalResponse { @@ -563,11 +641,29 @@ export interface Interval { epochs_in_interval: number; id: number; total_elapsed_epochs: number; - [k: string]: unknown; } -export interface MixNodeDelegationResponse { +export interface CurrentNymNodeVersionResponse { + version?: HistoricalNymNodeVersionEntry | null; +} +export interface HistoricalNymNodeVersionEntry { + id: number; + version_information: HistoricalNymNodeVersion; +} +export interface HistoricalNymNodeVersion { + difference_since_genesis: TotalVersionDifference; + introduced_at_height: number; + semver: string; +} +export interface TotalVersionDifference { + major: number; + minor: number; + patch: number; + prerelease: number; +} +export interface NodeDelegationResponse { delegation?: Delegation | null; mixnode_still_bonded: boolean; + node_still_bonded: boolean; } export interface PagedDelegatorDelegationsResponse { delegations: Delegation[]; @@ -578,7 +674,11 @@ export type EpochState = "in_progress" | { final_node_id: number; last_rewarded: number; }; -} | "reconciling_events" | "advancing_epoch"; +} | "reconciling_events" | { + role_assignment: { + next: Role; + }; +}; export interface EpochStatus { being_advanced_by: Addr; state: EpochState; @@ -590,22 +690,6 @@ export interface EstimatedCurrentEpochRewardResponse { estimation?: Coin | null; original_stake?: Coin | null; } -export interface FamilyByHeadResponse { - family?: Family | null; - head: FamilyHead; -} -export interface FamilyByLabelResponse { - family?: Family | null; - label: string; -} -export interface FamilyMembersByHeadResponse { - head: FamilyHead; - members: string[]; -} -export interface FamilyMembersByLabelResponse { - label: string; - members: string[]; -} export interface GatewayBondResponse { gateway?: GatewayBond | null; identity: string; @@ -622,10 +706,12 @@ export interface PagedGatewayResponse { per_page: number; start_next_after?: string | null; } -export interface LayerDistribution { - layer1: number; - layer2: number; - layer3: number; +export interface KeyRotationIdResponse { + rotation_id: number; +} +export interface KeyRotationState { + initial_epoch_id: number; + validity_epochs: number; } export interface PagedMixnodeBondsResponse { nodes: MixNodeBond[]; @@ -637,22 +723,68 @@ export interface PagedMixnodesDetailsResponse { per_page: number; start_next_after?: number | null; } -export interface PagedMixNodeDelegationsResponse { - delegations: Delegation[]; - start_next_after?: string | null; -} export interface MixnodeDetailsResponse { mix_id: number; mixnode_details?: MixNodeDetails | null; } export interface MixnodeRewardingDetailsResponse { mix_id: number; - rewarding_details?: MixNodeRewarding | null; + rewarding_details?: NodeRewarding | null; +} +export interface PagedNodeDelegationsResponse { + delegations: Delegation[]; + start_next_after?: string | null; +} +export interface NodeRewardingDetailsResponse { + node_id: number; + rewarding_details?: NodeRewarding | null; +} +export interface StakeSaturationResponse { + current_saturation?: Decimal | null; + node_id: number; + uncapped_saturation?: Decimal | null; } export interface NumberOfPendingEventsResponse { epoch_events: number; interval_events: number; } +export interface PagedNymNodeBondsResponse { + nodes: NymNodeBond[]; + start_next_after?: number | null; +} +export interface NymNodeBond { + bonding_height: number; + is_unbonding: boolean; + node: NymNode; + node_id: number; + original_pledge: Coin; + owner: Addr; +} +export interface NodeDetailsResponse { + details?: NymNodeDetails | null; + node_id: number; +} +export interface NymNodeDetails { + bond_information: NymNodeBond; + pending_changes: PendingNodeChanges; + rewarding_details: NodeRewarding; +} +export interface PendingNodeChanges { + cost_params_change?: number | null; + pledge_change?: number | null; +} +export interface NodeDetailsByIdentityResponse { + details?: NymNodeDetails | null; + identity_key: string; +} +export interface NymNodeVersionHistoryResponse { + history: HistoricalNymNodeVersionEntry[]; + start_next_after?: number | null; +} +export interface PagedNymNodeDetailsResponse { + nodes: NymNodeDetails[]; + start_next_after?: number | null; +} export interface GatewayOwnershipResponse { address: Addr; gateway?: GatewayBond | null; @@ -661,32 +793,47 @@ export interface MixOwnershipResponse { address: Addr; mixnode_details?: MixNodeDetails | null; } +export interface NodeOwnershipResponse { + address: Addr; + details?: NymNodeDetails | null; +} export interface PendingRewardResponse { amount_earned?: Coin | null; amount_earned_detailed?: Decimal | null; amount_staked?: Coin | null; mixnode_still_fully_bonded: boolean; + node_still_fully_bonded: boolean; } export type PendingEpochEventKind = { delegate: { amount: Coin; - mix_id: number; + node_id: number; owner: Addr; proxy?: Addr | null; }; } | { undelegate: { - mix_id: number; + node_id: number; owner: Addr; proxy?: Addr | null; }; } | { - pledge_more: { + nym_node_pledge_more: { + amount: Coin; + node_id: number; + }; +} | { + mixnode_pledge_more: { amount: Coin; mix_id: number; }; } | { - decrease_pledge: { + nym_node_decrease_pledge: { + decrease_by: Coin; + node_id: number; + }; +} | { + mixnode_decrease_pledge: { decrease_by: Coin; mix_id: number; }; @@ -695,8 +842,12 @@ export type PendingEpochEventKind = { mix_id: number; }; } | { - update_active_set_size: { - new_size: number; + unbond_nym_node: { + node_id: number; + }; +} | { + update_active_set: { + update: ActiveSetUpdate; }; }; export interface PendingEpochEventResponse { @@ -719,7 +870,12 @@ export interface PendingEpochEvent { export type PendingIntervalEventKind = { change_mix_cost_params: { mix_id: number; - new_costs: MixNodeCostParams; + new_costs: NodeCostParams; + }; +} | { + change_nym_node_cost_params: { + new_costs: NodeCostParams; + node_id: number; }; } | { update_rewarding_params: { @@ -748,15 +904,34 @@ export interface PendingIntervalEvent { event: PendingIntervalEventData; id: number; } -export type RewardedSetNodeStatus = "active" | "standby"; -export interface PagedRewardedSetResponse { - nodes: [number, RewardedSetNodeStatus][]; - start_next_after?: number | null; +export interface PreassignedGatewayIdsResponse { + ids: PreassignedId[]; + start_next_after?: string | null; +} +export interface PreassignedId { + identity: string; + node_id: number; +} +export interface RolesMetadataResponse { + metadata: RewardedSetMetadata; +} +export interface RewardedSetMetadata { + entry_gateway_metadata: RoleMetadata; + epoch_id: number; + exit_gateway_metadata: RoleMetadata; + fully_assigned: boolean; + layer1_metadata: RoleMetadata; + layer2_metadata: RoleMetadata; + layer3_metadata: RoleMetadata; + standby_metadata: RoleMetadata; +} +export interface RoleMetadata { + highest_id: number; + num_nodes: number; } export interface RewardingParams { - active_set_size: number; interval: IntervalRewardParams; - rewarded_set_size: number; + rewarded_set: RewardedSetParams; } export interface IntervalRewardParams { active_set_work_factor: Decimal; @@ -769,19 +944,37 @@ export interface IntervalRewardParams { sybil_resistance: Percent; } export type String = string; +export interface EpochAssignmentResponse { + epoch_id: number; + nodes: number[]; +} export type Uint32 = number; -export interface StakeSaturationResponse { +export interface MixStakeSaturationResponse { current_saturation?: Decimal | null; mix_id: number; uncapped_saturation?: Decimal | null; } export interface ContractState { - owner: Addr; + owner?: Addr | null; params: ContractStateParams; rewarding_denom: string; rewarding_validator_address: Addr; vesting_contract_address: Addr; } +export interface ContractStateParams { + config_score_params: ConfigScoreParams; + delegations_params: DelegationsParams; + operators_params: OperatorsParams; +} +export interface ConfigScoreParams { + version_score_formula_params: VersionScoreFormulaParams; + version_weights: OutdatedVersionWeights; +} +export interface OperatorsParams { + interval_operating_cost: RangedValueForUint128; + minimum_pledge: Coin; + profit_margin: RangedValueForPercent; +} export interface UnbondedMixnodeResponse { mix_id: number; unbonded_info?: UnbondedMixnode | null; @@ -797,3 +990,17 @@ export interface PagedUnbondedMixnodesResponse { per_page: number; start_next_after?: number | null; } +export interface UnbondedNodeResponse { + details?: UnbondedNymNode | null; + node_id: number; +} +export interface UnbondedNymNode { + identity_key: string; + node_id: number; + owner: Addr; + unbonding_height: number; +} +export interface PagedUnbondedNymNodesResponse { + nodes: UnbondedNymNode[]; + start_next_after?: number | null; +} \ No newline at end of file diff --git a/sdk/typescript/codegen/contract-clients/src/Vesting.client.ts b/sdk/typescript/codegen/contract-clients/src/Vesting.client.ts index 57e08e327a..187fc80b08 100644 --- a/sdk/typescript/codegen/contract-clients/src/Vesting.client.ts +++ b/sdk/typescript/codegen/contract-clients/src/Vesting.client.ts @@ -1,13 +1,12 @@ /** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run the @cosmwasm/ts-codegen generate command to regenerate this file. */ -import { CosmWasmClient, SigningCosmWasmClient, ExecuteResult } from "@cosmjs/cosmwasm-stargate"; -import { StdFee } from "@cosmjs/amino"; -import { InstantiateMsg, ExecuteMsg, FamilyHead, MessageSignature, Uint128, Percent, Decimal, PledgeCap, Coin, MixNodeCostParams, MixNodeConfigUpdate, VestingSpecification, MixNode, Gateway, GatewayConfigUpdate, QueryMsg, Timestamp, Uint64, MigrateMsg, Addr, Account, VestingPeriod, AccountsResponse, BaseVestingAccountInfo, VestingCoinsResponse, AccountVestingCoins, AllDelegationsResponse, VestingDelegation, ContractVersion, ContractBuildInformation, Period, DelegationTimesResponse, NullablePledgeData, PledgeData, OriginalVestingResponse } from "./Vesting.types"; -import { GetCw2ContractVersionResponse } from './types'; +import { ICosmWasmClient, ISigningCosmWasmClient } from "./baseClient"; +import { StdFee } from "@interchainjs/types"; +import { InstantiateMsg, ExecuteMsg, Uint128, Percent, Decimal, PledgeCap, MessageSignature, Coin, NodeCostParams, MixNodeConfigUpdate, VestingSpecification, MixNode, Gateway, GatewayConfigUpdate, QueryMsg, Timestamp, Uint64, MigrateMsg, Addr, Account, VestingPeriod, AccountsResponse, BaseVestingAccountInfo, VestingCoinsResponse, AccountVestingCoins, AllDelegationsResponse, VestingDelegation, ContractVersion, ContractBuildInformation, Period, DelegationTimesResponse, NullablePledgeData, PledgeData, OriginalVestingResponse } from "./Vesting.types"; export interface VestingReadOnlyInterface { contractAddress: string; getContractVersion: () => Promise; @@ -156,10 +155,9 @@ export interface VestingReadOnlyInterface { }) => Promise; } export class VestingQueryClient implements VestingReadOnlyInterface { - client: CosmWasmClient; + client: ICosmWasmClient; contractAddress: string; - - constructor(client: CosmWasmClient, contractAddress: string) { + constructor(client: ICosmWasmClient, contractAddress: string) { this.client = client; this.contractAddress = contractAddress; this.getContractVersion = this.getContractVersion.bind(this); @@ -189,7 +187,6 @@ export class VestingQueryClient implements VestingReadOnlyInterface { this.getDelegationTimes = this.getDelegationTimes.bind(this); this.getAllDelegations = this.getAllDelegations.bind(this); } - getContractVersion = async (): Promise => { return this.client.queryContractSmart(this.contractAddress, { get_contract_version: {} @@ -501,56 +498,34 @@ export class VestingQueryClient implements VestingReadOnlyInterface { export interface VestingInterface extends VestingReadOnlyInterface { contractAddress: string; sender: string; - createFamily: ({ - label - }: { - label: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - joinFamily: ({ - familyHead, - joinPermit - }: { - familyHead: FamilyHead; - joinPermit: MessageSignature; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - leaveFamily: ({ - familyHead - }: { - familyHead: FamilyHead; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - kickFamilyMember: ({ - member - }: { - member: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; trackReward: ({ address, amount }: { address: string; amount: Coin; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - claimOperatorReward: (fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + claimOperatorReward: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; claimDelegatorReward: ({ mixId }: { mixId: number; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateMixnodeCostParams: ({ newCosts }: { - newCosts: MixNodeCostParams; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + newCosts: NodeCostParams; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateMixnodeConfig: ({ newConfig }: { newConfig: MixNodeConfigUpdate; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateMixnetAddress: ({ address }: { address: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; delegateToMixnode: ({ amount, mixId, @@ -559,14 +534,14 @@ export interface VestingInterface extends VestingReadOnlyInterface { amount: Coin; mixId: number; onBehalfOf?: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; undelegateFromMixnode: ({ mixId, onBehalfOf }: { mixId: number; onBehalfOf?: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; createAccount: ({ cap, ownerAddress, @@ -577,12 +552,12 @@ export interface VestingInterface extends VestingReadOnlyInterface { ownerAddress: string; stakingAddress?: string; vestingSpec?: VestingSpecification; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; withdrawVestedCoins: ({ amount }: { amount: Coin; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; trackUndelegation: ({ amount, mixId, @@ -591,7 +566,7 @@ export interface VestingInterface extends VestingReadOnlyInterface { amount: Coin; mixId: number; owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; bondMixnode: ({ amount, costParams, @@ -599,35 +574,35 @@ export interface VestingInterface extends VestingReadOnlyInterface { ownerSignature }: { amount: Coin; - costParams: MixNodeCostParams; + costParams: NodeCostParams; mixNode: MixNode; ownerSignature: MessageSignature; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; pledgeMore: ({ amount }: { amount: Coin; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; decreasePledge: ({ amount }: { amount: Coin; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - unbondMixnode: (fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + unbondMixnode: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; trackUnbondMixnode: ({ amount, owner }: { amount: Coin; owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; trackDecreasePledge: ({ amount, owner }: { amount: Coin; owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; bondGateway: ({ amount, gateway, @@ -636,52 +611,59 @@ export interface VestingInterface extends VestingReadOnlyInterface { amount: Coin; gateway: Gateway; ownerSignature: MessageSignature; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - unbondGateway: (fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + unbondGateway: (fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; trackUnbondGateway: ({ amount, owner }: { amount: Coin; owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateGatewayConfig: ({ newConfig }: { newConfig: GatewayConfigUpdate; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; transferOwnership: ({ toAddress }: { toAddress: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateStakingAddress: ({ toAddress }: { toAddress?: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; updateLockedPledgeCap: ({ address, cap }: { address: string; cap: PledgeCap; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + trackMigratedMixnode: ({ + owner + }: { + owner: string; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; + trackMigratedDelegation: ({ + mixId, + owner + }: { + mixId: number; + owner: string; + }, fee_?: number | StdFee | "auto", memo_?: string, funds_?: Coin[]) => Promise; } export class VestingClient extends VestingQueryClient implements VestingInterface { - client: SigningCosmWasmClient; + client: ISigningCosmWasmClient; sender: string; contractAddress: string; - - constructor(client: SigningCosmWasmClient, sender: string, contractAddress: string) { + constructor(client: ISigningCosmWasmClient, sender: string, contractAddress: string) { super(client, contractAddress); this.client = client; this.sender = sender; this.contractAddress = contractAddress; - this.createFamily = this.createFamily.bind(this); - this.joinFamily = this.joinFamily.bind(this); - this.leaveFamily = this.leaveFamily.bind(this); - this.kickFamilyMember = this.kickFamilyMember.bind(this); this.trackReward = this.trackReward.bind(this); this.claimOperatorReward = this.claimOperatorReward.bind(this); this.claimDelegatorReward = this.claimDelegatorReward.bind(this); @@ -706,117 +688,71 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac this.transferOwnership = this.transferOwnership.bind(this); this.updateStakingAddress = this.updateStakingAddress.bind(this); this.updateLockedPledgeCap = this.updateLockedPledgeCap.bind(this); + this.trackMigratedMixnode = this.trackMigratedMixnode.bind(this); + this.trackMigratedDelegation = this.trackMigratedDelegation.bind(this); } - - createFamily = async ({ - label - }: { - label: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - create_family: { - label - } - }, fee, memo, _funds); - }; - joinFamily = async ({ - familyHead, - joinPermit - }: { - familyHead: FamilyHead; - joinPermit: MessageSignature; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - join_family: { - family_head: familyHead, - join_permit: joinPermit - } - }, fee, memo, _funds); - }; - leaveFamily = async ({ - familyHead - }: { - familyHead: FamilyHead; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - leave_family: { - family_head: familyHead - } - }, fee, memo, _funds); - }; - kickFamilyMember = async ({ - member - }: { - member: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - kick_family_member: { - member - } - }, fee, memo, _funds); - }; trackReward = async ({ address, amount }: { address: string; amount: Coin; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { track_reward: { address, amount } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - claimOperatorReward = async (fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + claimOperatorReward = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { claim_operator_reward: {} - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; claimDelegatorReward = async ({ mixId }: { mixId: number; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { claim_delegator_reward: { mix_id: mixId } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateMixnodeCostParams = async ({ newCosts }: { - newCosts: MixNodeCostParams; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + newCosts: NodeCostParams; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_mixnode_cost_params: { new_costs: newCosts } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateMixnodeConfig = async ({ newConfig }: { newConfig: MixNodeConfigUpdate; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_mixnode_config: { new_config: newConfig } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateMixnetAddress = async ({ address }: { address: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_mixnet_address: { address } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; delegateToMixnode = async ({ amount, @@ -826,14 +762,14 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac amount: Coin; mixId: number; onBehalfOf?: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { delegate_to_mixnode: { amount, mix_id: mixId, on_behalf_of: onBehalfOf } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; undelegateFromMixnode = async ({ mixId, @@ -841,13 +777,13 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac }: { mixId: number; onBehalfOf?: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { undelegate_from_mixnode: { mix_id: mixId, on_behalf_of: onBehalfOf } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; createAccount = async ({ cap, @@ -859,7 +795,7 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac ownerAddress: string; stakingAddress?: string; vestingSpec?: VestingSpecification; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { create_account: { cap, @@ -867,18 +803,18 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac staking_address: stakingAddress, vesting_spec: vestingSpec } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; withdrawVestedCoins = async ({ amount }: { amount: Coin; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { withdraw_vested_coins: { amount } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; trackUndelegation = async ({ amount, @@ -888,14 +824,14 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac amount: Coin; mixId: number; owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { track_undelegation: { amount, mix_id: mixId, owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; bondMixnode = async ({ amount, @@ -904,10 +840,10 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac ownerSignature }: { amount: Coin; - costParams: MixNodeCostParams; + costParams: NodeCostParams; mixNode: MixNode; ownerSignature: MessageSignature; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { bond_mixnode: { amount, @@ -915,34 +851,34 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac mix_node: mixNode, owner_signature: ownerSignature } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; pledgeMore = async ({ amount }: { amount: Coin; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { pledge_more: { amount } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; decreasePledge = async ({ amount }: { amount: Coin; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { decrease_pledge: { amount } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - unbondMixnode = async (fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + unbondMixnode = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { unbond_mixnode: {} - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; trackUnbondMixnode = async ({ amount, @@ -950,13 +886,13 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac }: { amount: Coin; owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { track_unbond_mixnode: { amount, owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; trackDecreasePledge = async ({ amount, @@ -964,13 +900,13 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac }: { amount: Coin; owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { track_decrease_pledge: { amount, owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; bondGateway = async ({ amount, @@ -980,19 +916,19 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac amount: Coin; gateway: Gateway; ownerSignature: MessageSignature; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { bond_gateway: { amount, gateway, owner_signature: ownerSignature } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; - unbondGateway = async (fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + unbondGateway = async (fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { unbond_gateway: {} - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; trackUnbondGateway = async ({ amount, @@ -1000,46 +936,46 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac }: { amount: Coin; owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { track_unbond_gateway: { amount, owner } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateGatewayConfig = async ({ newConfig }: { newConfig: GatewayConfigUpdate; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_gateway_config: { new_config: newConfig } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; transferOwnership = async ({ toAddress }: { toAddress: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { transfer_ownership: { to_address: toAddress } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateStakingAddress = async ({ toAddress }: { toAddress?: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_staking_address: { to_address: toAddress } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; updateLockedPledgeCap = async ({ address, @@ -1047,12 +983,37 @@ export class VestingClient extends VestingQueryClient implements VestingInterfac }: { address: string; cap: PledgeCap; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { return await this.client.execute(this.sender, this.contractAddress, { update_locked_pledge_cap: { address, cap } - }, fee, memo, _funds); + }, fee_, memo_, funds_); }; -} + trackMigratedMixnode = async ({ + owner + }: { + owner: string; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + track_migrated_mixnode: { + owner + } + }, fee_, memo_, funds_); + }; + trackMigratedDelegation = async ({ + mixId, + owner + }: { + mixId: number; + owner: string; + }, fee_: number | StdFee | "auto" = "auto", memo_?: string, funds_?: Coin[]): Promise => { + return await this.client.execute(this.sender, this.contractAddress, { + track_migrated_delegation: { + mix_id: mixId, + owner + } + }, fee_, memo_, funds_); + }; +} \ No newline at end of file diff --git a/sdk/typescript/codegen/contract-clients/src/Vesting.types.ts b/sdk/typescript/codegen/contract-clients/src/Vesting.types.ts index a07a32a242..8adbc94a8a 100644 --- a/sdk/typescript/codegen/contract-clients/src/Vesting.types.ts +++ b/sdk/typescript/codegen/contract-clients/src/Vesting.types.ts @@ -1,5 +1,5 @@ /** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run the @cosmwasm/ts-codegen generate command to regenerate this file. */ @@ -9,23 +9,6 @@ export interface InstantiateMsg { mixnet_contract_address: string; } export type ExecuteMsg = { - create_family: { - label: string; - }; -} | { - join_family: { - family_head: FamilyHead; - join_permit: MessageSignature; - }; -} | { - leave_family: { - family_head: FamilyHead; - }; -} | { - kick_family_member: { - member: string; - }; -} | { track_reward: { address: string; amount: Coin; @@ -38,7 +21,7 @@ export type ExecuteMsg = { }; } | { update_mixnode_cost_params: { - new_costs: MixNodeCostParams; + new_costs: NodeCostParams; }; } | { update_mixnode_config: { @@ -79,7 +62,7 @@ export type ExecuteMsg = { } | { bond_mixnode: { amount: Coin; - cost_params: MixNodeCostParams; + cost_params: NodeCostParams; mix_node: MixNode; owner_signature: MessageSignature; }; @@ -133,9 +116,16 @@ export type ExecuteMsg = { address: string; cap: PledgeCap; }; +} | { + track_migrated_mixnode: { + owner: string; + }; +} | { + track_migrated_delegation: { + mix_id: number; + owner: string; + }; }; -export type FamilyHead = string; -export type MessageSignature = number[]; export type Uint128 = string; export type Percent = Decimal; export type Decimal = string; @@ -144,12 +134,12 @@ export type PledgeCap = { } | { absolute: Uint128; }; +export type MessageSignature = number[]; export interface Coin { amount: Uint128; denom: string; - [k: string]: unknown; } -export interface MixNodeCostParams { +export interface NodeCostParams { interval_operating_cost: Coin; profit_margin_percent: Percent; } @@ -353,9 +343,12 @@ export interface ContractVersion { export interface ContractBuildInformation { build_timestamp: string; build_version: string; + cargo_debug?: string; + cargo_opt_level?: string; commit_branch: string; commit_sha: string; commit_timestamp: string; + contract_name?: string; rustc_version: string; } export type Period = "before" | { diff --git a/sdk/typescript/codegen/contract-clients/src/baseClient.ts b/sdk/typescript/codegen/contract-clients/src/baseClient.ts new file mode 100644 index 0000000000..c6a93a557e --- /dev/null +++ b/sdk/typescript/codegen/contract-clients/src/baseClient.ts @@ -0,0 +1,200 @@ +/** +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. +* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, +* and run the @cosmwasm/ts-codegen generate command to regenerate this file. +*/ + + +import { StdFee, Coin } from '@interchainjs/types'; +import { DirectSigner } from '@interchainjs/cosmos'; +import { getSmartContractState } from 'interchainjs/cosmwasm/wasm/v1/query.rpc.func'; +import { executeContract } from 'interchainjs/cosmwasm/wasm/v1/tx.rpc.func'; +import { QuerySmartContractStateRequest, QuerySmartContractStateResponse } from 'interchainjs/cosmwasm/wasm/v1/query'; +import { MsgExecuteContract } from 'interchainjs/cosmwasm/wasm/v1/tx'; +import { Chain } from '@chain-registry/v2-types'; + +// Encoding utility functions +const fromUint8Array = (uint8Array: Uint8Array): T => { + const text = new TextDecoder().decode(uint8Array); + return JSON.parse(text); +}; + +const toUint8Array = (obj: any): Uint8Array => { + const text = JSON.stringify(obj); + return new TextEncoder().encode(text); +}; + +// Chain registry configuration +// The amount under gasPrice represents gas price per unit +export interface ChainConfig { + chain?: Chain; + gasPrice?: { + denom: string; + amount: string; + }; +} + +// Gas fee calculation utilities +export const calculateGasFromChain = (chain: Chain, gasAmount: string): StdFee => { + try { + const feeTokens = chain.fees?.feeTokens; + + if (feeTokens && feeTokens.length > 0) { + const primaryToken = feeTokens[0]; + // v2 chain-registry uses camelCase: averageGasPrice, lowGasPrice, fixedMinGasPrice + const gasPrice = primaryToken.averageGasPrice || primaryToken.lowGasPrice || primaryToken.fixedMinGasPrice || 0.025; + const gasAmountNum = parseInt(gasAmount); + const feeAmount = Math.ceil(gasAmountNum * gasPrice).toString(); + + return { + amount: [{ + denom: primaryToken.denom, + amount: feeAmount + }], + gas: gasAmount + }; + } + } catch (error) { + console.warn('Failed to calculate gas from chain registry:', error); + } + + // Fallback to default + return { amount: [], gas: gasAmount }; +}; + +// Default gas amount - users can easily change this +export let DEFAULT_GAS_AMOUNT = '200000'; + +// Allow users to set their preferred default gas amount +export const setDefaultGasAmount = (gasAmount: string): void => { + DEFAULT_GAS_AMOUNT = gasAmount; +}; + +// Get current default gas amount +export const getDefaultGasAmount = (): string => DEFAULT_GAS_AMOUNT; + +export const getAutoGasFee = (chainConfig?: ChainConfig): StdFee => { + const gasAmount = DEFAULT_GAS_AMOUNT; + + if (chainConfig?.chain) { + return calculateGasFromChain(chainConfig.chain, gasAmount); + } + + if (chainConfig?.gasPrice) { + const gasAmountNum = parseInt(gasAmount); + const gasPriceNum = parseFloat(chainConfig.gasPrice.amount); + const feeAmount = Math.ceil(gasAmountNum * gasPriceNum).toString(); + + return { + amount: [{ + denom: chainConfig.gasPrice.denom, + amount: feeAmount + }], + gas: gasAmount + }; + } + + // Fallback: no fee tokens, just gas amount + return { amount: [], gas: gasAmount }; +}; + +// InterchainJS interfaces for CosmWasm clients +export interface ICosmWasmClient { + queryContractSmart(contractAddr: string, query: any): Promise; +} + +export interface ISigningCosmWasmClient extends ICosmWasmClient { + execute( + sender: string, + contractAddress: string, + msg: any, + fee?: number | StdFee | "auto", + memo?: string, + funds?: Coin[], + chainConfig?: ChainConfig + ): Promise; +} + +export interface ISigningClient { + signAndBroadcast( + signerAddress: string, + messages: any[], + fee: number | StdFee | "auto", + memo?: string + ): Promise; +} + +// Helper functions to create InterchainJS clients +export function getCosmWasmClient(rpcEndpoint: string): ICosmWasmClient { + return { + queryContractSmart: async (contractAddr: string, query: any) => { + // Create the request object + const request: QuerySmartContractStateRequest = { + address: contractAddr, + queryData: toUint8Array(query) + }; + + // Execute the query using InterchainJS + const response: QuerySmartContractStateResponse = await getSmartContractState(rpcEndpoint, request); + + // Parse and return the result + return fromUint8Array(response.data); + }, + }; +} + +export function getSigningCosmWasmClient(signingClient: DirectSigner, rpcEndpoint?: string): ISigningCosmWasmClient { + return { + queryContractSmart: async (contractAddr: string, query: any) => { + if (!rpcEndpoint) { + throw new Error('rpcEndpoint is required for queryContractSmart in signing client'); + } + const request: QuerySmartContractStateRequest = { + address: contractAddr, + queryData: toUint8Array(query) + }; + const response: QuerySmartContractStateResponse = await getSmartContractState(rpcEndpoint, request); + return fromUint8Array(response.data); + }, + execute: async ( + sender: string, + contractAddress: string, + msg: any, + fee?: number | StdFee | "auto", + memo?: string, + funds?: Coin[], + chainConfig?: ChainConfig + ) => { + // Handle fee conversion + let finalFee: StdFee; + if (typeof fee === 'number') { + finalFee = { amount: [], gas: fee.toString() }; + } else if (fee === 'auto') { + finalFee = getAutoGasFee(chainConfig); + } else if (fee) { + finalFee = fee; + } else { + finalFee = getAutoGasFee(chainConfig); + } + + // Create the message object + const message: MsgExecuteContract = { + sender, + contract: contractAddress, + msg: toUint8Array(msg), + funds: funds || [] + }; + + // Execute the transaction using InterchainJS + const result = await executeContract( + signingClient as any, + sender, + message, + finalFee, + memo || '' + ); + + return result; + }, + }; +} diff --git a/sdk/typescript/codegen/contract-clients/src/index.ts b/sdk/typescript/codegen/contract-clients/src/index.ts index 530b718908..45d5479875 100644 --- a/sdk/typescript/codegen/contract-clients/src/index.ts +++ b/sdk/typescript/codegen/contract-clients/src/index.ts @@ -1,35 +1,48 @@ /** - * This file was automatically generated by @cosmwasm/ts-codegen@0.35.3. - * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, - * and run the @cosmwasm/ts-codegen generate command to regenerate this file. - */ +* This file was automatically generated by @cosmwasm/ts-codegen@1.13.3. +* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, +* and run the @cosmwasm/ts-codegen generate command to regenerate this file. +*/ -import * as _0 from './CoconutBandwidth.types'; -import * as _1 from './CoconutBandwidth.client'; -import * as _2 from './CoconutDkg.types'; -import * as _3 from './CoconutDkg.client'; -import * as _4 from './Mixnet.types'; -import * as _5 from './Mixnet.client'; -import * as _6 from './Cw3FlexMultisig.types'; -import * as _7 from './Cw3FlexMultisig.client'; -import * as _8 from './Cw4Group.types'; -import * as _9 from './Cw4Group.client'; -import * as _10 from './NameService.types'; -import * as _11 from './NameService.client'; -import * as _12 from './ServiceProviderDirectory.types'; -import * as _13 from './ServiceProviderDirectory.client'; -import * as _14 from './Vesting.types'; -import * as _15 from './Vesting.client'; -export * from './types'; - -/** @namespace */ +import * as _0 from "./Ecash.types"; +import * as _1 from "./Ecash.client"; +import * as _2 from "./CoconutDkg.types"; +import * as _3 from "./CoconutDkg.client"; +import * as _4 from "./Mixnet.types"; +import * as _5 from "./Mixnet.client"; +import * as _6 from "./Cw3FlexMultisig.types"; +import * as _7 from "./Cw3FlexMultisig.client"; +import * as _8 from "./Cw4Group.types"; +import * as _9 from "./Cw4Group.client"; +import * as _10 from "./Vesting.types"; +import * as _11 from "./Vesting.client"; +import * as _12 from "./baseClient"; export namespace contracts { - export const CoconutBandwidth = { ..._0, ..._1 }; - export const CoconutDkg = { ..._2, ..._3 }; - export const Mixnet = { ..._4, ..._5 }; - export const Cw3FlexMultisig = { ..._6, ..._7 }; - export const Cw4Group = { ..._8, ..._9 }; - export const NameService = { ..._10, ..._11 }; - export const ServiceProviderDirectory = { ..._12, ..._13 }; - export const Vesting = { ..._14, ..._15 }; -} + export const Ecash = { + ..._0, + ..._1 + }; + export const CoconutDkg = { + ..._2, + ..._3 + }; + export const Mixnet = { + ..._4, + ..._5 + }; + export const Cw3FlexMultisig = { + ..._6, + ..._7 + }; + export const Cw4Group = { + ..._8, + ..._9 + }; + export const Vesting = { + ..._10, + ..._11 + }; + export const baseClient = { + ..._12 + }; +} \ No newline at end of file diff --git a/sdk/typescript/examples/chat-app/parcel/package.json b/sdk/typescript/examples/chat-app/parcel/package.json index 0f9dbebffd..7a4d2a2751 100644 --- a/sdk/typescript/examples/chat-app/parcel/package.json +++ b/sdk/typescript/examples/chat-app/parcel/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk-example-plain-html-parcel", - "version": "1.0.4-rc.2", + "version": "1.0.5", "description": "An example project that uses WASM and plain HTML bundled with Parcel v2", "license": "Apache-2.0", "scripts": { @@ -15,7 +15,7 @@ "tsc:watch": "tsc --watch" }, "dependencies": { - "@nymproject/sdk": ">=1.2.2-rc.0 || ^1" + "@nymproject/sdk": ">=1.4.1-rc1 || ^1" }, "devDependencies": { "@types/jest": "^27.0.1", @@ -41,4 +41,4 @@ "private": false, "browserslist": "> 0.5%, last 2 versions, not dead", "source": "src/index.html" -} \ No newline at end of file +} diff --git a/sdk/typescript/examples/chat-app/plain-html/package.json b/sdk/typescript/examples/chat-app/plain-html/package.json index 4d3915855c..c6fe9695b5 100644 --- a/sdk/typescript/examples/chat-app/plain-html/package.json +++ b/sdk/typescript/examples/chat-app/plain-html/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk-example-plain-html", - "version": "1.0.4-rc.2", + "version": "1.0.5", "description": "An example project that uses WASM and plain HTML", "license": "Apache-2.0", "scripts": { @@ -16,7 +16,7 @@ "tsc:watch": "tsc --watch" }, "dependencies": { - "@nymproject/sdk": ">=1.2.2-rc.0 || ^1" + "@nymproject/sdk": ">=1.4.1-rc1 || ^1" }, "devDependencies": { "@babel/core": "^7.15.0", @@ -62,4 +62,4 @@ "webpack-merge": "^5.8.0" }, "private": false -} \ No newline at end of file +} diff --git a/sdk/typescript/examples/chat-app/react-webpack-with-theme-example/package.json b/sdk/typescript/examples/chat-app/react-webpack-with-theme-example/package.json index 6deb168308..0ba3cc677d 100644 --- a/sdk/typescript/examples/chat-app/react-webpack-with-theme-example/package.json +++ b/sdk/typescript/examples/chat-app/react-webpack-with-theme-example/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk-example-react-webpack-wasm", - "version": "1.0.4-rc.2", + "version": "1.0.5", "description": "An example project that uses WASM, React, Webpack, Typescript and the Nym theme + components library", "license": "Apache-2.0", "scripts": { @@ -20,7 +20,7 @@ "@mui/lab": "^5.0.0-alpha.72", "@mui/material": "^5.0.1", "@mui/styles": "^5.0.1", - "@nymproject/sdk": ">=1.2.2-rc.0 || ^1", + "@nymproject/sdk": ">=1.4.1-rc1 || ^1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-dropzone": "^14.2.3", @@ -90,4 +90,4 @@ "react": "^18.2.0", "react-dom": "^18.2.0" } -} \ No newline at end of file +} diff --git a/sdk/typescript/examples/chrome-extension/package.json b/sdk/typescript/examples/chrome-extension/package.json index 4a3759680a..8fd5a619af 100644 --- a/sdk/typescript/examples/chrome-extension/package.json +++ b/sdk/typescript/examples/chrome-extension/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk-example-chrome-extension", - "version": "1.0.4-rc.2", + "version": "1.0.5", "description": "This is an example of how Nym can be used within the context of a Chrome extension.", "license": "ISC", "author": "", @@ -9,7 +9,7 @@ "build": "webpack" }, "dependencies": { - "@nymproject/sdk": ">=1.2.2-rc.0 || ^1" + "@nymproject/sdk": ">=1.4.1-rc1 || ^1" }, "devDependencies": { "clean-webpack-plugin": "^4.0.0", @@ -18,4 +18,4 @@ "webpack-cli": "^5.1.4" }, "private": false -} \ No newline at end of file +} diff --git a/sdk/typescript/examples/firefox-extension/package.json b/sdk/typescript/examples/firefox-extension/package.json index 9ca8a5111b..36974a7856 100644 --- a/sdk/typescript/examples/firefox-extension/package.json +++ b/sdk/typescript/examples/firefox-extension/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk-example-firefox-extension", - "version": "1.0.4-rc.2", + "version": "1.0.5", "description": "This is an example of how Nym can be used within the context of a Firefox extension.", "license": "ISC", "author": "", @@ -9,7 +9,7 @@ "build": "yarn webpack" }, "dependencies": { - "@nymproject/sdk": ">=1.2.2-rc.0 || ^1" + "@nymproject/sdk": ">=1.4.1-rc1 || ^1" }, "devDependencies": { "copy-webpack-plugin": "^11.0.0", @@ -18,4 +18,4 @@ "worker-loader": "^3.0.8" }, "private": false -} \ No newline at end of file +} diff --git a/sdk/typescript/examples/mix-fetch/browser/package.json b/sdk/typescript/examples/mix-fetch/browser/package.json index c5e4ffbdcd..d0f4efad9e 100644 --- a/sdk/typescript/examples/mix-fetch/browser/package.json +++ b/sdk/typescript/examples/mix-fetch/browser/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/mix-fetch-example-parcel", - "version": "1.0.4-rc.2", + "version": "1.0.5", "license": "Apache-2.0", "scripts": { "build": "parcel build --no-cache --no-content-hash", @@ -8,9 +8,9 @@ "start": "parcel --no-cache" }, "dependencies": { - "@nymproject/mix-fetch": ">=1.2.2-rc.0 || ^1", + "@nymproject/mix-fetch": ">=1.4.1-rc1 || ^1", "parcel": "^2.9.3" }, "private": false, "source": "src/index.html" -} \ No newline at end of file +} diff --git a/sdk/typescript/examples/node-tester/parcel/package.json b/sdk/typescript/examples/node-tester/parcel/package.json index 12dc69acf7..e344d7ba1a 100644 --- a/sdk/typescript/examples/node-tester/parcel/package.json +++ b/sdk/typescript/examples/node-tester/parcel/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk-example-node-tester-plain-html-parcel", - "version": "1.0.4-rc.2", + "version": "1.0.5", "description": "An example project that uses WASM and plain HTML bundled with Parcel v2", "license": "Apache-2.0", "scripts": { @@ -15,7 +15,7 @@ "tsc:watch": "tsc --watch" }, "dependencies": { - "@nymproject/sdk": ">=1.2.2-rc.0 || ^1" + "@nymproject/sdk": ">=1.4.1-rc1 || ^1" }, "devDependencies": { "@types/jest": "^27.0.1", @@ -41,4 +41,4 @@ "private": false, "browserslist": "> 0.5%, last 2 versions, not dead", "source": "src/index.html" -} \ No newline at end of file +} diff --git a/sdk/typescript/examples/node-tester/plain-html/package.json b/sdk/typescript/examples/node-tester/plain-html/package.json index 4fe5e3b7be..06c9b27c24 100644 --- a/sdk/typescript/examples/node-tester/plain-html/package.json +++ b/sdk/typescript/examples/node-tester/plain-html/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk-example-node-tester-plain-html", - "version": "1.0.4-rc.2", + "version": "1.0.5", "description": "An example project that uses WASM node tester and plain HTML", "license": "Apache-2.0", "scripts": { @@ -16,7 +16,7 @@ "tsc:watch": "tsc --watch" }, "dependencies": { - "@nymproject/sdk": ">=1.2.2-rc.0 || ^1" + "@nymproject/sdk": ">=1.4.1-rc1 || ^1" }, "devDependencies": { "@babel/core": "^7.15.0", @@ -62,4 +62,4 @@ "webpack-merge": "^5.8.0" }, "private": false -} \ No newline at end of file +} diff --git a/sdk/typescript/examples/node-tester/react/package.json b/sdk/typescript/examples/node-tester/react/package.json index db804c92fa..2320367bc5 100644 --- a/sdk/typescript/examples/node-tester/react/package.json +++ b/sdk/typescript/examples/node-tester/react/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk-example-node-tester-react", - "version": "1.0.4-rc.2", + "version": "1.0.5", "description": "An example project that uses WASM node tester and React", "license": "Apache-2.0", "scripts": { @@ -11,10 +11,10 @@ "@emotion/styled": "^11.11.0", "@mui/icons-material": "^5.14.0", "@mui/material": "^5.14.0", - "@nymproject/sdk": ">=1.2.2-rc.0 || ^1", + "@nymproject/sdk": ">=1.4.1-rc1 || ^1", "parcel": "^2.9.3", "react": "^18.2.0", "react-dom": "^18.2.0" }, "private": false -} \ No newline at end of file +} diff --git a/sdk/typescript/packages/mix-fetch-node/package.json b/sdk/typescript/packages/mix-fetch-node/package.json index 11cdcb3453..6956bd22c0 100644 --- a/sdk/typescript/packages/mix-fetch-node/package.json +++ b/sdk/typescript/packages/mix-fetch-node/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/mix-fetch-node", - "version": "1.4.0-rc.0", + "version": "1.4.1", "description": "This package is a drop-in replacement for `fetch` in NodeJS to send HTTP requests over the Nym Mixnet.", "license": "Apache-2.0", "author": "Nym Technologies SA", @@ -28,7 +28,7 @@ "tsc": "tsc --noEmit true" }, "dependencies": { - "@nymproject/mix-fetch-wasm-node": ">=1.2.4-rc.2 || ^1", + "@nymproject/mix-fetch-wasm-node": ">=1.4.1-rc.3 || ^1", "comlink": "^4.3.1", "fake-indexeddb": "^5.0.0", "node-fetch": "^3.3.2", diff --git a/sdk/typescript/packages/mix-fetch/internal-dev/package.json b/sdk/typescript/packages/mix-fetch/internal-dev/package.json index 8c97273244..b8a8d713da 100644 --- a/sdk/typescript/packages/mix-fetch/internal-dev/package.json +++ b/sdk/typescript/packages/mix-fetch/internal-dev/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/mix-fetch-tester-webpack", - "version": "1.0.4-rc.2", + "version": "1.0.5", "license": "Apache-2.0", "scripts": { "build": "webpack build --progress --config webpack.prod.js", @@ -8,7 +8,7 @@ "start": "webpack serve --progress --port 3000" }, "dependencies": { - "@nymproject/mix-fetch": ">=1.2.2-rc.0 || ^1" + "@nymproject/mix-fetch": ">=1.4.1-rc1 || ^1" }, "devDependencies": { "@babel/core": "^7.22.10", @@ -55,4 +55,4 @@ "webpack-merge": "^5.9.0" }, "private": false -} \ No newline at end of file +} diff --git a/sdk/typescript/packages/mix-fetch/internal-dev/parcel/package.json b/sdk/typescript/packages/mix-fetch/internal-dev/parcel/package.json index 1aa9dc375d..0da37628f4 100644 --- a/sdk/typescript/packages/mix-fetch/internal-dev/parcel/package.json +++ b/sdk/typescript/packages/mix-fetch/internal-dev/parcel/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/mix-fetch-tester-parcel", - "version": "1.0.4-rc.2", + "version": "1.0.5", "license": "Apache-2.0", "scripts": { "build": "npx parcel build --no-cache --no-content-hash", @@ -8,8 +8,8 @@ "start": "npx parcel --no-cache" }, "dependencies": { - "@nymproject/mix-fetch": ">=1.2.2-rc.0 || ^1" + "@nymproject/mix-fetch": ">=1.4.1-rc1 || ^1" }, "private": false, "source": "../src/index.html" -} \ No newline at end of file +} diff --git a/sdk/typescript/packages/mix-fetch/internal-dev/src/index.ts b/sdk/typescript/packages/mix-fetch/internal-dev/src/index.ts index d6c3795331..fb256688fa 100644 --- a/sdk/typescript/packages/mix-fetch/internal-dev/src/index.ts +++ b/sdk/typescript/packages/mix-fetch/internal-dev/src/index.ts @@ -21,6 +21,7 @@ async function main() { // const addr = // 'EVdJ66jqpoVzmktVecy5UJxsTCEWo5gMn5zDZR7Hm8jy.GXNpoX7RcYcxKvBkV3dSHqC78WaPuWieweRPWzYqNhh5@GAjhJcrd6f1edaqUkfWCff6zdHoqo756qYrc2TfPuCXJ'; + // const addr = '7Y9eyF1p1JmzHnd7TVZufnQHkh93ASc9sRBCFY57ZGr8.F8KPyVMVqFQ5yJC3LqeP2ZC7fukzj9a1T426rjo432yT@q2A2cbooyC16YJzvdYaSMH9X3cSiieZNtfBr8cE8Fi1'; const addr = undefined; appendOutput('About to set up mixFetch...'); @@ -54,12 +55,12 @@ async function main() { appendOutput(JSON.stringify(resp, null, 2)); appendOutput(JSON.stringify({ text }, null, 2)); - console.log('disconnecting'); - await disconnectMixFetch(); - console.log('disconnected! all further usages should fail'); + // console.log('disconnecting'); + // await disconnectMixFetch(); + // console.log('disconnected! all further usages should fail'); // get an image - url = 'https://nymtech.net/favicon.svg'; + url = 'https://matrix.org/assets/frontpage/github-mark.svg'; resp = await mixFetch(url, args); console.log({ resp }); const buffer = await resp.arrayBuffer(); diff --git a/sdk/typescript/packages/mix-fetch/internal-dev/webpack.common.js b/sdk/typescript/packages/mix-fetch/internal-dev/webpack.common.js index 200d2ab28e..ec41ca26ca 100644 --- a/sdk/typescript/packages/mix-fetch/internal-dev/webpack.common.js +++ b/sdk/typescript/packages/mix-fetch/internal-dev/webpack.common.js @@ -35,7 +35,8 @@ module.exports = mergeWithRules({ { // copy the WASM files, because webpack doesn't do this automatically even though there are // `new URL(..., import.meta.url)` statements in the web worker - from: path.resolve(path.dirname(require.resolve('@nymproject/mix-fetch/package.json')), 'dist/esm/*.wasm'), +// from: path.resolve(path.dirname(require.resolve('@nymproject/mix-fetch/package.json')), 'dist/esm/*.wasm'), + from: path.resolve(path.dirname(require.resolve('@nymproject/mix-fetch/package.json')), '*.wasm'), to: '[name][ext]', }, ], diff --git a/sdk/typescript/packages/mix-fetch/internal-dev/webpack.config.js b/sdk/typescript/packages/mix-fetch/internal-dev/webpack.config.js index 085b2eac55..2a9cd30bb8 100644 --- a/sdk/typescript/packages/mix-fetch/internal-dev/webpack.config.js +++ b/sdk/typescript/packages/mix-fetch/internal-dev/webpack.config.js @@ -1,7 +1,5 @@ const { mergeWithRules } = require('webpack-merge'); const webpack = require('webpack'); -const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); -const ReactRefreshTypeScript = require('react-refresh-typescript'); const commonConfig = require('./webpack.common'); module.exports = mergeWithRules({ @@ -22,7 +20,7 @@ module.exports = mergeWithRules({ exclude: /node_modules/, options: { getCustomTransformers: () => ({ - before: [ReactRefreshTypeScript()], + before: [], }), // `ts-loader` does not work with HMR unless `transpileOnly` is used. // If you need type checking, `ForkTsCheckerWebpackPlugin` is an alternative. @@ -36,8 +34,6 @@ module.exports = mergeWithRules({ ], }, plugins: [ - new ReactRefreshWebpackPlugin(), - // this can be included automatically by the dev server, however build mode fails if missing new webpack.HotModuleReplacementPlugin(), ], diff --git a/sdk/typescript/packages/mix-fetch/package.json b/sdk/typescript/packages/mix-fetch/package.json index 131ea24cd9..41969de717 100644 --- a/sdk/typescript/packages/mix-fetch/package.json +++ b/sdk/typescript/packages/mix-fetch/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/mix-fetch", - "version": "1.4.0-rc.0", + "version": "1.4.1", "description": "This package is a drop-in replacement for `fetch` to send HTTP requests over the Nym Mixnet.", "license": "Apache-2.0", "author": "Nym Technologies SA", @@ -34,7 +34,7 @@ "tsc": "tsc --noEmit true" }, "dependencies": { - "@nymproject/mix-fetch-wasm": ">=1.2.4-rc.2 || ^1", + "@nymproject/mix-fetch-wasm": ">=1.4.1-rc.3 || ^1", "comlink": "^4.3.1" }, "devDependencies": { diff --git a/sdk/typescript/packages/node-tester/package.json b/sdk/typescript/packages/node-tester/package.json index de487b0729..4ca5b2fedf 100644 --- a/sdk/typescript/packages/node-tester/package.json +++ b/sdk/typescript/packages/node-tester/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/node-tester", - "version": "1.3.0-rc.0", + "version": "1.3.1", "description": "This package provides a tester that can send test packets to mixnode that is part of the Nym Mixnet.", "license": "Apache-2.0", "author": "Nym Technologies SA", @@ -25,7 +25,7 @@ "tsc": "tsc --noEmit true" }, "dependencies": { - "@nymproject/nym-node-tester-wasm": ">=1.2.4-rc.2 || ^1", + "@nymproject/nym-node-tester-wasm": ">=1.3.1-rc.0 || ^1", "comlink": "^4.3.1" }, "devDependencies": { diff --git a/sdk/typescript/packages/nodejs-client/package.json b/sdk/typescript/packages/nodejs-client/package.json index 143836943c..4b03632cd2 100644 --- a/sdk/typescript/packages/nodejs-client/package.json +++ b/sdk/typescript/packages/nodejs-client/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/nodejs-client", - "version": "1.4.0-rc.0", + "version": "1.4.1", "license": "Apache-2.0", "author": "Nym Technologies SA", "files": [ @@ -25,7 +25,7 @@ "tsc": "tsc --noEmit true" }, "dependencies": { - "@nymproject/nym-client-wasm-node": ">=1.2.4-rc.2 || ^1", + "@nymproject/nym-client-wasm-node": ">=1.4.1-rc.3 || ^1", "comlink": "^4.3.1", "fake-indexeddb": "^4.0.2", "rollup-plugin-polyfill": "^4.2.0", diff --git a/sdk/typescript/packages/nodejs-client/src/worker.ts b/sdk/typescript/packages/nodejs-client/src/worker.ts index a4e4eaeaf5..d96d6318e2 100644 --- a/sdk/typescript/packages/nodejs-client/src/worker.ts +++ b/sdk/typescript/packages/nodejs-client/src/worker.ts @@ -67,7 +67,7 @@ class ClientWrapper { console.error('Client has not been initialised. Please call `init` first.'); return undefined; } - return this.client.self_address(); + return this.client.selfAddress(); }; /** diff --git a/sdk/typescript/packages/sdk-react/package.json b/sdk/typescript/packages/sdk-react/package.json index c92cc99537..1144cf1563 100644 --- a/sdk/typescript/packages/sdk-react/package.json +++ b/sdk/typescript/packages/sdk-react/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk-react", - "version": "1.4.0-rc.0", + "version": "1.4.1", "license": "Apache-2.0", "author": "Nym Technologies SA", "files": [ @@ -20,7 +20,7 @@ "tsc": "tsc --noEmit true" }, "dependencies": { - "@nymproject/sdk": ">=1.2.2-rc.0 || ^1" + "@nymproject/sdk": ">=1.4.1-rc.3 || ^1" }, "devDependencies": { "@babel/core": "^7.17.5", @@ -67,4 +67,4 @@ "private": false, "type": "module", "types": "./dist/index.d.ts" -} \ No newline at end of file +} diff --git a/sdk/typescript/packages/sdk/package.json b/sdk/typescript/packages/sdk/package.json index 1c420c84e0..0f2effe91d 100644 --- a/sdk/typescript/packages/sdk/package.json +++ b/sdk/typescript/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk", - "version": "1.4.0-rc.0", + "version": "1.4.1", "license": "Apache-2.0", "author": "Nym Technologies SA", "files": [ @@ -30,11 +30,8 @@ "test": "node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js -c=jest.config.mjs --no-cache", "tsc": "tsc --noEmit true" }, - "typeRoots": [ - "./node_modules/@types/*" - ], "dependencies": { - "@nymproject/nym-client-wasm": ">=1.2.4-rc.2 || ^1", + "@nymproject/nym-client-wasm": ">=1.4.1-rc.3 || ^1", "comlink": "^4.3.1" }, "devDependencies": { @@ -54,6 +51,7 @@ "@rollup/plugin-url": "^8.0.1", "@rollup/plugin-wasm": "^6.1.1", "@types/jest": "^27.0.1", + "@types/minimatch": "5.1.2", "@types/node": "^16.7.13", "@typescript-eslint/eslint-plugin": "^5.13.0", "@typescript-eslint/parser": "^5.13.0", @@ -81,7 +79,13 @@ "typedoc": "^0.24.8", "typescript": "^4.8.4" }, + "resolutions": { + "@types/minimatch": "5.1.2" + }, "private": false, "type": "module", + "typeRoots": [ + "./node_modules/@types/*" + ], "types": "./dist/esm/index.d.ts" } diff --git a/sdk/typescript/packages/sdk/src/mixnet/wasm/worker.ts b/sdk/typescript/packages/sdk/src/mixnet/wasm/worker.ts index 0c65d27d79..ea96f73fae 100644 --- a/sdk/typescript/packages/sdk/src/mixnet/wasm/worker.ts +++ b/sdk/typescript/packages/sdk/src/mixnet/wasm/worker.ts @@ -79,7 +79,7 @@ class ClientWrapper { return undefined; } - return this.client.self_address(); + return this.client.selfAddress(); }; /** diff --git a/sdk/typescript/packages/validator-client/package.json b/sdk/typescript/packages/validator-client/package.json index 3c11b77a0f..d21a994b6d 100644 --- a/sdk/typescript/packages/validator-client/package.json +++ b/sdk/typescript/packages/validator-client/package.json @@ -39,7 +39,7 @@ "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.0.1", "@rollup/plugin-typescript": "^11.0.0", - "@types/minimatch": "^6.0.0", + "@types/minimatch": "5.1.2", "@typescript-eslint/eslint-plugin": "^5.7.0", "@typescript-eslint/parser": "^5.7.0", "axios": "^1.3.3", diff --git a/sdk/typescript/scripts/build-prod-sdk.sh b/sdk/typescript/scripts/build-prod-sdk.sh index 3b3b5dcf9e..12e68c3264 100755 --- a/sdk/typescript/scripts/build-prod-sdk.sh +++ b/sdk/typescript/scripts/build-prod-sdk.sh @@ -21,7 +21,7 @@ yarn yarn build:ci:sdk # build documentation -yarn docs:prod:build +#yarn docs:prod:build # turn dev mode off yarn dev:off diff --git a/sdk/typescript/scripts/dev-mode-add.mjs b/sdk/typescript/scripts/dev-mode-add.mjs index edecdae96b..df00f685d7 100644 --- a/sdk/typescript/scripts/dev-mode-add.mjs +++ b/sdk/typescript/scripts/dev-mode-add.mjs @@ -2,7 +2,12 @@ import fs from 'fs'; const packageJson = JSON.parse(fs.readFileSync('package.json').toString()); -const devWorkspace = ['sdk/typescript/packages/**', 'sdk/typescript/examples/**', 'sdk/typescript/codegen/**']; +const devWorkspace = [ + 'dist/**', + 'sdk/typescript/packages/**', + 'sdk/typescript/examples/**', + 'sdk/typescript/codegen/**', +]; if (!packageJson.workspaces.includes(devWorkspace)) { // add packageJson.workspaces.push(...devWorkspace); diff --git a/sdk/typescript/scripts/dev-mode-remove.mjs b/sdk/typescript/scripts/dev-mode-remove.mjs index ce897efbd0..cf0041823e 100644 --- a/sdk/typescript/scripts/dev-mode-remove.mjs +++ b/sdk/typescript/scripts/dev-mode-remove.mjs @@ -2,7 +2,12 @@ import fs from 'fs'; const packageJson = JSON.parse(fs.readFileSync('package.json').toString()); -const devWorkspace = ['sdk/typescript/packages/**', 'sdk/typescript/examples/**', 'sdk/typescript/codegen/**']; +const devWorkspace = [ + 'dist/**', + 'sdk/typescript/packages/**', + 'sdk/typescript/examples/**', + 'sdk/typescript/codegen/**', +]; // remove packageJson.workspaces = packageJson.workspaces.filter((w) => !devWorkspace.includes(w)); diff --git a/sdk/typescript/scripts/publish.sh b/sdk/typescript/scripts/publish.sh index 3c59953776..d03fe73942 100755 --- a/sdk/typescript/scripts/publish.sh +++ b/sdk/typescript/scripts/publish.sh @@ -29,7 +29,7 @@ packages=( "wasm/extension-storage" "node/wasm/client" -"node/wasm/mix-fetch" +#"node/wasm/mix-fetch" "ts/sdk/mix-fetch/cjs" "ts/sdk/mix-fetch/cjs-full-fat" @@ -49,7 +49,7 @@ packages=( "ts/sdk/sdk/esm" "ts/sdk/sdk/esm-full-fat" -"ts/sdk/contract-clients" +#"ts/sdk/contract-clients" ) pushd () { @@ -66,7 +66,7 @@ for item in "${packages[@]}" do pushd "$item" jq -r '. | "📦 " + .version + " " +.name' < package.json - popd + popd done echo "" diff --git a/tools/internal/sdk-version-bump/src/helpers.rs b/tools/internal/sdk-version-bump/src/helpers.rs index 5d3a5d4e75..a5f31e1ae9 100644 --- a/tools/internal/sdk-version-bump/src/helpers.rs +++ b/tools/internal/sdk-version-bump/src/helpers.rs @@ -1,7 +1,7 @@ // Copyright 2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 -use anyhow::{bail, Context}; +use anyhow::{Context, bail}; use semver::{Prerelease, Version}; use std::collections::HashSet; use std::path::Path; @@ -72,7 +72,9 @@ pub(crate) fn try_bump_raw_prerelease(raw: &str) -> anyhow::Result { impl VersionBumpExt for Version { fn try_bump_prerelease(&self) -> anyhow::Result { if self.pre.is_empty() { - bail!("the current version ({self}) does not have pre-release data set - are you sure you followed the release process correctly?") + bail!( + "the current version ({self}) does not have pre-release data set - are you sure you followed the release process correctly?" + ) } Ok(Version { @@ -86,7 +88,9 @@ impl VersionBumpExt for Version { fn try_bump_patch_without_pre(&self) -> anyhow::Result { if !self.pre.is_empty() { - bail!("the current version ({self}) has pre-release data set - are you sure you followed the release process correctly?") + bail!( + "the current version ({self}) has pre-release data set - are you sure you followed the release process correctly?" + ) } let mut updated = self.clone(); @@ -96,7 +100,9 @@ impl VersionBumpExt for Version { fn set_initial_release_candidate(&self) -> anyhow::Result { if !self.pre.is_empty() { - bail!("the current version ({self}) has pre-release data set - are you sure you followed the release process correctly?") + bail!( + "the current version ({self}) has pre-release data set - are you sure you followed the release process correctly?" + ) } Ok(Version { major: self.major, @@ -109,7 +115,9 @@ impl VersionBumpExt for Version { fn try_remove_prerelease(&self) -> anyhow::Result { if self.pre.is_empty() { - bail!("the current version ({self}) does not have pre-release data set - are you sure you followed the release process correctly?") + bail!( + "the current version ({self}) does not have pre-release data set - are you sure you followed the release process correctly?" + ) } Ok(Version { major: self.major, diff --git a/tools/internal/sdk-version-bump/src/json.rs b/tools/internal/sdk-version-bump/src/json.rs index 5c6816bf7c..f4894db834 100644 --- a/tools/internal/sdk-version-bump/src/json.rs +++ b/tools/internal/sdk-version-bump/src/json.rs @@ -3,8 +3,8 @@ use crate::helpers::try_bump_raw_prerelease; use crate::json_types::DepsSet; -use crate::{json_types, ReleasePackage}; -use anyhow::{bail, Context}; +use crate::{ReleasePackage, json_types}; +use anyhow::{Context, bail}; use semver::{Comparator, Prerelease, Version, VersionReq}; use std::collections::HashSet; use std::path::{Path, PathBuf}; diff --git a/wasm/client/Cargo.toml b/wasm/client/Cargo.toml index 6ded8ee2d5..4b5d7d19e9 100644 --- a/wasm/client/Cargo.toml +++ b/wasm/client/Cargo.toml @@ -4,7 +4,7 @@ authors = [ "Dave Hrycyszyn ", "Jedrzej Stuczynski ", ] -version = "1.4.0-rc.0" +version = "1.4.1" edition = "2021" keywords = ["nym", "sphinx", "wasm", "webassembly", "privacy"] license = "Apache-2.0" diff --git a/wasm/client/Makefile b/wasm/client/Makefile index 0fefb56503..a44537359a 100644 --- a/wasm/client/Makefile +++ b/wasm/client/Makefile @@ -1,7 +1,9 @@ all: build build-node -build: +build: test build-wasm + +build-wasm: wasm-pack build --scope nymproject --target web --out-dir ../../dist/wasm/client wasm-opt -Oz -o ../../dist/wasm/client/nym_client_wasm_bg.wasm ../../dist/wasm/client/nym_client_wasm_bg.wasm @@ -16,3 +18,6 @@ build-package-json-node: node build-node.mjs build-node: build-rust-node build-package-json-node + +test: + wasm-pack test --node diff --git a/wasm/client/src/encoded_payload_helper.rs b/wasm/client/src/encoded_payload_helper.rs index 8f2099425f..77294f624c 100644 --- a/wasm/client/src/encoded_payload_helper.rs +++ b/wasm/client/src/encoded_payload_helper.rs @@ -58,7 +58,25 @@ pub fn encode_payload_with_headers( Ok(metadata) => { let metadata = metadata.as_bytes().to_vec(); let size = (metadata.len() as u64).to_be_bytes().to_vec(); - Ok([size, metadata, payload].concat()) + if size.len() != 8 { + return Err(JsValue::from(JsError::new( + format!("Size as big endian u8 is {} instead of 8", size.len()).as_str(), + ))); + } + let metadata_length = metadata.len(); + let payload_length = payload.len(); + let encoded = [size, metadata, payload].concat(); + if encoded.len() != (8 + metadata_length + payload_length) { + return Err(JsValue::from(JsError::new( + format!( + "Total size {} != {} (8 + {metadata_length} + {payload_length})", + encoded.len(), + 8 + metadata_length + payload_length + ) + .as_str(), + ))); + } + Ok(encoded) } Err(e) => Err(JsValue::from(JsError::new( format!("Could not encode message: {e}").as_str(), @@ -90,7 +108,7 @@ pub fn decode_payload(message: Vec) -> Result { } pub(crate) fn parse_payload(message: &[u8]) -> anyhow::Result<(EncodedPayloadMetadata, &[u8])> { - // 1st 8 bytes are the size (as u64 big endian) + // 1st 8 bytes are the size of the metadata field (as u64 big endian) let mut size = [0u8; 8]; if message.len() < 8 { bail!("Message is too short to contain size information") @@ -98,10 +116,23 @@ pub(crate) fn parse_payload(message: &[u8]) -> anyhow::Result<(EncodedPayloadMet size.clone_from_slice(&message[0..8]); let metadata_size = u64::from_be_bytes(size) as usize; - if metadata_size + 8 != message.len() { + if metadata_size + 8 > message.len() { return Err(anyhow::anyhow!(format!( - "Metadata size: {}, exceeds message with length of: {}", + "Metadata size: {} bytes + 8 bytes ({} bytes) > {} bytes, message length. Did you pass the entire message for decoding?", metadata_size, + metadata_size + 8, + message.len() + ),)); + } + + let payload_size = message.len() - (8 + metadata_size); + + if payload_size + metadata_size + 8 != message.len() { + return Err(anyhow::anyhow!(format!( + "Payload size {} + Metadata size {} + 8 ({}) != {} message length", + payload_size, + metadata_size, + payload_size + metadata_size + 8, message.len() ),)); } @@ -275,7 +306,7 @@ mod tests { let error = result.unwrap_err(); assert_eq!( error.to_string(), - "Metadata size: 20, exceeds message with length of: 18" + "Metadata size: 20 bytes + 8 bytes (28 bytes) > 18 bytes, message length. Did you pass the entire message for decoding?" ); } @@ -294,6 +325,14 @@ mod tests { message.extend_from_slice(serialized_metadata.as_bytes()); message.extend_from_slice(&payload_data); + wasm_utils::console_log!("message length: {}", message.len()); + wasm_utils::console_log!("metadata length: {}", metadata_length); + wasm_utils::console_log!("payload length: {}", payload_data.len()); + wasm_utils::console_log!( + "8 + metadata_length + payload_length = {}", + payload_data.len() + metadata_length as usize + 8 + ); + let (parsed_metadata, parsed_payload) = parse_payload(&message).unwrap(); assert_eq!(parsed_metadata.mime_type, metadata.mime_type); diff --git a/wasm/client/src/lib.rs b/wasm/client/src/lib.rs index 6e5adb2306..ee5ff5a1ba 100644 --- a/wasm/client/src/lib.rs +++ b/wasm/client/src/lib.rs @@ -20,7 +20,7 @@ use wasm_utils::set_panic_hook; #[wasm_bindgen(start)] #[cfg(target_arch = "wasm32")] -pub fn main() { +pub fn main_js() { wasm_utils::console_log!("[rust main]: setting panic hook"); set_panic_hook(); wasm_utils::console_log!("[rust main]: rust module loaded"); diff --git a/wasm/mix-fetch/Cargo.toml b/wasm/mix-fetch/Cargo.toml index d50239241c..00d91b2e25 100644 --- a/wasm/mix-fetch/Cargo.toml +++ b/wasm/mix-fetch/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "mix-fetch-wasm" authors = ["Jedrzej Stuczynski "] -version = "1.4.0-rc.0" +version = "1.4.1" edition = "2021" keywords = ["nym", "fetch", "wasm", "webassembly", "privacy"] license = "Apache-2.0" @@ -32,6 +32,7 @@ nym-http-api-client = { path = "../../common/http-api-client" } nym-socks5-requests = { path = "../../common/socks5/requests" } nym-ordered-buffer = { path = "../../common/socks5/ordered-buffer" } nym-service-providers-common = { path = "../../service-providers/common" } +nym-validator-client = { path = "../../common/client-libs/validator-client", default-features = false } wasm-client-core = { path = "../../common/wasm/client-core" } wasm-utils = { path = "../../common/wasm/utils" } diff --git a/wasm/mix-fetch/go-mix-conn/go.mod b/wasm/mix-fetch/go-mix-conn/go.mod index 6adec2ce08..52d9f2bed5 100644 --- a/wasm/mix-fetch/go-mix-conn/go.mod +++ b/wasm/mix-fetch/go-mix-conn/go.mod @@ -1,9 +1,7 @@ module go-mix-conn -go 1.23.0 +go 1.24.0 -toolchain go1.23.3 +require golang.org/x/net v0.46.0 -require golang.org/x/net v0.38.0 - -require golang.org/x/text v0.23.0 // indirect +require golang.org/x/text v0.30.0 // indirect diff --git a/wasm/mix-fetch/go-mix-conn/go.sum b/wasm/mix-fetch/go-mix-conn/go.sum index d5b7c23864..ee08c3c4fd 100644 --- a/wasm/mix-fetch/go-mix-conn/go.sum +++ b/wasm/mix-fetch/go-mix-conn/go.sum @@ -1,4 +1,8 @@ golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= diff --git a/wasm/mix-fetch/src/error.rs b/wasm/mix-fetch/src/error.rs index ab15d7e61a..c3347acddf 100644 --- a/wasm/mix-fetch/src/error.rs +++ b/wasm/mix-fetch/src/error.rs @@ -1,10 +1,10 @@ // Copyright 2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 -use crate::harbourmaster::HarbourMasterApiError; use crate::RequestId; use nym_ordered_buffer::OrderedMessageError; use nym_socks5_requests::ConnectionError; +use nym_validator_client::nym_api::error::NymAPIError; use thiserror::Error; use wasm_client_core::error::WasmCoreError; use wasm_client_core::ClientCoreError; @@ -22,9 +22,9 @@ pub enum MixFetchError { NoNetworkRequesters, #[error("could not query for the service providers: {source}")] - HarbourmasterError { + ValidatorClientError { #[from] - source: HarbourMasterApiError, + source: NymAPIError, }, #[error("failed to parse mix fetch config options: {source}")] diff --git a/wasm/mix-fetch/src/fetch.rs b/wasm/mix-fetch/src/fetch.rs index 8df0142490..83d7caaff1 100644 --- a/wasm/mix-fetch/src/fetch.rs +++ b/wasm/mix-fetch/src/fetch.rs @@ -94,10 +94,12 @@ pub fn setup_mix_fetch(opts: MixFetchOpts) -> Promise { } future_to_promise(async move { - let network_requester_address = - get_network_requester(opts.base.preferred_network_requester.clone()) - .await - .map_promise_err()?; + let network_requester_address = get_network_requester( + opts.nym_api_url.clone(), + opts.base.preferred_network_requester.clone(), + ) + .await + .map_promise_err()?; console_log!("going to use {network_requester_address} network requester"); diff --git a/wasm/mix-fetch/src/harbourmaster.rs b/wasm/mix-fetch/src/harbourmaster.rs deleted file mode 100644 index 7b525384ba..0000000000 --- a/wasm/mix-fetch/src/harbourmaster.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2023 - Nym Technologies SA -// SPDX-License-Identifier: Apache-2.0 - -// this exists inside mix-fetch rather than being made into repo-wide library since it's a temporary solution -// until the API is finalised and endpoints are moved to nym-api - -use async_trait::async_trait; -use nym_http_api_client::{ApiClient, HttpClientError, NO_PARAMS}; -use serde::Deserialize; - -pub use nym_http_api_client::Client; - -pub type HarbourMasterApiError = HttpClientError; - -mod routes { - pub const API_VERSION: &str = "v1"; - - pub const SERVICES: &str = "services"; - - pub const NEW: &str = "new"; -} - -#[cfg_attr(target_arch = "wasm32", async_trait(?Send))] -#[cfg_attr(not(target_arch = "wasm32"), async_trait)] -pub trait HarbourMasterApiClientExt: ApiClient { - // since it's a temporary thing don't worry about paging. - async fn get_services_new(&self) -> Result, HarbourMasterApiError> { - self.get_json( - &[routes::API_VERSION, routes::SERVICES, routes::NEW], - NO_PARAMS, - ) - .await - } -} - -#[cfg_attr(target_arch = "wasm32", async_trait(?Send))] -#[cfg_attr(not(target_arch = "wasm32"), async_trait)] -impl HarbourMasterApiClientExt for Client {} - -// https://gitlab.nymte.ch/nym/shipyard-test-and-earn/-/blob/main/harbour-master/src/http/mod.rs#L13 -#[allow(dead_code)] -#[derive(Debug, Deserialize)] -pub struct PagedResult { - pub page: u32, - pub size: u32, - pub total: i32, - pub items: Vec, -} - -// https://gitlab.nymte.ch/nym/shipyard-test-and-earn/-/blob/main/harbour-master/src/http/services.rs#L32 -#[allow(dead_code)] -#[derive(Debug, Deserialize)] -pub struct ServiceNew { - pub service_provider_client_id: String, - pub ip_address: String, - pub last_successful_ping_utc: String, - pub last_updated_utc: String, - pub routing_score: f32, -} diff --git a/wasm/mix-fetch/src/helpers.rs b/wasm/mix-fetch/src/helpers.rs index e675c7d005..4f6daf85b1 100644 --- a/wasm/mix-fetch/src/helpers.rs +++ b/wasm/mix-fetch/src/helpers.rs @@ -2,36 +2,48 @@ // SPDX-License-Identifier: Apache-2.0 use crate::error::MixFetchError; -use crate::harbourmaster; -use crate::harbourmaster::HarbourMasterApiClientExt; +use crate::error::MixFetchError::NoNetworkRequesters; +use nym_http_api_client::Client; +use nym_validator_client::nym_api::NymApiClientExt; use rand::seq::SliceRandom; use rand::thread_rng; use wasm_utils::console_log; // since this client is temporary (and will be properly integrated into nym-api eventually), // we're using hardcoded URL for mainnet -const HARBOUR_MASTER: &str = "https://harbourmaster.nymtech.net"; +const NYM_API_URL: &str = "https://validator.nymtech.net/api/"; pub(crate) async fn get_network_requester( + nym_api_url: Option, preferred: Option, ) -> Result { if let Some(sp) = preferred { return Ok(sp); } - let client = harbourmaster::Client::new_url(HARBOUR_MASTER, None)?; - let providers = client.get_services_new().await?; + let client = Client::new( + url::Url::parse(&nym_api_url.unwrap_or(NYM_API_URL.to_string()))?, + None, + ); + let nodes = client.get_all_described_nodes().await?; + let providers: Vec<_> = nodes + .iter() + .filter_map(|node| { + node.description + .network_requester + .clone() + .map(|n| n.address) + }) + .collect(); console_log!( "obtained list of {} service providers on the network", - providers.items.len() + providers.len() ); // this will only return a `None` if the list is empty let mut rng = thread_rng(); providers - .items .choose(&mut rng) - .map(|service| &service.service_provider_client_id) + .ok_or(NoNetworkRequesters) .cloned() - .ok_or(MixFetchError::NoNetworkRequesters) } diff --git a/wasm/mix-fetch/src/lib.rs b/wasm/mix-fetch/src/lib.rs index b02780f3ab..cbb9d151d4 100644 --- a/wasm/mix-fetch/src/lib.rs +++ b/wasm/mix-fetch/src/lib.rs @@ -14,8 +14,6 @@ mod fetch; #[cfg(target_arch = "wasm32")] mod go_bridge; #[cfg(target_arch = "wasm32")] -mod harbourmaster; -#[cfg(target_arch = "wasm32")] mod helpers; #[cfg(target_arch = "wasm32")] mod request_writer; diff --git a/wasm/node-tester/Cargo.toml b/wasm/node-tester/Cargo.toml index 05411e164f..dd1fb9fded 100644 --- a/wasm/node-tester/Cargo.toml +++ b/wasm/node-tester/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "nym-node-tester-wasm" authors = ["Jedrzej Stuczynski "] -version = "1.3.0-rc.0" +version = "1.3.1" edition = "2021" keywords = ["nym", "sphinx", "webassembly", "privacy", "tester"] license = "Apache-2.0" diff --git a/yarn.lock b/yarn.lock index 8e99306240..246c016a46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,14 +7,6 @@ resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.4.tgz#2856c55443d3d461693f32d2b96fb6ea92e1ffa9" integrity sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg== -"@ampproject/remapping@^2.1.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - "@asamuzakjp/css-color@^4.0.3": version "4.0.5" resolved "https://registry.yarnpkg.com/@asamuzakjp/css-color/-/css-color-4.0.5.tgz#cc533095241d8a56c49614591955280ab8c4bb02" @@ -26,10 +18,10 @@ "@csstools/css-tokenizer" "^3.0.4" lru-cache "^11.2.1" -"@asamuzakjp/dom-selector@^6.5.4": - version "6.5.7" - resolved "https://registry.yarnpkg.com/@asamuzakjp/dom-selector/-/dom-selector-6.5.7.tgz#d4dd57957e4b699266cc75a690190b3d1b5258bf" - integrity sha512-cvdTPsi2qC1c22UppvuVmx/PDwuc6+QQkwt9OnwQD6Uotbh//tb2XDF0OoK2V0F4b8d02LIwNp3BieaDMAhIhA== +"@asamuzakjp/dom-selector@^6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@asamuzakjp/dom-selector/-/dom-selector-6.7.2.tgz#bce7e730e969610ce8574b98ff3dd69db6ac9e6a" + integrity sha512-ccKogJI+0aiDhOahdjANIc9SDixSud1gbwdVrhn7kMopAtLXqsz9MKmQQtIl6Y5aC2IYq+j4dz/oedL2AVMmVQ== dependencies: "@asamuzakjp/nwsapi" "^2.3.9" bidi-js "^1.0.3" @@ -42,14 +34,7 @@ resolved "https://registry.yarnpkg.com/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz#ad5549322dfe9d153d4b4dd6f7ff2ae234b06e24" integrity sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q== -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== @@ -58,10 +43,10 @@ js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.4.tgz#96fdf1af1b8859c8474ab39c295312bfb7c24b04" - integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f" + integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== "@babel/core@7.12.9": version "7.12.9" @@ -85,41 +70,20 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" - integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.10" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" - "@babel/types" "^7.18.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.15.0", "@babel/core@^7.17.5", "@babel/core@^7.19.6", "@babel/core@^7.22.10", "@babel/core@^7.23.9", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.4.tgz#12a550b8794452df4c8b084f95003bce1742d496" - integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== +"@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.15.0", "@babel/core@^7.17.5", "@babel/core@^7.19.6", "@babel/core@^7.22.10", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e" + integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== dependencies: "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.3" + "@babel/generator" "^7.28.5" "@babel/helper-compilation-targets" "^7.27.2" "@babel/helper-module-transforms" "^7.28.3" "@babel/helpers" "^7.28.4" - "@babel/parser" "^7.28.4" + "@babel/parser" "^7.28.5" "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.4" - "@babel/types" "^7.28.4" + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -127,22 +91,13 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@7.18.12": - version "7.18.12" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" - integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== +"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.28.5", "@babel/generator@^7.7.2": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298" + integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== dependencies: - "@babel/types" "^7.18.10" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.18.10", "@babel/generator@^7.28.3", "@babel/generator@^7.7.2": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" - integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== - dependencies: - "@babel/parser" "^7.28.3" - "@babel/types" "^7.28.2" + "@babel/parser" "^7.28.5" + "@babel/types" "^7.28.5" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -154,7 +109,7 @@ dependencies: "@babel/types" "^7.27.3" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": version "7.27.2" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== @@ -165,26 +120,26 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz#3e747434ea007910c320c4d39a6b46f20f371d46" - integrity sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3", "@babel/helper-create-class-features-plugin@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz#472d0c28028850968979ad89f173594a6995da46" + integrity sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ== dependencies: "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.28.5" "@babel/helper-optimise-call-expression" "^7.27.1" "@babel/helper-replace-supers" "^7.27.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/traverse" "^7.28.5" semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" - integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997" + integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - regexpu-core "^6.2.0" + "@babel/helper-annotate-as-pure" "^7.27.3" + regexpu-core "^6.3.1" semver "^6.3.1" "@babel/helper-define-polyfill-provider@^0.1.5": @@ -201,18 +156,6 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-define-polyfill-provider@^0.3.2", "@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - "@babel/helper-define-polyfill-provider@^0.6.5": version "0.6.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753" @@ -224,42 +167,20 @@ lodash.debounce "^4.0.8" resolve "^1.22.10" -"@babel/helper-environment-visitor@^7.18.9": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-function-name@^7.18.9": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - "@babel/helper-globals@^7.28.0": version "7.28.0" resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== -"@babel/helper-hoist-variables@^7.18.6": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== +"@babel/helper-member-expression-to-functions@^7.27.1", "@babel/helper-member-expression-to-functions@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150" + integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg== dependencies: - "@babel/types" "^7.24.7" + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" -"@babel/helper-member-expression-to-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" - integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.27.1": +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== @@ -267,7 +188,7 @@ "@babel/traverse" "^7.27.1" "@babel/types" "^7.27.1" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.9", "@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3": +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3": version "7.28.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz#a2b37d3da3b2344fe085dab234426f2b9a2fa5f6" integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== @@ -288,12 +209,12 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@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.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@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.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== -"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.27.1": +"@babel/helper-remap-async-to-generator@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== @@ -327,24 +248,17 @@ "@babel/traverse" "^7.27.1" "@babel/types" "^7.27.1" -"@babel/helper-split-export-declaration@^7.18.6": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" - integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.18.10", "@babel/helper-string-parser@^7.27.1": +"@babel/helper-string-parser@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== +"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== -"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.27.1": +"@babel/helper-validator-option@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== @@ -358,7 +272,7 @@ "@babel/traverse" "^7.28.3" "@babel/types" "^7.28.2" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.18.9", "@babel/helpers@^7.28.4": +"@babel/helpers@^7.12.5", "@babel/helpers@^7.28.4": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.4.tgz#fe07274742e95bdf7cf1443593eeb8926ab63827" integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== @@ -366,35 +280,20 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.28.4" -"@babel/highlight@^7.10.4": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6" - integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" + integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" + "@babel/types" "^7.28.5" -"@babel/parser@7.18.11": - version "7.18.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" - integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== - -"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.11", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" - integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== - dependencies: - "@babel/types" "^7.28.4" - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" - integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz#fbde57974707bbfa0376d34d425ff4fa6c732421" + integrity sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q== dependencies: "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/traverse" "^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": version "7.27.1" @@ -403,14 +302,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": version "7.27.1" 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.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== @@ -427,17 +326,7 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/traverse" "^7.28.3" -"@babel/plugin-proposal-async-generator-functions@^7.18.10": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" - integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@7.18.6", "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.12.1": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -445,15 +334,6 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" - integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-proposal-decorators@^7.12.12": version "7.28.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz#419c8acc31088e05a774344c021800f7ddc39bf0" @@ -463,22 +343,6 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-syntax-decorators" "^7.27.1" -"@babel/plugin-proposal-dynamic-import@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-default-from@7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz#091f4794dbce4027c03cf4ebc64d3fb96b75c206" - integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-default-from" "^7.18.6" - "@babel/plugin-proposal-export-default-from@^7.12.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.27.1.tgz#59b050b0e5fdc366162ab01af4fcbac06ea40919" @@ -486,31 +350,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" - integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -518,14 +358,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread@7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" @@ -535,18 +367,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - -"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.18.9": +"@babel/plugin-proposal-object-rest-spread@^7.12.1": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== @@ -557,15 +378,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.20.7" -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.18.9": +"@babel/plugin-proposal-optional-chaining@^7.12.7": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== @@ -574,7 +387,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.18.6": +"@babel/plugin-proposal-private-methods@^7.12.1": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== @@ -587,7 +400,7 @@ 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" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-proposal-private-property-in-object@^7.12.1", "@babel/plugin-proposal-private-property-in-object@^7.18.6": +"@babel/plugin-proposal-private-property-in-object@^7.12.1": version "7.21.11" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== @@ -597,14 +410,6 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -647,20 +452,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.18.6": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.27.1.tgz#8efed172e79ab657c7fa4d599224798212fb7e18" - integrity sha512-eBC/3KSekshx19+N40MzjWqJd7KTEdOoLesAfa4IDFI8eRz5a47i5Oszus6zG/cwIXN63YhgLOMSSNJx49sENg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-flow@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz#6c83cf0d7d635b716827284b7ecd5aead9237662" @@ -668,7 +459,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-import-assertions@^7.18.6", "@babel/plugin-syntax-import-assertions@^7.27.1": +"@babel/plugin-syntax-import-assertions@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== @@ -703,7 +494,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.7.2": +"@babel/plugin-syntax-jsx@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== @@ -781,7 +572,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.18.6", "@babel/plugin-transform-arrow-functions@^7.27.1": +"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== @@ -797,7 +588,7 @@ "@babel/helper-remap-async-to-generator" "^7.27.1" "@babel/traverse" "^7.28.0" -"@babel/plugin-transform-async-to-generator@^7.14.5", "@babel/plugin-transform-async-to-generator@^7.18.6", "@babel/plugin-transform-async-to-generator@^7.22.5", "@babel/plugin-transform-async-to-generator@^7.27.1": +"@babel/plugin-transform-async-to-generator@^7.14.5", "@babel/plugin-transform-async-to-generator@^7.22.5", "@babel/plugin-transform-async-to-generator@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== @@ -806,17 +597,17 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-remap-async-to-generator" "^7.27.1" -"@babel/plugin-transform-block-scoped-functions@^7.18.6", "@babel/plugin-transform-block-scoped-functions@^7.27.1": +"@babel/plugin-transform-block-scoped-functions@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.18.9", "@babel/plugin-transform-block-scoping@^7.28.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz#e19ac4ddb8b7858bac1fd5c1be98a994d9726410" - integrity sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A== +"@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz#e0d3af63bd8c80de2e567e690a54e84d85eb16f6" + integrity sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g== dependencies: "@babel/helper-plugin-utils" "^7.27.1" @@ -836,7 +627,7 @@ "@babel/helper-create-class-features-plugin" "^7.28.3" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.18.9", "@babel/plugin-transform-classes@^7.28.3": +"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.28.4": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz#75d66175486788c56728a73424d67cbc7473495c" integrity sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA== @@ -848,7 +639,7 @@ "@babel/helper-replace-supers" "^7.27.1" "@babel/traverse" "^7.28.4" -"@babel/plugin-transform-computed-properties@^7.18.9", "@babel/plugin-transform-computed-properties@^7.27.1": +"@babel/plugin-transform-computed-properties@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== @@ -856,15 +647,15 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/template" "^7.27.1" -"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.18.9", "@babel/plugin-transform-destructuring@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz#0f156588f69c596089b7d5b06f5af83d9aa7f97a" - integrity sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A== +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.28.0", "@babel/plugin-transform-destructuring@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7" + integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw== dependencies: "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.0" + "@babel/traverse" "^7.28.5" -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.27.1", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== @@ -872,7 +663,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-keys@^7.18.9", "@babel/plugin-transform-duplicate-keys@^7.27.1": +"@babel/plugin-transform-duplicate-keys@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== @@ -902,10 +693,10 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-transform-destructuring" "^7.28.0" -"@babel/plugin-transform-exponentiation-operator@^7.18.6", "@babel/plugin-transform-exponentiation-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" - integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== +"@babel/plugin-transform-exponentiation-operator@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz#7cc90a8170e83532676cfa505278e147056e94fe" + integrity sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw== dependencies: "@babel/helper-plugin-utils" "^7.27.1" @@ -924,7 +715,7 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-syntax-flow" "^7.27.1" -"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.18.8", "@babel/plugin-transform-for-of@^7.27.1": +"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== @@ -932,7 +723,7 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-function-name@^7.18.9", "@babel/plugin-transform-function-name@^7.27.1": +"@babel/plugin-transform-function-name@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== @@ -948,28 +739,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-literals@^7.18.9", "@babel/plugin-transform-literals@^7.27.1": +"@babel/plugin-transform-literals@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-logical-assignment-operators@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" - integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== +"@babel/plugin-transform-logical-assignment-operators@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz#d028fd6db8c081dee4abebc812c2325e24a85b0e" + integrity sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-member-expression-literals@^7.18.6", "@babel/plugin-transform-member-expression-literals@^7.27.1": +"@babel/plugin-transform-member-expression-literals@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-amd@^7.18.6", "@babel/plugin-transform-modules-amd@^7.27.1": +"@babel/plugin-transform-modules-amd@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== @@ -977,7 +768,7 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.18.6", "@babel/plugin-transform-modules-commonjs@^7.27.1": +"@babel/plugin-transform-modules-commonjs@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== @@ -985,17 +776,17 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.18.9", "@babel/plugin-transform-modules-systemjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" - integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== +"@babel/plugin-transform-modules-systemjs@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz#7439e592a92d7670dfcb95d0cbc04bd3e64801d2" + integrity sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew== dependencies: - "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-module-transforms" "^7.28.3" "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.5" -"@babel/plugin-transform-modules-umd@^7.18.6", "@babel/plugin-transform-modules-umd@^7.27.1": +"@babel/plugin-transform-modules-umd@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== @@ -1003,7 +794,7 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6", "@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": +"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== @@ -1011,7 +802,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-new-target@^7.18.6", "@babel/plugin-transform-new-target@^7.27.1": +"@babel/plugin-transform-new-target@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== @@ -1032,7 +823,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-object-rest-spread@^7.28.0": +"@babel/plugin-transform-object-rest-spread@^7.28.4": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz#9ee1ceca80b3e6c4bac9247b2149e36958f7f98d" integrity sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew== @@ -1043,7 +834,7 @@ "@babel/plugin-transform-parameters" "^7.27.7" "@babel/traverse" "^7.28.4" -"@babel/plugin-transform-object-super@^7.18.6", "@babel/plugin-transform-object-super@^7.27.1": +"@babel/plugin-transform-object-super@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== @@ -1058,15 +849,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" - integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== +"@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz#8238c785f9d5c1c515a90bf196efb50d075a4b26" + integrity sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ== dependencies: "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.18.8", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.27.7": +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.27.7": version "7.27.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== @@ -1090,7 +881,7 @@ "@babel/helper-create-class-features-plugin" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-property-literals@^7.18.6", "@babel/plugin-transform-property-literals@^7.27.1": +"@babel/plugin-transform-property-literals@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== @@ -1104,7 +895,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-react-display-name@^7.27.1": +"@babel/plugin-transform-react-display-name@^7.28.0": version "7.28.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz#6f20a7295fea7df42eb42fed8f896813f5b934de" integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA== @@ -1137,7 +928,7 @@ "@babel/helper-annotate-as-pure" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.18.6", "@babel/plugin-transform-regenerator@^7.28.3": +"@babel/plugin-transform-regenerator@^7.28.4": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz#9d3fa3bebb48ddd0091ce5729139cd99c67cea51" integrity sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA== @@ -1152,33 +943,21 @@ "@babel/helper-create-regexp-features-plugin" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-reserved-words@^7.18.6", "@babel/plugin-transform-reserved-words@^7.27.1": +"@babel/plugin-transform-reserved-words@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-runtime@7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz#37d14d1fa810a368fd635d4d1476c0154144a96f" - integrity sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.18.6", "@babel/plugin-transform-shorthand-properties@^7.27.1": +"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.18.9", "@babel/plugin-transform-spread@^7.27.1": +"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== @@ -1186,39 +965,39 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-sticky-regex@^7.18.6", "@babel/plugin-transform-sticky-regex@^7.27.1": +"@babel/plugin-transform-sticky-regex@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.18.9", "@babel/plugin-transform-template-literals@^7.27.1": +"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-typeof-symbol@^7.18.9", "@babel/plugin-transform-typeof-symbol@^7.27.1": +"@babel/plugin-transform-typeof-symbol@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-typescript@^7.27.1": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz#796cbd249ab56c18168b49e3e1d341b72af04a6b" - integrity sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg== +"@babel/plugin-transform-typescript@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz#441c5f9a4a1315039516c6c612fc66d5f4594e72" + integrity sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA== dependencies: "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.5" "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-syntax-typescript" "^7.27.1" -"@babel/plugin-transform-unicode-escapes@^7.18.10", "@babel/plugin-transform-unicode-escapes@^7.27.1": +"@babel/plugin-transform-unicode-escapes@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== @@ -1233,7 +1012,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-regex@^7.18.6", "@babel/plugin-transform-unicode-regex@^7.27.1": +"@babel/plugin-transform-unicode-regex@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== @@ -1249,97 +1028,16 @@ "@babel/helper-create-regexp-features-plugin" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/preset-env@7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" - integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.10" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@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.18.6" - "@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-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.10" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - core-js-compat "^3.22.1" - semver "^6.3.0" - "@babel/preset-env@^7.12.11", "@babel/preset-env@^7.15.0", "@babel/preset-env@^7.19.4", "@babel/preset-env@^7.22.10": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.3.tgz#2b18d9aff9e69643789057ae4b942b1654f88187" - integrity sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.5.tgz#82dd159d1563f219a1ce94324b3071eb89e280b0" + integrity sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg== dependencies: - "@babel/compat-data" "^7.28.0" + "@babel/compat-data" "^7.28.5" "@babel/helper-compilation-targets" "^7.27.2" "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" @@ -1352,42 +1050,42 @@ "@babel/plugin-transform-async-generator-functions" "^7.28.0" "@babel/plugin-transform-async-to-generator" "^7.27.1" "@babel/plugin-transform-block-scoped-functions" "^7.27.1" - "@babel/plugin-transform-block-scoping" "^7.28.0" + "@babel/plugin-transform-block-scoping" "^7.28.5" "@babel/plugin-transform-class-properties" "^7.27.1" "@babel/plugin-transform-class-static-block" "^7.28.3" - "@babel/plugin-transform-classes" "^7.28.3" + "@babel/plugin-transform-classes" "^7.28.4" "@babel/plugin-transform-computed-properties" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-destructuring" "^7.28.5" "@babel/plugin-transform-dotall-regex" "^7.27.1" "@babel/plugin-transform-duplicate-keys" "^7.27.1" "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" "@babel/plugin-transform-dynamic-import" "^7.27.1" "@babel/plugin-transform-explicit-resource-management" "^7.28.0" - "@babel/plugin-transform-exponentiation-operator" "^7.27.1" + "@babel/plugin-transform-exponentiation-operator" "^7.28.5" "@babel/plugin-transform-export-namespace-from" "^7.27.1" "@babel/plugin-transform-for-of" "^7.27.1" "@babel/plugin-transform-function-name" "^7.27.1" "@babel/plugin-transform-json-strings" "^7.27.1" "@babel/plugin-transform-literals" "^7.27.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.28.5" "@babel/plugin-transform-member-expression-literals" "^7.27.1" "@babel/plugin-transform-modules-amd" "^7.27.1" "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-modules-systemjs" "^7.27.1" + "@babel/plugin-transform-modules-systemjs" "^7.28.5" "@babel/plugin-transform-modules-umd" "^7.27.1" "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" "@babel/plugin-transform-new-target" "^7.27.1" "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" "@babel/plugin-transform-numeric-separator" "^7.27.1" - "@babel/plugin-transform-object-rest-spread" "^7.28.0" + "@babel/plugin-transform-object-rest-spread" "^7.28.4" "@babel/plugin-transform-object-super" "^7.27.1" "@babel/plugin-transform-optional-catch-binding" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.28.5" "@babel/plugin-transform-parameters" "^7.27.7" "@babel/plugin-transform-private-methods" "^7.27.1" "@babel/plugin-transform-private-property-in-object" "^7.27.1" "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.3" + "@babel/plugin-transform-regenerator" "^7.28.4" "@babel/plugin-transform-regexp-modifiers" "^7.27.1" "@babel/plugin-transform-reserved-words" "^7.27.1" "@babel/plugin-transform-shorthand-properties" "^7.27.1" @@ -1424,39 +1122,28 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-modules@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6.tgz#31bcdd8f19538437339d17af00d177d854d9d458" - integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - "@babel/preset-react@^7.12.10", "@babel/preset-react@^7.14.5", "@babel/preset-react@^7.18.6": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.27.1.tgz#86ea0a5ca3984663f744be2fd26cb6747c3fd0ec" - integrity sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.28.5.tgz#6fcc0400fa79698433d653092c3919bb4b0878d9" + integrity sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ== dependencies: "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-transform-react-display-name" "^7.27.1" + "@babel/plugin-transform-react-display-name" "^7.28.0" "@babel/plugin-transform-react-jsx" "^7.27.1" "@babel/plugin-transform-react-jsx-development" "^7.27.1" "@babel/plugin-transform-react-pure-annotations" "^7.27.1" "@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.22.5": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz#190742a6428d282306648a55b0529b561484f912" - integrity sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz#540359efa3028236958466342967522fd8f2a60c" + integrity sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g== dependencies: "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-validator-option" "^7.27.1" "@babel/plugin-syntax-jsx" "^7.27.1" "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-typescript" "^7.27.1" + "@babel/plugin-transform-typescript" "^7.28.5" "@babel/register@^7.12.1": version "7.28.3" @@ -1476,7 +1163,7 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.25.7", "@babel/runtime@^7.26.0", "@babel/runtime@^7.26.10", "@babel/runtime@^7.27.6", "@babel/runtime@^7.28.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.25.7", "@babel/runtime@^7.26.0", "@babel/runtime@^7.26.10", "@babel/runtime@^7.27.6", "@babel/runtime@^7.28.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.28.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== @@ -1488,7 +1175,7 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/template@^7.12.7", "@babel/template@^7.18.10", "@babel/template@^7.24.7", "@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3": +"@babel/template@^7.12.7", "@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3": version "7.27.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== @@ -1497,51 +1184,26 @@ "@babel/parser" "^7.27.2" "@babel/types" "^7.27.1" -"@babel/traverse@7.18.11": - version "7.18.11" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" - integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.11" - "@babel/types" "^7.18.10" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.18.10", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.7.2": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" - integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== +"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5", "@babel/traverse@^7.7.2": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b" + integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== dependencies: "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.3" + "@babel/generator" "^7.28.5" "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.4" + "@babel/parser" "^7.28.5" "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + "@babel/types" "^7.28.5" debug "^4.3.1" -"@babel/types@7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" - integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.18.10", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" - integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== +"@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" + integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== dependencies: "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@base2/pretty-print-object@1.0.1": version "1.0.1" @@ -1608,21 +1270,21 @@ integrity sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA== "@chain-registry/client@^1.49.11": - version "1.53.221" - resolved "https://registry.yarnpkg.com/@chain-registry/client/-/client-1.53.221.tgz#9cb00a3af66efd8d7e77c38b22ed816d9d151f13" - integrity sha512-wWL5UL0Pvj0V7uy0MUY0SQpmMUWC0Vwj+/WIXM0h3aJPN7OZyh6s/iAETWiu7SN6IJT9ualrY3YV+LsXL1Zi7w== + version "1.53.238" + resolved "https://registry.yarnpkg.com/@chain-registry/client/-/client-1.53.238.tgz#9083121817b3c2e1ed18866b381b932f9a4fe2cc" + integrity sha512-BN8sD4xlmkt4i6HU+/u5EFc8yhnfufX024euKhlp5prEmfL3ZtD91cJCH03tQ8q/4LPPSsdrHTJbdAfUlm94tQ== dependencies: - "@chain-registry/types" "^0.50.221" - "@chain-registry/utils" "^1.51.221" + "@chain-registry/types" "^0.50.238" + "@chain-registry/utils" "^1.51.238" bfs-path "^1.0.2" cross-fetch "^3.1.5" "@chain-registry/keplr@^1.69.13": - version "1.74.356" - resolved "https://registry.yarnpkg.com/@chain-registry/keplr/-/keplr-1.74.356.tgz#7b85e71fc5f916b9c16bb19e0823ffa21c6e0813" - integrity sha512-qxtW1bH/NfV+O8IIV8Dr87Z1ymLwZ1G5oxM/t4ZRCpC+SeppWPW/hhMwKTmlzJaqxvskHzLiXcbO42Cz514bXQ== + version "1.74.378" + resolved "https://registry.yarnpkg.com/@chain-registry/keplr/-/keplr-1.74.378.tgz#ad8af0d715a84831adb7a693f60e55f3ddc54662" + integrity sha512-XNSVFki72PNOCszB4VDttqVcemW//1kYrHFDJtOKWAmERwbLpig3AiwjMkC0obsZPFrZGtxo+Ff0zkBMGTJHfg== dependencies: - "@chain-registry/types" "^0.50.221" + "@chain-registry/types" "^0.50.238" "@keplr-wallet/cosmos" "0.12.28" "@keplr-wallet/crypto" "0.12.28" semver "^7.5.0" @@ -1632,17 +1294,17 @@ resolved "https://registry.yarnpkg.com/@chain-registry/types/-/types-0.46.15.tgz#f4c0219fb7060d97cb224b55f349adb1d436aac9" integrity sha512-gzf+pkAbEZ7fKuTuwmrEAEcx1K/BNrKuCnB9s+WwSo9Ad/3s+GV5LOXcOOxjjHh9Mrs9kvnxKvzKjOwWu8gDJw== -"@chain-registry/types@^0.50.221", "@chain-registry/types@^0.50.36": - version "0.50.221" - resolved "https://registry.yarnpkg.com/@chain-registry/types/-/types-0.50.221.tgz#bb453fad29336e55fd9a9e6035c6b2a56dd0ae18" - integrity sha512-kpuhMcGz0K9UZ7Ne77PL/v8rCeji4nm0DcfbPSIXgLZhNV5TL+TURbUl8L9BUvD8PfyCWTRXbte7Kj+IBT1cbQ== +"@chain-registry/types@^0.50.238", "@chain-registry/types@^0.50.36": + version "0.50.238" + resolved "https://registry.yarnpkg.com/@chain-registry/types/-/types-0.50.238.tgz#0d9f5e5e65e1f8ab6ef8a6aea34b3c9a11a961f2" + integrity sha512-NJL9n5ND3SAro08jR/NjEBs8trVQ9YqBGIpeZZQJV5ACPU11PzzO1n+TWGcv2302VnI8L1BBaEaEaQq4AJKkng== -"@chain-registry/utils@^1.51.221": - version "1.51.221" - resolved "https://registry.yarnpkg.com/@chain-registry/utils/-/utils-1.51.221.tgz#7a2cd42b87c25138616d8131433242363b1e4f66" - integrity sha512-zqaveIswfyI+/X391ZoAG4hDNlCZHfRuvuCy8ujptytP6s/upPOABYtelJ8RTVHKjHeolNelYr0DH6c7Ho6emw== +"@chain-registry/utils@^1.51.238": + version "1.51.238" + resolved "https://registry.yarnpkg.com/@chain-registry/utils/-/utils-1.51.238.tgz#f6a808f55839f5163f035c28025e6d00771e5e0f" + integrity sha512-+80RunNYd9xnkiMEdTE2iNi0NMnDzmubyQtVXVv0z2EcK83+0CCsSaMB7/WlDrx/n1P9bvu62hKmZIV2bG6KlA== dependencies: - "@chain-registry/types" "^0.50.221" + "@chain-registry/types" "^0.50.238" bignumber.js "9.1.2" sha.js "^2.4.11" @@ -1667,16 +1329,6 @@ "@noble/hashes" "^1.0.0" protobufjs "^6.8.8" -"@cosmjs/amino@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.29.5.tgz#053b4739a90b15b9e2b781ccd484faf64bd49aec" - integrity sha512-Qo8jpC0BiziTSUqpkNatBcwtKNhCovUnFul9SlT/74JUCdLYaeG5hxr3q1cssQt++l4LvlcpF+OUXL48XjNjLw== - dependencies: - "@cosmjs/crypto" "^0.29.5" - "@cosmjs/encoding" "^0.29.5" - "@cosmjs/math" "^0.29.5" - "@cosmjs/utils" "^0.29.5" - "@cosmjs/amino@^0.32.3", "@cosmjs/amino@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.32.4.tgz#3908946c0394e6d431694c8992c5147079a1c860" @@ -1687,24 +1339,7 @@ "@cosmjs/math" "^0.32.4" "@cosmjs/utils" "^0.32.4" -"@cosmjs/cosmwasm-stargate@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.29.5.tgz#3f257da682658833e0f4eb9e8ff758e4d927663a" - integrity sha512-TNdSvm2tEE3XMCuxHxquzls56t40hC8qnLeYJWHsY2ECZmRK3KrnpRReEr7N7bLtODToK7X/riYrV0JaYxjrYA== - dependencies: - "@cosmjs/amino" "^0.29.5" - "@cosmjs/crypto" "^0.29.5" - "@cosmjs/encoding" "^0.29.5" - "@cosmjs/math" "^0.29.5" - "@cosmjs/proto-signing" "^0.29.5" - "@cosmjs/stargate" "^0.29.5" - "@cosmjs/tendermint-rpc" "^0.29.5" - "@cosmjs/utils" "^0.29.5" - cosmjs-types "^0.5.2" - long "^4.0.0" - pako "^2.0.2" - -"@cosmjs/cosmwasm-stargate@^0.32.3": +"@cosmjs/cosmwasm-stargate@^0.32.3", "@cosmjs/cosmwasm-stargate@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.4.tgz#2ee93f2cc0b1c146ac369b2bf8ef9ee2e159fd50" integrity sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA== @@ -1720,19 +1355,6 @@ cosmjs-types "^0.9.0" pako "^2.0.2" -"@cosmjs/crypto@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.29.5.tgz#ab99fc382b93d8a8db075780cf07487a0f9519fd" - integrity sha512-2bKkaLGictaNL0UipQCL6C1afaisv6k8Wr/GCLx9FqiyFkh9ZgRHDyetD64ZsjnWV/N/D44s/esI+k6oPREaiQ== - dependencies: - "@cosmjs/encoding" "^0.29.5" - "@cosmjs/math" "^0.29.5" - "@cosmjs/utils" "^0.29.5" - "@noble/hashes" "^1" - bn.js "^5.2.0" - elliptic "^6.5.4" - libsodium-wrappers "^0.7.6" - "@cosmjs/crypto@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.32.4.tgz#5d29633b661eaf092ddb3e7ea6299cfd6f4507a2" @@ -1746,15 +1368,6 @@ elliptic "^6.5.4" libsodium-wrappers-sumo "^0.7.11" -"@cosmjs/encoding@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.29.5.tgz#009a4b1c596cdfd326f30ccfa79f5e56daa264f2" - integrity sha512-G4rGl/Jg4dMCw5u6PEZHZcoHnUBlukZODHbm/wcL4Uu91fkn5jVo5cXXZcvs4VCkArVGrEj/52eUgTZCmOBGWQ== - dependencies: - base64-js "^1.3.0" - bech32 "^1.1.4" - readonly-date "^1.0.0" - "@cosmjs/encoding@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.32.4.tgz#646e0e809f7f4f1414d8fa991fb0ffe6c633aede" @@ -1764,14 +1377,6 @@ bech32 "^1.1.4" readonly-date "^1.0.0" -"@cosmjs/json-rpc@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.29.5.tgz#5e483a9bd98a6270f935adf0dfd8a1e7eb777fe4" - integrity sha512-C78+X06l+r9xwdM1yFWIpGl03LhB9NdM1xvZpQHwgCOl0Ir/WV8pw48y3Ez2awAoUBRfTeejPe4KvrE6NoIi/w== - dependencies: - "@cosmjs/stream" "^0.29.5" - xstream "^11.14.0" - "@cosmjs/json-rpc@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.32.4.tgz#be91eb89ea78bd5dc02d0a9fa184dd6790790f0b" @@ -1780,13 +1385,6 @@ "@cosmjs/stream" "^0.32.4" xstream "^11.14.0" -"@cosmjs/math@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.29.5.tgz#722c96e080d6c2b62215ce9f4c70da7625b241b6" - integrity sha512-2GjKcv+A9f86MAWYLUkjhw1/WpRl2R1BTb3m9qPG7lzMA7ioYff9jY5SPCfafKdxM4TIQGxXQlYGewQL16O68Q== - dependencies: - bn.js "^5.2.0" - "@cosmjs/math@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.32.4.tgz#87ac9eadc06696e30a30bdb562a495974bfd0a1a" @@ -1794,19 +1392,6 @@ dependencies: bn.js "^5.2.0" -"@cosmjs/proto-signing@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.29.5.tgz#af3b62a46c2c2f1d2327d678b13b7262db1fe87c" - integrity sha512-QRrS7CiKaoETdgIqvi/7JC2qCwCR7lnWaUsTzh/XfRy3McLkEd+cXbKAW3cygykv7IN0VAEIhZd2lyIfT8KwNA== - dependencies: - "@cosmjs/amino" "^0.29.5" - "@cosmjs/crypto" "^0.29.5" - "@cosmjs/encoding" "^0.29.5" - "@cosmjs/math" "^0.29.5" - "@cosmjs/utils" "^0.29.5" - cosmjs-types "^0.5.2" - long "^4.0.0" - "@cosmjs/proto-signing@^0.32.3", "@cosmjs/proto-signing@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.32.4.tgz#5a06e087c6d677439c8c9b25b5223d5e72c4cd93" @@ -1819,16 +1404,6 @@ "@cosmjs/utils" "^0.32.4" cosmjs-types "^0.9.0" -"@cosmjs/socket@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.29.5.tgz#a48df6b4c45dc6a6ef8e47232725dd4aa556ac2d" - integrity sha512-5VYDupIWbIXq3ftPV1LkS5Ya/T7Ol/AzWVhNxZ79hPe/mBfv1bGau/LqIYOm2zxGlgm9hBHOTmWGqNYDwr9LNQ== - dependencies: - "@cosmjs/stream" "^0.29.5" - isomorphic-ws "^4.0.1" - ws "^7" - xstream "^11.14.0" - "@cosmjs/socket@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.32.4.tgz#86ab6adf3a442314774c0810b7a7cfcddf4f2082" @@ -1839,24 +1414,6 @@ ws "^7" xstream "^11.14.0" -"@cosmjs/stargate@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.29.5.tgz#d597af1c85a3c2af7b5bdbec34d5d40692cc09e4" - integrity sha512-hjEv8UUlJruLrYGJcUZXM/CziaINOKwfVm2BoSdUnNTMxGvY/jC1ABHKeZUYt9oXHxEJ1n9+pDqzbKc8pT0nBw== - dependencies: - "@confio/ics23" "^0.6.8" - "@cosmjs/amino" "^0.29.5" - "@cosmjs/encoding" "^0.29.5" - "@cosmjs/math" "^0.29.5" - "@cosmjs/proto-signing" "^0.29.5" - "@cosmjs/stream" "^0.29.5" - "@cosmjs/tendermint-rpc" "^0.29.5" - "@cosmjs/utils" "^0.29.5" - cosmjs-types "^0.5.2" - long "^4.0.0" - protobufjs "~6.11.3" - xstream "^11.14.0" - "@cosmjs/stargate@^0.32.3", "@cosmjs/stargate@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.32.4.tgz#bd0e4d3bf613b629addbf5f875d3d3b50f640af1" @@ -1873,13 +1430,6 @@ cosmjs-types "^0.9.0" xstream "^11.14.0" -"@cosmjs/stream@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.29.5.tgz#350981cac496d04939b92ee793b9b19f44bc1d4e" - integrity sha512-TToTDWyH1p05GBtF0Y8jFw2C+4783ueDCmDyxOMM6EU82IqpmIbfwcdMOCAm0JhnyMh+ocdebbFvnX/sGKzRAA== - dependencies: - xstream "^11.14.0" - "@cosmjs/stream@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.32.4.tgz#83e1f2285807467c56d9ea0e1113f79d9fa63802" @@ -1887,22 +1437,6 @@ dependencies: xstream "^11.14.0" -"@cosmjs/tendermint-rpc@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.29.5.tgz#f205c10464212bdf843f91bb2e4a093b618cb5c2" - integrity sha512-ar80twieuAxsy0x2za/aO3kBr2DFPAXDmk2ikDbmkda+qqfXgl35l9CVAAjKRqd9d+cRvbQyb5M4wy6XQpEV6w== - dependencies: - "@cosmjs/crypto" "^0.29.5" - "@cosmjs/encoding" "^0.29.5" - "@cosmjs/json-rpc" "^0.29.5" - "@cosmjs/math" "^0.29.5" - "@cosmjs/socket" "^0.29.5" - "@cosmjs/stream" "^0.29.5" - "@cosmjs/utils" "^0.29.5" - axios "^0.21.2" - readonly-date "^1.0.0" - xstream "^11.14.0" - "@cosmjs/tendermint-rpc@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.4.tgz#b36f9ec657498e42c97e21bb7368798ef6279752" @@ -1919,20 +1453,15 @@ readonly-date "^1.0.0" xstream "^11.14.0" -"@cosmjs/utils@^0.29.5": - version "0.29.5" - resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.29.5.tgz#3fed1b3528ae8c5f1eb5d29b68755bebfd3294ee" - integrity sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ== - "@cosmjs/utils@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.32.4.tgz#a9a717c9fd7b1984d9cefdd0ef6c6f254060c671" integrity sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w== -"@cosmos-kit/core@^2.16.3": - version "2.16.3" - resolved "https://registry.yarnpkg.com/@cosmos-kit/core/-/core-2.16.3.tgz#587e6b3be8214402a57ea13292af6e43c0ac7fdd" - integrity sha512-tmLJYlE/94iv69Uz6HqPm9GUZSNW+9Ftiq3rXXMcQTVBS64dASJlS4PEWN7QZNr7nsYxQcyzlYxzsrc9g13Dqg== +"@cosmos-kit/core@^2.16.6": + version "2.16.6" + resolved "https://registry.yarnpkg.com/@cosmos-kit/core/-/core-2.16.6.tgz#329b502a37005eaee141bce5941b894e6a1f2d55" + integrity sha512-/mqCxzGE10/tJlDKzTVrpVIhM64llGDvifh6dHDneZFYdi8FKxhvzCIPXN7Blci4UfOtk0SVZvAQxN/ei+fqXg== dependencies: "@chain-registry/client" "^1.49.11" "@chain-registry/keplr" "^1.69.13" @@ -1950,67 +1479,34 @@ uuid "^9.0.1" "@cosmos-kit/keplr-extension@^2.14.0": - version "2.15.3" - resolved "https://registry.yarnpkg.com/@cosmos-kit/keplr-extension/-/keplr-extension-2.15.3.tgz#8325d77f99904008430f7e7a0712c6019b6efa1a" - integrity sha512-nKCJQIGVMHI+ZTEmeWsrQ89O0uMAfqEVJxmkaMWPJSgUmUOSso8miylo7oStHBqq3JAv+i7sZShei2lGRllNAA== + version "2.15.7" + resolved "https://registry.yarnpkg.com/@cosmos-kit/keplr-extension/-/keplr-extension-2.15.7.tgz#3d8058d29615492be687567999a0a7f9bbd0f55e" + integrity sha512-0PvrXelwWG4GTEuVTcRX/RT2TaQRGlY3H4LNpQrjIg4UgDuKA6zphw5bDq6/OsdsAbbdWSq1/MUYoc7TQjcf+A== dependencies: "@chain-registry/keplr" "^1.69.13" - "@cosmos-kit/core" "^2.16.3" + "@cosmos-kit/core" "^2.16.6" "@keplr-wallet/provider-extension" "^0.12.95" "@keplr-wallet/types" "^0.12.95" -"@cosmos-kit/react-lite@^2.16.3": - version "2.16.3" - resolved "https://registry.yarnpkg.com/@cosmos-kit/react-lite/-/react-lite-2.16.3.tgz#f1e214a582825424cefcecbf77a8d324f463ba29" - integrity sha512-v7rQvLZjjHtEL7eHwvoRpnXPS+dlmFXFaKJkX2HX1Xqo1gD3tQ+ULBxWLRX4fZiFAdbC1dTnJmP5e7UpEs6hhQ== +"@cosmos-kit/react-lite@^2.16.6": + version "2.16.6" + resolved "https://registry.yarnpkg.com/@cosmos-kit/react-lite/-/react-lite-2.16.6.tgz#ec89b00aa69e672a5592fc38b6b0a609fa368cbf" + integrity sha512-2B8fsYGmO1ZM1mBC2pQtSe/7gTxnoG55VePZ7ZeK0vAc19gjk0RQyMW5FhvLiMhikwUdTZzXopNHAx/XuQo5Vw== dependencies: "@chain-registry/types" "^0.46.11" - "@cosmos-kit/core" "^2.16.3" + "@cosmos-kit/core" "^2.16.6" "@dao-dao/cosmiframe" "^1.0.0" "@cosmos-kit/react@^2.20.1": - version "2.22.3" - resolved "https://registry.yarnpkg.com/@cosmos-kit/react/-/react-2.22.3.tgz#521ba3f7347f00d4d8c8e2642e395df4571022e2" - integrity sha512-rcSTmXzjGzDElA5ZsRnHs7CXZUu34ssRudw/Q3TgrqwWBmRTCWLPy+E5/6+y5Dz3vriVMxBUGE4u3RW+MDjiSg== + version "2.22.6" + resolved "https://registry.yarnpkg.com/@cosmos-kit/react/-/react-2.22.6.tgz#23afc83cd1a46afcb4635d1b2d920abea03b06b9" + integrity sha512-FdhGRempqw+/VKi7vxZAqwRsHlCWzBkSksgjNnay3swmHB6t6PY7b+pLlvIDmb9Br5A7JxthE4wthTRr87zEFw== dependencies: "@chain-registry/types" "^0.46.11" - "@cosmos-kit/core" "^2.16.3" - "@cosmos-kit/react-lite" "^2.16.3" + "@cosmos-kit/core" "^2.16.6" + "@cosmos-kit/react-lite" "^2.16.6" "@react-icons/all-files" "^4.1.0" -"@cosmwasm/ts-codegen@^0.35.3": - version "0.35.7" - resolved "https://registry.yarnpkg.com/@cosmwasm/ts-codegen/-/ts-codegen-0.35.7.tgz#b88c03b732824113fc765d560504516faca6f23b" - integrity sha512-qbOAYJPe5O5AjoWytZcsVvM0SBA39sMpiqnVIIgjJiqp4G4D5GjR2/UV3ePpygnIxxKZWMnOpPPUvLMjflblCw== - dependencies: - "@babel/core" "7.18.10" - "@babel/generator" "7.18.12" - "@babel/parser" "7.18.11" - "@babel/plugin-proposal-class-properties" "7.18.6" - "@babel/plugin-proposal-export-default-from" "7.18.10" - "@babel/plugin-proposal-object-rest-spread" "7.18.9" - "@babel/plugin-transform-runtime" "7.18.10" - "@babel/preset-env" "7.18.10" - "@babel/preset-typescript" "^7.18.6" - "@babel/runtime" "^7.18.9" - "@babel/traverse" "7.18.11" - "@babel/types" "7.18.10" - "@pyramation/json-schema-to-typescript" " 11.0.4" - case "1.6.3" - dargs "7.0.0" - deepmerge "4.2.2" - dotty "0.1.2" - fuzzy "0.1.3" - glob "8.0.3" - inquirerer "0.1.3" - long "^5.2.0" - minimist "1.2.6" - mkdirp "1.0.4" - parse-package-name "1.0.0" - rimraf "3.0.2" - shelljs "0.8.5" - wasm-ast-types "^0.26.4" - "@csstools/color-helpers@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.1.0.tgz#106c54c808cabfd1ab4c602d8505ee584c2996ef" @@ -2103,17 +1599,17 @@ integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@emnapi/core@^1.4.3": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.5.0.tgz#85cd84537ec989cebb2343606a1ee663ce4edaf0" - integrity sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg== + version "1.6.0" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.6.0.tgz#517f65d1c8270d5d5aa1aad660d5acb897430dca" + integrity sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg== dependencies: "@emnapi/wasi-threads" "1.1.0" tslib "^2.4.0" "@emnapi/runtime@^1.2.0", "@emnapi/runtime@^1.4.3": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.5.0.tgz#9aebfcb9b17195dce3ab53c86787a6b7d058db73" - integrity sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ== + version "1.6.0" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.6.0.tgz#8fe297e0090f6e89a57a1f31f1c440bdbc3c01d8" + integrity sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA== dependencies: tslib "^2.4.0" @@ -2169,7 +1665,7 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== -"@emotion/react@^11.11.1", "@emotion/react@^11.13.5", "@emotion/react@^11.7.0": +"@emotion/react@^11.13.5", "@emotion/react@^11.7.0": version "11.14.0" resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.14.0.tgz#cfaae35ebc67dd9ef4ea2e9acc6cd29e157dd05d" integrity sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA== @@ -2199,7 +1695,7 @@ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== -"@emotion/styled@^11.11.0", "@emotion/styled@^11.13.5", "@emotion/styled@^11.6.0": +"@emotion/styled@^11.13.5", "@emotion/styled@^11.6.0": version "11.14.1" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.14.1.tgz#8c34bed2948e83e1980370305614c20955aacd1c" integrity sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw== @@ -2239,24 +1735,9 @@ eslint-visitor-keys "^3.4.3" "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -2326,19 +1807,6 @@ "@ethersproject/bytes" "^5.8.0" "@ethersproject/logger" "^5.8.0" -"@favware/rollup-type-bundler@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@favware/rollup-type-bundler/-/rollup-type-bundler-2.0.0.tgz#5594ee64b40dc64eb02eb68a30943ff4255d25dd" - integrity sha512-RTMvx6v3b4D9V9iXHTogYjHa5fCmcUR3Bu0pFreo+80v2tD+7MSJm24nR1P/SkeTCy+zHKC1JOFQa04fcWZozg== - dependencies: - "@sapphire/utilities" "^3.11.0" - colorette "^2.0.19" - commander "^9.4.1" - js-yaml "^4.1.0" - rollup "^3.2.1" - rollup-plugin-dts "^5.0.0" - typescript "^4.8.4" - "@floating-ui/core@^1.6.7", "@floating-ui/core@^1.7.3": version "1.7.3" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.3.tgz#462d722f001e23e46d86fd2bd0d21b7693ccb8b7" @@ -2375,13 +1843,13 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c" integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== -"@formatjs/ecma402-abstract@2.3.4": - version "2.3.4" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.4.tgz#e90c5a846ba2b33d92bc400fdd709da588280fbc" - integrity sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA== +"@formatjs/ecma402-abstract@2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz#d6ca9d3579054fe1e1a0a0b5e872e0d64922e4e1" + integrity sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw== dependencies: "@formatjs/fast-memoize" "2.2.7" - "@formatjs/intl-localematcher" "0.6.1" + "@formatjs/intl-localematcher" "0.6.2" decimal.js "^10.4.3" tslib "^2.8.0" @@ -2392,27 +1860,27 @@ dependencies: tslib "^2.8.0" -"@formatjs/icu-messageformat-parser@2.11.2": - version "2.11.2" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.2.tgz#85aea211bea40aa81ee1d44ac7accc3cf5500a73" - integrity sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA== +"@formatjs/icu-messageformat-parser@2.11.4": + version "2.11.4" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz#63bd2cd82d08ae2bef55adeeb86486df68826f32" + integrity sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw== dependencies: - "@formatjs/ecma402-abstract" "2.3.4" - "@formatjs/icu-skeleton-parser" "1.8.14" + "@formatjs/ecma402-abstract" "2.3.6" + "@formatjs/icu-skeleton-parser" "1.8.16" tslib "^2.8.0" -"@formatjs/icu-skeleton-parser@1.8.14": - version "1.8.14" - resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.14.tgz#b9581d00363908efb29817fdffc32b79f41dabe5" - integrity sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ== +"@formatjs/icu-skeleton-parser@1.8.16": + version "1.8.16" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz#13f81f6845c7cf6599623006aacaf7d6b4ad2970" + integrity sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ== dependencies: - "@formatjs/ecma402-abstract" "2.3.4" + "@formatjs/ecma402-abstract" "2.3.6" tslib "^2.8.0" -"@formatjs/intl-localematcher@0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz#25dc30675320bf65a9d7f73876fc1e4064c0e299" - integrity sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg== +"@formatjs/intl-localematcher@0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz#e9ebe0b4082d7d48e5b2d753579fb7ece4eaefea" + integrity sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA== dependencies: tslib "^2.8.0" @@ -2452,25 +1920,11 @@ debug "^4.3.1" minimatch "^3.0.5" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - "@humanwhocodes/object-schema@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" @@ -2634,10 +2088,10 @@ react-stately "^3.32.2" zustand "^4.5.5" -"@internationalized/date@^3.9.0": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.9.0.tgz#cf241989b5dd07a2a9f1c91aabd2ad93968a0cc3" - integrity sha512-yaN3brAnHRD+4KyyOsJyk49XUvj2wtbNACSqg0bz3u8t2VuzhC8Q5dfRnrSxjnnbDb+ienBnkn1TzQfE154vyg== +"@internationalized/date@^3.10.0": + version "3.10.0" + resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.10.0.tgz#056db64a4facdf48c6937ad498a882a8151d640a" + integrity sha512-oxDR/NTEJ1k+UFVQElaNIk65E/Z83HK1z1WI3lQyhTtnNg4R5oVXaPzK3jcpKG8UHKDVuDQHzn+wsxSz8RP3aw== dependencies: "@swc/helpers" "^0.5.0" @@ -2715,18 +2169,6 @@ jest-util "^27.5.1" slash "^3.0.0" -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - "@jest/core@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" @@ -2761,40 +2203,6 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - "@jest/diff-sequences@30.0.1": version "30.0.1" resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be" @@ -2810,16 +2218,6 @@ "@types/node" "*" jest-mock "^27.5.1" -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - "@jest/expect-utils@30.2.0": version "30.2.0" resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.2.0.tgz#4f95413d4748454fdb17404bf1141827d15e6011" @@ -2827,28 +2225,6 @@ dependencies: "@jest/get-type" "30.1.0" -"@jest/expect-utils@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" - integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== - dependencies: - jest-get-type "^28.0.2" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - "@jest/fake-timers@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" @@ -2861,18 +2237,6 @@ jest-mock "^27.5.1" jest-util "^27.5.1" -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - "@jest/get-type@30.1.0": version "30.1.0" resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.1.0.tgz#4fcb4dc2ebcf0811be1c04fd1cb79c2dba431cbc" @@ -2887,16 +2251,6 @@ "@jest/types" "^27.5.1" expect "^27.5.1" -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - "@jest/pattern@30.0.1": version "30.0.1" resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.1.tgz#d5304147f49a052900b4b853dedb111d080e199f" @@ -2936,36 +2290,6 @@ terminal-link "^2.0.0" v8-to-istanbul "^8.1.0" -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - "@jest/schemas@30.0.5": version "30.0.5" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.5.tgz#7bdf69fc5a368a5abdb49fd91036c55225846473" @@ -2973,13 +2297,6 @@ dependencies: "@sinclair/typebox" "^0.34.0" -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== - dependencies: - "@sinclair/typebox" "^0.24.1" - "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" @@ -2996,15 +2313,6 @@ graceful-fs "^4.2.9" source-map "^0.6.0" -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - "@jest/test-result@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" @@ -3015,16 +2323,6 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - "@jest/test-sequencer@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" @@ -3035,37 +2333,6 @@ jest-haste-map "^27.5.1" jest-runtime "^27.5.1" -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" - integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.1" - "@jest/transform@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" @@ -3108,27 +2375,6 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - "@jest/types@30.2.0": version "30.2.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.2.0.tgz#1c678a7924b8f59eafd4c77d56b6d0ba976d62b8" @@ -3164,18 +2410,6 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" @@ -3188,7 +2422,7 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": version "0.3.13" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== @@ -3217,12 +2451,12 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" -"@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": version "1.5.5" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": version "0.3.31" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== @@ -3230,11 +2464,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@jsdevtools/ono@^7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" - integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== - "@keplr-wallet/common@0.12.28": version "0.12.28" resolved "https://registry.yarnpkg.com/@keplr-wallet/common/-/common-0.12.28.tgz#1d5d985070aced31a34a6426c9ac4b775081acca" @@ -3286,11 +2515,11 @@ protobufjs "^6.11.2" "@keplr-wallet/provider-extension@^0.12.95": - version "0.12.279" - resolved "https://registry.yarnpkg.com/@keplr-wallet/provider-extension/-/provider-extension-0.12.279.tgz#dfafd5b16c30fcf6bba4a73dbdf20f4699e43f20" - integrity sha512-OouzJ3ME9qlB27IE/OBKxkCPrQ2F2hZ0uBbtzIEwrIAShEtCq1wM3nZSSmAoufd5SZppnZzmdKmEle6I/PTTGQ== + version "0.12.282" + resolved "https://registry.yarnpkg.com/@keplr-wallet/provider-extension/-/provider-extension-0.12.282.tgz#e24b3bcd929249b153fc4f5e06285c788955eed2" + integrity sha512-X93arcvqh1Ep1pOc5XgQOs9cg1fqDU7lYhtNf4lyGv5Jv80qhtuWWIoduRzqWenXaWpsNSOGXrWiTRzDl4foqg== dependencies: - "@keplr-wallet/types" "0.12.279" + "@keplr-wallet/types" "0.12.282" deepmerge "^4.2.2" long "^4.0.0" uuid "^11.1.0" @@ -3300,13 +2529,6 @@ resolved "https://registry.yarnpkg.com/@keplr-wallet/simple-fetch/-/simple-fetch-0.12.28.tgz#44225df5b329c823076280df1ec9930a21b1373e" integrity sha512-T2CiKS2B5n0ZA7CWw0CA6qIAH0XYI1siE50MP+i+V0ZniCGBeL+BMcDw64vFJUcEH+1L5X4sDAzV37fQxGwllA== -"@keplr-wallet/types@0.12.279", "@keplr-wallet/types@^0.12.211", "@keplr-wallet/types@^0.12.95": - version "0.12.279" - resolved "https://registry.yarnpkg.com/@keplr-wallet/types/-/types-0.12.279.tgz#1a35453c71e9d68ea28a3532ea1f2fd0d19d37e7" - integrity sha512-MZuSzpFT5Bqr3BAjnWEIcVnvi9rEJtSONteCS7c3CBhMvCMmwJ96X+g+PKfwI4WodZdNXbUJa1+eat+3hgeoaw== - dependencies: - long "^4.0.0" - "@keplr-wallet/types@0.12.28": version "0.12.28" resolved "https://registry.yarnpkg.com/@keplr-wallet/types/-/types-0.12.28.tgz#eac3c2c9d4560856c5c403a87e67925992a04fbf" @@ -3314,6 +2536,13 @@ dependencies: long "^4.0.0" +"@keplr-wallet/types@0.12.282", "@keplr-wallet/types@^0.12.211", "@keplr-wallet/types@^0.12.95": + version "0.12.282" + resolved "https://registry.yarnpkg.com/@keplr-wallet/types/-/types-0.12.282.tgz#e761a60d443acaf90ca372ac18c139b2701f3c6a" + integrity sha512-ygbzBwyLKdQNpW1UijQfpC6prwGUsS+aYoF/X5bJl4R8mmFa6/E4SH2deBWYDCK2J88iERlKDon+Mxmu1eVskw== + dependencies: + long "^4.0.0" + "@keplr-wallet/unit@0.12.28": version "0.12.28" resolved "https://registry.yarnpkg.com/@keplr-wallet/unit/-/unit-0.12.28.tgz#907c7fa0b49a729cda207fca14fc0a38871cc6c4" @@ -3408,48 +2637,6 @@ yargs "16.2.0" yargs-parser "20.2.4" -"@lezer/common@^1.0.0": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.3.tgz#138fcddab157d83da557554851017c6c1e5667fd" - integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA== - -"@lezer/lr@^1.0.0": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.2.tgz#931ea3dea8e9de84e90781001dae30dea9ff1727" - integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA== - dependencies: - "@lezer/common" "^1.0.0" - -"@lmdb/lmdb-darwin-arm64@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz#895d8cb16a9d709ce5fedd8b60022903b875e08e" - integrity sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw== - -"@lmdb/lmdb-darwin-x64@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz#ca243534c8b37d5516c557e4624256d18dd63184" - integrity sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug== - -"@lmdb/lmdb-linux-arm64@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz#b44a8023057e21512eefb9f6120096843b531c1e" - integrity sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww== - -"@lmdb/lmdb-linux-arm@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz#17bd54740779c3e4324e78e8f747c21416a84b3d" - integrity sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg== - -"@lmdb/lmdb-linux-x64@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz#6c61835b6cc58efdf79dbd5e8c72a38300a90302" - integrity sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ== - -"@lmdb/lmdb-win32-x64@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz#8233e8762440b0f4632c47a09b1b6f23de8b934c" - integrity sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ== - "@mdx-js/mdx@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" @@ -3485,15 +2672,6 @@ resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== -"@mischnic/json-sourcemap@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906" - integrity sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w== - dependencies: - "@lezer/common" "^1.0.0" - "@lezer/lr" "^1.0.0" - json5 "^2.2.1" - "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -3502,36 +2680,6 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz#9edec61b22c3082018a79f6d1c30289ddf3d9d11" - integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== - -"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz#33677a275204898ad8acbf62734fc4dc0b6a4855" - integrity sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw== - -"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz#19edf7cdc2e7063ee328403c1d895a86dd28f4bb" - integrity sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg== - -"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz#94fb0543ba2e28766c3fc439cabbe0440ae70159" - integrity sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw== - -"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz#4a0609ab5fe44d07c9c60a11e4484d3c38bbd6e3" - integrity sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg== - -"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242" - integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ== - "@mui/base@5.0.0-beta.40": version "5.0.0-beta.40" resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.40.tgz#1f8a782f1fbf3f84a961e954c8176b187de3dae2" @@ -3545,19 +2693,6 @@ clsx "^2.1.0" prop-types "^15.8.1" -"@mui/base@5.0.0-beta.40-1": - version "5.0.0-beta.40-1" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.40-1.tgz#6da6229e5e675e811f319149f6e29d7a77522851" - integrity sha512-agKXuNNy0bHUmeU7pNmoZwNFr7Hiyhojkb9+2PVyDG5+6RafYuyMgbrav8CndsB7KUc/U51JAw9vKNDLYBzaUA== - dependencies: - "@babel/runtime" "^7.23.9" - "@floating-ui/react-dom" "^2.0.8" - "@mui/types" "~7.2.15" - "@mui/utils" "^5.17.1" - "@popperjs/core" "^2.11.8" - clsx "^2.1.0" - prop-types "^15.8.1" - "@mui/core-downloads-tracker@^5.18.0": version "5.18.0" resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.18.0.tgz#85019a8704b0f63305fc5600635ee663810f2b66" @@ -3568,7 +2703,7 @@ resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-6.5.0.tgz#e9f7049d7e7bb1ee05839f7a0ce813755f137432" integrity sha512-LGb8t8i6M2ZtS3Drn3GbTI1DVhDY6FJ9crEey2lZ0aN2EMZo8IZBZj9wRf4vqbZHaWjsYgtbOnJw5V8UWbmK2Q== -"@mui/icons-material@^5.14.0", "@mui/icons-material@^5.16.11", "@mui/icons-material@^5.2.0", "@mui/icons-material@^5.5.0": +"@mui/icons-material@^5.16.11", "@mui/icons-material@^5.2.0": version "5.18.0" resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.18.0.tgz#97d87f1b7bee5fa7b9ba844518631de3112c1e57" integrity sha512-1s0vEZj5XFXDMmz3Arl/R7IncFqJ+WQ95LDp1roHWGDE2oCO3IS4/hmiOv1/8SD9r6B7tv9GLiqVZYHo+6PkTg== @@ -3588,19 +2723,6 @@ clsx "^2.1.0" prop-types "^15.8.1" -"@mui/lab@^5.0.0-alpha.72": - version "5.0.0-alpha.177" - resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.177.tgz#a02f43b36d7e204166706f2c27640f378e3d7c88" - integrity sha512-bdCxxtNjlWAgN9rtrwlmFydJ1qxA3IIbb6OlomGFsIXw0zGoHomLyjvh72q/R3yUAC0kvSef18cHY1UalLylyQ== - dependencies: - "@babel/runtime" "^7.23.9" - "@mui/base" "5.0.0-beta.40-1" - "@mui/system" "^5.18.0" - "@mui/types" "~7.2.15" - "@mui/utils" "^5.17.1" - clsx "^2.1.0" - prop-types "^15.8.1" - "@mui/material-nextjs@^6.1.9": version "6.5.0" resolved "https://registry.yarnpkg.com/@mui/material-nextjs/-/material-nextjs-6.5.0.tgz#740993e8175c27e4dd7bd8cec2c1a17e49081d5e" @@ -3608,7 +2730,7 @@ dependencies: "@babel/runtime" "^7.26.0" -"@mui/material@^5.0.1", "@mui/material@^5.14.0", "@mui/material@^5.2.2": +"@mui/material@^5.2.2": version "5.18.0" resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.18.0.tgz#71e72d52338252edc6f8d9461e04fdf0d61905cd" integrity sha512-bbH/HaJZpFtXGvWg3TsBWG4eyt3gah3E7nCNU8GLyRjVoWcA91Vm/T+sjHfUcwgJSw9iLtucfHBoq+qW/T30aA== @@ -3685,7 +2807,7 @@ csstype "^3.1.3" prop-types "^15.8.1" -"@mui/styles@^5.0.1", "@mui/styles@^5.2.2": +"@mui/styles@^5.2.2": version "5.18.0" resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.18.0.tgz#e70330282e2c64880cc5f36f3fd9fa94257177d5" integrity sha512-GDgFUfl2MMN8iGrYTuhJ0hHRoja2kVOlXnHb5d3BBQCHFxOBaAPDKQxaNkoAwRf/vBhhwXWDsJA2XlkNHUPBgA== @@ -4203,64 +3325,15 @@ resolved "https://registry.yarnpkg.com/@nymproject/contract-clients/-/contract-clients-1.4.1.tgz#ae2644387b518eb13e8825fa8021d4c81ffe7852" integrity sha512-HuJZ4Hv+Rl6ZZEtCHKgurNLJapM+QQRJlGkevFH2a4UdqUqF9omUkUi3AVes4679dPoSFgvA7plyVSDBdbgV6w== -"@nymproject/contract-clients@file:sdk/typescript/codegen/contract-clients": - version "1.3.0-rc.0" +"@nymproject/mix-fetch@>=1.4.1-rc1 || ^1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@nymproject/mix-fetch/-/mix-fetch-1.4.1.tgz#6a923b40e09c4a571fb947297a3afd41cd2d5ea6" + integrity sha512-FN5UeCkje6fauCt2pd8kFGFYXj2kaNewEJVKRLWzI2/suxD+J2bmg/YvXBGLWMWglXNA3+YFHA/1Vjh6OGtgig== -"@nymproject/mix-fetch-node-commonjs@^1.2.1-rc.2": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@nymproject/mix-fetch-node-commonjs/-/mix-fetch-node-commonjs-1.2.3.tgz#9c917cafb6c3d0dcc87a427e1d1c7193a12fb986" - integrity sha512-3U4XGWExDcG6J1RO57zvdqlWEtN5JO5ZQO2L+cBlJIWLJPo/tbNkgp1yT3Yp25AiVqXMFzyTByn6kMsAPASD0A== - -"@nymproject/mix-fetch-wasm-node@>=1.2.4-rc.2 || ^1": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@nymproject/mix-fetch-wasm-node/-/mix-fetch-wasm-node-1.2.3.tgz#f600df714782e6eb691faa14683e44c2507a8e53" - integrity sha512-J9mj52WSpsGpuCeW65zEj8RWJ3GvWG0VqVWIDD6w1RK4SesXiGb7ghD7F1rChRMlSbl9rP9reYkmAHz63Sb6Cw== - -"@nymproject/mix-fetch-wasm@>=1.2.4-rc.2 || ^1": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@nymproject/mix-fetch-wasm/-/mix-fetch-wasm-1.2.3.tgz#5ac168896483331bcbe342738534dd8b1da4364f" - integrity sha512-LQ19t2MmaV2kaPXjzXYbLn0KCIdn4G1UWDE8p+oS2MI0cxw5cdwrqAJu91NV6Bl/B7ViqHRZH+XqvlM/xG1iHQ== - -"@nymproject/mix-fetch@>=1.2.2-rc.0 || ^1": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@nymproject/mix-fetch/-/mix-fetch-1.2.3.tgz#50eaf3243fc383758f3438fecf640650c722b641" - integrity sha512-SuzsO9p+DIXIwiBSLEXoYw8Dpmxjpc7MINE/2O2l9nHasUulYN4Ea1h8jJMX7i6jG0KSyqc5Hf5fFWxpLmUPyw== - -"@nymproject/node-tester@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@nymproject/node-tester/-/node-tester-1.2.3.tgz#79fbde8b69e2d1180eed897557c4610a1aa1038f" - integrity sha512-VDFdH2ddIcXXamwkMbeHA88Xa/S2iPWh9QxkFggppvHS1d6gmnNHAZxXm3Uuhx7pCpzKldA0OT7qohMg9GW9xg== - -"@nymproject/nym-client-wasm-node@>=1.2.4-rc.2 || ^1": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@nymproject/nym-client-wasm-node/-/nym-client-wasm-node-1.2.3.tgz#e75e234714494fafffb86115cdee6759dcede366" - integrity sha512-fUGld4MJOgnvyqk5/KIpFePIXn8Nsl/7T/jh9a9WdTWntECnnJ/DBqoO+6NzDkyXaLYhByqR7reO8ZApNR0YCw== - -"@nymproject/nym-client-wasm@>=1.2.4-rc.2 || ^1": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@nymproject/nym-client-wasm/-/nym-client-wasm-1.2.3.tgz#cf5f74dfa012befc3bd661867ba9c721955d70a5" - integrity sha512-EqUxOhgpGXKQs8oUCpezOvpt0d/g/kMzOcOBp8Z2/yTNFK8Zkf9qTmhecpR/gmMPeTRdtRq/YE1iQdeOTDW/MQ== - -"@nymproject/nym-node-tester-wasm@>=1.2.4-rc.2 || ^1": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@nymproject/nym-node-tester-wasm/-/nym-node-tester-wasm-1.2.3.tgz#c7bfe705afca51bed59de22ed9c411c35e85ea6c" - integrity sha512-V6jomTQKEfFOeiht+nD/UzCUVouFrDLGBaYg+zXcISE4JE3Hg7dNKRXOMxImjdsb3gRGSZkPGtPGst6tKBKyHg== - -"@nymproject/sdk-react@file:sdk/typescript/packages/sdk-react": - version "1.4.0-rc.0" - dependencies: - "@nymproject/sdk" ">=1.2.2-rc.0 || ^1" - -"@nymproject/sdk@>=1.2.2-rc.0 || ^1": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@nymproject/sdk/-/sdk-1.2.3.tgz#b7a0abc478b124a362a11960d16c62312153c823" - integrity sha512-HTxwTD1O4TT+C+Uz/JOmXmORnPen7R2upIxoYiohIDICt3OnhtOrMHHfIBRrq2dliKbysaKoxy19PJZRuJ4N+Q== - -"@nymproject/sdk@file:sdk/typescript/packages/sdk": - version "1.4.0-rc.0" - dependencies: - "@nymproject/nym-client-wasm" ">=1.2.4-rc.2 || ^1" - comlink "^4.3.1" +"@nymproject/node-tester@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@nymproject/node-tester/-/node-tester-1.3.1.tgz#605a82c4a3c251a45279043f20fef5583de6c84b" + integrity sha512-JDFsNF84737cynclIYu8y6/MawrLFSiauHeh3dlyJCnY0FBTBRxq/8tN/2QtuaJQf/CvtcfKRH5QoYnCmg+wpQ== "@octokit/auth-token@^3.0.0": version "3.0.4" @@ -4378,697 +3451,6 @@ dependencies: "@octokit/openapi-types" "^18.0.0" -"@parcel/bundler-default@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.16.0.tgz#e4cad2143891f85a874e001736348a66b08d71c5" - integrity sha512-8kY+TUhir7qm+TgSMeMd8CP2PVoZjXamiZ8+mbXws4jKw6IrIVDQf8TkBZKGk7ncKJEteiX4ybbmiPjho8cHuA== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/graph" "3.6.0" - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/utils" "2.16.0" - nullthrows "^1.1.1" - -"@parcel/cache@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.16.0.tgz#15d94f879167191736345f6838f17c4d6deab6f2" - integrity sha512-stBGOio+z2qjnSJNl1vJTNqjgLyzDFp+tUOKgaLJ8Vmn67jYccoGLTNApw2mhB3HtQuoz/5eudGHSvhqMpMyTg== - dependencies: - "@parcel/fs" "2.16.0" - "@parcel/logger" "2.16.0" - "@parcel/utils" "2.16.0" - lmdb "2.8.5" - -"@parcel/codeframe@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.16.0.tgz#0e00004565f7a572fc6a1b42d3aa9e40852fa0f1" - integrity sha512-wXpHOOE5o0c55AiUMCwkIrVCFeJzBfZpjhn07WQUUk57gGts5R67bMsoeoizvBhI748l6iSU7rPZSSrXc8NoRg== - dependencies: - chalk "^4.1.2" - -"@parcel/compressor-raw@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.16.0.tgz#7375f1e2e41605b55fdca491a8a5d4b4348507da" - integrity sha512-tl8/iCPlInfD3YLo1s/kA9/o7XdrYNBuGsAj4VOFqplH+2FINb48XPzp7Z4VGOB2q8qokt2gohTGfuNPGIX2pw== - dependencies: - "@parcel/plugin" "2.16.0" - -"@parcel/config-default@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.16.0.tgz#fbebfe5176a839c8388a69a9d615ba8b3a714782" - integrity sha512-az5gWXyztHekV1Dpz3nNT3iz5SqHh2924XCb2w+VyNDtnLhLNQ+X7NJd0na+EbWd9KBJYEdVYDPVDy1bEei0lQ== - dependencies: - "@parcel/bundler-default" "2.16.0" - "@parcel/compressor-raw" "2.16.0" - "@parcel/namer-default" "2.16.0" - "@parcel/optimizer-css" "2.16.0" - "@parcel/optimizer-html" "2.16.0" - "@parcel/optimizer-image" "2.16.0" - "@parcel/optimizer-svg" "2.16.0" - "@parcel/optimizer-swc" "2.16.0" - "@parcel/packager-css" "2.16.0" - "@parcel/packager-html" "2.16.0" - "@parcel/packager-js" "2.16.0" - "@parcel/packager-raw" "2.16.0" - "@parcel/packager-svg" "2.16.0" - "@parcel/packager-wasm" "2.16.0" - "@parcel/reporter-dev-server" "2.16.0" - "@parcel/resolver-default" "2.16.0" - "@parcel/runtime-browser-hmr" "2.16.0" - "@parcel/runtime-js" "2.16.0" - "@parcel/runtime-rsc" "2.16.0" - "@parcel/runtime-service-worker" "2.16.0" - "@parcel/transformer-babel" "2.16.0" - "@parcel/transformer-css" "2.16.0" - "@parcel/transformer-html" "2.16.0" - "@parcel/transformer-image" "2.16.0" - "@parcel/transformer-js" "2.16.0" - "@parcel/transformer-json" "2.16.0" - "@parcel/transformer-node" "2.16.0" - "@parcel/transformer-postcss" "2.16.0" - "@parcel/transformer-posthtml" "2.16.0" - "@parcel/transformer-raw" "2.16.0" - "@parcel/transformer-react-refresh-wrap" "2.16.0" - "@parcel/transformer-svg" "2.16.0" - -"@parcel/core@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.16.0.tgz#8704402887017e41754879174d2af65f94655f26" - integrity sha512-erH9GdLe8Boie0mCO8hXn8Qt/pCACsOFlKp8UHNMlPaizUtCDkCOQqwmSi+VyrJ3dMMCOc/qBwTSGAJaJE8/Kw== - dependencies: - "@mischnic/json-sourcemap" "^0.1.1" - "@parcel/cache" "2.16.0" - "@parcel/diagnostic" "2.16.0" - "@parcel/events" "2.16.0" - "@parcel/feature-flags" "2.16.0" - "@parcel/fs" "2.16.0" - "@parcel/graph" "3.6.0" - "@parcel/logger" "2.16.0" - "@parcel/package-manager" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/profiler" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/source-map" "^2.1.1" - "@parcel/types" "2.16.0" - "@parcel/utils" "2.16.0" - "@parcel/workers" "2.16.0" - base-x "^3.0.11" - browserslist "^4.24.5" - clone "^2.1.2" - dotenv "^16.5.0" - dotenv-expand "^11.0.7" - json5 "^2.2.3" - msgpackr "^1.11.2" - nullthrows "^1.1.1" - semver "^7.7.1" - -"@parcel/diagnostic@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.16.0.tgz#313e7a94ec0d2d856e604c96fa5c48c6b04fb0dc" - integrity sha512-z5MeMwFegaA23wseltLykVV9OxsKkY3BiEje/Dt7ttVivwNWFKHDuXB8vbZTDArUooixUH3s/RJhTFI46VJc2A== - dependencies: - "@mischnic/json-sourcemap" "^0.1.1" - nullthrows "^1.1.1" - -"@parcel/error-overlay@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/error-overlay/-/error-overlay-2.16.0.tgz#66d50062f432bd8213b51615ecc778cecbf8f855" - integrity sha512-ZcXOZc548Tjms0z7uaE4iUKHul32CpX5dCnEdum9PExxCLNCCxm4JgoO+dWeZXjNQDi8Opz9N3GU4wnF7WVzhg== - -"@parcel/events@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.16.0.tgz#a1f17bfa4402b84d732bd21b408a3d9ee1e968b3" - integrity sha512-PI7dryJLPYCe4jNzo7XWAzbUPUuD50Nd76GTdzaHhmcQfZnPrtWAu73UmP3yYqpbv97TtWSiCJyrJWPTDU/REA== - -"@parcel/feature-flags@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/feature-flags/-/feature-flags-2.16.0.tgz#76e0bd00ef7faa7ebf1eb52ed41b08bb1b3637ea" - integrity sha512-GiRpLx0x8dZdWCpftk6OE0lp0Cc8oUyBssPiobigpSA8vgxrCz/zLbs83R/K70p+wPBb+ye4eEiR67+KCwcSXg== - -"@parcel/fs@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.16.0.tgz#ea9c2c4ef90005fdb5ead69be596af489a9cb18e" - integrity sha512-nRp4BhJm1V8tPu68WjRvu5kbBjTwWXYzqwpGoWwHFmZQQ2J1/Ye28x1NY3awxSVGyXsEy2sEO4s7rLyd0EW2pA== - dependencies: - "@parcel/feature-flags" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/types-internal" "2.16.0" - "@parcel/utils" "2.16.0" - "@parcel/watcher" "^2.0.7" - "@parcel/workers" "2.16.0" - -"@parcel/graph@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-3.6.0.tgz#1211bdd7edf860bebc7e1d2aad9f54d15ae2bae4" - integrity sha512-ShxOzS0FdyXJ7gwit7CSPuQCbU0bXkB+kZyrXgj0UmgIDYDMYO02T+UIlH4AReEzqcZq3An+sDOx+UKRM8j8Uw== - dependencies: - "@parcel/feature-flags" "2.16.0" - nullthrows "^1.1.1" - -"@parcel/logger@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.16.0.tgz#bde4615d869a581de5acd5ccec275456b3541a54" - integrity sha512-/K6UVVCtS1KOkH9xxuH9u2xV3348mb+Fb33K/OUs5wnpfmo0TtrzodjLyMpQG6KrofmYKSNzA5petp7+cf3aug== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/events" "2.16.0" - -"@parcel/markdown-ansi@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.16.0.tgz#37c9826a67390d6b0bb8d04091d8ce5b03d32629" - integrity sha512-NxlmF/JAmsq9Yf/8q2+WEHFkcQ/cDoVOUx6ETDM8icDaQ8kXJbZSKAMOWnsB1EF0757UST77kX9zw/V6tyXqnw== - dependencies: - chalk "^4.1.2" - -"@parcel/namer-default@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.16.0.tgz#c4c6a6153b24722ae30a3dacdcecacd67ffc15ad" - integrity sha512-pRb6Bz32Xl65CZ1LzKAa8ADGyPyrJ724tq2IToqH5JQ8bFGNXF7Tg/qrv582CjHS5dJb/HB7LizfWaliHiG5DA== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - nullthrows "^1.1.1" - -"@parcel/node-resolver-core@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-3.7.0.tgz#ac76d222dc0a570ca142c4ee0c1d61a6f92104c9" - integrity sha512-YIK7wtjO7biRoXNRdFR0uSYPY0FwvCA77xlJCOTX1+jeACj8BPwLKOMFJKCA89pBr7iHyTNzZ3ppVGsX8flMag== - dependencies: - "@mischnic/json-sourcemap" "^0.1.1" - "@parcel/diagnostic" "2.16.0" - "@parcel/fs" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/utils" "2.16.0" - nullthrows "^1.1.1" - semver "^7.7.1" - -"@parcel/optimizer-css@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.16.0.tgz#63b3ffe09da5ed17875d816efb1635994b4c3eef" - integrity sha512-QTrMOVknU4DmKzmnTxQx69ZZxoDYyTIWhpflDLSvUaLSXk2yi0SMBMcsEdA0W4bhORn6nj8toGwi04vbGVuQtA== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.16.0" - browserslist "^4.24.5" - lightningcss "^1.30.1" - nullthrows "^1.1.1" - -"@parcel/optimizer-html@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-html/-/optimizer-html-2.16.0.tgz#36d99ba3d142996aa92711e12a388c2271f6fb4c" - integrity sha512-T8VvsdCwLb/l3a/eHF2lJfeGO6Z4znKjvnBAvtyLwtFVVNnJasJLo9Cuan4bcnVM8etzbxjg1Qs/9c1hzWsBYg== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/utils" "2.16.0" - -"@parcel/optimizer-image@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.16.0.tgz#38ebe9e2ce12cb14b352692185dcde1884bf260f" - integrity sha512-CVAitXbtKfVxxmOjieeI/YSwSFKx+In3MjP4jFpuYwgDT0TsgsyweBkADQMfEcBjeIPiCXLzzf/GSVIDY7hgwA== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/utils" "2.16.0" - "@parcel/workers" "2.16.0" - -"@parcel/optimizer-svg@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-svg/-/optimizer-svg-2.16.0.tgz#cc313395043e5e701a949230583e52c8d8f6072f" - integrity sha512-fx9VK28bXaFz0dWs3rIOQM0t8nAWXE62o4JIcIAZND5/6ij1y4/Fap791agvH4SKxNPFu/a/KEmF50SRfcSwkw== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/utils" "2.16.0" - -"@parcel/optimizer-swc@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-swc/-/optimizer-swc-2.16.0.tgz#c002218c319f209d22ebd91490bcad6caefe27b7" - integrity sha512-AwakRkMBzDWNrXbm5eJtuBvjCSyp6J730MCltZtiSWLtFbvkXMCt1BQ6Ug91NHq/zA2HTo3RYh96wTMRSRQa2w== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.16.0" - "@swc/core" "^1.11.24" - nullthrows "^1.1.1" - -"@parcel/package-manager@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.16.0.tgz#0d7f21a9a6e920753858703123217047aef56f8a" - integrity sha512-YDOLTcDFYJn3VeEYktO8Yrpw+kaWsLGHOUhPPrw3uaQsqNPi4wIRMsuhcFa9fAL5OlFX56I9iD/yciUiULOFXw== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/fs" "2.16.0" - "@parcel/logger" "2.16.0" - "@parcel/node-resolver-core" "3.7.0" - "@parcel/types" "2.16.0" - "@parcel/utils" "2.16.0" - "@parcel/workers" "2.16.0" - "@swc/core" "^1.11.24" - semver "^7.7.1" - -"@parcel/packager-css@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.16.0.tgz#92f1228770750e9798e08e6cd880cc8f4c7b36c7" - integrity sha512-T36uCm/RUZ6h33O8NsjOoTH0if/FWyXuBWenVeQgQZrlYR+wZBsZSV8CElBMCmrFJ5BdSG1RybXPwvkATpJeig== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.16.0" - lightningcss "^1.30.1" - nullthrows "^1.1.1" - -"@parcel/packager-html@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.16.0.tgz#70d453adfb3aaaf9a0d0504aec275ad7b97d34a6" - integrity sha512-d9NBtvJAGM8shnLfwDwF0VMP5P2F5Euvjbrv4FaqbivypzDBhjalE+EnC6eGtLNTCTg9o1CxxZmsTC/FVdu2yQ== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/types" "2.16.0" - "@parcel/utils" "2.16.0" - -"@parcel/packager-js@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.16.0.tgz#3e72d4adc1906ea09c17e9f15cad64a6b6594294" - integrity sha512-2YHeFFFsh8KSqlfMfGVlAsDjwHZkGp99GRN+WnGAHlYzmDODve92yb94d5Zs22cDRzP6v/E5NMTYWu1dlUg/Wg== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/source-map" "^2.1.1" - "@parcel/types" "2.16.0" - "@parcel/utils" "2.16.0" - globals "^13.24.0" - nullthrows "^1.1.1" - -"@parcel/packager-raw@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.16.0.tgz#07e6c36c9ca05cde02a45f2fa4b943355c418593" - integrity sha512-jY/t/PXpNTK6EwLBSTJPGTB8FYmhqHtj4Am/JVQkJkxgB8h8diivxsReZYNfDt9J9pVxSk+lcZCdOZXf1ZtmWw== - dependencies: - "@parcel/plugin" "2.16.0" - -"@parcel/packager-svg@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.16.0.tgz#a5ba481921c91af0acb4a79eda6dbe199aabb37c" - integrity sha512-NVmpVjRe2Lr7htrxsscy4ExSRUN+YiMvPmxp9ZxoDnrGerqa66B5/Rh7HOhx7Vo9wuH5LCpFAWYhgkhXH6qrqQ== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/types" "2.16.0" - "@parcel/utils" "2.16.0" - -"@parcel/packager-wasm@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-wasm/-/packager-wasm-2.16.0.tgz#ad9deee4869eeaa647c27391ac61eefe44f9b743" - integrity sha512-r+oCqaFfUB1f6CEQyWbkAjwfGrt2flNA3JguBJ8zCyDrx3fWI+isYufg2CP92ZJyOBTIU63iCi88YgcMLynL1g== - dependencies: - "@parcel/plugin" "2.16.0" - -"@parcel/plugin@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.16.0.tgz#7e80d2c5d562daf7a938f1006d4f2d34498bc0c8" - integrity sha512-Rdk5e/VGmMp6s2DmC0AbjWYmea3Vv8Tx1SC5ln+lf+qRlhndrbFV9o5QKirTY9C8GWd20qH1ZqOxPDEzK/YSGA== - dependencies: - "@parcel/types" "2.16.0" - -"@parcel/profiler@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/profiler/-/profiler-2.16.0.tgz#a408e9fd38ddcfaeec258e5cc77850a029859386" - integrity sha512-xm6fVTA1V/Co7JuJfkNtZJsKsvq0RSpoE7JjiNtKLCMh+Lim6w7dxc6CEBqGImhR/9YbwteY6/gVFwkvCdLvLg== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/events" "2.16.0" - "@parcel/types-internal" "2.16.0" - chrome-trace-event "^1.0.2" - -"@parcel/reporter-cli@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.16.0.tgz#603ad4287646cf1b6c8603648baf9bf4e15c5769" - integrity sha512-76U06/aSGTO8UTEBJb+tIvNAH/2aOfWVTsP4QQym//Lf8fmXJnLaCDsJmiNAXjW44rnzjNQ7qzRrbwH7W5u7FA== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/types" "2.16.0" - "@parcel/utils" "2.16.0" - chalk "^4.1.2" - term-size "^2.2.1" - -"@parcel/reporter-dev-server@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.16.0.tgz#3838fcce3aaa32ad0fa03f7475f5a044354dbbb7" - integrity sha512-n5XXh1S/oMQ8ItSm/nG5sPFb+1WBZPGtvDUd8gxvmO8lfZ7fo53l0TS5KshMvNqx0F208Erwi+/II78piqCrYA== - dependencies: - "@parcel/codeframe" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.16.0" - -"@parcel/reporter-tracer@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-tracer/-/reporter-tracer-2.16.0.tgz#7814324c53d664b26f042921db3a2d3aed6c03e8" - integrity sha512-OHNQiz9c2F7nak8ztkuK+9ui9e5f9Qz5uEYPNHssyEIj4zLeenhnFEVSzUVXJdrqY0A3+xE8bFuQLi+PS+nbFQ== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/utils" "2.16.0" - chrome-trace-event "^1.0.3" - nullthrows "^1.1.1" - -"@parcel/resolver-default@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.16.0.tgz#10f39144bfdf5f08890ac0f64998e91bd63706b7" - integrity sha512-HvzVXPn8j/ElbNkqAHa7wHOzqCWTwAEv4pWJVnguuqL9m7ZC2INDsp3XJR1LOA5UqBYRhkBrvWK69v4sA21a9w== - dependencies: - "@parcel/node-resolver-core" "3.7.0" - "@parcel/plugin" "2.16.0" - -"@parcel/runtime-browser-hmr@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.16.0.tgz#a79605f93345ee193dce83c267577ad456501bc4" - integrity sha512-tRPoFwUVtzE7ufOtIr1CHdh8SH3772FI1JlFCV0//tEWbj9iSk1bcK0g05Yj4dW4hW2SjqTcVo59Kw50Zeh7/Q== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/utils" "2.16.0" - -"@parcel/runtime-js@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.16.0.tgz#aabed946200721af85a47381a2e6f7736733b396" - integrity sha512-othbtwC7AG3SnDkzGpRXEwsY2/+INydJXSORogTEN/GSUQyci606pTfuU/eF9D22wVDdaVSYUhhJPTDdxksu9w== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/utils" "2.16.0" - nullthrows "^1.1.1" - -"@parcel/runtime-rsc@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-rsc/-/runtime-rsc-2.16.0.tgz#f24378eda61b16b00b0fda1ca632ac3f3a5b4d4c" - integrity sha512-5T+mNRrsA9zxkbdaV4rxqRc7CJP77/oNpajDPWcBWDELM8q42be0Sr5zYoAG28jcnQBf88u2rqPVpNtNxoM/ZA== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/utils" "2.16.0" - nullthrows "^1.1.1" - -"@parcel/runtime-service-worker@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.16.0.tgz#ddf3546faa1ef5ab235d2efc5d1686f4c6f37376" - integrity sha512-YOkWJbY08IiUXUSudPwJXJKn7CycTCSzsfbhdG+bhvVdPWGv7DpMoPDSq3IL9/99JZe7iXcOnibxCmoJqZA6WQ== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/utils" "2.16.0" - nullthrows "^1.1.1" - -"@parcel/rust-darwin-arm64@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/rust-darwin-arm64/-/rust-darwin-arm64-2.16.0.tgz#e624187ef241c4b3f9a41fc42f289d5de08ead3f" - integrity sha512-rdNl1jq34VflBzduQjcOH9SBJPW+Dy1w5XL7hQ5OEAOkRTP1/3mvh98iVYeB3e+RMjRNE/Ipn/rz2KXXku6e6g== - -"@parcel/rust-darwin-x64@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/rust-darwin-x64/-/rust-darwin-x64-2.16.0.tgz#546f4a3d43f9fdda6331590c22d7681d90f29540" - integrity sha512-tozUnjBPfnCjk6HVZCUKNdgFWw4WsLRTJdnsTYBIERrfj858VN0rdOGlVesLFYNSUquoAO+aHtRdT/JqYW7ozA== - -"@parcel/rust-linux-arm-gnueabihf@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/rust-linux-arm-gnueabihf/-/rust-linux-arm-gnueabihf-2.16.0.tgz#a1f63d5ef852d11b8a6053a287c33a2bb17e315a" - integrity sha512-FX/XrQm5BkLfHHBsUA1t7tYGTkNN4vr/t9ZuADUQCWng+m8g7BB78zWxkjoqayn5zTJAfjjQp42lSZzahtT59A== - -"@parcel/rust-linux-arm64-gnu@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/rust-linux-arm64-gnu/-/rust-linux-arm64-gnu-2.16.0.tgz#b1e5e06491cf00e7a9e219e1e6975c7dd5480eda" - integrity sha512-zmnWuclEQDQMhbB8jQw9f1VbnSs6EB2RApg16qs5Co/dhZVozMwJngdkZ6mq5aW8ut+PKYrxIPcVsm7WtVOOfg== - -"@parcel/rust-linux-arm64-musl@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/rust-linux-arm64-musl/-/rust-linux-arm64-musl-2.16.0.tgz#7d5b05708737ed24260fd5d1688c04ee1ccc240c" - integrity sha512-bL3PzFEg0azmdFaf34yHAXukk2MjNSuiITPVOj9Cq65qAk7lb4+9nuGIwrCMr1+R1yCamrL31GgG61qp0X97xg== - -"@parcel/rust-linux-x64-gnu@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/rust-linux-x64-gnu/-/rust-linux-x64-gnu-2.16.0.tgz#329d85282dd7d26da89bd8c3737b263ca025b7c6" - integrity sha512-yvuDTyuhMtwZjB1xGFmCC/UsZjEpMTAanJHAVX9b+tJnn7ArG7Q75Az/JpZsru6KAXiTo1krI54vTE87zzwkIg== - -"@parcel/rust-linux-x64-musl@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/rust-linux-x64-musl/-/rust-linux-x64-musl-2.16.0.tgz#868636e6c4b5f0e3ed9876a6b022f6bfcd72e9bc" - integrity sha512-0q6ESCVe9uHVuQWuEGGDMJwjezliTsEWMcqn7oeQoKXaZJZQpW0UAuzNcNmpiHmeJdifYT9XuxVOo/a8IgOXhg== - -"@parcel/rust-win32-x64-msvc@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/rust-win32-x64-msvc/-/rust-win32-x64-msvc-2.16.0.tgz#9b623ee20e69c67c22b4148e1be6aaa7bd5fc428" - integrity sha512-IVWpXF1VY+Xgi6ylXaZttAF5+WjazPyxRJUZlC31taYwpfZ4LzmsV8NYlj5ehjTL8d28SKDBoAnOQJwDRe8z8Q== - -"@parcel/rust@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/rust/-/rust-2.16.0.tgz#4a336bc826cf3a5cf97ad03897856ed7ec5e8a2b" - integrity sha512-9ZBiwCCm9OYa2f1rjkXtPUIa0qbKPmpdTqtNHC+5ieRxClvk+m/mxsO1Ag+GbNJrJ8qFYliL3Ha0ZK4d1BrVKw== - optionalDependencies: - "@parcel/rust-darwin-arm64" "2.16.0" - "@parcel/rust-darwin-x64" "2.16.0" - "@parcel/rust-linux-arm-gnueabihf" "2.16.0" - "@parcel/rust-linux-arm64-gnu" "2.16.0" - "@parcel/rust-linux-arm64-musl" "2.16.0" - "@parcel/rust-linux-x64-gnu" "2.16.0" - "@parcel/rust-linux-x64-musl" "2.16.0" - "@parcel/rust-win32-x64-msvc" "2.16.0" - -"@parcel/source-map@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" - integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== - dependencies: - detect-libc "^1.0.3" - -"@parcel/transformer-babel@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.16.0.tgz#18eaa7e8b0af0a83623b92b3a791e97c2e18ff3f" - integrity sha512-jlaFyGlRKFbAI8370bcuEzmsZENqdw9ATCowpB/XkKgUlYe6iplMlKLy4EquqSR6axqfxBRMoSCcKFkROuLI9g== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.16.0" - browserslist "^4.24.5" - json5 "^2.2.3" - nullthrows "^1.1.1" - semver "^7.7.1" - -"@parcel/transformer-css@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.16.0.tgz#a42c87f03dc194bc813fb3ecf584f570c3ee7bec" - integrity sha512-WSUITzJl2/2uU04WnCLAwhZJ8RAaRvNQ64fMr4LauWa72gzqXgh3+1egddBiAT7e5IndVJ0AYFywLBVegwKOOA== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.16.0" - browserslist "^4.24.5" - lightningcss "^1.30.1" - nullthrows "^1.1.1" - -"@parcel/transformer-html@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.16.0.tgz#c09d9852da4a1b6cfaeb1ac9ed2462680c242a81" - integrity sha512-CKAoB5yOovL3GyZlnm7lRUa3IfaSS/bEjjTy6F6RU7G4sMRgJu16AQfI4/uTJAA6iuW1ugNyza2DhWQ9xfbhaw== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - -"@parcel/transformer-image@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.16.0.tgz#0f863bf9328464eb04d766cb3dded83f9e1975b9" - integrity sha512-sW4CM6P2YMUyAICCMocTLvVVqnxmlBwkP+SrIZvNElDUu0CygOa92cA3rdepHi+tF1GN6ZvNwNyQbZGAIKVxgw== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/utils" "2.16.0" - "@parcel/workers" "2.16.0" - nullthrows "^1.1.1" - -"@parcel/transformer-js@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.16.0.tgz#eb7e210e382b1950cf41e3ed8c580e380fe8a494" - integrity sha512-VRTFEJ/N13MFvwJPwilPET6gHJ0ZdFbCK26uO7uyL1eMGMvWStTXEQXvhLqtMfvDcQPnwkF5XGJL5JsGpcBFFA== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.16.0" - "@parcel/workers" "2.16.0" - "@swc/helpers" "^0.5.0" - browserslist "^4.24.5" - nullthrows "^1.1.1" - regenerator-runtime "^0.14.1" - semver "^7.7.1" - -"@parcel/transformer-json@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.16.0.tgz#e176541ec5910926e5e2731f9104ed169f871287" - integrity sha512-qX6Zg+j7HezY+W2TNjJ+VPUsIviNdTuMn39W9M0YEd0WLKh0x7XD4oprVivvgD0Vbm04FUcTQEN1jAF3CAVeGw== - dependencies: - "@parcel/plugin" "2.16.0" - json5 "^2.2.3" - -"@parcel/transformer-node@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-node/-/transformer-node-2.16.0.tgz#9e2c32ea9f9e1ca14e4cbdedd2404b3f2c5254b5" - integrity sha512-Mavmjj6SfP0Lhu751G47EFtExZIJyD+V2C5PzdATTaT+cw0MzQgfLH8s4p0CI27MAuyFesm8WTA0lgUtcfzMSw== - dependencies: - "@parcel/plugin" "2.16.0" - -"@parcel/transformer-postcss@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.16.0.tgz#48d6da4394198091b5a530d8661e630e9f78907e" - integrity sha512-h+Qnn49UE5RywpuXMHN8Iufjvc7MMqHQc0sPNvwoLBXJXJcb3ul7WEY+DGXs90KsUY1B6JAqKtz9+pzqXZMwIg== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/utils" "2.16.0" - clone "^2.1.2" - nullthrows "^1.1.1" - postcss-value-parser "^4.2.0" - semver "^7.7.1" - -"@parcel/transformer-posthtml@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.16.0.tgz#bf624b578d7e877c724c0930aa299ec757641c44" - integrity sha512-mvHQNzFO1xPq+/7McjxF7+Zb2zAgksNbSXKi8/OuMRiNO3eDD/r1jWRWKNQZHWUkSx/vS7JJ5Y1ACI5INLxWww== - dependencies: - "@parcel/plugin" "2.16.0" - "@parcel/utils" "2.16.0" - -"@parcel/transformer-raw@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.16.0.tgz#757546aeb0d50a2727a46c6f85cc7d0b6a50072c" - integrity sha512-LJXwH2rQAo6mOU6uG0IGQIN7KLC2sS8bl6aqf1YMcKk6ZEvylQkP0hUvRYja2IRzPoxjpdcAP5WC4e/Z8S1Vzg== - dependencies: - "@parcel/plugin" "2.16.0" - -"@parcel/transformer-react-refresh-wrap@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.16.0.tgz#8c14c7dbdfaf528c9ebd71a4d077142c5626e2d7" - integrity sha512-s6O5oJ0pUtZey6unI0mz2WIOpAVLCn5+hlou4YH7FXOiMvSJ2PU2rakk+EZk6K/R+TStYM0hQKSwJkiiN0m7Rg== - dependencies: - "@parcel/error-overlay" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/utils" "2.16.0" - react-refresh "^0.16.0" - -"@parcel/transformer-svg@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.16.0.tgz#f17e4905053de7a5b0b242e9317f70049aa39f76" - integrity sha512-c4KpIqqbsvsh/ZxLTo0d7/IEVa/jR/+LZ1kFzBWXKvMBzbvqo63J6s3VGk61gPFV9JkSW3UI5LAMbJn/HDXycw== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/plugin" "2.16.0" - "@parcel/rust" "2.16.0" - -"@parcel/types-internal@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/types-internal/-/types-internal-2.16.0.tgz#0476cfdcc80ab53bae0ab660ba1932e0c6943d0a" - integrity sha512-tibAjOY8iyMDzFp5B9jEZPfHYlNvXpw7/msUVebAE6gZ7A8ymWXG8YzMvin6gvWIVTCsYoOkkRsZARvpRcSspQ== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/feature-flags" "2.16.0" - "@parcel/source-map" "^2.1.1" - utility-types "^3.11.0" - -"@parcel/types@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.16.0.tgz#aa0877b3c3c4df2eed700f04238df0534c1d1ce2" - integrity sha512-EKsMTqqfiutQIiYKHEJHHeugIymPqM+D+CphhyewAIjxVLk6PTjEQW0ytIbbdOXGAgnK60OFiIKqZAxZ5Hf2dw== - dependencies: - "@parcel/types-internal" "2.16.0" - "@parcel/workers" "2.16.0" - -"@parcel/utils@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.16.0.tgz#97fe4023cb68b915173379bf8da05ad1f81ae7f5" - integrity sha512-Jc5npvJ5T45goEIbDwsQKX3AtfhLIF2t6G496XhbjcH3aeFLrnIbg1iaitQWvgxdjrt73h8PPNphDkREZ/H7WA== - dependencies: - "@parcel/codeframe" "2.16.0" - "@parcel/diagnostic" "2.16.0" - "@parcel/logger" "2.16.0" - "@parcel/markdown-ansi" "2.16.0" - "@parcel/rust" "2.16.0" - "@parcel/source-map" "^2.1.1" - chalk "^4.1.2" - nullthrows "^1.1.1" - -"@parcel/watcher-android-arm64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" - integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== - -"@parcel/watcher-darwin-arm64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67" - integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== - -"@parcel/watcher-darwin-x64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8" - integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== - -"@parcel/watcher-freebsd-x64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b" - integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== - -"@parcel/watcher-linux-arm-glibc@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1" - integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== - -"@parcel/watcher-linux-arm-musl@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e" - integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== - -"@parcel/watcher-linux-arm64-glibc@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30" - integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== - -"@parcel/watcher-linux-arm64-musl@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2" - integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== - -"@parcel/watcher-linux-x64-glibc@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e" - integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== - -"@parcel/watcher-linux-x64-musl@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee" - integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== - -"@parcel/watcher-win32-arm64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243" - integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== - -"@parcel/watcher-win32-ia32@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6" - integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== - -"@parcel/watcher-win32-x64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947" - integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA== - "@parcel/watcher@2.0.4": version "2.0.4" resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" @@ -5077,42 +3459,6 @@ node-addon-api "^3.2.1" node-gyp-build "^4.3.0" -"@parcel/watcher@^2.0.7": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200" - integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg== - dependencies: - detect-libc "^1.0.3" - is-glob "^4.0.3" - micromatch "^4.0.5" - node-addon-api "^7.0.0" - optionalDependencies: - "@parcel/watcher-android-arm64" "2.5.1" - "@parcel/watcher-darwin-arm64" "2.5.1" - "@parcel/watcher-darwin-x64" "2.5.1" - "@parcel/watcher-freebsd-x64" "2.5.1" - "@parcel/watcher-linux-arm-glibc" "2.5.1" - "@parcel/watcher-linux-arm-musl" "2.5.1" - "@parcel/watcher-linux-arm64-glibc" "2.5.1" - "@parcel/watcher-linux-arm64-musl" "2.5.1" - "@parcel/watcher-linux-x64-glibc" "2.5.1" - "@parcel/watcher-linux-x64-musl" "2.5.1" - "@parcel/watcher-win32-arm64" "2.5.1" - "@parcel/watcher-win32-ia32" "2.5.1" - "@parcel/watcher-win32-x64" "2.5.1" - -"@parcel/workers@2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.16.0.tgz#bbc8d5a365a6001a7a51173667610cece65cb16c" - integrity sha512-JVdAtTWRONbP4X8Me1qRE5sMGIkSKAcUb8fZdjCUPJxsBwcJwzYicYFuahxVVGj2sYzjLi0TzlvmXMK7tVvffA== - dependencies: - "@parcel/diagnostic" "2.16.0" - "@parcel/logger" "2.16.0" - "@parcel/profiler" "2.16.0" - "@parcel/types-internal" "2.16.0" - "@parcel/utils" "2.16.0" - nullthrows "^1.1.1" - "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -5189,323 +3535,294 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@pyramation/json-schema-ref-parser@9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@pyramation/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#556e416ce7dcc15a3c1afd04d6a059e03ed09aeb" - integrity sha512-L5kToHAEc1Q87R8ZwWFaNa4tPHr8Hnm+U+DRdUVq3tUtk+EX4pCqSd34Z6EMxNi/bjTzt1syAG9J2Oo1YFlqSg== +"@react-aria/breadcrumbs@^3.5.29": + version "3.5.29" + resolved "https://registry.yarnpkg.com/@react-aria/breadcrumbs/-/breadcrumbs-3.5.29.tgz#bfc1e953eccd7393bd457f1c9698a928142f0fc7" + integrity sha512-rKS0dryllaZJqrr3f/EAf2liz8CBEfmL5XACj+Z1TAig6GIYe1QuA3BtkX0cV9OkMugXdX8e3cbA7nD10ORRqg== dependencies: - "@jsdevtools/ono" "^7.1.3" - call-me-maybe "^1.0.1" - js-yaml "^3.13.1" - -"@pyramation/json-schema-to-typescript@ 11.0.4": - version "11.0.4" - resolved "https://registry.yarnpkg.com/@pyramation/json-schema-to-typescript/-/json-schema-to-typescript-11.0.4.tgz#959bdb631dad336e1fdbf608a9b5908ab0da1d6b" - integrity sha512-+aSzXDLhMHOEdV2cJ7Tjg/9YenjHU5BCmClVygzwxJZ1R16NOfEn7lTAwVzb/2jivOSnhjHzMJbnSf8b6rd1zg== - dependencies: - "@pyramation/json-schema-ref-parser" "9.0.6" - "@types/json-schema" "^7.0.11" - "@types/lodash" "^4.14.182" - "@types/prettier" "^2.6.1" - cli-color "^2.0.2" - get-stdin "^8.0.0" - glob "^7.1.6" - glob-promise "^4.2.2" - is-glob "^4.0.3" - lodash "^4.17.21" - minimist "^1.2.6" - mkdirp "^1.0.4" - mz "^2.7.0" - prettier "^2.6.2" - -"@react-aria/breadcrumbs@^3.5.28": - version "3.5.28" - resolved "https://registry.yarnpkg.com/@react-aria/breadcrumbs/-/breadcrumbs-3.5.28.tgz#746c769f1a2266d8b8a50494e25dc581579f70d9" - integrity sha512-6S3QelpajodEzN7bm49XXW5gGoZksK++cl191W0sexq/E5hZHAEA9+CFC8pL3px13ji7qHGqKAxOP4IUVBdVpQ== - dependencies: - "@react-aria/i18n" "^3.12.12" - "@react-aria/link" "^3.8.5" - "@react-aria/utils" "^3.30.1" - "@react-types/breadcrumbs" "^3.7.16" - "@react-types/shared" "^3.32.0" + "@react-aria/i18n" "^3.12.13" + "@react-aria/link" "^3.8.6" + "@react-aria/utils" "^3.31.0" + "@react-types/breadcrumbs" "^3.7.17" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/button@^3.14.1": - version "3.14.1" - resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.14.1.tgz#97475f770f0ad8fe928f2fa97227ef01f729901b" - integrity sha512-Ug06unKEYVG3OF6zKmpVR7VfLzpj7eJVuFo3TCUxwFJG7DI28pZi2TaGWnhm7qjkxfl1oz0avQiHVfDC99gSuw== +"@react-aria/button@^3.14.2": + version "3.14.2" + resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.14.2.tgz#9dcd2fa53e7968a563b4898ace3360c85ccc22f5" + integrity sha512-VbLIA+Kd6f/MDjd+TJBUg2+vNDw66pnvsj2E4RLomjI9dfBuN7d+Yo2UnsqKVyhePjCUZ6xxa2yDuD63IOSIYA== dependencies: - "@react-aria/interactions" "^3.25.5" - "@react-aria/toolbar" "3.0.0-beta.20" - "@react-aria/utils" "^3.30.1" - "@react-stately/toggle" "^3.9.1" - "@react-types/button" "^3.14.0" - "@react-types/shared" "^3.32.0" + "@react-aria/interactions" "^3.25.6" + "@react-aria/toolbar" "3.0.0-beta.21" + "@react-aria/utils" "^3.31.0" + "@react-stately/toggle" "^3.9.2" + "@react-types/button" "^3.14.1" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/calendar@^3.9.1": - version "3.9.1" - resolved "https://registry.yarnpkg.com/@react-aria/calendar/-/calendar-3.9.1.tgz#2b32284b33919571557ba8d220f5a889d1b118c5" - integrity sha512-dCJliRIi3x3VmAZkJDNTZddq0+QoUX9NS7GgdqPPYcJIMbVPbyLWL61//0SrcCr3MuSRCoI1eQZ8PkQe/2PJZQ== +"@react-aria/calendar@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@react-aria/calendar/-/calendar-3.9.2.tgz#4b6e428ee3fb81f5729cb80193b9d4ba9b26d5f1" + integrity sha512-uSLxLgOPRnEU4Jg59lAhUVA+uDx/55NBg4lpfsP2ynazyiJ5LCXmYceJi+VuOqMml7d9W0dB87OldOeLdIxYVA== dependencies: - "@internationalized/date" "^3.9.0" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" + "@internationalized/date" "^3.10.0" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" "@react-aria/live-announcer" "^3.4.4" - "@react-aria/utils" "^3.30.1" - "@react-stately/calendar" "^3.8.4" - "@react-types/button" "^3.14.0" - "@react-types/calendar" "^3.7.4" - "@react-types/shared" "^3.32.0" + "@react-aria/utils" "^3.31.0" + "@react-stately/calendar" "^3.9.0" + "@react-types/button" "^3.14.1" + "@react-types/calendar" "^3.8.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/checkbox@^3.16.1": - version "3.16.1" - resolved "https://registry.yarnpkg.com/@react-aria/checkbox/-/checkbox-3.16.1.tgz#18e5b36e1e3c07358b0283d7696806e5fd7b57a5" - integrity sha512-YcG3QhuGIwqPHo4GVGVmwxPM5Ayq9CqYfZjla/KTfJILPquAJ12J7LSMpqS/Z5TlMNgIIqZ3ZdrYmjQlUY7eUg== +"@react-aria/checkbox@^3.16.2": + version "3.16.2" + resolved "https://registry.yarnpkg.com/@react-aria/checkbox/-/checkbox-3.16.2.tgz#b1a3310d327826fe354625c332f3b80acb025a39" + integrity sha512-29Mj9ZqXioJ0bcMnNGooHztnTau5pikZqX3qCRj5bYR3by/ZFFavYoMroh9F7s/MbFm/tsKX+Sf02lYFEdXRjA== dependencies: - "@react-aria/form" "^3.1.1" - "@react-aria/interactions" "^3.25.5" - "@react-aria/label" "^3.7.21" - "@react-aria/toggle" "^3.12.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/checkbox" "^3.7.1" - "@react-stately/form" "^3.2.1" - "@react-stately/toggle" "^3.9.1" - "@react-types/checkbox" "^3.10.1" - "@react-types/shared" "^3.32.0" + "@react-aria/form" "^3.1.2" + "@react-aria/interactions" "^3.25.6" + "@react-aria/label" "^3.7.22" + "@react-aria/toggle" "^3.12.2" + "@react-aria/utils" "^3.31.0" + "@react-stately/checkbox" "^3.7.2" + "@react-stately/form" "^3.2.2" + "@react-stately/toggle" "^3.9.2" + "@react-types/checkbox" "^3.10.2" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/color@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@react-aria/color/-/color-3.1.1.tgz#5d3e169e86a247cf78eb71e6344bebaf409dfb7a" - integrity sha512-4+woybtn4kh5ytggWQ06bqqWsoucOrxwNrwW1XP6EmvcjIcsfVW+VwFwM5ZYa2LGF+fHiW3dM4bjRqVa7i9PVg== +"@react-aria/color@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@react-aria/color/-/color-3.1.2.tgz#9ee2a86e4cf4622ca8ff78bddd34a2bf1bdcdd34" + integrity sha512-jCC+Q7rAQGLQBkHjkPAeDuGYuMbc4neifjlNRiyZ9as1z4gg63H8MteoWYYk6K4vCKKxSixgt8MfI29XWMOWPQ== dependencies: - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/numberfield" "^3.12.1" - "@react-aria/slider" "^3.8.1" - "@react-aria/spinbutton" "^3.6.18" - "@react-aria/textfield" "^3.18.1" - "@react-aria/utils" "^3.30.1" - "@react-aria/visually-hidden" "^3.8.27" - "@react-stately/color" "^3.9.1" - "@react-stately/form" "^3.2.1" - "@react-types/color" "^3.1.1" - "@react-types/shared" "^3.32.0" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/numberfield" "^3.12.2" + "@react-aria/slider" "^3.8.2" + "@react-aria/spinbutton" "^3.6.19" + "@react-aria/textfield" "^3.18.2" + "@react-aria/utils" "^3.31.0" + "@react-aria/visually-hidden" "^3.8.28" + "@react-stately/color" "^3.9.2" + "@react-stately/form" "^3.2.2" + "@react-types/color" "^3.1.2" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/combobox@^3.13.2": - version "3.13.2" - resolved "https://registry.yarnpkg.com/@react-aria/combobox/-/combobox-3.13.2.tgz#b309dc60f2918227dd52c551d9380a028de24cad" - integrity sha512-PNyqlaM19A+lKX9hwqkKTXvWDilCKaRH2RdrB/C5AfmGi3bh/IKsu66c8ohgadXB2AIdJB36EOOm3hNh8G9DqQ== +"@react-aria/combobox@^3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@react-aria/combobox/-/combobox-3.14.0.tgz#1e6c55a319d367d6a0a9e19f2bd68d3a9a0c8b9a" + integrity sha512-z4ro0Hma//p4nL2IJx5iUa7NwxeXbzSoZ0se5uTYjG1rUUMszg+wqQh/AQoL+eiULn7rs18JY9wwNbVIkRNKWA== dependencies: - "@react-aria/focus" "^3.21.1" - "@react-aria/i18n" "^3.12.12" - "@react-aria/listbox" "^3.14.8" + "@react-aria/focus" "^3.21.2" + "@react-aria/i18n" "^3.12.13" + "@react-aria/listbox" "^3.15.0" "@react-aria/live-announcer" "^3.4.4" - "@react-aria/menu" "^3.19.2" - "@react-aria/overlays" "^3.29.1" - "@react-aria/selection" "^3.25.1" - "@react-aria/textfield" "^3.18.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/collections" "^3.12.7" - "@react-stately/combobox" "^3.11.1" - "@react-stately/form" "^3.2.1" - "@react-types/button" "^3.14.0" - "@react-types/combobox" "^3.13.8" - "@react-types/shared" "^3.32.0" + "@react-aria/menu" "^3.19.3" + "@react-aria/overlays" "^3.30.0" + "@react-aria/selection" "^3.26.0" + "@react-aria/textfield" "^3.18.2" + "@react-aria/utils" "^3.31.0" + "@react-stately/collections" "^3.12.8" + "@react-stately/combobox" "^3.12.0" + "@react-stately/form" "^3.2.2" + "@react-types/button" "^3.14.1" + "@react-types/combobox" "^3.13.9" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/datepicker@^3.15.1": - version "3.15.1" - resolved "https://registry.yarnpkg.com/@react-aria/datepicker/-/datepicker-3.15.1.tgz#df128ee61bdfaabd24a387e22dcc24b4bf2f036f" - integrity sha512-RfUOvsupON6E5ZELpBgb9qxsilkbqwzsZ78iqCDTVio+5kc5G9jVeHEIQOyHnavi/TmJoAnbmmVpEbE6M9lYJQ== +"@react-aria/datepicker@^3.15.2": + version "3.15.2" + resolved "https://registry.yarnpkg.com/@react-aria/datepicker/-/datepicker-3.15.2.tgz#22bca8cfdd00e32a42f8e53b35e5ba7e886f047d" + integrity sha512-th078hyNqPf4P2K10su/y32zPDjs3lOYVdHvsL9/+5K1dnTvLHCK5vgUyLuyn8FchhF7cmHV49D+LZVv65PEpQ== dependencies: - "@internationalized/date" "^3.9.0" + "@internationalized/date" "^3.10.0" "@internationalized/number" "^3.6.5" "@internationalized/string" "^3.2.7" - "@react-aria/focus" "^3.21.1" - "@react-aria/form" "^3.1.1" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/label" "^3.7.21" - "@react-aria/spinbutton" "^3.6.18" - "@react-aria/utils" "^3.30.1" - "@react-stately/datepicker" "^3.15.1" - "@react-stately/form" "^3.2.1" - "@react-types/button" "^3.14.0" - "@react-types/calendar" "^3.7.4" - "@react-types/datepicker" "^3.13.1" - "@react-types/dialog" "^3.5.21" - "@react-types/shared" "^3.32.0" + "@react-aria/focus" "^3.21.2" + "@react-aria/form" "^3.1.2" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/label" "^3.7.22" + "@react-aria/spinbutton" "^3.6.19" + "@react-aria/utils" "^3.31.0" + "@react-stately/datepicker" "^3.15.2" + "@react-stately/form" "^3.2.2" + "@react-types/button" "^3.14.1" + "@react-types/calendar" "^3.8.0" + "@react-types/datepicker" "^3.13.2" + "@react-types/dialog" "^3.5.22" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/dialog@^3.5.30": - version "3.5.30" - resolved "https://registry.yarnpkg.com/@react-aria/dialog/-/dialog-3.5.30.tgz#e7e7080dec37bf4e98cb98430b931d5bd7fa7c66" - integrity sha512-fiodaeMSTiC4qKNwnCLbNykyvfcxuz/PiU/pBNhWYd4lUrX1TauBQb0++o5/K6OHt8iB+A7/LSHRbPtyOSWE9g== +"@react-aria/dialog@^3.5.31": + version "3.5.31" + resolved "https://registry.yarnpkg.com/@react-aria/dialog/-/dialog-3.5.31.tgz#1c1682a89dd6a4c6bc7bb0e58ea78eb6f2750a65" + integrity sha512-inxQMyrzX0UBW9Mhraq0nZ4HjHdygQvllzloT1E/RlDd61lr3RbmJR6pLsrbKOTtSvDIBJpCso1xEdHCFNmA0Q== dependencies: - "@react-aria/interactions" "^3.25.5" - "@react-aria/overlays" "^3.29.1" - "@react-aria/utils" "^3.30.1" - "@react-types/dialog" "^3.5.21" - "@react-types/shared" "^3.32.0" + "@react-aria/interactions" "^3.25.6" + "@react-aria/overlays" "^3.30.0" + "@react-aria/utils" "^3.31.0" + "@react-types/dialog" "^3.5.22" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/disclosure@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@react-aria/disclosure/-/disclosure-3.0.8.tgz#a5b2ed7eec552beab2c95241f7c91a1c9a1ff9bf" - integrity sha512-Q2v6czm3ViMTw7J+GCWdXw3rZ5Fgmy97gpSQjpEoxSyqA1UfpRRvNa+XYoXmbpaY1MGhtUX3m2GgZ4IuhhMHVQ== +"@react-aria/disclosure@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@react-aria/disclosure/-/disclosure-3.1.0.tgz#c08a0f9696fa80ca69de78f37c8bf0b65a7a9397" + integrity sha512-5996BeBpnj+yKXYysz+UuhFQxGFPvaZZ3zNBd052wz/i+TVFVGSqqYJ6cwZyO1AfBR8zOT0ZIiK4EC3ETwSvtQ== dependencies: "@react-aria/ssr" "^3.9.10" - "@react-aria/utils" "^3.30.1" - "@react-stately/disclosure" "^3.0.7" - "@react-types/button" "^3.14.0" + "@react-aria/utils" "^3.31.0" + "@react-stately/disclosure" "^3.0.8" + "@react-types/button" "^3.14.1" "@swc/helpers" "^0.5.0" -"@react-aria/dnd@^3.11.2": - version "3.11.2" - resolved "https://registry.yarnpkg.com/@react-aria/dnd/-/dnd-3.11.2.tgz#619741f547487e53e5ced858269e134d76dbe790" - integrity sha512-xaIUV0zPtUTLIBoE7qlGFPfRTfyDJT78fDzawYq6FwZcjgrl8X408UDCUaKk6xSJRh9UjNn78hil1WDYTLFNWA== +"@react-aria/dnd@^3.11.3": + version "3.11.3" + resolved "https://registry.yarnpkg.com/@react-aria/dnd/-/dnd-3.11.3.tgz#438b4603ef9b2560775ea02b64ea3dcdf15bf474" + integrity sha512-MyTziciik1Owz3rqDghu0K3ZtTFvmj/R2ZsLDwbU9N4hKqGX/BKnrI8SytTn8RDqVv5LmA/GhApLngiupTAsXw== dependencies: "@internationalized/string" "^3.2.7" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" "@react-aria/live-announcer" "^3.4.4" - "@react-aria/overlays" "^3.29.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/collections" "^3.12.7" - "@react-stately/dnd" "^3.7.0" - "@react-types/button" "^3.14.0" - "@react-types/shared" "^3.32.0" + "@react-aria/overlays" "^3.30.0" + "@react-aria/utils" "^3.31.0" + "@react-stately/collections" "^3.12.8" + "@react-stately/dnd" "^3.7.1" + "@react-types/button" "^3.14.1" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/focus@^3.21.1": - version "3.21.1" - resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.21.1.tgz#fad9d0803e0e4423bb6e14ed3208fffd694e5e42" - integrity sha512-hmH1IhHlcQ2lSIxmki1biWzMbGgnhdxJUM0MFfzc71Rv6YAzhlx4kX3GYn4VNcjCeb6cdPv4RZ5vunV4kgMZYQ== +"@react-aria/focus@^3.21.2": + version "3.21.2" + resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.21.2.tgz#3ce90450c3ee69f11c0647b4717c26d10941231c" + integrity sha512-JWaCR7wJVggj+ldmM/cb/DXFg47CXR55lznJhZBh4XVqJjMKwaOOqpT5vNN7kpC1wUpXicGNuDnJDN1S/+6dhQ== dependencies: - "@react-aria/interactions" "^3.25.5" - "@react-aria/utils" "^3.30.1" - "@react-types/shared" "^3.32.0" + "@react-aria/interactions" "^3.25.6" + "@react-aria/utils" "^3.31.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" clsx "^2.0.0" -"@react-aria/form@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@react-aria/form/-/form-3.1.1.tgz#76b3eb4a6985fb27b1d437db89b5a69c54be292f" - integrity sha512-PjZC25UgH5orit9p56Ymbbo288F3eaDd3JUvD8SG+xgx302HhlFAOYsQLLAb4k4H03bp0gWtlUEkfX6KYcE1Tw== +"@react-aria/form@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@react-aria/form/-/form-3.1.2.tgz#e0aeb608d309594a59f12a7b05eb7374f2033a07" + integrity sha512-R3i7L7Ci61PqZQvOrnL9xJeWEbh28UkTVgkj72EvBBn39y4h7ReH++0stv7rRs8p5ozETSKezBbGfu4UsBewWw== dependencies: - "@react-aria/interactions" "^3.25.5" - "@react-aria/utils" "^3.30.1" - "@react-stately/form" "^3.2.1" - "@react-types/shared" "^3.32.0" + "@react-aria/interactions" "^3.25.6" + "@react-aria/utils" "^3.31.0" + "@react-stately/form" "^3.2.2" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/grid@^3.14.4": - version "3.14.4" - resolved "https://registry.yarnpkg.com/@react-aria/grid/-/grid-3.14.4.tgz#0511ae807fe7ff6df03b96edfb0e23624f137804" - integrity sha512-l1FLQNKnoHpY4UClUTPUV0AqJ5bfAULEE0ErY86KznWLd+Hqzo7mHLqqDV02CDa/8mIUcdoax/MrYYIbPDlOZA== +"@react-aria/grid@^3.14.5": + version "3.14.5" + resolved "https://registry.yarnpkg.com/@react-aria/grid/-/grid-3.14.5.tgz#fccd1e3b64cdad7b17aff0dada6da64df0cd1d8c" + integrity sha512-XHw6rgjlTqc85e3zjsWo3U0EVwjN5MOYtrolCKc/lc2ItNdcY3OlMhpsU9+6jHwg/U3VCSWkGvwAz9hg7krd8Q== dependencies: - "@react-aria/focus" "^3.21.1" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" + "@react-aria/focus" "^3.21.2" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" "@react-aria/live-announcer" "^3.4.4" - "@react-aria/selection" "^3.25.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/collections" "^3.12.7" - "@react-stately/grid" "^3.11.5" - "@react-stately/selection" "^3.20.5" - "@react-types/checkbox" "^3.10.1" - "@react-types/grid" "^3.3.5" - "@react-types/shared" "^3.32.0" + "@react-aria/selection" "^3.26.0" + "@react-aria/utils" "^3.31.0" + "@react-stately/collections" "^3.12.8" + "@react-stately/grid" "^3.11.6" + "@react-stately/selection" "^3.20.6" + "@react-types/checkbox" "^3.10.2" + "@react-types/grid" "^3.3.6" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/gridlist@^3.14.0": - version "3.14.0" - resolved "https://registry.yarnpkg.com/@react-aria/gridlist/-/gridlist-3.14.0.tgz#cf4454e94ca9ca99dd21adad421420ff2e572f7a" - integrity sha512-8NWDaUbPe6ujI+kSvDqr2onPYWlBXiaLCQ6nfYOo+GFKxeVCsv4a2I5HAAoGf9THNQ5b8b8kJa+M0xyL1Z71XA== +"@react-aria/gridlist@^3.14.1": + version "3.14.1" + resolved "https://registry.yarnpkg.com/@react-aria/gridlist/-/gridlist-3.14.1.tgz#4aa636ad1342f859dc5ce1a350211535ae5ae424" + integrity sha512-keS03Am07aOn7RuNaRsMOyh0jscyhDn95asCVy4lxhl9A9TFk1Jw0o2L6q6cWRj1gFiKeacj/otG5H8ZKQQ2Wg== dependencies: - "@react-aria/focus" "^3.21.1" - "@react-aria/grid" "^3.14.4" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/selection" "^3.25.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/list" "^3.13.0" - "@react-stately/tree" "^3.9.2" - "@react-types/shared" "^3.32.0" + "@react-aria/focus" "^3.21.2" + "@react-aria/grid" "^3.14.5" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/selection" "^3.26.0" + "@react-aria/utils" "^3.31.0" + "@react-stately/list" "^3.13.1" + "@react-stately/tree" "^3.9.3" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/i18n@^3.12.12": - version "3.12.12" - resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.12.12.tgz#186eadf0c5dd3c38eb31c40b7c0191df07cef185" - integrity sha512-JN6p+Xc6Pu/qddGRoeYY6ARsrk2Oz7UiQc9nLEPOt3Ch+blJZKWwDjcpo/p6/wVZdD/2BgXS7El6q6+eMg7ibw== +"@react-aria/i18n@^3.12.13": + version "3.12.13" + resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.12.13.tgz#7c920d131cd07d4d5af21bd33ea7a5da0ce2ad11" + integrity sha512-YTM2BPg0v1RvmP8keHenJBmlx8FXUKsdYIEX7x6QWRd1hKlcDwphfjzvt0InX9wiLiPHsT5EoBTpuUk8SXc0Mg== dependencies: - "@internationalized/date" "^3.9.0" + "@internationalized/date" "^3.10.0" "@internationalized/message" "^3.1.8" "@internationalized/number" "^3.6.5" "@internationalized/string" "^3.2.7" "@react-aria/ssr" "^3.9.10" - "@react-aria/utils" "^3.30.1" - "@react-types/shared" "^3.32.0" + "@react-aria/utils" "^3.31.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/interactions@^3.25.5": - version "3.25.5" - resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.25.5.tgz#f7f69467c899f9673460c3401fcaac08d2dcac7d" - integrity sha512-EweYHOEvMwef/wsiEqV73KurX/OqnmbzKQa2fLxdULbec5+yDj6wVGaRHIzM4NiijIDe+bldEl5DG05CAKOAHA== +"@react-aria/interactions@^3.25.6": + version "3.25.6" + resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.25.6.tgz#6fdf287337c5e4285045c35cf94b2ec8ae3b3a49" + integrity sha512-5UgwZmohpixwNMVkMvn9K1ceJe6TzlRlAfuYoQDUuOkk62/JVJNDLAPKIf5YMRc7d2B0rmfgaZLMtbREb0Zvkw== dependencies: "@react-aria/ssr" "^3.9.10" - "@react-aria/utils" "^3.30.1" + "@react-aria/utils" "^3.31.0" "@react-stately/flags" "^3.1.2" - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/label@^3.7.21": - version "3.7.21" - resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.7.21.tgz#1deeb3886bc5110f76659137c3e21811fa1606d1" - integrity sha512-8G+059/GZahgQbrhMcCcVcrjm7W+pfzrypH/Qkjo7C1yqPGt6geeFwWeOIbiUZoI0HD9t9QvQPryd6m46UC7Tg== +"@react-aria/label@^3.7.22": + version "3.7.22" + resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.7.22.tgz#13fbf1d568c37becca4652e5c5d0b490c29e5e52" + integrity sha512-jLquJeA5ZNqDT64UpTc9XJ7kQYltUlNcgxZ37/v4mHe0UZ7QohCKdKQhXHONb0h2jjNUpp2HOZI8J9++jOpzxA== dependencies: - "@react-aria/utils" "^3.30.1" - "@react-types/shared" "^3.32.0" + "@react-aria/utils" "^3.31.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/landmark@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@react-aria/landmark/-/landmark-3.0.6.tgz#60805b4c4191525d843ac8d8a28f01ff6195096b" - integrity sha512-dMPBqJWTDAr3Lj5hA+XYDH2PWqtFghYy+y7iq7K5sK/96cub8hZEUjhwn+HGgHsLerPp0dWt293nKupAJnf4Vw== +"@react-aria/landmark@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@react-aria/landmark/-/landmark-3.0.7.tgz#6ffc06c870018f6ead456f6f67cccebd655910f0" + integrity sha512-t8c610b8hPLS6Vwv+rbuSyljZosI1s5+Tosfa0Fk4q7d+Ex6Yj7hLfUFy59GxZAufhUYfGX396fT0gPqAbU1tg== dependencies: - "@react-aria/utils" "^3.30.1" - "@react-types/shared" "^3.32.0" + "@react-aria/utils" "^3.31.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" use-sync-external-store "^1.4.0" -"@react-aria/link@^3.8.5": - version "3.8.5" - resolved "https://registry.yarnpkg.com/@react-aria/link/-/link-3.8.5.tgz#d8bade7e3f1012c77a1e147942310520796e7b0b" - integrity sha512-klhV4roPp5MLRXJv1N+7SXOj82vx4gzVpuwQa3vouA+YI1my46oNzwgtkLGSTvE9OvDqYzPDj2YxFYhMywrkuw== +"@react-aria/link@^3.8.6": + version "3.8.6" + resolved "https://registry.yarnpkg.com/@react-aria/link/-/link-3.8.6.tgz#522c246b9fcf62fbe75f9c07d056d6b984523143" + integrity sha512-7F7UDJnwbU9IjfoAdl6f3Hho5/WB7rwcydUOjUux0p7YVWh/fTjIFjfAGyIir7MJhPapun1D0t97QQ3+8jXVcg== dependencies: - "@react-aria/interactions" "^3.25.5" - "@react-aria/utils" "^3.30.1" - "@react-types/link" "^3.6.4" - "@react-types/shared" "^3.32.0" + "@react-aria/interactions" "^3.25.6" + "@react-aria/utils" "^3.31.0" + "@react-types/link" "^3.6.5" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/listbox@^3.13.3", "@react-aria/listbox@^3.14.8": - version "3.14.8" - resolved "https://registry.yarnpkg.com/@react-aria/listbox/-/listbox-3.14.8.tgz#c46d79ba3f2d389a95cad4eba8bdbf0a53c4a0b6" - integrity sha512-uRgbuD9afFv0PDhQ/VXCmAwlYctIyKRzxztkqp1p/1yz/tn/hs+bG9kew9AI02PtlRO1mSc+32O+mMDXDer8hA== +"@react-aria/listbox@^3.13.3", "@react-aria/listbox@^3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@react-aria/listbox/-/listbox-3.15.0.tgz#4218e24c20ec68069f51175c57fa2bf55b1acc46" + integrity sha512-Ub1Wu79R9sgxM7h4HeEdjOgOKDHwduvYcnDqsSddGXgpkL8ADjsy2YUQ0hHY5VnzA4BxK36bLp4mzSna8Qvj1w== dependencies: - "@react-aria/interactions" "^3.25.5" - "@react-aria/label" "^3.7.21" - "@react-aria/selection" "^3.25.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/collections" "^3.12.7" - "@react-stately/list" "^3.13.0" - "@react-types/listbox" "^3.7.3" - "@react-types/shared" "^3.32.0" + "@react-aria/interactions" "^3.25.6" + "@react-aria/label" "^3.7.22" + "@react-aria/selection" "^3.26.0" + "@react-aria/utils" "^3.31.0" + "@react-stately/collections" "^3.12.8" + "@react-stately/list" "^3.13.1" + "@react-types/listbox" "^3.7.4" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" "@react-aria/live-announcer@^3.4.4": @@ -5515,178 +3832,178 @@ dependencies: "@swc/helpers" "^0.5.0" -"@react-aria/menu@^3.19.2": - version "3.19.2" - resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.19.2.tgz#a506d0cd4443f4ddfb89df341937fc77ed77b47d" - integrity sha512-WzDLW2MotL0L5/LEwc5oGgISf2ODuw4FnRpF0Zk+J4tKFfC88odvKz848ubBvThRXuXEvL0BHY+WqtM+j9fn3g== +"@react-aria/menu@^3.19.3": + version "3.19.3" + resolved "https://registry.yarnpkg.com/@react-aria/menu/-/menu-3.19.3.tgz#65a6dc14b27648be611bf28ab4bbcd2823b612a8" + integrity sha512-52fh8y8b2776R2VrfZPpUBJYC9oTP7XDy+zZuZTxPEd7Ywk0JNUl5F92y6ru22yPkS13sdhrNM/Op+V/KulmAg== dependencies: - "@react-aria/focus" "^3.21.1" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/overlays" "^3.29.1" - "@react-aria/selection" "^3.25.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/collections" "^3.12.7" - "@react-stately/menu" "^3.9.7" - "@react-stately/selection" "^3.20.5" - "@react-stately/tree" "^3.9.2" - "@react-types/button" "^3.14.0" - "@react-types/menu" "^3.10.4" - "@react-types/shared" "^3.32.0" + "@react-aria/focus" "^3.21.2" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/overlays" "^3.30.0" + "@react-aria/selection" "^3.26.0" + "@react-aria/utils" "^3.31.0" + "@react-stately/collections" "^3.12.8" + "@react-stately/menu" "^3.9.8" + "@react-stately/selection" "^3.20.6" + "@react-stately/tree" "^3.9.3" + "@react-types/button" "^3.14.1" + "@react-types/menu" "^3.10.5" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/meter@^3.4.26": - version "3.4.26" - resolved "https://registry.yarnpkg.com/@react-aria/meter/-/meter-3.4.26.tgz#99df9192ebf0db71acc300d05145ba8951982c8d" - integrity sha512-BI+Ri0dkhx9jjf6yPbOLl69M6808Fi08KNEmserMEapy++5usB/8krh9ARuR0GZYUPFOcny0Ml0or/HqamyFvw== +"@react-aria/meter@^3.4.27": + version "3.4.27" + resolved "https://registry.yarnpkg.com/@react-aria/meter/-/meter-3.4.27.tgz#01cf9bbd12f05bd0515e048960690b017b0b9dd2" + integrity sha512-andOOdJkgRJF9vBi5VWRmFodK+GT+5X1lLeNUmb4qOX8/MVfX/RbK72LDeIhd7xC7rSCFHj3WvZ198rK4q0k3w== dependencies: - "@react-aria/progress" "^3.4.26" - "@react-types/meter" "^3.4.12" - "@react-types/shared" "^3.32.0" + "@react-aria/progress" "^3.4.27" + "@react-types/meter" "^3.4.13" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/numberfield@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@react-aria/numberfield/-/numberfield-3.12.1.tgz#97ca905f1b72fa275711b98e426d15095fc82ae4" - integrity sha512-3KjxGgWiF4GRvIyqrE3nCndkkEJ68v86y0nx89TpAjdzg7gCgdXgU2Lr4BhC/xImrmlqCusw0IBUMhsEq9EQWA== +"@react-aria/numberfield@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@react-aria/numberfield/-/numberfield-3.12.2.tgz#c219ecfba2076865e891cb2435c6bad558d6eabf" + integrity sha512-M2b+z0HIXiXpGAWOQkO2kpIjaLNUXJ5Q3/GMa3Fkr+B1piFX0VuOynYrtddKVrmXCe+r5t+XcGb0KS29uqv7nQ== dependencies: - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/spinbutton" "^3.6.18" - "@react-aria/textfield" "^3.18.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/form" "^3.2.1" - "@react-stately/numberfield" "^3.10.1" - "@react-types/button" "^3.14.0" - "@react-types/numberfield" "^3.8.14" - "@react-types/shared" "^3.32.0" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/spinbutton" "^3.6.19" + "@react-aria/textfield" "^3.18.2" + "@react-aria/utils" "^3.31.0" + "@react-stately/form" "^3.2.2" + "@react-stately/numberfield" "^3.10.2" + "@react-types/button" "^3.14.1" + "@react-types/numberfield" "^3.8.15" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/overlays@^3.23.2", "@react-aria/overlays@^3.29.1": - version "3.29.1" - resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.29.1.tgz#1a43a29709ad10971116b3d77de4e9b02107193d" - integrity sha512-Yz92XNPnbrTnxrvNrY/fXJ3iWaYNrj0q24ddvZNNKDcWak0S1/mQeUwNb+PwS2AryhFU5VQqKz5rNsM96TKmPQ== +"@react-aria/overlays@^3.23.2", "@react-aria/overlays@^3.30.0": + version "3.30.0" + resolved "https://registry.yarnpkg.com/@react-aria/overlays/-/overlays-3.30.0.tgz#e19f804c7fb9d99b25e33230cc3c155ed0b3cefb" + integrity sha512-UpjqSjYZx5FAhceWCRVsW6fX1sEwya1fQ/TKkL53FAlLFR8QKuoKqFlmiL43YUFTcGK3UdEOy3cWTleLQwdSmQ== dependencies: - "@react-aria/focus" "^3.21.1" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" + "@react-aria/focus" "^3.21.2" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" "@react-aria/ssr" "^3.9.10" - "@react-aria/utils" "^3.30.1" - "@react-aria/visually-hidden" "^3.8.27" - "@react-stately/overlays" "^3.6.19" - "@react-types/button" "^3.14.0" - "@react-types/overlays" "^3.9.1" - "@react-types/shared" "^3.32.0" + "@react-aria/utils" "^3.31.0" + "@react-aria/visually-hidden" "^3.8.28" + "@react-stately/overlays" "^3.6.20" + "@react-types/button" "^3.14.1" + "@react-types/overlays" "^3.9.2" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/progress@^3.4.26": - version "3.4.26" - resolved "https://registry.yarnpkg.com/@react-aria/progress/-/progress-3.4.26.tgz#6e3429499b16297d3029a1a71e84b570d765ee48" - integrity sha512-EJBzbE0IjXrJ19ofSyNKDnqC70flUM0Z+9heMRPLi6Uz01o6Uuz9tjyzmoPnd9Q1jnTT7dCl7ydhdYTGsWFcUg== +"@react-aria/progress@^3.4.27": + version "3.4.27" + resolved "https://registry.yarnpkg.com/@react-aria/progress/-/progress-3.4.27.tgz#bdc968f133ddd33e5feaf2903d43aa34435dad51" + integrity sha512-0OA1shs1575g1zmO8+rWozdbTnxThFFhOfuoL1m7UV5Dley6FHpueoKB1ECv7B+Qm4dQt6DoEqLg7wsbbQDhmg== dependencies: - "@react-aria/i18n" "^3.12.12" - "@react-aria/label" "^3.7.21" - "@react-aria/utils" "^3.30.1" - "@react-types/progress" "^3.5.15" - "@react-types/shared" "^3.32.0" + "@react-aria/i18n" "^3.12.13" + "@react-aria/label" "^3.7.22" + "@react-aria/utils" "^3.31.0" + "@react-types/progress" "^3.5.16" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/radio@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@react-aria/radio/-/radio-3.12.1.tgz#6330e7da6458a9b50cf1626805304a57f719c4fc" - integrity sha512-feZdMJyNp+UX03seIX0W6gdUk8xayTY+U0Ct61eci6YXzyyZoL2PVh49ojkbyZ2UZA/eXeygpdF5sgQrKILHCA== +"@react-aria/radio@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@react-aria/radio/-/radio-3.12.2.tgz#48ae0e9ba93e5c29e998fa3b64155a324a87f63e" + integrity sha512-I11f6I90neCh56rT/6ieAs3XyDKvEfbj/QmbU5cX3p+SJpRRPN0vxQi5D1hkh0uxDpeClxygSr31NmZsd4sqfg== dependencies: - "@react-aria/focus" "^3.21.1" - "@react-aria/form" "^3.1.1" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/label" "^3.7.21" - "@react-aria/utils" "^3.30.1" - "@react-stately/radio" "^3.11.1" - "@react-types/radio" "^3.9.1" - "@react-types/shared" "^3.32.0" + "@react-aria/focus" "^3.21.2" + "@react-aria/form" "^3.1.2" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/label" "^3.7.22" + "@react-aria/utils" "^3.31.0" + "@react-stately/radio" "^3.11.2" + "@react-types/radio" "^3.9.2" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/searchfield@^3.8.8": - version "3.8.8" - resolved "https://registry.yarnpkg.com/@react-aria/searchfield/-/searchfield-3.8.8.tgz#1504b20d257981b4586d4f10b44398a2c48cde0c" - integrity sha512-Yn6esCYEym3Cwrh/OZt6o/RFzsG2zyCAEZf7BhWk6NWUvP6aPwHgoSDVSjDN6YnnPn4yMqkqPnZulHV4+MvE/w== +"@react-aria/searchfield@^3.8.9": + version "3.8.9" + resolved "https://registry.yarnpkg.com/@react-aria/searchfield/-/searchfield-3.8.9.tgz#faa82c976bf3ef6c678bf9a2f9ae9bea9d4d3096" + integrity sha512-Yt2pj8Wb5/XsUr2T0DQqFv+DlFpzzWIWnNr9cJATUcWV/xw6ok7YFEg9+7EHtBmsCQxFFJtock1QfZzBw6qLtQ== dependencies: - "@react-aria/i18n" "^3.12.12" - "@react-aria/textfield" "^3.18.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/searchfield" "^3.5.15" - "@react-types/button" "^3.14.0" - "@react-types/searchfield" "^3.6.5" - "@react-types/shared" "^3.32.0" + "@react-aria/i18n" "^3.12.13" + "@react-aria/textfield" "^3.18.2" + "@react-aria/utils" "^3.31.0" + "@react-stately/searchfield" "^3.5.16" + "@react-types/button" "^3.14.1" + "@react-types/searchfield" "^3.6.6" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/select@^3.16.2": - version "3.16.2" - resolved "https://registry.yarnpkg.com/@react-aria/select/-/select-3.16.2.tgz#61850011221a62b9680a1ccfd4d2dfab25604e2d" - integrity sha512-MwsOJ6FfPxzrLP6spnYg2SUeGKNm4m5vyH6GebecLxTO1ee7/YyTNP1xkrQTqPMP9xx6uqhzFLFuCym2b6ripA== +"@react-aria/select@^3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@react-aria/select/-/select-3.17.0.tgz#d96933daca43939f4d59518f843c87a4f600426f" + integrity sha512-q5ZuyAn5jSOeI0Ys99951TaGcF4O7u1SSBVxPMwVVXOU8ZhToCNx+WG3n/JDYHEjqdo7sbsVRaPA7LkBzBGf5w== dependencies: - "@react-aria/form" "^3.1.1" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/label" "^3.7.21" - "@react-aria/listbox" "^3.14.8" - "@react-aria/menu" "^3.19.2" - "@react-aria/selection" "^3.25.1" - "@react-aria/utils" "^3.30.1" - "@react-aria/visually-hidden" "^3.8.27" - "@react-stately/select" "^3.7.1" - "@react-types/button" "^3.14.0" - "@react-types/select" "^3.10.1" - "@react-types/shared" "^3.32.0" + "@react-aria/form" "^3.1.2" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/label" "^3.7.22" + "@react-aria/listbox" "^3.15.0" + "@react-aria/menu" "^3.19.3" + "@react-aria/selection" "^3.26.0" + "@react-aria/utils" "^3.31.0" + "@react-aria/visually-hidden" "^3.8.28" + "@react-stately/select" "^3.8.0" + "@react-types/button" "^3.14.1" + "@react-types/select" "^3.11.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/selection@^3.25.1": - version "3.25.1" - resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.25.1.tgz#fdd7724bd251ee72082d3b62aa891ce8957d4e8a" - integrity sha512-HG+k3rDjuhnXPdVyv9CKiebee2XNkFYeYZBxEGlK3/pFVBzndnc8BXNVrXSgtCHLs2d090JBVKl1k912BPbj0Q== +"@react-aria/selection@^3.26.0": + version "3.26.0" + resolved "https://registry.yarnpkg.com/@react-aria/selection/-/selection-3.26.0.tgz#dc5906aa732b0dbd54d26dd6a5f1dc793055e29c" + integrity sha512-ZBH3EfWZ+RfhTj01dH8L17uT7iNbXWS8u77/fUpHgtrm0pwNVhx0TYVnLU1YpazQ/3WVpvWhmBB8sWwD1FlD/g== dependencies: - "@react-aria/focus" "^3.21.1" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/utils" "^3.30.1" - "@react-stately/selection" "^3.20.5" - "@react-types/shared" "^3.32.0" + "@react-aria/focus" "^3.21.2" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/utils" "^3.31.0" + "@react-stately/selection" "^3.20.6" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/separator@^3.4.12": - version "3.4.12" - resolved "https://registry.yarnpkg.com/@react-aria/separator/-/separator-3.4.12.tgz#4d6ccdf011dfb04fba2da9fdab8b70c2c7e77fbb" - integrity sha512-rvFCPdOPMQKY/Bpv2jNzXtetCuBLYSRCvpzam1LpMaEgwau5yECbId66+M2UX/cscPccKNU537SM6ei2j7RGog== +"@react-aria/separator@^3.4.13": + version "3.4.13" + resolved "https://registry.yarnpkg.com/@react-aria/separator/-/separator-3.4.13.tgz#6eea332c68b67d1081f4d8c2af8198c6bc46bfb4" + integrity sha512-0NlcrdBfQbcjWEXdHl3+uSY1272n2ljT1gWL2RIf6aQsQWTZ0gz0rTgRHy0MTXN+y+tICItUERJT4vmTLtIzVg== dependencies: - "@react-aria/utils" "^3.30.1" - "@react-types/shared" "^3.32.0" + "@react-aria/utils" "^3.31.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/slider@^3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@react-aria/slider/-/slider-3.8.1.tgz#26cb2dee6c19c72e859bcd76f2e8973dcbe9a29a" - integrity sha512-uPgwZQrcuqHaLU2prJtPEPIyN9ugZ7qGgi0SB2U8tvoODNVwuPvOaSsvR98Mn6jiAzMFNoWMydeIi+J1OjvWsQ== +"@react-aria/slider@^3.8.2": + version "3.8.2" + resolved "https://registry.yarnpkg.com/@react-aria/slider/-/slider-3.8.2.tgz#a075205b06fa714733e3aabfdbc63d11f5c67be7" + integrity sha512-6KyUGaVzRE4xAz1LKHbNh1q5wzxe58pdTHFSnxNe6nk1SCoHw7NfI4h2s2m6LgJ0megFxsT0Ir8aHaFyyxmbgg== dependencies: - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/label" "^3.7.21" - "@react-aria/utils" "^3.30.1" - "@react-stately/slider" "^3.7.1" - "@react-types/shared" "^3.32.0" - "@react-types/slider" "^3.8.1" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/label" "^3.7.22" + "@react-aria/utils" "^3.31.0" + "@react-stately/slider" "^3.7.2" + "@react-types/shared" "^3.32.1" + "@react-types/slider" "^3.8.2" "@swc/helpers" "^0.5.0" -"@react-aria/spinbutton@^3.6.18": - version "3.6.18" - resolved "https://registry.yarnpkg.com/@react-aria/spinbutton/-/spinbutton-3.6.18.tgz#cabc24687fab7c311b97c490faeced41688e43e2" - integrity sha512-dnmh7sNsprhYTpqCJhcuc9QJ9C/IG/o9TkgW5a9qcd2vS+dzEgqAiJKIMbJFG9kiJymv2NwIPysF12IWix+J3A== +"@react-aria/spinbutton@^3.6.19": + version "3.6.19" + resolved "https://registry.yarnpkg.com/@react-aria/spinbutton/-/spinbutton-3.6.19.tgz#fd0253b95b88e9fb12ff406b722b4fd1e1c8c836" + integrity sha512-xOIXegDpts9t3RSHdIN0iYQpdts0FZ3LbpYJIYVvdEHo9OpDS+ElnDzCGtwZLguvZlwc5s1LAKuKopDUsAEMkw== dependencies: - "@react-aria/i18n" "^3.12.12" + "@react-aria/i18n" "^3.12.13" "@react-aria/live-announcer" "^3.4.4" - "@react-aria/utils" "^3.30.1" - "@react-types/button" "^3.14.0" - "@react-types/shared" "^3.32.0" + "@react-aria/utils" "^3.31.0" + "@react-types/button" "^3.14.1" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" "@react-aria/ssr@^3.9.10": @@ -5696,166 +4013,166 @@ dependencies: "@swc/helpers" "^0.5.0" -"@react-aria/switch@^3.7.7": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@react-aria/switch/-/switch-3.7.7.tgz#10a800d059e887411ffde7b185616f83a75357a7" - integrity sha512-auV3g1qh+d/AZk7Idw2BOcYeXfCD9iDaiGmlcLJb9Eaz4nkq8vOkQxIXQFrn9Xhb+PfQzmQYKkt5N6P2ZNsw/g== +"@react-aria/switch@^3.7.8": + version "3.7.8" + resolved "https://registry.yarnpkg.com/@react-aria/switch/-/switch-3.7.8.tgz#e0a14f5eeda6017ae4d2b1cd236270d45c03e5ca" + integrity sha512-AfsUq1/YiuoprhcBUD9vDPyWaigAwctQNW1fMb8dROL+i/12B+Zekj8Ml+jbU69/kIVtfL0Jl7/0Bo9KK3X0xQ== dependencies: - "@react-aria/toggle" "^3.12.1" - "@react-stately/toggle" "^3.9.1" - "@react-types/shared" "^3.32.0" - "@react-types/switch" "^3.5.14" + "@react-aria/toggle" "^3.12.2" + "@react-stately/toggle" "^3.9.2" + "@react-types/shared" "^3.32.1" + "@react-types/switch" "^3.5.15" "@swc/helpers" "^0.5.0" -"@react-aria/table@^3.17.7": - version "3.17.7" - resolved "https://registry.yarnpkg.com/@react-aria/table/-/table-3.17.7.tgz#492bbdd6e815ce4a988824c83f6816250400c384" - integrity sha512-FxXryGTxePgh8plIxlOMwXdleGWjK52vsmbRoqz66lTIHMUMLTmmm+Y0V3lBOIoaW1rxvKcolYgS79ROnbDYBw== +"@react-aria/table@^3.17.8": + version "3.17.8" + resolved "https://registry.yarnpkg.com/@react-aria/table/-/table-3.17.8.tgz#bf9c72cfe13775d6ad6934855f21456d73844ef0" + integrity sha512-bXiZoxTMbsqUJsYDhHPzKc3jw0HFJ/xMsJ49a0f7mp5r9zACxNLeIU0wJ4Uvx37dnYOHKzGliG+rj5l4sph7MA== dependencies: - "@react-aria/focus" "^3.21.1" - "@react-aria/grid" "^3.14.4" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" + "@react-aria/focus" "^3.21.2" + "@react-aria/grid" "^3.14.5" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" "@react-aria/live-announcer" "^3.4.4" - "@react-aria/utils" "^3.30.1" - "@react-aria/visually-hidden" "^3.8.27" - "@react-stately/collections" "^3.12.7" + "@react-aria/utils" "^3.31.0" + "@react-aria/visually-hidden" "^3.8.28" + "@react-stately/collections" "^3.12.8" "@react-stately/flags" "^3.1.2" - "@react-stately/table" "^3.15.0" - "@react-types/checkbox" "^3.10.1" - "@react-types/grid" "^3.3.5" - "@react-types/shared" "^3.32.0" - "@react-types/table" "^3.13.3" + "@react-stately/table" "^3.15.1" + "@react-types/checkbox" "^3.10.2" + "@react-types/grid" "^3.3.6" + "@react-types/shared" "^3.32.1" + "@react-types/table" "^3.13.4" "@swc/helpers" "^0.5.0" -"@react-aria/tabs@^3.10.7": - version "3.10.7" - resolved "https://registry.yarnpkg.com/@react-aria/tabs/-/tabs-3.10.7.tgz#0ff066fa3252af78af24e98690c7aa9e1b2ebfce" - integrity sha512-iA1M6H+N+9GggsEy/6MmxpMpeOocwYgFy2EoEl3it24RVccY6iZT4AweJq96s5IYga5PILpn7VVcpssvhkPgeA== +"@react-aria/tabs@^3.10.8": + version "3.10.8" + resolved "https://registry.yarnpkg.com/@react-aria/tabs/-/tabs-3.10.8.tgz#95c76badd8a9c9583449d0c765ab9289627847bc" + integrity sha512-sPPJyTyoAqsBh76JinBAxStOcbjZvyWFYKpJ9Uqw+XT0ObshAPPFSGeh8DiQemPs02RwJdrfARPMhyqiX8t59A== dependencies: - "@react-aria/focus" "^3.21.1" - "@react-aria/i18n" "^3.12.12" - "@react-aria/selection" "^3.25.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/tabs" "^3.8.5" - "@react-types/shared" "^3.32.0" - "@react-types/tabs" "^3.3.18" + "@react-aria/focus" "^3.21.2" + "@react-aria/i18n" "^3.12.13" + "@react-aria/selection" "^3.26.0" + "@react-aria/utils" "^3.31.0" + "@react-stately/tabs" "^3.8.6" + "@react-types/shared" "^3.32.1" + "@react-types/tabs" "^3.3.19" "@swc/helpers" "^0.5.0" -"@react-aria/tag@^3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-aria/tag/-/tag-3.7.1.tgz#b9f018f345e54e5ab99008c2c2c2104c91e31c0b" - integrity sha512-VpF26ez+QmEzTK8E9tXZ4cofa1wocjnIo/Bd1LCXgLCytnHAkYGxeIRm5QbznJ0aF/9UgR1QtMqhyRrCZg9QqA== +"@react-aria/tag@^3.7.2": + version "3.7.2" + resolved "https://registry.yarnpkg.com/@react-aria/tag/-/tag-3.7.2.tgz#5a655640deaf1705b8001abd636a7b96ae2250e9" + integrity sha512-JV679P5r4DftbqyNBRt7Nw9mP7dxaKPfikjyQuvUoEOa06wBLbM/hU9RJUPRvqK+Un6lgBDAmXD9NNf4N2xpdw== dependencies: - "@react-aria/gridlist" "^3.14.0" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/label" "^3.7.21" - "@react-aria/selection" "^3.25.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/list" "^3.13.0" - "@react-types/button" "^3.14.0" - "@react-types/shared" "^3.32.0" + "@react-aria/gridlist" "^3.14.1" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/label" "^3.7.22" + "@react-aria/selection" "^3.26.0" + "@react-aria/utils" "^3.31.0" + "@react-stately/list" "^3.13.1" + "@react-types/button" "^3.14.1" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/textfield@^3.18.1": - version "3.18.1" - resolved "https://registry.yarnpkg.com/@react-aria/textfield/-/textfield-3.18.1.tgz#73f40b30b2e5c09af9c2970473397035e315da72" - integrity sha512-8yCoirnQzbbQgdk5J5bqimEu3GhHZ9FXeMHez1OF+H+lpTwyTYQ9XgioEN3HKnVUBNEufG4lYkQMxTKJdq1v9g== +"@react-aria/textfield@^3.18.2": + version "3.18.2" + resolved "https://registry.yarnpkg.com/@react-aria/textfield/-/textfield-3.18.2.tgz#d0198ac9833396f3b831e7e3c4cbe751979a4014" + integrity sha512-G+lM8VYSor6g9Yptc6hLZ6BF+0cq0pYol1z6wdQUQgJN8tg4HPtzq75lsZtlCSIznL3amgRAxJtd0dUrsAnvaQ== dependencies: - "@react-aria/form" "^3.1.1" - "@react-aria/interactions" "^3.25.5" - "@react-aria/label" "^3.7.21" - "@react-aria/utils" "^3.30.1" - "@react-stately/form" "^3.2.1" + "@react-aria/form" "^3.1.2" + "@react-aria/interactions" "^3.25.6" + "@react-aria/label" "^3.7.22" + "@react-aria/utils" "^3.31.0" + "@react-stately/form" "^3.2.2" "@react-stately/utils" "^3.10.8" - "@react-types/shared" "^3.32.0" - "@react-types/textfield" "^3.12.5" + "@react-types/shared" "^3.32.1" + "@react-types/textfield" "^3.12.6" "@swc/helpers" "^0.5.0" -"@react-aria/toast@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@react-aria/toast/-/toast-3.0.7.tgz#bf72a7ef266affbb3a23e073c8e5afc1a4326aad" - integrity sha512-nuxPQ7wcSTg9UNMhXl9Uwyc5you/D1RfwymI3VDa5OGTZdJOmV2j94nyjBfMO2168EYMZjw+wEovvOZphs2Pbw== +"@react-aria/toast@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@react-aria/toast/-/toast-3.0.8.tgz#50a751654a4f4917649a2a411f1e28418dc60dd1" + integrity sha512-rfJIms6AkMyQ7ZgKrMZgGfPwGcB/t1JoEwbc1PAmXcAvFI/hzF6YF7ZFDXiq38ucFsP9PnHmbXIzM9w4ccl18A== dependencies: - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/landmark" "^3.0.6" - "@react-aria/utils" "^3.30.1" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/landmark" "^3.0.7" + "@react-aria/utils" "^3.31.0" "@react-stately/toast" "^3.1.2" - "@react-types/button" "^3.14.0" - "@react-types/shared" "^3.32.0" + "@react-types/button" "^3.14.1" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/toggle@^3.12.1": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@react-aria/toggle/-/toggle-3.12.1.tgz#2a32b7e8e2cbc0a8494350ba4981000093af882e" - integrity sha512-XaFiRs1KEcIT6bTtVY/KTQxw4kinemj/UwXw2iJTu9XS43hhJ/9cvj8KzNGrKGqaxTpOYj62TnSHZbSiFViHDA== +"@react-aria/toggle@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@react-aria/toggle/-/toggle-3.12.2.tgz#909c7c8b9bbeb2cc93a18297363eebb46354b0d4" + integrity sha512-g25XLYqJuJpt0/YoYz2Rab8ax+hBfbssllcEFh0v0jiwfk2gwTWfRU9KAZUvxIqbV8Nm8EBmrYychDpDcvW1kw== dependencies: - "@react-aria/interactions" "^3.25.5" - "@react-aria/utils" "^3.30.1" - "@react-stately/toggle" "^3.9.1" - "@react-types/checkbox" "^3.10.1" - "@react-types/shared" "^3.32.0" + "@react-aria/interactions" "^3.25.6" + "@react-aria/utils" "^3.31.0" + "@react-stately/toggle" "^3.9.2" + "@react-types/checkbox" "^3.10.2" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/toolbar@3.0.0-beta.20": - version "3.0.0-beta.20" - resolved "https://registry.yarnpkg.com/@react-aria/toolbar/-/toolbar-3.0.0-beta.20.tgz#e1b56dde51c59dc331d93783869505fb225786f4" - integrity sha512-Kxvqw+TpVOE/eSi8RAQ9xjBQ2uXe8KkRvlRNQWQsrzkZDkXhzqGfQuJnBmozFxqpzSLwaVqQajHFUSvPAScT8Q== +"@react-aria/toolbar@3.0.0-beta.21": + version "3.0.0-beta.21" + resolved "https://registry.yarnpkg.com/@react-aria/toolbar/-/toolbar-3.0.0-beta.21.tgz#936929637fb89b1ba562aeeeeeaae6253a952bdd" + integrity sha512-yRCk/GD8g+BhdDgxd3I0a0c8Ni4Wyo6ERzfSoBkPkwQ4X2E2nkopmraM9D0fXw4UcIr4bnmvADzkHXtBN0XrBg== dependencies: - "@react-aria/focus" "^3.21.1" - "@react-aria/i18n" "^3.12.12" - "@react-aria/utils" "^3.30.1" - "@react-types/shared" "^3.32.0" + "@react-aria/focus" "^3.21.2" + "@react-aria/i18n" "^3.12.13" + "@react-aria/utils" "^3.31.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/tooltip@^3.8.7": - version "3.8.7" - resolved "https://registry.yarnpkg.com/@react-aria/tooltip/-/tooltip-3.8.7.tgz#69138ba63ca4ecec903e13d99c9cbf74980e2280" - integrity sha512-Aj7DPJYGZ9/+2ZfhkvbN7YMeA5qu4oy4LVQiMCpqNwcFzvhTAVhN7J7cS6KjA64fhd1shKm3BZ693Ez6lSpqwg== +"@react-aria/tooltip@^3.8.8": + version "3.8.8" + resolved "https://registry.yarnpkg.com/@react-aria/tooltip/-/tooltip-3.8.8.tgz#a9320dd5edc953fbf7a24b9c30312408730e9743" + integrity sha512-CmHUqtXtFWmG4AHMEr9hIVex+oscK6xcM2V47gq9ijNInxe3M6UBu/dBdkgGP/jYv9N7tzCAjTR8nNIHQXwvWw== dependencies: - "@react-aria/interactions" "^3.25.5" - "@react-aria/utils" "^3.30.1" - "@react-stately/tooltip" "^3.5.7" - "@react-types/shared" "^3.32.0" - "@react-types/tooltip" "^3.4.20" + "@react-aria/interactions" "^3.25.6" + "@react-aria/utils" "^3.31.0" + "@react-stately/tooltip" "^3.5.8" + "@react-types/shared" "^3.32.1" + "@react-types/tooltip" "^3.4.21" "@swc/helpers" "^0.5.0" -"@react-aria/tree@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@react-aria/tree/-/tree-3.1.3.tgz#061f87c07709e3810de7e3b2ec6f70596e54f6ac" - integrity sha512-CWjIvJS540Kzzxs1f4fF0ajPUfYoeptcA6MmXHBlCKE2euRSvKW6F1ZhvLVq81YsYWuAfBKnG2/JsTgBZnGPVQ== +"@react-aria/tree@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@react-aria/tree/-/tree-3.1.4.tgz#d264355534c4af5203a6b6f3a659681504e31f00" + integrity sha512-6pbFeN0dAsCOrFGUKU39CNjft20zCAjLfMqfkRWisL+JkUHI2nq6odUJF5jJTsU1C+1951+3oFOmVxPX+K+akQ== dependencies: - "@react-aria/gridlist" "^3.14.0" - "@react-aria/i18n" "^3.12.12" - "@react-aria/selection" "^3.25.1" - "@react-aria/utils" "^3.30.1" - "@react-stately/tree" "^3.9.2" - "@react-types/button" "^3.14.0" - "@react-types/shared" "^3.32.0" + "@react-aria/gridlist" "^3.14.1" + "@react-aria/i18n" "^3.12.13" + "@react-aria/selection" "^3.26.0" + "@react-aria/utils" "^3.31.0" + "@react-stately/tree" "^3.9.3" + "@react-types/button" "^3.14.1" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-aria/utils@^3.25.2", "@react-aria/utils@^3.30.1": - version "3.30.1" - resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.30.1.tgz#9eb704d4193674816e1e0eab758b12c2d69d7b0b" - integrity sha512-zETcbDd6Vf9GbLndO6RiWJadIZsBU2MMm23rBACXLmpRztkrIqPEb2RVdlLaq1+GklDx0Ii6PfveVjx+8S5U6A== +"@react-aria/utils@^3.25.2", "@react-aria/utils@^3.31.0": + version "3.31.0" + resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.31.0.tgz#4710e35bf658234cf4b53eec9742f25e51637b12" + integrity sha512-ABOzCsZrWzf78ysswmguJbx3McQUja7yeGj6/vZo4JVsZNlxAN+E9rs381ExBRI0KzVo6iBTeX5De8eMZPJXig== dependencies: "@react-aria/ssr" "^3.9.10" "@react-stately/flags" "^3.1.2" "@react-stately/utils" "^3.10.8" - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" clsx "^2.0.0" -"@react-aria/visually-hidden@^3.8.27": - version "3.8.27" - resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.8.27.tgz#5e73b761b2ea932b30f818f88c9b290e6437f991" - integrity sha512-hD1DbL3WnjPnCdlQjwe19bQVRAGJyN0Aaup+s7NNtvZUn7AjoEH78jo8TE+L8yM7z/OZUQF26laCfYqeIwWn4g== +"@react-aria/visually-hidden@^3.8.28": + version "3.8.28" + resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.8.28.tgz#61fc99c2d2662e7347abe25a421d138a3a81db46" + integrity sha512-KRRjbVVob2CeBidF24dzufMxBveEUtUu7IM+hpdZKB+gxVROoh4XRLPv9SFmaH89Z7D9To3QoykVZoWD0lan6Q== dependencies: - "@react-aria/interactions" "^3.25.5" - "@react-aria/utils" "^3.30.1" - "@react-types/shared" "^3.32.0" + "@react-aria/interactions" "^3.25.6" + "@react-aria/utils" "^3.31.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" "@react-icons/all-files@^4.1.0": @@ -5908,104 +4225,103 @@ "@react-spring/shared" "~9.7.5" "@react-spring/types" "~9.7.5" -"@react-stately/calendar@^3.8.4": - version "3.8.4" - resolved "https://registry.yarnpkg.com/@react-stately/calendar/-/calendar-3.8.4.tgz#c64b29010dc0aba78592cb9a85a09b3ee5a49e17" - integrity sha512-q9mq0ydOLS5vJoHLnYfSCS/vppfjbg0XHJlAoPR+w+WpYZF4wPP453SrlX9T1DbxCEYFTpcxcMk/O8SDW3miAw== +"@react-stately/calendar@^3.9.0": + version "3.9.0" + resolved "https://registry.yarnpkg.com/@react-stately/calendar/-/calendar-3.9.0.tgz#22da3b99692eabf53f94a58df7768d2135664c91" + integrity sha512-U5Nf2kx9gDhJRxdDUm5gjfyUlt/uUfOvM1vDW2UA62cA6+2k2cavMLc2wNlXOb/twFtl6p0joYKHG7T4xnEFkg== dependencies: - "@internationalized/date" "^3.9.0" + "@internationalized/date" "^3.10.0" "@react-stately/utils" "^3.10.8" - "@react-types/calendar" "^3.7.4" - "@react-types/shared" "^3.32.0" + "@react-types/calendar" "^3.8.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/checkbox@^3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-stately/checkbox/-/checkbox-3.7.1.tgz#7a0a42f94705acc21ca702ad14b067a69cef4d47" - integrity sha512-ezfKRJsDuRCLtNoNOi9JXCp6PjffZWLZ/vENW/gbRDL8i46RKC/HpfJrJhvTPmsLYazxPC99Me9iq3v0VoNCsw== +"@react-stately/checkbox@^3.7.2": + version "3.7.2" + resolved "https://registry.yarnpkg.com/@react-stately/checkbox/-/checkbox-3.7.2.tgz#0a2293e7b97a366f94b7830d3deb2c0e9876c829" + integrity sha512-j1ycUVz5JmqhaL6mDZgDNZqBilOB8PBW096sDPFaTtuYreDx2HOd1igxiIvwlvPESZwsJP7FVM3mYnaoXtpKPA== dependencies: - "@react-stately/form" "^3.2.1" + "@react-stately/form" "^3.2.2" "@react-stately/utils" "^3.10.8" - "@react-types/checkbox" "^3.10.1" - "@react-types/shared" "^3.32.0" + "@react-types/checkbox" "^3.10.2" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/collections@^3.12.7": - version "3.12.7" - resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.12.7.tgz#6e01a8988696e62301690eb7cd1497568236f222" - integrity sha512-0kQc0mI986GOCQHvRy4L0JQiotIK/KmEhR9Mu/6V0GoSdqg5QeUe4kyoNWj3bl03uQXme80v0L2jLHt+fOHHjA== +"@react-stately/collections@^3.12.8": + version "3.12.8" + resolved "https://registry.yarnpkg.com/@react-stately/collections/-/collections-3.12.8.tgz#f38692fb9c6384fb91d1c50052a40e595d3efa2c" + integrity sha512-AceJYLLXt1Y2XIcOPi6LEJSs4G/ubeYW3LqOCQbhfIgMaNqKfQMIfagDnPeJX9FVmPFSlgoCBxb1pTJW2vjCAQ== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/color@^3.9.1": - version "3.9.1" - resolved "https://registry.yarnpkg.com/@react-stately/color/-/color-3.9.1.tgz#268d1ac94c0d5b67398ae62f2fefcd86846b9267" - integrity sha512-fCj7fFamyuQbL++MOcf4W4d4aFWXYWJ2UI1dKhrXdqVz/ly9CBVjy/MHKQ6xZX2tEiuoPX5NexfxzKKiozE50Q== +"@react-stately/color@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@react-stately/color/-/color-3.9.2.tgz#87ac8461a01478208c302efa47582e872ff78c65" + integrity sha512-F+6Do8W3yu/4n7MpzZtbXwVukcLTFYYDIUtpoR+Jl52UmAr9Hf1CQgkyTI2azv1ZMzj1mVrTBhpBL0q27kFZig== dependencies: "@internationalized/number" "^3.6.5" "@internationalized/string" "^3.2.7" - "@react-stately/form" "^3.2.1" - "@react-stately/numberfield" "^3.10.1" - "@react-stately/slider" "^3.7.1" + "@react-stately/form" "^3.2.2" + "@react-stately/numberfield" "^3.10.2" + "@react-stately/slider" "^3.7.2" "@react-stately/utils" "^3.10.8" - "@react-types/color" "^3.1.1" - "@react-types/shared" "^3.32.0" + "@react-types/color" "^3.1.2" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/combobox@^3.11.1": - version "3.11.1" - resolved "https://registry.yarnpkg.com/@react-stately/combobox/-/combobox-3.11.1.tgz#8bc48b9e9725db3382c6d1afa3946394fc097a20" - integrity sha512-ZZh+SaAmddoY+MeJr470oDYA0nGaJm4xoHCBapaBA0JNakGC/wTzF/IRz3tKQT2VYK4rumr1BJLZQydGp7zzeg== +"@react-stately/combobox@^3.12.0": + version "3.12.0" + resolved "https://registry.yarnpkg.com/@react-stately/combobox/-/combobox-3.12.0.tgz#71e6c9a8ee2f75edc1d233df7b6d7a0b7aeb6fbe" + integrity sha512-A6q9R/7cEa/qoQsBkdslXWvD7ztNLLQ9AhBhVN9QvzrmrH5B4ymUwcTU8lWl22ykH7RRwfonLeLXJL4C+/L2oQ== dependencies: - "@react-stately/collections" "^3.12.7" - "@react-stately/form" "^3.2.1" - "@react-stately/list" "^3.13.0" - "@react-stately/overlays" "^3.6.19" - "@react-stately/select" "^3.7.1" + "@react-stately/collections" "^3.12.8" + "@react-stately/form" "^3.2.2" + "@react-stately/list" "^3.13.1" + "@react-stately/overlays" "^3.6.20" "@react-stately/utils" "^3.10.8" - "@react-types/combobox" "^3.13.8" - "@react-types/shared" "^3.32.0" + "@react-types/combobox" "^3.13.9" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/data@^3.14.0": - version "3.14.0" - resolved "https://registry.yarnpkg.com/@react-stately/data/-/data-3.14.0.tgz#224d1aca726cad79b05f32ee37356ce931b1356d" - integrity sha512-3GUsOXatYohBX2wTQHnJKVQlFfYXnt7IoDDuIaUeM8kXlF+dRSFAOAfPUSGAph6lJz2ht4dq1SEl6ZL/u+dRlQ== +"@react-stately/data@^3.14.1": + version "3.14.1" + resolved "https://registry.yarnpkg.com/@react-stately/data/-/data-3.14.1.tgz#ba5550dee9d0d8ba10a4f6c763c3251631f73582" + integrity sha512-lDNc4gZ6kVZcrABeeQZPTTnP+1ykNylSvFzAC/Hq1fs8+s54xLRvoENWIyG+yK19N9TIGEoA0AOFG8PoAun43g== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/datepicker@^3.15.1": - version "3.15.1" - resolved "https://registry.yarnpkg.com/@react-stately/datepicker/-/datepicker-3.15.1.tgz#ca18ba954c1c1e083fb31a00c3ea76f1ed7bafab" - integrity sha512-t64iYPms9y+MEQgOAu0XUHccbEXWVUWBHJWnYvAmILCHY8ZAOeSPAT1g4v9nzyiApcflSNXgpsvbs9BBEsrWww== +"@react-stately/datepicker@^3.15.2": + version "3.15.2" + resolved "https://registry.yarnpkg.com/@react-stately/datepicker/-/datepicker-3.15.2.tgz#e873aecb5ec037b2da21b267c365c52443437dcb" + integrity sha512-S5GL+W37chvV8knv9v0JRv0L6hKo732qqabCCHXzOpYxkLIkV4f/y3cHdEzFWzpZ0O0Gkg7WgeYo160xOdBKYg== dependencies: - "@internationalized/date" "^3.9.0" + "@internationalized/date" "^3.10.0" "@internationalized/string" "^3.2.7" - "@react-stately/form" "^3.2.1" - "@react-stately/overlays" "^3.6.19" + "@react-stately/form" "^3.2.2" + "@react-stately/overlays" "^3.6.20" "@react-stately/utils" "^3.10.8" - "@react-types/datepicker" "^3.13.1" - "@react-types/shared" "^3.32.0" + "@react-types/datepicker" "^3.13.2" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/disclosure@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@react-stately/disclosure/-/disclosure-3.0.7.tgz#dd1d4451fb6368cbc1d7a7f6679599f1585a518d" - integrity sha512-ogM2y02uhpGfSOaBKIDz+hEha8qBH6WIRHRkoqdF4sEaR1kfq8LvBWdP1e/OcqHAhuRr28P2Rf0TDicnAnN7uA== +"@react-stately/disclosure@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@react-stately/disclosure/-/disclosure-3.0.8.tgz#ff6a3cc61993d25881cb8d6a82fcf829f139e02a" + integrity sha512-/Ce/Z76y85eSBZiemfU/uEyXkBBa1RdfLRaKD13rnfUV7/nS3ae1VtNlsXgmwQjWv2pmAiSuEKYMbZfVL7q/lQ== dependencies: "@react-stately/utils" "^3.10.8" - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/dnd@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@react-stately/dnd/-/dnd-3.7.0.tgz#2607fad45e32ed40e40623b8b9cc7a2a1f265bfe" - integrity sha512-DddpCVkqt6vUPHLqe/2FHxW/gkR4tEt7W0MbFcCeCLbc9lmvzOClPwNpjmU/3UnU+vPQnwGGUeF3HvaxduUq2Q== +"@react-stately/dnd@^3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@react-stately/dnd/-/dnd-3.7.1.tgz#23b2425553fc1cbc76821c96b30ecca1c9d16013" + integrity sha512-O1JBJ4HI1rVNKuoa5NXiC5FCrCEkr9KVBoKNlTZU8/cnQselhbEsUfMglAakO2EuwIaM1tIXoNF5J/N5P+6lTA== dependencies: - "@react-stately/selection" "^3.20.5" - "@react-types/shared" "^3.32.0" + "@react-stately/selection" "^3.20.6" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" "@react-stately/flags@^3.1.2": @@ -6015,141 +4331,142 @@ dependencies: "@swc/helpers" "^0.5.0" -"@react-stately/form@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@react-stately/form/-/form-3.2.1.tgz#5c8caad11ea952f0fa1835ae31da67c208e96a54" - integrity sha512-btgOPXkwvd6fdWKoepy5Ue43o2932OSkQxozsR7US1ffFLcQc3SNlADHaRChIXSG8ffPo9t0/Sl4eRzaKu3RgQ== +"@react-stately/form@^3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@react-stately/form/-/form-3.2.2.tgz#c1ae1264a414dd5e3e8ae0f21baf4814588d8c53" + integrity sha512-soAheOd7oaTO6eNs6LXnfn0tTqvOoe3zN9FvtIhhrErKz9XPc5sUmh3QWwR45+zKbitOi1HOjfA/gifKhZcfWw== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/grid@^3.11.5": - version "3.11.5" - resolved "https://registry.yarnpkg.com/@react-stately/grid/-/grid-3.11.5.tgz#1e523cee3048cee0a812050fd5383c4eb3e0c0e3" - integrity sha512-4cNjGYaNkcVS2wZoNHUrMRICBpkHStYw57EVemP7MjiWEVu53kzPgR1Iwmti2WFCpi1Lwu0qWNeCfzKpXW4BTg== +"@react-stately/grid@^3.11.6": + version "3.11.6" + resolved "https://registry.yarnpkg.com/@react-stately/grid/-/grid-3.11.6.tgz#2993450ec5d0602e794f731fd49b3475f57e5547" + integrity sha512-vWPAkzpeTIsrurHfMubzMuqEw7vKzFhIJeEK5sEcLunyr1rlADwTzeWrHNbPMl66NAIAi70Dr1yNq+kahQyvMA== dependencies: - "@react-stately/collections" "^3.12.7" - "@react-stately/selection" "^3.20.5" - "@react-types/grid" "^3.3.5" - "@react-types/shared" "^3.32.0" + "@react-stately/collections" "^3.12.8" + "@react-stately/selection" "^3.20.6" + "@react-types/grid" "^3.3.6" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/list@^3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@react-stately/list/-/list-3.13.0.tgz#0429c212cbb674d585ec68a3d440300f60021c73" - integrity sha512-Panv8TmaY8lAl3R7CRhyUadhf2yid6VKsRDBCBB1FHQOOeL7lqIraz/oskvpabZincuaIUWqQhqYslC4a6dvuA== +"@react-stately/list@^3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@react-stately/list/-/list-3.13.1.tgz#4afd36a87c8fd991a4447d28cc76d51fffddb837" + integrity sha512-eHaoauh21twbcl0kkwULhVJ+CzYcy1jUjMikNVMHOQdhr4WIBdExf7PmSgKHKqsSPhpGg6IpTCY2dUX3RycjDg== dependencies: - "@react-stately/collections" "^3.12.7" - "@react-stately/selection" "^3.20.5" + "@react-stately/collections" "^3.12.8" + "@react-stately/selection" "^3.20.6" "@react-stately/utils" "^3.10.8" - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/menu@^3.9.7": - version "3.9.7" - resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.9.7.tgz#f7bab58d8ced5a2e4d960efbaf18dd27b13ac510" - integrity sha512-mfz1YoCgtje61AGxVdQaAFLlOXt9vV5dd1lQljYUPRafA/qu5Ursz4fNVlcavWW9GscebzFQErx+y0oSP7EUtQ== +"@react-stately/menu@^3.9.8": + version "3.9.8" + resolved "https://registry.yarnpkg.com/@react-stately/menu/-/menu-3.9.8.tgz#5c2e781dadc3331bc5b3735fe30bf62616f9145f" + integrity sha512-bo0NOhofnTHLESiYfsSSw6gyXiPVJJ0UlN2igUXtJk5PmyhWjFzUzTzcnd7B028OB0si9w3LIWM3stqz5271Eg== dependencies: - "@react-stately/overlays" "^3.6.19" - "@react-types/menu" "^3.10.4" - "@react-types/shared" "^3.32.0" + "@react-stately/overlays" "^3.6.20" + "@react-types/menu" "^3.10.5" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/numberfield@^3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@react-stately/numberfield/-/numberfield-3.10.1.tgz#df6c790e56670ede8132e194ddb26a6fc4743bfe" - integrity sha512-lXABmcTneVvXYMGTgZvTCr4E+upOi7VRLL50ZzTMJqHwB/qlEQPAam3dmddQRwIsuCM3MEnL7bSZFFlSYAtkEw== +"@react-stately/numberfield@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@react-stately/numberfield/-/numberfield-3.10.2.tgz#aa1fcaec84cd441ea5e847dd3e9eca784045be21" + integrity sha512-jlKVFYaH3RX5KvQ7a+SAMQuPccZCzxLkeYkBE64u1Zvi7YhJ8hkTMHG/fmZMbk1rHlseE2wfBdk0Rlya3MvoNQ== dependencies: "@internationalized/number" "^3.6.5" - "@react-stately/form" "^3.2.1" + "@react-stately/form" "^3.2.2" "@react-stately/utils" "^3.10.8" - "@react-types/numberfield" "^3.8.14" + "@react-types/numberfield" "^3.8.15" "@swc/helpers" "^0.5.0" -"@react-stately/overlays@^3.6.19": - version "3.6.19" - resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.6.19.tgz#8c5fbe20cc56c594a13ad19ae1a1ef424e67c954" - integrity sha512-swZXfDvxTYd7tKEpijEHBFFaEmbbnCvEhGlmrAz4K72cuRR9O5u+lcla8y1veGBbBSzrIdKNdBoIIJ+qQH+1TQ== +"@react-stately/overlays@^3.6.20": + version "3.6.20" + resolved "https://registry.yarnpkg.com/@react-stately/overlays/-/overlays-3.6.20.tgz#e638ad0e073b6cf1d27f018aa41a4ce0fbae5f5b" + integrity sha512-YAIe+uI8GUXX8F/0Pzr53YeC5c/bjqbzDFlV8NKfdlCPa6+Jp4B/IlYVjIooBj9+94QvbQdjylegvYWK/iPwlg== dependencies: "@react-stately/utils" "^3.10.8" - "@react-types/overlays" "^3.9.1" + "@react-types/overlays" "^3.9.2" "@swc/helpers" "^0.5.0" -"@react-stately/radio@^3.11.1": - version "3.11.1" - resolved "https://registry.yarnpkg.com/@react-stately/radio/-/radio-3.11.1.tgz#a4c2eb9296699fed7040b97ccdf088d3d6355f66" - integrity sha512-ld9KWztI64gssg7zSZi9li21sG85Exb+wFPXtCim1TtpnEpmRtB05pXDDS3xkkIU/qOL4eMEnnLO7xlNm0CRIA== +"@react-stately/radio@^3.11.2": + version "3.11.2" + resolved "https://registry.yarnpkg.com/@react-stately/radio/-/radio-3.11.2.tgz#a149fb9448dc258441662893f83a70e88e4d4aea" + integrity sha512-UM7L6AW+k8edhSBUEPZAqiWNRNadfOKK7BrCXyBiG79zTz0zPcXRR+N+gzkDn7EMSawDeyK1SHYUuoSltTactg== dependencies: - "@react-stately/form" "^3.2.1" + "@react-stately/form" "^3.2.2" "@react-stately/utils" "^3.10.8" - "@react-types/radio" "^3.9.1" - "@react-types/shared" "^3.32.0" + "@react-types/radio" "^3.9.2" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/searchfield@^3.5.15": - version "3.5.15" - resolved "https://registry.yarnpkg.com/@react-stately/searchfield/-/searchfield-3.5.15.tgz#683b1f8a5726e0637a7c8f19fbe6c0f270bfb75e" - integrity sha512-6LVVvm6Z60fetYLLa4B2Q/BIY+fSSknLTw8sjlV+iDEPAknj7MqWtoLz2gSQRTFKvyO7ZCjJoar8ZU/JEqcm+w== +"@react-stately/searchfield@^3.5.16": + version "3.5.16" + resolved "https://registry.yarnpkg.com/@react-stately/searchfield/-/searchfield-3.5.16.tgz#3b768870d08fa2ef7747513d02d167717961d548" + integrity sha512-MRfqT1lZ24r94GuFNcGJXsfijZoWjSMySCT60T6NXtbOzVPuAF3K+pL70Rayq/EWLJjS2NPHND11VTs0VdcE0Q== dependencies: "@react-stately/utils" "^3.10.8" - "@react-types/searchfield" "^3.6.5" + "@react-types/searchfield" "^3.6.6" "@swc/helpers" "^0.5.0" -"@react-stately/select@^3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-stately/select/-/select-3.7.1.tgz#2bb1a52f345b301a3073aa62dba4934697b5bf0c" - integrity sha512-vZt4j9yVyOTWWJoP9plXmYaPZH2uMxbjcGMDbiShwsFiK8C2m9b3Cvy44TZehfzCWzpMVR/DYxEYuonEIGA82Q== +"@react-stately/select@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-stately/select/-/select-3.8.0.tgz#ccb1b7d6d0f40b166444f3df27273892854ff23e" + integrity sha512-A721nlt0DSCDit0wKvhcrXFTG5Vv1qkEVkeKvobmETZy6piKvwh0aaN8iQno5AFuZaj1iOZeNjZ/20TsDJR/4A== dependencies: - "@react-stately/form" "^3.2.1" - "@react-stately/list" "^3.13.0" - "@react-stately/overlays" "^3.6.19" - "@react-types/select" "^3.10.1" - "@react-types/shared" "^3.32.0" - "@swc/helpers" "^0.5.0" - -"@react-stately/selection@^3.20.5": - version "3.20.5" - resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.20.5.tgz#11f4fae7b6038ca167a9bd1513a57c353d308bbd" - integrity sha512-YezWUNEn2pz5mQlbhmngiX9HqQsruLSXlkrAzB1DD6aliGrUvPKufTTGCixOaB8KVeCamdiFAgx1WomNplzdQA== - dependencies: - "@react-stately/collections" "^3.12.7" + "@react-stately/form" "^3.2.2" + "@react-stately/list" "^3.13.1" + "@react-stately/overlays" "^3.6.20" "@react-stately/utils" "^3.10.8" - "@react-types/shared" "^3.32.0" + "@react-types/select" "^3.11.0" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" -"@react-stately/slider@^3.7.1": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@react-stately/slider/-/slider-3.7.1.tgz#14f7b995eec95c3b25baa270480547afd4d62d51" - integrity sha512-J+G18m1bZBCNQSXhxGd4GNGDUVonv4Sg7fZL+uLhXUy1x71xeJfFdKaviVvZcggtl0/q5InW41PXho7EouMDEg== +"@react-stately/selection@^3.20.6": + version "3.20.6" + resolved "https://registry.yarnpkg.com/@react-stately/selection/-/selection-3.20.6.tgz#17d4d4553403de6ab690172a8d36e0423a5173fb" + integrity sha512-a0bjuP2pJYPKEiedz2Us1W1aSz0iHRuyeQEdBOyL6Z6VUa6hIMq9H60kvseir2T85cOa4QggizuRV7mcO6bU5w== + dependencies: + "@react-stately/collections" "^3.12.8" + "@react-stately/utils" "^3.10.8" + "@react-types/shared" "^3.32.1" + "@swc/helpers" "^0.5.0" + +"@react-stately/slider@^3.7.2": + version "3.7.2" + resolved "https://registry.yarnpkg.com/@react-stately/slider/-/slider-3.7.2.tgz#9dfe6f7e74397f717b1623bc06ba8e375510d056" + integrity sha512-EVBHUdUYwj++XqAEiQg2fGi8Reccznba0uyQ3gPejF0pAc390Q/J5aqiTEDfiCM7uJ6WHxTM6lcCqHQBISk2dQ== dependencies: "@react-stately/utils" "^3.10.8" - "@react-types/shared" "^3.32.0" - "@react-types/slider" "^3.8.1" + "@react-types/shared" "^3.32.1" + "@react-types/slider" "^3.8.2" "@swc/helpers" "^0.5.0" -"@react-stately/table@^3.15.0": - version "3.15.0" - resolved "https://registry.yarnpkg.com/@react-stately/table/-/table-3.15.0.tgz#eb84fcf530140fb2e269c22cef21bd3c3b1da1e2" - integrity sha512-KbvkrVF3sb25IPwyte9JcG5/4J7TgjHSsw7D61d/T/oUFMYPYVeolW9/2y+6u48WPkDJE8HJsurme+HbTN0FQA== +"@react-stately/table@^3.15.1": + version "3.15.1" + resolved "https://registry.yarnpkg.com/@react-stately/table/-/table-3.15.1.tgz#3a2f5ca0788cea200c4c96858604fb4c0139f8b0" + integrity sha512-MhMAgE/LgAzHcAn1P3p/nQErzJ6DiixSJ1AOt2JlnAKEb5YJg4ATKWCb2IjBLwywt9ZCzfm3KMUzkctZqAoxwA== dependencies: - "@react-stately/collections" "^3.12.7" + "@react-stately/collections" "^3.12.8" "@react-stately/flags" "^3.1.2" - "@react-stately/grid" "^3.11.5" - "@react-stately/selection" "^3.20.5" + "@react-stately/grid" "^3.11.6" + "@react-stately/selection" "^3.20.6" "@react-stately/utils" "^3.10.8" - "@react-types/grid" "^3.3.5" - "@react-types/shared" "^3.32.0" - "@react-types/table" "^3.13.3" + "@react-types/grid" "^3.3.6" + "@react-types/shared" "^3.32.1" + "@react-types/table" "^3.13.4" "@swc/helpers" "^0.5.0" -"@react-stately/tabs@^3.8.5": - version "3.8.5" - resolved "https://registry.yarnpkg.com/@react-stately/tabs/-/tabs-3.8.5.tgz#2447fd3aba1ea05ce9536f3626f9bdafb97bfd67" - integrity sha512-gdeI+NUH3hfqrxkJQSZkt+Zw4G2DrYJRloq/SGxu/9Bu5QD/U0psU2uqxQNtavW5qTChFK+D30rCPXpKlslWAA== +"@react-stately/tabs@^3.8.6": + version "3.8.6" + resolved "https://registry.yarnpkg.com/@react-stately/tabs/-/tabs-3.8.6.tgz#c71e3ed2462d89ad9c06fb78c69b2069625c68fd" + integrity sha512-9RYxmgjVIxUpIsGKPIF7uRoHWOEz8muwaYiStCVeyiYBPmarvZoIYtTXcwSMN/vEs7heVN5uGCL6/bfdY4+WiA== dependencies: - "@react-stately/list" "^3.13.0" - "@react-types/shared" "^3.32.0" - "@react-types/tabs" "^3.3.18" + "@react-stately/list" "^3.13.1" + "@react-types/shared" "^3.32.1" + "@react-types/tabs" "^3.3.19" "@swc/helpers" "^0.5.0" "@react-stately/toast@^3.1.2": @@ -6160,34 +4477,34 @@ "@swc/helpers" "^0.5.0" use-sync-external-store "^1.4.0" -"@react-stately/toggle@^3.9.1": - version "3.9.1" - resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.9.1.tgz#ae706abfebce11989ea370cdf54e821b70b6672f" - integrity sha512-L6yUdE8xZfQhw4aEFZduF8u4v0VrpYrwWEA4Tu/4qwGIPukH0wd2W21Zpw+vAiLOaDKnxel1nXX68MWnm4QXpw== - dependencies: - "@react-stately/utils" "^3.10.8" - "@react-types/checkbox" "^3.10.1" - "@react-types/shared" "^3.32.0" - "@swc/helpers" "^0.5.0" - -"@react-stately/tooltip@^3.5.7": - version "3.5.7" - resolved "https://registry.yarnpkg.com/@react-stately/tooltip/-/tooltip-3.5.7.tgz#7c86942a8b5ee2fad890c09e01718a4939694e7f" - integrity sha512-GYh764BcYZz+Lclyutyir5I3elNo+vVNYzeNOKmPGZCE3p5B+/8lgZAHKxnRc9qmBlxvofnhMcuQxAPlBhoEkw== - dependencies: - "@react-stately/overlays" "^3.6.19" - "@react-types/tooltip" "^3.4.20" - "@swc/helpers" "^0.5.0" - -"@react-stately/tree@^3.9.2": +"@react-stately/toggle@^3.9.2": version "3.9.2" - resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.9.2.tgz#f9960d7e6a5418a637ad9ea17e607308fcd393e5" - integrity sha512-jsT1WZZhb7GRmg1iqoib9bULsilIK5KhbE8WrcfIml8NYr4usP4DJMcIYfRuiRtPLhKtUvHSoZ5CMbinPp8PUQ== + resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.9.2.tgz#8a50def68efdcefa268a870deda8bb65e5f054a8" + integrity sha512-dOxs9wrVXHUmA7lc8l+N9NbTJMAaXcYsnNGsMwfXIXQ3rdq+IjWGNYJ52UmNQyRYFcg0jrzRrU16TyGbNjOdNQ== dependencies: - "@react-stately/collections" "^3.12.7" - "@react-stately/selection" "^3.20.5" "@react-stately/utils" "^3.10.8" - "@react-types/shared" "^3.32.0" + "@react-types/checkbox" "^3.10.2" + "@react-types/shared" "^3.32.1" + "@swc/helpers" "^0.5.0" + +"@react-stately/tooltip@^3.5.8": + version "3.5.8" + resolved "https://registry.yarnpkg.com/@react-stately/tooltip/-/tooltip-3.5.8.tgz#c4a329c63294e8ccae3d9ee7853d40c2fb93ce73" + integrity sha512-gkcUx2ROhCiGNAYd2BaTejakXUUNLPnnoJ5+V/mN480pN+OrO8/2V9pqb/IQmpqxLsso93zkM3A4wFHHLBBmPQ== + dependencies: + "@react-stately/overlays" "^3.6.20" + "@react-types/tooltip" "^3.4.21" + "@swc/helpers" "^0.5.0" + +"@react-stately/tree@^3.9.3": + version "3.9.3" + resolved "https://registry.yarnpkg.com/@react-stately/tree/-/tree-3.9.3.tgz#398de3406d2a06477bb0af2bdb2a0021265eeade" + integrity sha512-ZngG79nLFxE/GYmpwX6E/Rma2MMkzdoJPRI3iWk3dgqnGMMzpPnUp/cvjDsU3UHF7xDVusC5BT6pjWN0uxCIFQ== + dependencies: + "@react-stately/collections" "^3.12.8" + "@react-stately/selection" "^3.20.6" + "@react-stately/utils" "^3.10.8" + "@react-types/shared" "^3.32.1" "@swc/helpers" "^0.5.0" "@react-stately/utils@^3.10.8": @@ -6197,322 +4514,211 @@ dependencies: "@swc/helpers" "^0.5.0" -"@react-types/breadcrumbs@^3.7.16": - version "3.7.16" - resolved "https://registry.yarnpkg.com/@react-types/breadcrumbs/-/breadcrumbs-3.7.16.tgz#f9842047a1e7b4eac9d2ea911fd35e221d2a192f" - integrity sha512-4J+7b9y6z8QGZqvsBSWQfebx6aIbc+1unQqnZCAlJl9EGzlI6SGdXRsURGkOUGJCV2GqY8bSocc8AZbRXpQ0XQ== +"@react-types/breadcrumbs@^3.7.17": + version "3.7.17" + resolved "https://registry.yarnpkg.com/@react-types/breadcrumbs/-/breadcrumbs-3.7.17.tgz#e584352cc4f79e638e20774af04f28064cd9b66b" + integrity sha512-IhvVTcfli5o/UDlGACXxjlor2afGlMQA8pNR3faH0bBUay1Fmm3IWktVw9Xwmk+KraV2RTAg9e+E6p8DOQZfiw== dependencies: - "@react-types/link" "^3.6.4" - "@react-types/shared" "^3.32.0" + "@react-types/link" "^3.6.5" + "@react-types/shared" "^3.32.1" -"@react-types/button@^3.14.0": - version "3.14.0" - resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.14.0.tgz#8b7d1387960bd81ff2c0aa5565d3fb407f6a59b2" - integrity sha512-pXt1a+ElxiZyWpX0uznyjy5Z6EHhYxPcaXpccZXyn6coUo9jmCbgg14xR7Odo+JcbfaaISzZTDO7oGLVTcHnpA== +"@react-types/button@^3.14.1": + version "3.14.1" + resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.14.1.tgz#41c25f7c7dd1b31a359a6af9cbec5bed5dbb5aa1" + integrity sha512-D8C4IEwKB7zEtiWYVJ3WE/5HDcWlze9mLWQ5hfsBfpePyWCgO3bT/+wjb/7pJvcAocrkXo90QrMm85LcpBtrpg== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" -"@react-types/calendar@^3.7.4": - version "3.7.4" - resolved "https://registry.yarnpkg.com/@react-types/calendar/-/calendar-3.7.4.tgz#8a630b75ce081bb656620ec64204a2b0b27ba84d" - integrity sha512-MZDyXtvdHl8CKQGYBkjYwc4ABBq6Mb4Fu7k/4boQAmMQ5Rtz29ouBCJrAs0BpR14B8ZMGzoNIolxS5RLKBmFSA== +"@react-types/calendar@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@react-types/calendar/-/calendar-3.8.0.tgz#51dad3445586f1c22886c35499cfcc872462a30f" + integrity sha512-ZDZgfZgbz1ydWOFs1mH7QFfX3ioJrmb3Y/lkoubQE0HWXLZzyYNvhhKyFJRS1QJ40IofLSBHriwbQb/tsUnGlw== dependencies: - "@internationalized/date" "^3.9.0" - "@react-types/shared" "^3.32.0" + "@internationalized/date" "^3.10.0" + "@react-types/shared" "^3.32.1" -"@react-types/checkbox@^3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.10.1.tgz#6cd2e7dd4e27ba017593b8140d0571afcf2b7114" - integrity sha512-8ZqBoGBxtn6U/znpmyutGtBBaafUzcZnbuvYjwyRSONTrqQ0IhUq6jI/jbnE9r9SslIkbMB8IS1xRh2e63qmEQ== +"@react-types/checkbox@^3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.10.2.tgz#0190c9690e3649348a4d7045b168cbda657ce9de" + integrity sha512-ktPkl6ZfIdGS1tIaGSU/2S5Agf2NvXI9qAgtdMDNva0oLyAZ4RLQb6WecPvofw1J7YKXu0VA5Mu7nlX+FM2weQ== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" -"@react-types/color@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@react-types/color/-/color-3.1.1.tgz#18b4d809703bb37efbf96f0b11b2335a3c252edd" - integrity sha512-zBF1Op4AO3mlygUq2gFhEoK3gZp2HgwCMUKkCzoDbrvcaahhVbDbfhRxgXKM/2dg7WkgsqhokdkjYV2mGQadRQ== +"@react-types/color@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@react-types/color/-/color-3.1.2.tgz#06a0e81b463f3a8d4553e7cd535b2881d721e231" + integrity sha512-NP0TAY3j4tlMztOp/bBfMlPwC9AQKTjSiTFmc2oQNkx5M4sl3QpPqFPosdt7jZ8M4nItvfCWZrlZGjST4SB83A== dependencies: - "@react-types/shared" "^3.32.0" - "@react-types/slider" "^3.8.1" + "@react-types/shared" "^3.32.1" + "@react-types/slider" "^3.8.2" -"@react-types/combobox@^3.13.8": - version "3.13.8" - resolved "https://registry.yarnpkg.com/@react-types/combobox/-/combobox-3.13.8.tgz#de88e8eb51ec057f5004630668f910e1afd11c96" - integrity sha512-HGC3X9hmDRsjSZcFiflvJ7vbIgQ2gX/ZDxo1HVtvQqUDbgQCVakCcCdrB44aYgHFnyDiO6hyp7Y7jXtDBaEIIA== +"@react-types/combobox@^3.13.9": + version "3.13.9" + resolved "https://registry.yarnpkg.com/@react-types/combobox/-/combobox-3.13.9.tgz#58bc5c39ca1d7bdbb4beebf79d2ba11b337e927f" + integrity sha512-G6GmLbzVkLW6VScxPAr/RtliEyPhBClfYaIllK1IZv+Z42SVnOpKzhnoe79BpmiFqy1AaC3+LjZX783mrsHCwA== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" -"@react-types/datepicker@^3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@react-types/datepicker/-/datepicker-3.13.1.tgz#488989d4ff7605cf80af6fb0d31cb227456201d2" - integrity sha512-ub+g5pS3WOo5P/3FRNsQSwvlb9CuLl2m6v6KBkRXc5xqKhFd7UjvVpL6Oi/1zwwfow4itvD1t7l1XxgCo7wZ6Q== +"@react-types/datepicker@^3.13.2": + version "3.13.2" + resolved "https://registry.yarnpkg.com/@react-types/datepicker/-/datepicker-3.13.2.tgz#775e43b6edcb8d3d5968e0a35cfacd14be3c847c" + integrity sha512-+M6UZxJnejYY8kz0spbY/hP08QJ5rsZ3aNarRQQHc48xV2oelFLX5MhAqizfLEsvyfb0JYrhWoh4z1xZtAmYCg== dependencies: - "@internationalized/date" "^3.9.0" - "@react-types/calendar" "^3.7.4" - "@react-types/overlays" "^3.9.1" - "@react-types/shared" "^3.32.0" + "@internationalized/date" "^3.10.0" + "@react-types/calendar" "^3.8.0" + "@react-types/overlays" "^3.9.2" + "@react-types/shared" "^3.32.1" -"@react-types/dialog@^3.5.21": - version "3.5.21" - resolved "https://registry.yarnpkg.com/@react-types/dialog/-/dialog-3.5.21.tgz#f47302e0a15e75dfe57e868f3496f5c0a0cecd7b" - integrity sha512-jF1gN4bvwYamsLjefaFDnaSKxTa3Wtvn5f7WLjNVZ8ICVoiMBMdUJXTlPQHAL4YWqtCj4hK/3uimR1E+Pwd7Xw== +"@react-types/dialog@^3.5.22": + version "3.5.22" + resolved "https://registry.yarnpkg.com/@react-types/dialog/-/dialog-3.5.22.tgz#ed772c303042c6ee5e8a9bc9e58b5b9d08ed634b" + integrity sha512-smSvzOcqKE196rWk0oqJDnz+ox5JM5+OT0PmmJXiUD4q7P5g32O6W5Bg7hMIFUI9clBtngo8kLaX2iMg+GqAzg== dependencies: - "@react-types/overlays" "^3.9.1" - "@react-types/shared" "^3.32.0" + "@react-types/overlays" "^3.9.2" + "@react-types/shared" "^3.32.1" -"@react-types/grid@^3.3.5": - version "3.3.5" - resolved "https://registry.yarnpkg.com/@react-types/grid/-/grid-3.3.5.tgz#5764d4fed4a7f2a721bd77d1043e27686c5dbeee" - integrity sha512-hG6J2KDfmOHitkWoCa/9DvY1nTO2wgMIApcFoqLv7AWJr9CzvVqo5tIhZZCXiT1AvU2kafJxu9e7sr5GxAT2YA== +"@react-types/grid@^3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@react-types/grid/-/grid-3.3.6.tgz#9fc60f5baa8a1668bb2257a981dd514dd64706c3" + integrity sha512-vIZJlYTii2n1We9nAugXwM2wpcpsC6JigJFBd6vGhStRdRWRoU4yv1Gc98Usbx0FQ/J7GLVIgeG8+1VMTKBdxw== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" -"@react-types/link@^3.6.4": - version "3.6.4" - resolved "https://registry.yarnpkg.com/@react-types/link/-/link-3.6.4.tgz#99d6cc04e0d5e768c51dc1261fceeecf47557234" - integrity sha512-eLpIgOPf7GW4DpdMq8UqiRJkriend1kWglz5O9qU+/FM6COtvRnQkEeRhHICUaU2NZUvMRQ30KaGUo3eeZ6b+g== - dependencies: - "@react-types/shared" "^3.32.0" - -"@react-types/listbox@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@react-types/listbox/-/listbox-3.7.3.tgz#20946c0fd253be35e83180b21bd27676553ad0a3" - integrity sha512-ONgror9uyGmIer5XxpRRNcc8QFVWiOzINrMKyaS8G4l3aP52ZwYpRfwMAVtra8lkVNvXDmO7hthPZkB6RYdNOA== - dependencies: - "@react-types/shared" "^3.32.0" - -"@react-types/menu@^3.10.4": - version "3.10.4" - resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.10.4.tgz#57c0259b149f80fde9230cc1a494d6ac581d09b4" - integrity sha512-jCFVShLq3eASiuznenjoKBv3j0Jy2KQilAjBxdEp56WkZ5D338y/oY5zR6d25u9M0QslpI0DgwC8BwU7MCsPnw== - dependencies: - "@react-types/overlays" "^3.9.1" - "@react-types/shared" "^3.32.0" - -"@react-types/meter@^3.4.12": - version "3.4.12" - resolved "https://registry.yarnpkg.com/@react-types/meter/-/meter-3.4.12.tgz#86d08d7ce462eb57127f562280b7a26ce0efa1a4" - integrity sha512-rx+yrwdesSabPworWRMpQnuT69gm8xt58cAfTDV9eSY1Jo+lO5OPp0OIyKb+U0q/whf60wnn2hsVnXm2fBXKhA== - dependencies: - "@react-types/progress" "^3.5.15" - -"@react-types/numberfield@^3.8.14": - version "3.8.14" - resolved "https://registry.yarnpkg.com/@react-types/numberfield/-/numberfield-3.8.14.tgz#5a71fed846853176b262c4192025fd18157257dc" - integrity sha512-tlGEHJyeQSMlUoO4g9ekoELGJcqsjc/+/FAxo6YQMhQSkuIdkUKZg3UEBKzif4hLw787u80e1D0SxPUi3KO2oA== - dependencies: - "@react-types/shared" "^3.32.0" - -"@react-types/overlays@^3.9.1": - version "3.9.1" - resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.9.1.tgz#b6e750d6e4bcf3aaf38fa8a5f69a817f37840934" - integrity sha512-UCG3TOu8FLk4j0Pr1nlhv0opcwMoqbGEOUvsSr6ITN6Qs2y0j+KYSYQ7a4+04m3dN//8+9Wjkkid8k+V1dV2CA== - dependencies: - "@react-types/shared" "^3.32.0" - -"@react-types/progress@^3.5.15": - version "3.5.15" - resolved "https://registry.yarnpkg.com/@react-types/progress/-/progress-3.5.15.tgz#f676d003b9595d216a831eed58966ed91ceb305c" - integrity sha512-3SYvEyRt7vq7w0sc6wBYmkPqLMZbhH8FI3Lrnn9r3y8+69/efRjVmmJvwjm1z+c6rukszc2gCjUGTsMPQxVk2w== - dependencies: - "@react-types/shared" "^3.32.0" - -"@react-types/radio@^3.9.1": - version "3.9.1" - resolved "https://registry.yarnpkg.com/@react-types/radio/-/radio-3.9.1.tgz#4d37e935cd3cc482a5dfaf92cf51068f07e70750" - integrity sha512-DUCN3msm8QZ0MJrP55FmqMONaadYq6JTxihYFGMLP+NoKRnkxvXqNZ2PlkAOLGy3y4RHOnOF8O1LuJqFCCuxDw== - dependencies: - "@react-types/shared" "^3.32.0" - -"@react-types/searchfield@^3.6.5": +"@react-types/link@^3.6.5": version "3.6.5" - resolved "https://registry.yarnpkg.com/@react-types/searchfield/-/searchfield-3.6.5.tgz#de43905d990104d640cc507c728e5e12cd1013cf" - integrity sha512-5hI+Hb1U0bSxrJLvEwFEQfk7n3S+GO4c5W/0WZBG00YlYDY9asr1V0oU1WRmKPJJlRpyfG6PkMHDC3jhdj89ew== + resolved "https://registry.yarnpkg.com/@react-types/link/-/link-3.6.5.tgz#28cf2b90f69e83af7ff507021eec0449f148eb45" + integrity sha512-+I2s3XWBEvLrzts0GnNeA84mUkwo+a7kLUWoaJkW0TOBDG7my95HFYxF9WnqKye7NgpOkCqz4s3oW96xPdIniQ== dependencies: - "@react-types/shared" "^3.32.0" - "@react-types/textfield" "^3.12.5" + "@react-types/shared" "^3.32.1" -"@react-types/select@^3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@react-types/select/-/select-3.10.1.tgz#4c19deb68250233d1acffc929b0beb1b04de2dd0" - integrity sha512-teANUr1byOzGsS/r2j7PatV470JrOhKP8En9lscfnqW5CeUghr+0NxkALnPkiEhCObi/Vu8GIcPareD0HNhtFA== +"@react-types/listbox@^3.7.4": + version "3.7.4" + resolved "https://registry.yarnpkg.com/@react-types/listbox/-/listbox-3.7.4.tgz#712329de62c0fddf44c062bb18c51135309c9fe8" + integrity sha512-p4YEpTl/VQGrqVE8GIfqTS5LkT5jtjDTbVeZgrkPnX/fiPhsfbTPiZ6g0FNap4+aOGJFGEEZUv2q4vx+rCORww== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" -"@react-types/shared@^3.32.0": - version "3.32.0" - resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.32.0.tgz#6c105ef05e1bd84ab04531e707074dc2a0b3ce07" - integrity sha512-t+cligIJsZYFMSPFMvsJMjzlzde06tZMOIOFa1OV5Z0BcMowrb2g4mB57j/9nP28iJIRYn10xCniQts+qadrqQ== - -"@react-types/slider@^3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@react-types/slider/-/slider-3.8.1.tgz#e2b1a11491cb6957584dc725513e574eddde4105" - integrity sha512-WxiQWj6iQr5Uft0/KcB9XSr361XnyTmL6eREZZacngA9CjPhRWYP3BRDPcCTuP7fj9Yi4QKMrryyjHqMHP8OKQ== +"@react-types/menu@^3.10.5": + version "3.10.5" + resolved "https://registry.yarnpkg.com/@react-types/menu/-/menu-3.10.5.tgz#0e3a66aab3c636dc3ef965529640bb678b13a431" + integrity sha512-HBTrKll2hm0VKJNM4ubIv1L9MNo8JuOnm2G3M+wXvb6EYIyDNxxJkhjsqsGpUXJdAOSkacHBDcNh2HsZABNX4A== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/overlays" "^3.9.2" + "@react-types/shared" "^3.32.1" -"@react-types/switch@^3.5.14": - version "3.5.14" - resolved "https://registry.yarnpkg.com/@react-types/switch/-/switch-3.5.14.tgz#827e841b5f8948569650f7bac1784c685a7ab21e" - integrity sha512-M8kIv97i+ejCel4Ho+Y7tDbpOehymGwPA4ChxibeyD32+deyxu5B6BXxgKiL3l+oTLQ8ihLo3sRESdPFw8vpQg== +"@react-types/meter@^3.4.13": + version "3.4.13" + resolved "https://registry.yarnpkg.com/@react-types/meter/-/meter-3.4.13.tgz#ddd54e1d56a9af79646d832a3cf4a8979e473ead" + integrity sha512-EiarfbpHcvmeyXvXcr6XLaHkNHuGc4g7fBVEiDPwssFJKKfbUzqnnknDxPjyspqUVRcXC08CokS98J1jYobqDg== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/progress" "^3.5.16" -"@react-types/table@^3.13.3": - version "3.13.3" - resolved "https://registry.yarnpkg.com/@react-types/table/-/table-3.13.3.tgz#83fb11c63e71e726a63246dd3d12caa7c97e90d7" - integrity sha512-/kY/VlXN+8l9saySd6igcsDQ3x8pOVFJAWyMh6gOaOVN7HOJkTMIchmqS+ATa4nege8jZqcdzyGeAmv7mN655A== +"@react-types/numberfield@^3.8.15": + version "3.8.15" + resolved "https://registry.yarnpkg.com/@react-types/numberfield/-/numberfield-3.8.15.tgz#0fcd77217bae5d7a2bf35d41c7eb61d8ae52bc03" + integrity sha512-97r92D23GKCOjGIGMeW9nt+/KlfM3GeWH39Czcmd2/D5y3k6z4j0avbsfx2OttCtJszrnENjw3GraYGYI2KosQ== dependencies: - "@react-types/grid" "^3.3.5" - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" -"@react-types/tabs@^3.3.18": - version "3.3.18" - resolved "https://registry.yarnpkg.com/@react-types/tabs/-/tabs-3.3.18.tgz#c84bf3d113d606d2af8ba52f5465e8b6bb61b707" - integrity sha512-yX/AVlGS7VXCuy2LSm8y8nxUrKVBgnLv+FrtkLqf6jUMtD4KP3k1c4+GPHeScR0HcYzCQF7gCF3Skba1RdYoug== +"@react-types/overlays@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@react-types/overlays/-/overlays-3.9.2.tgz#721dc248afcb42db988391037a6386bb61556cd4" + integrity sha512-Q0cRPcBGzNGmC8dBuHyoPR7N3057KTS5g+vZfQ53k8WwmilXBtemFJPLsogJbspuewQ/QJ3o2HYsp2pne7/iNw== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" -"@react-types/textfield@^3.12.5": - version "3.12.5" - resolved "https://registry.yarnpkg.com/@react-types/textfield/-/textfield-3.12.5.tgz#b9b4cd1b8f8b907d756c8323fb7fc2ac5b39a225" - integrity sha512-VXez8KIcop87EgIy00r+tb30xokA309TfJ32Qv5qOYB5SMqoHnb6SYvWL8Ih2PDqCo5eBiiGesSaWYrHnRIL8Q== +"@react-types/progress@^3.5.16": + version "3.5.16" + resolved "https://registry.yarnpkg.com/@react-types/progress/-/progress-3.5.16.tgz#f40e1b674e630276d6412297a92eb0dd3761d426" + integrity sha512-I9tSdCFfvQ7gHJtm90VAKgwdTWXQgVNvLRStEc0z9h+bXBxdvZb+QuiRPERChwFQ9VkK4p4rDqaFo69nDqWkpw== dependencies: - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" -"@react-types/tooltip@^3.4.20": - version "3.4.20" - resolved "https://registry.yarnpkg.com/@react-types/tooltip/-/tooltip-3.4.20.tgz#af71dde12afb8a33a7b5bb3d8ff0cda6c4ee3999" - integrity sha512-tF1yThwvgSgW8Gu/CLL0p92AUldHR6szlwhwW+ewT318sQlfabMGO4xlCNFdxJYtqTpEXk2rlaVrBuaC//du0w== +"@react-types/radio@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@react-types/radio/-/radio-3.9.2.tgz#c6ac396b49cc03334e4bb63a96f366effce3a615" + integrity sha512-3UcJXu37JrTkRyP4GJPDBU7NmDTInrEdOe+bVzA1j4EegzdkJmLBkLg5cLDAbpiEHB+xIsvbJdx6dxeMuc+H3g== dependencies: - "@react-types/overlays" "^3.9.1" - "@react-types/shared" "^3.32.0" + "@react-types/shared" "^3.32.1" + +"@react-types/searchfield@^3.6.6": + version "3.6.6" + resolved "https://registry.yarnpkg.com/@react-types/searchfield/-/searchfield-3.6.6.tgz#fd41bd78246789ac4284462abe222b6f85d191b2" + integrity sha512-cl3itr/fk7wbIQc2Gz5Ie8aVeUmPjVX/mRGS5/EXlmzycAKNYTvqf2mlxwObLndtLISmt7IgNjRRhbUUDI8Ang== + dependencies: + "@react-types/shared" "^3.32.1" + "@react-types/textfield" "^3.12.6" + +"@react-types/select@^3.11.0": + version "3.11.0" + resolved "https://registry.yarnpkg.com/@react-types/select/-/select-3.11.0.tgz#808aec480f0cc20075953af9717ca38d1eb15b8d" + integrity sha512-SzIsMFVPCbXE1Z1TLfpdfiwJ1xnIkcL1/CjGilmUKkNk5uT7rYX1xCJqWCjXI0vAU1xM4Qn+T3n8de4fw6HRBg== + dependencies: + "@react-types/shared" "^3.32.1" + +"@react-types/shared@^3.32.1": + version "3.32.1" + resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.32.1.tgz#abfeb839d65d0abe923576f34ac08342c25dfa55" + integrity sha512-famxyD5emrGGpFuUlgOP6fVW2h/ZaF405G5KDi3zPHzyjAWys/8W6NAVJtNbkCkhedmvL0xOhvt8feGXyXaw5w== + +"@react-types/slider@^3.8.2": + version "3.8.2" + resolved "https://registry.yarnpkg.com/@react-types/slider/-/slider-3.8.2.tgz#37e02c42514aca842954c715082d1ae06a661ee4" + integrity sha512-MQYZP76OEOYe7/yA2To+Dl0LNb0cKKnvh5JtvNvDnAvEprn1RuLiay8Oi/rTtXmc2KmBa4VdTcsXsmkbbkeN2Q== + dependencies: + "@react-types/shared" "^3.32.1" + +"@react-types/switch@^3.5.15": + version "3.5.15" + resolved "https://registry.yarnpkg.com/@react-types/switch/-/switch-3.5.15.tgz#43806d6e7034d1d07e20c89ec9618e607fef9e62" + integrity sha512-r/ouGWQmIeHyYSP1e5luET+oiR7N7cLrAlWsrAfYRWHxqXOSNQloQnZJ3PLHrKFT02fsrQhx2rHaK2LfKeyN3A== + dependencies: + "@react-types/shared" "^3.32.1" + +"@react-types/table@^3.13.4": + version "3.13.4" + resolved "https://registry.yarnpkg.com/@react-types/table/-/table-3.13.4.tgz#c3d5952d4bd2a04992255850538856829b12c99a" + integrity sha512-I/DYiZQl6aNbMmjk90J9SOhkzVDZvyA3Vn3wMWCiajkMNjvubFhTfda5DDf2SgFP5l0Yh6TGGH5XumRv9LqL5Q== + dependencies: + "@react-types/grid" "^3.3.6" + "@react-types/shared" "^3.32.1" + +"@react-types/tabs@^3.3.19": + version "3.3.19" + resolved "https://registry.yarnpkg.com/@react-types/tabs/-/tabs-3.3.19.tgz#344a22bd15400b738aebc26918cf96dacde1ffef" + integrity sha512-fE+qI43yR5pAMpeqPxGqQq9jDHXEPqXskuxNHERMW0PYMdPyem2Cw6goc5F4qeZO3Hf6uPZgHkvJz2OAq7TbBw== + dependencies: + "@react-types/shared" "^3.32.1" + +"@react-types/textfield@^3.12.6": + version "3.12.6" + resolved "https://registry.yarnpkg.com/@react-types/textfield/-/textfield-3.12.6.tgz#0f90a4108c8d75e7c2c26753e760cd580339be12" + integrity sha512-hpEVKE+M3uUkTjw2WrX1NrH/B3rqDJFUa+ViNK2eVranLY4ZwFqbqaYXSzHupOF3ecSjJJv2C103JrwFvx6TPQ== + dependencies: + "@react-types/shared" "^3.32.1" + +"@react-types/tooltip@^3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@react-types/tooltip/-/tooltip-3.4.21.tgz#63596cf87d7166499656bc15f212c75c9ffa8991" + integrity sha512-ugGHOZU6WbOdeTdbjnaEc+Ms7/WhsUCg+T3PCOIeOT9FG02Ce189yJ/+hd7oqL/tVwIhEMYJIqSCgSELFox+QA== + dependencies: + "@react-types/overlays" "^3.9.2" + "@react-types/shared" "^3.32.1" "@remix-run/router@1.23.0": version "1.23.0" resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.23.0.tgz#35390d0e7779626c026b11376da6789eb8389242" integrity sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA== -"@rollup/plugin-commonjs@^24.0.1": - version "24.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz#79e54bd83bb64396761431eee6c44152ef322100" - integrity sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ== - dependencies: - "@rollup/pluginutils" "^5.0.1" - commondir "^1.0.1" - estree-walker "^2.0.2" - glob "^8.0.3" - is-reference "1.2.1" - magic-string "^0.27.0" - -"@rollup/plugin-inject@^5.0.3": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz#616f3a73fe075765f91c5bec90176608bed277a3" - integrity sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg== - dependencies: - "@rollup/pluginutils" "^5.0.1" - estree-walker "^2.0.2" - magic-string "^0.30.3" - -"@rollup/plugin-json@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.1.0.tgz#fbe784e29682e9bb6dee28ea75a1a83702e7b805" - integrity sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA== - dependencies: - "@rollup/pluginutils" "^5.1.0" - -"@rollup/plugin-node-resolve@^15.0.1": - version "15.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz#66008953c2524be786aa319d49e32f2128296a78" - integrity sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA== - dependencies: - "@rollup/pluginutils" "^5.0.1" - "@types/resolve" "1.20.2" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.22.1" - -"@rollup/plugin-replace@^5.0.2": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.7.tgz#150c9ee9db8031d9e4580a61a0edeaaed3d37687" - integrity sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ== - dependencies: - "@rollup/pluginutils" "^5.0.1" - magic-string "^0.30.3" - -"@rollup/plugin-terser@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.2.1.tgz#dcf0b163216dafb64611b170a7667e76a7f03d2b" - integrity sha512-hV52c8Oo6/cXZZxVVoRNBb4zh+EKSHS4I1sedWV5pf0O+hTLSkrf6w86/V0AZutYtwBguB6HLKwz89WDBfwGOA== - dependencies: - serialize-javascript "^6.0.0" - smob "^0.0.6" - terser "^5.15.1" - -"@rollup/plugin-typescript@^10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-10.0.1.tgz#270b515b116ea28320e6bb62451c4767d49072d6" - integrity sha512-wBykxRLlX7EzL8BmUqMqk5zpx2onnmRMSw/l9M1sVfkJvdwfxogZQVNUM9gVMJbjRLDR5H6U0OMOrlDGmIV45A== - dependencies: - "@rollup/pluginutils" "^5.0.1" - resolve "^1.22.1" - -"@rollup/plugin-typescript@^11.0.0": - version "11.1.6" - resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz#724237d5ec12609ec01429f619d2a3e7d4d1b22b" - integrity sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA== - dependencies: - "@rollup/pluginutils" "^5.1.0" - resolve "^1.22.1" - -"@rollup/plugin-url@^8.0.1": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-url/-/plugin-url-8.0.2.tgz#aab4e209e9e012f65582bd99eb80b3bbdfe15afb" - integrity sha512-5yW2LP5NBEgkvIRSSEdJkmxe5cUNZKG3eenKtfJvSkxVm/xTTu7w+ayBtNwhozl1ZnTUCU0xFaRQR+cBl2H7TQ== - dependencies: - "@rollup/pluginutils" "^5.0.1" - make-dir "^3.1.0" - mime "^3.0.0" - -"@rollup/plugin-wasm@^6.1.1": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-wasm/-/plugin-wasm-6.2.2.tgz#ea75fd8cc5ddba1e30bdc22e07cdbaf8d6d160bf" - integrity sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ== - dependencies: - "@rollup/pluginutils" "^5.0.2" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.2", "@rollup/pluginutils@^5.1.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.3.0.tgz#57ba1b0cbda8e7a3c597a4853c807b156e21a7b4" - integrity sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^4.0.2" - "@rtsao/scc@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== "@rushstack/eslint-patch@^1.10.3": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.12.0.tgz#326a7b46f6d4cfa54ae25bb888551697873069b4" - integrity sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw== - -"@sapphire/utilities@^3.11.0": - version "3.18.2" - resolved "https://registry.yarnpkg.com/@sapphire/utilities/-/utilities-3.18.2.tgz#42f1cec0b9bc5fac411b21f40893bed5770d4a0b" - integrity sha512-QGLdC9+pT74Zd7aaObqn0EUfq40c4dyTL65pFnkM6WO1QYN7Yg/s4CdH+CXmx0Zcu6wcfCWILSftXPMosJHP5A== + version "1.14.1" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.14.1.tgz#5f7c5c335643cff62ad8e6a9432d708a9c51e98c" + integrity sha512-jGTk8UD/RdjsNZW8qq10r0RBvxL8OWtoT+kImlzPDFilmozzM+9QmIJsmze9UiSBrFU45ZxhTYBypn9q9z/VfQ== "@sideway/address@^4.1.5": version "4.1.5" @@ -6560,11 +4766,6 @@ "@sigstore/protobuf-specs" "^0.2.0" tuf-js "^1.1.7" -"@sinclair/typebox@^0.24.1": - version "0.24.51" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" - integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -6582,20 +4783,6 @@ dependencies: type-detect "4.0.8" -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - "@sinonjs/fake-timers@^8.0.1": version "8.1.0" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" @@ -7672,75 +5859,6 @@ "@svgr/plugin-jsx" "^6.5.1" "@svgr/plugin-svgo" "^6.5.1" -"@swc/core-darwin-arm64@1.13.5": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.5.tgz#7638c073946f9297753ed9a2eb198d07b2336a24" - integrity sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ== - -"@swc/core-darwin-x64@1.13.5": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.13.5.tgz#18061167378f0fb285e17818494bc6c89dd07551" - integrity sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng== - -"@swc/core-linux-arm-gnueabihf@1.13.5": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.5.tgz#4c8062bd598049b5b9b0beb762e075e76b4c23c3" - integrity sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ== - -"@swc/core-linux-arm64-gnu@1.13.5": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.5.tgz#7222d321197ea9304e387933e87d775849fc1ae6" - integrity sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw== - -"@swc/core-linux-arm64-musl@1.13.5": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.5.tgz#51e7958deaf37edc212bd9dc0ea1476f151d2bea" - integrity sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ== - -"@swc/core-linux-x64-gnu@1.13.5": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.5.tgz#3476beab93ab03e92844d955ca9d9289aa4a5993" - integrity sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA== - -"@swc/core-linux-x64-musl@1.13.5": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.5.tgz#f4934b1e77e2a297909bb3ab977836205c36e5e0" - integrity sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q== - -"@swc/core-win32-arm64-msvc@1.13.5": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.5.tgz#5084c107435cfc82d4d901bfb388dc319d38a236" - integrity sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw== - -"@swc/core-win32-ia32-msvc@1.13.5": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.5.tgz#f8b2e28bc51b30467e316ed736a130c1324b9880" - integrity sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw== - -"@swc/core-win32-x64-msvc@1.13.5": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.5.tgz#13883cf3c63bf11b787e28dcdf75ca0cc49efa83" - integrity sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q== - -"@swc/core@^1.11.24": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.13.5.tgz#93874b831d3bd121560e6fcd688972b7fc7baa26" - integrity sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ== - dependencies: - "@swc/counter" "^0.1.3" - "@swc/types" "^0.1.24" - optionalDependencies: - "@swc/core-darwin-arm64" "1.13.5" - "@swc/core-darwin-x64" "1.13.5" - "@swc/core-linux-arm-gnueabihf" "1.13.5" - "@swc/core-linux-arm64-gnu" "1.13.5" - "@swc/core-linux-arm64-musl" "1.13.5" - "@swc/core-linux-x64-gnu" "1.13.5" - "@swc/core-linux-x64-musl" "1.13.5" - "@swc/core-win32-arm64-msvc" "1.13.5" - "@swc/core-win32-ia32-msvc" "1.13.5" - "@swc/core-win32-x64-msvc" "1.13.5" - "@swc/counter@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" @@ -7761,13 +5879,6 @@ dependencies: tslib "^2.8.0" -"@swc/types@^0.1.24": - version "0.1.25" - resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.25.tgz#b517b2a60feb37dd933e542d93093719e4cf1078" - integrity sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g== - dependencies: - "@swc/counter" "^0.1.3" - "@tanstack/match-sorter-utils@8.19.4": version "8.19.4" resolved "https://registry.yarnpkg.com/@tanstack/match-sorter-utils/-/match-sorter-utils-8.19.4.tgz#dacf772b5d94f4684f10dbeb2518cf72dccab8a5" @@ -7775,10 +5886,10 @@ dependencies: remove-accents "0.5.0" -"@tanstack/query-core@5.90.2": - version "5.90.2" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.90.2.tgz#ac5d0d0f19a38071db2d21d758b5c35a85d9c1d8" - integrity sha512-k/TcR3YalnzibscALLwxeiLUub6jN5EDLwKDiO7q5f4ICEoptJ+n9+7vcEFy5/x/i6Q+Lb/tXrsKCggf5uQJXQ== +"@tanstack/query-core@5.90.5": + version "5.90.5" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.90.5.tgz#0175f9f517514906db8ab379589ed3f96694ecc4" + integrity sha512-wLamYp7FaDq6ZnNehypKI5fNvxHPfTYylE0m/ZpuuzJfJqhR5Pxg9gvGBHZx4n7J+V5Rg5mZxHHTlv25Zt5u+w== "@tanstack/query-devtools@5.90.1": version "5.90.1" @@ -7798,11 +5909,11 @@ integrity sha512-f7vJ9SHRO5GjiTBIpaSdLTczPlDybu6OzLG2thcNev55Qi69JkYsSOyUVWKpa3tGgufyJx1kDAO5lJjv4jF/bw== "@tanstack/react-query@^5.64.2": - version "5.90.2" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.90.2.tgz#2f045931b7d44bef02c5261fedba75ef1a418726" - integrity sha512-CLABiR+h5PYfOWr/z+vWFt5VsOA2ekQeRQBFSKlcoW6Ndx/f8rfyVmq4LbgOM4GG2qtxAxjLYLOpCNTYm4uKzw== + version "5.90.5" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.90.5.tgz#545e61282c787bd87ac5785da9a4943462f78ef6" + integrity sha512-pN+8UWpxZkEJ/Rnnj2v2Sxpx1WFlaa9L6a4UO89p6tTQbeo+m0MS8oYDjbggrR8QcTyjKoYWKS3xJQGr3ExT8Q== dependencies: - "@tanstack/query-core" "5.90.2" + "@tanstack/query-core" "5.90.5" "@tanstack/react-table@8.20.6": version "8.20.6" @@ -7853,81 +5964,81 @@ integrity sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA== "@tauri-apps/api@^2.4.0", "@tauri-apps/api@^2.6.0", "@tauri-apps/api@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-2.8.0.tgz#0348a2b3ba5982ec67a7d569f329b4a55d7d5f1e" - integrity sha512-ga7zdhbS2GXOMTIZRT0mYjKJtR9fivsXzsyq5U3vjDL0s6DTMwYRm0UHNjzTY5dh4+LSC68Sm/7WEiimbQNYlw== + version "2.9.0" + resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-2.9.0.tgz#047fcbfec05a719b0cec997eee244cee453fb2fc" + integrity sha512-qD5tMjh7utwBk9/5PrTA/aGr3i5QaJ/Mlt7p8NilQ45WgbifUNPyKWsA63iQ8YfQq6R8ajMapU+/Q8nMcPRLNw== -"@tauri-apps/cli-darwin-arm64@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.8.4.tgz#ec09c0673dd1816e89910cf31ddc7d94c5cf077f" - integrity sha512-BKu8HRkYV01SMTa7r4fLx+wjgtRK8Vep7lmBdHDioP6b8XH3q2KgsAyPWfEZaZIkZ2LY4SqqGARaE9oilNe0oA== +"@tauri-apps/cli-darwin-arm64@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.9.1.tgz#60bbf0a34098c1feb865d7483433c6e4a0208142" + integrity sha512-sdwhtsE/6njD0AjgfYEj1JyxZH4SBmCJSXpRm6Ph5fQeuZD6MyjzjdVOrrtFguyREVQ7xn0Ujkwvbo01ULthNg== -"@tauri-apps/cli-darwin-x64@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.8.4.tgz#b9c274fedce570da1910559add68657d264019db" - integrity sha512-imb9PfSd/7G6VAO7v1bQ2A3ZH4NOCbhGJFLchxzepGcXf9NKkfun157JH9mko29K6sqAwuJ88qtzbKCbWJTH9g== +"@tauri-apps/cli-darwin-x64@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.9.1.tgz#e0bdb2e29201dd0b46bffa61cc7dccb5f0c6ae29" + integrity sha512-c86g+67wTdI4TUCD7CaSd/13+oYuLQxVST4ZNJ5C+6i1kdnU3Us1L68N9MvbDLDQGJc9eo0pvuK6sCWkee+BzA== -"@tauri-apps/cli-linux-arm-gnueabihf@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.8.4.tgz#657131a05f422b9141277f0668d370e8d671bdc0" - integrity sha512-Ml215UnDdl7/fpOrF1CNovym/KjtUbCuPgrcZ4IhqUCnhZdXuphud/JT3E8X97Y03TZ40Sjz8raXYI2ET0exzw== +"@tauri-apps/cli-linux-arm-gnueabihf@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.9.1.tgz#15ad573c32b8941d10c2ebd2ecfe399ea85ed023" + integrity sha512-IrB3gFQmueQKJjjisOcMktW/Gh6gxgqYO419doA3YZ7yIV5rbE8ZW52Q3I4AO+SlFEyVYer5kpi066p0JBlLGw== -"@tauri-apps/cli-linux-arm64-gnu@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.8.4.tgz#35a14541e09b6548b811626d1a5d2574932116ef" - integrity sha512-pbcgBpMyI90C83CxE5REZ9ODyIlmmAPkkJXtV398X3SgZEIYy5TACYqlyyv2z5yKgD8F8WH4/2fek7+jH+ZXAw== +"@tauri-apps/cli-linux-arm64-gnu@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.9.1.tgz#f7a5dd6f46c5a2b52f20a61308cd61dd04694435" + integrity sha512-Ke7TyXvu6HbWSkmVkFbbH19D3cLsd117YtXP/u9NIvSpYwKeFtnbpirrIUfPm44Q+PZFZ2Hvg8X9qoUiAK0zKw== -"@tauri-apps/cli-linux-arm64-musl@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.8.4.tgz#bdd9deea17e0c2e4edf511a071c87670616af8a3" - integrity sha512-zumFeaU1Ws5Ay872FTyIm7z8kfzEHu8NcIn8M6TxbJs0a7GRV21KBdpW1zNj2qy7HynnpQCqjAYXTUUmm9JAOw== +"@tauri-apps/cli-linux-arm64-musl@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.9.1.tgz#011caad0d6222f5c18221d7b413e1b4750eef5f4" + integrity sha512-sGvy75sv55oeMulR5ArwPD28DsDQxqTzLhXCrpU9/nbFg/JImmI7k994YE9fr3V0qE3Cjk5gjLldRNv7I9sjwQ== -"@tauri-apps/cli-linux-riscv64-gnu@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.8.4.tgz#ac3c751ce5727fbd1da280f0aa2fb444fcd706b5" - integrity sha512-qiqbB3Zz6IyO201f+1ojxLj65WYj8mixL5cOMo63nlg8CIzsP23cPYUrx1YaDPsCLszKZo7tVs14pc7BWf+/aQ== +"@tauri-apps/cli-linux-riscv64-gnu@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.9.1.tgz#0328624bf798d653c49bc0455d1cc111e631846b" + integrity sha512-tEKbJydV3BdIxpAx8aGHW6VDg1xW4LlQuRD/QeFZdZNTreHJpMbJEcdvAcI+Hg6vgQpVpaoEldR9W4F6dYSLqQ== -"@tauri-apps/cli-linux-x64-gnu@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.8.4.tgz#7b2000b5e6597dc62f48cb67ee98f61b54493a19" - integrity sha512-TaqaDd9Oy6k45Hotx3pOf+pkbsxLaApv4rGd9mLuRM1k6YS/aw81YrsMryYPThrxrScEIUcmNIHaHsLiU4GMkw== +"@tauri-apps/cli-linux-x64-gnu@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.9.1.tgz#25e0f95615ddede953af4d29ad1c0d1f7c160c3f" + integrity sha512-mg5msXHagtHpyCVWgI01M26JeSrgE/otWyGdYcuTwyRYZYEJRTbcNt7hscOkdNlPBe7isScW7PVKbxmAjJJl4g== -"@tauri-apps/cli-linux-x64-musl@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.8.4.tgz#5dd9f6e666e004e00313d86a5d71480f7ac1269a" - integrity sha512-ot9STAwyezN8w+bBHZ+bqSQIJ0qPZFlz/AyscpGqB/JnJQVDFQcRDmUPFEaAtt2UUHSWzN3GoTJ5ypqLBp2WQA== +"@tauri-apps/cli-linux-x64-musl@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.9.1.tgz#ccb819101a225947f42ebb4f1f6902514aa902e3" + integrity sha512-lFZEXkpDreUe3zKilvnMsrnKP9gwQudaEjDnOz/GMzbzNceIuPfFZz0cR/ky1Aoq4eSvZonPKHhROq4owz4fzg== -"@tauri-apps/cli-win32-arm64-msvc@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.8.4.tgz#75eadbad9ae5726cc53139bbeae4c4a8fc4a92be" - integrity sha512-+2aJ/g90dhLiOLFSD1PbElXX3SoMdpO7HFPAZB+xot3CWlAZD1tReUFy7xe0L5GAR16ZmrxpIDM9v9gn5xRy/w== +"@tauri-apps/cli-win32-arm64-msvc@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.9.1.tgz#c0be0555d2b3686d4b3ea702039d41ed6017e4eb" + integrity sha512-ejc5RAp/Lm1Aj0EQHaT+Wdt5PHfdgQV5hIDV00MV6HNbIb5W4ZUFxMDaRkAg65gl9MvY2fH396riePW3RoKXDw== -"@tauri-apps/cli-win32-ia32-msvc@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.8.4.tgz#60e6cdad4fb59d91a194652581742d08c952f0a7" - integrity sha512-yj7WDxkL1t9Uzr2gufQ1Hl7hrHuFKTNEOyascbc109EoiAqCp0tgZ2IykQqOZmZOHU884UAWI1pVMqBhS/BfhA== +"@tauri-apps/cli-win32-ia32-msvc@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.9.1.tgz#b637cd436f129ef3ff6e83a4095c37b85f308a27" + integrity sha512-fSATtJDc0fNjVB6ystyi8NbwhNFk8i8E05h6KrsC8Fio5eaJIJvPCbC9pdrPl6kkxN1X7fj25ErBbgfqgcK8Fg== -"@tauri-apps/cli-win32-x64-msvc@2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.8.4.tgz#44461625197c531537ccba84b64c804a0d7228ae" - integrity sha512-XuvGB4ehBdd7QhMZ9qbj/8icGEatDuBNxyYHbLKsTYh90ggUlPa/AtaqcC1Fo69lGkTmq9BOKrs1aWSi7xDonA== +"@tauri-apps/cli-win32-x64-msvc@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.9.1.tgz#d7c8512dd70f9aa8203f2011322542ec11f76b66" + integrity sha512-/JHlOzpUDhjBOO9w167bcYxfJbcMQv7ykS/Y07xjtcga8np0rzUzVGWYmLMH7orKcDMC7wjhheEW1x8cbGma/Q== "@tauri-apps/cli@^2.4.0": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-2.8.4.tgz#ff8347e43164f73922356c10ba5cdbaf567ffe98" - integrity sha512-ejUZBzuQRcjFV+v/gdj/DcbyX/6T4unZQjMSBZwLzP/CymEjKcc2+Fc8xTORThebHDUvqoXMdsCZt8r+hyN15g== + version "2.9.1" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-2.9.1.tgz#cdc1cc6a005fef017b2a8f1a96d32537afc74579" + integrity sha512-kKi2/WWsNXKoMdatBl4xrT7e1Ce27JvsetBVfWuIb6D3ep/Y0WO5SIr70yarXOSWam8NyDur4ipzjZkg6m7VDg== optionalDependencies: - "@tauri-apps/cli-darwin-arm64" "2.8.4" - "@tauri-apps/cli-darwin-x64" "2.8.4" - "@tauri-apps/cli-linux-arm-gnueabihf" "2.8.4" - "@tauri-apps/cli-linux-arm64-gnu" "2.8.4" - "@tauri-apps/cli-linux-arm64-musl" "2.8.4" - "@tauri-apps/cli-linux-riscv64-gnu" "2.8.4" - "@tauri-apps/cli-linux-x64-gnu" "2.8.4" - "@tauri-apps/cli-linux-x64-musl" "2.8.4" - "@tauri-apps/cli-win32-arm64-msvc" "2.8.4" - "@tauri-apps/cli-win32-ia32-msvc" "2.8.4" - "@tauri-apps/cli-win32-x64-msvc" "2.8.4" + "@tauri-apps/cli-darwin-arm64" "2.9.1" + "@tauri-apps/cli-darwin-x64" "2.9.1" + "@tauri-apps/cli-linux-arm-gnueabihf" "2.9.1" + "@tauri-apps/cli-linux-arm64-gnu" "2.9.1" + "@tauri-apps/cli-linux-arm64-musl" "2.9.1" + "@tauri-apps/cli-linux-riscv64-gnu" "2.9.1" + "@tauri-apps/cli-linux-x64-gnu" "2.9.1" + "@tauri-apps/cli-linux-x64-musl" "2.9.1" + "@tauri-apps/cli-win32-arm64-msvc" "2.9.1" + "@tauri-apps/cli-win32-ia32-msvc" "2.9.1" + "@tauri-apps/cli-win32-x64-msvc" "2.9.1" "@tauri-apps/plugin-clipboard-manager@^2.2.2": version "2.3.0" @@ -8244,20 +6355,15 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz#2fa94879c9d46b11a5df4c74ac75befd6b283de6" - integrity sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ== + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz#74f47555b3d804b54cb7030e6f9aa0c7485cfc5b" + integrity sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA== dependencies: "@types/node" "*" "@types/qs" "*" @@ -8265,9 +6371,9 @@ "@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== + version "4.19.7" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz#f1d306dcc03b1aafbfb6b4fe684cce8a31cffc10" + integrity sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -8275,18 +6381,18 @@ "@types/send" "*" "@types/express@*": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.3.tgz#6c4bc6acddc2e2a587142e1d8be0bce20757e956" - integrity sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw== + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.4.tgz#975e7fc1097066a83b992fd2bb8a4819622e8bae" + integrity sha512-g64dbryHk7loCIrsa0R3shBnEu5p6LPJ09bu9NG58+jz+cRUjFrc3Bz0kNQ7j9bXeCsrRDvNET1G54P/GJkAyA== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^5.0.0" "@types/serve-static" "*" "@types/express@^4.17.13": - version "4.17.23" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.23.tgz#35af3193c640bfd4d7fe77191cd0ed411a433bef" - integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ== + version "4.17.24" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.24.tgz#7d4be463143e9f2f146ef805a619076ce4aaec26" + integrity sha512-Mbrt4SRlXSTWryOnHAh2d4UQ/E7n9lZyGSi6KgX+4hkuL9soYbLOVXVhnk/ODp12YsGc95f4pOvqywJ6kngUwg== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -8312,7 +6418,7 @@ dependencies: glob "*" -"@types/glob@^7.1.1", "@types/glob@^7.1.3": +"@types/glob@^7.1.1": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== @@ -8320,7 +6426,7 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": +"@types/graceful-fs@^4.1.2": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== @@ -8357,9 +6463,9 @@ integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== "@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.17" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.17.tgz#d9e2c4571fe3507343cb210cd41790375e59a533" + integrity sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw== dependencies: "@types/node" "*" @@ -8403,7 +6509,7 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.11", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@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" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -8413,7 +6519,7 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/lodash@^4.14.167", "@types/lodash@^4.14.175", "@types/lodash@^4.14.182": +"@types/lodash@^4.14.167", "@types/lodash@^4.14.175": version "4.17.20" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.20.tgz#1ca77361d7363432d29f5e55950d9ec1e1c6ea93" integrity sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA== @@ -8442,17 +6548,10 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/minimatch@*", "@types/minimatch@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-6.0.0.tgz#4d207b1cc941367bdcd195a3a781a7e4fc3b1e03" - integrity sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA== - dependencies: - minimatch "*" - -"@types/minimatch@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== +"@types/minimatch@*", "@types/minimatch@5.1.2", "@types/minimatch@^3.0.3": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/minimist@^1.2.0": version "1.2.5" @@ -8480,11 +6579,11 @@ "@types/node" "*" "@types/node@*", "@types/node@>=13.7.0": - version "24.6.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.6.2.tgz#59b99878b6fed17e698e7d09e51c729c5877736a" - integrity sha512-d2L25Y4j+W3ZlNAeMKcy7yDsK425ibcAOO2t7aPTz6gNMH0z2GThtwENCDc0d/Pw9wgyRqE5Px1wkV7naz8ang== + version "24.9.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.9.1.tgz#b7360b3c789089e57e192695a855aa4f6981a53c" + integrity sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg== dependencies: - undici-types "~7.13.0" + undici-types "~7.16.0" "@types/node@10.12.18": version "10.12.18" @@ -8497,9 +6596,9 @@ integrity sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw== "@types/node@^20": - version "20.19.19" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.19.tgz#18c8982becd5728f92e5f1939f2f3dc85604abcd" - integrity sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg== + version "20.19.23" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.23.tgz#7de99389c814071cca78656a3243f224fed7453d" + integrity sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ== dependencies: undici-types "~6.21.0" @@ -8525,7 +6624,7 @@ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== -"@types/prettier@^2.1.5", "@types/prettier@^2.6.1": +"@types/prettier@^2.1.5": version "2.7.3" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== @@ -8573,25 +6672,20 @@ integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== "@types/react@*": - version "19.2.0" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.0.tgz#8412946e7e1efb0de9bb59b3aa87676d96add385" - integrity sha512-1LOH8xovvsKsCBq1wnT4ntDUdCJKmnEakhsuoUSy6ExlHCkGP2hqnatagYTgFk6oeL0VU31u7SNjunPN+GchtA== + version "19.2.2" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.2.tgz#ba123a75d4c2a51158697160a4ea2ff70aa6bf36" + integrity sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA== dependencies: csstype "^3.0.2" "@types/react@^18", "@types/react@^18.0.26": - version "18.3.25" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.25.tgz#b37e3b05b6762b49f3944760f3bce3d5b6afa19b" - integrity sha512-oSVZmGtDPmRZtVDqvdKUi/qgCsWp5IDY29wp8na8Bj4B3cc99hfNzvNhlMkVVxctkAOGUA3Km7MMpBHAnWfcIA== + version "18.3.26" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.26.tgz#4c5970878d30db3d2a0bca1e4eb5f258e391bbeb" + integrity sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA== dependencies: "@types/prop-types" "*" csstype "^3.0.2" -"@types/resolve@1.20.2": - version "1.20.2" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" - integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== - "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -8603,9 +6697,16 @@ integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== "@types/send@*": - version "0.17.5" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.5.tgz#d991d4f2b16f2b1ef497131f00a9114290791e74" - integrity sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w== + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74" + integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== + dependencies: + "@types/node" "*" + +"@types/send@<1": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== dependencies: "@types/mime" "^1" "@types/node" "*" @@ -8618,13 +6719,13 @@ "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.8" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.8.tgz#8180c3fbe4a70e8f00b9f70b9ba7f08f35987877" - integrity sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg== + version "1.15.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== dependencies: "@types/http-errors" "*" "@types/node" "*" - "@types/send" "*" + "@types/send" "<1" "@types/sockjs@^0.3.33": version "0.3.36" @@ -8728,16 +6829,16 @@ "@types/yargs-parser" "*" "@types/yargs@^16.0.0": - version "16.0.9" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.9.tgz#ba506215e45f7707e6cbcaf386981155b7ab956e" - integrity sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA== + version "16.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.10.tgz#2376eed83bc9dbda3d7253a44e18328fc0854477" + integrity sha512-0xbOE6Ht/oj0MTVVXCCdEZzUk7adwW3YB1Tg1ZBm95jrkrUMI0VA4sf3SgxC1TG8p5aKkn3jxT9A2BDw1mM/TQ== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.33", "@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.34" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.34.tgz#1c2f9635b71d5401827373a01ce2e8a7670ea839" + integrity sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A== dependencies: "@types/yargs-parser" "*" @@ -8746,7 +6847,7 @@ resolved "https://registry.yarnpkg.com/@types/zxcvbn/-/zxcvbn-4.4.5.tgz#8ce8623ed7a36e3a76d1c0b539708dfb2e859bc0" integrity sha512-FZJgC5Bxuqg7Rhsm/bx6gAruHHhDQ55r+s0JhDh8CQ16fD7NsJJ+p8YMMQDhSQoIrSmjpqqYWA96oQVMNkjRyA== -"@typescript-eslint/eslint-plugin@^5.13.0", "@typescript-eslint/eslint-plugin@^5.7.0": +"@typescript-eslint/eslint-plugin@^5.13.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== @@ -8763,15 +6864,15 @@ tsutils "^3.21.0" "@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": - version "8.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.45.0.tgz#9f251d4e85ec5089e7cccb09257ce93dbf0d7744" - integrity sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg== + version "8.46.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.2.tgz#dc4ab93ee3d7e6c8e38820a0d6c7c93c7183e2dc" + integrity sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.45.0" - "@typescript-eslint/type-utils" "8.45.0" - "@typescript-eslint/utils" "8.45.0" - "@typescript-eslint/visitor-keys" "8.45.0" + "@typescript-eslint/scope-manager" "8.46.2" + "@typescript-eslint/type-utils" "8.46.2" + "@typescript-eslint/utils" "8.46.2" + "@typescript-eslint/visitor-keys" "8.46.2" graphemer "^1.4.0" ignore "^7.0.0" natural-compare "^1.4.0" @@ -8784,7 +6885,7 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@^5.13.0", "@typescript-eslint/parser@^5.7.0": +"@typescript-eslint/parser@^5.13.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -8795,23 +6896,23 @@ debug "^4.3.4" "@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": - version "8.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.45.0.tgz#571660c98824aefb4a6ec3b3766655d1348520a4" - integrity sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ== + version "8.46.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.46.2.tgz#dd938d45d581ac8ffa9d8a418a50282b306f7ebf" + integrity sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g== dependencies: - "@typescript-eslint/scope-manager" "8.45.0" - "@typescript-eslint/types" "8.45.0" - "@typescript-eslint/typescript-estree" "8.45.0" - "@typescript-eslint/visitor-keys" "8.45.0" + "@typescript-eslint/scope-manager" "8.46.2" + "@typescript-eslint/types" "8.46.2" + "@typescript-eslint/typescript-estree" "8.46.2" + "@typescript-eslint/visitor-keys" "8.46.2" debug "^4.3.4" -"@typescript-eslint/project-service@8.45.0": - version "8.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.45.0.tgz#f83dda1bca31dae2fd6821f9131daf1edebfd46c" - integrity sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg== +"@typescript-eslint/project-service@8.46.2": + version "8.46.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.46.2.tgz#ab2f02a0de4da6a7eeb885af5e059be57819d608" + integrity sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.45.0" - "@typescript-eslint/types" "^8.45.0" + "@typescript-eslint/tsconfig-utils" "^8.46.2" + "@typescript-eslint/types" "^8.46.2" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -8822,18 +6923,18 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@8.45.0": - version "8.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.45.0.tgz#59615ba506a9e3479d1efb0d09d6ab52f2a19142" - integrity sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA== +"@typescript-eslint/scope-manager@8.46.2": + version "8.46.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.46.2.tgz#7d37df2493c404450589acb3b5d0c69cc0670a88" + integrity sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA== dependencies: - "@typescript-eslint/types" "8.45.0" - "@typescript-eslint/visitor-keys" "8.45.0" + "@typescript-eslint/types" "8.46.2" + "@typescript-eslint/visitor-keys" "8.46.2" -"@typescript-eslint/tsconfig-utils@8.45.0", "@typescript-eslint/tsconfig-utils@^8.45.0": - version "8.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.45.0.tgz#63d38282790a2566c571bad423e7c1cad1f3d64c" - integrity sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w== +"@typescript-eslint/tsconfig-utils@8.46.2", "@typescript-eslint/tsconfig-utils@^8.46.2": + version "8.46.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.2.tgz#d110451cb93bbd189865206ea37ef677c196828c" + integrity sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag== "@typescript-eslint/type-utils@5.62.0": version "5.62.0" @@ -8845,14 +6946,14 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/type-utils@8.45.0": - version "8.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.45.0.tgz#04004bdf2598844faa29fb936fb6b0ee10d6d3f3" - integrity sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A== +"@typescript-eslint/type-utils@8.46.2": + version "8.46.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.46.2.tgz#802d027864e6fb752e65425ed09f3e089fb4d384" + integrity sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA== dependencies: - "@typescript-eslint/types" "8.45.0" - "@typescript-eslint/typescript-estree" "8.45.0" - "@typescript-eslint/utils" "8.45.0" + "@typescript-eslint/types" "8.46.2" + "@typescript-eslint/typescript-estree" "8.46.2" + "@typescript-eslint/utils" "8.46.2" debug "^4.3.4" ts-api-utils "^2.1.0" @@ -8861,10 +6962,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@8.45.0", "@typescript-eslint/types@^8.45.0": - version "8.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.45.0.tgz#fc01cd2a4690b9713b02f895e82fb43f7d960684" - integrity sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA== +"@typescript-eslint/types@8.46.2", "@typescript-eslint/types@^8.46.2": + version "8.46.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.46.2.tgz#2bad7348511b31e6e42579820e62b73145635763" + integrity sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -8879,15 +6980,15 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@8.45.0": - version "8.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.45.0.tgz#3498500f109a89b104d2770497c707e56dfe062d" - integrity sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA== +"@typescript-eslint/typescript-estree@8.46.2": + version "8.46.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.2.tgz#ab547a27e4222bb6a3281cb7e98705272e2c7d08" + integrity sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ== dependencies: - "@typescript-eslint/project-service" "8.45.0" - "@typescript-eslint/tsconfig-utils" "8.45.0" - "@typescript-eslint/types" "8.45.0" - "@typescript-eslint/visitor-keys" "8.45.0" + "@typescript-eslint/project-service" "8.46.2" + "@typescript-eslint/tsconfig-utils" "8.46.2" + "@typescript-eslint/types" "8.46.2" + "@typescript-eslint/visitor-keys" "8.46.2" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -8909,15 +7010,15 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@8.45.0": - version "8.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.45.0.tgz#6e68e92d99019fdf56018d0e6664c76a70470c95" - integrity sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg== +"@typescript-eslint/utils@8.46.2": + version "8.46.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.46.2.tgz#b313d33d67f9918583af205bd7bcebf20f231732" + integrity sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg== dependencies: "@eslint-community/eslint-utils" "^4.7.0" - "@typescript-eslint/scope-manager" "8.45.0" - "@typescript-eslint/types" "8.45.0" - "@typescript-eslint/typescript-estree" "8.45.0" + "@typescript-eslint/scope-manager" "8.46.2" + "@typescript-eslint/types" "8.46.2" + "@typescript-eslint/typescript-estree" "8.46.2" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -8927,12 +7028,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@8.45.0": - version "8.45.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.45.0.tgz#4e3bcc55da64ac61069ebfe62ca240567ac7d784" - integrity sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag== +"@typescript-eslint/visitor-keys@8.46.2": + version "8.46.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz#803fa298948c39acf810af21bdce6f8babfa9738" + integrity sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w== dependencies: - "@typescript-eslint/types" "8.45.0" + "@typescript-eslint/types" "8.46.2" eslint-visitor-keys "^4.2.1" "@uidotdev/usehooks@^2.4.1": @@ -9133,9 +7234,9 @@ unstorage "^1.9.0" "@walletconnect/logger@^2.0.1": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.1.2.tgz#813c9af61b96323a99f16c10089bfeb525e2a272" - integrity sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw== + version "2.1.3" + resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.1.3.tgz#f7b2ba46652a960fb731839cad271a94a0523a08" + integrity sha512-wRsD0eDQSajj8YMM/jpxoH1yeSLyS7FPkh0VKCQ1BWrERTy1Z7/DmOE8FYm/gmd7Cg6BNXVWiymhGq6wnmlq8w== dependencies: "@walletconnect/safe-json" "^1.0.2" pino "7.11.0" @@ -9548,7 +7649,7 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.1.1, acorn@^7.4.0, acorn@^7.4.1: +acorn@^7.1.1, acorn@^7.4.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -9642,7 +7743,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -9652,7 +7753,7 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.0.1, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.9.0: version "8.17.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== @@ -9679,21 +7780,11 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-colors@^4.1.1, ansi-colors@^4.1.3: +ansi-colors@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-escapes@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" - integrity sha512-tH/fSoQp4DrEodDK3QpdiWiZTSe7sBJ9eOqcQBZ0o9HTM+5M/viSEn+sPMoTuPjQQ8n++w3QJoPEjt8LVPcrCg== - -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -9716,16 +7807,6 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -9736,16 +7817,6 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== -ansi-sequence-parser@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.3.tgz#f2cefb8b681aeb72b7cd50aebc00d509eba64d4c" - integrity sha512-+fksAx9eG3Ab6LDnLs3ZqZa8KVJ/jYnX+D4Qe1azX+LFGFAXqynCQLOdLpNYN/l9e7l6hMWwZbrnctqr6eSQSw== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -9777,11 +7848,6 @@ ansi-to-html@^0.6.11: dependencies: entities "^2.0.0" -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -10028,7 +8094,7 @@ arraybuffer.prototype.slice@^1.0.4: get-intrinsic "^1.2.6" is-array-buffer "^3.0.4" -arrify@^1.0.0, arrify@^1.0.1: +arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== @@ -10060,13 +8126,6 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -ast-stringify@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ast-stringify/-/ast-stringify-0.1.0.tgz#5c6439fbfb4513dcc26c7d34464ccd084ed91cb7" - integrity sha512-J1PgFYV3RG6r37+M6ySZJH406hR82okwGvFM9hLXpOvdx4WC4GEW8/qiw6pi1hKTrqcRvoHP8a7mp87egYr6iA== - dependencies: - "@babel/runtime" "^7.11.2" - ast-types-flow@^0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" @@ -10079,11 +8138,6 @@ ast-types@^0.14.2: dependencies: tslib "^2.0.1" -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - async-each@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" @@ -10119,11 +8173,6 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -attr-accept@^2.0.0, attr-accept@^2.2.4: - version "2.2.5" - resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.5.tgz#d7061d958e6d4f97bf8665c68b75851a0713ab5e" - integrity sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ== - author-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-1.0.0.tgz#d08885be6b9bbf9439fe087c76287245f0a81450" @@ -10150,18 +8199,11 @@ available-typed-arrays@^1.0.7: possible-typed-array-names "^1.0.0" axe-core@^4.10.0: - version "4.10.3" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.3.tgz#04145965ac7894faddbac30861e5d8f11bfd14fc" - integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg== + version "4.11.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.11.0.tgz#16f74d6482e343ff263d4f4503829e9ee91a86b6" + integrity sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ== -axios@^0.21.2: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -axios@^1.0.0, axios@^1.3.3, axios@^1.6.0: +axios@^1.0.0, axios@^1.6.0: version "1.12.2" resolved "https://registry.yarnpkg.com/axios/-/axios-1.12.2.tgz#6c307390136cf7a2278d09cec63b136dfc6e6da7" integrity sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw== @@ -10189,19 +8231,6 @@ babel-jest@^27.5.1: graceful-fs "^4.2.9" slash "^3.0.0" -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - babel-loader@^8.0.0, babel-loader@^8.2.3, babel-loader@^8.3.0: version "8.4.1" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.4.1.tgz#6ccb75c66e62c3b144e1c5f2eaec5b8f6c08c675" @@ -10261,16 +8290,6 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - babel-plugin-macros@^3.0.1, babel-plugin-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -10285,15 +8304,6 @@ babel-plugin-named-exports-order@^0.0.2: resolved "https://registry.yarnpkg.com/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz#ae14909521cf9606094a2048239d69847540cb09" integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw== -babel-plugin-polyfill-corejs2@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" - babel-plugin-polyfill-corejs2@^0.4.14: version "0.4.14" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f" @@ -10319,21 +8329,6 @@ babel-plugin-polyfill-corejs3@^0.13.0: "@babel/helper-define-polyfill-provider" "^0.6.5" core-js-compat "^3.43.0" -babel-plugin-polyfill-corejs3@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" - integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - -babel-plugin-polyfill-regenerator@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - babel-plugin-polyfill-regenerator@^0.6.5: version "0.6.5" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5" @@ -10393,14 +8388,6 @@ babel-preset-jest@^27.5.1: babel-plugin-jest-hoist "^27.5.1" babel-preset-current-node-syntax "^1.0.0" -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - bail@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" @@ -10416,18 +8403,13 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.11, base-x@^3.0.2, base-x@^3.0.6: +base-x@^3.0.2, base-x@^3.0.6: version "3.0.11" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== dependencies: safe-buffer "^5.0.1" -base64-arraybuffer-es6@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/base64-arraybuffer-es6/-/base64-arraybuffer-es6-0.7.0.tgz#dbe1e6c87b1bf1ca2875904461a7de40f21abc86" - integrity sha512-ESyU/U1CFZDJUdr+neHRhNozeCv72Y7Vm0m1DCbjX3KBjT6eYocvAJlSk6+8+HkVwXlT1FNxhGW6q3UKAlCvvw== - base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -10446,10 +8428,10 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -baseline-browser-mapping@^2.8.9: - version "2.8.10" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.10.tgz#32eb5e253d633fa3fa3ffb1685fabf41680d9e8a" - integrity sha512-uLfgBi+7IBNay8ECBO2mVMGZAc1VgZWEChxm4lv+TobGdG82LnXMjuNGo/BSSZZL4UmkWhxEHP2f5ziLNwGWMA== +baseline-browser-mapping@^2.8.19: + version "2.8.20" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz#6766cf270f3668d20b6712b9c54cc911b87da714" + integrity sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ== batch@0.6.1: version "0.6.1" @@ -10681,11 +8663,6 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-stdout@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - browserify-aes@^1.0.4, browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -10748,18 +8725,18 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.4, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.5, browserslist@^4.25.3: - version "4.26.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.26.3.tgz#40fbfe2d1cd420281ce5b1caa8840049c79afb56" - integrity sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.21.4, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.26.3: + version "4.27.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.27.0.tgz#755654744feae978fbb123718b2f139bc0fa6697" + integrity sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw== dependencies: - baseline-browser-mapping "^2.8.9" - caniuse-lite "^1.0.30001746" - electron-to-chromium "^1.5.227" - node-releases "^2.0.21" - update-browserslist-db "^1.1.3" + baseline-browser-mapping "^2.8.19" + caniuse-lite "^1.0.30001751" + electron-to-chromium "^1.5.238" + node-releases "^2.0.26" + update-browserslist-db "^1.1.4" -bs-logger@0.x, bs-logger@^0.2.6: +bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== @@ -10789,7 +8766,7 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-from@^1.0.0, buffer-from@^1.1.0: +buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== @@ -10841,13 +8818,6 @@ builtins@^5.0.0: dependencies: semver "^7.0.0" -bundle-name@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" - integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== - dependencies: - run-applescript "^7.0.0" - busboy@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" @@ -11061,7 +9031,7 @@ camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.2.0: +camelcase@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -11076,10 +9046,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001746: - version "1.0.30001746" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001746.tgz#199d20f04f5369825e00ff7067d45d5dfa03aee7" - integrity sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001751: + version "1.0.30001751" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz#dacd5d9f4baeea841641640139d2b2a4df4226ad" + integrity sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw== capture-exit@^2.0.0: version "2.0.0" @@ -11093,11 +9063,6 @@ case-sensitive-paths-webpack-plugin@^2.3.0: resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== -case@1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" - integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== - ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" @@ -11109,11 +9074,11 @@ ccount@^2.0.0: integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== chain-registry@^1.69.64: - version "1.69.356" - resolved "https://registry.yarnpkg.com/chain-registry/-/chain-registry-1.69.356.tgz#e75ac2f46bd104fdc4fb0b0ad6e56f2e23d87b28" - integrity sha512-dE1CPa+6b4AXsxODO17MOwPExBk8BBO27GO1xeGR2J3jmukCl0aTzpe6sB4D36gOiDNETchdrGyIA4sqnJYMoQ== + version "1.69.378" + resolved "https://registry.yarnpkg.com/chain-registry/-/chain-registry-1.69.378.tgz#7184fe44d19d50082abb460e890abb1fbeec8390" + integrity sha512-jDSpxQsp0X+jPISKHAoY+ysxjlzh7jjkYRrvFE5bmdpRxrZyjCdgqdZM15qwvbZKoBwlVmxfZ2KnDSODX4raCQ== dependencies: - "@chain-registry/types" "^0.50.221" + "@chain-registry/types" "^0.50.238" chalk@4.1.0: version "4.1.0" @@ -11123,18 +9088,7 @@ chalk@4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -11199,16 +9153,6 @@ character-reference-invalid@^2.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - chardet@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-2.1.0.tgz#1007f441a1ae9f9199a4a67f6e978fb0aa9aa3fe" @@ -11233,7 +9177,7 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.2, chokidar@^3.5.3: +chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.3: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -11265,7 +9209,7 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -chrome-trace-event@^1.0.2, chrome-trace-event@^1.0.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" integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== @@ -11281,9 +9225,9 @@ ci-info@^3.2.0, ci-info@^3.6.1: integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== ci-info@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.0.tgz#c39b1013f8fdbd28cd78e62318357d02da160cd7" - integrity sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ== + version "4.3.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.1.tgz#355ad571920810b5623e11d40232f443f16f1daa" + integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.7" @@ -11345,17 +9289,6 @@ cli-boxes@^2.2.1: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -cli-color@^2.0.2, cli-color@~2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.4.tgz#d658080290968816b322248b7306fad2346fb2c8" - integrity sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA== - dependencies: - d "^1.0.1" - es5-ext "^0.10.64" - es6-iterator "^2.0.3" - memoizee "^0.4.15" - timers-ext "^0.1.7" - cli-cursor@3.1.0, cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -11363,13 +9296,6 @@ cli-cursor@3.1.0, cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== - dependencies: - restore-cursor "^2.0.0" - cli-spinners@2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" @@ -11389,11 +9315,6 @@ cli-table3@^0.6.1: optionalDependencies: "@colors/colors" "1.5.0" -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -11441,17 +9362,12 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -clone@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - clsx@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.0.tgz#62937c6adfea771247c34b54d320fb99624f5702" integrity sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA== -clsx@^1.0.2, clsx@^1.0.4, clsx@^1.1.0, clsx@^1.1.1: +clsx@^1.0.4, clsx@^1.1.0, clsx@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== @@ -11477,9 +9393,9 @@ collapse-white-space@^1.0.2: integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + version "1.0.3" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz#cc1f01eb8d02298cbc9a437c74c70ab4e5210b80" + integrity sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw== collection-visit@^1.0.0: version "1.0.0" @@ -11544,7 +9460,7 @@ colorette@^1.2.2: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== -colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.19: +colorette@^2.0.10, colorette@^2.0.14: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -11554,11 +9470,6 @@ colornames@^1.1.1: resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96" integrity sha512-/pyV40IrsdulWv+wFPmERh9k/mjsPZ64yUMDmWrtj/k1nmgrzzIENWKdaVKyBbvFdQWqkcaRxr+polCo3VMe7A== -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - columnify@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" @@ -11574,11 +9485,6 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -comlink@^4.3.1: - version "4.4.2" - resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.2.tgz#cbbcd82742fbebc06489c28a183eedc5c60a2bca" - integrity sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g== - 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" @@ -11594,11 +9500,6 @@ commander@^10.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== -commander@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -11624,16 +9525,6 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.4.1: - version "9.5.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" - integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== - -commander@~14.0.0: - version "14.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.1.tgz#2f9225c19e6ebd0dc4404dd45821b2caa17ea09b" - integrity sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A== - 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" @@ -11873,22 +9764,22 @@ copy-webpack-plugin@^11.0.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.21.0, core-js-compat@^3.22.1, core-js-compat@^3.43.0, core-js-compat@^3.8.1: - version "3.45.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.45.1.tgz#424f3f4af30bf676fd1b67a579465104f64e9c7a" - integrity sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA== +core-js-compat@^3.43.0, core-js-compat@^3.8.1: + version "3.46.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.46.0.tgz#0c87126a19a1af00371e12b02a2b088a40f3c6f7" + integrity sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law== dependencies: - browserslist "^4.25.3" + browserslist "^4.26.3" core-js-pure@^3.23.3: - version "3.45.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.45.1.tgz#b129d86a5f7f8380378577c7eaee83608570a05a" - integrity sha512-OHnWFKgTUshEU8MK+lOs1H8kC8GkTi9Z1tvNkxrCcw9wl3MJIO7q2ld77wjWn4/xuGrVu2X+nME1iIIPBSdyEQ== + version "3.46.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.46.0.tgz#9bb80248584c6334bb54cd381b0f41c619ef1b43" + integrity sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw== core-js@^3.0.4, core-js@^3.6.5, core-js@^3.8.2: - version "3.45.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.45.1.tgz#5810e04a1b4e9bc5ddaa4dd12e702ff67300634d" - integrity sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg== + version "3.46.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.46.0.tgz#323a092b96381a9184d0cd49ee9083b2f93373bb" + integrity sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA== core-util-is@~1.0.0: version "1.0.3" @@ -11927,22 +9818,6 @@ cosmiconfig@^8.2.0: parse-json "^5.2.0" path-type "^4.0.0" -cosmjs-types@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.4.1.tgz#3b2a53ba60d33159dd075596ce8267cfa7027063" - integrity sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog== - dependencies: - long "^4.0.0" - protobufjs "~6.11.2" - -cosmjs-types@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.5.2.tgz#2d42b354946f330dfb5c90a87fdc2a36f97b965d" - integrity sha512-zxCtIJj8v3Di7s39uN4LNcN3HIE1z0B9Z0SPE8ZNQR0oSzsuSe1ACgxoFkvhkS7WBasCAFcglS11G2hyfd5tPg== - dependencies: - long "^4.0.0" - protobufjs "~6.11.2" - cosmjs-types@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.9.0.tgz#c3bc482d28c7dfa25d1445093fdb2d9da1f6cfcc" @@ -12004,19 +9879,6 @@ create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - cross-fetch@^3.1.5: version "3.2.0" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" @@ -12363,7 +10225,7 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -cssstyle@^5.3.0: +cssstyle@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-5.3.1.tgz#f55a9cc73d12705da8a341261d5e85003fe3a441" integrity sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ== @@ -12506,29 +10368,16 @@ d3-timer@^3.0.1: resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== -d@1, d@^1.0.1, d@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" - integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== - dependencies: - es5-ext "^0.10.64" - type "^2.7.2" - damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -dargs@7.0.0, dargs@^7.0.0: +dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -data-uri-to-buffer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" - integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== - data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -12597,7 +10446,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@4, debug@^4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.1: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.4.0, debug@^4.4.1: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -12624,17 +10473,12 @@ decamelize@^1.1.0, decamelize@^1.1.2: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - decimal.js-light@^2.4.1: version "2.5.1" resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== -decimal.js@^10.2.1, decimal.js@^10.4.3, decimal.js@^10.5.0: +decimal.js@^10.2.1, decimal.js@^10.4.3, decimal.js@^10.6.0: version "10.6.0" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== @@ -12656,7 +10500,7 @@ dedent@0.7.0, dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -dedent@^1.0.0, dedent@^1.5.3: +dedent@^1.5.3: version "1.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.7.0.tgz#c1f9445335f0175a96587be245a282ff451446ca" integrity sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ== @@ -12695,11 +10539,6 @@ deep-object-diff@^1.1.9: resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz#6df7ef035ad6a0caa44479c536ed7b02570f4595" integrity sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA== -deepmerge@4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - deepmerge@^4.2.2: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" @@ -12714,19 +10553,6 @@ default-browser-id@^1.0.4: meow "^3.1.0" untildify "^2.0.0" -default-browser-id@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" - integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== - -default-browser@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" - integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== - dependencies: - bundle-name "^4.1.0" - default-browser-id "^5.0.0" - default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" @@ -12755,11 +10581,6 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" @@ -12881,15 +10702,10 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - -detect-libc@^2.0.1, detect-libc@^2.0.3: - version "2.1.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.1.tgz#9f1e511ace6bb525efea4651345beac424dac7b9" - integrity sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw== +detect-libc@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== detect-newline@^3.0.0: version "3.1.0" @@ -12928,26 +10744,11 @@ diff-sequences@^27.5.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== -diff-sequences@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" - integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== - diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -diff@^3.1.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - -diff@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== - diffie-hellman@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -13045,13 +10846,6 @@ domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -13073,10 +10867,10 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -dompurify@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.7.tgz#721d63913db5111dd6dfda8d3a748cfd7982d44a" - integrity sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw== +dompurify@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.3.0.tgz#aaaadbb83d87e1c2fbb066452416359e5b62ec97" + integrity sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ== optionalDependencies: "@types/trusted-types" "^2.0.7" @@ -13120,13 +10914,6 @@ dotenv-defaults@^2.0.2: dependencies: dotenv "^8.2.0" -dotenv-expand@^11.0.7: - version "11.0.7" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" - integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== - dependencies: - dotenv "^16.4.5" - dotenv-expand@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" @@ -13151,11 +10938,6 @@ dotenv-webpack@^8.0.1: dependencies: dotenv-defaults "^2.0.2" -dotenv@^16.0.3, dotenv@^16.4.5, dotenv@^16.5.0: - version "16.6.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" - integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== - dotenv@^8.0.0, dotenv@^8.2.0: version "8.6.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" @@ -13166,11 +10948,6 @@ dotenv@~16.3.1: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.2.tgz#3cb611ce5a63002dbabf7c281bc331f69d28f03f" integrity sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ== -dotty@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dotty/-/dotty-0.1.2.tgz#512d44cc4111a724931226259297f235e8484f6f" - integrity sha512-V0EWmKeH3DEhMwAZ+8ZB2Ao4OK6p++Z0hsDtZq3N0+0ZMVqkzrcEGROvOnZpLnvBg5PTNG23JEDLAm64gPaotQ== - dunder-proto@^1.0.0, dunder-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" @@ -13222,10 +10999,10 @@ ejs@^3.1.7: dependencies: jake "^10.8.5" -electron-to-chromium@^1.5.227: - version "1.5.228" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.228.tgz#38b849bc8714bd21fb64f5ad56bf8cfd8638e1e9" - integrity sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA== +electron-to-chromium@^1.5.238: + version "1.5.240" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.240.tgz#bfd946570a723aa3754370065d02e23e30824774" + integrity sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ== elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4, elliptic@^6.6.1: version "6.6.1" @@ -13240,11 +11017,6 @@ elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4, elliptic@^6.6.1: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - emittery@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" @@ -13265,16 +11037,16 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -encodeurl@^2.0.0, encodeurl@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" - integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== - encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 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" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -13315,14 +11087,6 @@ enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.3, enhanced-resolve@^5.7.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.5: - version "2.4.1" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" - integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== - dependencies: - ansi-colors "^4.1.1" - strip-ansi "^6.0.1" - enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -13356,9 +11120,9 @@ envinfo@7.8.1: integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== envinfo@^7.7.3: - version "7.15.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.15.0.tgz#7d5a6d464df38708ee5ac135289c88f0c9bffa7e" - integrity sha512-chR+t7exF6y59kelhXw5I3849nTy7KIRO+ePdLMhCD+JRP/JvmkenDWP7QSFGlsHX+kxGxdDutOPrmj5j1HR6g== + version "7.19.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.19.0.tgz#b4b4507a27e9900b0175f556167fd3a95f8623f1" + integrity sha512-DoSM9VyG6O3vqBf+p3Gjgr/Q52HYBBtO3v+4koAxt1MnWr+zEnxE+nke/yXS4lt2P4SYCHQ4V3f1i88LQVOpAw== err-code@^2.0.2: version "2.0.3" @@ -13536,53 +11300,16 @@ es-to-primitive@^1.3.0: is-date-object "^1.0.5" is-symbol "^1.0.4" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.2: - version "0.10.64" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" - integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - esniff "^2.0.1" - next-tick "^1.1.0" - es5-shim@^4.5.13: version "4.6.7" resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.6.7.tgz#bc67ae0fc3dd520636e0a1601cc73b450ad3e955" integrity sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ== -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - es6-shim@^0.35.5: version "0.35.8" resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.8.tgz#89216f6fbf8bacba3f897c8c0e814d2a41c05fb7" integrity sha512-Twf7I2v4/1tLoIXMT8HlqaBSS5H2wQTs2wx3MNYCI8K1R1/clXyCazrcVCPm/FuO9cyV8+leEaZOWD5C253NDg== -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" - integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== - dependencies: - d "^1.0.2" - ext "^1.7.0" - -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" @@ -13593,7 +11320,7 @@ escape-html@^1.0.3, escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== @@ -13636,7 +11363,7 @@ eslint-config-airbnb-typescript@^16.1.0: dependencies: eslint-config-airbnb-base "^15.0.0" -eslint-config-airbnb@^19.0.2, eslint-config-airbnb@^19.0.4: +eslint-config-airbnb@^19.0.4: version "19.0.4" resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== @@ -13661,7 +11388,7 @@ eslint-config-next@15.0.3: eslint-plugin-react "^7.35.0" eslint-plugin-react-hooks "^5.0.0" -eslint-config-prettier@^8.3.0, eslint-config-prettier@^8.5.0: +eslint-config-prettier@^8.5.0: version "8.10.2" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz#0642e53625ebc62c31c24726b0f050df6bd97a2e" integrity sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A== @@ -13756,15 +11483,6 @@ eslint-plugin-jsx-a11y@^6.10.0, eslint-plugin-jsx-a11y@^6.5.1: safe-regex-test "^1.0.3" string.prototype.includes "^2.0.1" -eslint-plugin-mocha@^10.0.3: - version "10.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-10.5.0.tgz#0aca8d709e7cddef566e0dc252f6b02e307a2b7e" - integrity sha512-F2ALmQVPT1GoP27O1JTZGrV9Pqg8k79OeIuvw63UxMtQKREZtmkK1NFgkZQ2TW7L2JSSFKHFPTtHu5z8R9QNRw== - dependencies: - eslint-utils "^3.0.0" - globals "^13.24.0" - rambda "^7.4.0" - eslint-plugin-prettier@^4.0.0: version "4.2.5" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz#91ca3f2f01a84f1272cce04e9717550494c0fe06" @@ -13839,30 +11557,6 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" @@ -13873,52 +11567,6 @@ eslint-visitor-keys@^4.2.1: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== -eslint@^7.18.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - eslint@^8, eslint@^8.10.0: version "8.57.1" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" @@ -13963,25 +11611,6 @@ eslint@^8, eslint@^8.10.0: strip-ansi "^6.0.1" text-table "^0.2.0" -esniff@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" - integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== - dependencies: - d "^1.0.1" - es5-ext "^0.10.62" - event-emitter "^0.3.5" - type "^2.7.2" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" @@ -13996,7 +11625,7 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0, esquery@^1.4.2: +esquery@^1.4.2: version "1.6.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== @@ -14034,39 +11663,16 @@ estree-util-is-identifier-name@^3.0.0: resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd" integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@^1.8.1, etag@~1.8.1: +etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== - dependencies: - d "1" - es5-ext "~0.10.14" - eventemitter3@^4.0.0, eventemitter3@^4.0.1, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -14161,28 +11767,6 @@ expect@^27.5.1: jest-matcher-utils "^27.5.1" jest-message-util "^27.5.1" -expect@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" - integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== - dependencies: - "@jest/expect-utils" "^28.1.3" - jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - -expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - expect@^30.0.0: version "30.2.0" resolved "https://registry.yarnpkg.com/expect/-/expect-30.2.0.tgz#d4013bed267013c14bc1199cec8aa57cee9b5869" @@ -14196,9 +11780,9 @@ expect@^30.0.0: jest-util "30.2.0" exponential-backoff@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.2.tgz#a8f26adb96bf78e8cd8ad1037928d5e5c0679d91" - integrity sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.3.tgz#51cf92c1c0493c766053f9d3abee4434c244d2f6" + integrity sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA== express@^4.17.1, express@^4.17.3: version "4.21.2" @@ -14237,13 +11821,6 @@ express@^4.17.1, express@^4.17.3: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" - integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== - dependencies: - type "^2.7.2" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -14264,24 +11841,6 @@ extend@^3.0.0: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^2.0.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -14296,18 +11855,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -fake-indexeddb@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/fake-indexeddb/-/fake-indexeddb-4.0.2.tgz#e7a884158fa576e00f03e973b9874619947013e4" - integrity sha512-SdTwEhnakbgazc7W3WUXOJfGmhH0YfG4d+dRPOFoYDRTL6U5t8tvrmkf2W/C3W1jk2ylV7Wrnj44RASqpX/lEw== - dependencies: - realistic-structured-clone "^3.0.0" - -fake-indexeddb@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/fake-indexeddb/-/fake-indexeddb-5.0.2.tgz#8e0b6c75c6dc6639cbb50c1aa948772147d7c93e" - integrity sha512-cB507r5T3D55DfclY01GLkninZLfU7HXV/mhVRTnTRm5k2u+fY7Fof2dBkr80p5t7G7dlA/G5dI87QiMdPpMCQ== - 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" @@ -14362,7 +11909,7 @@ fast-json-parse@^1.0.3: resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@2.x, 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" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -14434,14 +11981,6 @@ fdir@^6.5.0: resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== -fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" - integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== - dependencies: - node-domexception "^1.0.0" - web-streams-polyfill "^3.0.3" - fetch-retry@^5.0.2: version "5.0.6" resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.6.tgz#17d0bc90423405b7a88b74355bf364acd2a7fa56" @@ -14459,13 +11998,6 @@ figures@3.2.0, figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -14481,20 +12013,6 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" -file-selector@^0.1.12: - version "0.1.19" - resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.1.19.tgz#8ecc9d069a6f544f2e4a096b64a8052e70ec8abf" - integrity sha512-kCWw3+Aai8Uox+5tHCNgMFaUdgidxvMnLWO6fM5sZ0hA2wlHP5/DHGF0ECe84BiB95qdJbKNEJhWKVDvMN+JDQ== - dependencies: - tslib "^2.0.1" - -file-selector@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-2.1.2.tgz#fe7c7ee9e550952dfbc863d73b14dc740d7de8b4" - integrity sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig== - dependencies: - tslib "^2.7.0" - file-system-cache@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-1.1.0.tgz#984de17b976b75a77a27e08d6828137c1aa80fa1" @@ -14545,18 +12063,6 @@ finalhandler@1.3.1: statuses "2.0.1" unpipe "~1.0.0" -finalhandler@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-2.1.0.tgz#72306373aa89d05a8242ed569ed86a1bff7c561f" - integrity sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q== - dependencies: - debug "^4.4.0" - encodeurl "^2.0.0" - escape-html "^1.0.3" - on-finished "^2.4.1" - parseurl "^1.3.3" - statuses "^2.0.1" - find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -14668,7 +12174,7 @@ focus-lock@^0.8.0: dependencies: tslib "^1.9.3" -follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.15.6: +follow-redirects@^1.0.0, follow-redirects@^1.15.6: version "1.15.11" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== @@ -14791,13 +12297,6 @@ form-data@^4.0.4: hasown "^2.0.2" mime-types "^2.1.12" -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -14815,11 +12314,6 @@ fresh@0.5.2, fresh@~0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4" - integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== - from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" @@ -14925,21 +12419,11 @@ function.prototype.name@^1.1.0, function.prototype.name@^1.1.6, function.prototy hasown "^2.0.2" is-callable "^1.2.7" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -fuzzy@0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" - integrity sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w== - gauge@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" @@ -15020,11 +12504,6 @@ get-port@5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-port@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" - integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== - get-proto@^1.0.0, get-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" @@ -15038,11 +12517,6 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== -get-stdin@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" - integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== - get-stream@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" @@ -15070,9 +12544,9 @@ get-symbol-description@^1.0.2, get-symbol-description@^1.1.0: get-intrinsic "^1.2.6" get-tsconfig@^4.10.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.1.tgz#d34c1c01f47d65a606c37aa7a177bc3e56ab4b2e" - integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ== + version "4.13.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz#fcdd991e6d22ab9a600f00e91c318707a5d9a0d7" + integrity sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ== dependencies: resolve-pkg-maps "^1.0.0" @@ -15162,13 +12636,6 @@ glob-promise@^3.4.0: dependencies: "@types/glob" "*" -glob-promise@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" - integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== - dependencies: - "@types/glob" "^7.1.3" - glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" @@ -15203,17 +12670,6 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - glob@^10.2.2: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" @@ -15226,7 +12682,7 @@ glob@^10.2.2: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -15238,7 +12694,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1, glob@^8.0.3, glob@^8.1.0: +glob@^8.0.1: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -15267,12 +12723,7 @@ global@^4.4.0: min-document "^2.19.0" process "^0.11.10" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0, globals@^13.24.0, globals@^13.6.0, globals@^13.9.0: +globals@^13.19.0: version "13.24.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== @@ -15370,7 +12821,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.7.7, handlebars@^4.7.8: +handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== @@ -15387,13 +12838,6 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - has-bigints@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe" @@ -15792,7 +13236,7 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@2.0.0, http-errors@^2.0.0: +http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== @@ -15916,7 +13360,7 @@ i18next@^24.2.2: dependencies: "@babel/runtime" "^7.26.10" -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -15964,11 +13408,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== - ignore-walk@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" @@ -15983,7 +13422,7 @@ ignore-walk@^6.0.0: dependencies: minimatch "^9.0.0" -ignore@^4.0.3, ignore@^4.0.6: +ignore@^4.0.3: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -16008,7 +13447,7 @@ immer@^10.1.1: resolved "https://registry.yarnpkg.com/immer/-/immer-10.1.3.tgz#e38a0b97db59949d31d9b381b04c2e441b1c3747" integrity sha512-tmjF/k8QDKydUlm3mZU+tjM6zeq9/fFpPqH9SzWmBnVVKsPBg/V66qsMwb3/Bo90cgUN+ghdVBess+hPsxUyRw== -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: +import-fresh@^3.1.0, import-fresh@^3.2.1, 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== @@ -16100,58 +13539,6 @@ inline-style-parser@0.2.4: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.4.tgz#f4af5fe72e612839fcd453d989a586566d695f22" integrity sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q== -inquirer-autocomplete-prompt@^0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-0.11.1.tgz#f90ca9510a4c489882e9be294934bd8c2e575e09" - integrity sha512-VM4eNiyRD4CeUc2cyKni+F8qgHwL9WC4LdOr+mEC85qP/QNsDV+ysVqUrJYhw1TmDQu1QVhc8hbaL7wfk8SJxw== - dependencies: - ansi-escapes "^2.0.0" - chalk "^1.1.3" - figures "^2.0.0" - inquirer "3.1.1" - lodash "^4.17.4" - run-async "^2.3.0" - util "^0.10.3" - -inquirer@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.1.1.tgz#87621c4fba4072f48a8dd71c9f9df6f100b2d534" - integrity sha512-H50sHQwgvvaTBd3HpKMVtL/u6LoHDvYym51gd7bGQe/+9HkCE+J0/3N5FJLfd6O6oz44hHewC2Pc2LodzWVafQ== - dependencies: - ansi-escapes "^2.0.0" - chalk "^1.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.0.0" - strip-ansi "^3.0.0" - through "^2.3.6" - -inquirer@^6.0.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - inquirer@^8.2.4: version "8.2.7" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.7.tgz#62f6b931a9b7f8735dc42db927316d8fb6f71de8" @@ -16173,15 +13560,6 @@ inquirer@^8.2.4: through "^2.3.6" wrap-ansi "^6.0.1" -inquirerer@0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/inquirerer/-/inquirerer-0.1.3.tgz#ecf91dc672b3bf45211d7f64bf5e8d5e171fd2ad" - integrity sha512-yGgLUOqPxTsINBjZNZeLi3cv2zgxXtw9feaAOSJf2j6AqIT5Uxs5ZOqOrfAf+xP65Sicla1FD3iDxa3D6TsCAQ== - dependencies: - colors "^1.1.2" - inquirer "^6.0.0" - inquirer-autocomplete-prompt "^0.11.1" - internal-slot@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" @@ -16201,11 +13579,6 @@ internmap@^1.0.0: resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" @@ -16217,13 +13590,13 @@ interpret@^3.1.1: integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== intl-messageformat@^10.1.0: - version "10.7.16" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.7.16.tgz#d909f9f9f4ab857fbe681d559b958dd4dd9f665a" - integrity sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug== + version "10.7.18" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.7.18.tgz#51a6f387afbca9b0f881b2ec081566db8c540b0d" + integrity sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g== dependencies: - "@formatjs/ecma402-abstract" "2.3.4" + "@formatjs/ecma402-abstract" "2.3.6" "@formatjs/fast-memoize" "2.2.7" - "@formatjs/icu-messageformat-parser" "2.11.2" + "@formatjs/icu-messageformat-parser" "2.11.4" tslib "^2.8.0" ip-address@^10.0.1: @@ -16392,7 +13765,7 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1, is-core-module@^2.5.0, is-core-module@^2.8.1: +is-core-module@^2.13.0, is-core-module@^2.16.1, is-core-module@^2.5.0, is-core-module@^2.8.1: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -16454,11 +13827,6 @@ is-docker@^2.0.0, is-docker@^2.1.1: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - is-dom@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.1.0.tgz#af1fced292742443bb59ca3f76ab5e80907b4e8a" @@ -16496,11 +13864,6 @@ is-finite@^1.0.0: resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - 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" @@ -16556,13 +13919,6 @@ is-in-browser@^1.0.2, is-in-browser@^1.1.3: resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - is-interactive@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" @@ -16578,11 +13934,6 @@ is-map@^2.0.2, is-map@^2.0.3: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - is-negative-zero@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" @@ -16647,7 +13998,7 @@ is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: +is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== @@ -16679,18 +14030,6 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-promise@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-reference@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - is-regex@^1.1.2, is-regex@^1.1.4, is-regex@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" @@ -16833,13 +14172,6 @@ is-wsl@^2.1.1, is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -is-wsl@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" - integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== - dependencies: - is-inside-container "^1.0.0" - isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -16873,12 +14205,12 @@ isobject@^4.0.0: integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== isomorphic-dompurify@^2.21.0: - version "2.28.0" - resolved "https://registry.yarnpkg.com/isomorphic-dompurify/-/isomorphic-dompurify-2.28.0.tgz#e34367c92e31dc664a97b1389527b844bf43587e" - integrity sha512-9G5v8g4tYoix5odskjG704Khm1zNrqqqOC4YjCwEUhx0OvuaijRCprAV2GwJ9iw/01c6H1R+rs/2AXPZLlgDaQ== + version "2.30.1" + resolved "https://registry.yarnpkg.com/isomorphic-dompurify/-/isomorphic-dompurify-2.30.1.tgz#4b54854ad9d1fb8e63dd6571f8ffba2606441f46" + integrity sha512-VJFbthRrns7BE+q3qSUJ5zxGNjuq4FqiaWXKCwnMoJbumnoQJoeOeOzP/oejKLPPtENckLWoDxGQiv5OkEFC+Q== dependencies: - dompurify "^3.2.7" - jsdom "^27.0.0" + dompurify "^3.3.0" + jsdom "^27.0.1" isomorphic-unfetch@^3.1.0: version "3.1.0" @@ -16909,17 +14241,6 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" -istanbul-lib-instrument@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" - integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - istanbul-lib-report@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" @@ -17005,15 +14326,6 @@ jest-changed-files@^27.5.1: execa "^5.0.0" throat "^6.0.1" -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - jest-circus@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" @@ -17039,32 +14351,6 @@ jest-circus@^27.5.1: stack-utils "^2.0.3" throat "^6.0.1" -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - jest-cli@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" @@ -17083,23 +14369,6 @@ jest-cli@^27.5.1: prompts "^2.0.1" yargs "^16.2.0" -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - jest-config@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" @@ -17130,34 +14399,6 @@ jest-config@^27.5.1: slash "^3.0.0" strip-json-comments "^3.1.1" -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - jest-diff@30.2.0: version "30.2.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.2.0.tgz#e3ec3a6ea5c5747f605c9e874f83d756cba36825" @@ -17168,7 +14409,7 @@ jest-diff@30.2.0: chalk "^4.1.2" pretty-format "30.2.0" -"jest-diff@>=29.4.3 < 30", jest-diff@^29.4.1, jest-diff@^29.7.0: +"jest-diff@>=29.4.3 < 30", jest-diff@^29.4.1: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== @@ -17188,16 +14429,6 @@ jest-diff@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-diff@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" - integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== - dependencies: - chalk "^4.0.0" - diff-sequences "^28.1.1" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - jest-docblock@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" @@ -17205,13 +14436,6 @@ jest-docblock@^27.5.1: dependencies: detect-newline "^3.0.0" -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - jest-each@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" @@ -17223,17 +14447,6 @@ jest-each@^27.5.1: jest-util "^27.5.1" pretty-format "^27.5.1" -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - jest-environment-jsdom@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" @@ -17259,28 +14472,11 @@ jest-environment-node@^27.5.1: jest-mock "^27.5.1" jest-util "^27.5.1" -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - jest-get-type@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== -jest-get-type@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" - integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== - jest-get-type@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" @@ -17327,44 +14523,6 @@ jest-haste-map@^27.5.1: optionalDependencies: fsevents "^2.3.2" -jest-haste-map@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" - integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== - dependencies: - "@jest/types" "^28.1.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - jest-worker "^28.1.3" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - jest-jasmine2@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" @@ -17396,14 +14554,6 @@ jest-leak-detector@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - jest-matcher-utils@30.2.0: version "30.2.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz#69a0d4c271066559ec8b0d8174829adc3f23a783" @@ -17424,26 +14574,6 @@ jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-matcher-utils@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" - integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== - dependencies: - chalk "^4.0.0" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - jest-message-util@30.2.0: version "30.2.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.2.0.tgz#fc97bf90d11f118b31e6131e2b67fc4f39f92152" @@ -17474,36 +14604,6 @@ jest-message-util@^27.5.1: slash "^3.0.0" stack-utils "^2.0.3" -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - jest-mock@30.2.0: version "30.2.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.2.0.tgz#69f991614eeb4060189459d3584f710845bff45e" @@ -17521,15 +14621,6 @@ jest-mock@^27.0.6, jest-mock@^27.5.1: "@jest/types" "^27.5.1" "@types/node" "*" -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" @@ -17550,16 +14641,6 @@ jest-regex-util@^27.5.1: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== -jest-regex-util@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - jest-resolve-dependencies@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" @@ -17569,14 +14650,6 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" @@ -17593,21 +14666,6 @@ jest-resolve@^27.5.1: resolve.exports "^1.1.0" slash "^3.0.0" -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - jest-runner@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" @@ -17635,33 +14693,6 @@ jest-runner@^27.5.1: source-map-support "^0.5.6" throat "^6.0.1" -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - jest-runtime@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" @@ -17690,34 +14721,6 @@ jest-runtime@^27.5.1: slash "^3.0.0" strip-bom "^4.0.0" -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - jest-serializer@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" @@ -17762,32 +14765,6 @@ jest-snapshot@^27.5.1: pretty-format "^27.5.1" semver "^7.3.2" -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - jest-util@30.2.0: version "30.2.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.2.0.tgz#5142adbcad6f4e53c2776c067a4db3c14f913705" @@ -17824,18 +14801,6 @@ jest-util@^27.0.0, jest-util@^27.5.1: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-util@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" @@ -17860,18 +14825,6 @@ jest-validate@^27.5.1: leven "^3.1.0" pretty-format "^27.5.1" -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - jest-watcher@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" @@ -17885,20 +14838,6 @@ jest-watcher@^27.5.1: jest-util "^27.5.1" string-length "^4.0.1" -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - jest-worker@^26.5.0, jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" @@ -17917,16 +14856,7 @@ jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^29.4.3, jest-worker@^29.7.0: +jest-worker@^29.4.3: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== @@ -17945,16 +14875,6 @@ jest@^27.1.0: import-local "^3.0.2" jest-cli "^27.5.1" -jest@^29.5.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - joi@^17.11.0: version "17.13.3" resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" @@ -18029,20 +14949,20 @@ jsdom@^16.6.0: ws "^7.4.6" xml-name-validator "^3.0.0" -jsdom@^27.0.0: - version "27.0.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-27.0.0.tgz#831fb76bcfde14b0d92aec1c2bfd8ea462f17eb9" - integrity sha512-lIHeR1qlIRrIN5VMccd8tI2Sgw6ieYXSVktcSHaNe3Z5nE/tcPQYQWOq00wxMvYOsz+73eAkNenVvmPC6bba9A== +jsdom@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-27.0.1.tgz#72f3ff263ccc128da40d8526943a7df253eeea93" + integrity sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA== dependencies: - "@asamuzakjp/dom-selector" "^6.5.4" - cssstyle "^5.3.0" + "@asamuzakjp/dom-selector" "^6.7.2" + cssstyle "^5.3.1" data-urls "^6.0.0" - decimal.js "^10.5.0" + decimal.js "^10.6.0" html-encoding-sniffer "^4.0.0" http-proxy-agent "^7.0.2" https-proxy-agent "^7.0.6" is-potential-custom-element-name "^1.0.1" - parse5 "^7.3.0" + parse5 "^8.0.0" rrweb-cssom "^0.8.0" saxes "^6.0.0" symbol-tree "^3.2.4" @@ -18051,15 +14971,10 @@ jsdom@^27.0.0: webidl-conversions "^8.0.0" whatwg-encoding "^3.1.1" whatwg-mimetype "^4.0.0" - whatwg-url "^15.0.0" - ws "^8.18.2" + whatwg-url "^15.1.0" + ws "^8.18.3" xml-name-validator "^5.0.0" -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - jsesc@^3.0.2, jsesc@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" @@ -18105,7 +15020,7 @@ json-stringify-safe@^5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@2.x, json5@^2.1.0, json5@^2.1.2, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: +json5@2.x, json5@^2.1.0, json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -18122,11 +15037,6 @@ jsonc-parser@3.2.0: resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== -jsonc-parser@^3.0.0, jsonc-parser@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4" - integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== - jsonfile@^6.0.1: version "6.2.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" @@ -18492,18 +15402,6 @@ libsodium-wrappers-sumo@^0.7.11: dependencies: libsodium-sumo "^0.7.15" -libsodium-wrappers@^0.7.6: - version "0.7.15" - resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.15.tgz#53f13e483820272a3d55b23be2e34402ac988055" - integrity sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ== - dependencies: - libsodium "^0.7.15" - -libsodium@^0.7.15: - version "0.7.15" - resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.15.tgz#ac284e3dcb1c29ae9526c5581cdada6a072f6d20" - integrity sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw== - lie@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" @@ -18511,80 +15409,6 @@ lie@3.1.1: dependencies: immediate "~3.0.5" -lightningcss-android-arm64@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz#6966b7024d39c94994008b548b71ab360eb3a307" - integrity sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A== - -lightningcss-darwin-arm64@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz#a5fa946d27c029e48c7ff929e6e724a7de46eb2c" - integrity sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA== - -lightningcss-darwin-x64@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz#5ce87e9cd7c4f2dcc1b713f5e8ee185c88d9b7cd" - integrity sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ== - -lightningcss-freebsd-x64@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz#6ae1d5e773c97961df5cff57b851807ef33692a5" - integrity sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA== - -lightningcss-linux-arm-gnueabihf@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz#62c489610c0424151a6121fa99d77731536cdaeb" - integrity sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA== - -lightningcss-linux-arm64-gnu@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz#2a3661b56fe95a0cafae90be026fe0590d089298" - integrity sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A== - -lightningcss-linux-arm64-musl@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz#d7ddd6b26959245e026bc1ad9eb6aa983aa90e6b" - integrity sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA== - -lightningcss-linux-x64-gnu@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz#5a89814c8e63213a5965c3d166dff83c36152b1a" - integrity sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w== - -lightningcss-linux-x64-musl@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz#808c2e91ce0bf5d0af0e867c6152e5378c049728" - integrity sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA== - -lightningcss-win32-arm64-msvc@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz#ab4a8a8a2e6a82a4531e8bbb6bf0ff161ee6625a" - integrity sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ== - -lightningcss-win32-x64-msvc@1.30.2: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz#f01f382c8e0a27e1c018b0bee316d210eac43b6e" - integrity sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw== - -lightningcss@^1.30.1: - version "1.30.2" - resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.30.2.tgz#4ade295f25d140f487d37256f4cd40dc607696d0" - integrity sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ== - dependencies: - detect-libc "^2.0.3" - optionalDependencies: - lightningcss-android-arm64 "1.30.2" - lightningcss-darwin-arm64 "1.30.2" - lightningcss-darwin-x64 "1.30.2" - lightningcss-freebsd-x64 "1.30.2" - lightningcss-linux-arm-gnueabihf "1.30.2" - lightningcss-linux-arm64-gnu "1.30.2" - lightningcss-linux-arm64-musl "1.30.2" - lightningcss-linux-x64-gnu "1.30.2" - lightningcss-linux-x64-musl "1.30.2" - lightningcss-win32-arm64-msvc "1.30.2" - lightningcss-win32-x64-msvc "1.30.2" - lilconfig@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -18605,24 +15429,6 @@ lines-and-columns@~2.0.3: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== -lmdb@2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.8.5.tgz#ce191110c755c0951caa062722e300c703973837" - integrity sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ== - dependencies: - msgpackr "^1.9.5" - node-addon-api "^6.1.0" - node-gyp-build-optional-packages "5.1.1" - ordered-binary "^1.4.1" - weak-lru-cache "^1.2.2" - optionalDependencies: - "@lmdb/lmdb-darwin-arm64" "2.8.5" - "@lmdb/lmdb-darwin-x64" "2.8.5" - "@lmdb/lmdb-linux-arm" "2.8.5" - "@lmdb/lmdb-linux-arm64" "2.8.5" - "@lmdb/lmdb-linux-x64" "2.8.5" - "@lmdb/lmdb-win32-x64" "2.8.5" - load-json-file@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" @@ -18660,9 +15466,9 @@ loader-runner@^2.4.0: integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== loader-runner@^4.1.0, loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + version "4.3.1" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3" + integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== loader-utils@^1.2.3: version "1.4.2" @@ -18761,11 +15567,6 @@ lodash.trimstart@^4.5.1: resolved "https://registry.yarnpkg.com/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz#8ff4dec532d82486af59573c39445914e944a7f1" integrity sha512-b/+D6La8tU76L/61/aN0jULWHkT0EeJCmVstPBn/K9MtD2qBW83AsBNrr63dKuWYwVMO7ucv13QNO/Ek/2RKaQ== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -18776,7 +15577,7 @@ lodash.words@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.words/-/lodash.words-4.2.0.tgz#5ecfeaf8ecf8acaa8e0c8386295f1993c9cf4036" integrity sha512-mXxqd8Yx9BGPij3lZKFSdOsjOTbL4krbCCp9slEozaN4EMppA2dFmK/f8HeohodprY6W0vOdiQ5WFgPaTI75xQ== -lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.7.0: +lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -18794,11 +15595,6 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -long@^5.2.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" - integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== - longest-streak@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" @@ -18860,56 +15656,16 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== - dependencies: - es5-ext "~0.10.2" - lucide-react@^0.453.0: version "0.453.0" resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.453.0.tgz#d37909a45a29d89680383a202ee861224b05ba6a" integrity sha512-kL+RGZCcJi9BvJtzg2kshO192Ddy9hv3ij+cPrVPWSRzgCWCVazoQJxOjAwgK53NomL07HB7GPHW120FimjNhQ== -lunr@^2.3.9: - version "2.3.9" - resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" - integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== - lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== -magic-string@0.25.2: - version "0.25.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9" - integrity sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg== - dependencies: - sourcemap-codec "^1.4.4" - -magic-string@^0.25.3: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -magic-string@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" - integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - -magic-string@^0.30.2, magic-string@^0.30.3: - version "0.30.19" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.19.tgz#cebe9f104e565602e5d2098c5f2e79a77cc86da9" - integrity sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.5" - make-dir@4.0.0, make-dir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -18932,7 +15688,7 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -make-error@1.x, make-error@^1.1.1, make-error@^1.3.6: +make-error@1.x: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -19026,11 +15782,6 @@ markdown-escapes@^1.0.0: resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== -marked@^4.0.16, marked@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" - integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== - material-react-table@^3.0.3: version "3.2.1" resolved "https://registry.yarnpkg.com/material-react-table/-/material-react-table-3.2.1.tgz#56f595755cab3b669b399999fed9eb305fbb6dd7" @@ -19245,20 +15996,6 @@ memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.1, memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" -memoizee@^0.4.15: - version "0.4.17" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.17.tgz#942a5f8acee281fa6fb9c620bddc57e3b7382949" - integrity sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA== - dependencies: - d "^1.0.2" - es5-ext "^0.10.64" - es6-weak-map "^2.0.3" - event-emitter "^0.3.5" - is-promise "^2.2.2" - lru-queue "^0.1.0" - next-tick "^1.1.0" - timers-ext "^0.1.7" - memoizerific@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" @@ -19558,7 +16295,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: +micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -19579,7 +16316,7 @@ mime-db@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", mime-db@^1.54.0: +"mime-db@>= 1.43.0 < 2": version "1.54.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== @@ -19591,13 +16328,6 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@^2.1.31, dependencies: mime-db "1.52.0" -mime-types@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce" - integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA== - dependencies: - mime-db "^1.54.0" - mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -19608,16 +16338,6 @@ mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -19658,13 +16378,6 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@*, minimatch@^10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa" - integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw== - dependencies: - "@isaacs/brace-expansion" "^5.0.0" - minimatch@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -19672,6 +16385,13 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" +minimatch@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa" + integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw== + dependencies: + "@isaacs/brace-expansion" "^5.0.0" + minimatch@^3.0.2, 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" @@ -19679,7 +16399,7 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatc dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.0, minimatch@^5.1.6: +minimatch@^5.0.1: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -19709,12 +16429,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.0: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -19831,11 +16546,6 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@1.0.4, mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -19843,37 +16553,16 @@ mkdirp@^0.5.1, mkdirp@^0.5.3: dependencies: minimist "^1.2.6" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mobx@^6.1.7: version "6.15.0" resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.15.0.tgz#78b9b82d383724eebb4b6e50c2eb4ae2da861cb5" integrity sha512-UczzB+0nnwGotYSgllfARAqWCJ5e/skuV2K/l+Zyck/H6pJIhLXuBnz+6vn2i211o7DtbE78HQtsYEKICHGI+g== -mocha@^10.0.0: - version "10.8.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" - integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== - dependencies: - ansi-colors "^4.1.3" - browser-stdout "^1.3.1" - chokidar "^3.5.3" - debug "^4.3.5" - diff "^5.2.0" - escape-string-regexp "^4.0.0" - find-up "^5.0.0" - glob "^8.1.0" - he "^1.2.0" - js-yaml "^4.1.0" - log-symbols "^4.1.0" - minimatch "^5.1.6" - ms "^2.1.3" - serialize-javascript "^6.0.2" - strip-json-comments "^3.1.1" - supports-color "^8.1.1" - workerpool "^6.5.1" - yargs "^16.2.0" - yargs-parser "^20.2.9" - yargs-unparser "^2.0.0" - modern-ahocorasick@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/modern-ahocorasick/-/modern-ahocorasick-1.1.0.tgz#9b1fa15d4f654be20a2ad7ecc44ec9d7645bb420" @@ -19884,13 +16573,6 @@ modify-values@^1.0.1: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -moq.ts@^7.3.4: - version "7.4.1" - resolved "https://registry.yarnpkg.com/moq.ts/-/moq.ts-7.4.1.tgz#1bb7e808324dc5b0143fa8b1a94f539203d475cb" - integrity sha512-P97MjGUkkMKQrAHbNScyJvSv3S7pMxnuxd3HgaOrPuoC6okwPqru3ZX8W/mTdU7Ms74622MeeWHqoDaGyYKonw== - dependencies: - tslib "2.1.0" - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -19913,27 +16595,6 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3, ms@~2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -msgpackr-extract@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz#e9d87023de39ce714872f9e9504e3c1996d61012" - integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== - dependencies: - node-gyp-build-optional-packages "5.2.2" - optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" - -msgpackr@^1.11.2, msgpackr@^1.9.5: - version "1.11.5" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.5.tgz#edf0b9d9cb7d8ed6897dd0e42cfb865a2f4b602e" - integrity sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA== - optionalDependencies: - msgpackr-extract "^3.0.2" - multicast-dns@^7.2.5: version "7.2.5" resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" @@ -19953,11 +16614,6 @@ multimatch@5.0.0: arrify "^2.0.1" minimatch "^3.0.4" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== - mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -19968,15 +16624,6 @@ mute-stream@^1.0.0, mute-stream@~1.0.0: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - nan@^2.12.1, nan@^2.13.2: version "2.23.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.23.0.tgz#24aa4ddffcc37613a2d2935b97683c1ec96093c6" @@ -20010,9 +16657,9 @@ nanomatch@^1.2.9: to-regex "^3.0.1" napi-postinstall@^0.3.0: - version "0.3.3" - resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.3.tgz#93d045c6b576803ead126711d3093995198c6eb9" - integrity sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow== + version "0.3.4" + resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.4.tgz#7af256d6588b5f8e952b9190965d6b019653bbb9" + integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ== natural-compare-lite@^1.4.0: version "1.4.0" @@ -20044,11 +16691,6 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== -next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - next@^14.2.26: version "14.2.33" resolved "https://registry.yarnpkg.com/next/-/next-14.2.33.tgz#284bc3de43d9319b7b41d4b69ec9a0ff0905a9e3" @@ -20104,16 +16746,6 @@ node-addon-api@^3.2.1: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-addon-api@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" - integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== - -node-addon-api@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" - integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== - node-dir@^0.1.10: version "0.1.17" resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" @@ -20121,11 +16753,6 @@ node-dir@^0.1.10: dependencies: minimatch "^3.0.2" -node-domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - node-fetch-native@^1.6.4, node-fetch-native@^1.6.7: version "1.6.7" resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.7.tgz#9d09ca63066cc48423211ed4caf5d70075d76a71" @@ -20145,34 +16772,11 @@ node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@^2.7.0: dependencies: whatwg-url "^5.0.0" -node-fetch@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" - integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== - dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.4" - formdata-polyfill "^4.0.10" - node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-gyp-build-optional-packages@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" - integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== - dependencies: - detect-libc "^2.0.1" - -node-gyp-build-optional-packages@5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz#522f50c2d53134d7f3a76cd7255de4ab6c96a3a4" - integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw== - dependencies: - detect-libc "^2.0.1" - node-gyp-build@^4.3.0: version "4.8.4" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" @@ -20239,58 +16843,10 @@ node-mock-http@^1.0.2: resolved "https://registry.yarnpkg.com/node-mock-http/-/node-mock-http-1.0.3.tgz#4e55e093267a3b910cded7354389ce2d02c89e77" integrity sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog== -node-releases@^2.0.21: - version "2.0.21" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.21.tgz#f59b018bc0048044be2d4c4c04e4c8b18160894c" - integrity sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw== - -nodemon@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.0.1.tgz#affe822a2c5f21354466b2fc8ae83277d27dadc7" - integrity sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw== - dependencies: - chokidar "^3.5.2" - debug "^3.2.7" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^7.5.3" - simple-update-notifier "^2.0.0" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - -nodemon@^2.0.21: - version "2.0.22" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.22.tgz#182c45c3a78da486f673d6c1702e00728daf5258" - integrity sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ== - dependencies: - chokidar "^3.5.2" - debug "^3.2.7" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^5.7.1" - simple-update-notifier "^1.0.7" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - -nodemon@~3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.10.tgz#5015c5eb4fffcb24d98cf9454df14f4fecec9bc1" - integrity sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw== - dependencies: - chokidar "^3.5.2" - debug "^4" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^7.5.3" - simple-update-notifier "^2.0.0" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" +node-releases@^2.0.26: + version "2.0.26" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.26.tgz#fdfa272f2718a1309489d18aef4ef5ba7f5dfb52" + integrity sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA== nopt@^6.0.0: version "6.0.0" @@ -20505,11 +17061,6 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -20707,7 +17258,7 @@ on-exit-leak-free@^0.2.0: resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== -on-finished@2.4.1, on-finished@^2.4.1: +on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -20726,13 +17277,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -20740,16 +17284,6 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^10.0.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/open/-/open-10.2.0.tgz#b9d855be007620e80b6fb05fac98141fe62db73c" - integrity sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA== - dependencies: - default-browser "^5.2.1" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - wsl-utils "^0.1.0" - open@^7.0.3: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" @@ -20779,7 +17313,7 @@ openapi-typescript-helpers@^0.0.15: resolved "https://registry.yarnpkg.com/openapi-typescript-helpers/-/openapi-typescript-helpers-0.0.15.tgz#96ffa762a5e01ef66a661b163d5f1109ed1967ed" integrity sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw== -optionator@^0.9.1, optionator@^0.9.3: +optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== @@ -20806,11 +17340,6 @@ ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" -ordered-binary@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.6.0.tgz#9c490dadc0b1336ca6917d8d41dd474b8c0bff32" - integrity sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ== - os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -20821,18 +17350,6 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -ospec@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ospec/-/ospec-3.1.0.tgz#d36b8e10110f58f63a463df2390a7a73fe9579a8" - integrity sha512-+nGtjV3vlADp+UGfL51miAh/hB4awPBkQrArhcgG4trAaoA2gKt5bf9w0m9ch9zOr555cHWaCHZEDiBOkNZSxw== - dependencies: - glob "^7.1.3" - own-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" @@ -20887,7 +17404,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2, p-limit@^3.1.0: +p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -21066,27 +17583,6 @@ param-case@^3.0.3, param-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -parcel@^2.9.3: - version "2.16.0" - resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.16.0.tgz#f5c65f1d56b6d4271939caf10df29ab911d140be" - integrity sha512-4sgnoYixTR6Qq6265tjmufXQj7wxvZo4VJHrYfbnfWQWfW5CgF80IiM+dy050pYgtBAMvh+8vJDDYiSto1YPUA== - dependencies: - "@parcel/config-default" "2.16.0" - "@parcel/core" "2.16.0" - "@parcel/diagnostic" "2.16.0" - "@parcel/events" "2.16.0" - "@parcel/feature-flags" "2.16.0" - "@parcel/fs" "2.16.0" - "@parcel/logger" "2.16.0" - "@parcel/package-manager" "2.16.0" - "@parcel/reporter-cli" "2.16.0" - "@parcel/reporter-dev-server" "2.16.0" - "@parcel/reporter-tracer" "2.16.0" - "@parcel/utils" "2.16.0" - chalk "^4.1.2" - commander "^12.1.0" - get-port "^4.2.0" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -21162,11 +17658,6 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-package-name@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-package-name/-/parse-package-name-1.0.0.tgz#1a108757e4ffc6889d5e78bcc4932a97c097a5a7" - integrity sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg== - parse-path@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.1.0.tgz#41fb513cb122831807a4c7b29c8727947a09d8c6" @@ -21186,14 +17677,14 @@ parse5@6.0.1, parse5@^6.0.0, parse5@^6.0.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -parse5@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05" - integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== +parse5@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-8.0.0.tgz#aceb267f6b15f9b6e6ba9e35bfdd481fc2167b12" + integrity sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA== dependencies: entities "^6.0.0" -parseurl@^1.3.3, parseurl@~1.3.2, parseurl@~1.3.3: +parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -21337,7 +17828,7 @@ picocolors@^1.0.0, picocolors@^1.1.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -22007,7 +18498,7 @@ prettier-linter-helpers@^1.0.0: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== -prettier@^2.6.2, prettier@^2.8.7: +prettier@^2.8.7: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== @@ -22046,16 +18537,6 @@ pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== - dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -22090,11 +18571,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -22177,7 +18653,7 @@ property-information@^7.0.0: resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" integrity sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== -protobufjs@^6.11.2, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: +protobufjs@^6.11.2, protobufjs@^6.8.8: version "6.11.4" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== @@ -22226,11 +18702,6 @@ psl@^1.1.33: dependencies: punycode "^2.3.1" -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - public-encrypt@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -22278,11 +18749,6 @@ punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -pure-rand@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" - integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== - qr.js@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f" @@ -22351,11 +18817,6 @@ rainbow-sprinkles@^0.17.3: resolved "https://registry.yarnpkg.com/rainbow-sprinkles/-/rainbow-sprinkles-0.17.3.tgz#0b4a712a6b06247728e2ae6ac8d4805fdc530e3b" integrity sha512-tu00bbDozceDz/ajL8YzDn5L0mf0uVHR93v2tfGKKbemKeuPk8R4mXUokleKsA24vzrPiw26iMK53HdRy6HLag== -rambda@^7.4.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/rambda/-/rambda-7.5.0.tgz#1865044c59bc0b16f63026c6e5a97e4b1bbe98fe" - integrity sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA== - ramda@^0.26.1: version "0.26.1" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" @@ -22405,52 +18866,52 @@ raw-loader@^4.0.2: schema-utils "^3.0.0" react-aria@^3.34.3: - version "3.43.2" - resolved "https://registry.yarnpkg.com/react-aria/-/react-aria-3.43.2.tgz#cbe883341378e37cfbb34a070e032e048d3ed7e2" - integrity sha512-CfaXi3S69SeOkpp6pGc1w5FH8OvGPFphiMrO2tNSlqpYIecgk3gKoXjkqaAr6N+O1gasLMfAAF9sxtvS141qWg== + version "3.44.0" + resolved "https://registry.yarnpkg.com/react-aria/-/react-aria-3.44.0.tgz#6b694c704c0d438feb1baad23ab32cc7e8edb68f" + integrity sha512-2Pq3GQxBgM4/2BlpKYXeaZ47a3tdIcYSW/AYvKgypE3XipxOdQMDG5Sr/NBn7zuJq+thzmtfRb0lB9bTbsmaRw== dependencies: "@internationalized/string" "^3.2.7" - "@react-aria/breadcrumbs" "^3.5.28" - "@react-aria/button" "^3.14.1" - "@react-aria/calendar" "^3.9.1" - "@react-aria/checkbox" "^3.16.1" - "@react-aria/color" "^3.1.1" - "@react-aria/combobox" "^3.13.2" - "@react-aria/datepicker" "^3.15.1" - "@react-aria/dialog" "^3.5.30" - "@react-aria/disclosure" "^3.0.8" - "@react-aria/dnd" "^3.11.2" - "@react-aria/focus" "^3.21.1" - "@react-aria/gridlist" "^3.14.0" - "@react-aria/i18n" "^3.12.12" - "@react-aria/interactions" "^3.25.5" - "@react-aria/label" "^3.7.21" - "@react-aria/landmark" "^3.0.6" - "@react-aria/link" "^3.8.5" - "@react-aria/listbox" "^3.14.8" - "@react-aria/menu" "^3.19.2" - "@react-aria/meter" "^3.4.26" - "@react-aria/numberfield" "^3.12.1" - "@react-aria/overlays" "^3.29.1" - "@react-aria/progress" "^3.4.26" - "@react-aria/radio" "^3.12.1" - "@react-aria/searchfield" "^3.8.8" - "@react-aria/select" "^3.16.2" - "@react-aria/selection" "^3.25.1" - "@react-aria/separator" "^3.4.12" - "@react-aria/slider" "^3.8.1" + "@react-aria/breadcrumbs" "^3.5.29" + "@react-aria/button" "^3.14.2" + "@react-aria/calendar" "^3.9.2" + "@react-aria/checkbox" "^3.16.2" + "@react-aria/color" "^3.1.2" + "@react-aria/combobox" "^3.14.0" + "@react-aria/datepicker" "^3.15.2" + "@react-aria/dialog" "^3.5.31" + "@react-aria/disclosure" "^3.1.0" + "@react-aria/dnd" "^3.11.3" + "@react-aria/focus" "^3.21.2" + "@react-aria/gridlist" "^3.14.1" + "@react-aria/i18n" "^3.12.13" + "@react-aria/interactions" "^3.25.6" + "@react-aria/label" "^3.7.22" + "@react-aria/landmark" "^3.0.7" + "@react-aria/link" "^3.8.6" + "@react-aria/listbox" "^3.15.0" + "@react-aria/menu" "^3.19.3" + "@react-aria/meter" "^3.4.27" + "@react-aria/numberfield" "^3.12.2" + "@react-aria/overlays" "^3.30.0" + "@react-aria/progress" "^3.4.27" + "@react-aria/radio" "^3.12.2" + "@react-aria/searchfield" "^3.8.9" + "@react-aria/select" "^3.17.0" + "@react-aria/selection" "^3.26.0" + "@react-aria/separator" "^3.4.13" + "@react-aria/slider" "^3.8.2" "@react-aria/ssr" "^3.9.10" - "@react-aria/switch" "^3.7.7" - "@react-aria/table" "^3.17.7" - "@react-aria/tabs" "^3.10.7" - "@react-aria/tag" "^3.7.1" - "@react-aria/textfield" "^3.18.1" - "@react-aria/toast" "^3.0.7" - "@react-aria/tooltip" "^3.8.7" - "@react-aria/tree" "^3.1.3" - "@react-aria/utils" "^3.30.1" - "@react-aria/visually-hidden" "^3.8.27" - "@react-types/shared" "^3.32.0" + "@react-aria/switch" "^3.7.8" + "@react-aria/table" "^3.17.8" + "@react-aria/tabs" "^3.10.8" + "@react-aria/tag" "^3.7.2" + "@react-aria/textfield" "^3.18.2" + "@react-aria/toast" "^3.0.8" + "@react-aria/tooltip" "^3.8.8" + "@react-aria/tree" "^3.1.4" + "@react-aria/utils" "^3.31.0" + "@react-aria/visually-hidden" "^3.8.28" + "@react-types/shared" "^3.32.1" react-docgen-typescript@^2.1.1: version "2.4.0" @@ -22481,24 +18942,6 @@ react-dom@^18.0.0, react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.2" -react-dropzone@^10.2.1: - version "10.2.2" - resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-10.2.2.tgz#67b4db7459589a42c3b891a82eaf9ade7650b815" - integrity sha512-U5EKckXVt6IrEyhMMsgmHQiWTGLudhajPPG77KFSvgsMqNEHSyGpqWvOMc5+DhEah/vH4E1n+J5weBNLd5VtyA== - dependencies: - attr-accept "^2.0.0" - file-selector "^0.1.12" - prop-types "^15.7.2" - -react-dropzone@^14.2.3: - version "14.3.8" - resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-14.3.8.tgz#a7eab118f8a452fe3f8b162d64454e81ba830582" - integrity sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug== - dependencies: - attr-accept "^2.2.4" - file-selector "^2.1.0" - prop-types "^15.8.1" - react-element-to-jsx-string@^14.3.4: version "14.3.4" resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz#709125bc72f06800b68f9f4db485f2c7d31218a8" @@ -22516,9 +18959,9 @@ react-error-boundary@^3.1.3: "@babel/runtime" "^7.12.5" react-hook-form@^7.14.2: - version "7.63.0" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.63.0.tgz#ff601754989bdd5cfc19fcbb02a3c0d4fbb29284" - integrity sha512-ZwueDMvUeucovM2VjkCf7zIHcs1aAlDimZu2Hvel5C5907gUzMpm4xCrQXtRzCvsBqFjonB4m3x4LzCFI1ZKWA== + version "7.65.0" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.65.0.tgz#6139dac77ed1081d0178b6830dc6f5ff6ff86361" + integrity sha512-xtOzDz063WcXvGWaHgLNrNzlsdFgtUWcb32E6WFaGTd7kPZG3EeDusjdZfUsPwKCKVXy1ZlntifaHZ4l8pAsmw== react-i18next@^15.4.0: version "15.7.4" @@ -22579,24 +19022,15 @@ react-merge-refs@^1.0.0: resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06" integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ== -react-mui-dropzone@^4.0.6: - version "4.0.7" - resolved "https://registry.yarnpkg.com/react-mui-dropzone/-/react-mui-dropzone-4.0.7.tgz#85221fe36844d799d30a33466f99fe4b5ffc8274" - integrity sha512-9OPZZ9CxHq+rTZf8aKLDZPaGzWDhAUZ9+6aIUE8ub5fgcXFqXkHuI8GsUPRaIF7WXPaa79HFz00/Xd5ev8I5Kg== - dependencies: - "@babel/runtime" "^7.4.4" - clsx "^1.0.2" - react-dropzone "^10.2.1" - react-random-avatars@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/react-random-avatars/-/react-random-avatars-1.3.1.tgz#cfea11dd80262939656e4134438fa76eb2d95371" integrity sha512-HyMGoWniK2D5CRthoA1he4c6LVFIX/yBjp4qarEXN/DsgJ+1R6M5gJwYhTBoATO+3itrGCAGnKZNqimG1sDjAA== -react-refresh-typescript@^2.0.2, react-refresh-typescript@^2.0.3: - version "2.0.10" - resolved "https://registry.yarnpkg.com/react-refresh-typescript/-/react-refresh-typescript-2.0.10.tgz#8dfe40d2a51866926d97fb7150d139e70d649eb2" - integrity sha512-Cj8ZKTPEEdSoxiopFq0tB0rq/Wl90yWzAX1LEp9CGvzvauDUmC4BHIQXzcuT8/61naq/KmkR3A9VzqdZ9c6j1g== +react-refresh-typescript@^2.0.2: + version "2.0.11" + resolved "https://registry.yarnpkg.com/react-refresh-typescript/-/react-refresh-typescript-2.0.11.tgz#85496b9b9e52d26f90aa226f81cd7bb6288af6b3" + integrity sha512-u6afET6t6NDNcxD67wSVlgazX/CiRuC7qSqALZueMckjmPQnOBajmwibJr2TTU6MtttDNPjBhD8K3AB8i0opJg== react-refresh@^0.10.0: version "0.10.0" @@ -22608,11 +19042,6 @@ react-refresh@^0.11.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== -react-refresh@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.16.0.tgz#e7d45625f05c9709466d09348a25d22f79b2ad23" - integrity sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A== - react-router-dom@6: version "6.30.1" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.30.1.tgz#da2580c272ddb61325e435478566be9563a4a237" @@ -22638,36 +19067,36 @@ react-smooth@^4.0.4: react-transition-group "^4.4.5" react-stately@^3.32.2: - version "3.41.0" - resolved "https://registry.yarnpkg.com/react-stately/-/react-stately-3.41.0.tgz#e8239f520cf2cbaa037c0fd9ddf274a9a6bcb3bd" - integrity sha512-Fe8PaZPm9Ue9kDXVa8KaOz6gzbmZPuzftxeVQwKVX3u/kyFhbRkr/LeAFvgP7a+EeX+Bjmdht/9ixDsBXj4qbQ== + version "3.42.0" + resolved "https://registry.yarnpkg.com/react-stately/-/react-stately-3.42.0.tgz#f309e9cb729374cc187c688529a2aa0572ab9408" + integrity sha512-lYt2o1dd6dK8Bb4GRh08RG/2u64bSA1cqtRqtw4jEMgxC7Q17RFcIumBbChErndSdLzafEG/UBwV6shOfig6yw== dependencies: - "@react-stately/calendar" "^3.8.4" - "@react-stately/checkbox" "^3.7.1" - "@react-stately/collections" "^3.12.7" - "@react-stately/color" "^3.9.1" - "@react-stately/combobox" "^3.11.1" - "@react-stately/data" "^3.14.0" - "@react-stately/datepicker" "^3.15.1" - "@react-stately/disclosure" "^3.0.7" - "@react-stately/dnd" "^3.7.0" - "@react-stately/form" "^3.2.1" - "@react-stately/list" "^3.13.0" - "@react-stately/menu" "^3.9.7" - "@react-stately/numberfield" "^3.10.1" - "@react-stately/overlays" "^3.6.19" - "@react-stately/radio" "^3.11.1" - "@react-stately/searchfield" "^3.5.15" - "@react-stately/select" "^3.7.1" - "@react-stately/selection" "^3.20.5" - "@react-stately/slider" "^3.7.1" - "@react-stately/table" "^3.15.0" - "@react-stately/tabs" "^3.8.5" + "@react-stately/calendar" "^3.9.0" + "@react-stately/checkbox" "^3.7.2" + "@react-stately/collections" "^3.12.8" + "@react-stately/color" "^3.9.2" + "@react-stately/combobox" "^3.12.0" + "@react-stately/data" "^3.14.1" + "@react-stately/datepicker" "^3.15.2" + "@react-stately/disclosure" "^3.0.8" + "@react-stately/dnd" "^3.7.1" + "@react-stately/form" "^3.2.2" + "@react-stately/list" "^3.13.1" + "@react-stately/menu" "^3.9.8" + "@react-stately/numberfield" "^3.10.2" + "@react-stately/overlays" "^3.6.20" + "@react-stately/radio" "^3.11.2" + "@react-stately/searchfield" "^3.5.16" + "@react-stately/select" "^3.8.0" + "@react-stately/selection" "^3.20.6" + "@react-stately/slider" "^3.7.2" + "@react-stately/table" "^3.15.1" + "@react-stately/tabs" "^3.8.6" "@react-stately/toast" "^3.1.2" - "@react-stately/toggle" "^3.9.1" - "@react-stately/tooltip" "^3.5.7" - "@react-stately/tree" "^3.9.2" - "@react-types/shared" "^3.32.0" + "@react-stately/toggle" "^3.9.2" + "@react-stately/tooltip" "^3.5.8" + "@react-stately/tree" "^3.9.3" + "@react-types/shared" "^3.32.1" react-transition-group@^4.4.5: version "4.4.5" @@ -22838,15 +19267,6 @@ real-require@^0.1.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== -realistic-structured-clone@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/realistic-structured-clone/-/realistic-structured-clone-3.0.0.tgz#7b518049ce2dad41ac32b421cd297075b00e3e35" - integrity sha512-rOjh4nuWkAqf9PWu6JVpOWD4ndI+JHfgiZeMmujYcPi+fvILUu7g6l26TC1K5aBIp34nV+jE1cDO75EKOfHC5Q== - dependencies: - domexception "^1.0.1" - typeson "^6.1.0" - typeson-registry "^1.0.0-alpha.20" - recharts-scale@^0.4.4: version "0.4.5" resolved "https://registry.yarnpkg.com/recharts-scale/-/recharts-scale-0.4.5.tgz#0969271f14e732e642fcc5bd4ab270d6e87dd1d9" @@ -22868,13 +19288,6 @@ recharts@^2.1.13: tiny-invariant "^1.3.1" victory-vendor "^36.6.8" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - rechoir@^0.7.0: version "0.7.1" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" @@ -22936,11 +19349,6 @@ regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.7: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-runtime@^0.14.1: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -22961,12 +19369,7 @@ regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.3, regexp.prototype.f gopd "^1.2.0" set-function-name "^2.0.2" -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^6.2.0: +regexpu-core@^6.3.1: version "6.4.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.4.0.tgz#3580ce0c4faedef599eccb146612436b62a176e5" integrity sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA== @@ -22995,20 +19398,6 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== -reload@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/reload/-/reload-3.4.2.tgz#3bf9090ccaf017ffa4c6f1a1515670e389d5f451" - integrity sha512-Z638+jVT5ADG4BAyrF3wYXdhBRuk1YL2M/D5JbE695h8Z5BgVfwUxKxduGMPPGTg8fOYDxMVIk56YSKpP5G9kQ== - dependencies: - cli-color "~2.0.0" - commander "~14.0.0" - finalhandler "~2.1.0" - minimist "~1.2.0" - nodemon "~3.1.4" - open "^10.0.0" - serve-static "~2.2.0" - ws "~8.18.0" - remark-external-links@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" @@ -23199,17 +19588,12 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== -resolve.exports@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" - integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== - -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.10, resolve@^1.22.4, resolve@^1.3.2, resolve@^1.9.0: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.10, resolve@^1.22.4, resolve@^1.3.2, resolve@^1.9.0: + version "1.22.11" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== dependencies: - is-core-module "^2.16.0" + is-core-module "^2.16.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -23222,14 +19606,6 @@ resolve@^2.0.0-next.5: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -23263,13 +19639,6 @@ rgb-hex@^3.0.0: resolved "https://registry.yarnpkg.com/rgb-hex/-/rgb-hex-3.0.0.tgz#eab0168cc1279563b18a14605315389142e2e487" integrity sha512-8h7ZcwxCBDKvchSWbWngJuSCqJGQ6nDuLLg+QcRyQDbX9jMWt+PpPeXAhSla0GOooEomk3lCprUpGkMdsLjKyg== -rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -23277,6 +19646,13 @@ rimraf@^2.5.4, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rimraf@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" @@ -23297,70 +19673,6 @@ robust-predicates@^3.0.2: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== -rollup-plugin-base64@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-base64/-/rollup-plugin-base64-1.0.1.tgz#b3529b94d23baeb66e1e3bffd04477fa792985eb" - integrity sha512-IbdX8fjuXO/Op3hYmRPjVo0VwcSenwsQDaDTFdoe+70B5ZGoLMtr96L2yhHXCfxv7HwZVvxZqLsuWj6VwzRt3g== - dependencies: - "@rollup/pluginutils" "^3.1.0" - -rollup-plugin-dts@^5.0.0, rollup-plugin-dts@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-5.3.1.tgz#c2841269a3a5cb986b7791b0328e6a178eba108f" - integrity sha512-gusMi+Z4gY/JaEQeXnB0RUdU82h1kF0WYzCWgVmV4p3hWXqelaKuCvcJawfeg+EKn2T1Ie+YWF2OiN1/L8bTVg== - dependencies: - magic-string "^0.30.2" - optionalDependencies: - "@babel/code-frame" "^7.22.5" - -rollup-plugin-inject@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz#e4233855bfba6c0c12a312fd6649dff9a13ee9f4" - integrity sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w== - dependencies: - estree-walker "^0.6.1" - magic-string "^0.25.3" - rollup-pluginutils "^2.8.1" - -rollup-plugin-modify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-modify/-/rollup-plugin-modify-3.0.0.tgz#5326e11dfec247e8bbdd9507f3da1da1e5c7818b" - integrity sha512-p/ffs0Y2jz2dEnWjq1oVC7SY37tuS+aP7whoNaQz1EAAOPg+k3vKJo8cMMWx6xpdd0NzhX4y2YF9o/NPu5YR0Q== - dependencies: - magic-string "0.25.2" - ospec "3.1.0" - -rollup-plugin-node-polyfills@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz#53092a2744837164d5b8a28812ba5f3ff61109fd" - integrity sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA== - dependencies: - rollup-plugin-inject "^3.0.0" - -rollup-plugin-polyfill@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-polyfill/-/rollup-plugin-polyfill-4.2.0.tgz#414c7ffca0557bf29a8f4e073b8eb7f4d02dac42" - integrity sha512-6eeOyn7nr2/xUOtB+MhydvqLrNKcSybGneOuWA+t8Q4rR9NQyeapzwuu5n6nX8OFfY1WI1sHconAofaC44IpuA== - -rollup-plugin-web-worker-loader@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-web-worker-loader/-/rollup-plugin-web-worker-loader-1.7.0.tgz#4973469f5f711c4f85c012c4fecb81fecc524580" - integrity sha512-msfN4FpdoTtfSCbeTZ8yPYmfi2/66Q53gQGmvOrEz/UfqZgCkSkGjaxsZt7TQ1V0s0tLJAe6HL+EdA7IBaUF6w== - -rollup-pluginutils@^2.8.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^3.17.2, rollup@^3.2.1, rollup@^3.9.1: - version "3.29.5" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.5.tgz#8a2e477a758b520fb78daf04bca4c522c1da8a54" - integrity sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w== - optionalDependencies: - fsevents "~2.3.2" - rrweb-cssom@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz#3021d1b4352fbf3b614aaeed0bc0d5739abe0bc2" @@ -23371,12 +19683,7 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-applescript@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.1.0.tgz#2e9e54c4664ec3106c5b5630e249d3d6595c4911" - integrity sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q== - -run-async@^2.2.0, run-async@^2.3.0, run-async@^2.4.0: +run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== @@ -23395,25 +19702,6 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - integrity sha512-3xPNZGW93oCjiO7PtKxRK6iOVYBWBvtf9QHDfU23Oc+dLIQmAV//UnyXV/yihv81VS/UqoQPk4NegS8EFi55Hg== - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - integrity sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA== - -rxjs@^6.4.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - rxjs@^7.5.5: version "7.8.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" @@ -23553,7 +19841,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.2: +schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.3: version "4.3.3" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46" integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== @@ -23576,7 +19864,7 @@ selfsigned@^2.1.1: "@types/node-forge" "^1.3.0" node-forge "^1" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -23588,21 +19876,16 @@ semver@7.5.3: dependencies: lru-cache "^6.0.0" -semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1, semver@^7.7.2: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== +semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1: + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: +semver@^6.0.0, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@~7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - send@0.19.0: version "0.19.0" resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" @@ -23622,23 +19905,6 @@ send@0.19.0: range-parser "~1.2.1" statuses "2.0.1" -send@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/send/-/send-1.2.0.tgz#32a7554fb777b831dfa828370f773a3808d37212" - integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw== - dependencies: - debug "^4.3.5" - encodeurl "^2.0.0" - escape-html "^1.0.3" - etag "^1.8.1" - fresh "^2.0.0" - http-errors "^2.0.0" - mime-types "^3.0.1" - ms "^2.1.3" - on-finished "^2.4.1" - range-parser "^1.2.1" - statuses "^2.0.1" - serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -23694,16 +19960,6 @@ serve-static@1.16.2: parseurl "~1.3.3" send "0.19.0" -serve-static@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.2.0.tgz#9c02564ee259bdd2251b82d659a2e7e1938d66f9" - integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ== - dependencies: - encodeurl "^2.0.0" - escape-html "^1.0.3" - parseurl "^1.3.3" - send "^1.2.0" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -23839,34 +20095,6 @@ shell-quote@^1.6.1, shell-quote@^1.8.3: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== -shelljs@0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shiki@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.10.1.tgz#6f9a16205a823b56c072d0f1a0bcd0f2646bef14" - integrity sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng== - dependencies: - jsonc-parser "^3.0.0" - vscode-oniguruma "^1.6.1" - vscode-textmate "5.2.0" - -shiki@^0.14.1: - version "0.14.7" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.7.tgz#c3c9e1853e9737845f1d2ef81b31bcfb07056d4e" - integrity sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg== - dependencies: - ansi-sequence-parser "^1.1.0" - jsonc-parser "^3.2.0" - vscode-oniguruma "^1.7.0" - vscode-textmate "^8.0.0" - 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" @@ -23935,20 +20163,6 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -simple-update-notifier@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" - integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== - dependencies: - semver "~7.0.0" - -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== - dependencies: - semver "^7.5.3" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -23974,25 +20188,11 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -smob@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/smob/-/smob-0.0.6.tgz#09b268fea916158a2781c152044c6155adbb8aa1" - integrity sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw== - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -24084,14 +20284,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-support@^0.5.16, source-map-support@^0.5.21, source-map-support@^0.5.6, source-map-support@~0.5.12, 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" @@ -24120,11 +20312,6 @@ source-map@^0.7.3, source-map@^0.7.4: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.6.tgz#a3658ab87e5b6429c8a1f3ba0083d4c61ca3ef02" integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== -sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - 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" @@ -24288,11 +20475,6 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -statuses@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" - integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== - stop-iteration-iterator@^1.0.0, stop-iteration-iterator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" @@ -24381,14 +20563,6 @@ string-to-color@^2.2.2: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^2.0.0, string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.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" @@ -24516,27 +20690,13 @@ stringify-entities@^4.0.0: dependencies: ansi-regex "^5.0.1" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -24592,7 +20752,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +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" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -24628,11 +20788,11 @@ style-loader@^3.3.1, style-loader@^3.3.3: integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== style-to-js@^1.0.0: - version "1.1.17" - resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.17.tgz#488b1558a8c1fd05352943f088cc3ce376813d83" - integrity sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA== + version "1.1.18" + resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.18.tgz#3e6c13bd4c4db079bd2c2c94571cce5c758bc2ff" + integrity sha512-JFPn62D4kJaPTnhFUI244MThx+FEGbi+9dw1b9yBBQ+1CZpV7QAT8kUtJ7b7EUNdHajjF/0x8fT+16oLJoojLg== dependencies: - style-to-object "1.0.9" + style-to-object "1.0.11" style-to-object@0.3.0, style-to-object@^0.3.0: version "0.3.0" @@ -24641,10 +20801,10 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -style-to-object@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.9.tgz#35c65b713f4a6dba22d3d0c61435f965423653f0" - integrity sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw== +style-to-object@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.11.tgz#cf252c4051758b7acb18a5efb296f91fb79bb9c4" + integrity sha512-5A560JmXr7wDyGLK12Nq/EYS38VkGlglVzkis1JEdbGWSnbQIEhZzTJhzURXN5/8WwwFCs/f/VVcmkTppbXLow== dependencies: inline-style-parser "0.2.4" @@ -24676,12 +20836,7 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - -supports-color@^5.3.0, supports-color@^5.5.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -24695,7 +20850,7 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0, supports-color@^8.1.1: +supports-color@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -24780,27 +20935,16 @@ synchronous-promise@^2.0.15: integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== tabbable@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" - integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== - -table@^6.0.9: - version "6.9.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.9.0.tgz#50040afa6264141c7566b3b81d4d82c47a8668f5" - integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" + version "6.3.0" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.3.0.tgz#2e0e6163935387cdeacd44e9334616ca0115a8d3" + integrity sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ== tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.0.0, tapable@^2.2.0, tapable@^2.2.1, tapable@^2.2.3: +tapable@^2.0.0, tapable@^2.2.0, tapable@^2.2.1, tapable@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== @@ -24859,11 +21003,6 @@ temp-dir@1.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== -term-size@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -24922,7 +21061,7 @@ terser@^4.1.2, terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.10.0, terser@^5.15.1, terser@^5.3.4, terser@^5.31.1: +terser@^5.10.0, terser@^5.3.4, terser@^5.31.1: version "5.44.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.44.0.tgz#ebefb8e5b8579d93111bfdfc39d2cf63879f4a82" integrity sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w== @@ -24951,20 +21090,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - thread-loader@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-3.0.4.tgz#c392e4c0241fbc80430eb680e4886819b504a31b" @@ -25023,14 +21148,6 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -timers-ext@^0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.8.tgz#b4e442f10b7624a29dd2aa42c295e257150cf16c" - integrity sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww== - dependencies: - es5-ext "^0.10.64" - next-tick "^1.1.0" - tiny-invariant@^1.3.1: version "1.3.3" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" @@ -25065,24 +21182,17 @@ tinyrainbow@^1.2.0: resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5" integrity sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ== -tldts-core@^7.0.16: - version "7.0.16" - resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.0.16.tgz#f94a42b1f571ee7e4d5c58a4a3486d557b093c14" - integrity sha512-XHhPmHxphLi+LGbH0G/O7dmUH9V65OY20R7vH8gETHsp5AZCjBk9l8sqmRKLaGOxnETU7XNSDUPtewAy/K6jbA== +tldts-core@^7.0.17: + version "7.0.17" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.0.17.tgz#dadfee3750dd272ed219d7367beb7cbb2ff29eb8" + integrity sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g== tldts@^7.0.5: - version "7.0.16" - resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.0.16.tgz#8eecb4c15608a23e5b360d64d74f937fb9dbe6aa" - integrity sha512-5bdPHSwbKTeHmXrgecID4Ljff8rQjv7g8zKQPkCozRo2HWWni+p310FSn5ImI+9kWw9kK4lzOB5q/a6iv0IJsw== + version "7.0.17" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.0.17.tgz#a6cdc067b9e80ea05f3be471c0ea410688cc78b2" + integrity sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ== dependencies: - tldts-core "^7.0.16" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" + tldts-core "^7.0.17" tmp@~0.2.1: version "0.2.5" @@ -25108,11 +21218,6 @@ to-buffer@^1.2.0, to-buffer@^1.2.1, to-buffer@^1.2.2: safe-buffer "^5.2.1" typed-array-buffer "^1.0.3" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -25160,11 +21265,6 @@ toposort@^2.0.2: resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== -touch@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.1.tgz#097a23d7b161476435e5c1344a95c0f75b4a5694" - integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== - tough-cookie@^4.0.0: version "4.1.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" @@ -25260,21 +21360,6 @@ ts-jest@^27.0.5: semver "7.x" yargs-parser "20.x" -ts-jest@^29.1.0: - version "29.4.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.4.tgz#fc6fefe28652ed81b8e1381ef8391901d9f81417" - integrity sha512-ccVcRABct5ZELCT5U0+DZwkXMCcOCLi2doHRrKy1nK/s7J7bch6TzJMsrY09WxgUUIP/ITfmcDS8D2yl63rnXw== - dependencies: - bs-logger "^0.2.6" - fast-json-stable-stringify "^2.1.0" - handlebars "^4.7.8" - json5 "^2.2.3" - lodash.memoize "^4.1.2" - make-error "^1.3.6" - semver "^7.7.2" - type-fest "^4.41.0" - yargs-parser "^21.1.1" - ts-loader@^9.4.2, ts-loader@^9.4.4: version "9.5.4" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.4.tgz#44b571165c10fb5a90744aa5b7e119233c4f4585" @@ -25286,29 +21371,6 @@ ts-loader@^9.4.2, ts-loader@^9.4.4: semver "^7.3.4" source-map "^0.7.4" -ts-mocha@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-10.1.0.tgz#17a1c055f5f7733fd82447c4420740db87221bc8" - integrity sha512-T0C0Xm3/WqCuF2tpa0GNGESTBoKZaiqdUP8guNv4ZY316AFXlyidnrzQ1LUrCT0Wb1i3J0zFTgOh/55Un44WdA== - dependencies: - ts-node "7.0.1" - optionalDependencies: - tsconfig-paths "^3.5.0" - -ts-node@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" - integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== - dependencies: - arrify "^1.0.0" - buffer-from "^1.1.0" - diff "^3.1.0" - make-error "^1.1.1" - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map-support "^0.5.6" - yn "^2.0.0" - ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" @@ -25333,7 +21395,7 @@ tsconfig-paths-webpack-plugin@^4.1.0: tapable "^2.2.1" tsconfig-paths "^4.1.2" -tsconfig-paths@^3.15.0, tsconfig-paths@^3.5.0, tsconfig-paths@^3.9.0: +tsconfig-paths@^3.15.0, tsconfig-paths@^3.9.0: version "3.15.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== @@ -25352,17 +21414,12 @@ tsconfig-paths@^4.1.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.7.0, tslib@^2.8.0: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.8.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -25447,11 +21504,6 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^4.41.0: - version "4.41.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" - integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -25460,11 +21512,6 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^2.7.2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486" - integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== - typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" @@ -25522,27 +21569,6 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typedoc@^0.22.13: - version "0.22.18" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.22.18.tgz#1d000c33b66b88fd8cdfea14a26113a83b7e6591" - integrity sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA== - dependencies: - glob "^8.0.3" - lunr "^2.3.9" - marked "^4.0.16" - minimatch "^5.1.0" - shiki "^0.10.1" - -typedoc@^0.24.8: - version "0.24.8" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.24.8.tgz#cce9f47ba6a8d52389f5e583716a2b3b4335b63e" - integrity sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w== - dependencies: - lunr "^2.3.9" - marked "^4.3.0" - minimatch "^9.0.0" - shiki "^0.14.1" - typeforce@^1.11.5: version "1.18.0" resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" @@ -25553,25 +21579,11 @@ typeforce@^1.11.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== -typescript@^4.6.2, typescript@^4.8.4: +typescript@^4.6.2: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -typeson-registry@^1.0.0-alpha.20: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/typeson-registry/-/typeson-registry-1.0.0-alpha.39.tgz#9e0f5aabd5eebfcffd65a796487541196f4b1211" - integrity sha512-NeGDEquhw+yfwNhguLPcZ9Oj0fzbADiX4R0WxvoY8nGhy98IbzQy1sezjoEFWOywOboj/DWehI+/aUlRVrJnnw== - dependencies: - base64-arraybuffer-es6 "^0.7.0" - typeson "^6.0.0" - whatwg-url "^8.4.0" - -typeson@^6.0.0, typeson@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/typeson/-/typeson-6.1.0.tgz#5b2a53705a5f58ff4d6f82f965917cabd0d7448b" - integrity sha512-6FTtyGr8ldU0pfbvW/eOZrEtEkczHRUtduBnA90Jh9kMPCiFNnXIon3vF41N0S4tV1HHQt4Hk1j4srpESziCaA== - ufo@^1.5.4, ufo@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.1.tgz#ac2db1d54614d1b22c1d603e3aef44a85d8f146b" @@ -25597,20 +21609,15 @@ uncrypto@^0.1.3: resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - undici-types@~6.21.0: version "6.21.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== -undici-types@~7.13.0: - version "7.13.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.13.0.tgz#a20ba7c0a2be0c97bd55c308069d29d167466bff" - integrity sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ== +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== unfetch@^4.2.0: version "4.2.0" @@ -25741,9 +21748,9 @@ unist-util-is@^4.0.0: integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== 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" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.1.tgz#d0a3f86f2dd0db7acd7d8c2478080b5c67f9c6a9" + integrity sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g== dependencies: "@types/unist" "^3.0.0" @@ -25796,9 +21803,9 @@ unist-util-visit-parents@^3.0.0: unist-util-is "^4.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" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== + version "6.0.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz#777df7fb98652ce16b4b7cd999d0a1a40efa3a02" + integrity sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ== dependencies: "@types/unist" "^3.0.0" unist-util-is "^6.0.0" @@ -25907,10 +21914,10 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.1.3: - 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== +update-browserslist-db@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz#7802aa2ae91477f255b86e0e46dbc787a206ad4a" + integrity sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A== dependencies: escalade "^3.2.0" picocolors "^1.1.1" @@ -25982,7 +21989,7 @@ util.promisify@1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -util@^0.10.3, util@^0.10.4: +util@^0.10.4: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== @@ -26001,7 +22008,7 @@ utila@~0.4: resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== -utility-types@^3.10.0, utility-types@^3.11.0: +utility-types@^3.10.0: version "3.11.0" resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== @@ -26041,11 +22048,6 @@ v8-compile-cache@2.3.0: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -v8-compile-cache@^2.0.3: - version "2.4.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" - integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== - v8-to-istanbul@^8.1.0: version "8.1.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" @@ -26055,7 +22057,7 @@ v8-to-istanbul@^8.1.0: convert-source-map "^1.6.0" source-map "^0.7.3" -v8-to-istanbul@^9.0.0, v8-to-istanbul@^9.0.1: +v8-to-istanbul@^9.0.0: version "9.3.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== @@ -26165,21 +22167,6 @@ void-elements@3.1.0: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== -vscode-oniguruma@^1.6.1, vscode-oniguruma@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" - integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== - -vscode-textmate@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e" - integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== - -vscode-textmate@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" - integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== - w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -26201,25 +22188,13 @@ w3c-xmlserializer@^5.0.0: dependencies: xml-name-validator "^5.0.0" -walker@^1.0.7, walker@^1.0.8, walker@~1.0.5: +walker@^1.0.7, walker@~1.0.5: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" -wasm-ast-types@^0.26.4: - version "0.26.4" - resolved "https://registry.yarnpkg.com/wasm-ast-types/-/wasm-ast-types-0.26.4.tgz#cade0616c7158a0d05df8d6b8cac5cc098385fd1" - integrity sha512-bMxkQzc/+e7s5W+EBfurl/Y7KnTm0YPeg/cXjyio3PHULKWQULMREgyuJXJWaIa+8sKI1+OI61YeFSJBilm9YQ== - dependencies: - "@babel/runtime" "^7.18.9" - "@babel/types" "7.18.10" - "@jest/transform" "28.1.3" - ast-stringify "0.1.0" - case "1.6.3" - deepmerge "4.2.2" - watchpack-chokidar2@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" @@ -26260,31 +22235,16 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -weak-lru-cache@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" - integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== - web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== -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" - integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -26499,10 +22459,10 @@ webpack@4: watchpack "^1.7.4" webpack-sources "^1.4.1" -"webpack@>=4.43.0 <6.0.0", webpack@^5.75.0, webpack@^5.88.1, webpack@^5.88.2, webpack@^5.9.0: - version "5.102.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.102.0.tgz#7a2416e6da356c35f1fb35333d2f5cee0133e953" - integrity sha512-hUtqAR3ZLVEYDEABdBioQCIqSoguHbFn1K7WlPPWSuXmx0031BD73PSE35jKyftdSh4YLDoQNgK4pqBt5Q82MA== +"webpack@>=4.43.0 <6.0.0", webpack@^5.75.0, webpack@^5.88.2, webpack@^5.9.0: + version "5.102.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.102.1.tgz#1003a3024741a96ba99c37431938bf61aad3d988" + integrity sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.8" @@ -26512,7 +22472,7 @@ webpack@4: "@webassemblyjs/wasm-parser" "^1.14.1" acorn "^8.15.0" acorn-import-phases "^1.0.3" - browserslist "^4.24.5" + browserslist "^4.26.3" chrome-trace-event "^1.0.2" enhanced-resolve "^5.17.3" es-module-lexer "^1.2.1" @@ -26524,8 +22484,8 @@ webpack@4: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^4.3.2" - tapable "^2.2.3" + schema-utils "^4.3.3" + tapable "^2.3.0" terser-webpack-plugin "^5.3.11" watchpack "^2.4.4" webpack-sources "^3.3.3" @@ -26568,7 +22528,7 @@ whatwg-mimetype@^4.0.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== -whatwg-url@^15.0.0: +whatwg-url@^15.0.0, whatwg-url@^15.1.0: version "15.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-15.1.0.tgz#5c433439b9a5789eeb3806bbd0da89a8bd40b8d7" integrity sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g== @@ -26584,7 +22544,7 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: +whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== @@ -26710,14 +22670,6 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -worker-loader@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-3.0.8.tgz#5fc5cda4a3d3163d9c274a4e3a811ce8b60dbb37" - integrity sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - worker-rpc@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" @@ -26725,11 +22677,6 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" -workerpool@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" - integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== - world-countries@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/world-countries/-/world-countries-5.1.0.tgz#ea6b6156d9ef80c9ae6ff1e238d11b7ebd90351f" @@ -26803,14 +22750,6 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - write-json-file@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" @@ -26837,18 +22776,11 @@ ws@^7, ws@^7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== -ws@^8.13.0, ws@^8.14.2, ws@^8.17.1, ws@^8.18.2, ws@^8.2.3, ws@~8.18.0: +ws@^8.13.0, ws@^8.18.3, ws@^8.2.3: version "8.18.3" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== -wsl-utils@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/wsl-utils/-/wsl-utils-0.1.0.tgz#8783d4df671d4d50365be2ee4c71917a0557baab" - integrity sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw== - dependencies: - is-wsl "^3.1.0" - x-default-browser@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/x-default-browser/-/x-default-browser-0.4.0.tgz#70cf0da85da7c0ab5cb0f15a897f2322a6bdd481" @@ -26937,16 +22869,6 @@ yargs-parser@21.1.1, yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-unparser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - yargs@16.2.0, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" @@ -26960,7 +22882,7 @@ yargs@16.2.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1, yargs@^17.6.2: +yargs@^17.6.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -26973,11 +22895,6 @@ yargs@^17.3.1, yargs@^17.6.2: y18n "^5.0.5" yargs-parser "^21.1.1" -yn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" - integrity sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From 5455110810b2f8e28650fb4ed778e76780d297f7 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Mon, 10 Nov 2025 12:21:20 +0000 Subject: [PATCH 09/26] removed warning from TSSDK (#6182) * removed warning from TSSDK * tweak --- documentation/docs/pages/developers/typescript.mdx | 14 +------------- .../docs/pages/developers/typescript/FAQ.mdx | 8 -------- .../developers/typescript/bundling/bundling.mdx | 8 -------- .../developers/typescript/bundling/esbuild.mdx | 8 -------- .../developers/typescript/bundling/webpack.mdx | 8 -------- .../developers/typescript/examples/cosmos-kit.mdx | 8 -------- .../developers/typescript/examples/mix-fetch.mdx | 7 ------- .../developers/typescript/examples/mixnet.mdx | 7 ------- .../typescript/examples/nym-smart-contracts.mdx | 6 ------ .../pages/developers/typescript/installation.mdx | 8 -------- .../docs/pages/developers/typescript/overview.mdx | 9 --------- .../typescript/playground/cosmos-kit.mdx | 8 -------- .../developers/typescript/playground/mixfetch.mdx | 8 -------- .../developers/typescript/playground/mixnodes.mdx | 8 -------- .../developers/typescript/playground/traffic.mdx | 7 ------- .../developers/typescript/playground/wallet.mdx | 8 -------- .../docs/pages/developers/typescript/start.mdx | 8 -------- 17 files changed, 1 insertion(+), 137 deletions(-) diff --git a/documentation/docs/pages/developers/typescript.mdx b/documentation/docs/pages/developers/typescript.mdx index 93a95b4c6f..3cf683f0f4 100644 --- a/documentation/docs/pages/developers/typescript.mdx +++ b/documentation/docs/pages/developers/typescript.mdx @@ -1,16 +1,4 @@ # Introduction -import { Callout } from 'nextra/components'; - - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - -Welcome to the documentation for Nym's TypeScript SDK! - -This guide contains information about the various TypeScript SDK modules that facilitate interaction with different components of the Nym stack, including the Nym mixnet, the Nyx blockchain, and Coconut credentials. +This guide contains information about the various TypeScript SDK modules that facilitate interaction with different components of the Nym stack: the Nym mixnet & the Nyx blockchain. diff --git a/documentation/docs/pages/developers/typescript/FAQ.mdx b/documentation/docs/pages/developers/typescript/FAQ.mdx index f226a9466a..e27628e69d 100644 --- a/documentation/docs/pages/developers/typescript/FAQ.mdx +++ b/documentation/docs/pages/developers/typescript/FAQ.mdx @@ -1,14 +1,6 @@ # TS SDK FAQ import { Callout } from 'nextra/components' - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - ## Why and when does the mixnet client complain about insufficient topology? It will in one of the following cases: diff --git a/documentation/docs/pages/developers/typescript/bundling/bundling.mdx b/documentation/docs/pages/developers/typescript/bundling/bundling.mdx index 0bb48dc0e9..6fed215105 100644 --- a/documentation/docs/pages/developers/typescript/bundling/bundling.mdx +++ b/documentation/docs/pages/developers/typescript/bundling/bundling.mdx @@ -2,14 +2,6 @@ import { Callout } from 'nextra/components'; - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - You might need some help bundling packages from the Nym Typescript SDK into your package. Here are some things that could go wrong: diff --git a/documentation/docs/pages/developers/typescript/bundling/esbuild.mdx b/documentation/docs/pages/developers/typescript/bundling/esbuild.mdx index 9f225a512c..5ff64081cf 100644 --- a/documentation/docs/pages/developers/typescript/bundling/esbuild.mdx +++ b/documentation/docs/pages/developers/typescript/bundling/esbuild.mdx @@ -2,14 +2,6 @@ import { Callout } from 'nextra/components'; # Troubleshooting bundling with ESbuild - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - If you've been following the steps outlined in the Examples section, your development environment should be configured as follows: #### Environment Setup diff --git a/documentation/docs/pages/developers/typescript/bundling/webpack.mdx b/documentation/docs/pages/developers/typescript/bundling/webpack.mdx index 80b688d44a..1b5803f90c 100644 --- a/documentation/docs/pages/developers/typescript/bundling/webpack.mdx +++ b/documentation/docs/pages/developers/typescript/bundling/webpack.mdx @@ -3,14 +3,6 @@ import { Callout } from 'nextra/components'; # Troubleshooting bundling with Webpack - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - ## Webpack > 5 ESM For any project using Webpack, you´ll need the following rule in your `webpack.config.js` above version 5: diff --git a/documentation/docs/pages/developers/typescript/examples/cosmos-kit.mdx b/documentation/docs/pages/developers/typescript/examples/cosmos-kit.mdx index 5f220bbb0d..c33f16d971 100644 --- a/documentation/docs/pages/developers/typescript/examples/cosmos-kit.mdx +++ b/documentation/docs/pages/developers/typescript/examples/cosmos-kit.mdx @@ -2,14 +2,6 @@ import { Callout } from 'nextra/components' # Cosmos Kit - - The TypeScript SDK is currently not avaliable: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - The wonderful people of Cosmology have made some [fantastic components](https://cosmoskit.com/) that can be used with Nym. These include: diff --git a/documentation/docs/pages/developers/typescript/examples/mix-fetch.mdx b/documentation/docs/pages/developers/typescript/examples/mix-fetch.mdx index 0c49da6181..e1c4dfe56e 100644 --- a/documentation/docs/pages/developers/typescript/examples/mix-fetch.mdx +++ b/documentation/docs/pages/developers/typescript/examples/mix-fetch.mdx @@ -1,13 +1,6 @@ import { Callout } from 'nextra/components'; # `mixFetch` - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - An easy way to secure parts or all of your web app is to replace calls to [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) with `mixFetch`: diff --git a/documentation/docs/pages/developers/typescript/examples/mixnet.mdx b/documentation/docs/pages/developers/typescript/examples/mixnet.mdx index db1ec6c59a..db015511a9 100644 --- a/documentation/docs/pages/developers/typescript/examples/mixnet.mdx +++ b/documentation/docs/pages/developers/typescript/examples/mixnet.mdx @@ -1,13 +1,6 @@ import { Callout } from 'nextra/components' # Mixnet Client - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - As you know by now, in order to send or receive messages over the mixnet, you'll need to use the [`SDK Client`](https://www.npmjs.com/package/@nymproject/sdk), which will allow you to create apps that can use the Nym mixnet and Coconut credentials. This client is message based - it can only send a one-way message to another client's address. diff --git a/documentation/docs/pages/developers/typescript/examples/nym-smart-contracts.mdx b/documentation/docs/pages/developers/typescript/examples/nym-smart-contracts.mdx index 0e982dd1e9..c2f3303bf7 100644 --- a/documentation/docs/pages/developers/typescript/examples/nym-smart-contracts.mdx +++ b/documentation/docs/pages/developers/typescript/examples/nym-smart-contracts.mdx @@ -1,13 +1,7 @@ import { Callout } from 'nextra/components' # Nym Smart Contract Clients - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - As previously mentioned, to query or execute on any of the Nym contracts, you'll need to use one of the [`Contract Clients`](https://www.npmjs.com/package/@nymproject/contract-clients), which contains read-only query and signing clients for all of Nym's smart contracts. ##### Contract Clients list diff --git a/documentation/docs/pages/developers/typescript/installation.mdx b/documentation/docs/pages/developers/typescript/installation.mdx index cc8367d787..0596ef0828 100644 --- a/documentation/docs/pages/developers/typescript/installation.mdx +++ b/documentation/docs/pages/developers/typescript/installation.mdx @@ -4,14 +4,6 @@ import { Callout } from 'nextra/components' The different modules in the Typescript SDK allow developers to start building browser-based applications quickly. Simply import the SDK module of your choice – depending on the component from the Nym architecture you want to use – into your code via NPM, as you would any other TypeScript library. - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - Other than the `Contract Clients`, SDK modules come in four different flavours (ESM, CJS and full-fat for ESM and CJS). This documentation focuses on examples using the `full-fat` versions. diff --git a/documentation/docs/pages/developers/typescript/overview.mdx b/documentation/docs/pages/developers/typescript/overview.mdx index 82bf983f28..171cbc50cf 100644 --- a/documentation/docs/pages/developers/typescript/overview.mdx +++ b/documentation/docs/pages/developers/typescript/overview.mdx @@ -4,15 +4,6 @@ import { NPMLink } from '../../../components/npm'; ## SDK overview - - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - The Typescript SDK allows developers to start building browser-based Nym-based applications quickly, by simply importing the SDK modules into their code via NPM as they would any other Typescript library. Currently developers can use different packages from the Typescript SDK to run the following entirely in browser: diff --git a/documentation/docs/pages/developers/typescript/playground/cosmos-kit.mdx b/documentation/docs/pages/developers/typescript/playground/cosmos-kit.mdx index 5852480206..d6640e0344 100644 --- a/documentation/docs/pages/developers/typescript/playground/cosmos-kit.mdx +++ b/documentation/docs/pages/developers/typescript/playground/cosmos-kit.mdx @@ -6,14 +6,6 @@ import FormattedCosmoskitExampleCode from '../../../../code-examples/sdk/typescr import { Callout } from 'nextra/components' - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - Below is an example that uses [CosmosKit](https://cosmoskit.com/) to connect and sign a fake transaction with your [Keplr wallet](https://www.keplr.app/) or [Ledger hardware wallet](https://www.ledger.com/) to this page: diff --git a/documentation/docs/pages/developers/typescript/playground/mixfetch.mdx b/documentation/docs/pages/developers/typescript/playground/mixfetch.mdx index 6f3612b1c5..ff6801a49a 100644 --- a/documentation/docs/pages/developers/typescript/playground/mixfetch.mdx +++ b/documentation/docs/pages/developers/typescript/playground/mixfetch.mdx @@ -6,14 +6,6 @@ import FormattedMixFetchExampleCode from '../../../../code-examples/sdk/typescri import { Callout } from 'nextra/components' - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - diff --git a/documentation/docs/pages/developers/typescript/playground/mixnodes.mdx b/documentation/docs/pages/developers/typescript/playground/mixnodes.mdx index b5114ef3ee..66f4bc06a5 100644 --- a/documentation/docs/pages/developers/typescript/playground/mixnodes.mdx +++ b/documentation/docs/pages/developers/typescript/playground/mixnodes.mdx @@ -7,14 +7,6 @@ import { Callout } from 'nextra/components' - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - The Nym Mixnet contract keeps a directory of all mixnodes that can be used to mix traffic. Here is a live example of querying the Mixnet Contract for a paged list of mixnodes: diff --git a/documentation/docs/pages/developers/typescript/playground/traffic.mdx b/documentation/docs/pages/developers/typescript/playground/traffic.mdx index 6dcc16b335..81af690fed 100644 --- a/documentation/docs/pages/developers/typescript/playground/traffic.mdx +++ b/documentation/docs/pages/developers/typescript/playground/traffic.mdx @@ -5,13 +5,6 @@ import Box from '@mui/material/Box'; import FormattedTrafficExampleCode from '../../../../code-examples/sdk/typescript/traffic-example-code.mdx'; - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - Use this tool to experiment with the mixnet: send and receive messages! diff --git a/documentation/docs/pages/developers/typescript/playground/wallet.mdx b/documentation/docs/pages/developers/typescript/playground/wallet.mdx index 20b97911b6..183ddbfe61 100644 --- a/documentation/docs/pages/developers/typescript/playground/wallet.mdx +++ b/documentation/docs/pages/developers/typescript/playground/wallet.mdx @@ -13,14 +13,6 @@ import FormattedWalletDelegationsCode from '../../../../code-examples/sdk/typesc import { Callout } from 'nextra/components' - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - Here's a small wallet example using testnet for you to test out! diff --git a/documentation/docs/pages/developers/typescript/start.mdx b/documentation/docs/pages/developers/typescript/start.mdx index 59c636eb21..0d3c5b4c0f 100644 --- a/documentation/docs/pages/developers/typescript/start.mdx +++ b/documentation/docs/pages/developers/typescript/start.mdx @@ -3,14 +3,6 @@ import { Callout } from 'nextra/components' ## MixFetch - - The TypeScript SDK is currently not avaliable to use: a network upgrade elsewhere has caused a problem which is not currently fixed. TS SDK Clients are not able to connect to the network. - - When the issue is resolved, this will be reflected in the documentation. - - Thanks for your patience! - - Use the [`mixFetch`](https://www.npmjs.com/package/@nymproject/mix-fetch) package as a drop-in replacement for `fetch`to send HTTP requests over the Nym mixnet: ```ts From a44819b14c70e794d18e6e8af1977dd66607853a Mon Sep 17 00:00:00 2001 From: import this <97586125+serinko@users.noreply.github.com> Date: Mon, 10 Nov 2025 14:20:15 +0000 Subject: [PATCH 10/26] [DOCs/operators]: Cleanup (#6184) * cleanup * add ipr abbrs * syntax fix * syntax fix * fix link path * QUIC non-root warning * syntax fix * update stats * address comment * fix url path --- .../components/operators/snippets/node-perf-mixnet.mdx | 2 +- .../components/operators/snippets/node-perf-wg.mdx | 10 +++++----- .../snippets/quic-bridge-deployment-script-setup.mdx | 5 ++++- .../outputs/api-scraping-outputs/time-now.md | 2 +- .../docs/pages/operators/nodes/nym-node/bonding.mdx | 2 +- .../docs/pages/operators/performance-and-testing.mdx | 6 ++---- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/documentation/docs/components/operators/snippets/node-perf-mixnet.mdx b/documentation/docs/components/operators/snippets/node-perf-mixnet.mdx index bb7753ccd9..4d96b6bb49 100644 --- a/documentation/docs/components/operators/snippets/node-perf-mixnet.mdx +++ b/documentation/docs/components/operators/snippets/node-perf-mixnet.mdx @@ -50,7 +50,7 @@ First three points have binary values of either `0` or `1`, with a following log **Only if ALL conditions above are `True` the node can have any chance to be selected, as otherwise the probability will always be 0.** -Besides these values, the API also checks whether the node is bonded in Mixnet smart contract as a Nym Node or legacy node (Mixnode or Gateway). **Only nodes bonded as Nym Node in Mixnet smart contract can be selected to the Rewrded set. Thus, if you haven't migrated your node yet, please [follow these steps](/nodes/nym-node/bonding#migrate-to-nym-node-in-mixnet-smart-contract)!** +Besides these values, the API also checks whether the node is bonded in Mixnet smart contract as a Nym Node or legacy node (Mixnode or Gateway). **Only nodes bonded as Nym Node in Mixnet smart contract can be selected to the Rewrded set. Thus, if you haven't migrated your node yet, please [follow these steps](/operators/nodes/nym-node/bonding#migrate-to-nym-node-in-mixnet-smart-contract)!** #### Versions Behind Calculation diff --git a/documentation/docs/components/operators/snippets/node-perf-wg.mdx b/documentation/docs/components/operators/snippets/node-perf-wg.mdx index 986658a01e..edc6992450 100644 --- a/documentation/docs/components/operators/snippets/node-perf-wg.mdx +++ b/documentation/docs/components/operators/snippets/node-perf-wg.mdx @@ -6,7 +6,7 @@ import { ICMP } from 'components/operators/snippets/icmp.js'; ## WireGuard: Gateways Performance Calculation -> If you are looking for a page with a guide to run your own `gateway-probe` instance, go [here](/operators/nodes/performance-and-testing/gateway-probe). +> If you are looking for a page with a guide to run your own `gateway-probe` instance, go [here](/operators/performance-and-testing/gateway-probe). **Note that there is only one binary `nym-node` for [all network functionalities](/operators/nodes/nym-node/setup#functionality-mode) (defined by a positional argument `--mode`).** @@ -103,7 +103,7 @@ A node configuration break down coming alongside basic [server configuration](/o - [IPv6 configured](/operators/nodes/nym-node/configuration#quick-ipv6-check) - **Exit Gateway - Mixnet:** - Node configured (running with `--mode` argument) as `exit-gateway`, that configuration ensures that: - - IPR address present + - IPR address present - NR address present - [IPv6 configured](/operators/nodes/nym-node/configuration#quick-ipv6-check) - NymTun configured - using [NetworkTunnelManager](/operators/nodes/nym-node/configuration#routing-configuration) @@ -144,7 +144,7 @@ The following sections explain what is measured in order to collect stats to the **Tests:** -- `can_connect`: Can connect to IPR +- `can_connect`: Can connect to IPR - `can_route_ip_v4`: IPv4 routing works - `can_route_ip_external_v4`: IPv4 routing to external internet works - `can_route_ip_v6`: IPv6 routing works @@ -186,7 +186,7 @@ See [*Complete Setup Checklist*](#complete-setup-checklist) to understand the or ### Complete Setup Checklist -**If one test fails, the following points don't get checked! ** +**If one test fails, the following points don't get checked!** #### On-Chain & Configuration @@ -199,7 +199,7 @@ See [*Complete Setup Checklist*](#complete-setup-checklist) to understand the or - [ ] **Mixnet**: Port `1789` (mixnet) accessible; ports `9000` (`WS`) and `9001` (`WSS`) accessible with valid [TLS for WSS](/operators/nodes/nym-node/configuration/proxy-configuration#reverse-proxy-configuration) - [ ] [**QUIC bridge**](/operators/nodes/nym-node/configuration#quic-transport-bridge-deployment) (if used): UDP 4443 with valid addresses and SNI host - [ ] [**WireGuard**](/operators/nodes/nym-node/configuration#routing-configuration): `UDP 51822` open (public); `TCP 51830` accessible [inside WireGuard tunnel](/operators/nodes/nym-node/configuration#fixing-metadata-port-showing-not-open-in-probe-results) (`10.1.0.1:51830`); `--wireguard-enabled true` set in node config -- [ ] **Exit (IPR)**: [IPv4 and IPv6](/operators/nodes/nym-node/configuration#routing-configuration) routing to external internet configured +- [ ] **Exit (IPR)**: [IPv4 and IPv6](/operators/nodes/nym-node/configuration#routing-configuration) routing to external internet configured - [ ] **DNS**: A/AAAA records correct; IPv6 actually reachable (test, don't just add DNS) #### Performance Targets diff --git a/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx b/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx index 1037f94cea..592269d728 100644 --- a/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx +++ b/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx @@ -12,6 +12,10 @@ Operators can use [Nym Bridge Configuration Tool](https://github.com/nymtech/nym **We recommend a more convenient QUIC bridge deployment using a script [`quic_bridge_deployment.sh`](https://github.com/nymtech/nym/blob/develop/scripts/nym-node-setup/quic_bridge_deployment.sh), following the steps below.** + +This script assumes that you follow the convention of running a `nym-node` as `root`. In case you run as a [non-root user](/operators/nodes/nym-node/configuration#running-nym-node-as-a-non-root), please follow [manual QUIC bridge setup](https://github.com/nymtech/nym-bridges/blob/main/README.md) and ask for support in the [Matrix channel](https://matrix.to/#/#operators:nymtech.chat). + + ###### 1. Download [`quic_bridge_deployment.sh`](https://github.com/nymtech/nym/blob/develop/scripts/nym-node-setup/quic_bridge_deployment.sh) script - SSH to your server @@ -22,7 +26,6 @@ curl -L https://raw.githubusercontent.com/nymtech/nym/refs/heads/develop/scripts chmod +x quic_bridge_deployment.sh ``` - ###### 2. Run the script with `full_bridge_setup` command - Optional: open `tmux` in case you will need to run another commands on the VPS - Run the script with a command `full_bridge_setup` diff --git a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md index 7d0e4bcc93..3351fa154b 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md @@ -1 +1 @@ -Friday, November 7th 2025, 15:17:19 UTC +Monday, November 10th 2025, 13:30:27 UTC diff --git a/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx b/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx index 4389607735..66320bcb83 100644 --- a/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx +++ b/documentation/docs/pages/operators/nodes/nym-node/bonding.mdx @@ -79,7 +79,7 @@ If you are part of [Nym Delegation Program](https://delegations.explorenym.net) - You will be asked to run a `sign` command with your `nym-node` - copy and paste the long signature as the value of `--contract-msg` and sing it on your VPS: ```sh -./nym-node sign --contract-msg +./nym-node sign --id --contract-msg ``` - Copy the resulting signature string and paste it into the wallet nodal, press `Next` and confirm the transaction: diff --git a/documentation/docs/pages/operators/performance-and-testing.mdx b/documentation/docs/pages/operators/performance-and-testing.mdx index d00e168d24..317e4f0978 100644 --- a/documentation/docs/pages/operators/performance-and-testing.mdx +++ b/documentation/docs/pages/operators/performance-and-testing.mdx @@ -7,9 +7,7 @@ import NodePerfMixnet from 'components/operators/snippets/node-perf-mixnet.mdx'; # Performance Monitoring & Testing -Nym Mixnet has been running on mainnet for quite some time. There is still work to be done in order for the network to meet its full potential - mass adoption of privacy through distributed Mixnet. - -As Nym developers constantly improve the software, operators have as much important role, keep their nodes up to date, monitor their performance and share feedback with the rest of the community and Nym team. Therefore [monitoring](#monitoring) node performance is an essential pillar of our common work. +As Nym developers constantly improve the software, the role of Node Operators is to keep their nodes up to date, monitor their performance and share feedback with the rest of the community and Nym team. Node performance measurements and [server monitoring](#monitoring) are an essential pillar of our common work. Nym Network is routed either through the Mixnet (5-hop) or through Wireguard (2-hop). In all cases Nym node operators always employ only one binary called [`nym-node`](/operators/nodes/nym-node). Through provided arguments (or changes in the config file), `nym-node` can be utilised for different [functionalities](/operators/nodes/nym-node/setup#functionality-mode). However, once it's [registered to Nym Network](/operators/nodes/nym-node/bonding) it's by default available for Nym Mixnet not for Wireguard routing. Only nodes with Wireguard enabled, are also available for Wireguard routing. This creates a situation where every Wireguard enabled `nym-node` is required to have a solid performance score in Mixnet to begin with, but not every Mixnet routing `nym-node` must have Wireguard enabled. @@ -66,7 +64,7 @@ There are multiple ways to monitor performance of nodes and the machines on whic A list of different scripts, templates and guides for easier navigation: -* [`nym-gateway-probe`](performance-and-testing/gateway-probe.mdx) - a useful tool used under the hood of [Node status Observatory](https://harbourmaster.nymtech.net) +* [`nym-gateway-probe`](performance-and-testing/gateway-probe.mdx) - a useful tool used under the hood of [Node Status Observatory](https://harbourmaster.nymtech.net) * [Prometheus and Grafana](performance-and-testing/prometheus-grafana.mdx) self-hosted setup * [Nym-node CPU cron service](https://gist.github.com/tommyv1987/97e939a7adf491333d686a8eaa68d4bd) - an easy bash script by Nym core developer [@tommy1987](https://gist.github.com/tommyv1987), designed to monitor a CPU usage of your node, running locally * Nym's script [`prom_targets.py`](https://github.com/nymtech/nym/blob/develop/scripts/prom_targets.py) - a useful python program to request data from API and can be run on its own or plugged to more sophisticated flows From b3452ede77eb1b1c9b5ecdd1298083b682bee108 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Mon, 10 Nov 2025 20:48:02 +0000 Subject: [PATCH 11/26] add wss to prod csp (#6183) * add wss to csp --- documentation/docs/next.config.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/documentation/docs/next.config.js b/documentation/docs/next.config.js index 6d6a79257e..5f13a40c23 100644 --- a/documentation/docs/next.config.js +++ b/documentation/docs/next.config.js @@ -1108,22 +1108,22 @@ const config = { form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests; - connect-src 'self' https://github.com *.vercel.app *.nymtech.net *.nymvpn.com *.nymte.ch *.nyx.network *.nym.com https://nym.com nymvpn.com https://nymvpn.com *.nymtech.cc; + connect-src 'self' wss: https://github.com *.vercel.app *.nymtech.net *.nymvpn.com *.nymte.ch *.nyx.network *.nym.com https://nym.com nymvpn.com https://nymvpn.com *.nymtech.cc; frame-src 'self' https://vercel.live *.vercel.app *.nym.com https://nym.com; worker-src 'self' blob: https://vercel.live *.vercel.app *.nym.com https://nym.com; `; return [ { - source: '/(.*)', + source: "/(.*)", headers: [ { - key: 'Content-Security-Policy', + key: "Content-Security-Policy", value: csp.replace(/\s{2,}/g, " ").trim(), - } - ] - } - ] - } + }, + ], + }, + ]; + }, }; module.exports = config; From 4848d081d08c506f5d5e4da141ff0d2fd8474e6d Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 11 Nov 2025 10:19:55 +0000 Subject: [PATCH 12/26] Max/tweak ts sdk actions (#6185) * add taskset to wasm release build commands * bump taskset cores --- .github/workflows/ci-lint-typescript.yml | 4 ++-- wasm/client/Makefile | 8 ++++---- wasm/full-nym-wasm/Makefile | 4 ++-- wasm/mix-fetch/Makefile | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci-lint-typescript.yml b/.github/workflows/ci-lint-typescript.yml index 59a7dc2ce6..21066677ec 100644 --- a/.github/workflows/ci-lint-typescript.yml +++ b/.github/workflows/ci-lint-typescript.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 20 - + - name: Setup yarn run: npm install -g yarn @@ -54,6 +54,6 @@ jobs: - name: Lint run: yarn lint - + - name: Typecheck with tsc run: yarn tsc diff --git a/wasm/client/Makefile b/wasm/client/Makefile index a44537359a..049108e8d1 100644 --- a/wasm/client/Makefile +++ b/wasm/client/Makefile @@ -4,15 +4,15 @@ all: build build-node build: test build-wasm build-wasm: - wasm-pack build --scope nymproject --target web --out-dir ../../dist/wasm/client - wasm-opt -Oz -o ../../dist/wasm/client/nym_client_wasm_bg.wasm ../../dist/wasm/client/nym_client_wasm_bg.wasm + taskset -c 0-11 wasm-pack build --scope nymproject --target web --out-dir ../../dist/wasm/client + taskset -c 0-11 wasm-opt -Oz -o ../../dist/wasm/client/nym_client_wasm_bg.wasm ../../dist/wasm/client/nym_client_wasm_bg.wasm build-debug-dev: wasm-pack build --debug --scope nymproject --target no-modules build-rust-node: - wasm-pack build --scope nymproject --target nodejs --out-dir ../../dist/node/wasm/client - wasm-opt -Oz -o ../../dist/node/wasm/client/nym_client_wasm_bg.wasm ../../dist/node/wasm/client/nym_client_wasm_bg.wasm + taskset -c 0-11 wasm-pack build --scope nymproject --target nodejs --out-dir ../../dist/node/wasm/client + taskset -c 0-11 wasm-opt -Oz -o ../../dist/node/wasm/client/nym_client_wasm_bg.wasm ../../dist/node/wasm/client/nym_client_wasm_bg.wasm build-package-json-node: node build-node.mjs diff --git a/wasm/full-nym-wasm/Makefile b/wasm/full-nym-wasm/Makefile index 0bd65e03a9..fa2467d10c 100644 --- a/wasm/full-nym-wasm/Makefile +++ b/wasm/full-nym-wasm/Makefile @@ -1,5 +1,5 @@ all: build-full build-full: - wasm-pack build --all-features --scope nymproject --target web --out-dir ../../dist/wasm/full-nym-wasm - wasm-opt -Oz -o ../../dist/wasm/full-nym-wasm/nym_wasm_sdk_bg.wasm ../../dist/wasm/full-nym-wasm/nym_wasm_sdk_bg.wasm + taskset -c 0-11 wasm-pack build --all-features --scope nymproject --target web --out-dir ../../dist/wasm/full-nym-wasm + taskset -c 0-11 wasm-opt -Oz -o ../../dist/wasm/full-nym-wasm/nym_wasm_sdk_bg.wasm ../../dist/wasm/full-nym-wasm/nym_wasm_sdk_bg.wasm diff --git a/wasm/mix-fetch/Makefile b/wasm/mix-fetch/Makefile index 0c5e72fad5..1d6f1d01ab 100644 --- a/wasm/mix-fetch/Makefile +++ b/wasm/mix-fetch/Makefile @@ -9,8 +9,8 @@ build-go-opt: $(MAKE) -C go-mix-conn build-go-opt build-rust: - wasm-pack build --scope nymproject --target web --out-dir ../../dist/wasm/mix-fetch - wasm-opt -Oz -o ../../dist/wasm/mix-fetch/mix_fetch_wasm_bg.wasm ../../dist/wasm/mix-fetch/mix_fetch_wasm_bg.wasm + taskset -c 0-11 wasm-pack build --scope nymproject --target web --out-dir ../../dist/wasm/mix-fetch + taskset -c 0-11 wasm-opt -Oz -o ../../dist/wasm/mix-fetch/mix_fetch_wasm_bg.wasm ../../dist/wasm/mix-fetch/mix_fetch_wasm_bg.wasm build-rust-debug: wasm-pack build --debug --scope nymproject --target no-modules @@ -23,4 +23,4 @@ check-fmt-go: check-fmt-rust: cargo fmt --check - cargo clippy --target wasm32-unknown-unknown -- -Dwarnings \ No newline at end of file + cargo clippy --target wasm32-unknown-unknown -- -Dwarnings From 5acce42c642666076739cbf060245bae3e34f066 Mon Sep 17 00:00:00 2001 From: jmwample Date: Tue, 11 Nov 2025 09:14:26 -0700 Subject: [PATCH 13/26] add some staic hosts and switch server strategy --- common/http-api-client/src/dns.rs | 1 - common/http-api-client/src/dns/constants.rs | 25 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/common/http-api-client/src/dns.rs b/common/http-api-client/src/dns.rs index 216fef032b..d211c3e221 100644 --- a/common/http-api-client/src/dns.rs +++ b/common/http-api-client/src/dns.rs @@ -338,7 +338,6 @@ fn configure_and_build_resolver( TokioResolver::builder_with_config(config, TokioConnectionProvider::default()); resolver_builder.options_mut().ip_strategy = LookupIpStrategy::Ipv4AndIpv6; - resolver_builder.options_mut().server_ordering_strategy = ServerOrderingStrategy::RoundRobin; // Cache successful responses for queries received by this resolver for 30 min minimum. resolver_builder.options_mut().positive_min_ttl = Some(Duration::from_secs(1800)); diff --git a/common/http-api-client/src/dns/constants.rs b/common/http-api-client/src/dns/constants.rs index 0672188f9b..d879d653a4 100644 --- a/common/http-api-client/src/dns/constants.rs +++ b/common/http-api-client/src/dns/constants.rs @@ -31,6 +31,14 @@ pub const NYMVPN_FRONTDOOR_FASTLY_IPS: &[IpAddr] = &[ IpAddr::V4(Ipv4Addr::new(151, 101, 65, 194)), ]; +pub const YELP_FASTLY_DOMAIN: &str = "yelp.global.ssl.fastly.net"; +pub const YELP_FASTLY_IPS: &[IpAddr] = &[ + IpAddr::V4(Ipv4Addr::new(151, 101, 193, 194)), + IpAddr::V4(Ipv4Addr::new(151, 101, 129, 194)), + IpAddr::V4(Ipv4Addr::new(151, 101, 1, 194)), + IpAddr::V4(Ipv4Addr::new(151, 101, 65, 194)), +]; + pub const VERCEL_APP_DOMAIN: &str = "vercel.app"; pub const VERCEL_APP_IPS: &[IpAddr] = &[ IpAddr::V4(Ipv4Addr::new(64, 29, 17, 195)), @@ -49,6 +57,18 @@ pub const NYM_COM_IPS: &[IpAddr] = &[IpAddr::V4(Ipv4Addr::new(76, 76, 21, 22))]; pub const NYM_STATS_API_DOMAIN: &str = "nym-statistics-api.nymtech.cc"; pub const NYM_STATS_API_IPS: &[IpAddr] = &[IpAddr::V4(Ipv4Addr::new(91, 92, 153, 96))]; +pub const NYM_RPC_DOMAIN: &str = "rpc.nymtech.net"; +pub const NYM_RPC_IPS: &[IpAddr] = &[ + IpAddr::V4(Ipv4Addr::new(194, 182, 169, 49)), + IpAddr::V4(Ipv4Addr::new(91, 92, 200, 116)), + IpAddr::V4(Ipv6Addr::new( + 0x2a04, 0xc43, 0xe00, 0x6f28, 0x400, 0xd8ff, 0xfe00, 0x1483, + )), + IpAddr::V4(Ipv6Addr::new( + 0x2a04, 0xc46, 0xe00, 0x6f28, 0x4b3, 0x68ff, 0xfe00, 0x460, + )), +]; + pub fn default_static_addrs() -> HashMap> { let mut m = HashMap::new(); m.insert(NYM_API_DOMAIN.to_string(), NYM_API_IPS.to_vec()); @@ -65,9 +85,14 @@ pub fn default_static_addrs() -> HashMap> { NYMVPN_FRONTDOOR_FASTLY_DOMAIN.to_string(), NYMVPN_FRONTDOOR_FASTLY_IPS.to_vec(), ); + m.insert( + YELP_FRONTDOOR_FASTLY_DOMAIN.to_string(), + YELP_FRONTDOOR_FASTLY_IPS.to_vec(), + ); m.insert(VERCEL_APP_DOMAIN.to_string(), VERCEL_APP_IPS.to_vec()); m.insert(VERCEL_COM_DOMAIN.to_string(), VERCEL_COM_IPS.to_vec()); m.insert(NYM_COM_DOMAIN.to_string(), NYM_COM_IPS.to_vec()); m.insert(NYM_STATS_API_DOMAIN.to_string(), NYM_STATS_API_IPS.to_vec()); + m.insert(NYM_RPC_DOMAIN.to_string(), NYM_RPC_IPS.to_vec()); m } From 872c25bfcc4645a0a7234c2b095e3b5fa15b67c2 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 11 Nov 2025 16:22:41 +0000 Subject: [PATCH 14/26] Use hardcoded devrel gw for examples to get around CSP (#6187) * Use hardcoded devrel gw for examples to get around CSP * remove comment --- documentation/docs/components/mix-fetch.tsx | 5 +++-- .../components/outputs/api-scraping-outputs/time-now.md | 2 +- .../outputs/command-outputs/node-api-check-query-help.md | 2 +- documentation/docs/components/traffic.tsx | 2 ++ documentation/docs/next.config.js | 2 +- .../docs/pages/developers/typescript/examples/mix-fetch.mdx | 6 ++---- .../pages/developers/typescript/playground/mixfetch.mdx | 5 +++++ .../docs/pages/developers/typescript/playground/traffic.mdx | 4 ++++ 8 files changed, 19 insertions(+), 9 deletions(-) diff --git a/documentation/docs/components/mix-fetch.tsx b/documentation/docs/components/mix-fetch.tsx index 6726b74998..11aeaedeb3 100644 --- a/documentation/docs/components/mix-fetch.tsx +++ b/documentation/docs/components/mix-fetch.tsx @@ -9,11 +9,12 @@ import Stack from "@mui/material/Stack"; import Paper from "@mui/material/Paper"; import type { SetupMixFetchOps } from "@nymproject/mix-fetch-full-fat"; -const defaultUrl = "https://nymtech.net/.wellknown/network-requester/exit-policy.txt"; +const defaultUrl = + "https://nymtech.net/.wellknown/network-requester/exit-policy.txt"; const args = { mode: "unsafe-ignore-cors" }; const mixFetchOptions: SetupMixFetchOps = { - preferredGateway: "2xU4CBE6QiiYt6EyBXSALwxkNvM7gqJfjHXaMkjiFmYW", // with WSS + preferredGateway: "q2A2cbooyC16YJzvdYaSMH9X3cSiieZNtfBr8cE8Fi1", // with WSS // preferredNetworkRequester: // "CTDxrcXgrZHWyCWnuCgjpJPghQUcEVz1HkhUr5mGdFnT.3UAww1YWNyVNYNWFQL1LaHYouQtDiXBGK5GiDZgpXkTK@2RFtU5BwxvJJXagAWAEuaPgb5ZVPRoy2542TT93Edw6v", mixFetchOverride: { diff --git a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md index 3351fa154b..81f9be9b3c 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md @@ -1 +1 @@ -Monday, November 10th 2025, 13:30:27 UTC +Tuesday, November 11th 2025, 13:59:52 UTC diff --git a/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md b/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md index bfa068ddb0..999f3d4a6f 100644 --- a/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md +++ b/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md @@ -11,7 +11,7 @@ options: --no_routing_history Display node stats without routing history --no_verloc_metrics Display node stats without verloc metrics -m, --markdown Display results in markdown format - -o [OUTPUT], --output [OUTPUT] + -o, --output [OUTPUT] Save results to file (in current dir or supply with path without filename) ``` diff --git a/documentation/docs/components/traffic.tsx b/documentation/docs/components/traffic.tsx index 0d298ffff6..120c2ffc2f 100644 --- a/documentation/docs/components/traffic.tsx +++ b/documentation/docs/components/traffic.tsx @@ -13,6 +13,7 @@ import TextField from "@mui/material/TextField"; import Button from "@mui/material/Button"; const nymApiUrl = "https://validator.nymtech.net/api"; +const preferredGateway = "q2A2cbooyC16YJzvdYaSMH9X3cSiieZNtfBr8cE8Fi1"; export const Traffic = () => { const [nym, setNym] = useState(); @@ -31,6 +32,7 @@ export const Traffic = () => { clientId: crypto.randomUUID(), nymApiUrl, forceTls: true, // force WSS + preferredGateway, }); // check when is connected and set the self address diff --git a/documentation/docs/next.config.js b/documentation/docs/next.config.js index 5f13a40c23..59613ca1e6 100644 --- a/documentation/docs/next.config.js +++ b/documentation/docs/next.config.js @@ -1108,7 +1108,7 @@ const config = { form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests; - connect-src 'self' wss: https://github.com *.vercel.app *.nymtech.net *.nymvpn.com *.nymte.ch *.nyx.network *.nym.com https://nym.com nymvpn.com https://nymvpn.com *.nymtech.cc; + connect-src 'self' wss://nym-node-cli.devrel.nymte.ch:9001 https://github.com *.vercel.app *.nymtech.net *.nymvpn.com *.nymte.ch *.nyx.network *.nym.com https://nym.com nymvpn.com https://nymvpn.com *.nymtech.cc; frame-src 'self' https://vercel.live *.vercel.app *.nym.com https://nym.com; worker-src 'self' blob: https://vercel.live *.vercel.app *.nym.com https://nym.com; `; diff --git a/documentation/docs/pages/developers/typescript/examples/mix-fetch.mdx b/documentation/docs/pages/developers/typescript/examples/mix-fetch.mdx index e1c4dfe56e..4bc35df9a1 100644 --- a/documentation/docs/pages/developers/typescript/examples/mix-fetch.mdx +++ b/documentation/docs/pages/developers/typescript/examples/mix-fetch.mdx @@ -18,7 +18,7 @@ Sounds great, are there any catches? Well, there are a few (for now): Right now Gateways are not required to run a Secure Websocket (WSS) listener, so only a subset of nodes running in Gateway mode have configured their nodes to do so. -For the moment you have to select a Gateway that has WSS enabled and Network Requester from [Harbourmaster Gateways for mixFetch list](https://harbourmaster.nymtech.net/). +For the moment you have to select a Gateway that has WSS from [Harbourmaster Gateways for mixFetch list](https://harbourmaster.nymtech.net/). ``` curl -X 'GET' \ @@ -33,9 +33,7 @@ curl -X 'GET' \ import type { SetupMixFetchOps } from '@nymproject/mix-fetch'; const mixFetchOptions: SetupMixFetchOps = { - preferredGateway: '23A7CSaBSA2L67PWuFTPXUnYrCdyVcB7ATYsjUsfdftb', // with WSS - preferredNetworkRequester: - 'HuNL1pFprNSKW6jdqppibXP5KNKCNJxDh7ivpYcoULN9.C62NahRTUf6kqpNtDVHXoVriQr6yyaU5LtxdgpbsGrtA@23A7CSaBSA2L67PWuFTPXUnYrCdyVcB7ATYsjUsfdftb', + preferredGateway: "q2A2cbooyC16YJzvdYaSMH9X3cSiieZNtfBr8cE8Fi1", // with WSS mixFetchOverride: { requestTimeoutMs: 60_000, }, diff --git a/documentation/docs/pages/developers/typescript/playground/mixfetch.mdx b/documentation/docs/pages/developers/typescript/playground/mixfetch.mdx index ff6801a49a..307dd35bd4 100644 --- a/documentation/docs/pages/developers/typescript/playground/mixfetch.mdx +++ b/documentation/docs/pages/developers/typescript/playground/mixfetch.mdx @@ -10,4 +10,9 @@ import { Callout } from 'nextra/components' + + + Open your browser's console to see the connection and send/receive logging for this example. + + diff --git a/documentation/docs/pages/developers/typescript/playground/traffic.mdx b/documentation/docs/pages/developers/typescript/playground/traffic.mdx index 81af690fed..d3852de9e3 100644 --- a/documentation/docs/pages/developers/typescript/playground/traffic.mdx +++ b/documentation/docs/pages/developers/typescript/playground/traffic.mdx @@ -7,5 +7,9 @@ import FormattedTrafficExampleCode from '../../../../code-examples/sdk/typescrip Use this tool to experiment with the mixnet: send and receive messages! + + Open your browser's console to see the connection and send/receive logging for this example. + + From 10951d4cd33efbec98dd2e4700085f18bc73c450 Mon Sep 17 00:00:00 2001 From: jmwample Date: Tue, 11 Nov 2025 10:40:25 -0700 Subject: [PATCH 15/26] clippy, fmt, minor fix --- common/http-api-client/src/dns.rs | 2 +- common/http-api-client/src/dns/constants.rs | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/common/http-api-client/src/dns.rs b/common/http-api-client/src/dns.rs index d211c3e221..8687cf7f27 100644 --- a/common/http-api-client/src/dns.rs +++ b/common/http-api-client/src/dns.rs @@ -39,7 +39,7 @@ use std::{ use hickory_resolver::{ TokioResolver, - config::{LookupIpStrategy, NameServerConfigGroup, ResolverConfig, ServerOrderingStrategy}, + config::{LookupIpStrategy, NameServerConfigGroup, ResolverConfig}, lookup_ip::LookupIpIntoIter, name_server::TokioConnectionProvider, }; diff --git a/common/http-api-client/src/dns/constants.rs b/common/http-api-client/src/dns/constants.rs index d879d653a4..b25dc43a1c 100644 --- a/common/http-api-client/src/dns/constants.rs +++ b/common/http-api-client/src/dns/constants.rs @@ -1,7 +1,7 @@ #![allow(missing_docs)] use std::collections::HashMap; -use std::net::{IpAddr, Ipv4Addr}; +use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; pub const NYM_API_DOMAIN: &str = "validator.nymtech.net"; pub const NYM_API_IPS: &[IpAddr] = &[IpAddr::V4(Ipv4Addr::new(212, 71, 233, 232))]; @@ -61,10 +61,10 @@ pub const NYM_RPC_DOMAIN: &str = "rpc.nymtech.net"; pub const NYM_RPC_IPS: &[IpAddr] = &[ IpAddr::V4(Ipv4Addr::new(194, 182, 169, 49)), IpAddr::V4(Ipv4Addr::new(91, 92, 200, 116)), - IpAddr::V4(Ipv6Addr::new( + IpAddr::V6(Ipv6Addr::new( 0x2a04, 0xc43, 0xe00, 0x6f28, 0x400, 0xd8ff, 0xfe00, 0x1483, )), - IpAddr::V4(Ipv6Addr::new( + IpAddr::V6(Ipv6Addr::new( 0x2a04, 0xc46, 0xe00, 0x6f28, 0x4b3, 0x68ff, 0xfe00, 0x460, )), ]; @@ -85,10 +85,7 @@ pub fn default_static_addrs() -> HashMap> { NYMVPN_FRONTDOOR_FASTLY_DOMAIN.to_string(), NYMVPN_FRONTDOOR_FASTLY_IPS.to_vec(), ); - m.insert( - YELP_FRONTDOOR_FASTLY_DOMAIN.to_string(), - YELP_FRONTDOOR_FASTLY_IPS.to_vec(), - ); + m.insert(YELP_FASTLY_DOMAIN.to_string(), YELP_FASTLY_IPS.to_vec()); m.insert(VERCEL_APP_DOMAIN.to_string(), VERCEL_APP_IPS.to_vec()); m.insert(VERCEL_COM_DOMAIN.to_string(), VERCEL_COM_IPS.to_vec()); m.insert(NYM_COM_DOMAIN.to_string(), NYM_COM_IPS.to_vec()); From d07f9c8fad959fa9a7751fc174f141cada02978b Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 12 Nov 2025 11:03:28 +0000 Subject: [PATCH 16/26] Max/docs new structure (#6188) * rework of sdk docs * update integration docs + bit of overall restructure * remove debug logger from tool --- .../old-dev-docs/binaries.md.bak} | 0 .../old-dev-docs/clients.mdx.bak} | 0 .../old-dev-docs}/credentials.mdx | 0 .../old-dev-docs}/development-status.mdx | 0 .../old-dev-docs/integrations.mdx | 40 ++++++++ .../old-dev-docs}/required-architecture.md | 2 + documentation/docs/components/mix-fetch.tsx | 4 +- .../outputs/api-scraping-outputs/time-now.md | 2 +- documentation/docs/pages/_meta.json | 4 +- .../docs/pages/developers/_meta.json | 27 ++++-- .../docs/pages/developers/browsers.mdx | 40 ++++++++ .../docs/pages/developers/clients/_meta.json | 5 +- .../docs/pages/developers/concepts/_meta.json | 6 -- .../{message-queue.md => message-queue.mdx} | 6 ++ .../pages/developers/concepts/messages.mdx | 31 ------- documentation/docs/pages/developers/index.mdx | 5 - .../docs/pages/developers/integrations.mdx | 46 +++------- .../docs/pages/developers/native.mdx | 86 ++++++++++++++++++ documentation/docs/pages/developers/rust.mdx | 15 +-- .../docs/pages/developers/rust/_meta.json | 5 +- .../pages/developers/rust/client-pool.mdx | 9 -- .../docs/pages/developers/rust/ffi.mdx | 13 +-- .../docs/pages/developers/rust/importing.mdx | 8 -- .../docs/pages/developers/rust/mixnet.mdx | 8 -- .../rust/mixnet/examples/builders.mdx | 7 -- .../builders/builder-with-storage.mdx | 7 -- .../rust/mixnet/examples/builders/builder.mdx | 7 -- .../rust/mixnet/examples/custom-topology.mdx | 8 -- .../custom-topology/custom-provider.mdx | 9 +- .../manually-overwrite-topology.mdx | 7 -- .../rust/mixnet/examples/simple.mdx | 7 -- .../developers/rust/mixnet/examples/socks.mdx | 7 -- .../rust/mixnet/examples/split-send.mdx | 7 -- .../rust/mixnet/examples/storage.mdx | 7 -- .../developers/rust/mixnet/examples/surbs.mdx | 7 -- .../rust/mixnet/examples/testnet.mdx | 6 -- .../docs/pages/developers/rust/tcpproxy.mdx | 9 +- .../developers/rust/tcpproxy/architecture.mdx | 8 -- .../rust/tcpproxy/examples/multiconn.mdx | 6 -- .../rust/tcpproxy/examples/singleconn.mdx | 6 -- .../rust/tcpproxy/troubleshooting.mdx | 7 -- documentation/docs/pages/developers/tools.mdx | 4 +- .../developers/nym-arch-client-to-client.png | Bin 0 -> 80461 bytes .../images/developers/nym-arch-ip-routing.png | Bin 0 -> 119841 bytes .../images/developers/nym-browser-arch.png | Bin 0 -> 110596 bytes 45 files changed, 217 insertions(+), 271 deletions(-) rename documentation/{docs/pages/developers/binaries.md => backup-pages/old-dev-docs/binaries.md.bak} (100%) rename documentation/{docs/pages/developers/clients.mdx => backup-pages/old-dev-docs/clients.mdx.bak} (100%) rename documentation/{docs/pages/developers/concepts => backup-pages/old-dev-docs}/credentials.mdx (100%) rename documentation/{docs/pages/developers/rust => backup-pages/old-dev-docs}/development-status.mdx (100%) create mode 100644 documentation/backup-pages/old-dev-docs/integrations.mdx rename documentation/{docs/pages/developers/concepts => backup-pages/old-dev-docs}/required-architecture.md (98%) create mode 100644 documentation/docs/pages/developers/browsers.mdx delete mode 100644 documentation/docs/pages/developers/concepts/_meta.json rename documentation/docs/pages/developers/concepts/{message-queue.md => message-queue.mdx} (88%) delete mode 100644 documentation/docs/pages/developers/concepts/messages.mdx create mode 100644 documentation/docs/pages/developers/native.mdx create mode 100644 documentation/docs/public/images/developers/nym-arch-client-to-client.png create mode 100644 documentation/docs/public/images/developers/nym-arch-ip-routing.png create mode 100644 documentation/docs/public/images/developers/nym-browser-arch.png diff --git a/documentation/docs/pages/developers/binaries.md b/documentation/backup-pages/old-dev-docs/binaries.md.bak similarity index 100% rename from documentation/docs/pages/developers/binaries.md rename to documentation/backup-pages/old-dev-docs/binaries.md.bak diff --git a/documentation/docs/pages/developers/clients.mdx b/documentation/backup-pages/old-dev-docs/clients.mdx.bak similarity index 100% rename from documentation/docs/pages/developers/clients.mdx rename to documentation/backup-pages/old-dev-docs/clients.mdx.bak diff --git a/documentation/docs/pages/developers/concepts/credentials.mdx b/documentation/backup-pages/old-dev-docs/credentials.mdx similarity index 100% rename from documentation/docs/pages/developers/concepts/credentials.mdx rename to documentation/backup-pages/old-dev-docs/credentials.mdx diff --git a/documentation/docs/pages/developers/rust/development-status.mdx b/documentation/backup-pages/old-dev-docs/development-status.mdx similarity index 100% rename from documentation/docs/pages/developers/rust/development-status.mdx rename to documentation/backup-pages/old-dev-docs/development-status.mdx diff --git a/documentation/backup-pages/old-dev-docs/integrations.mdx b/documentation/backup-pages/old-dev-docs/integrations.mdx new file mode 100644 index 0000000000..6937290ae5 --- /dev/null +++ b/documentation/backup-pages/old-dev-docs/integrations.mdx @@ -0,0 +1,40 @@ +import Box from '@mui/material/Box'; +import { Steps } from 'nextra/components' +import { Tabs } from 'nextra/components' +import { GitHubRepoSearch } from '../../code-snippets/mixfetchurl'; + +# Integration Options +Developers might want to either integrate a Mixnet client or just to interact with the blockchain. See the relevant section below. + +## Integrating Mixnet Functionality +There are several options available to developers wanting to embed a Nym client in their application code. + + + + <> + + Rust developers can rely on our Rust SDK to import Nym client functionality into their code. This can either be in the form of a standard message-based client, the `socks5` client, or the `TcpProxy` modules. + + We aim to expose at least the majority of this functionality via FFI to Go and C/C++. This is detailed alongside the Rust SDK components in the [Rust SDK docs](./rust). + + + + + <> + + Typescript and Javascript developers have several options avaliable to them: + - [`mixfetch`](./typescript/examples/mix-fetch) is an almost-dropin replacement for the `fetch` library. The best way to integrate Nym's `mixFetch` into your application will be where external network calls and RPC happens, for example, something in the lines of `sendRawTransaction` if you have an ETH-compatible wallet or `JsonRpcClient` if you use CosmJS. Although you can simply search for any JS `fetch` calls in your code (using our tool below) that are easily replaceable with `mixFetch`, keep in mind that `fetch` is not the only way to make `JSONRPC` or `XHR` calls. We advise to approach the integration process in a semantic way, searching for a module that is the common denominator for external communication in the codebase. Usually these are API controllers, middlewares or repositories. + + + + - Otherwise, a well-modularized JS/TS codebase should permit the integration of one of our other SDK components, which will allow more flexibility and control (or if your codebase is not using something that can be covered by `fetch` for networking). Read more about our different SDK components in the [TS SDK overview page](./typescript/overview). + + + + If your app is not written in any of the supported languages, you might still be able to send traffic through a standalone [socks5 client](./clients/socks5) but will have to think about packaging and bundling the client binary with e.g. a `systemd` file for autostart to run the client as a daemon. If you want to discuss FFI options reach out to us via our public dev channel. + + +## Interacting with Nyx +If instead of relying on the Mixnet you wish to interact with the Nyx chain, either as a payment processor or to get on-chain events, see [interacting with the chain](./chain). + +> Note that depending on your setup, you might already be able to combine interacting with the chain with using the Mixnet: check the options above for more. diff --git a/documentation/docs/pages/developers/concepts/required-architecture.md b/documentation/backup-pages/old-dev-docs/required-architecture.md similarity index 98% rename from documentation/docs/pages/developers/concepts/required-architecture.md rename to documentation/backup-pages/old-dev-docs/required-architecture.md index b12a791a9f..5be11e9a41 100644 --- a/documentation/docs/pages/developers/concepts/required-architecture.md +++ b/documentation/backup-pages/old-dev-docs/required-architecture.md @@ -1,5 +1,7 @@ # Required Application Architecture +**TODO once you;ve reworked you can probably just remove this** + Due to the fact that there are a lot of components that make up the Nym network (the Mixnet, Blockchain, etc) there is often confusion / misunderstandings about what is required to run application traffic through the Mixnet and take advantage of its various privacy properties. ## What do I need? diff --git a/documentation/docs/components/mix-fetch.tsx b/documentation/docs/components/mix-fetch.tsx index 11aeaedeb3..a7b51c3b9d 100644 --- a/documentation/docs/components/mix-fetch.tsx +++ b/documentation/docs/components/mix-fetch.tsx @@ -14,9 +14,7 @@ const defaultUrl = const args = { mode: "unsafe-ignore-cors" }; const mixFetchOptions: SetupMixFetchOps = { - preferredGateway: "q2A2cbooyC16YJzvdYaSMH9X3cSiieZNtfBr8cE8Fi1", // with WSS - // preferredNetworkRequester: - // "CTDxrcXgrZHWyCWnuCgjpJPghQUcEVz1HkhUr5mGdFnT.3UAww1YWNyVNYNWFQL1LaHYouQtDiXBGK5GiDZgpXkTK@2RFtU5BwxvJJXagAWAEuaPgb5ZVPRoy2542TT93Edw6v", + preferredGateway: "q2A2cbooyC16YJzvdYaSMH9X3cSiieZNtfBr8cE8Fi1", mixFetchOverride: { requestTimeoutMs: 60_000, }, diff --git a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md index 81f9be9b3c..bb07d073b5 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md @@ -1 +1 @@ -Tuesday, November 11th 2025, 13:59:52 UTC +Tuesday, November 11th 2025, 16:42:11 UTC diff --git a/documentation/docs/pages/_meta.json b/documentation/docs/pages/_meta.json index 15f1b5e394..b3b6f66d1d 100644 --- a/documentation/docs/pages/_meta.json +++ b/documentation/docs/pages/_meta.json @@ -11,8 +11,8 @@ "type": "menu", "items": { "developers": { - "title": "Developer Overview", - "href": "/developers/" + "title": "Integrations", + "href": "/developers/integrations" }, "rust": { "title": "Rust SDK", diff --git a/documentation/docs/pages/developers/_meta.json b/documentation/docs/pages/developers/_meta.json index b3e5134275..d89ffe6bd5 100644 --- a/documentation/docs/pages/developers/_meta.json +++ b/documentation/docs/pages/developers/_meta.json @@ -1,18 +1,27 @@ { - "index": "Introduction", - "concepts": "Core Concepts", - "binaries": "Binaries", - "integrations": "Integration Options", - "clients": "Clients", - "tools": "Tools", - "nymvpncli": "Nym VPN CLI", - "chain": "Interacting with Nyx", "--": { - "type": "separator" + "type": "separator", + "title": "Mixnet Integrations" + }, + "integrations": "Overview - Start Here!", + "native": "Native Apps", + "browsers": "Browser Apps", + "concepts": "Nym-Specific Concepts for Integrations", + "-": { + "type": "separator", + "title": "SDKs" }, "rust": "Rust SDK", "typescript": "Typescript SDK", "---": { + "type": "separator", + "title": "Misc" + }, + "chain": "Interacting with Nyx Blockchain", + "tools": "Tools", + "nymvpncli": "Nym VPN CLI", + "clients": "Standlone Clients", + "----": { "type": "separator" }, "archive": "Archive", diff --git a/documentation/docs/pages/developers/browsers.mdx b/documentation/docs/pages/developers/browsers.mdx new file mode 100644 index 0000000000..b1b07f4edc --- /dev/null +++ b/documentation/docs/pages/developers/browsers.mdx @@ -0,0 +1,40 @@ +import { Callout } from 'nextra/components'; + +# Browser-Based Apps +Browsers are a very restricted environment to work in, with limited options for external communications (websockets, Web Transport API, WebRTC), mixed content restrictions (HTTPS-only), and no access to the file system or any syscalls. These aside, the main issue when trying to capture traffic and send it via a different transport - such as the Mixnet - is the lack of access to browser TLS negotiation from JS or the CA certificate store. + +This means that the functionality offered by our current browser-based solutions are quite restricted / specific. There are currently two options for interacting with the Mixnet from the browser: `mixFetch`, and the WASM SDK. + +![](/images/developers/nym-browser-arch.png) + +Both `mixFetch` and the WASM client are delivered to the client bundled into a web application. + +## mixFetch +Drop-in replacement for browser's `fetch` API that makes HTTP(S) requests via Exit Gateways using the SOCKS Network Requester. + +Uses an embedded CA certificate store to establish TLS session between `mixFetch` and the remote host, creating a client-host secure channel from the browser to the host over the Mixnet. + +Internally it uses the WASM client. + +- [docs](./typescript/start#mixfetch) +- [example](./typescript/playground/mixfetch) + + + + ### Current Limitations of `mixFetch` + + It cannot currently handle concurrent requests, and comes with a pre-bundled CA store. `mixFetchv2` - which will act more like a general-purpose userspace IP stack - is currently in development. + + + +## WASM Client +Makes Sphinx packets and cover traffic using WASM and sent over a Websocket to the Entry Gateway and receive responses. + +This only works in messaging mode (i.e. messages sent either as text or binary data), and currently doesn’t support making IP packets that are routed to the Internet by an Exit Gateway IPR, nor does it currently expose any stream-like API. If you want to send HTTP(S) requests, use `mixFetch`. + +Note that the limitations of CSPs and Mixed Content restrictions (i.e HTTPS only) apply to the Websocket connection as normal in browsers or embedded WebViews. + +Runs in a web worker to leave UI thread free for the user. + +- [docs](./typescript/start#mixnet-client) +- [example](./typescript/playground/traffic) diff --git a/documentation/docs/pages/developers/clients/_meta.json b/documentation/docs/pages/developers/clients/_meta.json index 4a9fdefe51..56e270ddad 100644 --- a/documentation/docs/pages/developers/clients/_meta.json +++ b/documentation/docs/pages/developers/clients/_meta.json @@ -1,5 +1,4 @@ { - "socks5": "Socks5 (standalone)", - "webassembly-client": "Webassembly Client", - "websocket": "Websocket (standalone)" + "socks5": "SOCKS Proxy", + "websocket": "Websocket" } diff --git a/documentation/docs/pages/developers/concepts/_meta.json b/documentation/docs/pages/developers/concepts/_meta.json deleted file mode 100644 index a2140d915b..0000000000 --- a/documentation/docs/pages/developers/concepts/_meta.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "required-architecture": "Required Architecture", - "messages": "Message Based Paradigm", - "message-queue": "Message Queue", - "credentials": "Credentials" -} diff --git a/documentation/docs/pages/developers/concepts/message-queue.md b/documentation/docs/pages/developers/concepts/message-queue.mdx similarity index 88% rename from documentation/docs/pages/developers/concepts/message-queue.md rename to documentation/docs/pages/developers/concepts/message-queue.mdx index 3fba96b77f..b5df5325d8 100644 --- a/documentation/docs/pages/developers/concepts/message-queue.md +++ b/documentation/docs/pages/developers/concepts/message-queue.mdx @@ -1,5 +1,11 @@ +import { Callout } from 'nextra/components' + # Message Queue + + Although good to understand how the Nym Client works under the hood, this information is only of practical use if you're using the `Mixnet` module of the RustSDK and interacting with the SDK Mixnet Client at a low level. This is all mostly abstracted away with the `MixSocket`, `MixStream`, and `IpMixStream` abstractions. + + ## Sphinx Packet Streams Clients, once connected to the Mixnet, **are always sending traffic into the Mixnet**; as well as the packets that you as a developer are sending from your application logic, they send [cover traffic](../../network/concepts/cover-traffic) at a constant rate defined by a Poisson process. This is part of the network's mitigation of timing attacks. diff --git a/documentation/docs/pages/developers/concepts/messages.mdx b/documentation/docs/pages/developers/concepts/messages.mdx deleted file mode 100644 index 5a019593c9..0000000000 --- a/documentation/docs/pages/developers/concepts/messages.mdx +++ /dev/null @@ -1,31 +0,0 @@ -# Message-based Paradigm - -## Message Format -For the moment, Mixnet clients work assuming they will be piped atomic messages looking something like this: - -``` -MixnetMessage { - Message: Message_Bytes, - To: Nym_Address, - Attached_SURBS: Number_Of_Surbs -} -``` - -That the client will then encrypt as Sphinx packets and send through the Mixnet. - -Likewise, they assume that once they have received and decrypted a Sphinx packet, they will kick back a reconstructed message to the rest of your app logic that look something like: - -``` -ReconstructedMessage { - Message: Message_Bytes, - From: SURB_Sender_Tag -} -``` - -This is obviously quite different to e.g. simply being able to read/write from a stream returned from a function call to create a TCP connection, but there are several approaches that developers can take to dealing with this right now. - -## Message Abstractions -- Rust/Go (and soon C++) developers can use the `TcpProxy` [stream abstraction](../rust/tcpproxy). -- Developers who are using Typescript/Javascript can also avoid having to deal directly with messages via using [MixFetch](../typescript/examples/mix-fetch). -- As can developers who are bundling and running the standalone [socks5 client](../clients/socks5) using some form of init script. -- There is a seperate pair of binaries which other developers can use to run as a persistent secondary proxy process built using the `TcpProxy` abstraction. These simply expose a `localhost` socket port to pipe traffic to and from in the same way as you would a TCP connection and can be found [here](https://github.com/nymtech/standalone-tcp-proxies). diff --git a/documentation/docs/pages/developers/index.mdx b/documentation/docs/pages/developers/index.mdx index 9f27706c0d..f1cdd88680 100644 --- a/documentation/docs/pages/developers/index.mdx +++ b/documentation/docs/pages/developers/index.mdx @@ -1,7 +1,2 @@ # Introduction Nym's developer documentation covering core concepts of integrating with the Mixnet, interacting with the Nyx blockchain, an overview of the avaliable tools, and our SDK docs. - -## Where to Start? -If you are completely new to Nym, it is suggested to start with the top sections covering the core concepts, integration options, and the clients and tools available to you. - -If you feel like starting with more practical examples, check out the relevent SDK docs in the sidebar to the left. diff --git a/documentation/docs/pages/developers/integrations.mdx b/documentation/docs/pages/developers/integrations.mdx index 6937290ae5..8568f7285a 100644 --- a/documentation/docs/pages/developers/integrations.mdx +++ b/documentation/docs/pages/developers/integrations.mdx @@ -1,40 +1,16 @@ -import Box from '@mui/material/Box'; -import { Steps } from 'nextra/components' -import { Tabs } from 'nextra/components' -import { GitHubRepoSearch } from '../../code-snippets/mixfetchurl'; +import { Callout } from 'nextra/components'; -# Integration Options -Developers might want to either integrate a Mixnet client or just to interact with the blockchain. See the relevant section below. +# Integrating With Nym +Any application that wants to integrate with Nym involves sending its application traffic through the Mixnet using one of the available Nym Clients. There is no single solution for this, as different environments offer different access and transport options (e.g. if operating in a web browser, you do not have access to syscalls or sockets, have to deal with content security policies, etc). -## Integrating Mixnet Functionality -There are several options available to developers wanting to embed a Nym client in their application code. +As such, we have several solutions available for developers to choose from depending on the **environment** their application is expected to run in: native apps which are running on a desktop, or webapps running in a browser. - - - <> + + The list of current options available to developers to do not cover all environments and setups - we are working on expanding this list and approaching more general solutions, but there is no one-size-fits-all approach when dealing with rerouting network traffic. + - Rust developers can rely on our Rust SDK to import Nym client functionality into their code. This can either be in the form of a standard message-based client, the `socks5` client, or the `TcpProxy` modules. +Integration options are then further subdivided by app **architecture**; whether the application interacts with remote hosts on the public internet running independently of the app (e.g. public blockchain RPC endpoints, third-party APIs) or whether app developers have some control over the versions of the software being run on both sides of an interaction (e.g. peer to peer apps running the same software version, or client-server architectures which are running software written by the same team). - We aim to expose at least the majority of this functionality via FFI to Go and C/C++. This is detailed alongside the Rust SDK components in the [Rust SDK docs](./rust). - - - - - <> - - Typescript and Javascript developers have several options avaliable to them: - - [`mixfetch`](./typescript/examples/mix-fetch) is an almost-dropin replacement for the `fetch` library. The best way to integrate Nym's `mixFetch` into your application will be where external network calls and RPC happens, for example, something in the lines of `sendRawTransaction` if you have an ETH-compatible wallet or `JsonRpcClient` if you use CosmJS. Although you can simply search for any JS `fetch` calls in your code (using our tool below) that are easily replaceable with `mixFetch`, keep in mind that `fetch` is not the only way to make `JSONRPC` or `XHR` calls. We advise to approach the integration process in a semantic way, searching for a module that is the common denominator for external communication in the codebase. Usually these are API controllers, middlewares or repositories. - - - - - Otherwise, a well-modularized JS/TS codebase should permit the integration of one of our other SDK components, which will allow more flexibility and control (or if your codebase is not using something that can be covered by `fetch` for networking). Read more about our different SDK components in the [TS SDK overview page](./typescript/overview). - - - - If your app is not written in any of the supported languages, you might still be able to send traffic through a standalone [socks5 client](./clients/socks5) but will have to think about packaging and bundling the client binary with e.g. a `systemd` file for autostart to run the client as a daemon. If you want to discuss FFI options reach out to us via our public dev channel. - - -## Interacting with Nyx -If instead of relying on the Mixnet you wish to interact with the Nyx chain, either as a payment processor or to get on-chain events, see [interacting with the chain](./chain). - -> Note that depending on your setup, you might already be able to combine interacting with the chain with using the Mixnet: check the options above for more. + + This is because of the different security considerations each option offers. These are detailed in the following pages. + diff --git a/documentation/docs/pages/developers/native.mdx b/documentation/docs/pages/developers/native.mdx new file mode 100644 index 0000000000..8fee54371f --- /dev/null +++ b/documentation/docs/pages/developers/native.mdx @@ -0,0 +1,86 @@ +import { Callout } from 'nextra/components'; + +# Native / Desktop Apps + +Developers wanting to integrate into desktop apps & CLIs can use our Rust SDK. There are two broad approaches to using the Mixnet (E2E or as a proxy), with different modules suited for each, each with their own specific usecase and limitations. + +## Option 1: Mixnet End-To-End +You might want to embed Nym Clients in both sides of your app, and have them send all of your app network traffic through the Mixnet: maybe two clients in a peer to peer setup, or a client and a server where it is possible for you as a developer to release both the client and server side code, and have some ability to make sure that it is being run. + +![](/images/developers/nym-arch-client-to-client.png) + +There are several options available: + +{ /* ### Stream Wrapper Module +Exposes `MixSocket`/`MixStream` abstractions that can be split a reader/writer halves that consumes bytes, with an interface inspired by `std::net::TcpStream`. For developers who just want to read/write bytes to/from the Mixnet working with something socket-like. + +- docs TODO LINK +- example TODO LINK */ } + +### Mixnet & Client Pool Modules +The Mixnet module of the SDK exposes low level connection functionality and the Mixnet Client. The Client Pool is one answer to concurrency, and allows developers to run several Nym Clients at once which can be quickly used. + +{ /* This approach might be useful if you want to build custom connection logic, but **`MixSocket`/`MixStream` will probably be sufficient for the majority of usecases** where developers just want to send and receive traffic as streams. */ } + +This approach might be useful if you want to build custom connection logic, but the TcpProxy Module will probably be sufficient for the majority of usecases where developers just want to send and receive traffic as streams. + +- [docs](./rust/mixnet) +- [examples](./rust/mixnet/examples) + +### TcpProxy Module +{ /* + This module has been superseded by the Stream Wrapper module, and will soon be deprecated. **New features will not be added to it.** The main drawback of this (which is fixed with `MixSocket`/`MixStream`) is that TLS is impossible, as it exposes a localhost port for the consuming process to communicate with. + */ } +A pair of abstractions built for use in a client-server setup, which both expose a `localhost` TCP Socket which apps can read/write bytes to/from. + +- [docs](./rust/tcpproxy) +- [examples](./rust/tcpproxy/examples/singleconn) + + + There is a new abstraction coming soon mirroring the interface and use of a TCP Socket, making it easier for developers to use the Mixnet, and also perform TLS through a Mixnet connection. Stay tuned. + + +## Option 2: Mixnet-As-Proxy +For developers who are only able to control the client-side code, and/or need to communicate with a 3rd party service, such as a public blockchain RPC or a remote host they do not control. + +![](/images/developers/nym-arch-ip-routing.png) + + + + ### Security Considerations + + Since traffic is only packaged as Sphinx until it gets to the Exit Gateway, where it is unwrapped into either HTTPS packets (by a Network Requester) or IP packets (by an IP Packet Router), the last hop between the Gateway and the remote host **travels as normal internet traffic**. + + As such, this option has fewer protections than the E2E option against a global passive adversary, but still grants you timing obfuscation and sender-receiver unlinkability between your client software and whatever service it is interacting with. + + +### SOCKS Client +Developers with apps that support SOCKS4,4a, or 5 can use the Socks Client exposed by the Mixnet module. This uses the Network Requester service of the chosen Exit Gateway to interact with the remote host via the chosen SOCKS proxy protocol. The Network Requester uses SURBs to anonymously reply to the original sender with whatever response it gets from the remote host. + +- [docs](./rust/mixnet/examples/socks) +- [example](./rust/mixnet/examples/socks) + + + There is a new abstraction coming soon that will allow the SDK to send IP packets, the beginning of a longer project to make a native Rust version of [`mixFetch`](./typescript/start#mixfetch). Stay tuned. + + + +{ /* ### `IPMixStream` +This is a version of the `MixSocket` that consumes IP packets before wrapping them in Sphinx and forwarding through the Mixnet to the IP Packet Router of the chosen Exit Gateway, where they are unwrapped and treated as normal IP packets. The IPR uses SURBs to anonymously reply to the original sender with whatever response it gets from the remote host. + + + Currently only consumes IP packets - those who do not want to work with IP packets directly should check `mixtcp` below for doing something with HTTP(S). + + +- docs TODO LINK +- examples TODO LINK + +### `MixTCP` +A proof of concept TCP/IP crate containing a [`smoltcp`](https://docs.rs/smoltcp/latest/smoltcp/index.html) `device` that uses the Mixnet for transport. Examples of using this to make a TLS handshake and perform an HTTPS request can be found linked below. + + + This crate is currently a proof of concept which is in active development. This crate will become the basis of a general-purpose HTTP-through-Mixnet crate in the near future. + + +- docs TODO LINK +- example TODO LINK */ } diff --git a/documentation/docs/pages/developers/rust.mdx b/documentation/docs/pages/developers/rust.mdx index db5aa11b61..d39707bb44 100644 --- a/documentation/docs/pages/developers/rust.mdx +++ b/documentation/docs/pages/developers/rust.mdx @@ -1,16 +1,3 @@ # Introduction - -import { Callout } from 'nextra/components'; - - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - - -The Rust SDK allows developers building applications in Rust to import and interact with Nym clients as they would any other dependency, instead of running the client as a separate process on their machine. - -Check the [development status](./rust/development-status) page to see the various modules that make up the SDK, and the [FFI](./rust/ffi) page for Go/C++ developers. +The Rust SDK allows exposes a few different modules, some more plug and play than others. Each of which handles exposes a Nym Client, which handles finding and using a route for packets through the Mixnet, encryption, and cover traffic, all under the hood. diff --git a/documentation/docs/pages/developers/rust/_meta.json b/documentation/docs/pages/developers/rust/_meta.json index dda7e68e20..5ce667aa28 100644 --- a/documentation/docs/pages/developers/rust/_meta.json +++ b/documentation/docs/pages/developers/rust/_meta.json @@ -1,8 +1,7 @@ { "importing": "Importing", - "development-status": "Development Status", - "mixnet": "Mixnet Module", "tcpproxy": "TcpProxy Module", - "client-pool": "Client Pool", + "mixnet": "Mixnet Module", + "client-pool": "Client Pool Module", "ffi": "FFI" } diff --git a/documentation/docs/pages/developers/rust/client-pool.mdx b/documentation/docs/pages/developers/rust/client-pool.mdx index 6c444ad9e8..70c3f54ca1 100644 --- a/documentation/docs/pages/developers/rust/client-pool.mdx +++ b/documentation/docs/pages/developers/rust/client-pool.mdx @@ -2,15 +2,6 @@ import { Callout } from 'nextra/components'; - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - - We have a configurable-size Client Pool for processes that require multiple clients in quick succession (this is used by default by the [`TcpProxyClient`](./tcpproxy) for instance) This will be useful for developers looking to build connection logic, or just are using raw SDK clients in a sitatuation where there are multiple connections with a lot of churn. diff --git a/documentation/docs/pages/developers/rust/ffi.mdx b/documentation/docs/pages/developers/rust/ffi.mdx index 69ccfe3b75..349b298bc8 100644 --- a/documentation/docs/pages/developers/rust/ffi.mdx +++ b/documentation/docs/pages/developers/rust/ffi.mdx @@ -2,17 +2,6 @@ # FFI Bindings import { Callout } from 'nextra/components'; - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - - - We are working on the intitial versions of the FFI code to allow developers to experiment and get feedback. Please get in touch if you think the FFI bindings are lacking certain functionality. - - We currently have FFI bindings for Go and C/C++. See the table below to check the coverage of functionality we expect devs would like to see. The [`nym/sdk/ffi`](https://github.com/nymtech/nym/tree/master/sdk/ffi) directory has the following structure: @@ -50,7 +39,7 @@ At the time of writing the following functionality is not exposed to the shared - `Socks5::new()`: creation and use of the [socks5/4a/4 proxy client](./mixnet/examples/socks). ## TcpProxy Module -A connection abstraction which exposes a local TCP socket which developers are able to interact with basically as expected, being able to read/write to/from a bytestream, without really having to take into account the workings of the Mixnet/Sphinx/the [message-based](../concepts/messages) format of the underlying client. +A connection abstraction which exposes a local TCP socket which developers are able to interact with basically as expected, being able to read/write to/from a bytestream, without really having to take into account the workings of the Mixnet/Sphinx/the message-based format of the underlying client. At the time of writing this functionality is **only** exposed to Go. C/C++ bindings will follow in the future in a larger update to the C FFI. diff --git a/documentation/docs/pages/developers/rust/importing.mdx b/documentation/docs/pages/developers/rust/importing.mdx index fb487d9048..255b45f466 100644 --- a/documentation/docs/pages/developers/rust/importing.mdx +++ b/documentation/docs/pages/developers/rust/importing.mdx @@ -1,14 +1,6 @@ # Installation import { Callout } from 'nextra/components'; - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - - The `nym-sdk` crate is **not yet available via [crates.io](https://crates.io)**. As such, in order to import the crate you must specify the Nym monorepo in your `Cargo.toml` file. Since the `HEAD` of `master` is always the most recent release, we recommend developers use that for their imports, unless they have a reason to pull in a specific historic version of the code. ```toml diff --git a/documentation/docs/pages/developers/rust/mixnet.mdx b/documentation/docs/pages/developers/rust/mixnet.mdx index c6173329f1..0524619874 100644 --- a/documentation/docs/pages/developers/rust/mixnet.mdx +++ b/documentation/docs/pages/developers/rust/mixnet.mdx @@ -1,14 +1,6 @@ # Mixnet Module import { Callout } from 'nextra/components'; - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - - This module exposes the logic of creating and interacting with clients and Mixnet messages. This is recommended for those wanting to either start playing around with the Mixnet and how it works, or build connection logic. > For developers wanting something more 'plug and play' we recommend the [`TcpProxy` module](./tcpproxy). diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/builders.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/builders.mdx index fed758990b..3975a5aaac 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/builders.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/builders.mdx @@ -1,11 +1,4 @@ # Builder Patterns import { Callout } from 'nextra/components'; - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - Since there are two ways of creating an SDK client - ephemeral and with-storage - then there are two ways of applying the Builder Pattern to client creation. diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/builders/builder-with-storage.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/builders/builder-with-storage.mdx index 0d86bea5dc..07966916bf 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/builders/builder-with-storage.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/builders/builder-with-storage.mdx @@ -1,13 +1,6 @@ # Mixnet Client Builder with Storage import { Callout } from 'nextra/components'; - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - The previous example involves ephemeral keys - if we want to create and then maintain a client identity over time, our code becomes a little more complex as we need to create, store, and conditionally load these keys. > You can find this code [here](https://github.com/nymtech/nym/blob/master/sdk/rust/nym-sdk/examples/builder_with_storage.rs). diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/builders/builder.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/builders/builder.mdx index d94dfae86a..1b9f63517c 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/builders/builder.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/builders/builder.mdx @@ -1,13 +1,6 @@ # Mixnet Client Builder import { Callout } from 'nextra/components'; - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - You can spin up an ephemeral client like so. This client will not have a persistent identity and its keys will be dropped on restart. Since there is currently no way of reconnecting a client that has been disconnected after use, then treat disconnecting a client the same as dropping its keys entirely. > You can find this code [here](https://github.com/nymtech/nym/blob/master/sdk/rust/nym-sdk/examples/builder.rs). diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology.mdx index e26b346976..1985900b06 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology.mdx @@ -2,14 +2,6 @@ import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - - These examples are **not** the same as using a configurable network: these functions define a subset of nodes to use on a given network, whereas the [testnet](./testnet) example is an example of switching to use a different network entirely. The two can be combined, but if you are looking for how to connect your client to a testnet, see the `testnet` file. diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology/custom-provider.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology/custom-provider.mdx index be32aecb2d..32218f1c91 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology/custom-provider.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology/custom-provider.mdx @@ -1,13 +1,6 @@ # Custom Topology Provider import { Callout } from 'nextra/components'; - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - If you are also running a Validator and Nym API for your network, you can specify that endpoint as such and interact with it as clients usually do (under the hood). > You can find this code [here](https://github.com/nymtech/nym/blob/master/sdk/rust/nym-sdk/examples/custom_topology_provider.rs) @@ -33,7 +26,7 @@ impl MyTopologyProvider { .expect("Failed to create API client builder") .build::() .expect("Failed to build API client"); - + MyTopologyProvider { validator_client, } diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology/manually-overwrite-topology.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology/manually-overwrite-topology.mdx index e3c6d1fec2..61b4b3fdbc 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology/manually-overwrite-topology.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/custom-topology/manually-overwrite-topology.mdx @@ -1,13 +1,6 @@ # Manually Overwrite Topology import { Callout } from 'nextra/components'; - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - If you aren't running a Validator and Nym API, and just want to import a specific sub-set of mix nodes, you can simply overwrite the grabbed topology manually. > You can find this code [here](https://github.com/nymtech/nym/blob/master/sdk/rust/nym-sdk/examples/manually_overwrite_topology.rs) diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/simple.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/simple.mdx index c6065d6231..730d98608a 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/simple.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/simple.mdx @@ -2,13 +2,6 @@ import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - Lets look at a very simple example of how you can import and use the websocket client in a piece of Rust code. Simply importing the `nym_sdk` crate into your project allows you to create a client and send traffic through the mixnet. diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/socks.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/socks.mdx index 03089679b7..9dff137fd5 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/socks.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/socks.mdx @@ -2,13 +2,6 @@ import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - If you are looking at implementing Nym as a transport layer for a crypto wallet or desktop app, this is probably the best place to start if they can speak SOCKS5, 4a, or 4. > You can find this code [here](https://github.com/nymtech/nym/blob/master/sdk/rust/nym-sdk/examples/socks5.rs) diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/split-send.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/split-send.mdx index 6648e1956f..88cd9cc059 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/split-send.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/split-send.mdx @@ -2,13 +2,6 @@ import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - If you need to split the different actions of your client across different tasks, you can do so like this. You can think of this analogously to spliting a Tcp Stream into read/write. This functionality is also useful for embedding a sending and receiving client into different tasks. > You can find this code [here](https://github.com/nymtech/nym/blob/master/sdk/rust/nym-sdk/examples/parallel_sending_and_receiving.rs) diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/storage.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/storage.mdx index 3a103c78f0..230e8eced5 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/storage.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/storage.mdx @@ -2,13 +2,6 @@ import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - If you're integrating mixnet functionality into an existing app and want to integrate saving client configs and keys into your existing storage logic, you can manually perform these actions. > You can find this code [here](https://github.com/nymtech/nym/blob/master/sdk/rust/nym-sdk/examples/manually_handle_storage.rs) diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/surbs.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/surbs.mdx index 1543102a63..d9b68f4848 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/surbs.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/surbs.mdx @@ -2,13 +2,6 @@ import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - Both functions used to send messages through the mixnet (`send_message` and `send_plain_message`) send a pre-determined number of SURBs along with their messages by default. You can read more about how SURBs function under the hood [here](../../../../network/traffic/anonymous-replies). diff --git a/documentation/docs/pages/developers/rust/mixnet/examples/testnet.mdx b/documentation/docs/pages/developers/rust/mixnet/examples/testnet.mdx index 606fcc8ead..a6fc4b4b3e 100644 --- a/documentation/docs/pages/developers/rust/mixnet/examples/testnet.mdx +++ b/documentation/docs/pages/developers/rust/mixnet/examples/testnet.mdx @@ -1,13 +1,7 @@ # Configurable Network import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - If you want to connect your Mixnet client to a different network than Mainnet, simply pull in a file from [`nym/envs`](https://github.com/nymtech/nym/tree/master/envs) as such: ```rust diff --git a/documentation/docs/pages/developers/rust/tcpproxy.mdx b/documentation/docs/pages/developers/rust/tcpproxy.mdx index ee7836d175..d34d4f0a37 100644 --- a/documentation/docs/pages/developers/rust/tcpproxy.mdx +++ b/documentation/docs/pages/developers/rust/tcpproxy.mdx @@ -1,15 +1,8 @@ # TcpProxy Module import { Callout } from 'nextra/components'; - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - This module exposes the `TcpProxyClient` and the `TcpProxyServer` which can be used to proxy traffic through the Mixnet in a way that is more familiar to developers than the methods exposed by the [`Mixnet` module](./mixnet). -Both `Client` and `Server` are intended to be initialised and then run in a background thread, exposing a configurable `localhost` socket which developers can read/write/stream to without having to worry about the [message-based](../concepts/messages) nature of sending and receiving traffic to/from the Mixnet. +Both `Client` and `Server` are intended to be initialised and then run in a background thread, exposing a configurable `localhost` socket which developers can read/write/stream to without having to worry about the message-based nature of sending and receiving traffic to/from the Mixnet. > Non-Rust/Go developers who want to experiment with this module can start with the [standalone binaries](../tools/standalone-tcpproxy). diff --git a/documentation/docs/pages/developers/rust/tcpproxy/architecture.mdx b/documentation/docs/pages/developers/rust/tcpproxy/architecture.mdx index b9be09ecdc..7a7965673b 100644 --- a/documentation/docs/pages/developers/rust/tcpproxy/architecture.mdx +++ b/documentation/docs/pages/developers/rust/tcpproxy/architecture.mdx @@ -3,14 +3,6 @@ import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - - This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - - It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - - ## Motivations The motivation behind the creation of the `TcpProxy` module is to allow developers to interact with the Mixnet in a way that is far more familiar to them: simply setting up a connection with a transport, being returned a socket, and then being able to stream data to/from it, similar to something like the Tor [`arti`](https://gitlab.torproject.org/tpo/core/arti/-/tree/main/crates/arti-client) client. diff --git a/documentation/docs/pages/developers/rust/tcpproxy/examples/multiconn.mdx b/documentation/docs/pages/developers/rust/tcpproxy/examples/multiconn.mdx index 6f3bcffd38..daeb38069e 100644 --- a/documentation/docs/pages/developers/rust/tcpproxy/examples/multiconn.mdx +++ b/documentation/docs/pages/developers/rust/tcpproxy/examples/multiconn.mdx @@ -1,13 +1,7 @@ # Multi Connection Example import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - This example starts off several Tcp connections on a loop to a remote endpoint: in this case the `TcpListener` behind the `NymProxyServer` instance on the echo server found in [`nym/tools/echo-server/`](https://github.com/nymtech/nym/tree/develop/tools/echo-server). It pipes a few messages to it, logs the replies, and keeps track of the number of replies received per connection. diff --git a/documentation/docs/pages/developers/rust/tcpproxy/examples/singleconn.mdx b/documentation/docs/pages/developers/rust/tcpproxy/examples/singleconn.mdx index a0c1a73cfe..47f341a893 100644 --- a/documentation/docs/pages/developers/rust/tcpproxy/examples/singleconn.mdx +++ b/documentation/docs/pages/developers/rust/tcpproxy/examples/singleconn.mdx @@ -1,13 +1,7 @@ # Single Connection Example import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - This is a basic example which opens a single TCP connection and writes a bunch of messages between a client and some 'echo server' logic, so only uses a single session under the hood and doesn't really show off the message ordering capabilities; this is mainly just a quick introductory illustration on how: - the mixnet does message ordering - the NymProxyClient and NymProxyServer can be hooked into and used to communicate between two otherwise pretty vanilla TcpStreams diff --git a/documentation/docs/pages/developers/rust/tcpproxy/troubleshooting.mdx b/documentation/docs/pages/developers/rust/tcpproxy/troubleshooting.mdx index 7634e94ac4..8688ae63f4 100644 --- a/documentation/docs/pages/developers/rust/tcpproxy/troubleshooting.mdx +++ b/documentation/docs/pages/developers/rust/tcpproxy/troubleshooting.mdx @@ -1,12 +1,5 @@ # Troubleshooting import { Callout } from 'nextra/components' - - There will be a breaking SDK upgrade in the coming months. This upgrade will make the SDK a lot easier to build with. - -This upgrade will affect the interface of the SDK dramatically, and will be coupled with a protocol change - stay tuned for information on early access to the new protocol testnet. - -It will also be coupled with the documentation of the SDK on [crates.io](https://crates.io/). - ## Lots of `duplicate fragment received` messages You might see a lot of `WARN` level logs about duplicate fragments in your logs, depending on the log level you're using. This occurs when a packet is retransmitted somewhere in the Mixnet, but then the original makes it to the destination client as well. This is not something to do with your client logic, but instead the state of the Mixnet. diff --git a/documentation/docs/pages/developers/tools.mdx b/documentation/docs/pages/developers/tools.mdx index ccd413c5ba..9f0299c333 100644 --- a/documentation/docs/pages/developers/tools.mdx +++ b/documentation/docs/pages/developers/tools.mdx @@ -1,7 +1,7 @@ # Tools -There are a few tools available to developers for chain interaction: the `nym-cli` tool, which operates as an easier-to-use wrapper around `nyxd`, to allow operators to script interactions with their infrastructure (and those who prefer CLI tools ;) ). +There are a few tools available to developers for chain interaction: the `nym-cli` tool, which operates as an easier-to-use wrapper around `nyxd`, to allow operators to script interactions with their infrastructure (and those who prefer CLI tools). There is also a basic echo server tool which app developers can use as a quick endpoint for traffic testing. This will be deployed onto a persistent public server in the future so devs dont have to run it themselves. -Finally, there are a pair of standalone versions of the TcpProxy Rust SDK module for developers to begin experimenting with sending app traffic through them mixnet. +Finally, there are also a pair of standalone versions of the TcpProxy Rust SDK module for developers to begin experimenting with sending app traffic through them mixnet (**this module will soon be deprecated in place of the `MixSocket`/`MixStream` abstractions**). diff --git a/documentation/docs/public/images/developers/nym-arch-client-to-client.png b/documentation/docs/public/images/developers/nym-arch-client-to-client.png new file mode 100644 index 0000000000000000000000000000000000000000..18c0132653ee82baa231ea9ee8a10b00ba4caf0d GIT binary patch literal 80461 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

WR-a@`A6Ycl-l>oigepsSUJoKEs)Pm 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 _5gnQ5p_!!wVisn@Hkj?OzP-{!I= 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

eW-Hes{WBSr~K4hKVMy3o8iFpHQOzFR~ej-FTrA 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 QNO}k@$o!ql$4?`f=TTBZf+=~5;KgM|p=}t9B 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ξEL= zKaP+I*9fwb{R*!SA^}K1Nkru^!omo5h6nq?3CL&Pt`5p`c4T~J$STFK~a*Ei0lPU0Z-YMAzz+g z8S_RZxr$a4Pgj*L$3OhuHtH+sbeH2Diqm(nLQ^GI_oxu*Z?zN)XBWBh3gfH$9a5|F z{d4Y)x^7QNFm}tR0ke9A%u&7b2(}{osn++H?14QPSyd=Lzw$t6IWR$aW0wa55=W=1 zjc}j8HByY4+I;V?q&-IO*hTLL%?9Jf#IGeZPEXKN2Kmp+NrlNG zQX#qYS)st91H(vSM840qIWbT5j@+t!;UBbusL-cFWcoKjaf>!9=tcI!PwzB2KfiX` z|66QzT?e2)v?&KHNUWm1Zr0(0*_G;*M&4F&Z2sDY z`_w_Lu$$RRqIeGTa)aIkwT0Z;`3|;M7+yV;UJYkYdSfH+w22?k18Qkhblbge1s{(H zj;Y10T_*zF1*E+pzSM2_q0Q)GypA;~Mv4OpGq*(m_xOyJ5))7otStJzXk>8ko6p&R zJRgU5G4H$I-|`x;{fJ{_-$TVtA0^B~WhH;`rkkq!g4eG^o%I>7nVzmGLBD`E5|bq1 z7QQcg(p~xo)^)~l3@@5jK~T;z@Tk$n8tL8~JvIwlqq@SNW3PNv?1EZH>eIhjU$gUU__D%BLIVWV6PlBOU*0Tfk`tdkXh4dbkiz-Tca9GctA{-#r(qE zaOoUSZb9jKSux-&lQ$if>JAe3$WU@myyb$^&el`BDjO|{Z_YC}?S<}}T3?iwKATVZ zoLv-c!knx({R+UKyX6hXquhd|D@n4s1eafka8GIk4A4~sxtZB|e79nlFN_(Rwh!v_*9SgNZ{fJ&RpO525IqNIUQA4XaYHF2qlb&DQr(U=#FTAlEE154a z(X$R0ns`+$SaoFH`IZ~5Ln5ghdRL$H;%j}C_UA52J|cZId>Y~65yW#9Nal`& zaiW9=R%Z-EA%V2|*WAQi!DWdmx`WTX7S&$Q1Rbk~E{}<85gSGym%rReNR}&kFRAA|~UAA7{F?_+BpR%MpZ11L*8`b0{YOknccDN~Vaiv!}-=Q@78 zTg;9eBc2>-5VgZvEme{EBA4>m)Sh#7iAZ-V}h5h#|ob|xi`mJd{tWG zYIIk5zEE7Mi_03>C`okcFOCW%@+@??3<%YxVTDD|Qd-)l+?{2tu$o%FmTFVSk#zlO z9Yg;S%wZ+e-pmQG?;9RL!owKWshzs?5fV7Fq@l9Z4qYAku`qs<${d{(Y01>YB^KZ+?*} zTPXR50LHs)t6rtIG{Tq-s~cdlWM0yfsa%$g_okN;vLJf(^4tPd`; zB0qsBafy7(VKr ztEDrb!lbK7YHp&}J@vbX$~NtlVfA#zyyJ66+p^R3Ew7w%m>$bLmt1hgVMP||Og+Xn z9u$32n9xqpyY~24;)g7%!gm8NwWBlo+)p+4&4?>72jeHpE{*m~YqyWJM$Wv%U0yMO z0;(&nWPa0G*Z#E;^D3j6*yeA<)Q&9E9azK3yL3(UTJ)F{5A4FIu>o&DpK3&=__*Q* zVPKOW)s}SGwnat>qwl`bo`hA$V7{oz(ApR%TCOsIJa3JoBvP`|L|C&eRJZ?Qk<7_V ze~8-?c?E$I=G%h%{FOg0yCRk2^H3>y%WHNfzT&T)r80sxA6>a?<}`x38CA2Q^Oy}p zGd5Y{6@>O_KZz!OX!(=8)Q_RaLJ$138=hTx&qm91`y56imMl4y-}|3)iKthte%&0^ zC0O5cS1UW6Os@dQ(e(v&Qbz!p#EHa)1`bLa#MPNP%h37+C^lZ-m02|7&kgPfpWZu< zR));0Q*~o!9=R{UfqJgE|IK&9@3Gq0$(;s zT$zYltS){iVy|wBcMLUOOOM=?J@c{V*Y;*p6qIfGH6meoxXT`~3*TgP{Y@}3p&V1H zq&ISFZIPBzF!2dzoC==nD5l{Z;(^(oITeWoEHFJrf8BNPP|WGEC`Vl)%wb^$>6N$s z+-CrhodSGNBm*nU9n>)(lKHjMd;vNLYGzha){NH_7C4{8osnt2)LrWLZ2!fd4CNtn z=`PPU!u{8*3P(aaiF2GIiw?Xk)0F&txKQat8vCW-Qol1r3_=0%+6Fa>4e_Bf`7>^> zhy!%{-1(E=hN&JQd>k;9&GR*&@S=~T`EJxcjUe%^D^)Dqyxa(dF^|Y#>oJ=P9=kae z)v(KlXm|r)kzxHuT{h2Pqbpa2AF5$Y@^L1mh2 zbP=W*wlq%B4H*N@Myp@xCJx!(?aR5;Yv0l()HWjG(r6WKyvwuDZp$Q&_%A@1`ceKO z;6g8yrIiEM42<4+RBBD35TGd{0%W@H2HDMSX!ZyM*fEOiF+en?twmOzHBshvSN_=r zjWTbU$a6EZn79{SF8(0(EF!GZyQ%fVT{5CA`Lvm1^vhlGN{Q!r*jZ1Wj^)}Lr=fbG zk7PZ^2eIQ=QpKgn4BBqMKaPHZF6c9)AV`; zNDe!BwEL2g#b0i{qW#m5nO{C$(&QE(<2|40W<49uWn5O}Y`X!-L67UV*k87geI7k~ z9TB2gR%_(yHrMnvQ^_@dIF>C$&AobGGbZQP{>V+SEtXBjo7>QDW6uk>iP_fE9Vadiv}G5j_Mg4neBly>eBod-|J~UrIePShBMBytbqzauRjD$z_R> zf9THS9Ar4(z=#HiC>Uo5&xg3&w=g$Er-%vWf>mpkA91SQ_* z&>md}g`w*7nW#Bdhi_`b8_+;4x}!~`n>_@r|1$hWO((?~bV{ND(J&T9@m(Yn(cL?{ zPLq)3_d96gTy&d7f5pbo@GqV@J}yk`I6A=C&vz+Kt4TL&-P?yVhbewkq*u0`(TF*> zB#=7vD*X|=V7%?o>wf%H?a5tLHB&G1>c?b-ISP>PovK>AYH`5P5^Pe6S2%2B01K}% zb@vO+zD02(T$>~IF0(f!-?e$y;EkHoxTA6wPPb{o%&#BcB5S701ZJsNQsjHBp23e$ z@RUHR!T?+IaY@lFL%c)Zdm?;d?k`gtNo*T|Xkc^Kwnu&VU|}XV5ygJ-UsBLag_HvD z0&bIPF)5b7?mtF<{kY~QP@s}DIzAyStMq~A-fJHAD`RiRA=!0zaE|6JS5B+V)UoQz zaXzYL28+YRu_coE+q;Dp8%5izjS&XZH>yZzw{p7fiHja#Qp5D#Yo(t!kPxHzxMGE^ zNq*wg*jI@;=9VVy*StnT)J~|A&i98i!$GohZXA-tY| z>M1+Z3DU6cs)v?E@eG#sDOn?kqkMG+X zRvzr24YXK9i>^l$rH3+e`mYe^V@**UkiQhRoMZMj&sp)&>x#)rAGoIXu6&sGw{@!q zMx_t)Ija%ZE5s$!VMLhNVzeQ#pZZMNrDLnKB@AZ+nMJ_ExjUn<%WWds&3S1CIqLU= z4o0X^{(1~ff)}km<**k40+B-0^a;aTpfl_aAi2>0FcLovi{&6^`;OQra?(yn;b9G> zNjX@VjdbI6#IaP@g0^6pX}5~=6xEquJ5f^K2|0#GL=^Q0Qj#jr9(9V)^JR^8CJ9r( z^~>PoXzP0_O{8BL;a6hyHJa=+gT47{_r4~s{BO4}j&o-zZK?7=TJkL7s_?SBap*Pg za7gvE6*zvLf6UyncqZ@4Cvu?A&zE#Rt~gzTJwISOoIR5q|NIPZj8VBOu;hAqc44Ia zFQC!jBndA(A?OP3#|U&NK3(iEa|ZliQ04@PD=nIB%IAOjOok51z@X^wHqd-RnW&o4R?%Qq2eK~e zLDP!&k|qonIfG)9RVDe^FMS8M+8%c^p*#%xqbW*En9S3aR9`jcP#y`MlVxBE#IB9Ig9CNkO+^1Znbu0M$Tatd9T;0?61ij(X z5p`kTYY=Yg6$1P0)J9lk@)pm4w`4K*S^$#On+N9D(%Bq|;UHhf_bS@w&DX*Z8Ev3- zDB>)B;u|O#_iW-lHs_2_E^^*$uBoe{8}%3y8{kkAj1p4#gtv<>ZnPVFE%fH8aq2Fj zK?s3U{RZP_^GXm^O_ ziCHE4OAC@N28+jkBvTF7Vny*USLs@I#h=6vI(xh+)8?r(3FoqKD_tz+DfuOXHy(|8 zb2O!yZFt2|lrLt~DQco=KSpz9n|lOpgEVB-+yN1K@>Y%2ZiB;C90Cfew`9LP)6sn6 zl{rDzP85*6ScnCE?Hlp89q6u}^kMzXNTJj@fp7}$52-nb6*9dr8NTm7NS(h%Q)5== z!kX-`~ z&uQw7jV1#+qnpDMbz%{iT5&y!Vrbsg0<}eZs``qbul2g@OkMc&Jo%{r zsW37m>fUjBMubWNYIG@YZ-0JWQJ@X-1oo7#y_S5=9``vpwmdJ~5b9k1#)2C^vd*Os zRJKIrEx`m>CA$=2y{?kPb}~@5P##D|oz)Q-GHNf0nY^ZyB}XQpcR)c-;=Z1Q{C$aL z#WuR*K@-$ZuD+HZmtq=kv5=TA|2Ao?)O|rVXeRe85^Y7zE&v<4ITq?<90g6+*1y&x z!WoI0opxuRW$}l|W{@Hw&-``V=*L!(jC3d`edsisG?`kRJ3ry!?mfA_oX0f{f_|}i z-Vfm=c}UK$}UL0HGOe`1DRbMX(-5vZ3pP%}35Oc^!56ClpjJ-JMy z-8qSQXi`ymB20(x_lnQn1lDYgSZQ0`bN32lD#=k7hbwFc7z9hXXTJdzE5W#N0GP=` z?hCa;{4pj{7bIeel5?Up60b;A0`saj_elq8`}bWG|e zICn7ufxF4jrZbf#4otp7Bt{H1!=EJY`AOu*Y|o+-j0>nCzDIn>*F zTc*LY#~MKU`m9i9b$|$uehmu)%1Z6ff*Jum9Z_!41qn*(bE;r}&a?DhTzIY?Cis)h3GbjLw|1M}^^-0_< zJiOs7F;zY_V0tG4b(Dh5=ofOTI^2uC=g&alm(gYVqk1_TzRl+}8RUOV>cD#TIwQ3x z4PEG^ggj^)2n*c~Jq(FWR0YlXCItG6sx(%C*H{EP%xx z_?@@iCEEt7FyL??xd;Oo_ied|&1NJog7loi5Y2K-0Ktoq-16#n;*0L>e@h2vZx!Vr zMH!fF6n!8;QV%TA@_|jY=@^*}pY&XkgTr36yN|WAs|%0(j!=nakH4`wB)MUDcSR;K zwQ3jN0J0X)JFKY43e3Zywr4U2bV8vvV>#vg$xK4tktsar2Wsl3KRV1<3H&iF&(+%8 zy_uQaAn)OUdUn&4RWC z4|s{(NNuQM9VQ1~mr*6L;f~}7(!lV1guHxImO-o%`yv{qjSfA6I+ArrIgTX_z*M;6 zU@r+pxXa7F6*N@rb^aLo0heTA)8apw$V|_qnWJ1vPvSq+|6q373{( ziCpfWE^47mYjHSdZW>exngZ?M=>Wr$9`5f)eiIfy{jgaW6K??SB+|Gb(R_ez@f6%5 z8*0tMdxg7&0Qgv7Lx)eJ>3~rEV4q>T@VTmRScV5JBZlkzi>N*1d#?j`kT{-N2POCA zap^w3ew%u(L**>6zJtBksgtkPi!R@s)46!_v51`-DYl(Dy5;WLZqY3$u4gTG*~*{| zaN+6n7vEX)2R zL|)do0qhOx6_va8i(h4i(jn}1&#}1oD(b@UOt30;{e^Zb^T^$tASq8}aQH7|tMpDw zN8c@?*8GK-jyljy)Of5Z>d@vKon|H|3fTbp#xV-{f+ri<YzLUCns^$k8WQ5NaJR%QdBDjf8Clhzn z_aMQzX}xz?gxch)7>LvqDTl3ogVf9ja_cL}srS4vZdxqt=7%UwJN&|!_$2F-26pzc z<9pcxRitEWBb?3i3_?x85*%8n8?x2wr?NkKG6%+f>+pmkHh?&P01%BEr8mG&QgE97 zSX~FG7SK45S=d-EFGo7YGB9QI15j1dIPt_ieUOOjus9i=Pjw)9ANAEBYu~)FxmOil zqB;60YmM=iVbYX*Gxtgy{(K9D;wdtOYzZ~I`2lA`W5IEH5QkniSUNG-=dtp!m4M?* zz3Tf7Wgp?MWP4zAz^H*yu1DSPb}kglg7A}SAZEGsiM75s^eY|#frRK4JksIVIgfYm zHqH|MACLyIb;dgAnWed_6v)g#|0Yh2TlVVP-X}~N=|AXuct9i6LoQf`_6`zlMG9>H zXD1y;Jv@!&s!o zWefr|AZUivr%*#5;)-=^q&Kj2W!MNDss6mjif+{Go}vmAiRu8Sw{si6#CC4qGv&ZC z(mBI4c+`jS@cg+zh0%Y0Uk6i76Fm=nhdoNPgH+&_{1cq2&$siMq|j!A+DtCA!8EJ~ z%?*f4w~kE7opUOD5K=-1BHR%q34m!}LEi{A*BselU=z5{<-=ml$MA|mvH+YAI1Z!c zV_S#k6~1{VayzwT7w9fShmq|D^88>s~Gl?1X36;r6@Qk=(d<862+m7E3f2!HN zErbLAWI`(Uw38-A%}inr*FQf*Ju`{)1sLtyRn-qS!5ESA3eRJ|Z2=M6Jm#564(}to z@c;%{J86PGa!YipVtrc&3a&QJ5g!|4_w`E0K8)wU73)f{nq3PUH1j7D-c+VF^1O>1j_)qlBaC@pQ%i@CDr%mZ!XAZ zR)XiKo#X_tDI_pck3``xq$n^*Y5oCruW&90THc)9I{&Qewn*33e;zr2WQ>Myu?2Nz zCQ6A->1`GvlZ1kV5wx121BL78EZjy3h~gqOFAk6oo5F`9S;#-qJO2^I-@cu2FPfof zNPxQSq8o%f0~ZnrCeqJIgSP5hC-5@wOhNds;uSxeFc^A(>Y*I^nbTXnC_R5~_ch)+ zU*8Wc2WY`_jfeuX&;Y_xH~!n#X5|m)9-Ya%j{&z11x)Hp46h1usnK@4HL#w)kL}n4 zn3|C&hx+Gw?3UmTjiAi!)^`PLnZT`oVleza&}7umxqnFnFb6=eIPp`M?9&xkHRu?c z2qJE&LPBMK%&LCkuqJf*g;1mj-go{RL|6rl&ePk^Ka2c)q@lT{v(>9szl2P~^PB@L z%@AM+ei$PlfgsouK) z4^T9RwUNln&AH7jTpy^{BL^~^j3I7!{N4R+z8wp(&|q~A$2k2O~Z?XM7819 z|8Z4FSzbqK%m@a9tmpZl8)=%VOu>H}wu*ZYLny8^Z>~y)p%4Lm-$QGFq=iW0vn5eD zvvctF!CO9rCM3z(?Z^U#_O;FQDx$K8(*4KEz|Hgk9%np=I4pp<2q+6E&yK#4-x!Jg z-XBBp>&`{t=MO2kO}kteD;vP_z5)&WSHKZYLxC6kw&FT^n<$e&o$|Los(1r`lq27& zV2NA;+MHjo%w8eT&bDWQ!8mV0>z+f}-=>o6)b;$`um~$Q2fj1$3HQ9a&sY{FE%1DI z$J@)t?b}<6I?vS%-Xt6F$-v~L*9^+vx-W3v`l;eAFNOYDY=nV{>DY;h**;=|WS5|= z37@T{NA#10|MUdLl=~MDTU$uV>})+dcj;JL`nPf3`gHHf|FNZCJOsY+KaaOh|32(n zzia(#XOrDI)zfTnXItI*NJ`-T-(JGjr>v2GEXvL~7|a2s|C*~mpFa7&cUvuY7FJ6z zo{UX9ZsLaD&bPEOi$BP;+nk@zg5L+%8cn$8_icN8P*{=s^TnQK`&qC$MUqFJkz;Dk zF;a!i`tLk&PVj%O)Y;V)HtVsr__VF;A6I=gR)n)fB_uxh`}@D+ zFV(gB{hy2DpZvL_19Kqf$Y~l`P+9CaccaWZIR;QV(mZolha1n ze%qebVq#)AP@#%cPEr_?jaMyoS}^(j*1mio!!lnRQxP)(qjNI2c5uDyxo(Drwzl@4 zmnJ2)^WG0+v`w@xj5SYv0J z8-*)6J8$efwC>JB=X?Rp$~(M=X)rC!1b2_$JD#jm@y-{voFOG8%`Gg{!bp{U`0zng zTzq@Wg4yzCcE+lUMm52x=I3i*q|!&z1_lQ7-VpvgyLI{YKVp3&DZ(1>c2-wc3o-{% zU}{?Cmg&dV^?4!dx^=8b?@WQtNrz$_gbGKV$=ct)uUhpp6XRK&1dqM8R+PN6Y$Q+o zSuRpjf?>R`ao~qsGBe_@eCeaL2s9ZE;UnNHM%+B3Fw-wu>6@ew*Mc?yx{)Pqem5%dAPaJ zO1G@LCzRT1mSblEZ?fe-FL&#j-wLV&S$O)b2FZth7r-Y!PP%TaI~~;2l+_{X{l|Lu zJn9%l!3i&jlcx+$tT;0^HfHbOkY|_JHP!Lui|qfn*}H?}sl*gYnm>Unh~5GjvODUfjeS*<2Yb|GUZkmQ`zXO-@cuFiM#M&b3s4W? zw!tqz{qFZcaZj_KLi&ZZ`1qIKbaJg0jhTocCs7`o!Rh0=8c7Z;b0 zkpmcyOaHjX0TZFu9cBV48G7ZNF!SdI%DY^#$gx?80E>cFz})g(Tia|QA)$-3o+1C3 zL+Fk?&6fYyt%5cDANP#T`hUJJpsQ>j|DW2fc5VuT`S-TA$KwBoKF7Z=@xLSR?@Rpq zSo~|ZwnyWC%WwJD%Kw=<|Blw5f%tb%+#ZO3_r&dS_}83nkHfzP;$H*tX9Tu?{A(b# z$KhWCu{{p|8i+s3<6jTrUjy-HDs27uf7?K8631m$PL%Ea+=RaF$|dEC=`#9W{|5+_ BN{Ijf literal 0 HcmV?d00001 From 386e1790dd06ca00c9e7bbb9ef28e54f9bd44cb3 Mon Sep 17 00:00:00 2001 From: import this <97586125+serinko@users.noreply.github.com> Date: Wed, 12 Nov 2025 12:32:13 +0000 Subject: [PATCH 17/26] [DOCs/operators]: Release notes for v2025.20 leerdammer (#6191) * release notes * bump up nym-node docs version * add dev tools * scrape stats and clean --- .../outputs/api-scraping-outputs/time-now.md | 2 +- .../node-api-check-query-help.md | 2 +- .../docs/pages/operators/changelog.mdx | 70 +++++++++++++++++++ .../pages/operators/nodes/nym-node/setup.mdx | 8 +-- 4 files changed, 76 insertions(+), 6 deletions(-) diff --git a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md index bb07d073b5..62471ca968 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md @@ -1 +1 @@ -Tuesday, November 11th 2025, 16:42:11 UTC +Wednesday, November 12th 2025, 11:13:44 UTC \ No newline at end of file diff --git a/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md b/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md index 999f3d4a6f..bfa068ddb0 100644 --- a/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md +++ b/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md @@ -11,7 +11,7 @@ options: --no_routing_history Display node stats without routing history --no_verloc_metrics Display node stats without verloc metrics -m, --markdown Display results in markdown format - -o, --output [OUTPUT] + -o [OUTPUT], --output [OUTPUT] Save results to file (in current dir or supply with path without filename) ``` diff --git a/documentation/docs/pages/operators/changelog.mdx b/documentation/docs/pages/operators/changelog.mdx index 0cf99f6a21..aa1fe30dfe 100644 --- a/documentation/docs/pages/operators/changelog.mdx +++ b/documentation/docs/pages/operators/changelog.mdx @@ -49,6 +49,76 @@ This page displays a full list of all the changes during our release cycle from +## `v2025.20-leerdammer` + +- [Release Binaries](https://github.com/nymtech/nym/releases/tag/nym-binaries-v2025.20-leerdammer) +- [`nym-node`](nodes/nym-node.mdx) version `1.21.0` + +```sh +nym-node +Binary Name: nym-node +Build Timestamp: 2025-11-12T08:19:33.288341371Z +Build Version: 1.21.0 +Commit SHA: babf113fe5d396fa8a84fa939ad4b1b5b4d38b83 +Commit Date: 2025-11-12T08:39:48.000000000+01:00 +Commit Branch: HEAD +rustc Version: 1.88.0 +rustc Channel: stable +cargo Profile: release +``` + +### Operators Updates & Tools + +- [New **Performance Measurement** page](/operators/performance-and-testing) explaining the logic behind node selection for NymVPN application + +- [New **Gateway Probe Details** page](/operators/performance-and-testing/gateway-probe-details) explaining complexity and contradictions when measuring network performance + +### Developer Tools + +- [Typescript SDK 1.4.1](https://github.com/nymtech/nym/pull/6146): This PR is a new release of the Typescript SDK, `mixFetch` and `WASM` client. It also removes the Harbour Master client from `mixFetch`, replacing it with the Nym API's described endpoint for nym-nodes + +- [Overhauled **developer integrations** pages](/developers/integrations) explaining the different restrictions for the different SDK options on offer + +- [Fixed `mixFetch` and `WASM Client` playground + examples](/developers/typescript/start): new versions of the Typescript SDK and `mixFetch` have been published, examples and live playground have been updated accordingly + + +### Features + +- [Tweak ts sdk actions](https://github.com/nymtech/nym/pull/6185): Using `taskset` to limit the number of of CPUs used by `wasm-pack` and `wasm-opt` commands used by ts linting CI + +- [Configurable mixnet client startup timeout](https://github.com/nymtech/nym/pull/6148) + +- [QUIC bridge deployment script v2](https://github.com/nymtech/nym/pull/6145): Script helping operators to install, configure and deploy QUIC bridge as systemd service + +- [Expose more explicit `new_with_fronted_urls` builder for http API client](https://github.com/nymtech/nym/pull/6136) + +- [Domain fronting](https://github.com/nymtech/nym/pull/6134): Enable URL rotation and retries for mixnet gateway [`init`](https://github.com/nymtech/nym/pull/6126) + + +### Bugfix + +- [Add circuit breaker](https://github.com/nymtech/nym/pull/6143): When the mixnet client's `mix_tx` channel closes during network drops, `OutQueueControl` would retry sending packets through the closed channel, flooding logs and hanging the daemon. This affects all clients (VPN, SOCKS5, native clients), not just VPN .. (Read more in the [PR description](https://github.com/nymtech/nym/pull/6143)) + +- [Update internal owner address in transferred share](https://github.com/nymtech/nym/pull/6139) + +- [Update quic_bridge_deployment.sh for IPv4 and .deb package](https://github.com/nymtech/nym/pull/6138): Updated ping commands to explicitly use IPv4 and adjusted file permission checks with sudo. Changed the forward address prompt to specify IPv4 and modified the binary download process to fetch and install the latest `.deb` release URL automatically + +- [Update stored epoch share when changing ownership](https://github.com/nymtech/nym/pull/6135) + +- [Update stored epoch share when changing announce address](https://github.com/nymtech/nym/pull/6131) + +### Refactors & Maintenance + +- [Re-merge: disconnect mixnet client if registration fails](https://github.com/nymtech/nym/pull/6169) ([\#6158](https://github.com/nymtech/nym/pull/6158)) + +- [Resolve `clippy 1.91` warnings](https://github.com/nymtech/nym/pull/6168) + +- [Remove unused dependencies](https://github.com/nymtech/nym/pull/6151): Removing the crates that only shows up on the workspace `Cargo.toml` + +- [Use typed-builder for registration client builder config](https://github.com/nymtech/nym/pull/6150) + +- [tommy is too quick](https://github.com/nymtech/nym/pull/6149) + ## `v2025.19-kase` - [Release Binaries](https://github.com/nymtech/nym/releases/tag/nym-binaries-v2025.19-kase) diff --git a/documentation/docs/pages/operators/nodes/nym-node/setup.mdx b/documentation/docs/pages/operators/nodes/nym-node/setup.mdx index afae7fb016..de584513ec 100644 --- a/documentation/docs/pages/operators/nodes/nym-node/setup.mdx +++ b/documentation/docs/pages/operators/nodes/nym-node/setup.mdx @@ -21,10 +21,10 @@ This documentation page provides a guide on how to set up and run a [NYM NODE](. ```sh nym-node Binary Name: nym-node -Build Timestamp: 2025-10-30T12:43:37.933354749Z -Build Version: 1.20.0 -Commit SHA: 75a6d3426bd18dca600ad1cfa39b0a3c4f319c69 -Commit Date: 2025-10-30T11:59:32.000000000+01:00 +Build Timestamp: 2025-11-12T08:19:33.288341371Z +Build Version: 1.21.0 +Commit SHA: babf113fe5d396fa8a84fa939ad4b1b5b4d38b83 +Commit Date: 2025-11-12T08:39:48.000000000+01:00 Commit Branch: HEAD rustc Version: 1.88.0 rustc Channel: stable From fa40acbeca11d4b5bcf905117a73658298c0c034 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 12 Nov 2025 15:12:38 +0000 Subject: [PATCH 18/26] fixed broken link (#6193) --- documentation/docs/pages/network/architecture/mixnet.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/pages/network/architecture/mixnet.mdx b/documentation/docs/pages/network/architecture/mixnet.mdx index 352db039d8..4843a292a6 100644 --- a/documentation/docs/pages/network/architecture/mixnet.mdx +++ b/documentation/docs/pages/network/architecture/mixnet.mdx @@ -32,7 +32,7 @@ Upcoming: ## Nym Clients - You can read about setting up and using various clients in the [Developer Docs](../../developers/clients). + You can read about setting up and using various clients in the [Developer Docs](../../developers/clients/socks5). A large proportion of the Nym Mixnet's functionality is implemented client-side. @@ -48,4 +48,4 @@ Clients perform the following actions on behalf of users: * Send Sphinx packet [cover traffic](../concepts/cover-traffic) when no real messages are being sent * Retransmit [un-acknowledged packet sends](../traffic/acks) -> At the moment due to the fact that Nym clients are [message-based](../../developers/concepts/messages), using the Mixnet requires another client on the 'other side' of the mixet to send packets to, unless you're using the `nymvpn` client (part of the NymVPN app) or the `socks5` client, which operates as a SOCKS4,4a, or 5 proxy and is able to utilise the client embedded within the `nym-node`'s Exit Gateway functionality (prev. this functionality was a standalone service, the Network Requester). In the future we wish to remove this point of friction and have all Nym clients construct IP packets instead, easing the integration burden and abstracting away the message-based nature of client communication. +> At the moment due to the fact that Nym clients are message-based, using the Mixnet requires another client on the 'other side' of the mixet to send packets to, unless you're using the `nymvpn` client (part of the NymVPN app) or the `socks5` client, which operates as a SOCKS4,4a, or 5 proxy and is able to utilise the client embedded within the `nym-node`'s Exit Gateway functionality (prev. this functionality was a standalone service, the Network Requester). In the future we wish to remove this point of friction and have all Nym clients construct IP packets instead, easing the integration burden and abstracting away the message-based nature of client communication. From ec015618cd0ccfa93574f0de013eac3e9b4e6671 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Thu, 13 Nov 2025 11:02:45 +0000 Subject: [PATCH 19/26] update gw probe to point @ monorepo (#6194) * update gw probe to point @ monorepo * add funded nyx account info --- .../performance-and-testing/gateway-probe.mdx | 114 +++++++++--------- 1 file changed, 59 insertions(+), 55 deletions(-) diff --git a/documentation/docs/pages/operators/performance-and-testing/gateway-probe.mdx b/documentation/docs/pages/operators/performance-and-testing/gateway-probe.mdx index 8b1b8f38f2..a9b7199761 100644 --- a/documentation/docs/pages/operators/performance-and-testing/gateway-probe.mdx +++ b/documentation/docs/pages/operators/performance-and-testing/gateway-probe.mdx @@ -9,23 +9,21 @@ Nym Node operators running Gateway functionality are already familiar with the m ## Preparation -We recommend to have installed all [the prerequisites](../binaries/building-nym.md#prerequisites) needed to build `nym-node` from source including latest [Rust Toolchain](https://www.rust-lang.org/tools/install), **and** make sure to have [Go](https://go.dev/doc/install) installed. Go is necessary as the probe uses the `rust2go` FFI library to use `netstack` when making requests. +We recommend to have installed all [the prerequisites](../binaries/building-nym.md#prerequisites) needed to build `nym-node` from source including latest [Rust Toolchain](https://www.rust-lang.org/tools/install), **and** make sure to have [Go](https://go.dev/doc/install) installed. Go is necessary as the probe uses the `rust2go` FFI library to use `netstack` when making requests. ## Installation -`nym-gateway-probe` source code is in [`nym-vpn-client`](https://github.com/nymtech/nym-vpn-client) repository. The client needs to be build from source. +`nym-gateway-probe` source code is in [`nym` monorepo](https://github.com/nymtech/nym). The probe needs to be built from source. 1. Clone the repository: ```sh -git clone https://github.com/nymtech/nym-vpn-client.git +git clone https://github.com/nymtech/nym.git ``` 2. Build `nym-gateway-probe`: ```sh -cd nym-vpn-client/nym-vpn-core - cargo build --release -p nym-gateway-probe ``` @@ -34,65 +32,71 @@ cargo build --release -p nym-gateway-probe To list all commands and options run the binary with `--help` command: ```sh -./target/release/nym-gateway-probe -h +./target/release/nym-gateway-probe -h ``` - Output: ```sh -Usage: nym-gateway-probe [OPTIONS] --mnemonic + Usage: nym-gateway-probe [OPTIONS] [COMMAND] -Options: - -c, --config-env-file - Path pointing to an env file describing the network - -g, --entry-gateway - The specific gateway specified by ID - -n, --node - Identity of the node to test - --min-gateway-mixnet-performance - - --min-gateway-vpn-performance - - --only-wireguard - - -i, --ignore-egress-epoch-role - Disable logging during probe - --no-log - - -a, --amnezia-args - Arguments to be appended to the wireguard config enabling amnezia-wg configuration - --netstack-download-timeout-sec - [default: 180] - --netstack-v4-dns - [default: 1.1.1.1] - --netstack-v6-dns - [default: 2606:4700:4700::1111] - --netstack-num-ping - [default: 5] - --netstack-send-timeout-sec - [default: 3] - --netstack-recv-timeout-sec - [default: 3] - --netstack-ping-hosts-v4 - [default: nymtech.net] - --netstack-ping-ips-v4 - [default: 1.1.1.1] - --netstack-ping-hosts-v6 - [default: ipv6.google.com] - --netstack-ping-ips-v6 - [default: 2001:4860:4860::8888 2606:4700:4700::1111 2620:fe::fe] - --mnemonic - - -h, --help - Print help - -V, --version - Print version + Commands: + run-local Run the probe locally + help Print this message or the help of the given subcommand(s) + + Options: + -c, --config-env-file + Path pointing to an env file describing the network + -g, --entry-gateway + The specific gateway specified by ID + -n, --node + Identity of the node to test + --min-gateway-mixnet-performance + + --only-wireguard + + --ignore-egress-epoch-role + Disable logging during probe + --no-log + + -a, --amnezia-args + Arguments to be appended to the wireguard config enabling amnezia-wg configuration + --netstack-download-timeout-sec + [default: 180] + --metadata-timeout-sec + [default: 30] + --netstack-v4-dns + [default: 1.1.1.1] + --netstack-v6-dns + [default: 2606:4700:4700::1111] + --netstack-num-ping + [default: 5] + --netstack-send-timeout-sec + [default: 3] + --netstack-recv-timeout-sec + [default: 3] + --netstack-ping-hosts-v4 + [default: nym.com] + --netstack-ping-ips-v4 + [default: 1.1.1.1] + --netstack-ping-hosts-v6 + [default: cloudflare.com] + --netstack-ping-ips-v6 + [default: 2001:4860:4860::8888 2606:4700:4700::1111 2620:fe::fe] + --ticket-materials + + --ticket-materials-revision + [default: 1] + -h, --help + Print help + -V, --version + Print version ``` -To run the client, simply add `-n` flag followed by the ID key of the node you wish to test, as well as the mnemonic of a funded Nyx account; this is required to test the ticketbook generation. +To run the client, simply add `-g` flag followed by the ID key of the node you wish to test, as well as the mnemonic of a funded Nyx account; this is required to test the ticketbook generation. **Note that this accout needs to have NYM tokens; you cannot use an account with a NymVPN subscription**. Make sure to have at least a few NYM tokens in there. ```sh -./target/release/nym-gateway-probe -n --mnemonic +./target/release/nym-gateway-probe run-local -g --mnemonic ``` For any `nym-node --mode exit-gateway` the aim is to have this outcome: @@ -125,4 +129,4 @@ For any `nym-node --mode exit-gateway` the aim is to have this outcome: **If your Gateway is blacklisted, the probe will not work.** -If you don't provide a `-n` flag it will pick a random node to test. +If you don't provide a `-g` flag it will pick a random node to test. From 577675bab309b5b1301e1536900fa902494ccc5f Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Thu, 13 Nov 2025 11:38:54 +0000 Subject: [PATCH 20/26] Remove old conceptsoverview page + move index to proper place in sidebar (#6196) --- .../developers/concepts.mdx => backup-pages/concepts.mdx.bak} | 0 .../docs/components/outputs/api-scraping-outputs/time-now.md | 2 +- .../outputs/command-outputs/node-api-check-query-help.md | 2 +- documentation/docs/pages/developers/_meta.json | 1 + 4 files changed, 3 insertions(+), 2 deletions(-) rename documentation/{docs/pages/developers/concepts.mdx => backup-pages/concepts.mdx.bak} (100%) diff --git a/documentation/docs/pages/developers/concepts.mdx b/documentation/backup-pages/concepts.mdx.bak similarity index 100% rename from documentation/docs/pages/developers/concepts.mdx rename to documentation/backup-pages/concepts.mdx.bak diff --git a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md index 62471ca968..bd9b415e4a 100644 --- a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md +++ b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md @@ -1 +1 @@ -Wednesday, November 12th 2025, 11:13:44 UTC \ No newline at end of file +Thursday, November 13th 2025, 11:23:33 UTC diff --git a/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md b/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md index bfa068ddb0..999f3d4a6f 100644 --- a/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md +++ b/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md @@ -11,7 +11,7 @@ options: --no_routing_history Display node stats without routing history --no_verloc_metrics Display node stats without verloc metrics -m, --markdown Display results in markdown format - -o [OUTPUT], --output [OUTPUT] + -o, --output [OUTPUT] Save results to file (in current dir or supply with path without filename) ``` diff --git a/documentation/docs/pages/developers/_meta.json b/documentation/docs/pages/developers/_meta.json index d89ffe6bd5..65cfa18527 100644 --- a/documentation/docs/pages/developers/_meta.json +++ b/documentation/docs/pages/developers/_meta.json @@ -1,4 +1,5 @@ { + "index": "Introduction", "--": { "type": "separator", "title": "Mixnet Integrations" From aac983d9223a93a6476566c6f3b47c62bdd4fed0 Mon Sep 17 00:00:00 2001 From: Drazen Urch Date: Thu, 13 Nov 2025 14:18:29 +0100 Subject: [PATCH 21/26] Remove debug feature from http-macro spec in gateway probe (#6195) --- nym-gateway-probe/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nym-gateway-probe/Cargo.toml b/nym-gateway-probe/Cargo.toml index 74f547ee53..5c91e35078 100644 --- a/nym-gateway-probe/Cargo.toml +++ b/nym-gateway-probe/Cargo.toml @@ -56,7 +56,7 @@ nym-ip-packet-requests = { path = "../common/ip-packet-requests" } nym-sdk = { path = "../sdk/rust/nym-sdk" } nym-validator-client = { path = "../common/client-libs/validator-client" } nym-credentials = { path = "../common/credentials" } -nym-http-api-client-macro = { path = "../common/http-api-client-macro", features = ["debug-inventory"] } +nym-http-api-client-macro = { path = "../common/http-api-client-macro" } nym-http-api-client = { path = "../common/http-api-client" } nym-node-status-client = { path = "../nym-node-status-api/nym-node-status-client" } From 17ca0007823f6e5503c7f8a6ceec13ac48916eb0 Mon Sep 17 00:00:00 2001 From: Jack Wampler Date: Fri, 14 Nov 2025 00:59:36 -0700 Subject: [PATCH 22/26] HTTP API resilience enable & domain rotation conditions (#6200) * http url fallback conditions * include changes and tests for fronted * Allow for explicit DNS error Handling in HTTP client (#6201) when sending http reqs add manual DNS so we can handle errors directly * Address PR nits --------- Co-authored-by: durch --- common/http-api-client/src/dns.rs | 7 ++ common/http-api-client/src/fronted.rs | 85 +++++++++++++++++++++ common/http-api-client/src/lib.rs | 104 ++++++++++++++++++++++---- common/http-api-client/src/tests.rs | 46 +++++++++--- 4 files changed, 215 insertions(+), 27 deletions(-) diff --git a/common/http-api-client/src/dns.rs b/common/http-api-client/src/dns.rs index 8687cf7f27..79f7997fbe 100644 --- a/common/http-api-client/src/dns.rs +++ b/common/http-api-client/src/dns.rs @@ -88,6 +88,13 @@ pub enum ResolveError { StaticLookupMiss, } +impl ResolveError { + /// Returns true if the error is a timeout. + pub fn is_timeout(&self) -> bool { + matches!(self, ResolveError::Timeout) + } +} + /// Wrapper around an `AsyncResolver`, which implements the `Resolve` trait. /// /// Typical use involves instantiating using the `Default` implementation and then resolving using diff --git a/common/http-api-client/src/fronted.rs b/common/http-api-client/src/fronted.rs index 4b5a9d9eab..be884264cf 100644 --- a/common/http-api-client/src/fronted.rs +++ b/common/http-api-client/src/fronted.rs @@ -121,4 +121,89 @@ mod tests { // println!("{response:?}"); assert_eq!(response.status(), 200); } + + #[tokio::test] + async fn fallback_on_failure() { + let url1 = Url::new( + "https://fake-domain.nymtech.net", + Some(vec![ + "https://fake-front-1.nymtech.net", + "https://fake-front-2.nymtech.net", + ]), + ) + .unwrap(); + let url2 = Url::new( + "https://validator.global.ssl.fastly.net", + Some(vec!["https://yelp.global.ssl.fastly.net"]), + ) + .unwrap(); // fastly + + let client = ClientBuilder::new_with_urls(vec![url1, url2]) + .expect("bad url") + .with_fronting(FrontPolicy::Always) + .build() + .expect("failed to build client"); + + // Check that the initial configuration has the broken domain and front. + assert_eq!( + client.current_url().as_str(), + "https://fake-domain.nymtech.net/", + ); + assert_eq!( + client.current_url().front_str(), + Some("fake-front-1.nymtech.net"), + ); + + let result = client + .send_request::<_, (), &str, &str>( + reqwest::Method::GET, + &["api", "v1", "network", "details"], + NO_PARAMS, + None, + ) + .await; + assert!(result.is_err()); + + // Check that the host configuration updated the front on error. + assert_eq!( + client.current_url().as_str(), + "https://fake-domain.nymtech.net/", + ); + assert_eq!( + client.current_url().front_str(), + Some("fake-front-2.nymtech.net"), + ); + + let result = client + .send_request::<_, (), &str, &str>( + reqwest::Method::GET, + &["api", "v1", "network", "details"], + NO_PARAMS, + None, + ) + .await; + assert!(result.is_err()); + + // Check that the host configuration updated the domain and front on error. + assert_eq!( + client.current_url().as_str(), + "https://validator.global.ssl.fastly.net/", + ); + assert_eq!( + client.current_url().front_str(), + Some("yelp.global.ssl.fastly.net"), + ); + + let response = client + .send_request::<_, (), &str, &str>( + reqwest::Method::GET, + &["api", "v1", "network", "details"], + NO_PARAMS, + None, + ) + .await + .expect("failed get request"); + + assert_eq!(response.status(), 200); + } } diff --git a/common/http-api-client/src/lib.rs b/common/http-api-client/src/lib.rs index f2c4e09742..a74a141fe6 100644 --- a/common/http-api-client/src/lib.rs +++ b/common/http-api-client/src/lib.rs @@ -395,6 +395,13 @@ pub enum HttpClientError { #[error("failed to resolve request to {url} due to data inconsistency: {details}")] InternalResponseInconsistency { url: ::url::Url, details: String }, + #[cfg(not(target_arch = "wasm32"))] + #[error("encountered dns failure: {inner}")] + DnsLookupFailure { + #[from] + inner: ResolveError, + }, + #[error("Failed to encode bincode: {0}")] Bincode(#[from] bincode::Error), @@ -421,6 +428,8 @@ impl HttpClientError { HttpClientError::ReqwestClientError { source } => source.is_timeout(), HttpClientError::RequestSendFailure { source, .. } => source.0.is_timeout(), HttpClientError::ResponseReadFailure { source, .. } => source.0.is_timeout(), + #[cfg(not(target_arch = "wasm32"))] + HttpClientError::DnsLookupFailure { inner } => inner.is_timeout(), #[cfg(target_arch = "wasm32")] HttpClientError::RequestTimeout => true, _ => false, @@ -775,6 +784,7 @@ impl ClientBuilder { base_urls: self.urls, current_idx: Arc::new(AtomicUsize::new(0)), reqwest_client, + using_secure_dns: self.use_secure_dns, #[cfg(feature = "tunneling")] front: self.front, @@ -795,6 +805,7 @@ pub struct Client { base_urls: Vec, current_idx: Arc, reqwest_client: reqwest::Client, + using_secure_dns: bool, #[cfg(feature = "tunneling")] front: Option, @@ -852,6 +863,7 @@ impl Client { base_urls: vec![new_url], current_idx: Arc::new(Default::default()), reqwest_client: self.reqwest_client.clone(), + using_secure_dns: self.using_secure_dns, #[cfg(feature = "tunneling")] front: self.front.clone(), @@ -883,8 +895,34 @@ impl Client { self.retry_limit = limit; } + fn matches_current_host(&self, url: &Url) -> bool { + if cfg!(feature = "tunneling") { + if let Some(ref front) = self.front + && front.is_enabled() + { + url.host_str() == self.current_url().front_str() + } else { + url.host_str() == self.current_url().host_str() + } + } else { + url.host_str() == self.current_url().host_str() + } + } + /// If multiple base urls are available rotate to next (e.g. when the current one resulted in an error) - fn update_host(&self) { + /// + /// Takes an optional URL argument. If this is none, the current host will be updated automatically. + /// If a url is provided first check that the CURRENT host matches the hostname in the URL before + /// triggering a rotation. This is meant to prevent parallel requests that fail from rotating the host + /// multiple times. + fn update_host(&self, maybe_url: Option) { + // If a causal url is provided and it doesn't match the hostname currently in use, skip update. + if let Some(err_url) = maybe_url + && !self.matches_current_host(&err_url) + { + return; + } + #[cfg(feature = "tunneling")] if let Some(ref front) = self.front && front.is_enabled() @@ -1048,8 +1086,28 @@ impl ApiClientCore for Client { .build() .map_err(HttpClientError::reqwest_client_build_error)?; self.apply_hosts_to_req(&mut req); + let url: Url = req.url().clone().into(); + + // try an explicit DNS resolution - if successful then it will be in cache when reqwest + // goes to execute the request. If failure then we get to handle the DNS lookup error. #[cfg(not(target_arch = "wasm32"))] - let url = req.url().clone(); + if self.using_secure_dns + && let Some(hostname) = req.url().domain() + // Default here will use a shared resolver instance + && let Err(err) = HickoryDnsResolver::default().resolve_str(hostname).await + { + // on failure update host, but don't trigger fronting enable. + self.update_host(Some(url.clone())); + + if attempts < self.retry_limit { + attempts += 1; + warn!( + "Retrying request due to dns error on attempt ({attempts}/{}): {err}", + self.retry_limit + ); + continue; + } + } #[cfg(target_arch = "wasm32")] let response: Result = { @@ -1067,25 +1125,39 @@ impl ApiClientCore for Client { match response { Ok(resp) => return Ok(resp), Err(err) => { - // if we have multiple urls, update to the next - self.update_host(); + // only if there was a network issue should we consider updating the host info + // + // note: for now this includes DNS resolution failure, I am not sure how I would go about + // segregating that based on the interface provided by request for errors. + #[cfg(target_arch = "wasm32")] + let is_network_err = err.is_timeout(); + #[cfg(not(target_arch = "wasm32"))] + let is_network_err = err.is_timeout() || err.is_connect(); - #[cfg(feature = "tunneling")] - if let Some(ref front) = self.front { - // If fronting is set to be enabled on error, enable domain fronting as we - // have encountered an error. - let was_enabled = front.is_enabled(); - front.retry_enable(); - if !was_enabled && front.is_enabled() { - tracing::info!( - "Domain fronting activated after connection failure: {err}", - ); + if is_network_err { + // if we have multiple urls, update to the next + self.update_host(Some(url.clone())); + + #[cfg(feature = "tunneling")] + if let Some(ref front) = self.front { + // If fronting is set to be enabled on error, enable domain fronting as we + // have encountered an error. + let was_enabled = front.is_enabled(); + front.retry_enable(); + if !was_enabled && front.is_enabled() { + tracing::info!( + "Domain fronting activated after connection failure: {err}", + ); + } } } if attempts < self.retry_limit { - warn!("Retrying request due to http error: {err}"); attempts += 1; + warn!( + "Retrying request due to http error on attempt ({attempts}/{}): {err}", + self.retry_limit + ); continue; } @@ -1094,7 +1166,7 @@ impl ApiClientCore for Client { if #[cfg(target_arch = "wasm32")] { return Err(err); } else { - return Err(HttpClientError::request_send_error(url, err)); + return Err(HttpClientError::request_send_error(url.into(), err)); } } } diff --git a/common/http-api-client/src/tests.rs b/common/http-api-client/src/tests.rs index a990ef653f..bbfe8df6e0 100644 --- a/common/http-api-client/src/tests.rs +++ b/common/http-api-client/src/tests.rs @@ -91,14 +91,15 @@ fn sanitizing_urls() { #[tokio::test] async fn api_client_retry() -> Result<(), Box> { let client = ClientBuilder::new_with_urls(vec![ - "http://broken.nym.test".parse()?, // This will fail - "https://httpbin.org/status/200".parse()?, // This will succeed + "http://broken.nym.test".parse()?, // This will fail because of DNS (rotate) + "http://127.0.0.1:9".parse()?, // This will fail because of TCP refused (rotate) + "https://httpbin.org/status/200".parse()?, // This should succeed ])? .with_retries(3) .build()?; let req = client.create_get_request(&[], NO_PARAMS).unwrap(); - let resp = client.send(req).await?; + let _resp = client.send(req).await?; // The main test is that we successfully retried and switched to the working URL // We accept any response from the working endpoint since external services can be unreliable @@ -107,7 +108,9 @@ async fn api_client_retry() -> Result<(), Box> { "https://httpbin.org/status/200" ); - println!("Response status: {}", resp.status()); + // // This assert can be unreliable due to factors beyond our control and beyond the scope of + // // this test + // assert_eq!(_resp.status(), StatusCode::OK); Ok(()) } @@ -123,7 +126,7 @@ fn host_updating() { assert_eq!(current_url.front_str(), None); // update the url - client.update_host(); + client.update_host(None); // check that the url is still the same since there is one URL assert_eq!(client.current_url().as_str(), "http://nym-api1.test/"); @@ -138,13 +141,13 @@ fn host_updating() { client.change_base_urls(new_urls); assert_eq!(client.current_url().as_str(), "http://nym-api1.test/"); - client.update_host(); + client.update_host(None); // check that the url got updated now that there are multiple URLs assert_eq!(client.current_url().as_str(), "http://nym-api2.test/"); assert_eq!(client.current_url().front_str(), None); - client.update_host(); + client.update_host(None); assert_eq!(client.current_url().as_str(), "http://nym-api1.test/"); // ======================================= @@ -162,12 +165,33 @@ fn host_updating() { assert_eq!(client.current_url().as_str(), "http://nym-api1.test/"); - client.update_host(); + client.update_host(None); // check that the url got updated now that there are multiple URLs assert_eq!(client.current_url().as_str(), "http://nym-api2.test/"); } +#[test] +fn host_updating_url_conditioned() { + let url1 = Url::new("http://nym-api1.test", None).unwrap(); + let url2 = Url::new("http://nym-api2.test", None).unwrap(); + let urls = vec![url1.clone(), url2.clone()]; + let client = ClientBuilder::new_with_urls(urls).unwrap().build().unwrap(); + + assert_eq!(client.current_url().as_str(), "http://nym-api1.test/"); + + // Try to update with a URL that does NOT match current - should result in no change + client.update_host(Some(Url::parse("http://example.com").unwrap())); + + // check that the url did NOT get updated + assert_eq!(client.current_url().as_str(), "http://nym-api1.test/"); + assert_eq!(client.current_url().front_str(), None); + + // Try to update with a URL that DOES match current - should result in no change + client.update_host(Some(url1)); + assert_eq!(client.current_url().as_str(), "http://nym-api2.test/"); +} + #[test] #[cfg(feature = "tunneling")] fn fronted_host_updating() { @@ -184,7 +208,7 @@ fn fronted_host_updating() { assert_eq!(current_url.front_str(), Some("cdn1.test")); // update the url - client.update_host(); + client.update_host(None); // check that the url is still the same since there is one URL and one front let current_url = client.current_url(); @@ -209,7 +233,7 @@ fn fronted_host_updating() { assert_eq!(current_url.front_str(), Some("cdn1.test")); // update the url - this should keep the same host but change the front - client.update_host(); + client.update_host(None); let current_url = client.current_url(); // check that the url is still the same since there is one URL @@ -217,7 +241,7 @@ fn fronted_host_updating() { assert_eq!(current_url.front_str(), Some("cdn2.test")); // update the url - this should wrap around to the first front as the second url is not fronted - client.update_host(); + client.update_host(None); let current_url = client.current_url(); assert_eq!(current_url.as_str(), "http://nym-api.test/"); From 350d2440324f7367b2a27128e4af4876c61b770b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Fri, 14 Nov 2025 08:19:21 +0000 Subject: [PATCH 23/26] bugfix: fix credential proxy upgrade mode attestation url arg (#6202) this includes bringing over changes introduced in #6174 --- common/credential-proxy/src/error.rs | 8 ++++++ common/network-defaults/src/mainnet.rs | 21 +++++++++++++++ common/network-defaults/src/var_names.rs | 2 ++ .../nym-credential-proxy/src/cli.rs | 8 ++---- .../nym-credential-proxy/src/helpers.rs | 26 ++++++++++++++++++- nym-wallet/Cargo.lock | 1 + 6 files changed, 59 insertions(+), 7 deletions(-) diff --git a/common/credential-proxy/src/error.rs b/common/credential-proxy/src/error.rs index b1e1506763..d6e3e8d28f 100644 --- a/common/credential-proxy/src/error.rs +++ b/common/credential-proxy/src/error.rs @@ -168,6 +168,14 @@ pub enum CredentialProxyError { device_id: String, credential_id: String, }, + + #[error( + "the attestation check url has not been provided through either the CLI nor the default .env config" + )] + AttestationCheckUrlNotSet, + + #[error("the provided attestation check url is malformed: {source}")] + MalformedAttestationCheckUrl { source: url::ParseError }, } impl From for CredentialProxyError { diff --git a/common/network-defaults/src/mainnet.rs b/common/network-defaults/src/mainnet.rs index 8bace8f485..291f397482 100644 --- a/common/network-defaults/src/mainnet.rs +++ b/common/network-defaults/src/mainnet.rs @@ -54,6 +54,11 @@ pub const NYM_APIS: &[ApiUrlConst] = &[ ]; pub const NYM_VPN_API: &str = "https://nymvpn.com/api/"; + +pub const UPGRADE_MODE_ATTESTATION_URL: &str = "https://nym.com/upgrade-mode/attestation.json"; +pub const UPGRADE_MODE_ATTESTER_ED25519_BS58_PUBKEY: &str = + "3bgffBYcfFkTTXc2npNNn9MkddFZ3H2LrPjXDmnJzrqd"; + #[cfg(feature = "network")] pub const NYM_VPN_APIS: &[ApiUrlConst] = &[ ApiUrlConst { @@ -159,6 +164,14 @@ pub fn export_to_env() { set_var_to_default(var_names::NYXD_WEBSOCKET, NYXD_WS); set_var_to_default(var_names::EXIT_POLICY_URL, EXIT_POLICY_URL); set_var_to_default(var_names::NYM_VPN_API, NYM_VPN_API); + set_var_to_default( + var_names::UPGRADE_MODE_ATTESTATION_URL, + UPGRADE_MODE_ATTESTATION_URL, + ); + set_var_to_default( + var_names::UPGRADE_MODE_ATTESTER_ED25519_BS58_PUBKEY, + UPGRADE_MODE_ATTESTER_ED25519_BS58_PUBKEY, + ); } #[cfg(all(feature = "env", feature = "network"))] @@ -199,4 +212,12 @@ pub fn export_to_env_if_not_set() { set_var_conditionally_to_default(var_names::NYM_API, NYM_API); set_var_conditionally_to_default(var_names::NYXD_WEBSOCKET, NYXD_WS); set_var_conditionally_to_default(var_names::EXIT_POLICY_URL, EXIT_POLICY_URL); + set_var_conditionally_to_default( + var_names::UPGRADE_MODE_ATTESTATION_URL, + UPGRADE_MODE_ATTESTATION_URL, + ); + set_var_conditionally_to_default( + var_names::UPGRADE_MODE_ATTESTER_ED25519_BS58_PUBKEY, + UPGRADE_MODE_ATTESTER_ED25519_BS58_PUBKEY, + ); } diff --git a/common/network-defaults/src/var_names.rs b/common/network-defaults/src/var_names.rs index 5bcebe85eb..897937b0fe 100644 --- a/common/network-defaults/src/var_names.rs +++ b/common/network-defaults/src/var_names.rs @@ -25,6 +25,8 @@ pub const NYXD_WEBSOCKET: &str = "NYXD_WS"; pub const EXIT_POLICY_URL: &str = "EXIT_POLICY"; pub const NYM_VPN_API: &str = "NYM_VPN_API"; pub const CLIENT_STATS_COLLECTION_PROVIDER: &str = "CLIENT_STATS_COLLECTION_PROVIDER"; +pub const UPGRADE_MODE_ATTESTATION_URL: &str = "UPGRADE_MODE_ATTESTATION_URL"; +pub const UPGRADE_MODE_ATTESTER_ED25519_BS58_PUBKEY: &str = "UPGRADE_MODE_ATTESTER_ED25519_PUBKEY"; pub const DKG_TIME_CONFIGURATION: &str = "DKG_TIME_CONFIGURATION"; diff --git a/nym-credential-proxy/nym-credential-proxy/src/cli.rs b/nym-credential-proxy/nym-credential-proxy/src/cli.rs index a8de014423..d5c27a7730 100644 --- a/nym-credential-proxy/nym-credential-proxy/src/cli.rs +++ b/nym-credential-proxy/nym-credential-proxy/src/cli.rs @@ -156,12 +156,8 @@ pub struct Cli { #[derive(Args, Debug, Clone)] pub struct UpgradeModeConfig { /// URL for polling for upgrade mode changes. - #[clap( - long, - env = "NYM_CREDENTIAL_PROXY_ATTESTATION_CHECK_URL", - default_value = "5m" - )] - pub(crate) attestation_check_url: Url, + #[clap(long, env = "NYM_CREDENTIAL_PROXY_ATTESTATION_CHECK_URL")] + pub(crate) attestation_check_url: Option, /// Default polling interval of the upgrade mode endpoint. #[clap( diff --git a/nym-credential-proxy/nym-credential-proxy/src/helpers.rs b/nym-credential-proxy/nym-credential-proxy/src/helpers.rs index a353c3b447..cd061d8962 100644 --- a/nym-credential-proxy/nym-credential-proxy/src/helpers.rs +++ b/nym-credential-proxy/nym-credential-proxy/src/helpers.rs @@ -8,6 +8,8 @@ use nym_bin_common::bin_info; use nym_credential_proxy_lib::error::CredentialProxyError; use nym_credential_proxy_lib::storage::CredentialProxyStorage; use nym_credential_proxy_lib::ticketbook_manager::TicketbookManager; +use nym_network_defaults::var_names; +use nym_network_defaults::var_names::CONFIGURED; use tracing::{error, info}; pub async fn wait_for_signal() { @@ -55,6 +57,28 @@ pub(crate) async fn run_api(cli: Cli) -> Result<(), CredentialProxyError> { let webhook_cfg = cli.webhook; let jwt_signing_keys = cli.jwt_signing_keys.signing_keys()?; + let upgrade_mode_attestation_check_url = match cli.upgrade_mode.attestation_check_url { + Some(url) => url, + None => { + // argument hasn't been provided and env is not configured + if std::env::var(CONFIGURED).is_err() { + return Err(CredentialProxyError::AttestationCheckUrlNotSet); + } + // argument hasn't been provided and the relevant env value hasn't been set + // (technically this shouldn't be possible) + let Ok(env_url) = std::env::var(var_names::UPGRADE_MODE_ATTESTATION_URL) else { + return Err(CredentialProxyError::AttestationCheckUrlNotSet); + }; + + match env_url.parse() { + Ok(url) => url, + Err(err) => { + return Err(CredentialProxyError::MalformedAttestationCheckUrl { source: err }); + } + } + } + }; + let ticketbook_manager = TicketbookManager::new( build_sha_short(), cli.quorum_check_interval, @@ -70,7 +94,7 @@ pub(crate) async fn run_api(cli: Cli) -> Result<(), CredentialProxyError> { cli.upgrade_mode.attestation_check_regular_polling_interval, cli.upgrade_mode .attestation_check_expedited_polling_interval, - cli.upgrade_mode.attestation_check_url, + upgrade_mode_attestation_check_url, jwt_signing_keys, cli.upgrade_mode.upgrade_mode_jwt_validity, ); diff --git a/nym-wallet/Cargo.lock b/nym-wallet/Cargo.lock index 546ee6409d..26df1b52e6 100644 --- a/nym-wallet/Cargo.lock +++ b/nym-wallet/Cargo.lock @@ -4219,6 +4219,7 @@ dependencies = [ "serde_plain", "serde_yaml", "thiserror 2.0.12", + "tokio", "tracing", "url", "wasmtimer", From 1a4d64a0e555b3cf5b2848b7847e4215e121e53b Mon Sep 17 00:00:00 2001 From: benedettadavico Date: Fri, 14 Nov 2025 11:23:47 +0100 Subject: [PATCH 24/26] bump versions --- clients/native/Cargo.toml | 2 +- clients/socks5/Cargo.toml | 2 +- nym-api/Cargo.toml | 2 +- nym-node/Cargo.toml | 2 +- service-providers/network-requester/Cargo.toml | 2 +- tools/nym-cli/Cargo.toml | 2 +- tools/nymvisor/Cargo.toml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/clients/native/Cargo.toml b/clients/native/Cargo.toml index 3b23db96b3..e53458609b 100644 --- a/clients/native/Cargo.toml +++ b/clients/native/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-client" -version = "1.1.66" +version = "1.1.67" authors = ["Dave Hrycyszyn ", "Jędrzej Stuczyński "] description = "Implementation of the Nym Client" edition = "2021" diff --git a/clients/socks5/Cargo.toml b/clients/socks5/Cargo.toml index a4e1b2d6b4..91d6591411 100644 --- a/clients/socks5/Cargo.toml +++ b/clients/socks5/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-socks5-client" -version = "1.1.66" +version = "1.1.67" authors = ["Dave Hrycyszyn "] description = "A SOCKS5 localhost proxy that converts incoming messages to Sphinx and sends them to a Nym address" edition = "2021" diff --git a/nym-api/Cargo.toml b/nym-api/Cargo.toml index 1e3cf67d48..362c78f731 100644 --- a/nym-api/Cargo.toml +++ b/nym-api/Cargo.toml @@ -4,7 +4,7 @@ [package] name = "nym-api" license = "GPL-3.0" -version = "1.1.69" +version = "1.1.70" authors.workspace = true edition = "2021" rust-version.workspace = true diff --git a/nym-node/Cargo.toml b/nym-node/Cargo.toml index 6d43b0aa97..d02fcc06f4 100644 --- a/nym-node/Cargo.toml +++ b/nym-node/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "nym-node" -version = "1.21.0" +version = "1.22.0" authors.workspace = true repository.workspace = true homepage.workspace = true diff --git a/service-providers/network-requester/Cargo.toml b/service-providers/network-requester/Cargo.toml index bbddd16187..1731d38bef 100644 --- a/service-providers/network-requester/Cargo.toml +++ b/service-providers/network-requester/Cargo.toml @@ -4,7 +4,7 @@ [package] name = "nym-network-requester" license = "GPL-3.0" -version = "1.1.67" +version = "1.1.68" authors.workspace = true edition.workspace = true rust-version = "1.85" diff --git a/tools/nym-cli/Cargo.toml b/tools/nym-cli/Cargo.toml index 41f0d2964e..79edd2de27 100644 --- a/tools/nym-cli/Cargo.toml +++ b/tools/nym-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-cli" -version = "1.1.66" +version = "1.1.67" authors.workspace = true edition = "2021" license.workspace = true diff --git a/tools/nymvisor/Cargo.toml b/tools/nymvisor/Cargo.toml index a4fc38d2fa..738a50a88e 100644 --- a/tools/nymvisor/Cargo.toml +++ b/tools/nymvisor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nymvisor" -version = "0.1.31" +version = "0.1.32" authors.workspace = true repository.workspace = true homepage.workspace = true From 37f3ef58a34da069e4280f1dc749bc6f63497346 Mon Sep 17 00:00:00 2001 From: Simon Wicky Date: Fri, 21 Nov 2025 16:39:12 +0100 Subject: [PATCH 25/26] [bugfix] Tunnel not waiting on MixnetClient to shut down cleanly (#6225) * return the handlefor a clean shutdown * cargo lock --- Cargo.lock | 14 ++-- nym-registration-client/src/lib.rs | 103 +++++++++++++++++++---------- 2 files changed, 75 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6ff6f8bb68..784ed126c4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4825,7 +4825,7 @@ dependencies = [ [[package]] name = "nym-api" -version = "1.1.69" +version = "1.1.70" dependencies = [ "anyhow", "async-trait", @@ -5051,7 +5051,7 @@ dependencies = [ [[package]] name = "nym-cli" -version = "1.1.66" +version = "1.1.67" dependencies = [ "anyhow", "base64 0.22.1", @@ -5134,7 +5134,7 @@ dependencies = [ [[package]] name = "nym-client" -version = "1.1.66" +version = "1.1.67" dependencies = [ "bs58", "clap", @@ -6363,7 +6363,7 @@ dependencies = [ [[package]] name = "nym-network-requester" -version = "1.1.67" +version = "1.1.68" dependencies = [ "addr", "anyhow", @@ -6413,7 +6413,7 @@ dependencies = [ [[package]] name = "nym-node" -version = "1.21.0" +version = "1.22.0" dependencies = [ "anyhow", "arc-swap", @@ -6940,7 +6940,7 @@ dependencies = [ [[package]] name = "nym-socks5-client" -version = "1.1.66" +version = "1.1.67" dependencies = [ "bs58", "clap", @@ -7681,7 +7681,7 @@ dependencies = [ [[package]] name = "nymvisor" -version = "0.1.31" +version = "0.1.32" dependencies = [ "anyhow", "bytes", diff --git a/nym-registration-client/src/lib.rs b/nym-registration-client/src/lib.rs index 4317787c1f..7b37a6d5a4 100644 --- a/nym-registration-client/src/lib.rs +++ b/nym-registration-client/src/lib.rs @@ -3,7 +3,9 @@ use tokio_util::sync::CancellationToken; -use nym_authenticator_client::{AuthClientMixnetListener, AuthenticatorClient}; +use nym_authenticator_client::{ + AuthClientMixnetListener, AuthClientMixnetListenerHandle, AuthenticatorClient, +}; use nym_bandwidth_controller::BandwidthTicketProvider; use nym_credentials_interface::TicketType; use nym_ip_packet_client::IprClientConnect; @@ -35,9 +37,22 @@ pub struct RegistrationClient { event_rx: EventReceiver, } +enum MixnetClientHandle { + Authenticator(AuthClientMixnetListenerHandle), + Sdk(Box), +} + +impl MixnetClientHandle { + async fn stop(self) { + match self { + Self::Authenticator(handle) => handle.stop().await, + Self::Sdk(handle) => handle.disconnect().await, + } + } +} // Bundle of an actual error and the underlying mixnet client so it can be shutdown correctly if needed struct RegistrationError { - mixnet_client: Option, + mixnet_client_handle: MixnetClientHandle, source: crate::RegistrationClientError, } @@ -49,7 +64,7 @@ impl RegistrationClient { let Some(ipr_address) = self.config.exit.node.ipr_address else { return Err(RegistrationError { - mixnet_client: Some(self.mixnet_client), + mixnet_client_handle: MixnetClientHandle::Sdk(Box::new(self.mixnet_client)), source: RegistrationClientError::NoIpPacketRouterAddress { node_id: self.config.exit.node.identity.to_base58_string(), }, @@ -67,13 +82,17 @@ impl RegistrationClient { Some(Ok(addr)) => addr, Some(Err(e)) => { return Err(RegistrationError { - mixnet_client: Some(ipr_client.into_mixnet_client()), + mixnet_client_handle: MixnetClientHandle::Sdk(Box::new( + ipr_client.into_mixnet_client(), + )), source: RegistrationClientError::ConnectToIpPacketRouter(e), }); } None => { return Err(RegistrationError { - mixnet_client: Some(ipr_client.into_mixnet_client()), + mixnet_client_handle: MixnetClientHandle::Sdk(Box::new( + ipr_client.into_mixnet_client(), + )), source: RegistrationClientError::Cancelled, }); } @@ -97,7 +116,7 @@ impl RegistrationClient { async fn register_wg(self) -> Result { let Some(entry_auth_address) = self.config.entry.node.authenticator_address else { return Err(RegistrationError { - mixnet_client: Some(self.mixnet_client), + mixnet_client_handle: MixnetClientHandle::Sdk(Box::new(self.mixnet_client)), source: RegistrationClientError::AuthenticationNotPossible { node_id: self.config.entry.node.identity.to_base58_string(), }, @@ -106,7 +125,7 @@ impl RegistrationClient { let Some(exit_auth_address) = self.config.exit.node.authenticator_address else { return Err(RegistrationError { - mixnet_client: Some(self.mixnet_client), + mixnet_client_handle: MixnetClientHandle::Sdk(Box::new(self.mixnet_client)), source: RegistrationClientError::AuthenticationNotPossible { node_id: self.config.exit.node.identity.to_base58_string(), }, @@ -150,35 +169,50 @@ impl RegistrationClient { let exit_fut = exit_auth_client .register_wireguard(&*self.bandwidth_controller, TicketType::V1WireguardExit); - let (entry, exit) = Box::pin( + let (entry, exit) = match Box::pin( self.cancel_token .run_until_cancelled(async { tokio::join!(entry_fut, exit_fut) }), ) .await - .ok_or(RegistrationError { - mixnet_client: None, - source: RegistrationClientError::Cancelled, - })?; + { + Some((entry, exit)) => (entry, exit), + None => { + return Err(RegistrationError { + mixnet_client_handle: MixnetClientHandle::Authenticator(mixnet_listener), + source: RegistrationClientError::Cancelled, + }); + } + }; - let entry = entry.map_err(|source| RegistrationError { - mixnet_client: None, - source: RegistrationClientError::from_authenticator_error( - source, - self.config.entry.node.identity.to_base58_string(), - entry_auth_address, - true, - ), - })?; + let entry = match entry { + Ok(entry) => entry, + Err(source) => { + return Err(RegistrationError { + mixnet_client_handle: MixnetClientHandle::Authenticator(mixnet_listener), + source: RegistrationClientError::from_authenticator_error( + source, + self.config.entry.node.identity.to_base58_string(), + entry_auth_address, + true, + ), + }); + } + }; - let exit = exit.map_err(|source| RegistrationError { - mixnet_client: None, - source: RegistrationClientError::from_authenticator_error( - source, - self.config.exit.node.identity.to_base58_string(), - exit_auth_address, - false, - ), - })?; + let exit = match exit { + Ok(exit) => exit, + Err(source) => { + return Err(RegistrationError { + mixnet_client_handle: MixnetClientHandle::Authenticator(mixnet_listener), + source: RegistrationClientError::from_authenticator_error( + source, + self.config.exit.node.identity.to_base58_string(), + exit_auth_address, + false, + ), + }); + } + }; Ok(RegistrationResult::Wireguard(Box::new( WireguardRegistrationResult { @@ -199,15 +233,14 @@ impl RegistrationClient { self.register_mix_exit().await }; - // If we failed to register, and we were the owner of the mixnet client, shut it down + // If we failed to register, shut down the mixnet client and wait for it to exit match registration_result { Ok(result) => Ok(result), Err(error) => { debug!("Registration failed"); - if let Some(mixnet_client) = error.mixnet_client { - debug!("Shutting down mixnet client"); - mixnet_client.disconnect().await; - } + debug!("Shutting down mixnet client"); + error.mixnet_client_handle.stop().await; + debug!("Mixnet client stopped"); Err(error.source) } } From 22793bc45ea21561671d6670497ff42bc36b9d76 Mon Sep 17 00:00:00 2001 From: benedettadavico Date: Tue, 25 Nov 2025 15:16:42 +0100 Subject: [PATCH 26/26] update changelog --- CHANGELOG.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20653fe313..2033d13fe5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,28 @@ Post 1.0.0 release, the changelog format is based on [Keep a Changelog](https:// ## [Unreleased] +## [2025.21-mozzarella] (2025-11-25) + +- [bugfix] Tunnel not waiting on MixnetClient to shut down cleanly ([#6225]) +- bugfix: fix credential proxy upgrade mode attestation url arg ([#6202]) +- HTTP API resilience enable & domain rotation conditions ([#6200]) +- Remove debug feature from http-macro spec in gateway probe ([#6195]) +- DNS relibility and troubleshooting ([#6179]) +- [bugfix] Distinguish authenticator errors by credential spent ([#6176]) +- Typescript SDK 1.4.1 ([#6146]) +- Enable URL rotation and retries for mixnet gateway init ([#6126]) +- Feature/credential proxy jwt ([#5957]) + +[#6225]: https://github.com/nymtech/nym/pull/6225 +[#6202]: https://github.com/nymtech/nym/pull/6202 +[#6200]: https://github.com/nymtech/nym/pull/6200 +[#6195]: https://github.com/nymtech/nym/pull/6195 +[#6179]: https://github.com/nymtech/nym/pull/6179 +[#6176]: https://github.com/nymtech/nym/pull/6176 +[#6146]: https://github.com/nymtech/nym/pull/6146 +[#6126]: https://github.com/nymtech/nym/pull/6126 +[#5957]: https://github.com/nymtech/nym/pull/5957 + ## [2025.20-leerdammer] (2025-11-12) - Max/tweak ts sdk actions ([#6185])

;K^$?w_B`q*|Z9Ww2sY6q#By;g03P8zCTS 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 literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/furious-users.png b/documentation/docs/public/images/operators/performance/furious-users.png new file mode 100644 index 0000000000000000000000000000000000000000..bd10e839c75a70e6f45f56f9bf43c17b14bf8ada GIT binary patch literal 240957 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 j5L;Bt$Nq3 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 G2Y&%iFf`x* literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/netflix-fits-bandwidth.png b/documentation/docs/public/images/operators/performance/netflix-fits-bandwidth.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b0862453002c460c3e3ae92e1882790cd86e09 GIT binary patch literal 163062 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 literal 0 HcmV?d00001 diff --git a/documentation/docs/public/images/operators/performance/netflix-not-fit.png b/documentation/docs/public/images/operators/performance/netflix-not-fit.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4af6af23cb6a75893f3d2d1cdff4d894a51d08 GIT binary patch literal 148511 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
g_DCmqI)`+!d6_Hb!(O2{Ocn_+omod<`QCZ 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