diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index c7c03239..fe546b82 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -22,6 +22,7 @@ jobs: vrf-listener, checkpointer, merkle-maker, + lp-pricer, ] fail-fast: false steps: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5611a477..be9bb106 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,6 +22,7 @@ jobs: vrf-listener, checkpointer, merkle-maker, + lp-pricer, ] fail-fast: false steps: @@ -44,8 +45,8 @@ jobs: id: cache-contracts uses: actions/cache@v3 with: - path: ./pragma-oracle/target - key: ${{ runner.os }}-contracts-${{ hashFiles('./pragma-oracle/src', 'poetry.lock') }} + path: ./pragma-oracle/pragma-oracle/target + key: ${{ runner.os }}-contracts-${{ hashFiles('./pragma-oracle/pragma-oracle/src', 'poetry.lock') }} - uses: software-mansion/setup-scarb@v1 with: @@ -53,7 +54,7 @@ jobs: - name: Compile contracts if: steps.cache-contracts.outputs.cache-hit != 'true' - working-directory: ./pragma-oracle + working-directory: ./pragma-oracle/pragma-oracle run: | scarb -V scarb build @@ -61,9 +62,9 @@ jobs: - name: Check ABIs are up-to-date run: | # Find and compare *.sierra.json files in both directories - for file in $(find ./pragma-oracle/target/dev -type f -name "*.sierra.json"); do + for file in $(find ./pragma-oracle/pragma-oracle/target/dev -type f -name "*.sierra.json"); do # Extract the relative path of the file for comparison - rel_path=${file#./pragma-oracle/target/dev} + rel_path=${file#./pragma-oracle/pragma-oracle/target/dev} # Use diff to compare the file with its counterpart in the SDK directory diff "$file" "pragma-sdk/pragma_sdk/onchain/abis$rel_path" || (echo "Error: $rel_path in pragma-oracle/target does not match with pragma-sdk/pragma_sdk/onchain/abis/" && exit 1) done diff --git a/checkpointer/tests/integration/checkpointer_test.py b/checkpointer/tests/integration/checkpointer_test.py index 0cabedda..1759f395 100644 --- a/checkpointer/tests/integration/checkpointer_test.py +++ b/checkpointer/tests/integration/checkpointer_test.py @@ -88,7 +88,7 @@ async def test_checkpointer_spot( private_key=private_key, ) - await asyncio.sleep(5) + await asyncio.sleep(60) latest_checkpoint = await pragma_client.get_latest_checkpoint( pair_id="BTC/USD", @@ -238,7 +238,7 @@ async def test_checkpointer_spot_and_future( private_key=private_key, ) - await asyncio.sleep(10) + await asyncio.sleep(60) latest_checkpoint = await pragma_client.get_latest_checkpoint( pair_id="BTC/USD", diff --git a/checkpointer/tests/integration/constants.py b/checkpointer/tests/integration/constants.py index 22b51e8f..7935cebe 100644 --- a/checkpointer/tests/integration/constants.py +++ b/checkpointer/tests/integration/constants.py @@ -24,7 +24,7 @@ def find_repo_root(start_directory: Path) -> Path: repo_root = find_repo_root(current_file_directory).parent SUBMODULE_DIR = repo_root / "pragma-oracle" -CONTRACTS_COMPILED_DIR = SUBMODULE_DIR / "target/dev" +CONTRACTS_COMPILED_DIR = SUBMODULE_DIR / "pragma-oracle" / "target" / "dev" DEPLOYMENTS_DIR = SUBMODULE_DIR / "deployments" diff --git a/infra/nostra-lp-pricer/Dockerfile b/infra/nostra-lp-pricer/Dockerfile new file mode 100644 index 00000000..77e44325 --- /dev/null +++ b/infra/nostra-lp-pricer/Dockerfile @@ -0,0 +1,41 @@ +FROM python:3.12-slim AS base + +ENV PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 \ + PIP_NO_CACHE_DIR=off \ + PIP_DISABLE_PIP_VERSION_CHECK=on \ + PIP_DEFAULT_TIMEOUT=100 \ + POETRY_VERSION=1.8.3 \ + POETRY_VIRTUALENVS_IN_PROJECT=true \ + POETRY_NO_INTERACTION=1 + +ENV PATH="/root/.local/bin:${PATH}" + +FROM base as builder + +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + gcc \ + libgmp3-dev \ + pipx + +RUN apt-get update && apt-get install -y bash curl && curl -1sLf \ +'https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.deb.sh' | bash \ +&& apt-get update && apt-get install -y infisical + + +RUN pipx install poetry +COPY pragma-sdk/ /opt/pragma-sdk/ +COPY pragma-utils/ /opt/pragma-utils/ +COPY lp-pricer/ /opt/lp-pricer/ +WORKDIR /opt/lp-pricer +RUN poetry env use 3.12 +RUN poetry install + +FROM base as final +COPY --from=builder /usr/bin/infisical /usr/bin/infisical +COPY --from=builder /opt /opt +COPY infra/nostra-lp-pricer/entrypoint.sh /opt/lp-pricer/ +COPY infra/nostra-lp-pricer/config/ /opt/lp-pricer/config/ +WORKDIR /opt/lp-pricer +ENTRYPOINT ["bash","/opt/lp-pricer/entrypoint.sh"] \ No newline at end of file diff --git a/infra/nostra-lp-pricer/buildspec.yml b/infra/nostra-lp-pricer/buildspec.yml new file mode 100644 index 00000000..e0aad836 --- /dev/null +++ b/infra/nostra-lp-pricer/buildspec.yml @@ -0,0 +1,30 @@ +version: 0.2 +phases: + pre_build: + commands: + - echo Logging in to Amazon ECR... + - aws --version + - aws ecr get-login-password --region $ECR_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$ECR_REGION.amazonaws.com + - REPOSITORY_URI=$AWS_ACCOUNT_ID.dkr.ecr.$ECR_REGION.amazonaws.com/$ECR_REPOSITORY_NAME + - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7) + - IMAGE_TAG=${COMMIT_HASH:=latest} + build: + commands: + - echo Build started on `date` + - echo Building the Docker image... + - ls -ltr + - docker build -f infra/nostra-lp-pricer/Dockerfile -t $REPOSITORY_URI:latest . + - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG + post_build: + commands: + - echo Build completed on `date` + - echo Pushing the Docker images... + - docker push $REPOSITORY_URI:latest + - docker push $REPOSITORY_URI:$IMAGE_TAG + - echo Writing image definitions file... + - printf '[{"name":"%s","imageUri":"%s"}]' $ECS_CONTAINER_NAME $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json +artifacts: + files: + - imagedefinitions.json + - infra/nostra-lp-pricer/config.yml + discard-paths: yes \ No newline at end of file diff --git a/infra/nostra-lp-pricer/config.yml b/infra/nostra-lp-pricer/config.yml new file mode 100644 index 00000000..e7f2e026 --- /dev/null +++ b/infra/nostra-lp-pricer/config.yml @@ -0,0 +1,9 @@ +path: "/" +container_port: 8080 +health_check_path: "/" +container_environment: + - region: "eu-west-3" + - prefix: "/conf/{{ SERVICE_NAME }}/{{ RUN_ENV }}" + - keys: + - INFISICAL_ENV + - INFISICAL_APP_PATH \ No newline at end of file diff --git a/infra/nostra-lp-pricer/config/config.mainnet.yaml b/infra/nostra-lp-pricer/config/config.mainnet.yaml new file mode 100644 index 00000000..a07e5a6f --- /dev/null +++ b/infra/nostra-lp-pricer/config/config.mainnet.yaml @@ -0,0 +1,8 @@ +pool_addresses: + - '0x00c318445d5a5096e2ad086452d5c97f65a9d28cafe343345e0fa70da0841295' # USDC/USDT - Degen + # - '0x0362ec0c49a9c8f2d322d0ba6a8ec1214b9e4f7e80a17d462ec2585362547d95' # USDC/DAI - Degen + - '0x01a2de9f2895ac4e6cb80c11ecc07ce8062a4ae883f64cb2b1dc6724b85e897d' # STRK/ETH - Degen + - '0x042543c7d220465bd3f8f42314b51f4f3a61d58de3770523b281da61dbf27c8a' # STRK/USDC - Degen + - '0x05e03162008d76cf645fe53c6c13a7a5fce745e8991c6ffe94400d60e44c210a' # ETH/USDC - Degen + - '0x01583919ffd78e87fa28fdf6b6a805fe3ddf52f754a63721dcd4c258211129a6' # WBTC/ETH - Degen + # - '0x076def79cc9a3a375779c163ad12996f99fbeb4acd68d7041529159bde897160' # nstSTRK/STRK - Degen diff --git a/infra/nostra-lp-pricer/entrypoint.sh b/infra/nostra-lp-pricer/entrypoint.sh new file mode 100644 index 00000000..f9c15244 --- /dev/null +++ b/infra/nostra-lp-pricer/entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -euo pipefail +export INFISICAL_TOKEN=$(infisical login --method=universal-auth --client-id=${INFISICAL_CLIENT_ID} --client-secret=${INFISICAL_CLIENT_SECRET} --silent --plain) +infisical export --projectId=${INFISICAL_PROJECT_ID} --env=${INFISICAL_ENV} --path=${INFISICAL_APP_PATH} > .env +source .env +exec /opt/lp-pricer/.venv/bin/python3.12 lp_pricer/main.py ${ARGS} \ No newline at end of file diff --git a/lp-pricer/README.md b/lp-pricer/README.md new file mode 100644 index 00000000..07402a38 --- /dev/null +++ b/lp-pricer/README.md @@ -0,0 +1,52 @@ +# Lp Pricer + +Service used to price Defi Pools using the `LpFetcher` from the SDK. + +### Usage + +The service is ran through the CLI, to have more information you can use the `--help` command: + +```bash +.venv ❯ poetry run lp_pricer --help + +Usage: lp_pricer [OPTIONS] + + Lp Pricer entry point. + +Options: + --log-level [DEBUG|INFO|WARNING|ERROR|CRITICAL] + Logging level. + + -c, --config-file PATH Path to YAML configuration file. [required] + + -n, --network [sepolia|mainnet|devnet|pragma_devnet] + On which networks the checkpoints will be + set. [required] + + --redis-host TEXT Host where the Redis service is live. Format + is HOST:PORT, example: localhost:6379 + + --rpc-url TEXT RPC url used by the onchain client. + + --publisher-name TEXT Name of the publisher of the LP Pricer. + [required] + + --publisher-address TEXT Address of the publisher of the LP Pricer. + [required] + + -p, --private-key TEXT Private key of the publisher. Format: + aws:secret_name, plain:private_key, + env:ENV_VAR_NAME, or + keystore:PATH/TO/THE/KEYSTORE:PASSWORD + [required] + + --help Show this message and exit. +``` + +For example: + +```sh +poetry run lp_pricer -c ./config/config.example.yaml --publisher-name $PUBLISHER_NAME --publisher-address $PUBLISHER_ADDRESS -p plain:$PUBLISHER_PV_KEY +``` + +Will start storing reserves & supply for the provided pools until there is enough to price them and will push the prices on chain. diff --git a/lp-pricer/VERSION b/lp-pricer/VERSION new file mode 100644 index 00000000..e3a4f193 --- /dev/null +++ b/lp-pricer/VERSION @@ -0,0 +1 @@ +2.2.0 \ No newline at end of file diff --git a/lp-pricer/config/config.example.yaml b/lp-pricer/config/config.example.yaml new file mode 100644 index 00000000..5e7be38c --- /dev/null +++ b/lp-pricer/config/config.example.yaml @@ -0,0 +1,3 @@ +pool_addresses: + - '0x00c318445d5a5096e2ad086452d5c97f65a9d28cafe343345e0fa70da0841295' + - '0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3' diff --git a/lp-pricer/lp_pricer/__init__.py b/lp-pricer/lp_pricer/__init__.py new file mode 100644 index 00000000..8a124bf6 --- /dev/null +++ b/lp-pricer/lp_pricer/__init__.py @@ -0,0 +1 @@ +__version__ = "2.2.0" diff --git a/lp-pricer/lp_pricer/configs/__init__.py b/lp-pricer/lp_pricer/configs/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lp-pricer/lp_pricer/configs/pools_config.py b/lp-pricer/lp_pricer/configs/pools_config.py new file mode 100644 index 00000000..160500a1 --- /dev/null +++ b/lp-pricer/lp_pricer/configs/pools_config.py @@ -0,0 +1,18 @@ +import yaml + +from typing import List + +from pydantic import BaseModel + + +class PoolsConfig(BaseModel): + pool_addresses: List[str] + + @classmethod + def from_yaml(cls, path: str) -> "PoolsConfig": + with open(path, "r") as file: + pools_config = yaml.safe_load(file) + return cls(**pools_config) + + def get_all_pools(self) -> List[int]: + return [int(address, 16) for address in self.pool_addresses] diff --git a/lp-pricer/lp_pricer/main.py b/lp-pricer/lp_pricer/main.py new file mode 100644 index 00000000..e85f5eaa --- /dev/null +++ b/lp-pricer/lp_pricer/main.py @@ -0,0 +1,205 @@ +import asyncio +import click +import logging + +from pydantic import HttpUrl +from typing import Optional, List +from starknet_py.contract import InvokeResult + +from pragma_sdk.common.fetchers.fetcher_client import FetcherClient +from pragma_sdk.common.fetchers.generic_fetchers.lp_fetcher.fetcher import LPFetcher +from pragma_sdk.common.fetchers.generic_fetchers.lp_fetcher.redis_manager import LpRedisManager +from pragma_sdk.common.exceptions import PublisherFetchError + +from pragma_sdk.onchain.types.types import PrivateKey, NetworkName +from pragma_sdk.onchain.client import PragmaOnChainClient + +from pragma_utils.logger import setup_logging +from pragma_utils.cli import load_private_key_from_cli_arg + +from lp_pricer.configs.pools_config import PoolsConfig + +logger = logging.getLogger(__name__) + +# This constant is tied to the `MINIMUM_DATA_POINTS` constant in the SDK. +# We should not update it alone! And this should not be configurable, since +# we want 10 data points to be equals to 30 minutes. +DELAY_BETWEEN_PUBLISH_IN_SECONDS = 180 # 3 minutes + + +async def wait_for_txs_acceptance(invocations: List[InvokeResult]): + """ + Wait for all the transactions in the passed list to be accepted on-chain. + Raises an error if one transaction is not accepted. + """ + for invocation in invocations: + nonce = invocation.invoke_transaction.nonce + logger.info(f" ⏳ waiting for TX {hex(invocation.hash)} (nonce={nonce}) to be accepted...") + await invocation.wait_for_acceptance(check_interval=1) + + +async def main( + pools_config: PoolsConfig, + network: NetworkName, + redis_host: str, + publisher_name: str, + publisher_address: str, + private_key: PrivateKey, + rpc_url: Optional[HttpUrl] = None, + publish_delay: int = DELAY_BETWEEN_PUBLISH_IN_SECONDS, +) -> None: + logger.info("🔨 Setting up clients and Redis connection...") + pragma_client = PragmaOnChainClient( + chain_name=network, + network=network if rpc_url is None else rpc_url, + account_contract_address=publisher_address, + account_private_key=private_key, + ) + + # TODO(akhercha): Handle production mode + # https://redis.io/docs/latest/develop/connect/clients/python/ + redis_host, redis_port = redis_host.split(":") + redis_manager = LpRedisManager(host=redis_host, port=redis_port) + + fetcher_client = FetcherClient() + lp_fetcher = LPFetcher( + network=network, + pairs=pools_config.get_all_pools(), + publisher=publisher_name, + redis_manager=redis_manager, + ) + await lp_fetcher.validate_pools() # removes in place the invalid pools + if len(lp_fetcher.lp_contracts) == 0: + logger.error("⛔ No valid pools to price. Exiting.") + exit(1) + fetcher_client.add_fetcher(lp_fetcher) + + logger.info(f"🧩 Starting the LP pricer for {network}...\n") + while True: + entries = await fetcher_client.fetch(return_exceptions=True) + valid_entries = 0 + for entry in entries: + if isinstance(entry, PublisherFetchError): + logger.error(f"⛔ {entry}") + else: + valid_entries += 1 + + if valid_entries > 0: + logger.info(f"📨 Publishing LP prices for {valid_entries} pools...") + try: + invokes = await pragma_client.publish_many(entries) # type:ignore[arg-type] + await wait_for_txs_acceptance(invokes) + logger.info("✅ Published complete!") + except Exception as e: + logger.error(e) + + await asyncio.sleep(publish_delay) + + +@click.command() +@click.option( + "--log-level", + default="INFO", + type=click.Choice( + ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"], + case_sensitive=False, + ), + help="Logging level.", +) +@click.option( + "-c", + "--config-file", + type=click.Path(exists=True), + required=True, + help="Path to YAML configuration file.", +) +@click.option( + "-n", + "--network", + required=True, + default="sepolia", + type=click.Choice( + ["sepolia", "mainnet", "devnet", "pragma_devnet"], + case_sensitive=False, + ), + help="On which networks the checkpoints will be set.", +) +@click.option( + "--redis-host", + type=click.STRING, + required=False, + default="localhost:6379", + help="Host where the Redis service is live. Format is HOST:PORT, example: localhost:6379", +) +@click.option( + "--rpc-url", + type=click.STRING, + required=False, + help="RPC url used by the onchain client.", +) +@click.option( + "--publisher-name", + type=click.STRING, + required=True, + help="Name of the publisher of the LP Pricer.", +) +@click.option( + "--publisher-address", + type=click.STRING, + required=True, + help="Address of the publisher of the LP Pricer.", +) +@click.option( + "-p", + "--private-key", + "raw_private_key", + type=click.STRING, + required=True, + help=( + "Private key of the publisher. Format: " + "aws:secret_name, " + "plain:private_key, " + "env:ENV_VAR_NAME, " + "or keystore:PATH/TO/THE/KEYSTORE:PASSWORD" + ), +) +@click.option( + "--publish-delay", + type=click.INT, + required=False, + default=DELAY_BETWEEN_PUBLISH_IN_SECONDS, + help="Delay between each publish in seconds.", +) +def cli_entrypoint( + log_level: str, + config_file: str, + network: NetworkName, + redis_host: str, + rpc_url: Optional[HttpUrl], + publisher_name: str, + publisher_address: str, + raw_private_key: str, + publish_delay: int, +) -> None: + """ + Lp Pricer entry point. + """ + setup_logging(logger, log_level) + private_key = load_private_key_from_cli_arg(raw_private_key) + pools_config = PoolsConfig.from_yaml(config_file) + asyncio.run( + main( + pools_config=pools_config, + network=network, + redis_host=redis_host, + rpc_url=rpc_url, + publisher_name=publisher_name.upper(), + publisher_address=publisher_address, + private_key=private_key, + publish_delay=publish_delay, + ) + ) + + +if __name__ == "__main__": + cli_entrypoint() diff --git a/lp-pricer/poetry.lock b/lp-pricer/poetry.lock new file mode 100644 index 00000000..74882096 --- /dev/null +++ b/lp-pricer/poetry.lock @@ -0,0 +1,2840 @@ +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "aiohappyeyeballs" +version = "2.4.3" +description = "Happy Eyeballs for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"}, + {file = "aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586"}, +] + +[[package]] +name = "aiohttp" +version = "3.10.10" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohttp-3.10.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:be7443669ae9c016b71f402e43208e13ddf00912f47f623ee5994e12fc7d4b3f"}, + {file = "aiohttp-3.10.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b06b7843929e41a94ea09eb1ce3927865387e3e23ebe108e0d0d09b08d25be9"}, + {file = "aiohttp-3.10.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:333cf6cf8e65f6a1e06e9eb3e643a0c515bb850d470902274239fea02033e9a8"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:274cfa632350225ce3fdeb318c23b4a10ec25c0e2c880eff951a3842cf358ac1"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9e5e4a85bdb56d224f412d9c98ae4cbd032cc4f3161818f692cd81766eee65a"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b606353da03edcc71130b52388d25f9a30a126e04caef1fd637e31683033abd"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab5a5a0c7a7991d90446a198689c0535be89bbd6b410a1f9a66688f0880ec026"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:578a4b875af3e0daaf1ac6fa983d93e0bbfec3ead753b6d6f33d467100cdc67b"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8105fd8a890df77b76dd3054cddf01a879fc13e8af576805d667e0fa0224c35d"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3bcd391d083f636c06a68715e69467963d1f9600f85ef556ea82e9ef25f043f7"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fbc6264158392bad9df19537e872d476f7c57adf718944cc1e4495cbabf38e2a"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e48d5021a84d341bcaf95c8460b152cfbad770d28e5fe14a768988c461b821bc"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2609e9ab08474702cc67b7702dbb8a80e392c54613ebe80db7e8dbdb79837c68"}, + {file = "aiohttp-3.10.10-cp310-cp310-win32.whl", hash = "sha256:84afcdea18eda514c25bc68b9af2a2b1adea7c08899175a51fe7c4fb6d551257"}, + {file = "aiohttp-3.10.10-cp310-cp310-win_amd64.whl", hash = "sha256:9c72109213eb9d3874f7ac8c0c5fa90e072d678e117d9061c06e30c85b4cf0e6"}, + {file = "aiohttp-3.10.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c30a0eafc89d28e7f959281b58198a9fa5e99405f716c0289b7892ca345fe45f"}, + {file = "aiohttp-3.10.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:258c5dd01afc10015866114e210fb7365f0d02d9d059c3c3415382ab633fcbcb"}, + {file = "aiohttp-3.10.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:15ecd889a709b0080f02721255b3f80bb261c2293d3c748151274dfea93ac871"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3935f82f6f4a3820270842e90456ebad3af15810cf65932bd24da4463bc0a4c"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:413251f6fcf552a33c981c4709a6bba37b12710982fec8e558ae944bfb2abd38"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1720b4f14c78a3089562b8875b53e36b51c97c51adc53325a69b79b4b48ebcb"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:679abe5d3858b33c2cf74faec299fda60ea9de62916e8b67e625d65bf069a3b7"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79019094f87c9fb44f8d769e41dbb664d6e8fcfd62f665ccce36762deaa0e911"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe2fb38c2ed905a2582948e2de560675e9dfbee94c6d5ccdb1301c6d0a5bf092"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a3f00003de6eba42d6e94fabb4125600d6e484846dbf90ea8e48a800430cc142"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1bbb122c557a16fafc10354b9d99ebf2f2808a660d78202f10ba9d50786384b9"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:30ca7c3b94708a9d7ae76ff281b2f47d8eaf2579cd05971b5dc681db8caac6e1"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:df9270660711670e68803107d55c2b5949c2e0f2e4896da176e1ecfc068b974a"}, + {file = "aiohttp-3.10.10-cp311-cp311-win32.whl", hash = "sha256:aafc8ee9b742ce75044ae9a4d3e60e3d918d15a4c2e08a6c3c3e38fa59b92d94"}, + {file = "aiohttp-3.10.10-cp311-cp311-win_amd64.whl", hash = "sha256:362f641f9071e5f3ee6f8e7d37d5ed0d95aae656adf4ef578313ee585b585959"}, + {file = "aiohttp-3.10.10-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9294bbb581f92770e6ed5c19559e1e99255e4ca604a22c5c6397b2f9dd3ee42c"}, + {file = "aiohttp-3.10.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a8fa23fe62c436ccf23ff930149c047f060c7126eae3ccea005f0483f27b2e28"}, + {file = "aiohttp-3.10.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5c6a5b8c7926ba5d8545c7dd22961a107526562da31a7a32fa2456baf040939f"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:007ec22fbc573e5eb2fb7dec4198ef8f6bf2fe4ce20020798b2eb5d0abda6138"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9627cc1a10c8c409b5822a92d57a77f383b554463d1884008e051c32ab1b3742"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:50edbcad60d8f0e3eccc68da67f37268b5144ecc34d59f27a02f9611c1d4eec7"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a45d85cf20b5e0d0aa5a8dca27cce8eddef3292bc29d72dcad1641f4ed50aa16"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b00807e2605f16e1e198f33a53ce3c4523114059b0c09c337209ae55e3823a8"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f2d4324a98062be0525d16f768a03e0bbb3b9fe301ceee99611dc9a7953124e6"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:438cd072f75bb6612f2aca29f8bd7cdf6e35e8f160bc312e49fbecab77c99e3a"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:baa42524a82f75303f714108fea528ccacf0386af429b69fff141ffef1c534f9"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a7d8d14fe962153fc681f6366bdec33d4356f98a3e3567782aac1b6e0e40109a"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1277cd707c465cd09572a774559a3cc7c7a28802eb3a2a9472588f062097205"}, + {file = "aiohttp-3.10.10-cp312-cp312-win32.whl", hash = "sha256:59bb3c54aa420521dc4ce3cc2c3fe2ad82adf7b09403fa1f48ae45c0cbde6628"}, + {file = "aiohttp-3.10.10-cp312-cp312-win_amd64.whl", hash = "sha256:0e1b370d8007c4ae31ee6db7f9a2fe801a42b146cec80a86766e7ad5c4a259cf"}, + {file = "aiohttp-3.10.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ad7593bb24b2ab09e65e8a1d385606f0f47c65b5a2ae6c551db67d6653e78c28"}, + {file = "aiohttp-3.10.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1eb89d3d29adaf533588f209768a9c02e44e4baf832b08118749c5fad191781d"}, + {file = "aiohttp-3.10.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3fe407bf93533a6fa82dece0e74dbcaaf5d684e5a51862887f9eaebe6372cd79"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aed5155f819873d23520919e16703fc8925e509abbb1a1491b0087d1cd969e"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f05e9727ce409358baa615dbeb9b969db94324a79b5a5cea45d39bdb01d82e6"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dffb610a30d643983aeb185ce134f97f290f8935f0abccdd32c77bed9388b42"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa6658732517ddabe22c9036479eabce6036655ba87a0224c612e1ae6af2087e"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:741a46d58677d8c733175d7e5aa618d277cd9d880301a380fd296975a9cdd7bc"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e00e3505cd80440f6c98c6d69269dcc2a119f86ad0a9fd70bccc59504bebd68a"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ffe595f10566f8276b76dc3a11ae4bb7eba1aac8ddd75811736a15b0d5311414"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdfcf6443637c148c4e1a20c48c566aa694fa5e288d34b20fcdc58507882fed3"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d183cf9c797a5291e8301790ed6d053480ed94070637bfaad914dd38b0981f67"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:77abf6665ae54000b98b3c742bc6ea1d1fb31c394bcabf8b5d2c1ac3ebfe7f3b"}, + {file = "aiohttp-3.10.10-cp313-cp313-win32.whl", hash = "sha256:4470c73c12cd9109db8277287d11f9dd98f77fc54155fc71a7738a83ffcc8ea8"}, + {file = "aiohttp-3.10.10-cp313-cp313-win_amd64.whl", hash = "sha256:486f7aabfa292719a2753c016cc3a8f8172965cabb3ea2e7f7436c7f5a22a151"}, + {file = "aiohttp-3.10.10-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1b66ccafef7336a1e1f0e389901f60c1d920102315a56df85e49552308fc0486"}, + {file = "aiohttp-3.10.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:acd48d5b80ee80f9432a165c0ac8cbf9253eaddb6113269a5e18699b33958dbb"}, + {file = "aiohttp-3.10.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3455522392fb15ff549d92fbf4b73b559d5e43dc522588f7eb3e54c3f38beee7"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45c3b868724137f713a38376fef8120c166d1eadd50da1855c112fe97954aed8"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:da1dee8948d2137bb51fbb8a53cce6b1bcc86003c6b42565f008438b806cccd8"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5ce2ce7c997e1971b7184ee37deb6ea9922ef5163c6ee5aa3c274b05f9e12fa"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28529e08fde6f12eba8677f5a8608500ed33c086f974de68cc65ab218713a59d"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7db54c7914cc99d901d93a34704833568d86c20925b2762f9fa779f9cd2e70f"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:03a42ac7895406220124c88911ebee31ba8b2d24c98507f4a8bf826b2937c7f2"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7e338c0523d024fad378b376a79faff37fafb3c001872a618cde1d322400a572"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:038f514fe39e235e9fef6717fbf944057bfa24f9b3db9ee551a7ecf584b5b480"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:64f6c17757251e2b8d885d728b6433d9d970573586a78b78ba8929b0f41d045a"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:93429602396f3383a797a2a70e5f1de5df8e35535d7806c9f91df06f297e109b"}, + {file = "aiohttp-3.10.10-cp38-cp38-win32.whl", hash = "sha256:c823bc3971c44ab93e611ab1a46b1eafeae474c0c844aff4b7474287b75fe49c"}, + {file = "aiohttp-3.10.10-cp38-cp38-win_amd64.whl", hash = "sha256:54ca74df1be3c7ca1cf7f4c971c79c2daf48d9aa65dea1a662ae18926f5bc8ce"}, + {file = "aiohttp-3.10.10-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:01948b1d570f83ee7bbf5a60ea2375a89dfb09fd419170e7f5af029510033d24"}, + {file = "aiohttp-3.10.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9fc1500fd2a952c5c8e3b29aaf7e3cc6e27e9cfc0a8819b3bce48cc1b849e4cc"}, + {file = "aiohttp-3.10.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f614ab0c76397661b90b6851a030004dac502e48260ea10f2441abd2207fbcc7"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00819de9e45d42584bed046314c40ea7e9aea95411b38971082cad449392b08c"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05646ebe6b94cc93407b3bf34b9eb26c20722384d068eb7339de802154d61bc5"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:998f3bd3cfc95e9424a6acd7840cbdd39e45bc09ef87533c006f94ac47296090"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9010c31cd6fa59438da4e58a7f19e4753f7f264300cd152e7f90d4602449762"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ea7ffc6d6d6f8a11e6f40091a1040995cdff02cfc9ba4c2f30a516cb2633554"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ef9c33cc5cbca35808f6c74be11eb7f5f6b14d2311be84a15b594bd3e58b5527"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ce0cdc074d540265bfeb31336e678b4e37316849d13b308607efa527e981f5c2"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:597a079284b7ee65ee102bc3a6ea226a37d2b96d0418cc9047490f231dc09fe8"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:7789050d9e5d0c309c706953e5e8876e38662d57d45f936902e176d19f1c58ab"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e7f8b04d83483577fd9200461b057c9f14ced334dcb053090cea1da9c8321a91"}, + {file = "aiohttp-3.10.10-cp39-cp39-win32.whl", hash = "sha256:c02a30b904282777d872266b87b20ed8cc0d1501855e27f831320f471d54d983"}, + {file = "aiohttp-3.10.10-cp39-cp39-win_amd64.whl", hash = "sha256:edfe3341033a6b53a5c522c802deb2079eee5cbfbb0af032a55064bd65c73a23"}, + {file = "aiohttp-3.10.10.tar.gz", hash = "sha256:0631dd7c9f0822cc61c88586ca76d5b5ada26538097d0f1df510b082bad3411a"}, +] + +[package.dependencies] +aiohappyeyeballs = ">=2.3.0" +aiosignal = ">=1.1.2" +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.12.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] + +[[package]] +name = "aioresponses" +version = "0.7.6" +description = "Mock out requests made by ClientSession from aiohttp package" +optional = false +python-versions = "*" +files = [ + {file = "aioresponses-0.7.6-py2.py3-none-any.whl", hash = "sha256:d2c26defbb9b440ea2685ec132e90700907fd10bcca3e85ec2f157219f0d26f7"}, + {file = "aioresponses-0.7.6.tar.gz", hash = "sha256:f795d9dbda2d61774840e7e32f5366f45752d1adc1b74c9362afd017296c7ee1"}, +] + +[package.dependencies] +aiohttp = ">=3.3.0,<4.0.0" + +[[package]] +name = "aiosignal" +version = "1.3.1" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.7" +files = [ + {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, + {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "asgiref" +version = "3.8.1" +description = "ASGI specs, helper code, and adapters" +optional = false +python-versions = ">=3.8" +files = [ + {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, + {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, +] + +[package.extras] +tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] + +[[package]] +name = "async-timeout" +version = "4.0.3" +description = "Timeout context manager for asyncio programs" +optional = false +python-versions = ">=3.7" +files = [ + {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"}, + {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"}, +] + +[[package]] +name = "attrs" +version = "24.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, +] + +[package.extras] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] + +[[package]] +name = "boto3" +version = "1.35.47" +description = "The AWS SDK for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "boto3-1.35.47-py3-none-any.whl", hash = "sha256:0b307f685875e9c7857ce21c0d3050d8d4f3778455a6852d5f98ac75194b400e"}, + {file = "boto3-1.35.47.tar.gz", hash = "sha256:65b808e4cf1af8c2f405382d53656a0d92eee8f85c7388c43d64c7a5571b065f"}, +] + +[package.dependencies] +botocore = ">=1.35.47,<1.36.0" +jmespath = ">=0.7.1,<2.0.0" +s3transfer = ">=0.10.0,<0.11.0" + +[package.extras] +crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] + +[[package]] +name = "botocore" +version = "1.35.47" +description = "Low-level, data-driven core of boto 3." +optional = false +python-versions = ">=3.8" +files = [ + {file = "botocore-1.35.47-py3-none-any.whl", hash = "sha256:05f4493119a96799ff84d43e78691efac3177e1aec8840cca99511de940e342a"}, + {file = "botocore-1.35.47.tar.gz", hash = "sha256:f8f703463d3cd8b6abe2bedc443a7ab29f0e2ff1588a2e83164b108748645547"}, +] + +[package.dependencies] +jmespath = ">=0.7.1,<2.0.0" +python-dateutil = ">=2.1,<3.0.0" +urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} + +[package.extras] +crt = ["awscrt (==0.22.0)"] + +[[package]] +name = "certifi" +version = "2024.8.30" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, +] + +[[package]] +name = "cffi" +version = "1.17.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "coverage" +version = "7.6.4" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, + {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, + {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, + {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, + {file = "coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b"}, + {file = "coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522"}, + {file = "coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf"}, + {file = "coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19"}, + {file = "coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2"}, + {file = "coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5"}, + {file = "coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17"}, + {file = "coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08"}, + {file = "coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9"}, + {file = "coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a"}, + {file = "coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e"}, + {file = "coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963"}, + {file = "coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f"}, + {file = "coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef"}, + {file = "coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e"}, + {file = "coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1"}, + {file = "coverage-7.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3"}, + {file = "coverage-7.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901"}, + {file = "coverage-7.6.4-cp39-cp39-win32.whl", hash = "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09"}, + {file = "coverage-7.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f"}, + {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, + {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, +] + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "crypto-cpp-py" +version = "1.4.4" +description = "This is a packaged crypto-cpp program" +optional = false +python-versions = ">=3.8" +files = [ + {file = "crypto_cpp_py-1.4.4-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:613f49be26ea4e08f4e92516a0882af9f5aca2d2ced7367cd2e1a1dd4aecb92d"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-macosx_13_0_universal2.whl", hash = "sha256:5dc432c4270c7008ac28af2363f699951ba85ef762b3e4feb2c28357e407a622"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-macosx_14_0_universal2.whl", hash = "sha256:0af8af590f6050a528e50800c474925c1681237972151c27a688f6c0276aa478"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90e5a951a4ea88f865151165de527945c85b92229aa2f8aef32b2ef0b8ed712d"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:182d30b77a92f41f56a5088e58da80fd4fdc6885668127bddb7951c2acacbb00"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f31394a93d257eb73b7c29f772d6295ae29d43fc7235be51332c1f5692c8739b"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1a3bfe9e764931fe3656b25a486609b77326f1f3f2518661eb7a34d372e3ff"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:032d5c3ef782638def9e450c6cb3b975744fa320cf66560bb970f9b9ac3dbb4d"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:3047cb99044ca6d707b7a6ec3d32b445cba1917707226513f455c5d8405d4216"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e0ce59b92ecafb47defd39c104405ccb9651367bc74ac54e1a228265e9a9be97"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36cc5b597f40d354c9e340c73266d10017dc44f010cd3711379db98b7450898b"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-win32.whl", hash = "sha256:c4d8799a1cc45744d98bdb65c2f730ab29fc46fc2471805678bebb6c90343309"}, + {file = "crypto_cpp_py-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:28ea4a25a72e66605ec2a7698d159179ac4aa9f3a07fb96901a3a0555a46e0a0"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:ce8b39e4e2f88cf540ef6b3f71251ba7efbd98462ec3500b0f572e3aed6b0386"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-macosx_13_0_universal2.whl", hash = "sha256:44cb0ce6d336d53396b387dcf6cb781264e558d8b925cb1f9208d4b2eb5d5d6b"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:0a5006dbfe233de71206c36ab08cbe50e619599bca6e076b0219542c105632c3"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e737d0928c4433e241b22fde873522fcc9b6118f9d2899f05a3324e42dbeccc2"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b769f82e86dca3aaf14cd79a34ed5212f3704c5bdaa04cd22b0d5fe079a809c5"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb6efbd96f5c81fb0de3deaf5d44ea7487fa51c2c5585fba3192b8cac991d7a8"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93782e704fe4b76ec29f4b425fdb7cf0838b1cdd4a97a03e9e8a9a4b7af0a6fa"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cc92b30b671fd69e741b9f0660a64c410d4aa6a5dc6272dc2d2492061aadddba"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c3339a3632e2f531e5649168f1f8d2df7385abee79153b994ec2ec6adbd1a20d"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:a9a6541ed402b0b92cbb4a2cfba7e271c098ecc806d5b46219ed9a6cee80f559"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45420471e54306ded080e1ca0e2832859840d4d0473e273580fcc00b4fcd0610"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-win32.whl", hash = "sha256:54317921d79296222dc9991441bd94d7b5888b03e78cc856b253587a05376889"}, + {file = "crypto_cpp_py-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:51721a9d7f0351db2b62df6979ec618c3a62b066618a018c7534f6ccd25d3eeb"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:d2a187cd4906d46724c36a8e35840d26cc61bbaa9386cc544610cf75260a321c"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-macosx_13_0_universal2.whl", hash = "sha256:6948b922618c8cebf05d419ae9bafb95fce414322adeac28ccf41ec5d95b25ab"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:2be5f48f0182825022bfd89c46355c79a2d40c90cd06f519e857e5b28e668bbb"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e1ef7cbeadc69f34b92ae8a0090bedf19b689cad6da105108bf199947d6e13"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8039d0c7ec1628845eedf77305545e62d52348afdc8135abc76980b3f98c531"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dda5f34608b218a55fbf6e56216e96c4b468b405b49b0ca37a754998ab714720"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbf9c7d5f6ee987f352b3e8c099d3e18bfc02995c85a6bbeeb004f900e9c0c6f"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1362576bfac17d5ac7b64dca73f7a5b22b49a11bab1ee3289c1bcbc48f2a50eb"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:e7ebea14c80751a0c75a2b9d4daf6fff889367415c1a1c694c6d19b834885fdf"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:6b59041620c816ce6c3bcfcb7aa8673dba07e720d2f48613f7065b3a6a6a58d5"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:380e84cdccf59dae2a190eb0dc38570c546c5d91558a06972257121c30b6025f"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-win32.whl", hash = "sha256:50f7f35c8d17892abd6a510a1df6a585a9e5c0a2c820634488ed2391a822e953"}, + {file = "crypto_cpp_py-1.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:c7671c32209063141aca9e7fc158bd3221893f9184231599c01eea194c062fa2"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:f04abb421dcf2b69bac62ad7011be7cfd1134b05cf7ce97ac5846beb4f0ffd83"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-macosx_13_0_universal2.whl", hash = "sha256:f65666251c3b1dc4071421d7a24c5eb333d975535996bf58191f93e6ad2471fb"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-macosx_14_0_universal2.whl", hash = "sha256:8db0d763fa4a459d009b231f138a8aa743de929882aa6adc47c8efcf7848ad39"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30d441b5f5aac8466a9f64330448ec29762e16cf89be05a475927ae8130e1311"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db20b6dda40c531dfd024d75ccb8440148875ad6e57a079a245e6bfdbd462ff2"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6855cda8a77831836a3b011b2b0b1e8d155489b9cc7416950a190be58afede50"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee3daf1124118815ff0868ab70be2f8bb578d0b42323b82c5707c9ef43ee8aaf"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f5362361a4a27f0a33c7e24396318bc35b825a03ca1916277dfb39468bc4391"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9fc2f2403644818e883b174c01c494e2c5ca3c1b96adce1c265e908253d71f8b"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9294f915a4fda57583a0a758ddf31020e8eceaa0211f3ad6bd83764ad210fb0c"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:31f51e35acb3d7c51e8147855285016fd4b32e096401313d8950875dae35d3cf"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-win32.whl", hash = "sha256:44a85b5b936ee9e55a07e11cf05f82faeb500277f2d3138d7e79718935b1cb46"}, + {file = "crypto_cpp_py-1.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:ab067b7c909e1dfabbeb2f643bf64da3c7523ffc58b4ea3136ee487c6a46f877"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:4645244ade8b0bcfb58fef9cfa74513cd7f5cf7c42f6d887930ba34e01cc6eaa"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-macosx_13_0_universal2.whl", hash = "sha256:2da27f4737b10791510a4d6ff5b669a77d7c6801b68382ed6131c6b0a7129d61"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-macosx_14_0_universal2.whl", hash = "sha256:2b1129041bcd151da0ecf4b371ec0e294d3a05aa839f06db747908fc3db78ca0"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:462f0d9e2fbfb719274e270cdad99d10a54cfee3417c41d146a41bd3fbfa196b"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e11090a11bb1a9ed4f4bac1c0e8ed8e3d01aec50bdd8070c6f43b6d21005a0f1"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:01fc3725af2670eb4c39a8b94b2246fa9eaae64668d958210383dfd04b6b657e"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f91abcdba18580afbd14eb4c477062f54d82e730728ca66126eafcc5a2c3b17"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:56ff49a2c37c895b84c9e0eb2062875b11db48a09f0146876593e6776d12f514"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:d3bfaaf2bfcdb1e3d31006acc72a8a12c88e1dcc5a98709fc8a3af4375470c53"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:74eeba53899df4131e023b663a9d24b87680f14b0af3631b9adb4cea33f5a36f"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fb001a848643d9c61aef4f2d13f33c569fedcafaba3a19560678e626074b89eb"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-win32.whl", hash = "sha256:167cd9c7c04b62807d537b7110de7cf2b3550559f34ee2ba9ce0f188ead2fcf9"}, + {file = "crypto_cpp_py-1.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:d0dc467c4926192c490ebcc4e29756e72432354af9eb00f76792e44eaf367276"}, + {file = "crypto_cpp_py-1.4.4.tar.gz", hash = "sha256:cac53078972562759455b6ef8168341bacbe61c41f69f2068718d3d82917a19b"}, +] + +[package.dependencies] +ecdsa = "0.18.0" +pywin32 = {version = "306", markers = "os_name == \"nt\""} +sympy = "1.11.1" + +[package.extras] +build = ["cmake (>=3.22.4)"] + +[[package]] +name = "cryptography" +version = "43.0.3" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +optional = false +python-versions = ">=3.7" +files = [ + {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18"}, + {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd"}, + {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73"}, + {file = "cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2"}, + {file = "cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd"}, + {file = "cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405"}, + {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16"}, + {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73"}, + {file = "cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995"}, + {file = "cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4a02ded6cd4f0a5562a8887df8b3bd14e822a90f97ac5e544c162899bc467664"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53a583b6637ab4c4e3591a15bc9db855b8d9dee9a669b550f311480acab6eb08"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1ec0bcf7e17c0c5669d881b1cd38c4972fade441b27bda1051665faaa89bdcaa"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ce6fae5bdad59577b44e4dfed356944fbf1d925269114c28be377692643b4ff"}, + {file = "cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} + +[package.extras] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] +nox = ["nox"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] +sdist = ["build"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["certifi", "cryptography-vectors (==43.0.3)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] + +[[package]] +name = "cytoolz" +version = "1.0.0" +description = "Cython implementation of Toolz: High performance functional utilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cytoolz-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ecf5a887acb8f079ab1b81612b1c889bcbe6611aa7804fd2df46ed310aa5a345"}, + {file = "cytoolz-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ef0ef30c1e091d4d59d14d8108a16d50bd227be5d52a47da891da5019ac2f8e4"}, + {file = "cytoolz-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7df2dfd679f0517a96ced1cdd22f5c6c6aeeed28d928a82a02bf4c3fd6fd7ac4"}, + {file = "cytoolz-1.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c51452c938e610f57551aa96e34924169c9100c0448bac88c2fb395cbd3538c"}, + {file = "cytoolz-1.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6433f03910c5e5345d82d6299457c26bf33821224ebb837c6b09d9cdbc414a6c"}, + {file = "cytoolz-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:389ec328bb535f09e71dfe658bf0041f17194ca4cedaacd39bafe7893497a819"}, + {file = "cytoolz-1.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c64658e1209517ce4b54c1c9269a508b289d8d55fc742760e4b8579eacf09a33"}, + {file = "cytoolz-1.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f6039a9bd5bb988762458b9ca82b39e60ca5e5baae2ba93913990dcc5d19fa88"}, + {file = "cytoolz-1.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85c9c8c4465ed1b2c8d67003809aec9627b129cb531d2f6cf0bbfe39952e7e4d"}, + {file = "cytoolz-1.0.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:49375aad431d76650f94877afb92f09f58b6ff9055079ef4f2cd55313f5a1b39"}, + {file = "cytoolz-1.0.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:4c45106171c824a61e755355520b646cb35a1987b34bbf5789443823ee137f63"}, + {file = "cytoolz-1.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3b319a7f0fed5db07d189db4046162ebc183c108df3562a65ba6ebe862d1f634"}, + {file = "cytoolz-1.0.0-cp310-cp310-win32.whl", hash = "sha256:9770e1b09748ad0d751853d994991e2592a9f8c464a87014365f80dac2e83faa"}, + {file = "cytoolz-1.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:20194dd02954c00c1f0755e636be75a20781f91a4ac9270c7f747e82d3c7f5a5"}, + {file = "cytoolz-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dffc22fd2c91be64dbdbc462d0786f8e8ac9a275cfa1869a1084d1867d4f67e0"}, + {file = "cytoolz-1.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a99e7e29274e293f4ffe20e07f76c2ac753a78f1b40c1828dfc54b2981b2f6c4"}, + {file = "cytoolz-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c507a3e0a45c41d66b43f96797290d75d1e7a8549aa03a4a6b8854fdf3f7b8d8"}, + {file = "cytoolz-1.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:643a593ec272ef7429099e1182a22f64ec2696c00d295d2a5be390db1b7ff176"}, + {file = "cytoolz-1.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ce38e2e42cbae30446190c59b92a8a9029e1806fd79eaf88f48b0fe33003893"}, + {file = "cytoolz-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:810a6a168b8c5ecb412fbae3dd6f7ed6c6253a63caf4174ee9794ebd29b2224f"}, + {file = "cytoolz-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ce8a2a85c0741c1b19b16e6782c4a5abc54c3caecda66793447112ab2fa9884"}, + {file = "cytoolz-1.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ea4ac72e6b830861035c4c7999af8e55813f57c6d1913a3d93cc4a6babc27bf7"}, + {file = "cytoolz-1.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a09cdfb21dfb38aa04df43e7546a41f673377eb5485da88ceb784e327ec7603b"}, + {file = "cytoolz-1.0.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:658dd85deb375ff7af990a674e5c9058cef1c9d1f5dc89bc87b77be499348144"}, + {file = "cytoolz-1.0.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9715d1ff5576919d10b68f17241375f6a1eec8961c25b78a83e6ef1487053f39"}, + {file = "cytoolz-1.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f370a1f1f1afc5c1c8cc5edc1cfe0ba444263a0772af7ce094be8e734f41769d"}, + {file = "cytoolz-1.0.0-cp311-cp311-win32.whl", hash = "sha256:dbb2ec1177dca700f3db2127e572da20de280c214fc587b2a11c717fc421af56"}, + {file = "cytoolz-1.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:0983eee73df86e54bb4a79fcc4996aa8b8368fdbf43897f02f9c3bf39c4dc4fb"}, + {file = "cytoolz-1.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:10e3986066dc379e30e225b230754d9f5996aa8d84c2accc69c473c21d261e46"}, + {file = "cytoolz-1.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:16576f1bb143ee2cb9f719fcc4b845879fb121f9075c7c5e8a5ff4854bd02fc6"}, + {file = "cytoolz-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3faa25a1840b984315e8b3ae517312375f4273ffc9a2f035f548b7f916884f37"}, + {file = "cytoolz-1.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:781fce70a277b20fd95dc66811d1a97bb07b611ceea9bda8b7dd3c6a4b05d59a"}, + {file = "cytoolz-1.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7a562c25338eb24d419d1e80a7ae12133844ce6fdeb4ab54459daf250088a1b2"}, + {file = "cytoolz-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f29d8330aaf070304f7cd5cb7e73e198753624eb0aec278557cccd460c699b5b"}, + {file = "cytoolz-1.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:98a96c54aa55ed9c7cdb23c2f0df39a7b4ee518ac54888480b5bdb5ef69c7ef0"}, + {file = "cytoolz-1.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:287d6d7f475882c2ddcbedf8da9a9b37d85b77690779a2d1cdceb5ae3998d52e"}, + {file = "cytoolz-1.0.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:05a871688df749b982839239fcd3f8ec3b3b4853775d575ff9cd335fa7c75035"}, + {file = "cytoolz-1.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:28bb88e1e2f7d6d4b8e0890b06d292c568984d717de3e8381f2ca1dd12af6470"}, + {file = "cytoolz-1.0.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:576a4f1fc73d8836b10458b583f915849da6e4f7914f4ecb623ad95c2508cad5"}, + {file = "cytoolz-1.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:509ed3799c47e4ada14f63e41e8f540ac6e2dab97d5d7298934e6abb9d3830ec"}, + {file = "cytoolz-1.0.0-cp312-cp312-win32.whl", hash = "sha256:9ce25f02b910630f6dc2540dd1e26c9326027ddde6c59f8cab07c56acc70714c"}, + {file = "cytoolz-1.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:7e53cfcce87e05b7f0ae2fb2b3e5820048cd0bb7b701e92bd8f75c9fbb7c9ae9"}, + {file = "cytoolz-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7d56569dfe67a39ce74ffff0dc12cf0a3d1aae709667a303fe8f2dd5fd004fdf"}, + {file = "cytoolz-1.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:035c8bb4706dcf93a89fb35feadff67e9301935bf6bb864cd2366923b69d9a29"}, + {file = "cytoolz-1.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27c684799708bdc7ee7acfaf464836e1b4dec0996815c1d5efd6a92a4356a562"}, + {file = "cytoolz-1.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44ab57cfc922b15d94899f980d76759ef9e0256912dfab70bf2561bea9cd5b19"}, + {file = "cytoolz-1.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:478af5ecc066da093d7660b23d0b465a7f44179739937afbded8af00af412eb6"}, + {file = "cytoolz-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da1f82a7828a42468ea2820a25b6e56461361390c29dcd4d68beccfa1b71066b"}, + {file = "cytoolz-1.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c371b3114d38ee717780b239179e88d5d358fe759a00dcf07691b8922bbc762"}, + {file = "cytoolz-1.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:90b343b2f3b3e77c3832ba19b0b17e95412a5b2e715b05c23a55ba525d1fca49"}, + {file = "cytoolz-1.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89a554a9ba112403232a54e15e46ff218b33020f3f45c4baf6520ab198b7ad93"}, + {file = "cytoolz-1.0.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:0d603f5e2b1072166745ecdd81384a75757a96a704a5642231eb51969f919d5f"}, + {file = "cytoolz-1.0.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:122ef2425bd3c0419e6e5260d0b18cd25cf74de589cd0184e4a63b24a4641e2e"}, + {file = "cytoolz-1.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:8819f1f97ebe36efcaf4b550e21677c46ac8a41bed482cf66845f377dd20700d"}, + {file = "cytoolz-1.0.0-cp38-cp38-win32.whl", hash = "sha256:fcddbb853770dd6e270d89ea8742f0aa42c255a274b9e1620eb04e019b79785e"}, + {file = "cytoolz-1.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:ca526905a014a38cc23ae78635dc51d0462c5c24425b22c08beed9ff2ee03845"}, + {file = "cytoolz-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:05df5ff1cdd198fb57e7368623662578c950be0b14883cadfb9ee4098415e1e5"}, + {file = "cytoolz-1.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04a84778f48ebddb26948971dc60948907c876ba33b13f9cbb014fe65b341fc2"}, + {file = "cytoolz-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f65283b618b4c4df759f57bcf8483865a73f7f268e6d76886c743407c8d26c1c"}, + {file = "cytoolz-1.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:388cd07ee9a9e504c735a0a933e53c98586a1c301a64af81f7aa7ff40c747520"}, + {file = "cytoolz-1.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:06d09e9569cfdfc5c082806d4b4582db8023a3ce034097008622bcbac7236f38"}, + {file = "cytoolz-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9502bd9e37779cc9893cbab515a474c2ab6af61ed22ac2f7e16033db18fcaa85"}, + {file = "cytoolz-1.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:364c2fda148def38003b2c86e8adde1d2aab12411dd50872c244a815262e2fda"}, + {file = "cytoolz-1.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9b2e945617325242687189966335e785dc0fae316f4c1825baacf56e5a97e65f"}, + {file = "cytoolz-1.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0f16907fdc724c55b16776bdb7e629deae81d500fe48cfc3861231753b271355"}, + {file = "cytoolz-1.0.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d3206c81ca3ba2d7b8fe78f2e116e3028e721148be753308e88dcbbc370bca52"}, + {file = "cytoolz-1.0.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:becce4b13e110b5ac6b23753dcd0c977f4fdccffa31898296e13fd1109e517e3"}, + {file = "cytoolz-1.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:69a7e5e98fd446079b8b8ec5987aec9a31ec3570a6f494baefa6800b783eaf22"}, + {file = "cytoolz-1.0.0-cp39-cp39-win32.whl", hash = "sha256:b1707b6c3a91676ac83a28a231a14b337dbb4436b937e6b3e4fd44209852a48b"}, + {file = "cytoolz-1.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:11d48b8521ef5fe92e099f4fc00717b5d0789c3c90d5d84031b6d3b17dee1700"}, + {file = "cytoolz-1.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e672712d5dc3094afc6fb346dd4e9c18c1f3c69608ddb8cf3b9f8428f9c26a5c"}, + {file = "cytoolz-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86fb208bfb7420e1d0d20065d661310e4a8a6884851d4044f47d37ed4cd7410e"}, + {file = "cytoolz-1.0.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6dbe5fe3b835859fc559eb59bf2775b5a108f7f2cfab0966f3202859d787d8fd"}, + {file = "cytoolz-1.0.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cace092dfda174eed09ed871793beb5b65633963bcda5b1632c73a5aceea1ce"}, + {file = "cytoolz-1.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f7a9d816af3be9725c70efe0a6e4352a45d3877751b395014b8eb2f79d7d8d9d"}, + {file = "cytoolz-1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:caa7ef840847a23b379e6146760e3a22f15f445656af97e55a435c592125cfa5"}, + {file = "cytoolz-1.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:921082fff09ff6e40c12c87b49be044492b2d6bb01d47783995813b76680c7b2"}, + {file = "cytoolz-1.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a32f1356f3b64dda883583383966948604ac69ca0b7fbcf5f28856e5f9133b4e"}, + {file = "cytoolz-1.0.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9af793b1738e4191d15a92e1793f1ffea9f6461022c7b2442f3cb1ea0a4f758a"}, + {file = "cytoolz-1.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:51dfda3983fcc59075c534ce54ca041bb3c80e827ada5d4f25ff7b4049777f94"}, + {file = "cytoolz-1.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:acfb8780c04d29423d14aaab74cd1b7b4beaba32f676e7ace02c9acfbf532aba"}, + {file = "cytoolz-1.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99f39dcc46416dca3eb23664b73187b77fb52cd8ba2ddd8020a292d8f449db67"}, + {file = "cytoolz-1.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0d56b3721977806dcf1a68b0ecd56feb382fdb0f632af1a9fc5ab9b662b32c6"}, + {file = "cytoolz-1.0.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d346620abc8c83ae634136e700432ad6202faffcc24c5ab70b87392dcda8a1"}, + {file = "cytoolz-1.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:df0c81197fc130de94c09fc6f024a6a19c98ba8fe55c17f1e45ebba2e9229079"}, + {file = "cytoolz-1.0.0.tar.gz", hash = "sha256:eb453b30182152f9917a5189b7d99046b6ce90cdf8aeb0feff4b2683e600defd"}, +] + +[package.dependencies] +toolz = ">=0.8.0" + +[package.extras] +cython = ["cython"] + +[[package]] +name = "deprecated" +version = "1.2.14" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, +] + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] + +[[package]] +name = "ecdsa" +version = "0.18.0" +description = "ECDSA cryptographic signature library (pure python)" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "ecdsa-0.18.0-py2.py3-none-any.whl", hash = "sha256:80600258e7ed2f16b9aa1d7c295bd70194109ad5a30fdee0eaeefef1d4c559dd"}, + {file = "ecdsa-0.18.0.tar.gz", hash = "sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49"}, +] + +[package.dependencies] +six = ">=1.9.0" + +[package.extras] +gmpy = ["gmpy"] +gmpy2 = ["gmpy2"] + +[[package]] +name = "eth-hash" +version = "0.7.0" +description = "eth-hash: The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3" +optional = false +python-versions = ">=3.8, <4" +files = [ + {file = "eth-hash-0.7.0.tar.gz", hash = "sha256:bacdc705bfd85dadd055ecd35fd1b4f846b671add101427e089a4ca2e8db310a"}, + {file = "eth_hash-0.7.0-py3-none-any.whl", hash = "sha256:b8d5a230a2b251f4a291e3164a23a14057c4a6de4b0aa4a16fa4dc9161b57e2f"}, +] + +[package.extras] +dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +pycryptodome = ["pycryptodome (>=3.6.6,<4)"] +pysha3 = ["pysha3 (>=1.0.0,<2.0.0)", "safe-pysha3 (>=1.0.0)"] +test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] + +[[package]] +name = "eth-keyfile" +version = "0.8.1" +description = "eth-keyfile: A library for handling the encrypted keyfiles used to store ethereum private keys" +optional = false +python-versions = "<4,>=3.8" +files = [ + {file = "eth_keyfile-0.8.1-py3-none-any.whl", hash = "sha256:65387378b82fe7e86d7cb9f8d98e6d639142661b2f6f490629da09fddbef6d64"}, + {file = "eth_keyfile-0.8.1.tar.gz", hash = "sha256:9708bc31f386b52cca0969238ff35b1ac72bd7a7186f2a84b86110d3c973bec1"}, +] + +[package.dependencies] +eth-keys = ">=0.4.0" +eth-utils = ">=2" +pycryptodome = ">=3.6.6,<4" + +[package.extras] +dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["towncrier (>=21,<22)"] +test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] + +[[package]] +name = "eth-keys" +version = "0.6.0" +description = "eth-keys: Common API for Ethereum key operations" +optional = false +python-versions = "<4,>=3.8" +files = [ + {file = "eth_keys-0.6.0-py3-none-any.whl", hash = "sha256:b396fdfe048a5bba3ef3990739aec64901eb99901c03921caa774be668b1db6e"}, + {file = "eth_keys-0.6.0.tar.gz", hash = "sha256:ba33230f851d02c894e83989185b21d76152c49b37e35b61b1d8a6d9f1d20430"}, +] + +[package.dependencies] +eth-typing = ">=3" +eth-utils = ">=2" + +[package.extras] +coincurve = ["coincurve (>=12.0.0)"] +dev = ["asn1tools (>=0.146.2)", "build (>=0.9.0)", "bumpversion (>=0.5.3)", "coincurve (>=12.0.0)", "eth-hash[pysha3]", "factory-boy (>=3.0.1)", "hypothesis (>=5.10.3)", "ipython", "pre-commit (>=3.4.0)", "pyasn1 (>=0.4.5)", "pytest (>=7.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["towncrier (>=21,<22)"] +test = ["asn1tools (>=0.146.2)", "eth-hash[pysha3]", "factory-boy (>=3.0.1)", "hypothesis (>=5.10.3)", "pyasn1 (>=0.4.5)", "pytest (>=7.0.0)"] + +[[package]] +name = "eth-typing" +version = "5.0.1" +description = "eth-typing: Common type annotations for ethereum python packages" +optional = false +python-versions = "<4,>=3.8" +files = [ + {file = "eth_typing-5.0.1-py3-none-any.whl", hash = "sha256:f30d1af16aac598f216748a952eeb64fbcb6e73efa691d2de31148138afe96de"}, + {file = "eth_typing-5.0.1.tar.gz", hash = "sha256:83debf88c9df286db43bb7374974681ebcc9f048fac81be2548dbc549a3203c0"}, +] + +[package.dependencies] +typing-extensions = ">=4.5.0" + +[package.extras] +dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] + +[[package]] +name = "eth-utils" +version = "5.1.0" +description = "eth-utils: Common utility functions for python code that interacts with Ethereum" +optional = false +python-versions = "<4,>=3.8" +files = [ + {file = "eth_utils-5.1.0-py3-none-any.whl", hash = "sha256:a99f1f01b51206620904c5af47fac65abc143aebd0a76bdec860381c5a3230f8"}, + {file = "eth_utils-5.1.0.tar.gz", hash = "sha256:84c6314b9cf1fcd526107464bbf487e3f87097a2e753360d5ed319f7d42e3f20"}, +] + +[package.dependencies] +cytoolz = {version = ">=0.10.1", markers = "implementation_name == \"cpython\""} +eth-hash = ">=0.3.1" +eth-typing = ">=5.0.0" +toolz = {version = ">0.8.2", markers = "implementation_name == \"pypy\""} + +[package.extras] +dev = ["build (>=0.9.0)", "bump-my-version (>=0.19.0)", "eth-hash[pycryptodome]", "hypothesis (>=4.43.0)", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +test = ["hypothesis (>=4.43.0)", "mypy (==1.10.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] + +[[package]] +name = "execnet" +version = "2.1.1" +description = "execnet: rapid multi-Python deployment" +optional = false +python-versions = ">=3.8" +files = [ + {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, + {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, +] + +[package.extras] +testing = ["hatch", "pre-commit", "pytest", "tox"] + +[[package]] +name = "fakeredis" +version = "2.25.1" +description = "Python implementation of redis API, can be used for testing purposes." +optional = false +python-versions = "<4.0,>=3.7" +files = [ + {file = "fakeredis-2.25.1-py3-none-any.whl", hash = "sha256:d08dcbaceae0804db4644fa634106e3c42d76fe4d11aea2949eda768df0c6450"}, + {file = "fakeredis-2.25.1.tar.gz", hash = "sha256:e9e73bacf412d1d942ee7f80525dc188182158e82d41be57eb9c4e71f7474ac8"}, +] + +[package.dependencies] +jsonpath-ng = {version = ">=1.6,<2.0", optional = true, markers = "extra == \"json\""} +redis = {version = ">=4.3", markers = "python_full_version > \"3.8.0\""} +sortedcontainers = ">=2,<3" + +[package.extras] +bf = ["pyprobables (>=0.6,<0.7)"] +cf = ["pyprobables (>=0.6,<0.7)"] +json = ["jsonpath-ng (>=1.6,<2.0)"] +lua = ["lupa (>=2.1,<3.0)"] +probabilistic = ["pyprobables (>=0.6,<0.7)"] + +[[package]] +name = "frozenlist" +version = "1.5.0" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +files = [ + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5"}, + {file = "frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb"}, + {file = "frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, + {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, + {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f"}, + {file = "frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8"}, + {file = "frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03"}, + {file = "frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c"}, + {file = "frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e"}, + {file = "frozenlist-1.5.0-cp38-cp38-win32.whl", hash = "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723"}, + {file = "frozenlist-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c"}, + {file = "frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3"}, + {file = "frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0"}, + {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, + {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, +] + +[[package]] +name = "hiredis" +version = "3.0.0" +description = "Python wrapper for hiredis" +optional = false +python-versions = ">=3.8" +files = [ + {file = "hiredis-3.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:4b182791c41c5eb1d9ed736f0ff81694b06937ca14b0d4dadde5dadba7ff6dae"}, + {file = "hiredis-3.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:13c275b483a052dd645eb2cb60d6380f1f5215e4c22d6207e17b86be6dd87ffa"}, + {file = "hiredis-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1018cc7f12824506f165027eabb302735b49e63af73eb4d5450c66c88f47026"}, + {file = "hiredis-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83a29cc7b21b746cb6a480189e49f49b2072812c445e66a9e38d2004d496b81c"}, + {file = "hiredis-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e241fab6332e8fb5f14af00a4a9c6aefa22f19a336c069b7ddbf28ef8341e8d6"}, + {file = "hiredis-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1fb8de899f0145d6c4d5d4bd0ee88a78eb980a7ffabd51e9889251b8f58f1785"}, + {file = "hiredis-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b23291951959141173eec10f8573538e9349fa27f47a0c34323d1970bf891ee5"}, + {file = "hiredis-3.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e421ac9e4b5efc11705a0d5149e641d4defdc07077f748667f359e60dc904420"}, + {file = "hiredis-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:77c8006c12154c37691b24ff293c077300c22944018c3ff70094a33e10c1d795"}, + {file = "hiredis-3.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:41afc0d3c18b59eb50970479a9c0e5544fb4b95e3a79cf2fbaece6ddefb926fe"}, + {file = "hiredis-3.0.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:04ccae6dcd9647eae6025425ab64edb4d79fde8b9e6e115ebfabc6830170e3b2"}, + {file = "hiredis-3.0.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fe91d62b0594db5ea7d23fc2192182b1a7b6973f628a9b8b2e0a42a2be721ac6"}, + {file = "hiredis-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99516d99316062824a24d145d694f5b0d030c80da693ea6f8c4ecf71a251d8bb"}, + {file = "hiredis-3.0.0-cp310-cp310-win32.whl", hash = "sha256:562eaf820de045eb487afaa37e6293fe7eceb5b25e158b5a1974b7e40bf04543"}, + {file = "hiredis-3.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a1c81c89ed765198da27412aa21478f30d54ef69bf5e4480089d9c3f77b8f882"}, + {file = "hiredis-3.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:4664dedcd5933364756d7251a7ea86d60246ccf73a2e00912872dacbfcef8978"}, + {file = "hiredis-3.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:47de0bbccf4c8a9f99d82d225f7672b9dd690d8fd872007b933ef51a302c9fa6"}, + {file = "hiredis-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e43679eca508ba8240d016d8cca9d27342d70184773c15bea78a23c87a1922f1"}, + {file = "hiredis-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13c345e7278c210317e77e1934b27b61394fee0dec2e8bd47e71570900f75823"}, + {file = "hiredis-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00018f22f38530768b73ea86c11f47e8d4df65facd4e562bd78773bd1baef35e"}, + {file = "hiredis-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ea3a86405baa8eb0d3639ced6926ad03e07113de54cb00fd7510cb0db76a89d"}, + {file = "hiredis-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c073848d2b1d5561f3903879ccf4e1a70c9b1e7566c7bdcc98d082fa3e7f0a1d"}, + {file = "hiredis-3.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a8dffb5f5b3415a4669d25de48b617fd9d44b0bccfc4c2ab24b06406ecc9ecb"}, + {file = "hiredis-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:22c17c96143c2a62dfd61b13803bc5de2ac526b8768d2141c018b965d0333b66"}, + {file = "hiredis-3.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c3ece960008dab66c6b8bb3a1350764677ee7c74ccd6270aaf1b1caf9ccebb46"}, + {file = "hiredis-3.0.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f75999ae00a920f7dce6ecae76fa5e8674a3110e5a75f12c7a2c75ae1af53396"}, + {file = "hiredis-3.0.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e069967cbd5e1900aafc4b5943888f6d34937fc59bf8918a1a546cb729b4b1e4"}, + {file = "hiredis-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0aacc0a78e1d94d843a6d191f224a35893e6bdfeb77a4a89264155015c65f126"}, + {file = "hiredis-3.0.0-cp311-cp311-win32.whl", hash = "sha256:719c32147ba29528cb451f037bf837dcdda4ff3ddb6cdb12c4216b0973174718"}, + {file = "hiredis-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:bdc144d56333c52c853c31b4e2e52cfbdb22d3da4374c00f5f3d67c42158970f"}, + {file = "hiredis-3.0.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:484025d2eb8f6348f7876fc5a2ee742f568915039fcb31b478fd5c242bb0fe3a"}, + {file = "hiredis-3.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:fcdb552ffd97151dab8e7bc3ab556dfa1512556b48a367db94b5c20253a35ee1"}, + {file = "hiredis-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bb6f9fd92f147ba11d338ef5c68af4fd2908739c09e51f186e1d90958c68cc1"}, + {file = "hiredis-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa86bf9a0ed339ec9e8a9a9d0ae4dccd8671625c83f9f9f2640729b15e07fbfd"}, + {file = "hiredis-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e194a0d5df9456995d8f510eab9f529213e7326af6b94770abf8f8b7952ddcaa"}, + {file = "hiredis-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a1df39d74ec507d79c7a82c8063eee60bf80537cdeee652f576059b9cdd15c"}, + {file = "hiredis-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f91456507427ba36fd81b2ca11053a8e112c775325acc74e993201ea912d63e9"}, + {file = "hiredis-3.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9862db92ef67a8a02e0d5370f07d380e14577ecb281b79720e0d7a89aedb9ee5"}, + {file = "hiredis-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d10fcd9e0eeab835f492832b2a6edb5940e2f1230155f33006a8dfd3bd2c94e4"}, + {file = "hiredis-3.0.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:48727d7d405d03977d01885f317328dc21d639096308de126c2c4e9950cbd3c9"}, + {file = "hiredis-3.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e0bb6102ebe2efecf8a3292c6660a0e6fac98176af6de67f020bea1c2343717"}, + {file = "hiredis-3.0.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:df274e3abb4df40f4c7274dd3e587dfbb25691826c948bc98d5fead019dfb001"}, + {file = "hiredis-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:034925b5fb514f7b11aac38cd55b3fd7e9d3af23bd6497f3f20aa5b8ba58e232"}, + {file = "hiredis-3.0.0-cp312-cp312-win32.whl", hash = "sha256:120f2dda469b28d12ccff7c2230225162e174657b49cf4cd119db525414ae281"}, + {file = "hiredis-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:e584fe5f4e6681d8762982be055f1534e0170f6308a7a90f58d737bab12ff6a8"}, + {file = "hiredis-3.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:122171ff47d96ed8dd4bba6c0e41d8afaba3e8194949f7720431a62aa29d8895"}, + {file = "hiredis-3.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:ba9fc605ac558f0de67463fb588722878641e6fa1dabcda979e8e69ff581d0bd"}, + {file = "hiredis-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a631e2990b8be23178f655cae8ac6c7422af478c420dd54e25f2e26c29e766f1"}, + {file = "hiredis-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63482db3fadebadc1d01ad33afa6045ebe2ea528eb77ccaabd33ee7d9c2bad48"}, + {file = "hiredis-3.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f669212c390eebfbe03c4e20181f5970b82c5d0a0ad1df1785f7ffbe7d61150"}, + {file = "hiredis-3.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a49ef161739f8018c69b371528bdb47d7342edfdee9ddc75a4d8caddf45a6e"}, + {file = "hiredis-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98a152052b8878e5e43a2e3a14075218adafc759547c98668a21e9485882696c"}, + {file = "hiredis-3.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50a196af0ce657fcde9bf8a0bbe1032e22c64d8fcec2bc926a35e7ff68b3a166"}, + {file = "hiredis-3.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f2f312eef8aafc2255e3585dcf94d5da116c43ef837db91db9ecdc1bc930072d"}, + {file = "hiredis-3.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:6ca41fa40fa019cde42c21add74aadd775e71458051a15a352eabeb12eb4d084"}, + {file = "hiredis-3.0.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:6eecb343c70629f5af55a8b3e53264e44fa04e155ef7989de13668a0cb102a90"}, + {file = "hiredis-3.0.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:c3fdad75e7837a475900a1d3a5cc09aa024293c3b0605155da2d42f41bc0e482"}, + {file = "hiredis-3.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:8854969e7480e8d61ed7549eb232d95082a743e94138d98d7222ba4e9f7ecacd"}, + {file = "hiredis-3.0.0-cp38-cp38-win32.whl", hash = "sha256:f114a6c86edbf17554672b050cce72abf489fe58d583c7921904d5f1c9691605"}, + {file = "hiredis-3.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:7d99b91e42217d7b4b63354b15b41ce960e27d216783e04c4a350224d55842a4"}, + {file = "hiredis-3.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:4c6efcbb5687cf8d2aedcc2c3ed4ac6feae90b8547427d417111194873b66b06"}, + {file = "hiredis-3.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5b5cff42a522a0d81c2ae7eae5e56d0ee7365e0c4ad50c4de467d8957aff4414"}, + {file = "hiredis-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:82f794d564f4bc76b80c50b03267fe5d6589e93f08e66b7a2f674faa2fa76ebc"}, + {file = "hiredis-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7a4c1791d7aa7e192f60fe028ae409f18ccdd540f8b1e6aeb0df7816c77e4a4"}, + {file = "hiredis-3.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2537b2cd98192323fce4244c8edbf11f3cac548a9d633dbbb12b48702f379f4"}, + {file = "hiredis-3.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fed69bbaa307040c62195a269f82fc3edf46b510a17abb6b30a15d7dab548df"}, + {file = "hiredis-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869f6d5537d243080f44253491bb30aa1ec3c21754003b3bddeadedeb65842b0"}, + {file = "hiredis-3.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d435ae89073d7cd51e6b6bf78369c412216261c9c01662e7008ff00978153729"}, + {file = "hiredis-3.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:204b79b30a0e6be0dc2301a4d385bb61472809f09c49f400497f1cdd5a165c66"}, + {file = "hiredis-3.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3ea635101b739c12effd189cc19b2671c268abb03013fd1f6321ca29df3ca625"}, + {file = "hiredis-3.0.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:f359175197fd833c8dd7a8c288f1516be45415bb5c939862ab60c2918e1e1943"}, + {file = "hiredis-3.0.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ac6d929cb33dd12ad3424b75725975f0a54b5b12dbff95f2a2d660c510aa106d"}, + {file = "hiredis-3.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:100431e04d25a522ef2c3b94f294c4219c4de3bfc7d557b6253296145a144c11"}, + {file = "hiredis-3.0.0-cp39-cp39-win32.whl", hash = "sha256:e1a9c14ae9573d172dc050a6f63a644457df5d01ec4d35a6a0f097f812930f83"}, + {file = "hiredis-3.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:54a6dd7b478e6eb01ce15b3bb5bf771e108c6c148315bf194eb2ab776a3cac4d"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:50da7a9edf371441dfcc56288d790985ee9840d982750580710a9789b8f4a290"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b285ef6bf1581310b0d5e8f6ce64f790a1c40e89c660e1320b35f7515433672"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dcfa684966f25b335072115de2f920228a3c2caf79d4bfa2b30f6e4f674a948"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a41be8af1fd78ca97bc948d789a09b730d1e7587d07ca53af05758f31f4b985d"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:038756db735e417ab36ee6fd7725ce412385ed2bd0767e8179a4755ea11b804f"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fcecbd39bd42cef905c0b51c9689c39d0cc8b88b1671e7f40d4fb213423aef3a"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a131377493a59fb0f5eaeb2afd49c6540cafcfba5b0b3752bed707be9e7c4eaf"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d22c53f0ec5c18ecb3d92aa9420563b1c5d657d53f01356114978107b00b860"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8a91e9520fbc65a799943e5c970ffbcd67905744d8becf2e75f9f0a5e8414f0"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dc8043959b50141df58ab4f398e8ae84c6f9e673a2c9407be65fc789138f4a6"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51b99cfac514173d7b8abdfe10338193e8a0eccdfe1870b646009d2fb7cbe4b5"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:fa1fcad89d8a41d8dc10b1e54951ec1e161deabd84ed5a2c95c3c7213bdb3514"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:898636a06d9bf575d2c594129085ad6b713414038276a4bfc5db7646b8a5be78"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:466f836dbcf86de3f9692097a7a01533dc9926986022c6617dc364a402b265c5"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23142a8af92a13fc1e3f2ca1d940df3dcf2af1d176be41fe8d89e30a837a0b60"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:793c80a3d6b0b0e8196a2d5de37a08330125668c8012922685e17aa9108c33ac"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:467d28112c7faa29b7db743f40803d927c8591e9da02b6ce3d5fadc170a542a2"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:dc384874a719c767b50a30750f937af18842ee5e288afba95a5a3ed703b1515a"}, + {file = "hiredis-3.0.0.tar.gz", hash = "sha256:fed8581ae26345dea1f1e0d1a96e05041a727a45e7d8d459164583e23c6ac441"}, +] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "jinja2" +version = "3.1.4" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jmespath" +version = "1.0.1" +description = "JSON Matching Expressions" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, + {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, +] + +[[package]] +name = "jsonpath-ng" +version = "1.7.0" +description = "A final implementation of JSONPath for Python that aims to be standard compliant, including arithmetic and binary comparison operators and providing clear AST for metaprogramming." +optional = false +python-versions = "*" +files = [ + {file = "jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c"}, +] + +[package.dependencies] +ply = "*" + +[[package]] +name = "lark" +version = "1.2.2" +description = "a modern parsing library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c"}, + {file = "lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80"}, +] + +[package.extras] +atomic-cache = ["atomicwrites"] +interegular = ["interegular (>=0.3.1,<0.4.0)"] +nearley = ["js2py"] +regex = ["regex"] + +[[package]] +name = "markupsafe" +version = "3.0.2" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.9" +files = [ + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, +] + +[[package]] +name = "marshmallow" +version = "3.23.0" +description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +optional = false +python-versions = ">=3.9" +files = [ + {file = "marshmallow-3.23.0-py3-none-any.whl", hash = "sha256:82f20a2397834fe6d9611b241f2f7e7b680ed89c49f84728a1ad937be6b4bdf4"}, + {file = "marshmallow-3.23.0.tar.gz", hash = "sha256:98d8827a9f10c03d44ead298d2e99c6aea8197df18ccfad360dae7f89a50da2e"}, +] + +[package.dependencies] +packaging = ">=17.0" + +[package.extras] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] +docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.13)", "sphinx (==8.1.3)", "sphinx-issues (==5.0.0)", "sphinx-version-warning (==1.1.2)"] +tests = ["pytest", "simplejson"] + +[[package]] +name = "marshmallow-dataclass" +version = "8.7.1" +description = "Python library to convert dataclasses into marshmallow schemas." +optional = false +python-versions = ">=3.8" +files = [ + {file = "marshmallow_dataclass-8.7.1-py3-none-any.whl", hash = "sha256:405cbaaad9cea56b3de2f85eff32a9880e3bf849f652e7f6de7395e4b1ddc072"}, + {file = "marshmallow_dataclass-8.7.1.tar.gz", hash = "sha256:4fb80e1bf7b31ce1b192aa87ffadee2cedb3f6f37bb0042f8500b07e6fad59c4"}, +] + +[package.dependencies] +marshmallow = ">=3.18.0" +typeguard = ">=4.0,<5" +typing-inspect = ">=0.9.0" + +[package.extras] +dev = ["pre-commit (>=2.17,<3.0)", "pytest (>=5.4)", "pytest-mypy-plugins (>=1.2.0)", "sphinx"] +docs = ["sphinx"] +lint = ["pre-commit (>=2.17,<3.0)"] +tests = ["pytest (>=5.4)", "pytest-mypy-plugins (>=1.2.0)"] + +[[package]] +name = "marshmallow-oneofschema" +version = "3.1.1" +description = "marshmallow multiplexing schema" +optional = false +python-versions = ">=3.8" +files = [ + {file = "marshmallow_oneofschema-3.1.1-py3-none-any.whl", hash = "sha256:ff4cb2a488785ee8edd521a765682c2c80c78b9dc48894124531bdfa1ec9303b"}, + {file = "marshmallow_oneofschema-3.1.1.tar.gz", hash = "sha256:68b4a57d0281a04ac25d4eb7a4c5865a57090a0a8fd30fd6362c8e833ac6a6d9"}, +] + +[package.dependencies] +marshmallow = ">=3.0.0,<4.0.0" + +[package.extras] +dev = ["marshmallow-oneofschema[tests]", "pre-commit (>=3.5,<4.0)", "tox"] +tests = ["pytest"] + +[[package]] +name = "moto" +version = "4.2.14" +description = "" +optional = false +python-versions = ">=3.7" +files = [ + {file = "moto-4.2.14-py2.py3-none-any.whl", hash = "sha256:6d242dbbabe925bb385ddb6958449e5c827670b13b8e153ed63f91dbdb50372c"}, + {file = "moto-4.2.14.tar.gz", hash = "sha256:8f9263ca70b646f091edcc93e97cda864a542e6d16ed04066b1370ed217bd190"}, +] + +[package.dependencies] +boto3 = ">=1.9.201" +botocore = ">=1.12.201" +cryptography = ">=3.3.1" +Jinja2 = ">=2.10.1" +py-partiql-parser = {version = "0.5.0", optional = true, markers = "extra == \"s3\""} +python-dateutil = ">=2.1,<3.0.0" +PyYAML = {version = ">=5.1", optional = true, markers = "extra == \"s3\""} +requests = ">=2.5" +responses = ">=0.13.0" +werkzeug = ">=0.5,<2.2.0 || >2.2.0,<2.2.1 || >2.2.1" +xmltodict = "*" + +[package.extras] +all = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff (>=1.1.2)", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.0)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] +apigateway = ["PyYAML (>=5.1)", "ecdsa (!=0.15)", "openapi-spec-validator (>=0.5.0)", "python-jose[cryptography] (>=3.1.0,<4.0.0)"] +apigatewayv2 = ["PyYAML (>=5.1)"] +appsync = ["graphql-core"] +awslambda = ["docker (>=3.0.0)"] +batch = ["docker (>=3.0.0)"] +cloudformation = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.0)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] +cognitoidp = ["ecdsa (!=0.15)", "python-jose[cryptography] (>=3.1.0,<4.0.0)"] +dynamodb = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.0)"] +dynamodbstreams = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.0)"] +ec2 = ["sshpubkeys (>=3.1.0)"] +glue = ["pyparsing (>=3.0.7)"] +iotdata = ["jsondiff (>=1.1.2)"] +proxy = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=2.5.1)", "ecdsa (!=0.15)", "graphql-core", "jsondiff (>=1.1.2)", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.0)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] +resourcegroupstaggingapi = ["PyYAML (>=5.1)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.0)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)"] +s3 = ["PyYAML (>=5.1)", "py-partiql-parser (==0.5.0)"] +s3crc32c = ["PyYAML (>=5.1)", "crc32c", "py-partiql-parser (==0.5.0)"] +server = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "flask (!=2.2.0,!=2.2.1)", "flask-cors", "graphql-core", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.0)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] +ssm = ["PyYAML (>=5.1)"] +xray = ["aws-xray-sdk (>=0.93,!=0.96)", "setuptools"] + +[[package]] +name = "mpmath" +version = "1.3.0" +description = "Python library for arbitrary-precision floating-point arithmetic" +optional = false +python-versions = "*" +files = [ + {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"}, + {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"}, +] + +[package.extras] +develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"] +docs = ["sphinx"] +gmpy = ["gmpy2 (>=2.1.0a4)"] +tests = ["pytest (>=4.6)"] + +[[package]] +name = "multidict" +version = "6.1.0" +description = "multidict implementation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, + {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, + {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, + {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, + {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, + {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, + {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, + {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, + {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, + {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, + {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, + {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, + {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, + {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, + {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, +] + +[[package]] +name = "mypy" +version = "1.13.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, + {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, + {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, + {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, + {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, + {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, + {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, + {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, + {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, + {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, + {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, + {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, + {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, + {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, + {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, + {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, + {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, + {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, + {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, + {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, + {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +typing-extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "packaging" +version = "24.1" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, +] + +[[package]] +name = "pastel" +version = "0.2.1" +description = "Bring colors to your terminal." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364"}, + {file = "pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d"}, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "ply" +version = "3.11" +description = "Python Lex & Yacc" +optional = false +python-versions = "*" +files = [ + {file = "ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce"}, + {file = "ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"}, +] + +[[package]] +name = "poethepoet" +version = "0.26.1" +description = "A task runner that works well with poetry." +optional = false +python-versions = ">=3.8" +files = [ + {file = "poethepoet-0.26.1-py3-none-any.whl", hash = "sha256:aa43b443fec5d17d7e76771cccd484e5285805301721a74f059c483ad3276edd"}, + {file = "poethepoet-0.26.1.tar.gz", hash = "sha256:aaad8541f6072617a60bcff2562d00779b58b353bd0f1847b06d8d0f2b6dc192"}, +] + +[package.dependencies] +pastel = ">=0.2.1,<0.3.0" +tomli = ">=1.2.2" + +[package.extras] +poetry-plugin = ["poetry (>=1.0,<2.0)"] + +[[package]] +name = "poseidon-py" +version = "0.1.4" +description = "Python implementation of Poseidon hash" +optional = false +python-versions = ">=3.8" +files = [ + {file = "poseidon_py-0.1.4-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:8c2c81636b8389168181425f214da0e75f0b58df89241719373fcbba45c7b061"}, + {file = "poseidon_py-0.1.4-cp310-cp310-macosx_13_0_universal2.whl", hash = "sha256:6103971eb4c4e6f6a8b8d6d83a1e722771dbc04b29e94da7c202bc904efd1aed"}, + {file = "poseidon_py-0.1.4-cp310-cp310-macosx_14_0_universal2.whl", hash = "sha256:f1d269ef1dfaec4fe41226158cd914e8f74b75e937428d2c3de6c7c0cad8ab74"}, + {file = "poseidon_py-0.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:195a3b8acb9a3cb27c8a822619663f25f075057471f392ea18098ed83e920e10"}, + {file = "poseidon_py-0.1.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee3f2995b0023dec31dee06cc5d9c12f5aa1d0e8d7cca7fba7b005145c04afcc"}, + {file = "poseidon_py-0.1.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a08ce457a4a01a3f0c83a5556c21e2e95f86fd7ec594f73f72704c239a489b23"}, + {file = "poseidon_py-0.1.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71423bc1a8e422a1c82a5a786a0c01b8a024a00fc7cba883e01e85410d5bf275"}, + {file = "poseidon_py-0.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3c8c4e54a616451c3420cdce1a8e52b5ffcdc604f431a9c6a0f3cd50ef2e1292"}, + {file = "poseidon_py-0.1.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:1ab0d2d10cdb23be125a918e553bcc7cdd27c48c30339d8d8822757e918706b5"}, + {file = "poseidon_py-0.1.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e57cbdf75398a4faf7b71b2c2b7462975e81047c3a592a2654e0d020aab184e4"}, + {file = "poseidon_py-0.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:64bff7984b02a79d4f6864a2d9276ad52d96a933483293bdf5eb2e1558e0994d"}, + {file = "poseidon_py-0.1.4-cp310-cp310-win32.whl", hash = "sha256:0b5fe9eb6e21a8478ea739d3316b28bf2e8de49dc2d2305768b2f14be04bc143"}, + {file = "poseidon_py-0.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:fdabee5ffceb74836979a4497402dd0dd351ec387d3ecad5c627df8da8cf0f04"}, + {file = "poseidon_py-0.1.4-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:c1b8778a8b51d980b6780daf3fb11357942d941465f55ebf9eb0702638396b61"}, + {file = "poseidon_py-0.1.4-cp311-cp311-macosx_13_0_universal2.whl", hash = "sha256:89694d6ebaee6086f1d3e6223707acaeb4e9b32c61faf20c6c2685baaeba6326"}, + {file = "poseidon_py-0.1.4-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:7cc93c044a03d7067d37c79a697a81562ae5899bd0150bf496520d418a4a774e"}, + {file = "poseidon_py-0.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f36dc34704540f2a2bbe18e2f195bcd0fa504b93962bd72f535e37578f264385"}, + {file = "poseidon_py-0.1.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:24a3b643f7e071883686bcb8422558fc1cf485b61a26a028554d60713cdd9aea"}, + {file = "poseidon_py-0.1.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12237601c95127c0cb8875e81c04f26720069aed544dfff499a473e86a63f14f"}, + {file = "poseidon_py-0.1.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b421fa3e01e0a072622dcc770635dd1aeb2d8a77d334d5af40ae54033587a1df"}, + {file = "poseidon_py-0.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:947164c40ef49b47e366b3b838edab9efb42e598a7f95483880e1b3b84536131"}, + {file = "poseidon_py-0.1.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:95724cc0f6708a097521f7193af20e62ee63b2927b9775bcbf42ed1ada0653ae"}, + {file = "poseidon_py-0.1.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:790a44a2858dc8bab9d80d9527a67232823c3fda2216cc4fb8e37775904b103b"}, + {file = "poseidon_py-0.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f658750b779ebd09b30c047d671e4e18e90cbc4ab7bb006dfb5c4468fd5b9f61"}, + {file = "poseidon_py-0.1.4-cp311-cp311-win32.whl", hash = "sha256:48e689782cefd5237fac1001df34c2750e707721d309d9811e0095d3139a47d2"}, + {file = "poseidon_py-0.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ecc75a778740fff3d4a3bc374fa9fe6868c08091ac199c43ef7f1d9e40c737c"}, + {file = "poseidon_py-0.1.4-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:0eef537ac31cbf195a170e696c9f5b6d2d13ce3a0da98f37cf03f0d855ae2be1"}, + {file = "poseidon_py-0.1.4-cp312-cp312-macosx_13_0_universal2.whl", hash = "sha256:446048c88e8ee97c569032171c7cb057b9c739d2985109c55eb234ce66cd2d16"}, + {file = "poseidon_py-0.1.4-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:91c259f85cd1b3a5f2d450a481d90bdd4b911d05bd6bcc51fd290d2fd7d66613"}, + {file = "poseidon_py-0.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b53d6eaecac2c7a37a66f7a55a451fe5abed0e317ebb26022e9937b43a54f8c9"}, + {file = "poseidon_py-0.1.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ac18854c6305d80f0ccb270b261eb278bbc21f055b43737a8b55726d4caee3a"}, + {file = "poseidon_py-0.1.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:53edc8142cca4fe56eb2e2451eb77165925e2d7df25186fd5ab5b7d813555381"}, + {file = "poseidon_py-0.1.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6880dc2461a2c7336abb7f4774971a053bc04169dbfce5e08feecefad4fd49c2"}, + {file = "poseidon_py-0.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:514bc3df634a4ca5621bc0ea60e253257f8cc7773e1d3701e5e8f36a35f4d0f3"}, + {file = "poseidon_py-0.1.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:76d7cdb3c4a744573627f8170f659236737218245d04a7ead00e74bfb48ab28a"}, + {file = "poseidon_py-0.1.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:8fa27f2797abdec641a26abb05fee82194ebb40fd4ded3fa385b8b143bef4d7f"}, + {file = "poseidon_py-0.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:53a78d0fcd1a7742f1d72ce9a2871790c0ae862dec62b18f58982c0ca07a3e79"}, + {file = "poseidon_py-0.1.4-cp312-cp312-win32.whl", hash = "sha256:1176e308c18ff878cc8763cb0dc03541d56775a75b8128f5da6d55ad041a6bd8"}, + {file = "poseidon_py-0.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:9efac87f378ceb64c2b2bad5a2bf8678459ce7ae7947c12326effc4a700fe9e5"}, + {file = "poseidon_py-0.1.4-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:d38726b1e330000a91fd01cce53c5ed6aaec030fa91f8c23d8a598eb630f6227"}, + {file = "poseidon_py-0.1.4-cp38-cp38-macosx_13_0_universal2.whl", hash = "sha256:026fd9b53c21e1ee9ca15c956e3650e15842f4e0f517580f7a645ac3c71b4b46"}, + {file = "poseidon_py-0.1.4-cp38-cp38-macosx_14_0_universal2.whl", hash = "sha256:f1940fae0aeb2aaa04abb71924c09b54cad845d273ec5a306c1ee27563efd3d3"}, + {file = "poseidon_py-0.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3021938f639c55d45584f8cb66d1d5a2bf50d98f2f536fa8ec9da63ff840631a"}, + {file = "poseidon_py-0.1.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcb8f9060de484c44c015c667527183cdf96f1f8e70df3e0c3e10a60900f81a0"}, + {file = "poseidon_py-0.1.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:06fc95034cd5a2843a06f0bcc9772ed8785c0092fccdc0516fb8c260bb77bf49"}, + {file = "poseidon_py-0.1.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7064ea9b2e4f15761ffdd477cc034cef715c4e0c69724f448d525bd5fceefdc"}, + {file = "poseidon_py-0.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ec15d4fdbdefc976340a18d3fe7525f8957ecd7552fd011dbda890b037aef28d"}, + {file = "poseidon_py-0.1.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:be89d40c36d815e7668321e2faea01ec2db434ab266685d67e8872c781ad6013"}, + {file = "poseidon_py-0.1.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:cfcca7b463d247f423f420dff6b151cc6bf23771d86b637c5da3b14f08b5268b"}, + {file = "poseidon_py-0.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7eae5e8036bbc4ea01a056aa2eb687fb5ca7d91adfc242fdc672391886063a9"}, + {file = "poseidon_py-0.1.4-cp38-cp38-win32.whl", hash = "sha256:96dbe49c2af157982f090dde7c66bc4490bfd16ec3d0ad709add40ba23c3dd71"}, + {file = "poseidon_py-0.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:baa43eed066e6985da5045dc1f0a432f60838582bfbfefe630ce2e506ac18acc"}, + {file = "poseidon_py-0.1.4-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:a3aaadec7f16739f7ec9084c19b344bc4d937689c00a22e371e7f02993ac9199"}, + {file = "poseidon_py-0.1.4-cp39-cp39-macosx_13_0_universal2.whl", hash = "sha256:dc812bd192be78b28a06124e847122969ecd7fe217c957a2f177f11225cb09e3"}, + {file = "poseidon_py-0.1.4-cp39-cp39-macosx_14_0_universal2.whl", hash = "sha256:3753cd12acde11192eb9e61e7308cc254e6323d24d6d9e55177d5b295cc3d2e6"}, + {file = "poseidon_py-0.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08deb5310f5f7d1aeff3b1ac3ed01cfae95be64adf9b4e6e7ef990d50f7348f6"}, + {file = "poseidon_py-0.1.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2cf8582f721410764b2da734b79be93123a32fc6b2710e78b36685514a8c6713"}, + {file = "poseidon_py-0.1.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abdc9f2580144887e3d10a63a00dcde7c9180ac7683fddf314581a32ecc70cba"}, + {file = "poseidon_py-0.1.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b39d3faae6164157a1b2ef0c6e5ef5658a7f48df18c6c090998c566b8447603"}, + {file = "poseidon_py-0.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:841ddcc7d7be6fde7b8927bb6cd47fedd8e8f83b761c95ee7a686f1d794df6b8"}, + {file = "poseidon_py-0.1.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f06638fe92366bc99a2badf0ec052b02e3b89d79cc2ef400864707701c3919a6"}, + {file = "poseidon_py-0.1.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:9c586a42871ddc1c9af22e15825f250152b961cf3a7f1144faed10589d1aa505"}, + {file = "poseidon_py-0.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4a0caf2fa878cc2b7f4781e7f2574c65231b422257addca64d146b34bc15a7ad"}, + {file = "poseidon_py-0.1.4-cp39-cp39-win32.whl", hash = "sha256:d14aa6c9d76279e46eb6fde66e3e2629e3e461069dd76644b65c5ebed69114c8"}, + {file = "poseidon_py-0.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:e246d46d81bcd465b399c5d7663ef59b31fe0acd3966253cbb53e12508b41d80"}, + {file = "poseidon_py-0.1.4.tar.gz", hash = "sha256:416139d80931c85fd117cbc5b47d2eb1daf25e52acd77b6dd889c4820592a479"}, +] + +[[package]] +name = "pragma-sdk" +version = "2.1.4" +description = "Core package for rollup-native Pragma Oracle" +optional = false +python-versions = ">=3.11,<3.13" +files = [] +develop = true + +[package.dependencies] +aioresponses = "^0.7.4" +deprecated = "^1.2.14" +pydantic = "^2.7.4" +python-dotenv = "^1.0.0" +pyyaml = "^6.0.1" +redis = {version = "^5.0.7", extras = ["hiredis"]} +requests-mock = "^1.11.0" +"starknet.py" = "0.23.0" +typer = "0.6.1" + +[package.extras] +docs = [] + +[package.source] +type = "directory" +url = "../pragma-sdk" + +[[package]] +name = "pragma-utils" +version = "2.1.4" +description = "Utils functions shared accross Pragma python packages." +optional = false +python-versions = ">=3.11,<3.13" +files = [] +develop = true + +[package.dependencies] +boto3 = "^1.28.61" +moto = {version = "^4.2.5", extras = ["s3", "secretsmanager"]} +pydantic = "^2.7.4" + +[package.source] +type = "directory" +url = "../pragma-utils" + +[[package]] +name = "propcache" +version = "0.2.0" +description = "Accelerated property cache" +optional = false +python-versions = ">=3.8" +files = [ + {file = "propcache-0.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c5869b8fd70b81835a6f187c5fdbe67917a04d7e52b6e7cc4e5fe39d55c39d58"}, + {file = "propcache-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:952e0d9d07609d9c5be361f33b0d6d650cd2bae393aabb11d9b719364521984b"}, + {file = "propcache-0.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:33ac8f098df0585c0b53009f039dfd913b38c1d2edafed0cedcc0c32a05aa110"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e48e8875e6c13909c800fa344cd54cc4b2b0db1d5f911f840458a500fde2c2"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:388f3217649d6d59292b722d940d4d2e1e6a7003259eb835724092a1cca0203a"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f571aea50ba5623c308aa146eb650eebf7dbe0fd8c5d946e28343cb3b5aad577"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dfafb44f7bb35c0c06eda6b2ab4bfd58f02729e7c4045e179f9a861b07c9850"}, + {file = "propcache-0.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3ebe9a75be7ab0b7da2464a77bb27febcb4fab46a34f9288f39d74833db7f61"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d2f0d0f976985f85dfb5f3d685697ef769faa6b71993b46b295cdbbd6be8cc37"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a3dc1a4b165283bd865e8f8cb5f0c64c05001e0718ed06250d8cac9bec115b48"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e0f07b42d2a50c7dd2d8675d50f7343d998c64008f1da5fef888396b7f84630"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e63e3e1e0271f374ed489ff5ee73d4b6e7c60710e1f76af5f0e1a6117cd26394"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:56bb5c98f058a41bb58eead194b4db8c05b088c93d94d5161728515bd52b052b"}, + {file = "propcache-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7665f04d0c7f26ff8bb534e1c65068409bf4687aa2534faf7104d7182debb336"}, + {file = "propcache-0.2.0-cp310-cp310-win32.whl", hash = "sha256:7cf18abf9764746b9c8704774d8b06714bcb0a63641518a3a89c7f85cc02c2ad"}, + {file = "propcache-0.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:cfac69017ef97db2438efb854edf24f5a29fd09a536ff3a992b75990720cdc99"}, + {file = "propcache-0.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:63f13bf09cc3336eb04a837490b8f332e0db41da66995c9fd1ba04552e516354"}, + {file = "propcache-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608cce1da6f2672a56b24a015b42db4ac612ee709f3d29f27a00c943d9e851de"}, + {file = "propcache-0.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:466c219deee4536fbc83c08d09115249db301550625c7fef1c5563a584c9bc87"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc2db02409338bf36590aa985a461b2c96fce91f8e7e0f14c50c5fcc4f229016"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6ed8db0a556343d566a5c124ee483ae113acc9a557a807d439bcecc44e7dfbb"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91997d9cb4a325b60d4e3f20967f8eb08dfcb32b22554d5ef78e6fd1dda743a2"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c7dde9e533c0a49d802b4f3f218fa9ad0a1ce21f2c2eb80d5216565202acab4"}, + {file = "propcache-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffcad6c564fe6b9b8916c1aefbb37a362deebf9394bd2974e9d84232e3e08504"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:97a58a28bcf63284e8b4d7b460cbee1edaab24634e82059c7b8c09e65284f178"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:945db8ee295d3af9dbdbb698cce9bbc5c59b5c3fe328bbc4387f59a8a35f998d"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:39e104da444a34830751715f45ef9fc537475ba21b7f1f5b0f4d71a3b60d7fe2"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c5ecca8f9bab618340c8e848d340baf68bcd8ad90a8ecd7a4524a81c1764b3db"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c436130cc779806bdf5d5fae0d848713105472b8566b75ff70048c47d3961c5b"}, + {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:191db28dc6dcd29d1a3e063c3be0b40688ed76434622c53a284e5427565bbd9b"}, + {file = "propcache-0.2.0-cp311-cp311-win32.whl", hash = "sha256:5f2564ec89058ee7c7989a7b719115bdfe2a2fb8e7a4543b8d1c0cc4cf6478c1"}, + {file = "propcache-0.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6e2e54267980349b723cff366d1e29b138b9a60fa376664a157a342689553f71"}, + {file = "propcache-0.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ee7606193fb267be4b2e3b32714f2d58cad27217638db98a60f9efb5efeccc2"}, + {file = "propcache-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:91ee8fc02ca52e24bcb77b234f22afc03288e1dafbb1f88fe24db308910c4ac7"}, + {file = "propcache-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e900bad2a8456d00a113cad8c13343f3b1f327534e3589acc2219729237a2e8"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f52a68c21363c45297aca15561812d542f8fc683c85201df0bebe209e349f793"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e41d67757ff4fbc8ef2af99b338bfb955010444b92929e9e55a6d4dcc3c4f09"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a64e32f8bd94c105cc27f42d3b658902b5bcc947ece3c8fe7bc1b05982f60e89"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55346705687dbd7ef0d77883ab4f6fabc48232f587925bdaf95219bae072491e"}, + {file = "propcache-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00181262b17e517df2cd85656fcd6b4e70946fe62cd625b9d74ac9977b64d8d9"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6994984550eaf25dd7fc7bd1b700ff45c894149341725bb4edc67f0ffa94efa4"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:56295eb1e5f3aecd516d91b00cfd8bf3a13991de5a479df9e27dd569ea23959c"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:439e76255daa0f8151d3cb325f6dd4a3e93043e6403e6491813bcaaaa8733887"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f6475a1b2ecb310c98c28d271a30df74f9dd436ee46d09236a6b750a7599ce57"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3444cdba6628accf384e349014084b1cacd866fbb88433cd9d279d90a54e0b23"}, + {file = "propcache-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a9d9b4d0a9b38d1c391bb4ad24aa65f306c6f01b512e10a8a34a2dc5675d348"}, + {file = "propcache-0.2.0-cp312-cp312-win32.whl", hash = "sha256:69d3a98eebae99a420d4b28756c8ce6ea5a29291baf2dc9ff9414b42676f61d5"}, + {file = "propcache-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad9c9b99b05f163109466638bd30ada1722abb01bbb85c739c50b6dc11f92dc3"}, + {file = "propcache-0.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ecddc221a077a8132cf7c747d5352a15ed763b674c0448d811f408bf803d9ad7"}, + {file = "propcache-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0e53cb83fdd61cbd67202735e6a6687a7b491c8742dfc39c9e01e80354956763"}, + {file = "propcache-0.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92fe151145a990c22cbccf9ae15cae8ae9eddabfc949a219c9f667877e40853d"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a21ef516d36909931a2967621eecb256018aeb11fc48656e3257e73e2e247a"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f88a4095e913f98988f5b338c1d4d5d07dbb0b6bad19892fd447484e483ba6b"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a5b3bb545ead161be780ee85a2b54fdf7092815995661947812dde94a40f6fb"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67aeb72e0f482709991aa91345a831d0b707d16b0257e8ef88a2ad246a7280bf"}, + {file = "propcache-0.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c997f8c44ec9b9b0bcbf2d422cc00a1d9b9c681f56efa6ca149a941e5560da2"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a66df3d4992bc1d725b9aa803e8c5a66c010c65c741ad901e260ece77f58d2f"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3ebbcf2a07621f29638799828b8d8668c421bfb94c6cb04269130d8de4fb7136"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1235c01ddaa80da8235741e80815ce381c5267f96cc49b1477fdcf8c047ef325"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3947483a381259c06921612550867b37d22e1df6d6d7e8361264b6d037595f44"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d5bed7f9805cc29c780f3aee05de3262ee7ce1f47083cfe9f77471e9d6777e83"}, + {file = "propcache-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4a91d44379f45f5e540971d41e4626dacd7f01004826a18cb048e7da7e96544"}, + {file = "propcache-0.2.0-cp313-cp313-win32.whl", hash = "sha256:f902804113e032e2cdf8c71015651c97af6418363bea8d78dc0911d56c335032"}, + {file = "propcache-0.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:8f188cfcc64fb1266f4684206c9de0e80f54622c3f22a910cbd200478aeae61e"}, + {file = "propcache-0.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:53d1bd3f979ed529f0805dd35ddaca330f80a9a6d90bc0121d2ff398f8ed8861"}, + {file = "propcache-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:83928404adf8fb3d26793665633ea79b7361efa0287dfbd372a7e74311d51ee6"}, + {file = "propcache-0.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:77a86c261679ea5f3896ec060be9dc8e365788248cc1e049632a1be682442063"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:218db2a3c297a3768c11a34812e63b3ac1c3234c3a086def9c0fee50d35add1f"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7735e82e3498c27bcb2d17cb65d62c14f1100b71723b68362872bca7d0913d90"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:20a617c776f520c3875cf4511e0d1db847a076d720714ae35ffe0df3e440be68"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67b69535c870670c9f9b14a75d28baa32221d06f6b6fa6f77a0a13c5a7b0a5b9"}, + {file = "propcache-0.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4569158070180c3855e9c0791c56be3ceeb192defa2cdf6a3f39e54319e56b89"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:db47514ffdbd91ccdc7e6f8407aac4ee94cc871b15b577c1c324236b013ddd04"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:2a60ad3e2553a74168d275a0ef35e8c0a965448ffbc3b300ab3a5bb9956c2162"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:662dd62358bdeaca0aee5761de8727cfd6861432e3bb828dc2a693aa0471a563"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:25a1f88b471b3bc911d18b935ecb7115dff3a192b6fef46f0bfaf71ff4f12418"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:f60f0ac7005b9f5a6091009b09a419ace1610e163fa5deaba5ce3484341840e7"}, + {file = "propcache-0.2.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:74acd6e291f885678631b7ebc85d2d4aec458dd849b8c841b57ef04047833bed"}, + {file = "propcache-0.2.0-cp38-cp38-win32.whl", hash = "sha256:d9b6ddac6408194e934002a69bcaadbc88c10b5f38fb9307779d1c629181815d"}, + {file = "propcache-0.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:676135dcf3262c9c5081cc8f19ad55c8a64e3f7282a21266d05544450bffc3a5"}, + {file = "propcache-0.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:25c8d773a62ce0451b020c7b29a35cfbc05de8b291163a7a0f3b7904f27253e6"}, + {file = "propcache-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:375a12d7556d462dc64d70475a9ee5982465fbb3d2b364f16b86ba9135793638"}, + {file = "propcache-0.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1ec43d76b9677637a89d6ab86e1fef70d739217fefa208c65352ecf0282be957"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f45eec587dafd4b2d41ac189c2156461ebd0c1082d2fe7013571598abb8505d1"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc092ba439d91df90aea38168e11f75c655880c12782facf5cf9c00f3d42b562"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa1076244f54bb76e65e22cb6910365779d5c3d71d1f18b275f1dfc7b0d71b4d"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:682a7c79a2fbf40f5dbb1eb6bfe2cd865376deeac65acf9beb607505dced9e12"}, + {file = "propcache-0.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e40876731f99b6f3c897b66b803c9e1c07a989b366c6b5b475fafd1f7ba3fb8"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:363ea8cd3c5cb6679f1c2f5f1f9669587361c062e4899fce56758efa928728f8"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:140fbf08ab3588b3468932974a9331aff43c0ab8a2ec2c608b6d7d1756dbb6cb"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e70fac33e8b4ac63dfc4c956fd7d85a0b1139adcfc0d964ce288b7c527537fea"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:b33d7a286c0dc1a15f5fc864cc48ae92a846df287ceac2dd499926c3801054a6"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f6d5749fdd33d90e34c2efb174c7e236829147a2713334d708746e94c4bde40d"}, + {file = "propcache-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22aa8f2272d81d9317ff5756bb108021a056805ce63dd3630e27d042c8092798"}, + {file = "propcache-0.2.0-cp39-cp39-win32.whl", hash = "sha256:73e4b40ea0eda421b115248d7e79b59214411109a5bc47d0d48e4c73e3b8fcf9"}, + {file = "propcache-0.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:9517d5e9e0731957468c29dbfd0f976736a0e55afaea843726e887f36fe017df"}, + {file = "propcache-0.2.0-py3-none-any.whl", hash = "sha256:2ccc28197af5313706511fab3a8b66dcd6da067a1331372c82ea1cb74285e036"}, + {file = "propcache-0.2.0.tar.gz", hash = "sha256:df81779732feb9d01e5d513fad0122efb3d53bbc75f61b2a4f29a020bc985e70"}, +] + +[[package]] +name = "py-partiql-parser" +version = "0.5.0" +description = "Pure Python PartiQL Parser" +optional = false +python-versions = "*" +files = [ + {file = "py-partiql-parser-0.5.0.tar.gz", hash = "sha256:427a662e87d51a0a50150fc8b75c9ebb4a52d49129684856c40c88b8c8e027e4"}, + {file = "py_partiql_parser-0.5.0-py3-none-any.whl", hash = "sha256:dc454c27526adf62deca5177ea997bf41fac4fd109c5d4c8d81f984de738ba8f"}, +] + +[package.extras] +dev = ["black (==22.6.0)", "flake8", "mypy", "pytest"] + +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + +[[package]] +name = "pycryptodome" +version = "3.21.0" +description = "Cryptographic library for Python" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "pycryptodome-3.21.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:dad9bf36eda068e89059d1f07408e397856be9511d7113ea4b586642a429a4fd"}, + {file = "pycryptodome-3.21.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:a1752eca64c60852f38bb29e2c86fca30d7672c024128ef5d70cc15868fa10f4"}, + {file = "pycryptodome-3.21.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:3ba4cc304eac4d4d458f508d4955a88ba25026890e8abff9b60404f76a62c55e"}, + {file = "pycryptodome-3.21.0-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cb087b8612c8a1a14cf37dd754685be9a8d9869bed2ffaaceb04850a8aeef7e"}, + {file = "pycryptodome-3.21.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:26412b21df30b2861424a6c6d5b1d8ca8107612a4cfa4d0183e71c5d200fb34a"}, + {file = "pycryptodome-3.21.0-cp27-cp27m-win32.whl", hash = "sha256:cc2269ab4bce40b027b49663d61d816903a4bd90ad88cb99ed561aadb3888dd3"}, + {file = "pycryptodome-3.21.0-cp27-cp27m-win_amd64.whl", hash = "sha256:0fa0a05a6a697ccbf2a12cec3d6d2650b50881899b845fac6e87416f8cb7e87d"}, + {file = "pycryptodome-3.21.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6cce52e196a5f1d6797ff7946cdff2038d3b5f0aba4a43cb6bf46b575fd1b5bb"}, + {file = "pycryptodome-3.21.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:a915597ffccabe902e7090e199a7bf7a381c5506a747d5e9d27ba55197a2c568"}, + {file = "pycryptodome-3.21.0-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e74c522d630766b03a836c15bff77cb657c5fdf098abf8b1ada2aebc7d0819"}, + {file = "pycryptodome-3.21.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:a3804675283f4764a02db05f5191eb8fec2bb6ca34d466167fc78a5f05bbe6b3"}, + {file = "pycryptodome-3.21.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2480ec2c72438430da9f601ebc12c518c093c13111a5c1644c82cdfc2e50b1e4"}, + {file = "pycryptodome-3.21.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:de18954104667f565e2fbb4783b56667f30fb49c4d79b346f52a29cb198d5b6b"}, + {file = "pycryptodome-3.21.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de4b7263a33947ff440412339cb72b28a5a4c769b5c1ca19e33dd6cd1dcec6e"}, + {file = "pycryptodome-3.21.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0714206d467fc911042d01ea3a1847c847bc10884cf674c82e12915cfe1649f8"}, + {file = "pycryptodome-3.21.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d85c1b613121ed3dbaa5a97369b3b757909531a959d229406a75b912dd51dd1"}, + {file = "pycryptodome-3.21.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:8898a66425a57bcf15e25fc19c12490b87bd939800f39a03ea2de2aea5e3611a"}, + {file = "pycryptodome-3.21.0-cp36-abi3-musllinux_1_2_i686.whl", hash = "sha256:932c905b71a56474bff8a9c014030bc3c882cee696b448af920399f730a650c2"}, + {file = "pycryptodome-3.21.0-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:18caa8cfbc676eaaf28613637a89980ad2fd96e00c564135bf90bc3f0b34dd93"}, + {file = "pycryptodome-3.21.0-cp36-abi3-win32.whl", hash = "sha256:280b67d20e33bb63171d55b1067f61fbd932e0b1ad976b3a184303a3dad22764"}, + {file = "pycryptodome-3.21.0-cp36-abi3-win_amd64.whl", hash = "sha256:b7aa25fc0baa5b1d95b7633af4f5f1838467f1815442b22487426f94e0d66c53"}, + {file = "pycryptodome-3.21.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:2cb635b67011bc147c257e61ce864879ffe6d03342dc74b6045059dfbdedafca"}, + {file = "pycryptodome-3.21.0-pp27-pypy_73-win32.whl", hash = "sha256:4c26a2f0dc15f81ea3afa3b0c87b87e501f235d332b7f27e2225ecb80c0b1cdd"}, + {file = "pycryptodome-3.21.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d5ebe0763c982f069d3877832254f64974139f4f9655058452603ff559c482e8"}, + {file = "pycryptodome-3.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ee86cbde706be13f2dec5a42b52b1c1d1cbb90c8e405c68d0755134735c8dc6"}, + {file = "pycryptodome-3.21.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fd54003ec3ce4e0f16c484a10bc5d8b9bd77fa662a12b85779a2d2d85d67ee0"}, + {file = "pycryptodome-3.21.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5dfafca172933506773482b0e18f0cd766fd3920bd03ec85a283df90d8a17bc6"}, + {file = "pycryptodome-3.21.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:590ef0898a4b0a15485b05210b4a1c9de8806d3ad3d47f74ab1dc07c67a6827f"}, + {file = "pycryptodome-3.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35e442630bc4bc2e1878482d6f59ea22e280d7121d7adeaedba58c23ab6386b"}, + {file = "pycryptodome-3.21.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff99f952db3db2fbe98a0b355175f93ec334ba3d01bbde25ad3a5a33abc02b58"}, + {file = "pycryptodome-3.21.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8acd7d34af70ee63f9a849f957558e49a98f8f1634f86a59d2be62bb8e93f71c"}, + {file = "pycryptodome-3.21.0.tar.gz", hash = "sha256:f7787e0d469bdae763b876174cf2e6c0f7be79808af26b1da96f1a64bcf47297"}, +] + +[[package]] +name = "pydantic" +version = "2.9.2" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.23.4" +typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.23.4" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pytest" +version = "7.4.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.21.2" +description = "Pytest support for asyncio" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest_asyncio-0.21.2-py3-none-any.whl", hash = "sha256:ab664c88bb7998f711d8039cacd4884da6430886ae8bbd4eded552ed2004f16b"}, + {file = "pytest_asyncio-0.21.2.tar.gz", hash = "sha256:d67738fc232b94b326b9d060750beb16e0074210b98dd8b58a5239fa2a154f45"}, +] + +[package.dependencies] +pytest = ">=7.0.0" + +[package.extras] +docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1.0)"] +testing = ["coverage (>=6.2)", "flaky (>=3.5.0)", "hypothesis (>=5.7.1)", "mypy (>=0.931)", "pytest-trio (>=0.7.0)"] + +[[package]] +name = "pytest-cov" +version = "4.1.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, + {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, +] + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] + +[[package]] +name = "pytest-mock" +version = "3.14.0" +description = "Thin-wrapper around the mock package for easier use with pytest" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, + {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, +] + +[package.dependencies] +pytest = ">=6.2.5" + +[package.extras] +dev = ["pre-commit", "pytest-asyncio", "tox"] + +[[package]] +name = "pytest-rerunfailures" +version = "12.0" +description = "pytest plugin to re-run tests to eliminate flaky failures" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-rerunfailures-12.0.tar.gz", hash = "sha256:784f462fa87fe9bdf781d0027d856b47a4bfe6c12af108f6bd887057a917b48e"}, + {file = "pytest_rerunfailures-12.0-py3-none-any.whl", hash = "sha256:9a1afd04e21b8177faf08a9bbbf44de7a0fe3fc29f8ddbe83b9684bd5f8f92a9"}, +] + +[package.dependencies] +packaging = ">=17.1" +pytest = ">=6.2" + +[[package]] +name = "pytest-xdist" +version = "3.6.1" +description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7"}, + {file = "pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d"}, +] + +[package.dependencies] +execnet = ">=2.1" +pytest = ">=7.0.0" + +[package.extras] +psutil = ["psutil (>=3.0)"] +setproctitle = ["setproctitle"] +testing = ["filelock"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-dotenv" +version = "1.0.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "pywin32" +version = "306" +description = "Python for Window Extensions" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, + {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, + {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, + {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, + {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, + {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, + {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, + {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, + {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, + {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, + {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, + {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, + {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, + {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "redis" +version = "5.2.0" +description = "Python client for Redis database and key-value store" +optional = false +python-versions = ">=3.8" +files = [ + {file = "redis-5.2.0-py3-none-any.whl", hash = "sha256:ae174f2bb3b1bf2b09d54bf3e51fbc1469cf6c10aa03e21141f51969801a7897"}, + {file = "redis-5.2.0.tar.gz", hash = "sha256:0b1087665a771b1ff2e003aa5bdd354f15a70c9e25d5a7dbf9c722c16528a7b0"}, +] + +[package.dependencies] +async-timeout = {version = ">=4.0.3", markers = "python_full_version < \"3.11.3\""} +hiredis = {version = ">=3.0.0", optional = true, markers = "extra == \"hiredis\""} + +[package.extras] +hiredis = ["hiredis (>=3.0.0)"] +ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==23.2.1)", "requests (>=2.31.0)"] + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "requests-mock" +version = "1.12.1" +description = "Mock out responses from the requests package" +optional = false +python-versions = ">=3.5" +files = [ + {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, + {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, +] + +[package.dependencies] +requests = ">=2.22,<3" + +[package.extras] +fixture = ["fixtures"] + +[[package]] +name = "responses" +version = "0.25.3" +description = "A utility library for mocking out the `requests` Python library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "responses-0.25.3-py3-none-any.whl", hash = "sha256:521efcbc82081ab8daa588e08f7e8a64ce79b91c39f6e62199b19159bea7dbcb"}, + {file = "responses-0.25.3.tar.gz", hash = "sha256:617b9247abd9ae28313d57a75880422d55ec63c29d33d629697590a034358dba"}, +] + +[package.dependencies] +pyyaml = "*" +requests = ">=2.30.0,<3.0" +urllib3 = ">=1.25.10,<3.0" + +[package.extras] +tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asyncio", "pytest-cov", "pytest-httpserver", "tomli", "tomli-w", "types-PyYAML", "types-requests"] + +[[package]] +name = "ruff" +version = "0.4.10" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.4.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5c2c4d0859305ac5a16310eec40e4e9a9dec5dcdfbe92697acd99624e8638dac"}, + {file = "ruff-0.4.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a79489607d1495685cdd911a323a35871abfb7a95d4f98fc6f85e799227ac46e"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1dd1681dfa90a41b8376a61af05cc4dc5ff32c8f14f5fe20dba9ff5deb80cd6"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c75c53bb79d71310dc79fb69eb4902fba804a81f374bc86a9b117a8d077a1784"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18238c80ee3d9100d3535d8eb15a59c4a0753b45cc55f8bf38f38d6a597b9739"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d8f71885bce242da344989cae08e263de29752f094233f932d4f5cfb4ef36a81"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:330421543bd3222cdfec481e8ff3460e8702ed1e58b494cf9d9e4bf90db52b9d"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e9b6fb3a37b772628415b00c4fc892f97954275394ed611056a4b8a2631365e"}, + {file = "ruff-0.4.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f54c481b39a762d48f64d97351048e842861c6662d63ec599f67d515cb417f6"}, + {file = "ruff-0.4.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:67fe086b433b965c22de0b4259ddfe6fa541c95bf418499bedb9ad5fb8d1c631"}, + {file = "ruff-0.4.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:acfaaab59543382085f9eb51f8e87bac26bf96b164839955f244d07125a982ef"}, + {file = "ruff-0.4.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3cea07079962b2941244191569cf3a05541477286f5cafea638cd3aa94b56815"}, + {file = "ruff-0.4.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:338a64ef0748f8c3a80d7f05785930f7965d71ca260904a9321d13be24b79695"}, + {file = "ruff-0.4.10-py3-none-win32.whl", hash = "sha256:ffe3cd2f89cb54561c62e5fa20e8f182c0a444934bf430515a4b422f1ab7b7ca"}, + {file = "ruff-0.4.10-py3-none-win_amd64.whl", hash = "sha256:67f67cef43c55ffc8cc59e8e0b97e9e60b4837c8f21e8ab5ffd5d66e196e25f7"}, + {file = "ruff-0.4.10-py3-none-win_arm64.whl", hash = "sha256:dd1fcee327c20addac7916ca4e2653fbbf2e8388d8a6477ce5b4e986b68ae6c0"}, + {file = "ruff-0.4.10.tar.gz", hash = "sha256:3aa4f2bc388a30d346c56524f7cacca85945ba124945fe489952aadb6b5cd804"}, +] + +[[package]] +name = "s3transfer" +version = "0.10.3" +description = "An Amazon S3 Transfer Manager" +optional = false +python-versions = ">=3.8" +files = [ + {file = "s3transfer-0.10.3-py3-none-any.whl", hash = "sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d"}, + {file = "s3transfer-0.10.3.tar.gz", hash = "sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c"}, +] + +[package.dependencies] +botocore = ">=1.33.2,<2.0a.0" + +[package.extras] +crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] + +[[package]] +name = "setuptools" +version = "70.3.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"}, + {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"}, +] + +[package.extras] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +optional = false +python-versions = "*" +files = [ + {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, + {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, +] + +[[package]] +name = "starknet-py" +version = "0.23.0" +description = "A python SDK for Starknet" +optional = false +python-versions = "<3.13,>=3.8" +files = [ + {file = "starknet_py-0.23.0.tar.gz", hash = "sha256:3dbab1a608e4bc67e646f3d096bcf346383da26472cfdb60409b5478c3432e39"}, +] + +[package.dependencies] +aiohttp = ">=3.8.4,<4.0.0" +asgiref = ">=3.4.1,<4.0.0" +crypto-cpp-py = "1.4.4" +eth-keyfile = ">=0.8.1,<0.9.0" +lark = ">=1.1.5,<2.0.0" +marshmallow = ">=3.15.0,<4.0.0" +marshmallow-dataclass = "<8.8.0" +marshmallow-oneofschema = "3.1.1" +poseidon-py = "0.1.4" +pycryptodome = ">=3.17,<4.0" +typing-extensions = ">=4.3.0,<5.0.0" + +[package.extras] +docs = ["enum-tools[sphinx] (==0.12.0)", "furo (>=2024.5.6,<2025.0.0)", "sphinx (>=4.3.1,<8.0.0)"] + +[[package]] +name = "sympy" +version = "1.11.1" +description = "Computer algebra system (CAS) in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sympy-1.11.1-py3-none-any.whl", hash = "sha256:938f984ee2b1e8eae8a07b884c8b7a1146010040fccddc6539c54f401c8f6fcf"}, + {file = "sympy-1.11.1.tar.gz", hash = "sha256:e32380dce63cb7c0108ed525570092fd45168bdae2faa17e528221ef72e88658"}, +] + +[package.dependencies] +mpmath = ">=0.19" + +[[package]] +name = "tomli" +version = "2.0.2" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, +] + +[[package]] +name = "toolz" +version = "1.0.0" +description = "List processing tools and functional utilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, + {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, +] + +[[package]] +name = "typeguard" +version = "4.3.0" +description = "Run-time type checker for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typeguard-4.3.0-py3-none-any.whl", hash = "sha256:4d24c5b39a117f8a895b9da7a9b3114f04eb63bade45a4492de49b175b6f7dfa"}, + {file = "typeguard-4.3.0.tar.gz", hash = "sha256:92ee6a0aec9135181eae6067ebd617fd9de8d75d714fb548728a4933b1dea651"}, +] + +[package.dependencies] +typing-extensions = ">=4.10.0" + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.3.0)"] +test = ["coverage[toml] (>=7)", "mypy (>=1.2.0)", "pytest (>=7)"] + +[[package]] +name = "typer" +version = "0.6.1" +description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +optional = false +python-versions = ">=3.6" +files = [ + {file = "typer-0.6.1-py3-none-any.whl", hash = "sha256:54b19e5df18654070a82f8c2aa1da456a4ac16a2a83e6dcd9f170e291c56338e"}, + {file = "typer-0.6.1.tar.gz", hash = "sha256:2d5720a5e63f73eaf31edaa15f6ab87f35f0690f8ca233017d7d23d743a91d73"}, +] + +[package.dependencies] +click = ">=7.1.1,<9.0.0" + +[package.extras] +all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"] +doc = ["mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)"] +test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<5.4.0)", "pytest-cov (>=2.10.0,<3.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<2.0.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] + +[[package]] +name = "types-deprecated" +version = "1.2.9.20240311" +description = "Typing stubs for Deprecated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-Deprecated-1.2.9.20240311.tar.gz", hash = "sha256:0680e89989a8142707de8103f15d182445a533c1047fd9b7e8c5459101e9b90a"}, + {file = "types_Deprecated-1.2.9.20240311-py3-none-any.whl", hash = "sha256:d7793aaf32ff8f7e49a8ac781de4872248e0694c4b75a7a8a186c51167463f9d"}, +] + +[[package]] +name = "types-pyyaml" +version = "6.0.12.20240917" +description = "Typing stubs for PyYAML" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-PyYAML-6.0.12.20240917.tar.gz", hash = "sha256:d1405a86f9576682234ef83bcb4e6fff7c9305c8b1fbad5e0bcd4f7dbdc9c587"}, + {file = "types_PyYAML-6.0.12.20240917-py3-none-any.whl", hash = "sha256:392b267f1c0fe6022952462bf5d6523f31e37f6cea49b14cee7ad634b6301570"}, +] + +[[package]] +name = "types-requests" +version = "2.32.0.20241016" +description = "Typing stubs for requests" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, + {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, +] + +[package.dependencies] +urllib3 = ">=2" + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "typing-inspect" +version = "0.9.0" +description = "Runtime inspection utilities for typing module." +optional = false +python-versions = "*" +files = [ + {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"}, + {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"}, +] + +[package.dependencies] +mypy-extensions = ">=0.3.0" +typing-extensions = ">=3.7.4" + +[[package]] +name = "urllib3" +version = "2.2.3" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "werkzeug" +version = "3.0.4" +description = "The comprehensive WSGI web application library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "werkzeug-3.0.4-py3-none-any.whl", hash = "sha256:02c9eb92b7d6c06f31a782811505d2157837cea66aaede3e217c7c27c039476c"}, + {file = "werkzeug-3.0.4.tar.gz", hash = "sha256:34f2371506b250df4d4f84bfe7b0921e4762525762bbd936614909fe25cd7306"}, +] + +[package.dependencies] +MarkupSafe = ">=2.1.1" + +[package.extras] +watchdog = ["watchdog (>=2.3)"] + +[[package]] +name = "wrapt" +version = "1.16.0" +description = "Module for decorators, wrappers and monkey patching." +optional = false +python-versions = ">=3.6" +files = [ + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, +] + +[[package]] +name = "xmltodict" +version = "0.14.2" +description = "Makes working with XML feel like you are working with JSON" +optional = false +python-versions = ">=3.6" +files = [ + {file = "xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac"}, + {file = "xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553"}, +] + +[[package]] +name = "yarl" +version = "1.16.0" +description = "Yet another URL library" +optional = false +python-versions = ">=3.9" +files = [ + {file = "yarl-1.16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32468f41242d72b87ab793a86d92f885355bcf35b3355aa650bfa846a5c60058"}, + {file = "yarl-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:234f3a3032b505b90e65b5bc6652c2329ea7ea8855d8de61e1642b74b4ee65d2"}, + {file = "yarl-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a0296040e5cddf074c7f5af4a60f3fc42c0237440df7bcf5183be5f6c802ed5"}, + {file = "yarl-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de6c14dd7c7c0badba48157474ea1f03ebee991530ba742d381b28d4f314d6f3"}, + {file = "yarl-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b140e532fe0266003c936d017c1ac301e72ee4a3fd51784574c05f53718a55d8"}, + {file = "yarl-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:019f5d58093402aa8f6661e60fd82a28746ad6d156f6c5336a70a39bd7b162b9"}, + {file = "yarl-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c42998fd1cbeb53cd985bff0e4bc25fbe55fd6eb3a545a724c1012d69d5ec84"}, + {file = "yarl-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c7c30fb38c300fe8140df30a046a01769105e4cf4282567a29b5cdb635b66c4"}, + {file = "yarl-1.16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e49e0fd86c295e743fd5be69b8b0712f70a686bc79a16e5268386c2defacaade"}, + {file = "yarl-1.16.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:b9ca7b9147eb1365c8bab03c003baa1300599575effad765e0b07dd3501ea9af"}, + {file = "yarl-1.16.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:27e11db3f1e6a51081a981509f75617b09810529de508a181319193d320bc5c7"}, + {file = "yarl-1.16.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8994c42f4ca25df5380ddf59f315c518c81df6a68fed5bb0c159c6cb6b92f120"}, + {file = "yarl-1.16.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:542fa8e09a581bcdcbb30607c7224beff3fdfb598c798ccd28a8184ffc18b7eb"}, + {file = "yarl-1.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2bd6a51010c7284d191b79d3b56e51a87d8e1c03b0902362945f15c3d50ed46b"}, + {file = "yarl-1.16.0-cp310-cp310-win32.whl", hash = "sha256:178ccb856e265174a79f59721031060f885aca428983e75c06f78aa24b91d929"}, + {file = "yarl-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe8bba2545427418efc1929c5c42852bdb4143eb8d0a46b09de88d1fe99258e7"}, + {file = "yarl-1.16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d8643975a0080f361639787415a038bfc32d29208a4bf6b783ab3075a20b1ef3"}, + {file = "yarl-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:676d96bafc8c2d0039cea0cd3fd44cee7aa88b8185551a2bb93354668e8315c2"}, + {file = "yarl-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d9525f03269e64310416dbe6c68d3b23e5d34aaa8f47193a1c45ac568cecbc49"}, + {file = "yarl-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b37d5ec034e668b22cf0ce1074d6c21fd2a08b90d11b1b73139b750a8b0dd97"}, + {file = "yarl-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f32c4cb7386b41936894685f6e093c8dfaf0960124d91fe0ec29fe439e201d0"}, + {file = "yarl-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b8e265a0545637492a7e12fd7038370d66c9375a61d88c5567d0e044ded9202"}, + {file = "yarl-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:789a3423f28a5fff46fbd04e339863c169ece97c827b44de16e1a7a42bc915d2"}, + {file = "yarl-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1d1f45e3e8d37c804dca99ab3cf4ab3ed2e7a62cd82542924b14c0a4f46d243"}, + {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:621280719c4c5dad4c1391160a9b88925bb8b0ff6a7d5af3224643024871675f"}, + {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:ed097b26f18a1f5ff05f661dc36528c5f6735ba4ce8c9645e83b064665131349"}, + {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2f1fe2b2e3ee418862f5ebc0c0083c97f6f6625781382f828f6d4e9b614eba9b"}, + {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:87dd10bc0618991c66cee0cc65fa74a45f4ecb13bceec3c62d78ad2e42b27a16"}, + {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4199db024b58a8abb2cfcedac7b1292c3ad421684571aeb622a02f242280e8d6"}, + {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:99a9dcd4b71dd5f5f949737ab3f356cfc058c709b4f49833aeffedc2652dac56"}, + {file = "yarl-1.16.0-cp311-cp311-win32.whl", hash = "sha256:a9394c65ae0ed95679717d391c862dece9afacd8fa311683fc8b4362ce8a410c"}, + {file = "yarl-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:5b9101f528ae0f8f65ac9d64dda2bb0627de8a50344b2f582779f32fda747c1d"}, + {file = "yarl-1.16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:4ffb7c129707dd76ced0a4a4128ff452cecf0b0e929f2668ea05a371d9e5c104"}, + {file = "yarl-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1a5e9d8ce1185723419c487758d81ac2bde693711947032cce600ca7c9cda7d6"}, + {file = "yarl-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d743e3118b2640cef7768ea955378c3536482d95550222f908f392167fe62059"}, + {file = "yarl-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26768342f256e6e3c37533bf9433f5f15f3e59e3c14b2409098291b3efaceacb"}, + {file = "yarl-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1b0796168b953bca6600c5f97f5ed407479889a36ad7d17183366260f29a6b9"}, + {file = "yarl-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:858728086914f3a407aa7979cab743bbda1fe2bdf39ffcd991469a370dd7414d"}, + {file = "yarl-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5570e6d47bcb03215baf4c9ad7bf7c013e56285d9d35013541f9ac2b372593e7"}, + {file = "yarl-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66ea8311422a7ba1fc79b4c42c2baa10566469fe5a78500d4e7754d6e6db8724"}, + {file = "yarl-1.16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:649bddcedee692ee8a9b7b6e38582cb4062dc4253de9711568e5620d8707c2a3"}, + {file = "yarl-1.16.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:3a91654adb7643cb21b46f04244c5a315a440dcad63213033826549fa2435f71"}, + {file = "yarl-1.16.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b439cae82034ade094526a8f692b9a2b5ee936452de5e4c5f0f6c48df23f8604"}, + {file = "yarl-1.16.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:571f781ae8ac463ce30bacebfaef2c6581543776d5970b2372fbe31d7bf31a07"}, + {file = "yarl-1.16.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:aa7943f04f36d6cafc0cf53ea89824ac2c37acbdb4b316a654176ab8ffd0f968"}, + {file = "yarl-1.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1a5cf32539373ff39d97723e39a9283a7277cbf1224f7aef0c56c9598b6486c3"}, + {file = "yarl-1.16.0-cp312-cp312-win32.whl", hash = "sha256:a5b6c09b9b4253d6a208b0f4a2f9206e511ec68dce9198e0fbec4f160137aa67"}, + {file = "yarl-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:1208ca14eed2fda324042adf8d6c0adf4a31522fa95e0929027cd487875f0240"}, + {file = "yarl-1.16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5ace0177520bd4caa99295a9b6fb831d0e9a57d8e0501a22ffaa61b4c024283"}, + {file = "yarl-1.16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7118bdb5e3ed81acaa2095cba7ec02a0fe74b52a16ab9f9ac8e28e53ee299732"}, + {file = "yarl-1.16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38fec8a2a94c58bd47c9a50a45d321ab2285ad133adefbbadf3012c054b7e656"}, + {file = "yarl-1.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8791d66d81ee45866a7bb15a517b01a2bcf583a18ebf5d72a84e6064c417e64b"}, + {file = "yarl-1.16.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cf936ba67bc6c734f3aa1c01391da74ab7fc046a9f8bbfa230b8393b90cf472"}, + {file = "yarl-1.16.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1aab176dd55b59f77a63b27cffaca67d29987d91a5b615cbead41331e6b7428"}, + {file = "yarl-1.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:995d0759004c08abd5d1b81300a91d18c8577c6389300bed1c7c11675105a44d"}, + {file = "yarl-1.16.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1bc22e00edeb068f71967ab99081e9406cd56dbed864fc3a8259442999d71552"}, + {file = "yarl-1.16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:35b4f7842154176523e0a63c9b871168c69b98065d05a4f637fce342a6a2693a"}, + {file = "yarl-1.16.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:7ace71c4b7a0c41f317ae24be62bb61e9d80838d38acb20e70697c625e71f120"}, + {file = "yarl-1.16.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8f639e3f5795a6568aa4f7d2ac6057c757dcd187593679f035adbf12b892bb00"}, + {file = "yarl-1.16.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:e8be3aff14f0120ad049121322b107f8a759be76a6a62138322d4c8a337a9e2c"}, + {file = "yarl-1.16.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:122d8e7986043d0549e9eb23c7fd23be078be4b70c9eb42a20052b3d3149c6f2"}, + {file = "yarl-1.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0fd9c227990f609c165f56b46107d0bc34553fe0387818c42c02f77974402c36"}, + {file = "yarl-1.16.0-cp313-cp313-win32.whl", hash = "sha256:595ca5e943baed31d56b33b34736461a371c6ea0038d3baec399949dd628560b"}, + {file = "yarl-1.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:921b81b8d78f0e60242fb3db615ea3f368827a76af095d5a69f1c3366db3f596"}, + {file = "yarl-1.16.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab2b2ac232110a1fdb0d3ffcd087783edd3d4a6ced432a1bf75caf7b7be70916"}, + {file = "yarl-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7f8713717a09acbfee7c47bfc5777e685539fefdd34fa72faf504c8be2f3df4e"}, + {file = "yarl-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cdcffe1dbcb4477d2b4202f63cd972d5baa155ff5a3d9e35801c46a415b7f71a"}, + {file = "yarl-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a91217208306d82357c67daeef5162a41a28c8352dab7e16daa82e3718852a7"}, + {file = "yarl-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ab3ed42c78275477ea8e917491365e9a9b69bb615cb46169020bd0aa5e2d6d3"}, + {file = "yarl-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:707ae579ccb3262dfaef093e202b4c3fb23c3810e8df544b1111bd2401fd7b09"}, + {file = "yarl-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad7a852d1cd0b8d8b37fc9d7f8581152add917a98cfe2ea6e241878795f917ae"}, + {file = "yarl-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3f1cc3d3d4dc574bebc9b387f6875e228ace5748a7c24f49d8f01ac1bc6c31b"}, + {file = "yarl-1.16.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5ff96da263740779b0893d02b718293cc03400c3a208fc8d8cd79d9b0993e532"}, + {file = "yarl-1.16.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:3d375a19ba2bfe320b6d873f3fb165313b002cef8b7cc0a368ad8b8a57453837"}, + {file = "yarl-1.16.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:62c7da0ad93a07da048b500514ca47b759459ec41924143e2ddb5d7e20fd3db5"}, + {file = "yarl-1.16.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:147b0fcd0ee33b4b5f6edfea80452d80e419e51b9a3f7a96ce98eaee145c1581"}, + {file = "yarl-1.16.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:504e1fe1cc4f170195320eb033d2b0ccf5c6114ce5bf2f617535c01699479bca"}, + {file = "yarl-1.16.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:bdcf667a5dec12a48f669e485d70c54189f0639c2157b538a4cffd24a853624f"}, + {file = "yarl-1.16.0-cp39-cp39-win32.whl", hash = "sha256:e9951afe6557c75a71045148890052cb942689ee4c9ec29f5436240e1fcc73b7"}, + {file = "yarl-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:7d7aaa8ff95d0840e289423e7dc35696c2b058d635f945bf05b5cd633146b027"}, + {file = "yarl-1.16.0-py3-none-any.whl", hash = "sha256:e6980a558d8461230c457218bd6c92dfc1d10205548215c2c21d79dc8d0a96f3"}, + {file = "yarl-1.16.0.tar.gz", hash = "sha256:b6f687ced5510a9a2474bbae96a4352e5ace5fa34dc44a217b0537fec1db00b4"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" +propcache = ">=0.2.0" + +[metadata] +lock-version = "2.0" +python-versions = ">=3.11,<3.13" +content-hash = "1bc3c8ea2903847c9da2e4786688b0769a9e21ee3a94cbf45ef52c9205804646" diff --git a/lp-pricer/poetry.toml b/lp-pricer/poetry.toml new file mode 100644 index 00000000..ab1033bd --- /dev/null +++ b/lp-pricer/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +in-project = true diff --git a/lp-pricer/pyproject.toml b/lp-pricer/pyproject.toml new file mode 100644 index 00000000..e1545075 --- /dev/null +++ b/lp-pricer/pyproject.toml @@ -0,0 +1,116 @@ +[tool.poetry] +name = "lp-pricer" +version = "1.0.0" +authors = ["Pragma "] +description = "Service used to publish LP Prices on-chain." +readme = "README.md" +homepage = "https://pragma.build" +repository = "https://github.com/Astraly-Labs/pragma-sdk" +documentation = "https://docs.pragma.build" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] +include = ["lp_pricer"] +packages = [{ include = "lp_pricer" }] + +[tool.poetry.scripts] +lp_pricer = 'lp_pricer.main:cli_entrypoint' + +[tool.poetry.dependencies] +python = ">=3.11,<3.13" +"starknet.py" = "0.23.0" +pragma-sdk = { path = "../pragma-sdk", develop = true } +pragma-utils = { path = "../pragma-utils", develop = true } +click = "^8.1.0" +pydantic = "^2.7.4" +redis = {version = "^5.0.7", extras = ["hiredis"]} + +[tool.poetry.group.dev.dependencies] +poethepoet = "^0.26.1" +ruff = "^0.4" +mypy = "^1.10" +coverage = "^7.2.1" +pytest = "^7.2.2" +pytest-asyncio = "^0.21.1" +pytest-mock = "^3.6.1" +pytest-xdist = "^3.2.1" +pytest-cov = "^4.0.0" +setuptools = "^70.1.0" +pytest-rerunfailures = "^12.0" +fakeredis = {version = "^2.23.3", extras=["json"]} + +[tool.poetry.group.typing.dependencies] +mypy = "^1.10" +types-requests = "^2.26.0" +types-deprecated = "^1.2.9" +types-pyyaml = "^6.0.12.20240311" + +[tool.poe.tasks] +format = "ruff format ." +format_check = "ruff format . --check" +lint = "ruff check ." +typecheck = "mypy lp_pricer" +test = "coverage run -m pytest -v tests/ -s" + +[tool.ruff] +exclude = [ + ".direnv", + ".eggs", + ".git", + ".github", + ".git-rewrite", + ".hg", + ".mypy_cache", + ".pyenv", + ".pytest_cache", + ".pytype", + ".ruff_cache", + ".venv", + ".vscode", + "__pypackages__", + "_build", + "build", + "site-packages", + "venv", + ".venv", +] +line-length = 100 +indent-width = 4 +target-version = "py312" + +[tool.ruff.lint] +select = ["E4", "E7", "E9", "F"] +fixable = ["ALL"] +unfixable = [] +dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" + +[tool.ruff.format] +quote-style = "double" +indent-style = "space" +skip-magic-trailing-comma = false +line-ending = "auto" + +[tool.mypy] +python_version = "3.12" +namespace_packages = true +explicit_package_bases = true +show_error_codes = true +warn_return_any = true +ignore_missing_imports = true +exclude = ["tests"] +mypy_path = ["../pragma-utils", "../pragma-sdk"] +enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"] + +[tool.poetry.build] +generate-setup-file = true + +[tool.coverage.run] +source = ["lp_pricer"] + +[tool.coverage.report] +omit = ["*_test.py", "tests/*"] +skip_empty = true + +[tool.poetry-monorepo.deps] diff --git a/lp-pricer/scripts/start_redis.sh b/lp-pricer/scripts/start_redis.sh new file mode 100644 index 00000000..593b47b8 --- /dev/null +++ b/lp-pricer/scripts/start_redis.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +docker run --name redis-lp-pricer -d -p 6379:6379 redis/redis-stack:latest + +if [ $? -eq 0 ]; then + echo "Redis container started successfully" +else + echo "Failed to start Redis container" +fi diff --git a/lp-pricer/tests/__init__.py b/lp-pricer/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lp-pricer/tests/integration/.gitkeep b/lp-pricer/tests/integration/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/lp-pricer/tests/integration/__init__.py b/lp-pricer/tests/integration/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lp-pricer/tests/unit/__init__.py b/lp-pricer/tests/unit/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lp-pricer/tests/unit/test_config.py b/lp-pricer/tests/unit/test_config.py new file mode 100644 index 00000000..64dd2d8c --- /dev/null +++ b/lp-pricer/tests/unit/test_config.py @@ -0,0 +1,85 @@ +import pytest +import yaml + +from typing import List + +from lp_pricer.configs.pools_config import PoolsConfig + + +@pytest.fixture +def sample_yaml_file(tmp_path): + """Create a temporary YAML file with test data.""" + content = { + "pool_addresses": [ + "0x1234567890abcdef1234567890abcdef12345678", + "0xabcdef1234567890abcdef1234567890abcdef12", + ] + } + yaml_file = tmp_path / "test_pools.yaml" + with open(yaml_file, "w") as f: + yaml.dump(content, f) + return yaml_file + + +@pytest.fixture +def invalid_yaml_file(tmp_path): + """Create a temporary YAML file with invalid data.""" + content = {"pool_addresses": ["invalid_address", "0xNOTHEX"]} + yaml_file = tmp_path / "invalid_pools.yaml" + with open(yaml_file, "w") as f: + yaml.dump(content, f) + return yaml_file + + +def test_pools_config_from_yaml(sample_yaml_file): + """Test successful creation of PoolsConfig from YAML file.""" + config = PoolsConfig.from_yaml(str(sample_yaml_file)) + assert isinstance(config, PoolsConfig) + assert len(config.pool_addresses) == 2 + assert config.pool_addresses[0] == "0x1234567890abcdef1234567890abcdef12345678" + assert config.pool_addresses[1] == "0xabcdef1234567890abcdef1234567890abcdef12" + + +def test_get_all_pools(sample_yaml_file): + """Test conversion of hex addresses to integers.""" + config = PoolsConfig.from_yaml(str(sample_yaml_file)) + pools = config.get_all_pools() + + assert isinstance(pools, List) + assert len(pools) == 2 + assert pools[0] == int("1234567890abcdef1234567890abcdef12345678", 16) + assert pools[1] == int("abcdef1234567890abcdef1234567890abcdef12", 16) + + +def test_invalid_hex_addresses(invalid_yaml_file): + """Test handling of invalid hex addresses.""" + config = PoolsConfig.from_yaml(str(invalid_yaml_file)) + with pytest.raises(ValueError): + config.get_all_pools() + + +def test_file_not_found(): + """Test handling of non-existent YAML file.""" + with pytest.raises(FileNotFoundError): + PoolsConfig.from_yaml("nonexistent_file.yaml") + + +def test_invalid_yaml_format(tmp_path): + """Test handling of malformed YAML file.""" + invalid_yaml = tmp_path / "invalid.yaml" + with open(invalid_yaml, "w") as f: + f.write("invalid: yaml: content: :") + + with pytest.raises(yaml.YAMLError): + PoolsConfig.from_yaml(str(invalid_yaml)) + + +def test_empty_pool_addresses(tmp_path): + """Test handling of empty pool addresses list.""" + content = {"pool_addresses": []} + yaml_file = tmp_path / "empty_pools.yaml" + with open(yaml_file, "w") as f: + yaml.dump(content, f) + + config = PoolsConfig.from_yaml(str(yaml_file)) + assert len(config.get_all_pools()) == 0 diff --git a/pragma-oracle b/pragma-oracle index eeb381b7..e3b597c0 160000 --- a/pragma-oracle +++ b/pragma-oracle @@ -1 +1 @@ -Subproject commit eeb381b787889221d1ed4dbef524bdd43e46ab47 +Subproject commit e3b597c0d0a715ed6315337415a423269c3d6cf6 diff --git a/pragma-sdk/poetry.lock b/pragma-sdk/poetry.lock index ce09f213..bd733c56 100644 --- a/pragma-sdk/poetry.lock +++ b/pragma-sdk/poetry.lock @@ -222,6 +222,17 @@ files = [ [package.extras] tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] +[[package]] +name = "async-timeout" +version = "4.0.3" +description = "Timeout context manager for asyncio programs" +optional = false +python-versions = ">=3.7" +files = [ + {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"}, + {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"}, +] + [[package]] name = "attrs" version = "24.2.0" @@ -292,17 +303,17 @@ lxml = ["lxml"] [[package]] name = "boto3" -version = "1.35.47" +version = "1.35.48" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.35.47-py3-none-any.whl", hash = "sha256:0b307f685875e9c7857ce21c0d3050d8d4f3778455a6852d5f98ac75194b400e"}, - {file = "boto3-1.35.47.tar.gz", hash = "sha256:65b808e4cf1af8c2f405382d53656a0d92eee8f85c7388c43d64c7a5571b065f"}, + {file = "boto3-1.35.48-py3-none-any.whl", hash = "sha256:60889bb6e21f0af662ac9404e00125d3b8a5808f190e89462e5ddf73604adfc1"}, + {file = "boto3-1.35.48.tar.gz", hash = "sha256:5007a5cdd09e4db9309adf2ee090455a34ae639bd10a68a1fefca72cd77070fc"}, ] [package.dependencies] -botocore = ">=1.35.47,<1.36.0" +botocore = ">=1.35.48,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -311,13 +322,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.47" +version = "1.35.48" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.35.47-py3-none-any.whl", hash = "sha256:05f4493119a96799ff84d43e78691efac3177e1aec8840cca99511de940e342a"}, - {file = "botocore-1.35.47.tar.gz", hash = "sha256:f8f703463d3cd8b6abe2bedc443a7ab29f0e2ff1588a2e83164b108748645547"}, + {file = "botocore-1.35.48-py3-none-any.whl", hash = "sha256:34fa25fd717208b05745e60f271a39636108fa87a3512fbca18e7e6f787a3239"}, + {file = "botocore-1.35.48.tar.gz", hash = "sha256:3e766cc251053c9ef98542fdf225381ed58531769c3811a6282bd7247f7e2bdf"}, ] [package.dependencies] @@ -1120,6 +1131,29 @@ files = [ [package.extras] testing = ["hatch", "pre-commit", "pytest", "tox"] +[[package]] +name = "fakeredis" +version = "2.26.0" +description = "Python implementation of redis API, can be used for testing purposes." +optional = false +python-versions = "<4.0,>=3.7" +files = [ + {file = "fakeredis-2.26.0-py3-none-any.whl", hash = "sha256:b9d5428efeb0b064b6340e2ea1c9842393fd49e92598852b64437ffb1f6ae686"}, + {file = "fakeredis-2.26.0.tar.gz", hash = "sha256:6396bfbbf8aea94edba61365f52521491a5565349a7cdc420f8f3ad8f5183ba5"}, +] + +[package.dependencies] +jsonpath-ng = {version = ">=1.6,<2.0", optional = true, markers = "extra == \"json\""} +redis = {version = ">=4.3", markers = "python_full_version > \"3.8.0\""} +sortedcontainers = ">=2,<3" + +[package.extras] +bf = ["pyprobables (>=0.6,<0.7)"] +cf = ["pyprobables (>=0.6,<0.7)"] +json = ["jsonpath-ng (>=1.6,<2.0)"] +lua = ["lupa (>=2.1,<3.0)"] +probabilistic = ["pyprobables (>=0.6,<0.7)"] + [[package]] name = "filelock" version = "3.16.1" @@ -1254,6 +1288,109 @@ pygments = ">=2.7" sphinx = ">=6.0,<9.0" sphinx-basic-ng = ">=1.0.0.beta2" +[[package]] +name = "hiredis" +version = "3.0.0" +description = "Python wrapper for hiredis" +optional = false +python-versions = ">=3.8" +files = [ + {file = "hiredis-3.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:4b182791c41c5eb1d9ed736f0ff81694b06937ca14b0d4dadde5dadba7ff6dae"}, + {file = "hiredis-3.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:13c275b483a052dd645eb2cb60d6380f1f5215e4c22d6207e17b86be6dd87ffa"}, + {file = "hiredis-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1018cc7f12824506f165027eabb302735b49e63af73eb4d5450c66c88f47026"}, + {file = "hiredis-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83a29cc7b21b746cb6a480189e49f49b2072812c445e66a9e38d2004d496b81c"}, + {file = "hiredis-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e241fab6332e8fb5f14af00a4a9c6aefa22f19a336c069b7ddbf28ef8341e8d6"}, + {file = "hiredis-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1fb8de899f0145d6c4d5d4bd0ee88a78eb980a7ffabd51e9889251b8f58f1785"}, + {file = "hiredis-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b23291951959141173eec10f8573538e9349fa27f47a0c34323d1970bf891ee5"}, + {file = "hiredis-3.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e421ac9e4b5efc11705a0d5149e641d4defdc07077f748667f359e60dc904420"}, + {file = "hiredis-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:77c8006c12154c37691b24ff293c077300c22944018c3ff70094a33e10c1d795"}, + {file = "hiredis-3.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:41afc0d3c18b59eb50970479a9c0e5544fb4b95e3a79cf2fbaece6ddefb926fe"}, + {file = "hiredis-3.0.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:04ccae6dcd9647eae6025425ab64edb4d79fde8b9e6e115ebfabc6830170e3b2"}, + {file = "hiredis-3.0.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fe91d62b0594db5ea7d23fc2192182b1a7b6973f628a9b8b2e0a42a2be721ac6"}, + {file = "hiredis-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99516d99316062824a24d145d694f5b0d030c80da693ea6f8c4ecf71a251d8bb"}, + {file = "hiredis-3.0.0-cp310-cp310-win32.whl", hash = "sha256:562eaf820de045eb487afaa37e6293fe7eceb5b25e158b5a1974b7e40bf04543"}, + {file = "hiredis-3.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a1c81c89ed765198da27412aa21478f30d54ef69bf5e4480089d9c3f77b8f882"}, + {file = "hiredis-3.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:4664dedcd5933364756d7251a7ea86d60246ccf73a2e00912872dacbfcef8978"}, + {file = "hiredis-3.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:47de0bbccf4c8a9f99d82d225f7672b9dd690d8fd872007b933ef51a302c9fa6"}, + {file = "hiredis-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e43679eca508ba8240d016d8cca9d27342d70184773c15bea78a23c87a1922f1"}, + {file = "hiredis-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13c345e7278c210317e77e1934b27b61394fee0dec2e8bd47e71570900f75823"}, + {file = "hiredis-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00018f22f38530768b73ea86c11f47e8d4df65facd4e562bd78773bd1baef35e"}, + {file = "hiredis-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ea3a86405baa8eb0d3639ced6926ad03e07113de54cb00fd7510cb0db76a89d"}, + {file = "hiredis-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c073848d2b1d5561f3903879ccf4e1a70c9b1e7566c7bdcc98d082fa3e7f0a1d"}, + {file = "hiredis-3.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a8dffb5f5b3415a4669d25de48b617fd9d44b0bccfc4c2ab24b06406ecc9ecb"}, + {file = "hiredis-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:22c17c96143c2a62dfd61b13803bc5de2ac526b8768d2141c018b965d0333b66"}, + {file = "hiredis-3.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c3ece960008dab66c6b8bb3a1350764677ee7c74ccd6270aaf1b1caf9ccebb46"}, + {file = "hiredis-3.0.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f75999ae00a920f7dce6ecae76fa5e8674a3110e5a75f12c7a2c75ae1af53396"}, + {file = "hiredis-3.0.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e069967cbd5e1900aafc4b5943888f6d34937fc59bf8918a1a546cb729b4b1e4"}, + {file = "hiredis-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0aacc0a78e1d94d843a6d191f224a35893e6bdfeb77a4a89264155015c65f126"}, + {file = "hiredis-3.0.0-cp311-cp311-win32.whl", hash = "sha256:719c32147ba29528cb451f037bf837dcdda4ff3ddb6cdb12c4216b0973174718"}, + {file = "hiredis-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:bdc144d56333c52c853c31b4e2e52cfbdb22d3da4374c00f5f3d67c42158970f"}, + {file = "hiredis-3.0.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:484025d2eb8f6348f7876fc5a2ee742f568915039fcb31b478fd5c242bb0fe3a"}, + {file = "hiredis-3.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:fcdb552ffd97151dab8e7bc3ab556dfa1512556b48a367db94b5c20253a35ee1"}, + {file = "hiredis-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bb6f9fd92f147ba11d338ef5c68af4fd2908739c09e51f186e1d90958c68cc1"}, + {file = "hiredis-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa86bf9a0ed339ec9e8a9a9d0ae4dccd8671625c83f9f9f2640729b15e07fbfd"}, + {file = "hiredis-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e194a0d5df9456995d8f510eab9f529213e7326af6b94770abf8f8b7952ddcaa"}, + {file = "hiredis-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a1df39d74ec507d79c7a82c8063eee60bf80537cdeee652f576059b9cdd15c"}, + {file = "hiredis-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f91456507427ba36fd81b2ca11053a8e112c775325acc74e993201ea912d63e9"}, + {file = "hiredis-3.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9862db92ef67a8a02e0d5370f07d380e14577ecb281b79720e0d7a89aedb9ee5"}, + {file = "hiredis-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d10fcd9e0eeab835f492832b2a6edb5940e2f1230155f33006a8dfd3bd2c94e4"}, + {file = "hiredis-3.0.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:48727d7d405d03977d01885f317328dc21d639096308de126c2c4e9950cbd3c9"}, + {file = "hiredis-3.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e0bb6102ebe2efecf8a3292c6660a0e6fac98176af6de67f020bea1c2343717"}, + {file = "hiredis-3.0.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:df274e3abb4df40f4c7274dd3e587dfbb25691826c948bc98d5fead019dfb001"}, + {file = "hiredis-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:034925b5fb514f7b11aac38cd55b3fd7e9d3af23bd6497f3f20aa5b8ba58e232"}, + {file = "hiredis-3.0.0-cp312-cp312-win32.whl", hash = "sha256:120f2dda469b28d12ccff7c2230225162e174657b49cf4cd119db525414ae281"}, + {file = "hiredis-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:e584fe5f4e6681d8762982be055f1534e0170f6308a7a90f58d737bab12ff6a8"}, + {file = "hiredis-3.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:122171ff47d96ed8dd4bba6c0e41d8afaba3e8194949f7720431a62aa29d8895"}, + {file = "hiredis-3.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:ba9fc605ac558f0de67463fb588722878641e6fa1dabcda979e8e69ff581d0bd"}, + {file = "hiredis-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a631e2990b8be23178f655cae8ac6c7422af478c420dd54e25f2e26c29e766f1"}, + {file = "hiredis-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63482db3fadebadc1d01ad33afa6045ebe2ea528eb77ccaabd33ee7d9c2bad48"}, + {file = "hiredis-3.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f669212c390eebfbe03c4e20181f5970b82c5d0a0ad1df1785f7ffbe7d61150"}, + {file = "hiredis-3.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a49ef161739f8018c69b371528bdb47d7342edfdee9ddc75a4d8caddf45a6e"}, + {file = "hiredis-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98a152052b8878e5e43a2e3a14075218adafc759547c98668a21e9485882696c"}, + {file = "hiredis-3.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50a196af0ce657fcde9bf8a0bbe1032e22c64d8fcec2bc926a35e7ff68b3a166"}, + {file = "hiredis-3.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f2f312eef8aafc2255e3585dcf94d5da116c43ef837db91db9ecdc1bc930072d"}, + {file = "hiredis-3.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:6ca41fa40fa019cde42c21add74aadd775e71458051a15a352eabeb12eb4d084"}, + {file = "hiredis-3.0.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:6eecb343c70629f5af55a8b3e53264e44fa04e155ef7989de13668a0cb102a90"}, + {file = "hiredis-3.0.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:c3fdad75e7837a475900a1d3a5cc09aa024293c3b0605155da2d42f41bc0e482"}, + {file = "hiredis-3.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:8854969e7480e8d61ed7549eb232d95082a743e94138d98d7222ba4e9f7ecacd"}, + {file = "hiredis-3.0.0-cp38-cp38-win32.whl", hash = "sha256:f114a6c86edbf17554672b050cce72abf489fe58d583c7921904d5f1c9691605"}, + {file = "hiredis-3.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:7d99b91e42217d7b4b63354b15b41ce960e27d216783e04c4a350224d55842a4"}, + {file = "hiredis-3.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:4c6efcbb5687cf8d2aedcc2c3ed4ac6feae90b8547427d417111194873b66b06"}, + {file = "hiredis-3.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5b5cff42a522a0d81c2ae7eae5e56d0ee7365e0c4ad50c4de467d8957aff4414"}, + {file = "hiredis-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:82f794d564f4bc76b80c50b03267fe5d6589e93f08e66b7a2f674faa2fa76ebc"}, + {file = "hiredis-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7a4c1791d7aa7e192f60fe028ae409f18ccdd540f8b1e6aeb0df7816c77e4a4"}, + {file = "hiredis-3.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2537b2cd98192323fce4244c8edbf11f3cac548a9d633dbbb12b48702f379f4"}, + {file = "hiredis-3.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fed69bbaa307040c62195a269f82fc3edf46b510a17abb6b30a15d7dab548df"}, + {file = "hiredis-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869f6d5537d243080f44253491bb30aa1ec3c21754003b3bddeadedeb65842b0"}, + {file = "hiredis-3.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d435ae89073d7cd51e6b6bf78369c412216261c9c01662e7008ff00978153729"}, + {file = "hiredis-3.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:204b79b30a0e6be0dc2301a4d385bb61472809f09c49f400497f1cdd5a165c66"}, + {file = "hiredis-3.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3ea635101b739c12effd189cc19b2671c268abb03013fd1f6321ca29df3ca625"}, + {file = "hiredis-3.0.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:f359175197fd833c8dd7a8c288f1516be45415bb5c939862ab60c2918e1e1943"}, + {file = "hiredis-3.0.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ac6d929cb33dd12ad3424b75725975f0a54b5b12dbff95f2a2d660c510aa106d"}, + {file = "hiredis-3.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:100431e04d25a522ef2c3b94f294c4219c4de3bfc7d557b6253296145a144c11"}, + {file = "hiredis-3.0.0-cp39-cp39-win32.whl", hash = "sha256:e1a9c14ae9573d172dc050a6f63a644457df5d01ec4d35a6a0f097f812930f83"}, + {file = "hiredis-3.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:54a6dd7b478e6eb01ce15b3bb5bf771e108c6c148315bf194eb2ab776a3cac4d"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:50da7a9edf371441dfcc56288d790985ee9840d982750580710a9789b8f4a290"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b285ef6bf1581310b0d5e8f6ce64f790a1c40e89c660e1320b35f7515433672"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dcfa684966f25b335072115de2f920228a3c2caf79d4bfa2b30f6e4f674a948"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a41be8af1fd78ca97bc948d789a09b730d1e7587d07ca53af05758f31f4b985d"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:038756db735e417ab36ee6fd7725ce412385ed2bd0767e8179a4755ea11b804f"}, + {file = "hiredis-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fcecbd39bd42cef905c0b51c9689c39d0cc8b88b1671e7f40d4fb213423aef3a"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a131377493a59fb0f5eaeb2afd49c6540cafcfba5b0b3752bed707be9e7c4eaf"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d22c53f0ec5c18ecb3d92aa9420563b1c5d657d53f01356114978107b00b860"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8a91e9520fbc65a799943e5c970ffbcd67905744d8becf2e75f9f0a5e8414f0"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dc8043959b50141df58ab4f398e8ae84c6f9e673a2c9407be65fc789138f4a6"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51b99cfac514173d7b8abdfe10338193e8a0eccdfe1870b646009d2fb7cbe4b5"}, + {file = "hiredis-3.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:fa1fcad89d8a41d8dc10b1e54951ec1e161deabd84ed5a2c95c3c7213bdb3514"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:898636a06d9bf575d2c594129085ad6b713414038276a4bfc5db7646b8a5be78"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:466f836dbcf86de3f9692097a7a01533dc9926986022c6617dc364a402b265c5"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23142a8af92a13fc1e3f2ca1d940df3dcf2af1d176be41fe8d89e30a837a0b60"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:793c80a3d6b0b0e8196a2d5de37a08330125668c8012922685e17aa9108c33ac"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:467d28112c7faa29b7db743f40803d927c8591e9da02b6ce3d5fadc170a542a2"}, + {file = "hiredis-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:dc384874a719c767b50a30750f937af18842ee5e288afba95a5a3ed703b1515a"}, + {file = "hiredis-3.0.0.tar.gz", hash = "sha256:fed8581ae26345dea1f1e0d1a96e05041a727a45e7d8d459164583e23c6ac441"}, +] + [[package]] name = "html5lib" version = "1.1" @@ -1339,6 +1476,19 @@ files = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] +[[package]] +name = "jsonpath-ng" +version = "1.7.0" +description = "A final implementation of JSONPath for Python that aims to be standard compliant, including arithmetic and binary comparison operators and providing clear AST for metaprogramming." +optional = false +python-versions = "*" +files = [ + {file = "jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c"}, +] + +[package.dependencies] +ply = "*" + [[package]] name = "lark" version = "1.2.2" @@ -1824,13 +1974,13 @@ files = [ [[package]] name = "pallets-sphinx-themes" -version = "2.2.0" +version = "2.3.0" description = "Sphinx themes for Pallets and related projects." optional = false python-versions = ">=3.8" files = [ - {file = "pallets_sphinx_themes-2.2.0-py3-none-any.whl", hash = "sha256:f121c8d008f696177210c636593b80840505b2c9199223e818aff99d37f9f3f1"}, - {file = "pallets_sphinx_themes-2.2.0.tar.gz", hash = "sha256:e2c65822ad9f043b13b503f2f00a9a5181bc7a8d288fe23c1393ab62aa9af7b8"}, + {file = "pallets_sphinx_themes-2.3.0-py3-none-any.whl", hash = "sha256:7ed13de3743c462c2804e2aa63d96cc9ffa82cb76d0251cea03de9bcd9f8dbec"}, + {file = "pallets_sphinx_themes-2.3.0.tar.gz", hash = "sha256:6293ced11a1d5d3de7268af1acd60428732b5a9e6051a47a596c6d9a083e60d9"}, ] [package.dependencies] @@ -1880,6 +2030,17 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "ply" +version = "3.11" +description = "Python Lex & Yacc" +optional = false +python-versions = "*" +files = [ + {file = "ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce"}, + {file = "ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"}, +] + [[package]] name = "poethepoet" version = "0.21.1" @@ -2502,6 +2663,25 @@ files = [ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] +[[package]] +name = "redis" +version = "5.2.0" +description = "Python client for Redis database and key-value store" +optional = false +python-versions = ">=3.8" +files = [ + {file = "redis-5.2.0-py3-none-any.whl", hash = "sha256:ae174f2bb3b1bf2b09d54bf3e51fbc1469cf6c10aa03e21141f51969801a7897"}, + {file = "redis-5.2.0.tar.gz", hash = "sha256:0b1087665a771b1ff2e003aa5bdd354f15a70c9e25d5a7dbf9c722c16528a7b0"}, +] + +[package.dependencies] +async-timeout = {version = ">=4.0.3", markers = "python_full_version < \"3.11.3\""} +hiredis = {version = ">=3.0.0", optional = true, markers = "extra == \"hiredis\""} + +[package.extras] +hiredis = ["hiredis (>=3.0.0)"] +ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==23.2.1)", "requests (>=2.31.0)"] + [[package]] name = "requests" version = "2.32.3" @@ -2708,6 +2888,17 @@ files = [ {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, ] +[[package]] +name = "sortedcontainers" +version = "2.4.0" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +optional = false +python-versions = "*" +files = [ + {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, + {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, +] + [[package]] name = "soupsieve" version = "2.6" @@ -3399,4 +3590,4 @@ docs = [] [metadata] lock-version = "2.0" python-versions = ">=3.11,<3.13" -content-hash = "c917bbb21c56294f27af336de8521e2ef1e774c990646e6e658376b31e511e4a" +content-hash = "224a37b48416ced2dd30e3bc5e88449eeeaeb0de4bcb3b16988ef02f95a462eb" diff --git a/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/__init__.py b/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/fetcher.py b/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/fetcher.py new file mode 100644 index 00000000..cfee2cfa --- /dev/null +++ b/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/fetcher.py @@ -0,0 +1,324 @@ +import time +import asyncio + +from statistics import median +from typing import Optional, List, Dict, Tuple +from aiohttp import ClientSession + +from pragma_sdk.common.logging import get_pragma_sdk_logger +from pragma_sdk.common.exceptions import PublisherFetchError +from pragma_sdk.common.types.entry import Entry, GenericEntry +from pragma_sdk.common.types.types import Address +from pragma_sdk.common.utils import felt_to_str, str_to_felt +from pragma_sdk.common.fetchers.interface import FetcherInterfaceT +from pragma_sdk.common.types.pair import Pair +from pragma_sdk.common.fetchers.generic_fetchers.lp_fetcher.lp_contract import ( + LpContract, + Reserves, +) +from pragma_sdk.common.fetchers.generic_fetchers.lp_fetcher.redis_manager import ( + LpRedisManager, +) +from pragma_sdk.onchain.types import Contract + +from pragma_sdk.onchain.types import Network + +# We are storing into Redis the history of Reserves & Supply every 3 minutes. +# So we know that 10 data points means that we published for at least 30 minutes. +# This is the minimum number of points decided so that the computations make sense. +MINIMUM_DATA_POINTS = 10 + +logger = get_pragma_sdk_logger() + + +class LPFetcher(FetcherInterfaceT): + """ + This Fetcher needs a Redis Database. + """ + + network: Network + publisher: str + pairs: List[Address] # type: ignore[assignment] + lp_contracts: Dict[Address, LpContract] + redis_manager: LpRedisManager + + SOURCE: str = "PRAGMA" + + def __init__( + self, + pairs: List[Address], + publisher: str, + redis_manager: LpRedisManager, + api_key: Optional[str] = None, + network: Network = "mainnet", + ): + super().__init__(pairs, publisher, api_key, network) # type: ignore[arg-type] + self.network = network + self.redis_manager = redis_manager + self.lp_contracts: Dict[Address, LpContract] = dict() + for address in pairs: + self.lp_contracts[address] = LpContract( + client=self.client.full_node_client, + lp_address=address, + ) + + async def validate_pools(self) -> None: + """ + Must be called after the Fetcher init. + We check that all Lp Contracts are indeed supported by the Oracle. + """ + lp_addresses = list(self.lp_contracts.keys()) + for lp_address in lp_addresses: + await self._validate_pool(lp_address) + + async def _validate_pool(self, lp_address: Address) -> None: + """ + Checks if a pool is valid and removes it from the list if it is not. + """ + lp_contract = self.lp_contracts[lp_address] + pool_is_valid = (await lp_contract.is_valid()) and ( + await self._are_currencies_registered(lp_contract) + ) + if not pool_is_valid: + del self.lp_contracts[lp_address] + + async def _are_currencies_registered( + self, + lp_contract: LpContract, + ) -> bool: + """ + Returns true if the underlying assets of a Pool are correctly registered on-chain on the Oracle. + """ + token_0 = await lp_contract.get_token_0() + token_0_symbol = await token_0.functions["symbol"].call() + token_0_symbol = felt_to_str(token_0_symbol[0]) + token_1 = await lp_contract.get_token_1() + token_1_symbol = await token_1.functions["symbol"].call() + token_1_symbol = felt_to_str(token_1_symbol[0]) + + are_supported = (await self.client.is_currency_registered(token_0_symbol)) and ( + await self.client.is_currency_registered(token_1_symbol) + ) + + if not are_supported: + logger.error( + f"⛔ The underlying assets of the pool {hex(lp_contract.contract.address)} are not" + " supported by Pragma Oracle. The pool will not be priced." + ) + return are_supported + + async def fetch( # type: ignore[assignment] + self, session: ClientSession + ) -> List[Entry | PublisherFetchError | BaseException]: + """ + Construct a list of GenericEntry containing the pricing of + the each LP Contract (contained in `self.pairs`) in parallel. + They are all returned as `GenericEntry`. + """ + tasks = [ + self.fetch_pair(lp_contract_address, session) + for lp_contract_address in self.pairs + ] + entries = await asyncio.gather(*tasks, return_exceptions=True) + logger.info(entries) + return entries # type: ignore[override] + + async def fetch_pair( + self, + pair: Address, # type: ignore[override] + session: ClientSession, + ) -> Entry | PublisherFetchError: + """ + Fetches the data for a specific pool address from the fetcher and returns a Generic object. + """ + lp_contract = self.lp_contracts[pair] + token_0 = await lp_contract.get_token_0() + token_1 = await lp_contract.get_token_1() + + if not await self._store_latest_values(lp_contract=lp_contract): + raise ValueError("Could not store latest values into Redis!") + + reserves = await self._get_median_reserves(lp_contract=lp_contract) + if isinstance(reserves, PublisherFetchError): + return reserves + + total_supply = await self._get_median_total_supply(lp_contract=lp_contract) + if isinstance(total_supply, PublisherFetchError): + return total_supply + + decimals = await lp_contract.get_decimals() + + lp_price = await self._compute_lp_price( + token_0=token_0, + token_1=token_1, + reserves=reserves, + total_supply=total_supply, + decimals=decimals, + ) + if isinstance(lp_price, PublisherFetchError): + return lp_price + + return GenericEntry( + key=pair, + value=int(lp_price), + timestamp=int(time.time()), + source=self.SOURCE, + publisher=self.publisher, + ) + + async def _store_latest_values(self, lp_contract: LpContract) -> bool: + """ + Store the latest reserves and total supply into redis. + """ + latest_reserves = await lp_contract.get_reserves() + latest_total_supply = await lp_contract.get_total_supply() + return self.redis_manager.store_pool_data( + network=self.network, + pool_address=lp_contract.contract.address, + reserves=latest_reserves, + total_supply=latest_total_supply, + ) + + async def _get_median_reserves( + self, lp_contract: LpContract + ) -> Reserves | PublisherFetchError: + """ + Stores the latest reserves in Redis & computes the median reserves. + Works only if we have at least 10 data points of history stored in Redis. + """ + history_reserves = self.redis_manager.get_latest_n_reserves( + network=self.network, + pool_address=lp_contract.contract.address, + n=MINIMUM_DATA_POINTS, + ) + if len(history_reserves) < MINIMUM_DATA_POINTS: + return PublisherFetchError( + "Can't compute Lp Price - not enough history for the Pool reserves." + ) + + token_0_reserves = [x[0] for x in history_reserves] + token_1_reserves = [x[1] for x in history_reserves] + return (int(median(token_0_reserves)), int(median(token_1_reserves))) + + async def _get_median_total_supply( + self, lp_contract: LpContract + ) -> int | PublisherFetchError: + """ + Stores the latest total supply and computes the median of the total supply. + Works only if we have at least 10 data points of history stored in Redis. + """ + history_total_supply = self.redis_manager.get_latest_n_total_supply( + network=self.network, + pool_address=lp_contract.contract.address, + n=MINIMUM_DATA_POINTS, + ) + + if len(history_total_supply) < MINIMUM_DATA_POINTS: + return PublisherFetchError( + "Can't compute Lp Price - not enough history for the Pool total supply." + ) + + total_supply = int(median(history_total_supply)) + return total_supply + + async def _compute_lp_price( + self, + token_0: Contract, + token_1: Contract, + reserves: Reserves, + total_supply: int, + decimals: int, + ) -> float | PublisherFetchError: + """ + Computes the LP price based on reserves and total supply. + Takes into consideration the decimals of the fetched prices. + """ + response = await self._get_token_price_and_decimals(token_0) + if isinstance(response, PublisherFetchError): + return response + (token_0_price, token_0_decimals, token_0_price_decimals) = response + + response = await self._get_token_price_and_decimals(token_1) + if isinstance(response, PublisherFetchError): + return response + (token_1_price, token_1_decimals, token_1_price_decimals) = response + + # Scale the token prices & reserves to the pool decimals + (scaled_token_0_price, reserve_0) = self._adjust_decimals( + token_0_price, + reserves[0], + token_0_decimals, + token_0_price_decimals, + decimals, + ) + (scaled_token_1_price, reserve_1) = self._adjust_decimals( + token_1_price, + reserves[1], + token_1_decimals, + token_1_price_decimals, + decimals, + ) + + # Compute the LP price + lp_price = ( + (reserve_0 * scaled_token_0_price) + (reserve_1 * scaled_token_1_price) + ) / total_supply + return lp_price + + def _adjust_decimals( + self, + price: int, + reserve: int, + decimals: int, + price_decimals: int, + target_decimals: int, + ) -> Tuple[float, float]: + """ + Adjust the decimals of the prices and the reserves to the target decimals. + """ + if price_decimals < target_decimals: + price = price * 10 ** (target_decimals - price_decimals) + elif price_decimals > target_decimals: + price = price / 10 ** (price_decimals - target_decimals) + + if decimals < target_decimals: + reserve = reserve * 10 ** (target_decimals - decimals) + elif decimals > target_decimals: + reserve = reserve / 10 ** (decimals - target_decimals) + + return (price, reserve) + + async def _get_token_price_and_decimals( + self, token: Contract, block_id: str = "pending" + ) -> Tuple[int, int, int] | PublisherFetchError: + """ + For a given token contract, return: + * the price in USD for the token, + * the decimals of the token, + * the decimals of the USD price. + """ + token_pair = await self._get_pair_usd_quoted(token) + oracle_response = await self.client.get_spot( + pair_id=str_to_felt(token_pair), + block_id=block_id, + ) + if oracle_response.price == 0 and oracle_response.last_updated_timestamp == 0: + return PublisherFetchError( + f"No prices found for pair {token_pair}. " "Can't compute the LP price." + ) + token_decimals = await token.functions["decimals"].call() + return (oracle_response.price, token_decimals[0], oracle_response.decimals) + + async def _get_pair_usd_quoted(self, token: Contract) -> str: + """ + For the given token contract, fetch the symbol and returns the token quoted + to USD as a `Pair`. + """ + token_symbol = await token.functions["symbol"].call() + return felt_to_str(token_symbol[0]) + "/USD" + + def format_url(self, pair: Pair) -> str: + """ + Not used in this fetcher! But needed to comply with the Fetcher interface. + """ + raise NotImplementedError("Not needed for LPFetcher.") diff --git a/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/lp_contract.py b/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/lp_contract.py new file mode 100644 index 00000000..ebc536a5 --- /dev/null +++ b/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/lp_contract.py @@ -0,0 +1,124 @@ +from typing import Optional, Tuple, cast, List + +from starknet_py.net.full_node_client import FullNodeClient +from starknet_py.hash.selector import get_selector_from_name + +from pragma_sdk.common.logging import get_pragma_sdk_logger +from pragma_sdk.common.types.types import Address +from pragma_sdk.onchain.types import Contract +from pragma_sdk.onchain.abis.abi import ABIS, get_erc20_abi + +logger = get_pragma_sdk_logger() + +Reserves = Tuple[int, int] + +REQUIRED_POOL_FUNCTIONS: List[int] = [ + get_selector_from_name("get_reserves"), + get_selector_from_name("total_supply"), + get_selector_from_name("decimals"), + get_selector_from_name("token_0"), + get_selector_from_name("token_1"), +] + +# The address is the same for mainnet/sepolia +MULTICALL_CONTRACT_ADDRESS = int( + "0x05754af3760f3356da99aea5c3ec39ccac7783d925a19666ebbeca58ff0087f4", 16 +) + + +class LpContract: + contract: Contract + _token_0: Optional[Contract] = None + _token_1: Optional[Contract] = None + _decimals: Optional[int] = None + + def __init__( + self, client: FullNodeClient, lp_address: Address, block_hash="pending" + ): + self.contract = Contract( + address=lp_address, + abi=ABIS["pragma_Pool"], + provider=client, + cairo_version=1, + ) + self.block_hash = block_hash + + async def is_valid(self) -> bool: + """ + Validate that the current contract is valid and usable. + We query every functions to make sure that it exists on-chain. + """ + try: + multicaller = await Contract.from_address( + provider=self.contract.client, + address=MULTICALL_CONTRACT_ADDRESS, + ) + calls = [ + { + "to": self.contract.address, + "selector": selector, + "data_offset": 0, + "data_len": 0, + } + for selector in REQUIRED_POOL_FUNCTIONS + ] + _ = await multicaller.functions["aggregate"].call(calls, []) + except Exception as _: + logger.error( + f"⛔ The contract {hex(self.contract.address)} is not a valid pool. " + "Ignoring - it won't be priced." + ) + return False + + return True + + async def get_reserves(self) -> Reserves: + """Fetches reserves from the pool.""" + response = await self.contract.functions["get_reserves"].call( + block_hash=self.block_hash + ) + return cast(Reserves, response[0]) + + async def get_total_supply(self) -> int: + """Fetches the total supply from the pool.""" + response = await self.contract.functions["total_supply"].call( + block_hash=self.block_hash + ) + return int(response[0]) + + async def get_decimals(self) -> int: + """Returns the decimals of the pool.""" + if self._decimals is None: + response = await self.contract.functions["decimals"].call( + block_hash=self.block_hash + ) + self._decimals = int(response[0]) + return self._decimals + + async def get_token_0(self) -> Contract: + """Returns the token 0 address from the pool.""" + if self._token_0 is None: + token_0_address = await self.contract.functions["token_0"].call( + block_hash=self.block_hash + ) + self._token_0 = Contract( + address=token_0_address[0], + abi=get_erc20_abi(), + provider=self.contract.client, + cairo_version=0, + ) + return self._token_0 + + async def get_token_1(self) -> Contract: + """Returns the token 1 address from the pool.""" + if self._token_1 is None: + token_1_address = await self.contract.functions["token_1"].call( + block_hash=self.block_hash + ) + self._token_1 = Contract( + address=token_1_address[0], + abi=get_erc20_abi(), + provider=self.contract.client, + cairo_version=0, + ) + return self._token_1 diff --git a/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/redis_manager.py b/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/redis_manager.py new file mode 100644 index 00000000..3470bf56 --- /dev/null +++ b/pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/lp_fetcher/redis_manager.py @@ -0,0 +1,120 @@ +import logging + +from typing import List + +from redis import Redis + +from pragma_sdk.common.fetchers.generic_fetchers.lp_fetcher.lp_contract import Reserves +from pragma_sdk.onchain.types import Network + +logger = logging.getLogger(__name__) + +# Maximum number of values +LISTS_MAX_VALUES = 480 + +# The data will be erased after 1 hour. +# We use it to automatically prune data that is too old. Used because if the publisher +# crash for some hours and restart, we don't want to compute prices on outdated data. +DEFAULT_TIME_TO_LIVE = 3600 + + +class LpRedisManager: + """ + Class responsible of storing LP data using Redis Lists for chronological order. + + The current layout is: + ├── mainnet + │ └── 0x068c... + │ ├── reserves: [reserves_0, reserves_1, ..., reserves_N] + │ └── total_supply: [total_supply_0, total_supply_1, ..., total_supply_N] + └── sepolia + └── (...) + """ + + client: Redis + time_to_live: int + + def __init__(self, host: str, port: str, time_to_tive: int = DEFAULT_TIME_TO_LIVE): + self.client = Redis(host=host, port=port) + self.time_to_live = time_to_tive + + def store_pool_data( + self, + network: Network, + pool_address: str, + reserves: Reserves, + total_supply: int, + ) -> bool: + """Store pool data using Redis Lists maintaining insertion order.""" + try: + with self.client.pipeline() as pipe: + # Store reserves + reserves_key = self._get_key(network, pool_address, "reserves") + pipe.lpush(reserves_key, self._pack_reserves(reserves)) + pipe.ltrim(reserves_key, 0, LISTS_MAX_VALUES - 1) + pipe.expire(reserves_key, self.time_to_live) + + # Store total supply + total_supply_key = self._get_key(network, pool_address, "total_supply") + pipe.lpush(total_supply_key, str(total_supply)) + pipe.ltrim(total_supply_key, 0, LISTS_MAX_VALUES - 1) + pipe.expire(total_supply_key, self.time_to_live) + + results = pipe.execute() + return all(r is not None for r in results) + except Exception as e: + logger.error(f"Error storing pool data: {e}") + return False + + def get_latest_n_reserves( + self, + network: Network, + pool_address: str, + n: int = 1, + ) -> List[Reserves]: + """ + Get the latest N reserve entries in chronological order (newest first). + """ + if n < 1: + raise ValueError("n must be a positive integer") + n = min(n, LISTS_MAX_VALUES) + + key = self._get_key(network, pool_address, "reserves") + results: List[bytes] = self.client.lrange(key, 0, n - 1) # type: ignore[assignment] + return [self._unpack_reserves(r.decode()) for r in results] + + def get_latest_n_total_supply( + self, + network: Network, + pool_address: str, + n: int = 1, + ) -> List[int]: + """ + Get the latest N total supply entries in chronological order (newest first). + """ + if n < 1: + raise ValueError("n must be a positive integer") + n = min(n, LISTS_MAX_VALUES) + + key = self._get_key(network, pool_address, "total_supply") + results: List[bytes] = self.client.lrange(key, 0, n - 1) # type: ignore[assignment] + + return [int(v.decode()) for v in results] + + def _get_key( + self, + network: Network, + pool_address: str, + key: str, + ) -> str: + """Generate Redis key using proper Redis key naming conventions.""" + return f"{network}:{pool_address}:{key}" + + def _pack_reserves(self, reserves: Reserves) -> str: + """Pack two integers into a compact string representation.""" + return f"{reserves[0]}:{reserves[1]}" + + def _unpack_reserves(self, packed: str) -> Reserves: + """Unpack string representation back into two integers.""" + r0, r1 = packed.split(":") + return (int(r0), int(r1)) diff --git a/pragma-sdk/pragma_sdk/common/logging.py b/pragma-sdk/pragma_sdk/common/logging.py index e2611883..1cf2d160 100644 --- a/pragma-sdk/pragma_sdk/common/logging.py +++ b/pragma-sdk/pragma_sdk/common/logging.py @@ -1,28 +1,41 @@ import logging -from logging import Logger from sys import stdout +from typing import Optional -logger = logging.getLogger(__name__) +class PragmaLogger: + _instance: Optional[logging.Logger] = None -def get_pragma_sdk_logger() -> Logger: - """ - Return the logger with a stream handler. - Log format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s" - The logger level is set to DEBUG. - There can only be one stream handler. - """ + @classmethod + def get_logger(cls) -> logging.Logger: + """ + Return the singleton logger instance with a stream handler. + Log format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + The logger level is set to DEBUG. + Ensures only one stream handler exists. + """ + if cls._instance is None: + # Create logger instance + logger = logging.getLogger("pragma_sdk") + logger.propagate = False + logger.setLevel(logging.DEBUG) + + # Check if handler already exists + if not logger.handlers: + stream_handler = logging.StreamHandler(stdout) + formatter = logging.Formatter( + "[%(asctime)s] %(levelname)s:%(name)s.%(module)s:%(message)s" + ) + stream_handler.setFormatter(formatter) + logger.addHandler(stream_handler) - global logger + cls._instance = logger - logger.setLevel(logging.DEBUG) - stream_handler = logging.StreamHandler(stdout) - formatter = logging.Formatter( - "%(asctime)s - %(name)s - %(levelname)s - %(message)s" - ) - stream_handler.setFormatter(formatter) - if logger.hasHandlers(): - logger.handlers.clear() - logger.addHandler(stream_handler) + return cls._instance - return logger + +def get_pragma_sdk_logger() -> logging.Logger: + """ + Convenience function to get the pragma sdk logger. + """ + return PragmaLogger.get_logger() diff --git a/pragma-sdk/pragma_sdk/common/types/entry.py b/pragma-sdk/pragma_sdk/common/types/entry.py index b88bdf7b..c6a2793a 100644 --- a/pragma-sdk/pragma_sdk/common/types/entry.py +++ b/pragma-sdk/pragma_sdk/common/types/entry.py @@ -542,11 +542,11 @@ def offchain_serialize(self) -> Dict[str, object]: def __repr__(self) -> str: return ( - f'GenericEntry(key="{felt_to_str(self.key)}", ' - f"value={self.value}, " - f"timestamp={self.base.timestamp}, " + f'GenericEntry(key="{self.key}", ' + f'value="{self.value}", ' + f'timestamp="{self.base.timestamp}", ' f'source="{felt_to_str(self.base.source)}", ' - f'publisher="{felt_to_str(self.base.publisher)}, ' + f'publisher="{felt_to_str(self.base.publisher)}")' ) def __hash__(self) -> int: diff --git a/pragma-sdk/pragma_sdk/onchain/abis/abi.py b/pragma-sdk/pragma_sdk/onchain/abis/abi.py index 2a59c788..e82c03d3 100644 --- a/pragma-sdk/pragma_sdk/onchain/abis/abi.py +++ b/pragma-sdk/pragma_sdk/onchain/abis/abi.py @@ -63,6 +63,7 @@ def get_abi(contract_name): "pragma_YieldCurve", "pragma_Randomness", "pragma_ExampleRandomness", + "pragma_Pool", ] ABIS = { contract_name: json.loads(get_abi(contract_name)) diff --git a/pragma-sdk/pragma_sdk/onchain/abis/pragma_Pool.casm.json b/pragma-sdk/pragma_sdk/onchain/abis/pragma_Pool.casm.json new file mode 100644 index 00000000..39ce43e6 --- /dev/null +++ b/pragma-sdk/pragma_sdk/onchain/abis/pragma_Pool.casm.json @@ -0,0 +1 @@ +{"prime":"0x800000000000011000000000000000000000000000000000000000000000001","compiler_version":"2.2.0","bytecode":["0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffffe2f0","0x400280007ff97fff","0x10780017fff7fff","0x5b","0x4825800180007ffa","0x1d10","0x400280007ff97fff","0x48297ffc80007ffd","0x482680017ff98000","0x1","0x4824800180007ffe","0x0","0x20680017fff7fff","0x4","0x10780017fff7fff","0x10","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ffc7fff8000","0x48127ff97fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0xd39","0x482480017fff8000","0xd38","0x480080007fff8000","0xa0680017fff8000","0x9","0x4824800180007ff7","0x0","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff77fff","0x10780017fff7fff","0x24","0x4824800180007ff7","0x0","0x400080007ff87fff","0x48127fff7fff8000","0x480a7ffb7fff8000","0x1104800180018000","0x470","0x482480017fd88000","0x1","0x20680017fff7ffc","0x11","0x40780017fff7fff","0x1","0x48127ffd7fff8000","0x48127ffe7fff8000","0x48127ffd7fff8000","0x1104800180018000","0x47a","0x48127ff77fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127fff7fff8000","0x48127ff97fff8000","0x48127ff97fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017ff58000","0x1","0x48127ff27fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffffe2f0","0x400280007ff97fff","0x10780017fff7fff","0x5b","0x4825800180007ffa","0x1d10","0x400280007ff97fff","0x48297ffc80007ffd","0x482680017ff98000","0x1","0x4824800180007ffe","0x0","0x20680017fff7fff","0x4","0x10780017fff7fff","0x10","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ffc7fff8000","0x48127ff97fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0xcca","0x482480017fff8000","0xcc9","0x480080007fff8000","0xa0680017fff8000","0x9","0x4824800180007ff7","0x0","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff77fff","0x10780017fff7fff","0x24","0x4824800180007ff7","0x0","0x400080007ff87fff","0x48127fff7fff8000","0x480a7ffb7fff8000","0x1104800180018000","0x41b","0x482480017fd88000","0x1","0x20680017fff7ffc","0x11","0x40780017fff7fff","0x1","0x48127ffd7fff8000","0x48127ffe7fff8000","0x48127ffd7fff8000","0x1104800180018000","0x40b","0x48127ff77fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127fff7fff8000","0x48127ff97fff8000","0x48127ff97fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017ff58000","0x1","0x48127ff27fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffffd152","0x400280007ff97fff","0x10780017fff7fff","0x5b","0x4825800180007ffa","0x2eae","0x400280007ff97fff","0x48297ffc80007ffd","0x482680017ff98000","0x1","0x4824800180007ffe","0x0","0x20680017fff7fff","0x4","0x10780017fff7fff","0x10","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ffc7fff8000","0x48127ff97fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0xc5b","0x482480017fff8000","0xc5a","0x480080007fff8000","0xa0680017fff8000","0x9","0x4824800180007ff7","0x0","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff77fff","0x10780017fff7fff","0x24","0x4824800180007ff7","0x0","0x400080007ff87fff","0x482480017ff88000","0x1","0x48127ffe7fff8000","0x480a7ffb7fff8000","0x1104800180018000","0x3bf","0x20680017fff7ffd","0x11","0x40780017fff7fff","0x1","0x48127ffe7fff8000","0x48127ffe7fff8000","0x48127ffd7fff8000","0x1104800180018000","0x3ce","0x48127feb7fff8000","0x48127feb7fff8000","0x48127feb7fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017ff58000","0x1","0x48127ff27fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffff8e18","0x400280007ff97fff","0x10780017fff7fff","0x5c","0x4825800180007ffa","0x71e8","0x400280007ff97fff","0x48297ffc80007ffd","0x482680017ff98000","0x1","0x4824800180007ffe","0x0","0x20680017fff7fff","0x4","0x10780017fff7fff","0x10","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ffc7fff8000","0x48127ff97fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0xbec","0x482480017fff8000","0xbeb","0x480080007fff8000","0xa0680017fff8000","0x9","0x4824800180007ff7","0x0","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff77fff","0x10780017fff7fff","0x25","0x4824800180007ff7","0x0","0x400080007ff87fff","0x482480017ff88000","0x1","0x48127ffe7fff8000","0x480a7ffb7fff8000","0x1104800180018000","0x370","0x20680017fff7ffd","0x12","0x40780017fff7fff","0x1","0x48127ffd7fff8000","0x48127ffd7fff8000","0x48127ffd7fff8000","0x48127ffc7fff8000","0x1104800180018000","0x37d","0x48127fd77fff8000","0x48127fd77fff8000","0x48127fd77fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017ff58000","0x1","0x48127ff27fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffffd1ac","0x400280007ff97fff","0x10780017fff7fff","0x5b","0x4825800180007ffa","0x2e54","0x400280007ff97fff","0x48297ffc80007ffd","0x482680017ff98000","0x1","0x4824800180007ffe","0x0","0x20680017fff7fff","0x4","0x10780017fff7fff","0x10","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ffc7fff8000","0x48127ff97fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0xb7c","0x482480017fff8000","0xb7b","0x480080007fff8000","0xa0680017fff8000","0x9","0x4824800180007ff7","0x0","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff77fff","0x10780017fff7fff","0x24","0x4824800180007ff7","0x0","0x400080007ff87fff","0x482480017ff88000","0x1","0x48127ffe7fff8000","0x480a7ffb7fff8000","0x1104800180018000","0x322","0x20680017fff7ffd","0x11","0x40780017fff7fff","0x1","0x48127ffe7fff8000","0x48127ffe7fff8000","0x48127ffd7fff8000","0x1104800180018000","0x331","0x48127feb7fff8000","0x48127feb7fff8000","0x48127feb7fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017ff58000","0x1","0x48127ff27fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffffd1ac","0x400280007ff97fff","0x10780017fff7fff","0x5b","0x4825800180007ffa","0x2e54","0x400280007ff97fff","0x48297ffc80007ffd","0x482680017ff98000","0x1","0x4824800180007ffe","0x0","0x20680017fff7fff","0x4","0x10780017fff7fff","0x10","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ffc7fff8000","0x48127ff97fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0xb0d","0x482480017fff8000","0xb0c","0x480080007fff8000","0xa0680017fff8000","0x9","0x4824800180007ff7","0x0","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff77fff","0x10780017fff7fff","0x24","0x4824800180007ff7","0x0","0x400080007ff87fff","0x482480017ff88000","0x1","0x48127ffe7fff8000","0x480a7ffb7fff8000","0x1104800180018000","0x2d3","0x20680017fff7ffd","0x11","0x40780017fff7fff","0x1","0x48127ffe7fff8000","0x48127ffe7fff8000","0x48127ffd7fff8000","0x1104800180018000","0x2c2","0x48127feb7fff8000","0x48127feb7fff8000","0x48127feb7fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017ff58000","0x1","0x48127ff27fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xfffffffffffffffffffffffffffef32c","0x400280007ff97fff","0x10780017fff7fff","0x5e","0x4825800180007ffa","0x10cd4","0x400280007ff97fff","0x48297ffc80007ffd","0x482680017ff98000","0x1","0x4824800180007ffe","0x0","0x20680017fff7fff","0x4","0x10780017fff7fff","0x10","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ffc7fff8000","0x48127ff97fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0xa9e","0x482480017fff8000","0xa9d","0x480080007fff8000","0xa0680017fff8000","0x9","0x4824800180007ff7","0x0","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff77fff","0x10780017fff7fff","0x27","0x4824800180007ff7","0x0","0x400080007ff87fff","0x482480017ff88000","0x1","0x48127ffe7fff8000","0x480a7ffb7fff8000","0x1104800180018000","0x27c","0x20680017fff7ffb","0x14","0x40780017fff7fff","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x48127ffa7fff8000","0x1104800180018000","0x28d","0x48127fab7fff8000","0x48127fab7fff8000","0x48127fab7fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ff87fff8000","0x48127ff87fff8000","0x48127ff87fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017ff58000","0x1","0x48127ff27fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffff9200","0x400280007ff97fff","0x10780017fff7fff","0x6c","0x4825800180007ffa","0x6e00","0x400280007ff97fff","0x482680017ff98000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x25c","0x20680017fff7ffd","0x53","0x48307ffb80007ffc","0x4824800180007fff","0x0","0x20680017fff7fff","0x4","0x10780017fff7fff","0x10","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ff67fff8000","0x48127fb37fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0xa26","0x482480017fff8000","0xa25","0x480080007fff8000","0xa0680017fff8000","0x9","0x4824800180007fb1","0x0","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff17fff","0x10780017fff7fff","0x21","0x4824800180007fb1","0x0","0x400080007ff27fff","0x48127fff7fff8000","0x480a7ffb7fff8000","0x48127ff47fff8000","0x48127ff47fff8000","0x1104800180018000","0x25a","0x482480017fc48000","0x1","0x20680017fff7ffc","0xc","0x40780017fff7fff","0x1","0x48127ffe7fff8000","0x48127ff87fff8000","0x48127ff87fff8000","0x480680017fff8000","0x0","0x48127ffb7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127fff7fff8000","0x48127ff97fff8000","0x48127ff97fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017fef8000","0x1","0x48127fac7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x48127ff87fff8000","0x48127fb57fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xfffffffffffffffffffffffffffef2c8","0x400280007ff97fff","0x10780017fff7fff","0x6e","0x4825800180007ffa","0x10d38","0x400280007ff97fff","0x482680017ff98000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x220","0x20680017fff7ffb","0x55","0x48307ff980007ffa","0x4824800180007fff","0x0","0x20680017fff7fff","0x4","0x10780017fff7fff","0x10","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ff47fff8000","0x48127f5f7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x9a6","0x482480017fff8000","0x9a5","0x480080007fff8000","0xa0680017fff8000","0x9","0x4824800180007f5d","0x0","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007fef7fff","0x10780017fff7fff","0x23","0x4824800180007f5d","0x0","0x400080007ff07fff","0x482480017ff08000","0x1","0x48127ffe7fff8000","0x480a7ffb7fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x1104800180018000","0x224","0x20680017fff7ffd","0xc","0x40780017fff7fff","0x1","0x48127ff97fff8000","0x48127ff97fff8000","0x48127ff97fff8000","0x480680017fff8000","0x0","0x48127ffb7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017fed8000","0x1","0x48127f587fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x48127ff67fff8000","0x48127f617fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xfffffffffffffffffffffffffffdbcb4","0x400280007ff97fff","0x10780017fff7fff","0x81","0x4825800180007ffa","0x2434c","0x400280007ff97fff","0x482680017ff98000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x1f1","0x20680017fff7ffe","0x68","0x48127ffb7fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x1104800180018000","0x1ea","0x20680017fff7ffe","0x53","0x48307ffc80007ffd","0x4824800180007fff","0x0","0x20680017fff7fff","0x4","0x10780017fff7fff","0x10","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ff77fff8000","0x48127fbc7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x91d","0x482480017fff8000","0x91c","0x480080007fff8000","0xa0680017fff8000","0x9","0x4824800180007fba","0x0","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff27fff","0x10780017fff7fff","0x21","0x4824800180007fba","0x0","0x400080007ff37fff","0x482480017ff38000","0x1","0x48127ffe7fff8000","0x480a7ffb7fff8000","0x48127fd57fff8000","0x48127ff37fff8000","0x1104800180018000","0x1f3","0x20680017fff7ffd","0xc","0x40780017fff7fff","0x1","0x48127ff97fff8000","0x48127ff97fff8000","0x48127ff97fff8000","0x480680017fff8000","0x0","0x48127ffb7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017ff08000","0x1","0x48127fb57fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202332","0x400080007ffe7fff","0x48127ff97fff8000","0x48127fbe7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x48127ff97fff8000","0x48127fdd7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x22e","0x20680017fff7ffd","0xa","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x400380007ffd7ffb","0x480a7ffc7fff8000","0x482680017ffd8000","0x1","0x208b7fff7fff7ffe","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x245","0x20680017fff7ffd","0xa","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x260","0x20680017fff7ffd","0xb","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcc","0x48127ffe7fff8000","0x48127ffe7fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x26d","0x20680017fff7ffd","0xa","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x480a7ffa7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x282","0x480a7ffb7fff8000","0x48127ffd7fff8000","0x48127ffd7fff8000","0x1104800180018000","0x27d","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x27f","0x20680017fff7ffd","0xb","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff8a","0x48127ffe7fff8000","0x48127ffe7fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x28c","0x20680017fff7ffd","0xb","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x2a1","0x20680017fff7ffb","0xc","0x48127ff87fff8000","0x48127ff87fff8000","0x48127ff87fff8000","0x480680017fff8000","0x0","0x48127ff87fff8000","0x48127ff87fff8000","0x48127ff87fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x48127ff87fff8000","0x48127ff87fff8000","0x48127ff87fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ff87fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x480a7ff87fff8000","0x480a7ff97fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff9d","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x48127ffc7fff8000","0x48127ffc7fff8000","0x1104800180018000","0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff97","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x304","0x20680017fff7ffe","0x1b","0x48127ffb7fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x1104800180018000","0x2fd","0x20680017fff7ffe","0xa","0x48127ffb7fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x0","0x48127fdd7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ffb7fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1e","0x48127fdd7fff8000","0x48127fdd7fff8000","0x48127fdd7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x30d","0x20680017fff7ffd","0xb","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffba","0x20680017fff7ffd","0x21","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x1104800180018000","0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffb3","0x20680017fff7ffd","0xc","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x0","0x48127fb37fff8000","0x48127fb37fff8000","0x48127ff87fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x40780017fff7fff","0x47","0x48127fb37fff8000","0x48127fb37fff8000","0x48127fb37fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x480a7ff77fff8000","0x480a7ff87fff8000","0x480a7ff97fff8000","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x2da","0x20680017fff7ffd","0xc","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x355","0x20680017fff7ffe","0x2b","0xa0680017fff8004","0xe","0x4824800180047ffe","0x800000000000000000000000000000000000000000000000000000000000000","0x484480017ffe8000","0x110000000000000000","0x48307ffe7fff8002","0x480280007ffb7ffc","0x480280017ffb7ffc","0x402480017ffb7ffd","0xffffffffffffffeeffffffffffffffff","0x400280027ffb7ffd","0x10780017fff7fff","0x14","0x484480017fff8001","0x8000000000000000000000000000000","0x48307fff80007ffd","0x480280007ffb7ffd","0x480280017ffb7ffd","0x402480017ffc7ffe","0xf8000000000000000000000000000000","0x400280027ffb7ffe","0x40780017fff7fff","0x1","0x482680017ffb8000","0x3","0x48127ff57fff8000","0x48127ff57fff8000","0x480680017fff8000","0x0","0x48127ff57fff8000","0x208b7fff7fff7ffe","0x482680017ffb8000","0x3","0x48127ff57fff8000","0x48127ff57fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x40780017fff7fff","0x6","0x480a7ffb7fff8000","0x48127ff57fff8000","0x48127ff57fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x504f4f4c5f54455354","0x1104800180018000","0x33e","0x20680017fff7ffd","0x7d","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x5054","0x1104800180018000","0x36a","0x20680017fff7ffd","0x6b","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x8","0x1104800180018000","0x396","0x20680017fff7ffd","0x59","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x64","0x480680017fff8000","0x0","0x1104800180018000","0x24f","0x20680017fff7ffd","0x45","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480a7ffc7fff8000","0x1104800180018000","0x3b9","0x20680017fff7ffd","0x34","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x3e6","0x20680017fff7ffd","0x23","0x480a7ff97fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x2710","0x480680017fff8000","0x0","0x480680017fff8000","0x3e8","0x480680017fff8000","0x0","0x1104800180018000","0x250","0x20680017fff7ffd","0xc","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x65","0x480a7ff97fff8000","0x48127f957fff8000","0x48127f957fff8000","0x480680017fff8000","0x1","0x48127f957fff8000","0x48127f957fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x7d","0x480a7ff97fff8000","0x48127f7d7fff8000","0x48127f7d7fff8000","0x480680017fff8000","0x1","0x48127f7d7fff8000","0x48127f7d7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x95","0x480a7ff97fff8000","0x48127f657fff8000","0x48127f657fff8000","0x480680017fff8000","0x1","0x48127f657fff8000","0x48127f657fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0xb8","0x480a7ff97fff8000","0x48127f427fff8000","0x48127f427fff8000","0x480680017fff8000","0x1","0x48127f427fff8000","0x48127f427fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0xd0","0x480a7ff97fff8000","0x48127f2a7fff8000","0x48127f2a7fff8000","0x480680017fff8000","0x1","0x48127f2a7fff8000","0x48127f2a7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0xe8","0x480a7ff97fff8000","0x48127f127fff8000","0x48127f127fff8000","0x480680017fff8000","0x1","0x48127f127fff8000","0x48127f127fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x0","0x480680017fff8000","0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60","0x480680017fff8000","0x53746f7261676552656164","0x400280007ffd7fff","0x400380017ffd7ffc","0x400280027ffd7ffd","0x400280037ffd7ffe","0x480280057ffd8000","0x20680017fff7fff","0xc","0x480280047ffd8000","0x482680017ffd8000","0x7","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480280067ffd8000","0x10780017fff7fff","0x9","0x480280047ffd8000","0x482680017ffd8000","0x8","0x480680017fff8000","0x1","0x480280067ffd8000","0x480280077ffd8000","0x1104800180018000","0x39b","0x20680017fff7ffd","0xa","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x0","0x480680017fff8000","0x216b05c387bab9ac31918a3e61672f4618601f3c598a2f3f2710f37053e1ea4","0x480680017fff8000","0x53746f7261676552656164","0x400280007ffd7fff","0x400380017ffd7ffc","0x400280027ffd7ffd","0x400280037ffd7ffe","0x480280057ffd8000","0x20680017fff7fff","0xc","0x480280047ffd8000","0x482680017ffd8000","0x7","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480280067ffd8000","0x10780017fff7fff","0x9","0x480280047ffd8000","0x482680017ffd8000","0x8","0x480680017fff8000","0x1","0x480280067ffd8000","0x480280077ffd8000","0x1104800180018000","0x36a","0x20680017fff7ffd","0xa","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x4c4fb1ab068f6039d5780c68dd0fa2f8742cceb3426d19667778ca7f3518a9","0x1104800180018000","0x35d","0x20680017fff7ffc","0x1a","0x48127ffd7fff8000","0x48127ffd7fff8000","0x48127ffd7fff8000","0x1104800180018000","0x392","0x20680017fff7ffd","0xb","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x8","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x1","0x48127ff27fff8000","0x48127ff27fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x1557182e4359a1f0c6301278e8f5b35a776ab58d39892581e357578fb287836","0x1104800180018000","0x379","0x20680017fff7ffc","0x19","0x48127ffd7fff8000","0x48127ffd7fff8000","0x48127ffd7fff8000","0x1104800180018000","0x3d2","0x20680017fff7ffd","0xa","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x8","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x1","0x48127ff27fff8000","0x48127ff27fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd28","0x48127ffe7fff8000","0x48127ffe7fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0xce7b6bfaaa8aeaaddf29401347ece7ea1e62dc96b606abb416173ce5e5e382","0x1104800180018000","0x3b1","0x20680017fff7ffc","0x1a","0x48127ffd7fff8000","0x48127ffd7fff8000","0x48127ffd7fff8000","0x1104800180018000","0x3e6","0x20680017fff7ffd","0xb","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x8","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x1","0x48127ff27fff8000","0x48127ff27fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x1acb5f40be40787cd115a42c316da9ad26cc6a72436967b82f7a6ea298c7ae0","0x1104800180018000","0x384","0x20680017fff7ffc","0x1a","0x48127ffd7fff8000","0x48127ffd7fff8000","0x48127ffd7fff8000","0x1104800180018000","0x3b9","0x20680017fff7ffd","0xb","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x8","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x1","0x48127ff27fff8000","0x48127ff27fff8000","0x208b7fff7fff7ffe","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x1a1e24e81d2b2e2a809d5f3ae3e459b4741a0dcb4699300377361b53beec8b3","0x1104800180018000","0x2eb","0x20680017fff7ffc","0x76","0x20680017fff7ffd","0x4d","0x48127ff97fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x1","0x1104800180018000","0x395","0x20680017fff7ffd","0x36","0x48127ffc7fff8000","0x48127fe37fff8000","0x48127fe37fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x1a1e24e81d2b2e2a809d5f3ae3e459b4741a0dcb4699300377361b53beec8b3","0x48127ffa7fff8000","0x1104800180018000","0x3b4","0x20680017fff7ffc","0x1c","0x20680017fff7ffd","0xd","0x48127ff97fff8000","0x48127ff97fff8000","0x48127ff97fff8000","0x480680017fff8000","0x0","0x48127f997fff8000","0x48127f997fff8000","0x48127ff87fff8000","0x48127ff87fff8000","0x10780017fff7fff","0x38","0x48127ff97fff8000","0x48127ff97fff8000","0x48127ff97fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ff87fff8000","0x48127ff87fff8000","0x10780017fff7fff","0x2b","0x40780017fff7fff","0xf","0x48127fea7fff8000","0x48127fea7fff8000","0x48127fea7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127fe97fff8000","0x48127fe97fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x5a","0x48127fa27fff8000","0x48127f897fff8000","0x48127f897fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127f9e7fff8000","0x48127f9e7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x61","0x48127f987fff8000","0x48127f987fff8000","0x48127f987fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127f977fff8000","0x48127f977fff8000","0x1104800180018000","0x3ef","0x20680017fff7ffb","0xc","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x0","0x48127ff87fff8000","0x48127ff87fff8000","0x48127ff87fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x48127ff17fff8000","0x48127ff17fff8000","0x48127ff17fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ff87fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x70","0x48127f897fff8000","0x48127f897fff8000","0x48127f897fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127f887fff8000","0x48127f887fff8000","0x208b7fff7fff7ffe","0x48297ffc80007ffd","0x20680017fff7fff","0x4","0x10780017fff7fff","0xa","0x482680017ffc8000","0x1","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480a7ffc7fff8000","0x10780017fff7fff","0x8","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x48127ffc7fff8000","0x48127ffc7fff8000","0x20680017fff7ffc","0x17","0x480a7ffb7fff8000","0x480080007ffc8000","0x1104800180018000","0x3c0","0x20680017fff7ffe","0x9","0x48127ffd7fff8000","0x48127ff07fff8000","0x48127ff07fff8000","0x480680017fff8000","0x0","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x48127ffd7fff8000","0x48127ff07fff8000","0x48127ff07fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x40780017fff7fff","0xd","0x480a7ffb7fff8000","0x48127ff07fff8000","0x48127ff07fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x1557182e4359a1f0c6301278e8f5b35a776ab58d39892581e357578fb287836","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x3c2","0x1104800180018000","0x3f3","0x20680017fff7ffd","0xb","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x480a7ff87fff8000","0x480a7ff97fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x1a1e24e81d2b2e2a809d5f3ae3e459b4741a0dcb4699300377361b53beec8b3","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x1104800180018000","0x3a4","0x20680017fff7ffd","0x6a","0x480a7ff77fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x1","0x1104800180018000","0x2b5","0x20680017fff7ffd","0x57","0x480680017fff8000","0x1a1e24e81d2b2e2a809d5f3ae3e459b4741a0dcb4699300377361b53beec8b3","0x480680017fff8000","0x0","0x48307ffd7ffe8000","0x480680017fff8000","0x53746f726167655772697465","0x400080007fe27fff","0x400080017fe27fe1","0x400080027fe27ffd","0x400080037fe27ffe","0x400180047fe27ffc","0x480080067fe28000","0x20680017fff7fff","0x3c","0x48127ff77fff8000","0x48127ff97fff8000","0x480680017fff8000","0x1","0x1104800180018000","0x29e","0x480080057fcb8000","0x482480017fca8000","0x7","0x20680017fff7ffb","0x27","0x480680017fff8000","0x1a1e24e81d2b2e2a809d5f3ae3e459b4741a0dcb4699300377361b53beec8b3","0x480680017fff8000","0x0","0x48307ffb7ffe8000","0x480680017fff8000","0x53746f726167655772697465","0x400080007ffb7fff","0x400080017ffb7ffa","0x400080027ffb7ffd","0x400080037ffb7ffe","0x400180047ffb7ffd","0x480080067ffb8000","0x20680017fff7fff","0xe","0x48127ff57fff8000","0x480080057ff98000","0x482480017ff88000","0x7","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x10780017fff7fff","0x20","0x48127ff57fff8000","0x480080057ff98000","0x482480017ff88000","0x9","0x480680017fff8000","0x1","0x480080077ff68000","0x480080087ff58000","0x10780017fff7fff","0x16","0x40780017fff7fff","0x10","0x48127fea7fff8000","0x48127fed7fff8000","0x48127fed7fff8000","0x480680017fff8000","0x1","0x48127fe87fff8000","0x48127fe87fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1d","0x48127fda7fff8000","0x480080057fc38000","0x482480017fc28000","0x9","0x480680017fff8000","0x1","0x480080077fc08000","0x480080087fbf8000","0x10780017fff7fff","0x15","0x40780017fff7fff","0x2d","0x48127fcf7fff8000","0x48127fb77fff8000","0x48127fb77fff8000","0x480680017fff8000","0x1","0x48127fcd7fff8000","0x48127fcd7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x38","0x480a7ff77fff8000","0x48127fc27fff8000","0x48127fc27fff8000","0x480680017fff8000","0x1","0x48127fc27fff8000","0x48127fc27fff8000","0x1104800180018000","0x362","0x20680017fff7ffd","0xc","0x48127ff57fff8000","0x48127ff57fff8000","0x48127ff57fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x48127ff57fff8000","0x48127ff57fff8000","0x48127ff57fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x48297ffc80007ffd","0x20680017fff7fff","0x4","0x10780017fff7fff","0xa","0x482680017ffc8000","0x1","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480a7ffc7fff8000","0x10780017fff7fff","0x8","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x48127ffc7fff8000","0x48127ffc7fff8000","0x20680017fff7ffc","0x8","0x48127ffe7fff8000","0x48127ffe7fff8000","0x480680017fff8000","0x0","0x480080007ffa8000","0x208b7fff7fff7ffe","0x48127ffe7fff8000","0x48127ffe7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x480680017fff8000","0x0","0x480680017fff8000","0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60","0x480680017fff8000","0x53746f726167655772697465","0x400280007ffc7fff","0x400380017ffc7ffb","0x400280027ffc7ffd","0x400280037ffc7ffe","0x400380047ffc7ffd","0x480280067ffc8000","0x20680017fff7fff","0xd","0x480280057ffc8000","0x482680017ffc8000","0x7","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x10780017fff7fff","0x9","0x480280057ffc8000","0x482680017ffc8000","0x9","0x480680017fff8000","0x1","0x480280077ffc8000","0x480280087ffc8000","0x1104800180018000","0x308","0x20680017fff7ffd","0xb","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x0","0x480680017fff8000","0x216b05c387bab9ac31918a3e61672f4618601f3c598a2f3f2710f37053e1ea4","0x480680017fff8000","0x53746f726167655772697465","0x400280007ffc7fff","0x400380017ffc7ffb","0x400280027ffc7ffd","0x400280037ffc7ffe","0x400380047ffc7ffd","0x480280067ffc8000","0x20680017fff7fff","0xd","0x480280057ffc8000","0x482680017ffc8000","0x7","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x10780017fff7fff","0x9","0x480280057ffc8000","0x482680017ffc8000","0x9","0x480680017fff8000","0x1","0x480280077ffc8000","0x480280087ffc8000","0x1104800180018000","0x2d4","0x20680017fff7ffd","0xb","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x0","0x480680017fff8000","0x4c4fb1ab068f6039d5780c68dd0fa2f8742cceb3426d19667778ca7f3518a9","0x480680017fff8000","0x53746f726167655772697465","0x400280007ffc7fff","0x400380017ffc7ffb","0x400280027ffc7ffd","0x400280037ffc7ffe","0x400380047ffc7ffd","0x480280067ffc8000","0x20680017fff7fff","0xd","0x480280057ffc8000","0x482680017ffc8000","0x7","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x10780017fff7fff","0x9","0x480280057ffc8000","0x482680017ffc8000","0x9","0x480680017fff8000","0x1","0x480280077ffc8000","0x480280087ffc8000","0x1104800180018000","0x2a0","0x20680017fff7ffd","0xb","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x0","0x480680017fff8000","0xce7b6bfaaa8aeaaddf29401347ece7ea1e62dc96b606abb416173ce5e5e382","0x480680017fff8000","0x53746f726167655772697465","0x400280007ffc7fff","0x400380017ffc7ffb","0x400280027ffc7ffd","0x400280037ffc7ffe","0x400380047ffc7ffd","0x480280067ffc8000","0x20680017fff7fff","0xd","0x480280057ffc8000","0x482680017ffc8000","0x7","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x10780017fff7fff","0x9","0x480280057ffc8000","0x482680017ffc8000","0x9","0x480680017fff8000","0x1","0x480280077ffc8000","0x480280087ffc8000","0x1104800180018000","0x26c","0x20680017fff7ffd","0xb","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x0","0x480680017fff8000","0x1acb5f40be40787cd115a42c316da9ad26cc6a72436967b82f7a6ea298c7ae0","0x480680017fff8000","0x53746f726167655772697465","0x400280007ffc7fff","0x400380017ffc7ffb","0x400280027ffc7ffd","0x400280037ffc7ffe","0x400380047ffc7ffd","0x480280067ffc8000","0x20680017fff7fff","0xd","0x480280057ffc8000","0x482680017ffc8000","0x7","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x10780017fff7fff","0x9","0x480280057ffc8000","0x482680017ffc8000","0x9","0x480680017fff8000","0x1","0x480280077ffc8000","0x480280087ffc8000","0x1104800180018000","0x238","0x20680017fff7ffd","0xb","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x48127ff67fff8000","0x48127ff67fff8000","0x480680017fff8000","0x1","0x48127ffb7fff8000","0x48127ffb7fff8000","0x208b7fff7fff7ffe","0x20780017fff7ffb","0x8","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x53746f7261676552656164","0x400280007ffb7fff","0x400380017ffb7ffa","0x400380027ffb7ffc","0x400380037ffb7ffd","0x480280057ffb8000","0x20680017fff7fff","0x28","0x480a7ff97fff8000","0x480280067ffb8000","0x1104800180018000","0x21a","0x480280047ffb8000","0x482680017ffb8000","0x7","0x20680017fff7ffc","0xf","0x40780017fff7fff","0x2","0x48127ff97fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ff57fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x53746f72655538202d206e6f6e207538","0x400080007ffe7fff","0x48127ff97fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x12","0x480a7ff97fff8000","0x480280047ffb8000","0x482680017ffb8000","0x8","0x480680017fff8000","0x0","0x480680017fff8000","0x1","0x480280067ffb8000","0x480280077ffb8000","0x208b7fff7fff7ffe","0x20780017fff7ffb","0x8","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0x480a7ff97fff8000","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x1fd","0x20680017fff7ffc","0x4d","0x20680017fff7ffd","0x3f","0x482680017ffd8000","0x1","0x480680017fff8000","0x53746f7261676552656164","0x400080007ff97fff","0x400080017ff97ff8","0x400180027ff97ffc","0x400080037ff97ffe","0x480080057ff98000","0x20680017fff7fff","0x27","0x48127ff67fff8000","0x480080067ff78000","0x1104800180018000","0x15c","0x480080047feb8000","0x482480017fea8000","0x7","0x20680017fff7ffc","0xe","0x40780017fff7fff","0x2","0x48127ff97fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127fe67fff8000","0x48127ff57fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x53746f726555313238202d206e6f6e2075313238","0x400080007ffe7fff","0x48127ff97fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x11","0x48127fe57fff8000","0x480080047fe68000","0x482480017fe58000","0x8","0x480680017fff8000","0x0","0x480680017fff8000","0x1","0x480080067fe28000","0x480080077fe18000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x14","0x48127fe57fff8000","0x48127fe57fff8000","0x48127fe57fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x1","0x48127fe57fff8000","0x48127fe57fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x14","0x48127fe57fff8000","0x48127fe57fff8000","0x48127fe57fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x48127fe57fff8000","0x48127fe57fff8000","0x208b7fff7fff7ffe","0x20780017fff7ffb","0x7","0x480680017fff8000","0x0","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x53746f7261676552656164","0x400280007ffb7fff","0x400380017ffb7ffa","0x400380027ffb7ffc","0x400380037ffb7ffd","0x480280057ffb8000","0x20680017fff7fff","0x28","0x480a7ff97fff8000","0x480280067ffb8000","0x1104800180018000","0x1c7","0x480280047ffb8000","0x482680017ffb8000","0x7","0x20680017fff7ffc","0xf","0x40780017fff7fff","0x2","0x48127ff97fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ff57fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4e6f6e20436f6e747261637441646472657373","0x400080007ffe7fff","0x48127ff97fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x11","0x480a7ff97fff8000","0x480280047ffb8000","0x482680017ffb8000","0x8","0x480680017fff8000","0x0","0x480680017fff8000","0x1","0x480280067ffb8000","0x480280077ffb8000","0x208b7fff7fff7ffe","0x20780017fff7ffb","0x8","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0xa0680017fff8000","0x8","0x482a7ffd7ffc8000","0x4824800180007fff","0x100","0x400280007ffb7fff","0x10780017fff7fff","0xd","0x482a7ffd7ffc8001","0x4824800180007fff","0xffffffffffffffffffffffffffffff00","0x400280007ffb7ffe","0x482680017ffb8000","0x1","0x480680017fff8000","0x0","0x48127ffd7fff8000","0x10780017fff7fff","0x7","0x482680017ffb8000","0x1","0x480680017fff8000","0x1","0x48127ffd7fff8000","0x480680017fff8000","0x75385f616464204f766572666c6f77","0x1104800180018000","0x195","0x20680017fff7ffd","0x9","0x48127ff67fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ffc7fff8000","0x208b7fff7fff7ffe","0x48127ff67fff8000","0x480680017fff8000","0x1","0x48127ffc7fff8000","0x48127ffc7fff8000","0x208b7fff7fff7ffe","0x482a7ffd7ffc8000","0x480680017fff8000","0x53746f7261676552656164","0x400280007ffa7fff","0x400380017ffa7ff9","0x400380027ffa7ffb","0x400280037ffa7ffe","0x480280057ffa8000","0x20680017fff7fff","0x6d","0x480a7ff87fff8000","0x480280067ffa8000","0x1104800180018000","0x88","0x480280047ffa8000","0x482680017ffa8000","0x7","0x20680017fff7ffc","0x52","0x48127ffb7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x1","0x1104800180018000","0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbf","0x20680017fff7ffd","0x3e","0x48327fff7ffc8000","0x480680017fff8000","0x53746f7261676552656164","0x400080007fe77fff","0x400080017fe77fe6","0x400180027fe77ffb","0x400080037fe77ffe","0x480080057fe78000","0x20680017fff7fff","0x27","0x48127ff97fff8000","0x480080067fe58000","0x1104800180018000","0x6d","0x480080047fd98000","0x482480017fd88000","0x7","0x20680017fff7ffc","0xe","0x40780017fff7fff","0x2","0x48127ff97fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127fce7fff8000","0x48127ff57fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x53746f726555313238202d206e6f6e2075313238","0x400080007ffe7fff","0x48127ff97fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x11","0x48127fe87fff8000","0x480080047fd48000","0x482480017fd38000","0x8","0x480680017fff8000","0x0","0x480680017fff8000","0x1","0x480080067fd08000","0x480080077fcf8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x14","0x48127fe87fff8000","0x48127fd37fff8000","0x48127fd37fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x48127fe57fff8000","0x48127fe57fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x28","0x40780017fff7fff","0x1","0x480680017fff8000","0x53746f726555313238202d206e6f6e2075313238","0x400080007ffe7fff","0x48127fd17fff8000","0x48127fd37fff8000","0x48127fd37fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x39","0x480a7ff87fff8000","0x480280047ffa8000","0x482680017ffa8000","0x8","0x480680017fff8000","0x0","0x480680017fff8000","0x1","0x480280067ffa8000","0x480280077ffa8000","0x208b7fff7fff7ffe","0x20780017fff7ff9","0x9","0x480680017fff8000","0x0","0x480a7ffa7fff8000","0x480a7ffb7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0xa0680017fff8000","0x16","0x480280007ffc8003","0x480280017ffc8003","0x4844800180017ffe","0x100000000000000000000000000000000","0x483180017ffd7ffd","0x482480017fff7ffd","0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001","0x20680017fff7ffc","0x6","0x402480017fff7ffd","0xffffffffffffffffffffffffffffffff","0x10780017fff7fff","0x4","0x402480017ffe7ffd","0xf7ffffffffffffef0000000000000000","0x400280027ffc7ffd","0x20680017fff7ffe","0xe","0x402780017fff7fff","0x1","0x400380007ffc7ffd","0x40780017fff7fff","0x5","0x482680017ffc8000","0x1","0x480680017fff8000","0x0","0x480a7ffd7fff8000","0x10780017fff7fff","0x8","0x482680017ffc8000","0x3","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x480680017fff8000","0x53746f726167655772697465","0x400280007ff97fff","0x400380017ff97ff8","0x400380027ff97ffa","0x400380037ff97ffb","0x400380047ff97ffc","0x480280067ff98000","0x20680017fff7fff","0x21","0x480280057ff98000","0x482680017ffb8000","0x1","0x480680017fff8000","0x53746f726167655772697465","0x400280077ff97fff","0x400280087ff97ffd","0x400380097ff97ffa","0x4002800a7ff97ffe","0x4003800b7ff97ffd","0x4802800d7ff98000","0x20680017fff7fff","0xc","0x4802800c7ff98000","0x482680017ff98000","0xe","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x4802800c7ff98000","0x482680017ff98000","0x10","0x480680017fff8000","0x1","0x4802800e7ff98000","0x4802800f7ff98000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x4","0x480280057ff98000","0x482680017ff98000","0x9","0x480680017fff8000","0x1","0x480280077ff98000","0x480280087ff98000","0x208b7fff7fff7ffe","0x20780017fff7ffb","0x9","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x480680017fff8000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x208b7fff7fff7ffe","0xa0680017fff8000","0x12","0x4825800180007ffd","0x100","0x4844800180008002","0x8000000000000110000000000000000","0x4830800080017ffe","0x480280007ffc7fff","0x482480017ffe8000","0xefffffffffffffde00000000000000ff","0x480280017ffc7fff","0x400280027ffc7ffb","0x402480017fff7ffb","0xffffffffffffffffffffffffffffffff","0x20680017fff7fff","0x11","0x402780017fff7fff","0x1","0x400380007ffc7ffd","0x482680017ffd8000","0xffffffffffffffffffffffffffffff00","0x400280017ffc7fff","0x40780017fff7fff","0x5","0x482680017ffc8000","0x2","0x480680017fff8000","0x0","0x480a7ffd7fff8000","0x10780017fff7fff","0x8","0x482680017ffc8000","0x3","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x480680017fff8000","0x53746f7261676552656164","0x400280007ffb7fff","0x400380017ffb7ffa","0x400380027ffb7ffc","0x400380037ffb7ffd","0x480280057ffb8000","0x20680017fff7fff","0x28","0x480a7ff97fff8000","0x480280067ffb8000","0x1104800180018000","0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff68","0x480280047ffb8000","0x482680017ffb8000","0x7","0x20680017fff7ffc","0xf","0x40780017fff7fff","0x2","0x48127ff97fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x48127ff57fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x53746f726555313238202d206e6f6e2075313238","0x400080007ffe7fff","0x48127ff97fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x11","0x480a7ff97fff8000","0x480280047ffb8000","0x482680017ffb8000","0x8","0x480680017fff8000","0x0","0x480680017fff8000","0x1","0x480280067ffb8000","0x480280077ffb8000","0x208b7fff7fff7ffe","0xa0680017fff8004","0xe","0x4825800180047ffd","0x800000000000000000000000000000000000000000000000000000000000000","0x484480017ffe8000","0x110000000000000000","0x48307ffe7fff8002","0x480280007ffc7ffc","0x480280017ffc7ffc","0x402480017ffb7ffd","0xffffffffffffffeeffffffffffffffff","0x400280027ffc7ffd","0x10780017fff7fff","0x13","0x484480017fff8001","0x8000000000000000000000000000000","0x48317fff80007ffd","0x480280007ffc7ffd","0x480280017ffc7ffd","0x402480017ffc7ffe","0xf8000000000000000000000000000000","0x400280027ffc7ffe","0x40780017fff7fff","0x1","0x482680017ffc8000","0x3","0x480680017fff8000","0x0","0x480a7ffd7fff8000","0x10780017fff7fff","0x8","0x482680017ffc8000","0x3","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x208b7fff7fff7ffe","0x20780017fff7ffb","0xa","0x40780017fff7fff","0x1","0x480680017fff8000","0x0","0x480680017fff8000","0x0","0x480a7ffc7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x400180007fff7ffd","0x480680017fff8000","0x1","0x48127ffe7fff8000","0x482480017ffd8000","0x1","0x208b7fff7fff7ffe"],"hints":[[0,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x1d10"},"rhs":{"Deref":{"register":"FP","offset":-6}},"dst":{"register":"AP","offset":0}}}]],[19,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[38,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x0"},"rhs":{"Deref":{"register":"AP","offset":-8}},"dst":{"register":"AP","offset":0}}}]],[58,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[81,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[96,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[111,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x1d10"},"rhs":{"Deref":{"register":"FP","offset":-6}},"dst":{"register":"AP","offset":0}}}]],[130,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[149,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x0"},"rhs":{"Deref":{"register":"AP","offset":-8}},"dst":{"register":"AP","offset":0}}}]],[169,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[192,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[207,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[222,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x2eae"},"rhs":{"Deref":{"register":"FP","offset":-6}},"dst":{"register":"AP","offset":0}}}]],[241,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[260,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x0"},"rhs":{"Deref":{"register":"AP","offset":-8}},"dst":{"register":"AP","offset":0}}}]],[280,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[303,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[318,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[333,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x71e8"},"rhs":{"Deref":{"register":"FP","offset":-6}},"dst":{"register":"AP","offset":0}}}]],[352,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[371,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x0"},"rhs":{"Deref":{"register":"AP","offset":-8}},"dst":{"register":"AP","offset":0}}}]],[391,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[415,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[430,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[445,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x2e54"},"rhs":{"Deref":{"register":"FP","offset":-6}},"dst":{"register":"AP","offset":0}}}]],[464,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[483,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x0"},"rhs":{"Deref":{"register":"AP","offset":-8}},"dst":{"register":"AP","offset":0}}}]],[503,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[526,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[541,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[556,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x2e54"},"rhs":{"Deref":{"register":"FP","offset":-6}},"dst":{"register":"AP","offset":0}}}]],[575,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[594,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x0"},"rhs":{"Deref":{"register":"AP","offset":-8}},"dst":{"register":"AP","offset":0}}}]],[614,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[637,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[652,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[667,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x10cd4"},"rhs":{"Deref":{"register":"FP","offset":-6}},"dst":{"register":"AP","offset":0}}}]],[686,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[705,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x0"},"rhs":{"Deref":{"register":"AP","offset":-8}},"dst":{"register":"AP","offset":0}}}]],[725,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[751,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[766,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[781,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x6e00"},"rhs":{"Deref":{"register":"FP","offset":-6}},"dst":{"register":"AP","offset":0}}}]],[806,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[825,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x0"},"rhs":{"Deref":{"register":"AP","offset":-78}},"dst":{"register":"AP","offset":0}}}]],[847,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[865,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[880,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[894,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[909,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x10d38"},"rhs":{"Deref":{"register":"FP","offset":-6}},"dst":{"register":"AP","offset":0}}}]],[934,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[953,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x0"},"rhs":{"Deref":{"register":"AP","offset":-162}},"dst":{"register":"AP","offset":0}}}]],[977,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[995,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[1010,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[1024,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[1039,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x2434c"},"rhs":{"Deref":{"register":"FP","offset":-6}},"dst":{"register":"AP","offset":0}}}]],[1071,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[1090,[{"TestLessThanOrEqual":{"lhs":{"Immediate":"0x0"},"rhs":{"Deref":{"register":"AP","offset":-69}},"dst":{"register":"AP","offset":0}}}]],[1112,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[1130,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[1145,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[1159,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[1173,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[1556,[{"TestLessThan":{"lhs":{"Deref":{"register":"AP","offset":-1}},"rhs":{"Immediate":"0x800000000000000000000000000000000000000000000000000000000000000"},"dst":{"register":"AP","offset":4}}}]],[1560,[{"LinearSplit":{"value":{"Deref":{"register":"AP","offset":3}},"scalar":{"Immediate":"0x110000000000000000"},"max_x":{"Immediate":"0xffffffffffffffffffffffffffffffff"},"x":{"register":"AP","offset":-2},"y":{"register":"AP","offset":-1}}}]],[1570,[{"LinearSplit":{"value":{"Deref":{"register":"AP","offset":-2}},"scalar":{"Immediate":"0x8000000000000000000000000000000"},"max_x":{"Immediate":"0xffffffffffffffffffffffffffffffff"},"x":{"register":"AP","offset":-1},"y":{"register":"AP","offset":0}}}]],[1758,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-3}}}}]],[1807,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-3}}}}]],[2291,[{"SystemCall":{"system":{"Deref":{"register":"AP","offset":-30}}}}]],[2317,[{"SystemCall":{"system":{"Deref":{"register":"AP","offset":-5}}}}]],[2452,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-4}}}}]],[2504,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-4}}}}]],[2556,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-4}}}}]],[2608,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-4}}}}]],[2660,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-4}}}}]],[2720,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-5}}}}]],[2745,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[2806,[{"SystemCall":{"system":{"Deref":{"register":"AP","offset":-7}}}}]],[2830,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[2901,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-5}}}}]],[2926,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[2968,[{"TestLessThan":{"lhs":{"BinOp":{"op":"Add","a":{"register":"FP","offset":-4},"b":{"Deref":{"register":"FP","offset":-3}}}},"rhs":{"Immediate":"0x100"},"dst":{"register":"AP","offset":0}}}]],[3018,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-6}}}}]],[3045,[{"SystemCall":{"system":{"Deref":{"register":"AP","offset":-25}}}}]],[3069,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[3112,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[3159,[{"TestLessThan":{"lhs":{"Deref":{"register":"FP","offset":-3}},"rhs":{"Immediate":"0x100000000000000000000000000000000"},"dst":{"register":"AP","offset":0}}}]],[3161,[{"DivMod":{"lhs":{"Deref":{"register":"FP","offset":-3}},"rhs":{"Immediate":"0x100000000000000000000000000000000"},"quotient":{"register":"AP","offset":3},"remainder":{"register":"AP","offset":4}}}]],[3205,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-7}}}}]],[3218,[{"SystemCall":{"system":{"BinOp":{"op":"Add","a":{"register":"FP","offset":-7},"b":{"Immediate":"0x7"}}}}}]],[3263,[{"TestLessThan":{"lhs":{"Deref":{"register":"FP","offset":-3}},"rhs":{"Immediate":"0x100"},"dst":{"register":"AP","offset":0}}}]],[3267,[{"LinearSplit":{"value":{"Deref":{"register":"AP","offset":-1}},"scalar":{"Immediate":"0x8000000000000110000000000000000"},"max_x":{"Immediate":"0xfffffffffffffffffffffffffffffffe"},"x":{"register":"AP","offset":0},"y":{"register":"AP","offset":1}}}]],[3307,[{"SystemCall":{"system":{"Deref":{"register":"FP","offset":-5}}}}]],[3332,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]],[3361,[{"TestLessThan":{"lhs":{"Deref":{"register":"FP","offset":-3}},"rhs":{"Immediate":"0x800000000000000000000000000000000000000000000000000000000000000"},"dst":{"register":"AP","offset":4}}}]],[3365,[{"LinearSplit":{"value":{"Deref":{"register":"AP","offset":3}},"scalar":{"Immediate":"0x110000000000000000"},"max_x":{"Immediate":"0xffffffffffffffffffffffffffffffff"},"x":{"register":"AP","offset":-2},"y":{"register":"AP","offset":-1}}}]],[3375,[{"LinearSplit":{"value":{"Deref":{"register":"FP","offset":-3}},"scalar":{"Immediate":"0x8000000000000000000000000000000"},"max_x":{"Immediate":"0xffffffffffffffffffffffffffffffff"},"x":{"register":"AP","offset":-1},"y":{"register":"AP","offset":0}}}]],[3409,[{"AllocSegment":{"dst":{"register":"AP","offset":0}}}]]],"pythonic_hints":[[0,["memory[ap + 0] = 7440 <= memory[fp + -6]"]],[19,["memory[ap + 0] = segments.add()"]],[38,["memory[ap + 0] = 0 <= memory[ap + -8]"]],[58,["memory[ap + 0] = segments.add()"]],[81,["memory[ap + 0] = segments.add()"]],[96,["memory[ap + 0] = segments.add()"]],[111,["memory[ap + 0] = 7440 <= memory[fp + -6]"]],[130,["memory[ap + 0] = segments.add()"]],[149,["memory[ap + 0] = 0 <= memory[ap + -8]"]],[169,["memory[ap + 0] = segments.add()"]],[192,["memory[ap + 0] = segments.add()"]],[207,["memory[ap + 0] = segments.add()"]],[222,["memory[ap + 0] = 11950 <= memory[fp + -6]"]],[241,["memory[ap + 0] = segments.add()"]],[260,["memory[ap + 0] = 0 <= memory[ap + -8]"]],[280,["memory[ap + 0] = segments.add()"]],[303,["memory[ap + 0] = segments.add()"]],[318,["memory[ap + 0] = segments.add()"]],[333,["memory[ap + 0] = 29160 <= memory[fp + -6]"]],[352,["memory[ap + 0] = segments.add()"]],[371,["memory[ap + 0] = 0 <= memory[ap + -8]"]],[391,["memory[ap + 0] = segments.add()"]],[415,["memory[ap + 0] = segments.add()"]],[430,["memory[ap + 0] = segments.add()"]],[445,["memory[ap + 0] = 11860 <= memory[fp + -6]"]],[464,["memory[ap + 0] = segments.add()"]],[483,["memory[ap + 0] = 0 <= memory[ap + -8]"]],[503,["memory[ap + 0] = segments.add()"]],[526,["memory[ap + 0] = segments.add()"]],[541,["memory[ap + 0] = segments.add()"]],[556,["memory[ap + 0] = 11860 <= memory[fp + -6]"]],[575,["memory[ap + 0] = segments.add()"]],[594,["memory[ap + 0] = 0 <= memory[ap + -8]"]],[614,["memory[ap + 0] = segments.add()"]],[637,["memory[ap + 0] = segments.add()"]],[652,["memory[ap + 0] = segments.add()"]],[667,["memory[ap + 0] = 68820 <= memory[fp + -6]"]],[686,["memory[ap + 0] = segments.add()"]],[705,["memory[ap + 0] = 0 <= memory[ap + -8]"]],[725,["memory[ap + 0] = segments.add()"]],[751,["memory[ap + 0] = segments.add()"]],[766,["memory[ap + 0] = segments.add()"]],[781,["memory[ap + 0] = 28160 <= memory[fp + -6]"]],[806,["memory[ap + 0] = segments.add()"]],[825,["memory[ap + 0] = 0 <= memory[ap + -78]"]],[847,["memory[ap + 0] = segments.add()"]],[865,["memory[ap + 0] = segments.add()"]],[880,["memory[ap + 0] = segments.add()"]],[894,["memory[ap + 0] = segments.add()"]],[909,["memory[ap + 0] = 68920 <= memory[fp + -6]"]],[934,["memory[ap + 0] = segments.add()"]],[953,["memory[ap + 0] = 0 <= memory[ap + -162]"]],[977,["memory[ap + 0] = segments.add()"]],[995,["memory[ap + 0] = segments.add()"]],[1010,["memory[ap + 0] = segments.add()"]],[1024,["memory[ap + 0] = segments.add()"]],[1039,["memory[ap + 0] = 148300 <= memory[fp + -6]"]],[1071,["memory[ap + 0] = segments.add()"]],[1090,["memory[ap + 0] = 0 <= memory[ap + -69]"]],[1112,["memory[ap + 0] = segments.add()"]],[1130,["memory[ap + 0] = segments.add()"]],[1145,["memory[ap + 0] = segments.add()"]],[1159,["memory[ap + 0] = segments.add()"]],[1173,["memory[ap + 0] = segments.add()"]],[1556,["memory[ap + 4] = memory[ap + -1] < 3618502788666131106986593281521497120414687020801267626233049500247285301248"]],[1560,["\n(value, scalar) = (memory[ap + 3], 313594649253062377472)\nx = min(value // scalar, 340282366920938463463374607431768211455)\ny = value - x * scalar\nmemory[ap + -2] = x\nmemory[ap + -1] = y\n"]],[1570,["\n(value, scalar) = (memory[ap + -2], 10633823966279326983230456482242756608)\nx = min(value // scalar, 340282366920938463463374607431768211455)\ny = value - x * scalar\nmemory[ap + -1] = x\nmemory[ap + 0] = y\n"]],[1758,["syscall_handler.syscall(syscall_ptr=memory[fp + -3])"]],[1807,["syscall_handler.syscall(syscall_ptr=memory[fp + -3])"]],[2291,["syscall_handler.syscall(syscall_ptr=memory[ap + -30])"]],[2317,["syscall_handler.syscall(syscall_ptr=memory[ap + -5])"]],[2452,["syscall_handler.syscall(syscall_ptr=memory[fp + -4])"]],[2504,["syscall_handler.syscall(syscall_ptr=memory[fp + -4])"]],[2556,["syscall_handler.syscall(syscall_ptr=memory[fp + -4])"]],[2608,["syscall_handler.syscall(syscall_ptr=memory[fp + -4])"]],[2660,["syscall_handler.syscall(syscall_ptr=memory[fp + -4])"]],[2720,["syscall_handler.syscall(syscall_ptr=memory[fp + -5])"]],[2745,["memory[ap + 0] = segments.add()"]],[2806,["syscall_handler.syscall(syscall_ptr=memory[ap + -7])"]],[2830,["memory[ap + 0] = segments.add()"]],[2901,["syscall_handler.syscall(syscall_ptr=memory[fp + -5])"]],[2926,["memory[ap + 0] = segments.add()"]],[2968,["memory[ap + 0] = (memory[fp + -4] + memory[fp + -3]) % PRIME < 256"]],[3018,["syscall_handler.syscall(syscall_ptr=memory[fp + -6])"]],[3045,["syscall_handler.syscall(syscall_ptr=memory[ap + -25])"]],[3069,["memory[ap + 0] = segments.add()"]],[3112,["memory[ap + 0] = segments.add()"]],[3159,["memory[ap + 0] = memory[fp + -3] < 340282366920938463463374607431768211456"]],[3161,["(memory[ap + 3], memory[ap + 4]) = divmod(memory[fp + -3], 340282366920938463463374607431768211456)"]],[3205,["syscall_handler.syscall(syscall_ptr=memory[fp + -7])"]],[3218,["syscall_handler.syscall(syscall_ptr=memory[fp + -7] + 7)"]],[3263,["memory[ap + 0] = memory[fp + -3] < 256"]],[3267,["\n(value, scalar) = (memory[ap + -1], 10633823966279327296825105735305134080)\nx = min(value // scalar, 340282366920938463463374607431768211454)\ny = value - x * scalar\nmemory[ap + 0] = x\nmemory[ap + 1] = y\n"]],[3307,["syscall_handler.syscall(syscall_ptr=memory[fp + -5])"]],[3332,["memory[ap + 0] = segments.add()"]],[3361,["memory[ap + 4] = memory[fp + -3] < 3618502788666131106986593281521497120414687020801267626233049500247285301248"]],[3365,["\n(value, scalar) = (memory[ap + 3], 313594649253062377472)\nx = min(value // scalar, 340282366920938463463374607431768211455)\ny = value - x * scalar\nmemory[ap + -2] = x\nmemory[ap + -1] = y\n"]],[3375,["\n(value, scalar) = (memory[fp + -3], 10633823966279326983230456482242756608)\nx = min(value // scalar, 340282366920938463463374607431768211455)\ny = value - x * scalar\nmemory[ap + -1] = x\nmemory[ap + 0] = y\n"]],[3409,["memory[ap + 0] = segments.add()"]]],"entry_points_by_type":{"EXTERNAL":[{"selector":"0x4c4fb1ab068f6039d5780c68dd0fa2f8742cceb3426d19667778ca7f3518a9","offset":222,"builtins":["range_check"]},{"selector":"0xce7b6bfaaa8aeaaddf29401347ece7ea1e62dc96b606abb416173ce5e5e382","offset":445,"builtins":["range_check"]},{"selector":"0xda5ed79a351296dc4b247685ec62016cef1d4b553581de1c10828fbd4eb4b6","offset":909,"builtins":["range_check"]},{"selector":"0x1557182e4359a1f0c6301278e8f5b35a776ab58d39892581e357578fb287836","offset":333,"builtins":["range_check"]},{"selector":"0x1acb5f40be40787cd115a42c316da9ad26cc6a72436967b82f7a6ea298c7ae0","offset":556,"builtins":["range_check"]},{"selector":"0x216b05c387bab9ac31918a3e61672f4618601f3c598a2f3f2710f37053e1ea4","offset":111,"builtins":["range_check"]},{"selector":"0x3539b27e74dc8cf40e093e2b657711d2c9c8c03f6810b0732f46212f5a78857","offset":781,"builtins":["range_check"]},{"selector":"0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60","offset":0,"builtins":["range_check"]},{"selector":"0x3cb0e1486e633fbe3e2fafe8aedf12b70ca1860e7467ddb75a17858cde39312","offset":667,"builtins":["range_check"]}],"L1_HANDLER":[],"CONSTRUCTOR":[{"selector":"0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194","offset":1039,"builtins":["range_check"]}]}} \ No newline at end of file diff --git a/pragma-sdk/pragma_sdk/onchain/abis/pragma_Pool.sierra.json b/pragma-sdk/pragma_sdk/onchain/abis/pragma_Pool.sierra.json new file mode 100644 index 00000000..4dcadaab --- /dev/null +++ b/pragma-sdk/pragma_sdk/onchain/abis/pragma_Pool.sierra.json @@ -0,0 +1 @@ +{"sierra_program":["0x1","0x3","0x0","0x2","0x2","0x0","0x2bf","0x141","0x51","0x52616e6765436865636b","0x800000000000000100000000000000000000000000000000","0x7538","0x800000000000000700000000000000000000000000000000","0x456e756d","0x800000000000000700000000000000000000000000000003","0x0","0xc048ae671041dedb3ca1f250ad42a27aeddf8a7f491e553e7f2a70ff2e1800","0x1","0x75313238","0x4172726179","0x800000000000000300000000000000000000000000000001","0x1e","0x800000000000000300000000000000000000000000000003","0x2cf4ead4392e987c9b56754a10f0a8e0f13776791e096fa6503893f05582c51","0x3","0x4","0x537472756374","0x800000000000000300000000000000000000000000000002","0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3","0x5","0x800000000000000f00000000000000000000000000000001","0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672","0x7","0x35db377e57ca049334bdd283ee9a74d991b437ea21f0760006234ec7e529d20","0x6","0x8","0x3b9ddf97bd58cc7301a2107c3eabad82196f38221c880cd3645d07c3aac1422","0xa","0x800000000000000f00000000000000000000000000000002","0xcc5e86243f861d2d64b08c35db21013e773ac5cf10097946fe0011304886d5","0xc","0x101dc0399934cc08fa0d6f6f2daead4e4a38cabeea1c743e1fc28d2d6e58e99","0x426f78","0x800000000000000700000000000000000000000000000001","0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7","0xf","0x25e2ca4b84968c2d8b83ef476ca8549410346b00836ce79beaf538155990bb2","0x11","0x26c8d945f359c989bacf756c0af7420e82485e77afbae13489ebbd73795658d","0x12","0x436f6e747261637441646472657373","0x25bafed1db971ec9d9883af3e1e08a185480f03f54ed88b3c1ffa951cde4037","0x14","0x15","0x145068ba3432c23eddd89dd45fe638a782885652788ad82ad6690857df46db5","0x16","0xccf52bb0646785c5ad2a653e9ec60b68f9843823a0c386724530f0e305f2c4","0x18","0x34c208cc73eb75e315a7730284e475ee3050926253aba2fcbcbac0873ddbbc9","0x19","0x3baae81d8b68311d843a3db861802028fc5b88bca4c37f5b121cabb0dfa12ac","0x1b","0xe82f28be99fa1cbe00b18388da8bfdec908ee3097fda05d02792092433ad35","0x1c","0x66656c74323532","0x90d0203c41ad646d024845257a6eceb2f8b59b29ce7420dd518053d2edeedc","0x53746f7261676541646472657373","0x53746f726167654261736541646472657373","0x6bdb0b1e6a8af848dba2fc271c681764433fb90c37e127d7af6b82a87cd4ca","0x800000000000000f00000000000000000000000000000003","0x22","0x346278cc89fb567a6a36e11d2581b5346fa62ce1397d7f42ee03e84925b58ff","0x23","0x3bdc25817d9fe0c1bb0cce77652c41945cb870fb5e5ddf514bc069882bc1513","0x25","0x1c115138ff2ae8efdafb96628d239430acac6919a634a5af251c4e080c99e5f","0x26","0x6920285fa809045a9c09925861833859ab3dcec7d35fdbdf17135ad7a80ad9","0x28","0x368a4e77ccc76447a0adfd0e3d109a0000f9d8e08063d57660700d3ade106aa","0x29","0x139d665e46b519dfe3cfeeda0246239800c50233cab95bc150b71991222c3b1","0x2b","0x1a23edda2ae2518e5f987d002e49d34a4012ba848c8cb5b444430c94f61f0cc","0x2c","0x33427b395e0b9e0e4c74255467f1389dbf3e39ca6a1f83f7b4285d90fe4ca0c","0x2e","0x37c831cb6a5ddc0c2dbaea5487d2ba2bb7ed7b2256a206a0a326a154253c5d8","0x2f","0x11c6d8087e00642489f92d2821ad6ebd6532ad1a3b6d12833da6d6810391511","0x207dacb27f37a3e94d3b1d5ddca3e2a0bd331b7a96aea7c7e8b34bc91faf79e","0x32","0x39a98e349aa9277cb802e86f6685e3ef613ba5deefe8986ed2a0175631ea5be","0x33","0x132b2e9a5b316ca5f8f149f92a92f889ff4167ed7d9fce14fd79ceb13ca0f4d","0x35","0x1540f5bb2ae3b4403159fa60157f32577ff560980ddaf6f9b5edec3d3a43565","0x36","0x1909a2057b9c1373b889e003e050a09f431d8108e0659d03444ced99a6eea68","0x3d37ad6eafb32512d2dd95a2917f6bf14858de22c27a1114392429f2e5c15d7","0x2e3a3c72bbaf02844ea026427da1ee68471ff2dfd44997bdebc7282b287f343","0x800000000000000f00000000000000000000000000000008","0xc36d119f46a194adfda4e78b25a23ccb6ea51b1231aaedbeff4f288819c8e1","0x3b","0x357394976fc064f6adbc92e762d1b0eae965c6f723a1c4a8a148c38c820dbf1","0x3c","0x12867ecd09c884a5cf1f6d9eb0193b4695ce3bb3b2d796a8367d0c371f59cb2","0x800000000000000700000000000000000000000000000002","0x711eca2dc7cf53e8e0da11f141a9da005593d48920e6fd53de0fd37f971093","0x3f","0x3e1934b18d91949ab9afdbdd1866a30ccca06c2b1e6581582c6b27f8b4f6555","0x41","0x2ce4352eafa6073ab4ecf9445ae96214f99c2c33a29c01fcae68ba501d10e2c","0x43","0x2360086d8de14207bc705f7c51c3fc6bb6de6b826f1a4576e4db739d8b5edaf","0x45","0x536e617073686f74","0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62","0x47","0x48","0x10203be321c62a7bd4c060d69539c1fbe065baa9e253c74d2cc48be163e259","0x4a","0x4275696c74696e436f737473","0x53797374656d","0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6","0x49","0x753332","0x4761734275696c74696e","0x176","0x7265766f6b655f61705f747261636b696e67","0x77697468647261775f676173","0x6272616e63685f616c69676e","0x7374727563745f6465636f6e737472756374","0x61727261795f6c656e","0x736e617073686f745f74616b65","0x4f","0x64726f70","0x7533325f636f6e7374","0x2","0x72656e616d65","0x73746f72655f74656d70","0x7533325f6571","0x61727261795f6e6577","0x66656c743235325f636f6e7374","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x61727261795f617070656e64","0x7374727563745f636f6e737472756374","0x656e756d5f696e6974","0x4e","0x50","0x4d","0x6765745f6275696c74696e5f636f737473","0x4c","0x77697468647261775f6761735f616c6c","0x66756e6374696f6e5f63616c6c","0x656e756d5f6d61746368","0x4b","0xb","0x4f7574206f6620676173","0xd","0x46","0xe","0x44","0x10","0x42","0x13","0x40","0x3e","0x17","0x3d","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x3a","0x1a","0x39","0x4661696c656420746f20646573657269616c697a6520706172616d202332","0x1d","0x75385f746f5f66656c74323532","0x1f","0x647570","0x20","0x21","0x636f6e74726163745f616464726573735f746f5f66656c74323532","0x24","0x38","0x37","0x34","0x27","0x31","0x21adb5788e32c84f69a1863d85ef9394b7bf761a0ce1190f826984e5075c371","0x504f4f4c5f54455354","0x30","0x5054","0x2d","0x75385f636f6e7374","0x2a","0x753132385f636f6e7374","0x64","0x2710","0x3e8","0x73746f726167655f626173655f616464726573735f636f6e7374","0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60","0x73746f726167655f616464726573735f66726f6d5f62617365","0x73746f726167655f726561645f73797363616c6c","0x6a756d70","0x216b05c387bab9ac31918a3e61672f4618601f3c598a2f3f2710f37053e1ea4","0x4c4fb1ab068f6039d5780c68dd0fa2f8742cceb3426d19667778ca7f3518a9","0x1557182e4359a1f0c6301278e8f5b35a776ab58d39892581e357578fb287836","0x753132385f746f5f66656c74323532","0xce7b6bfaaa8aeaaddf29401347ece7ea1e62dc96b606abb416173ce5e5e382","0x1acb5f40be40787cd115a42c316da9ad26cc6a72436967b82f7a6ea298c7ae0","0x1a1e24e81d2b2e2a809d5f3ae3e459b4741a0dcb4699300377361b53beec8b3","0x61727261795f736e617073686f745f706f705f66726f6e74","0x756e626f78","0x2679d68052ccd03a53755ca9169677965fbd93e489df62f5f40d4f03c24f7a4","0x73746f726167655f77726974655f73797363616c6c","0x53746f72655538202d206e6f6e207538","0x9","0x53746f726555313238202d206e6f6e2075313238","0x4e6f6e20436f6e747261637441646472657373","0x75385f6f766572666c6f77696e675f616464","0x75385f616464204f766572666c6f77","0x75313238735f66726f6d5f66656c74323532","0x75385f7472795f66726f6d5f66656c74323532","0xb78","0xffffffffffffffff","0x58","0x52","0x53","0x54","0x55","0x56","0x57","0x59","0x5a","0x5b","0xbe","0x82","0xb1","0xaa","0x124","0xe8","0x117","0x110","0x5c","0x5d","0x18a","0x14e","0x17d","0x1f0","0x1b4","0x1e3","0x1dc","0x256","0x21a","0x249","0x242","0x2bc","0x280","0x2af","0x2a8","0x330","0x321","0x2eb","0x313","0x30c","0x5e","0x5f","0x60","0x61","0x62","0x63","0x3a4","0x395","0x35f","0x387","0x380","0x65","0x66","0x430","0x421","0x411","0x3d9","0x402","0x3fb","0x67","0x68","0x69","0x6a","0x6b","0x6c","0x6d","0x6e","0x6f","0x70","0x71","0x72","0x73","0x74","0x75","0x76","0x77","0x78","0x452","0x472","0x48e","0x79","0x7a","0x7b","0x4b7","0x7c","0x7d","0x7e","0x7f","0x80","0x81","0x83","0x84","0x85","0x86","0x87","0x88","0x4e3","0x89","0x8a","0x8b","0x8c","0x8d","0x8e","0x8f","0x90","0x50c","0x91","0x92","0x529","0x93","0x94","0x95","0x96","0x97","0x98","0x99","0x552","0x54b","0x9a","0x9b","0x9c","0x9d","0x9e","0x9f","0x56a","0xa0","0xa1","0xa2","0xa3","0xa4","0x58d","0x586","0xa5","0xa6","0xa7","0xa8","0xa9","0x5a5","0xab","0xac","0xad","0x5c4","0xae","0x5bd","0xaf","0xb0","0xb2","0xb3","0xb4","0x676","0xb5","0xb6","0xb7","0x667","0xb8","0xb9","0xba","0x658","0xbb","0xbc","0x649","0xbd","0x63b","0xbf","0xc0","0x62e","0xc1","0xc2","0x621","0xc3","0xc4","0xc5","0xc6","0xc7","0xc8","0xc9","0xca","0xcb","0xcc","0xcd","0xce","0xcf","0xd0","0xd1","0x692","0xd2","0xd3","0xd4","0x697","0xd5","0xd6","0xd7","0x6a2","0xd8","0x6b5","0x6ba","0x6c5","0xd9","0xda","0xdb","0xdc","0x6ea","0xdd","0xde","0xdf","0x6e3","0xe0","0xe1","0xe2","0x710","0xe3","0xe4","0xe5","0x709","0xe6","0xe7","0xe9","0xea","0x742","0xeb","0xec","0xed","0x73b","0xee","0x768","0x761","0xef","0xf0","0xf1","0x7d0","0xf2","0x7b5","0xf3","0xf4","0x7ab","0xf5","0x7a3","0x79b","0xf6","0xf7","0x7bd","0xf8","0xf9","0xfa","0xfb","0x7c9","0xfc","0x7e0","0xfd","0xfe","0xff","0x7e5","0x100","0x101","0x7fb","0x102","0x103","0x7f5","0x104","0x105","0x106","0x107","0x108","0x109","0x10a","0x818","0x10b","0x10c","0x10d","0x10e","0x10f","0x111","0x112","0x887","0x87c","0x113","0x114","0x115","0x86d","0x862","0x85b","0x116","0x877","0x118","0x119","0x11a","0x11b","0x11c","0x11d","0x890","0x89c","0x11e","0x11f","0x8ab","0x8b0","0x8ba","0x120","0x121","0x122","0x123","0x8d0","0x8d5","0x8e0","0x125","0x126","0x127","0x128","0x8f6","0x8fb","0x906","0x129","0x12a","0x12b","0x12c","0x12d","0x91d","0x922","0x92d","0x12e","0x12f","0x130","0x131","0x132","0x944","0x949","0x954","0x133","0x134","0x135","0x136","0x137","0x96b","0x970","0x97b","0x138","0x139","0x13a","0x13b","0x13c","0x988","0x9ae","0x13d","0x13e","0x9a0","0x13f","0x140","0x141","0x142","0x143","0x144","0x145","0x146","0x9bd","0x147","0x148","0xa09","0x149","0x14a","0x9fe","0x9f4","0x9e5","0x14b","0x14c","0x14d","0x14f","0x150","0x151","0xa18","0xa3e","0x152","0xa30","0x153","0x154","0x155","0x156","0x157","0x158","0x159","0x15a","0xa4d","0x15b","0xa59","0x15c","0x15d","0xa5d","0x15e","0x15f","0x160","0x161","0xa69","0xacc","0xabb","0xab1","0xaa7","0xa98","0x162","0xade","0x163","0xaea","0xaf1","0x164","0xb0e","0xb08","0xb1d","0x165","0x166","0x167","0x168","0x169","0xb29","0x16a","0x16b","0xb2e","0x16c","0x16d","0xb51","0xb43","0x16e","0x16f","0x170","0x171","0x172","0x173","0xb60","0xb65","0x174","0x175","0xb6f","0x198","0x1fe","0x264","0x2ca","0x33e","0x3b2","0x43e","0x458","0x45e","0x478","0x495","0x4a1","0x4be","0x4cd","0x4ea","0x4f6","0x513","0x530","0x53b","0x558","0x576","0x593","0x5b2","0x5ca","0x685","0x6a8","0x6cb","0x6f1","0x717","0x723","0x749","0x76f","0x7d9","0x803","0x81f","0x8a4","0x8c1","0x8e7","0x90d","0x934","0x95b","0x982","0x98e","0x9b7","0x9c3","0xa12","0xa1e","0xa47","0xa53","0xa6e","0xad8","0xae4","0xaf4","0xb17","0xb23","0xb31","0xb5a","0xb68","0x657a","0x100240f01c0e0140d0240c02c0402809024090240801c060140400c0200400","0x906407038050440906009050070381205c0705812054090500704c1204409","0x1f01c0e0141d0241401c1e0481d024090241c01c060141401c160481b0241a","0x12074090940909007018050340908c220440907409084070380506c0908009","0x40a811024290242801c0e01427024270241401c0604810024100242601c06","0x70380506c090bc090b807038050b4090500704c12044090b0090ac0703805","0x90243401c0e0141b024330243201c0e014310241401c13048110242702430","0x9034090e407038050103806c090dc090d807038050d4090500704c1204409","0x1b024400243f01c0e0141d0243e0241401c3d0483c01c16048040ec040e811","0x12114070581206c091100910c07038050740910809050070f4121040705812","0x4a0241401c3d0484901c160481b024480244701c0e0141d024460241401c3d","0x7038050740913809050070f412134070581206c091300912c070380507409","0x1d024530241401c3d0485201c160481d0240d0245101c060141b024500244f","0x916007038050740915c09050070f412158070581206c09154091500703805","0x290245c01c060141d0242c0245b01c060141d024100245a01c060141b02459","0x9050070f41214c090f8091080915c09118091280913809178071741207409","0x290241401c630481d024270246201c060141b024610246001c0e0141d0245f","0x718c1206c0919c0919807038050b0090500718c1206c09194091900703805","0x1b0246b0246a01c0e014090241401c630481b024690246801c0e0142702414","0x703805034090500718c121bc090500718c121b8091b40718c120440908c6c","0x7a01c791e0021dc041d81b024750247401c0e014021cc041c81b0247102470","0x920c07208092047f024092007f024091f80d024091f46f024091f0071ec07","0x8903409024842208202487034090248601c8501c09024841fc09024841fc09","0x8e024092108d02409210092088c0248222c1b0240922818024092280d02409","0x8a118090248a128090248a138090248a01c91240090248401c8f2300902484","0x92005f024091f85f0240922853024092283e0240922842024092285702409","0x902480034090247e1c4090247c2500902493074100249217c090248417c09","0x6f02409228110240920011024091f81d02409200950400924811024092100d","0x100249208010024921bc0902480258820248701c82230092088b1d4090248a","0x99040092480902409210090240920009024091f86b024091f0980240924c97","0x9209c090248409c090248009c090247e1a4090247c26809024930941002492","0x92102c024092002c024091f867024091f09c0240924c27040092489b04009","0x90247e194090247c27809024930b0100249227410024920a410024920b009","0x9f0240924c2f040092486f024092102d040092482902409210290240920029","0x9228c09024930c410024922888202487184090248028409024932801002492","0x92005f024091f0a62080921c3504009248a50240924ca4040092483304009","0x90248414c09024800f80902480108090248015c0902480118090248012809","0x9208940248222c940240921007208940248222c710240922837040092484e","0x8429c1002492128090248413809024800740902484074090248a0340902483","0x980248222c980240921007208980248222c6b024092280d040092484602409","0x82268092088b1a4090248a2a4100249215c090248401ca8024090248302482","0x9210100240920027024091f027024092a8092089a0248222c9a0240921007","0x90248a2b010024921080902484074090248304409024832ac100249204009","0x9210072b42c0240920c092089c0248222c9c02409210072089c0248222c67","0x8401c82278092088b194090248a100100249214c09024840f810024920f809","0x2702409228af0240924cae0400924829024091f0092089e0248222c9e02409","0x7c2c0090249310810024920248227c092088b27c090248401c8227c092088b","0x922809208a10248222ca10240921007208a10248222c61024092285902409","0x90249311010024920248228c092088b28c090248401c8228c092088b0a409","0xa50240921007208a50248222c072d0b30240924cb20400924855024091f0b1","0x10024922dc82024872d8090249311810024922d4820248702482294092088b","0x7208092ecbc208092ecba0240924cba040092481b208092e4b80240924c48","0x7c2f882024bb2f482024bb2b8090249313010024922c809024931281002492","0x92004c0240920040024091f044024091f048024091f04c024091f05002409","0x8401cc130082024bf164090248011009024801000902480140090248012009","0x920c09208a90248222c0730ca90240921007208a90248222c07308ab02409","0x90249313810024922b0090248431482024bf31082024bf2e010024922a409","0xa40240924cb604009248c6208092fc5004009248350240921037024091f0a7","0x100249232082024bf01cc704009024832cc10024920c409024840cc090247c","0xca208092fcc9208092fc55040092482d024092102f024091f0a00240924c53","0x8b15c10024922c4100249202482024b90c409024932b009024aa1fc09024aa","0x92489d0240920cac02409200092089d0248222c9d02409210072089d02482","0x8226c092088b26c09024841b8090248401c8226c092088b03409024cb16410","0x8222caf0240921007208af0248222cb0040092480d024093309b0240924c09","0x7c15c090247e25c0902493294100249226409024832bc1002492024822bc09","0x91f809208b00248222cb00240921007208b00248222c59024092282002409","0x8b264090248401c82264092088b01cce01ccd02409024aa264090249314c09","0x920c8d0240920c070240920cb10240921009208b10248222c092089902482","0x92088b2cc090248401c822cc092088b01c822c4092088b154090248a23809","0xb60248222cb60240921007208b60248222c50024092284e024091f809208b3","0x822e0092088b2e0090248401c822e0092088b130090248a128090247e02482","0x9208ba0248222cba0240921007208ba0248222c480240922846024091f809","0x7e024822c8092088b2c8090248401c822c8092088b110090248a108090247e","0x924c09208ae0248222cae0240921007208ae0248222c40024092283e02409","0x8229c092088b0dc090248a01c820d4092088b254090249328c10024922a409","0x350240924c09208350248222c09208a70248222ccf2080921ca70240921007","0x90248a01c820c4092088b0540902493068090247c340090249317c1002492","0x310248222c09208a40248222cd12080921ca40240921007208a40248222c33","0x90248401c82280092088b0bc090248a01c820b4092088b184100249202482","0x8222c0734c2d0240924c092082d0248222c09208a00248222cd22080921ca0","0x10024922080902483350820248702482208092088b208090248401c8220809","0x970240921007208970248222c2002409228af0240920c073549d0240924ca1","0x8302482254092088b254090248401c82254092088b01cd60248225c092088b","0x8222cd00240921007208d00248222c1a0240922807208150248222c9502409","0x73600901c0701cd72080902493294090248302482054092088b0248234009","0x9040090400701cd802407208070601a208d905411208d82080901c8202407","0x907409068072541d208d8024d00241501cd0024d80241b0241101c1b024d8","0x73600925c090680726497208d8024200241501c20024d8024070600701cd8","0x70940936009094093400726c09360092640906c0709409360092540906c07","0x2001c073600901c8201c070dc073608226c252089501c11024d8024110241d","0x2909c82094070a409360090a409264070a4093600901c9701c27024d802407","0x90b4090a4070b409360092742c2082701c2c024d80240726c072740936009","0xd8024820242c01c31024d8024150249d01ca0024d8024110241d01c2f024d8","0x70bc0701cd80240720807290330c4a00440929009360090bc090b4070cc09","0x82250a70dc82360820d415044100c4070d409360090d409280070d40936009","0x70d4072b0093600901ca401cab024d8024070cc0701cd802407208072a40d","0x42024d802407034072b8093600901ca701c40024d8024070dc070f80936009","0xb2024ac01cb2024d802444108ae1003e2b0ab060ab01c44024d8024072a407","0x9208090b0072e0093600929c092740701cd8024460243e01c481188236009","0x1d01c4c128ba040d802450138b8040ae01c50024d8024480244001c4e024d8","0x2001c073600901c8201cb30249a2d8093608213009108070dc09360090dc09","0x91180715cb1208d802455024b201c55024d8024b60244401c53024d802407","0xa52bc822e807294093600914c09120072bc093600915c092640701cd8024b1","0xa3024b801c5f28c8236009164091300701cd8024b00244a01cb01648236009","0xd8024a1024b601ca1024d8024610245001c61024d80245f0244e01c0736009","0x936009128090b00727809360092e8092740719409360090dc090740727c09","0xb30242901c073600901c8201c9c19c9e194110249c024d80249f0242d01c67","0x9128090b0071ac09360092e8092740726809360090dc09074071a40936009","0x2001c073600901c8201c6e2606b268110246e024d8024690242d01c98024d8","0x751bc82094071d409360091d409264071d4093600901cb301c6f024d802407","0x9240090a40724009360091c4942082701c94024d80240726c071c40936009","0xd8024820242c01c7f024d8024a90249d01c8c024d80240d0241d01c8e024d8","0x914c0701cd802407208070008d1fc8c044090000936009238090b40723409","0x93600936c092640736c093600901cb301cda024d8024070800701cd802410","0x936009370dd2082701cdd024d80240726c07370093600936cda2082501cdb","0xe0024d8024180249d01cd9024d80241a0241d01cdf024d8024de0242901cde","0x701c07388e1380d904409388093600937c090b4073840936009208090b007","0x1001c073600901c8201c180688238c150448236082024072080901c0736009","0x1a01c9507482360093400905407340093600906c090440706c093600904009","0x970241a01c9925c82360090800905407080093600901c1801c073600907409","0xd802425024d001c9b024d8024990241b01c25024d8024950241b01c0736009","0xd8024072080701ce401cd82089b09482254070440936009044090740709409","0x2501c29024d8024290249901c29024d80240725c0709c093600901c2001c07","0x2901c2d024d80249d0b08209c070b0093600901c9b01c9d024d80242909c82","0x90b0070c409360090540927407280093600904409074070bc09360090b409","0x73600901c8201ca40cc3128011024a4024d80242f0242d01c33024d802482","0x37208d820835054110403101c35024d802435024a001c35024d8024070bc07","0xac024d802407290072ac093600901c3301c073600901c8201ca903482394a7","0x901c0d01cae024d80240729c07100093600901c3701c3e024d8024070d407","0x72c80936009110422b8400f8ac2ac182ac07110093600901ca901c42024d8","0x2c01cb8024d8024a70249d01c0736009118090f80712046208d8024b2024ac","0x4a2e810360091404e2e0101540714009360091200910007138093600920809","0xd802407208072cc09398b6024d82084c0244201c37024d8024370241d01c4c","0x572c48236009154092c80715409360092d8091100714c093600901c2001c07","0xba01ca5024d8024530244801caf024d8024570249901c07360092c40911807","0x717ca3208d8024590244c01c07360092c009128072c059208d8024a52bc82","0x92d80728409360091840914007184093600917c091380701cd8024a3024b8","0x4a0242c01c9e024d8024ba0249d01c65024d8024370241d01c9f024d8024a1","0x701cd80240720807270672786504409270093600927c090b40719c0936009","0x2c01c6b024d8024ba0249d01c9a024d8024370241d01c69024d8024b302429","0xd802407208071b8981ac9a044091b809360091a4090b407260093600912809","0x2501c75024d8024750249901c75024d8024072cc071bc093600901c2001c07","0x2901c90024d8024712508209c07250093600901c9b01c71024d8024751bc82","0x90b0071fc09360092a4092740723009360090340907407238093600924009","0x73600901c8201c002347f2301102400024d80248e0242d01c8d024d802482","0xdb0249901cdb024d8024072cc07368093600901c2001c07360090400914c07","0xdc3748209c07374093600901c9b01cdc024d8024db368820940736c0936009","0x906009274073640936009068090740737c0936009378090a4073780936009","0xe2384e036411024e2024d8024df0242d01ce1024d8024820242c01ce0024d8","0xd802407208070601a208e705411208d82080901c820240701cd80240701c07","0x1d208d8024d00241501cd0024d80241b0241101c1b024d8024100241001c07","0x726497208d8024200241501c20024d8024070600701cd80241d0241a01c95","0x93400726c09360092640906c0709409360092540906c0701cd8024970241a","0x8201c073a0073608226c252089501c11024d8024110241d01c25024d802425","0x9360090a409264070a4093600901c9701c27024d8024070800701cd802407","0x9360092742c2082701c2c024d80240726c0727409360090a4272082501c29","0x31024d8024150249d01ca0024d8024110241d01c2f024d80242d0242901c2d","0x720807290330c4a00440929009360090bc090b4070cc0936009208090b007","0x820d415044100c4070d409360090d409280070d4093600901c2f01c0736009","0x901ca401cab024d8024070cc0701cd802407208072a40d208e929c37208d8","0x72b8093600901ca701c40024d8024070dc070f8093600901c3501cac024d8","0xd802444108ae1003e2b0ab060ab01c44024d8024072a407108093600901c0d","0x9360090dc090740701cd8024460243e01c4811882360092c8092b0072c809","0xb3024d8024480244001cb6024d8024820242c01c50024d8024a70249d01c4e","0x55024ea14c09360822e00915c072e04c128ba044d8024b32d850138112c407","0x57024b001c57024d8024530245901cb1024d8024070800701cd80240720807","0x92c4091200728c09360092c0092940701cd802459024af01cb01648236009","0x92bc091300701cd8024a50244a01ca52bc823600917ca3208a301c5f024d8","0xd80249f0245001c9f024d8024a10244e01c0736009184092e00728461208d8","0x936009128092740719c09360092e809074072780936009194092d80719409","0x8201c9a1a49c19c110249a024d80249e0242d01c69024d80244c0242c01c9c","0x9128092740726009360092e809074071ac0936009154090a40701cd802407","0x751bc6e2601102475024d80246b0242d01c6f024d80244c0242c01c6e024d8","0x92500926407250093600901cb301c71024d8024070800701cd80240720807","0x92408e2082701c8e024d80240726c072400936009250712082501c94024d8","0xd8024a90249d01c8d024d80240d0241d01c7f024d80248c0242901c8c024d8","0x736cda0008d0440936c09360091fc090b4073680936009208090b00700009","0x93600901cb301cdc024d8024070800701cd8024100245301c073600901c82","0xdf024d80240726c073780936009374dc2082501cdd024d8024dd0249901cdd","0xe1024d80241a0241d01ce0024d8024d90242901cd9024d8024de37c8209c07","0x93b00936009380090b4073ac0936009208090b00738809360090600927407","0x18068823b4150448236082024072080901c073600901c0701cec3ace238411","0x905407340093600906c090440706c0936009040090400701cd80240720807","0x90800905407080093600901c1801c073600907409068072541d208d8024d0","0xd8024990241b01c25024d8024950241b01c073600925c090680726497208d8","0xd82089b0948225407044093600904409074070940936009094093400726c09","0x9901c29024d80240725c0709c093600901c2001c073600901c8201c073b807","0x8209c070b0093600901c9b01c9d024d80242909c82094070a409360090a409","0x927407280093600904409074070bc09360090b4090a4070b409360092742c","0x3128011024a4024d80242f0242d01c33024d8024820242c01c31024d802415","0x3101c35024d802435024a001c35024d8024070bc0701cd8024072080729033","0x93600901c3301c073600901c8201ca9034823bca70dc82360820d41504410","0x729c07100093600901c3701c3e024d8024070d4072b0093600901ca401cab","0x400f8ac2ac182ac07110093600901ca901c42024d802407034072b80936009","0x1d01c0736009118090f80712046208d8024b2024ac01cb2024d802444108ae","0x9100072d80936009208090b007140093600929c092740713809360090dc09","0xd8208b80246101cb81304a2e811360092ccb61404e0445f01cb3024d802448","0x93600914c09284072c4093600901c2001c073600901c8201c550247814c09","0xa3024d8024b00249e01c073600916409194072c059208d8024570249f01c57","0x7360092940912807294af208d80245f28c8219c0717c09360092c40912007","0x727c0936009284091380701cd802461024b801ca118482360092bc0913007","0x9d01c67024d8024ba0241d01c9e024d802465024b601c65024d80249f02450","0x67044092680936009278090b4071a40936009130090b007270093600912809","0x98024d8024ba0241d01c6b024d8024550242901c073600901c8201c9a1a49c","0x91d409360091ac090b4071bc0936009130090b0071b809360091280927407","0x94024d8024072cc071c4093600901c2001c073600901c8201c751bc6e26011","0x7238093600901c9b01c90024d8024941c4820940725009360092500926407","0x7234093600903409074071fc0936009230090a40723009360092408e20827","0x11024db024d80247f0242d01cda024d8024820242c01c00024d8024a90249d","0x7370093600901c2001c07360090400914c0701cd8024072080736cda0008d","0x9b01cde024d8024dd370820940737409360093740926407374093600901cb3","0x9074073800936009364090a4073640936009378df2082701cdf024d802407","0xe00242d01ceb024d8024820242c01ce2024d8024180249d01ce1024d80241a","0x11208d82080901c820240701cd80240701c073b0eb388e1044093b00936009","0xd80241b0241101c1b024d8024100241001c073600901c8201c18068823c015","0x20024d8024070600701cd80241d0241a01c950748236009340090540734009","0x709409360092540906c0701cd8024970241a01c9925c82360090800905407","0x9501c11024d8024110241d01c25024d802425024d001c9b024d8024990241b","0x901c9701c27024d8024070800701cd8024072080701cf101cd82089b09482","0xd80240726c0727409360090a4272082501c29024d8024290249901c29024d8","0xd8024110241d01c2f024d80242d0242901c2d024d80249d0b08209c070b009","0x9360090bc090b4070cc0936009208090b0070c40936009054092740728009","0x90d409280070d4093600901c2f01c073600901c8201ca40cc3128011024a4","0x701cd802407208072a40d208f229c37208d820835054110403101c35024d8","0xd8024070dc070f8093600901c3501cac024d802407290072ac093600901c33","0xab01c44024d8024072a407108093600901c0d01cae024d80240729c0710009","0x460243e01c4811882360092c8092b0072c80936009110422b8400f8ac2ac18","0xd8024820242c01c50024d8024a70249d01c4e024d8024370241d01c0736009","0x72e04c128ba044d8024b32d85013811270072cc093600912009100072d809","0x9a01cb1024d8024070800701cd80240720807154093cc53024d8208b802469","0x91b80701cd8024590249801cb0164823600915c091ac0715c093600914c09","0x4a01ca52bc823600917ca32086f01c5f024d8024b10244801ca3024d8024b0","0xa10244e01c0736009184092e00728461208d8024af0244c01c073600929409","0x92e809074072780936009194092d807194093600927c091400727c0936009","0xd80249e0242d01c69024d80244c0242c01c9c024d80244a0249d01c67024d8","0x9074071ac0936009154090a40701cd8024072080726869270670440926809","0x6b0242d01c6f024d80244c0242c01c6e024d80244a0249d01c98024d8024ba","0xb301c71024d8024070800701cd802407208071d46f1b898044091d40936009","0x726c072400936009250712082501c94024d8024940249901c94024d802407","0xd0241d01c7f024d80248c0242901c8c024d8024902388209c072380936009","0x91fc090b4073680936009208090b00700009360092a409274072340936009","0x70800701cd8024100245301c073600901c8201cdb3680023411024db024d8","0x9374dc2082501cdd024d8024dd0249901cdd024d8024072cc073700936009","0xd8024d90242901cd9024d8024de37c8209c0737c093600901c9b01cde024d8","0x936009208090b007388093600906009274073840936009068090740738009","0x72080901c073600901c0701cec3ace238411024ec024d8024e00242d01ceb","0x706c0936009040090400701cd802407208070601a208f405411208d820809","0x1801c073600907409068072541d208d8024d00241501cd0024d80241b02411","0x950241b01c073600925c090680726497208d8024200241501c20024d802407","0x904409074070940936009094093400726c09360092640906c070940936009","0x93600901c2001c073600901c8201c073d4073608226c252089501c11024d8","0x9d024d80242909c82094070a409360090a409264070a4093600901c9701c27","0x70bc09360090b4090a4070b409360092742c2082701c2c024d80240726c07","0x2d01c33024d8024820242c01c31024d8024150249d01ca0024d8024110241d","0x35024d8024070bc0701cd80240720807290330c4a00440929009360090bc09","0x8201ca9034823d8a70dc82360820d415044100c4070d409360090d40928007","0x3e024d8024070d4072b0093600901ca401cab024d8024070cc0701cd802407","0x901ca901c42024d802407034072b8093600901ca701c40024d8024070dc07","0x46208d8024b2024ac01cb2024d802444108ae1003e2b0ab060ab01c44024d8","0x7140093600929c092740713809360090dc090740701cd8024460243e01c48","0x11360092ccb61404e0447501cb3024d8024480244001cb6024d8024820242c","0x901c2001c073600901c8201c55024f714c09360822e0091a4072e04c128ba","0x916409260072c059208d8024570246b01c57024d8024530249a01cb1024d8","0xd80245f28c821bc0717c09360092c4091200728c09360092c0091b80701cd8","0xd802461024b801ca118482360092bc091300701cd8024a50244a01ca52bc82","0x9e024d802465024b601c65024d80249f0245001c9f024d8024a10244e01c07","0x71a40936009130090b0072700936009128092740719c09360092e80907407","0xd8024550242901c073600901c8201c9a1a49c19c110249a024d80249e0242d","0x936009130090b0071b80936009128092740726009360092e809074071ac09","0x901c2001c073600901c8201c751bc6e2601102475024d80246b0242d01c6f","0xd8024941c4820940725009360092500926407250093600901cb301c71024d8","0x936009230090a40723009360092408e2082701c8e024d80240726c0724009","0xda024d8024820242c01c00024d8024a90249d01c8d024d80240d0241d01c7f","0x90400914c0701cd8024072080736cda0008d0440936c09360091fc090b407","0x737409360093740926407374093600901cb301cdc024d8024070800701cd8","0x73640936009378df2082701cdf024d80240726c073780936009374dc20825","0x2c01ce2024d8024180249d01ce1024d80241a0241d01ce0024d8024d902429","0xd80240701c073b0eb388e1044093b00936009380090b4073ac093600920809","0x100241001c073600901c8201c18068823e0150448236082024072080901c07","0x1d0241a01c9507482360093400905407340093600906c090440706c0936009","0xd8024970241a01c9925c82360090800905407080093600901c1801c0736009","0x25024d802425024d001c9b024d8024990241b01c25024d8024950241b01c07","0x701cd8024072080701cf901cd82089b094822540704409360090440907407","0x272082501c29024d8024290249901c29024d80240725c0709c093600901c20","0x2d0242901c2d024d80249d0b08209c070b0093600901c9b01c9d024d802429","0x9208090b0070c409360090540927407280093600904409074070bc0936009","0x2f01c073600901c8201ca40cc3128011024a4024d80242f0242d01c33024d8","0xfa29c37208d820835054110403101c35024d802435024a001c35024d802407","0x3501cac024d802407290072ac093600901c3301c073600901c8201ca903482","0x93600901c0d01cae024d80240729c07100093600901c3701c3e024d802407","0x92b0072c80936009110422b8400f8ac2ac182ac07110093600901ca901c42","0xa70249d01c4e024d8024370241d01c0736009118090f80712046208d8024b2","0x50138111c4072cc093600912009100072d80936009208090b0071400936009","0xd80240720807154093ec53024d8208b80249401cb81304a2e811360092ccb6","0xb0164823600915c092380715c093600914c09240072c4093600901c2001c07","0x8d01c5f024d8024b10244801ca3024d8024b00247f01c07360091640923007","0x728461208d8024af0244c01c07360092940912807294af208d80245f28c82","0x92d807194093600927c091400727c0936009284091380701cd802461024b8","0x4c0242c01c9c024d80244a0249d01c67024d8024ba0241d01c9e024d802465","0x701cd802407208072686927067044092680936009278090b4071a40936009","0x2c01c6e024d80244a0249d01c98024d8024ba0241d01c6b024d80245502429","0xd802407208071d46f1b898044091d409360091ac090b4071bc093600913009","0x2501c94024d8024940249901c94024d8024072cc071c4093600901c2001c07","0x2901c8c024d8024902388209c07238093600901c9b01c90024d8024941c482","0x90b00700009360092a40927407234093600903409074071fc093600923009","0x73600901c8201cdb3680023411024db024d80247f0242d01cda024d802482","0xdd0249901cdd024d8024072cc07370093600901c2001c07360090400914c07","0xde37c8209c0737c093600901c9b01cde024d8024dd37082094073740936009","0x90600927407384093600906809074073800936009364090a4073640936009","0xec3ace238411024ec024d8024e00242d01ceb024d8024820242c01ce2024d8","0xd802407208070601a208fc05411208d82080901c820240701cd80240701c07","0x103600908095208da01c20024d8024100240001c95024d8024110241d01c07","0x9340090400701cd80240720807264093f497024d82081d024db01c1d3401b","0x909c09068070a427208d80249b0241501c9b024d8024250241101c25024d8","0x7360090b009068070b42c208d80249d0241501c9d024d8024070600701cd8","0x70bc09360090bc093400728009360090b40906c070bc09360090a40906c07","0x70800701cd8024970246501c073600901c8201c073f807360822802f20895","0x90cc312082501c33024d8024330249901c33024d80240725c070c40936009","0xd8024370242901c37024d8024a40d48209c070d4093600901c9b01ca4024d8","0x936009208090b0072a409360090540927407034093600906c090740729c09","0x901c2f01c073600901c8201cac2aca903411024ac024d8024a70242d01cab","0x42208ff2b840208d82083e0541b0403101c3e024d80243e024a001c3e024d8","0x901c3501c46024d802407290072c8093600901c3301c073600901c8201c44","0x7130093600901c0d01c4a024d80240729c072e8093600901c3701c48024d8","0x92b8092740713809360092e04c128ba120462c8182ac072e0093600901ca9","0xd8024970249e01cb1024d80244e0244001c55024d8024820242c01c53024d8","0xdd01c40024d8024400241d01cb32d850040d8024572c45514c113700715c09","0x70800701cd802459024de01c073600901c8201cb00250016409360822cc09","0x928c091380701cd8024a5024b801ca329482360092bc09130072bc0936009","0xd8024400241d01ca1024d802461024b601c61024d80245f0245001c5f024d8","0x936009284090b40727809360092d8090b0071940936009140092740727c09","0x400241d01c9c024d8024b00242901c073600901c8201c672786527c1102467","0x9270090b4071ac09360092d8090b007268093600914009274071a40936009","0x70800701cd8024970246501c073600901c8201c981ac9a1a41102498024d8","0x91bc6e2082501c6f024d80246f0249901c6f024d8024072cc071b80936009","0xd8024940242901c94024d8024751c48209c071c4093600901c9b01c75024d8","0x936009208090b007230093600911009274072380936009108090740724009","0x990244a01c073600901c8201c8d1fc8c238110248d024d8024900242d01c7f","0x7368093600901cdf01c00024d8024070800701cd8024d00245301c0736009","0x2701cdc024d80240726c0736c0936009368002082501cda024d8024da02499","0x9d01cdf024d80241b0241d01cde024d8024dd0242901cdd024d8024db37082","0xdf044093840936009378090b4073800936009208090b007364093600905409","0xb301ce2024d8024070800701cd8024100245301c073600901c8201ce1380d9","0x726c073b009360093ace22082501ceb024d8024eb0249901ceb024d802407","0x1a0241d01d03024d8025020242901d02024d8024ec4048209c074040936009","0x940c090b4074180936009208090b007414093600906009274074100936009","0x150448236082024072080901c073600901c0701cbc4190541011024bc024d8","0x93600904009000072540936009044090740701cd802407208070601a20907","0x8201c990250825c09360820740938007074d006c103600908095208d901c20","0x926c090540726c093600909409044070940936009340090400701cd802407","0x82360092740905407274093600901c1801c073600909c09068070a427208d8","0xa0024d80242d0241b01c2f024d8024290241b01c07360090b009068070b42c","0x701cd8024072080701d0901cd8208a00bc82254070bc09360090bc0934007","0x90cc09264070cc093600901c9701c31024d8024070800701cd8024970248c","0x9290352082701c35024d80240726c0729009360090cc312082501c33024d8","0xd8024150249d01c0d024d80241b0241d01ca7024d8024370242901c37024d8","0x72b0ab2a40d044092b0093600929c090b4072ac0936009208090b0072a409","0x1506c100c4070f809360090f809280070f8093600901c2f01c073600901c82","0xa401cb2024d8024070cc0701cd80240720807110422090a2b840208d82083e","0x93600901ca701cba024d8024070dc07120093600901c3501c46024d802407","0xb81304a2e848118b2060ab01cb8024d8024072a407130093600901c0d01c4a","0x9208090b0072c409360092b80927407154093600910009074071380936009","0x572c455054e101cb0024d8024970247f01c59024d80244e0244001c57024d8","0xd802407208072940942caf024d820853024dd01c532ccb614011360092c059","0x71845f208d8024a30244c01ca3024d8024070800701cd8024af024de01c07","0x92d80727c093600928409140072840936009184091380701cd80245f024b8","0xb30242c01c67024d8024b60249d01c9e024d8024500241d01c65024d80249f","0x701cd802407208071a49c19c9e044091a40936009194090b4072700936009","0x2c01c98024d8024b60249d01c6b024d8024500241d01c9a024d8024a502429","0xd802407208071bc6e2606b044091bc0936009268090b4071b809360092cc09","0x9264071c4093600901cb301c75024d8024070800701cd8024970248c01c07","0x902082701c90024d80240726c0725009360091c4752082501c71024d802471","0x440249d01c7f024d8024420241d01c8c024d80248e0242901c8e024d802494","0x2347f044093680936009230090b4070000936009208090b0072340936009","0x901c2001c07360093400914c0701cd8024990244a01c073600901c8201cda","0xd8024dc36c820940737009360093700926407370093600901cdf01cdb024d8","0x93600937c090a40737c0936009374de2082701cde024d80240726c0737409","0xe2024d8024820242c01ce1024d8024150249d01ce0024d80241b0241d01cd9","0x90400914c0701cd802407208073ace2384e0044093ac0936009364090b407","0x740409360094040926407404093600901cb301cec024d8024070800701cd8","0x74100936009409032082701d03024d80240726c074080936009404ec20825","0x2c01cbc024d8024180249d01d06024d80241a0241d01d05024d80250402429","0xd80240701c074350c2f106044094340936009414090b407430093600920809","0x110241d01c073600901c8201c1806882438150448236082024072080901c07","0xeb01c1d3401b040d8024202548238807080093600904009000072540936009","0x1c29024d80241b0241d01c073600901c8201c990250f25c093608207409","0x2c024d820827024eb01c2726c25040d80249d0a48238807274093600934009","0xa0024d80242f0241101c2f024d80249b0241001c073600901c8201c2d02510","0x1501ca4024d8024070600701cd8024310241a01c330c482360092800905407","0x906c0729c09360090cc0906c0701cd8024350241a01c370d4823600929009","0x8201c074440736082034a72089501ca7024d8024a7024d001c0d024d802437","0xa9024d8024070800701cd8024970249801c07360090b0092600701cd802407","0x72b009360092aca92082501cab024d8024ab0249901cab024d80240725c07","0x1d01cae024d8024400242901c40024d8024ac0f88209c070f8093600901c9b","0x90b4072c80936009208090b00711009360090540927407108093600909409","0x7120093600901c2f01c073600901c8201c462c8441081102446024d8024ae","0x7208072e04c20912128ba208d820848054250403101c48024d802448024a0","0x72d8093600901c3501c50024d80240729007138093600901c3301c0736009","0xd8024072a407154093600901c0d01c53024d80240729c072cc093600901c37","0x728c09360092e8090740715c09360092c45514cb32d850138182ac072c409","0x6e01ca1024d8024570244001c61024d8024820242c01c5f024d80244a0249d","0xd80246527ca11845f28c1a3b00719409360090b0091b80727c093600925c09","0x93780701cd8024072080719c0944c9e024d8208a5024dd01ca52bcb016411","0x91a4092e00726869208d80249c0244c01c9c024d8024070800701cd80249e","0x936009260092d80726009360091ac09140071ac0936009268091380701cd8","0x71024d8024af0242c01c75024d8024b00249d01c6f024d8024590241d01c6e","0x919c090a40701cd80240720807250711d46f0440925009360091b8090b407","0xd8024af0242c01c8c024d8024b00249d01c8e024d8024590241d01c90024d8","0x92600701cd802407208072347f2308e044092340936009240090b4071fc09","0xda024d8024072cc07000093600901c2001c073600925c092600701cd80242c","0x7370093600901c9b01cdb024d8024da000820940736809360093680926407","0x737c093600913009074073780936009374090a407374093600936cdc20827","0x11024e1024d8024de0242d01ce0024d8024820242c01cd9024d8024b80249d","0x701cd80249b0245301c07360090b4091280701cd80240720807384e0364df","0x93ac09264073ac093600901d0101ce2024d8024070800701cd80249702498","0x93b1012082701d01024d80240726c073b009360093ace22082501ceb024d8","0xd8024150249d01d04024d8024250241d01d03024d8025020242901d02024d8","0x72f10641504044092f0093600940c090b4074180936009208090b00741409","0x93600901c2001c07360093400914c0701cd8024990244a01c073600901c82","0x114024d80250d430820940743409360094340926407434093600901cdf01d0c","0x745c0936009458090a4074580936009451152082701d15024d80240726c07","0x2d01d1a024d8024820242c01d19024d8024150249d01d18024d80241b0241d","0x7360090400914c0701cd8024072080746d1a465180440946c093600945c09","0x820940747409360094740926407474093600901cb301d1c024d80240708007","0x90a40748009360094791f2082701d1f024d80240726c0747809360094751c","0x820242c01d23024d8024180249d01d22024d80241a0241d01d21024d802520","0x183600920809408074952448d22044094940936009484090b4074900936009","0x1a0250501c0736009054094100701cd8024110250301cd006c180681504410","0x701cd8024d00250c01c073600906c092f00701cd8024180250601c0736009","0x11401c25024d8024100250d01c99024d8024090242c01c97024d8024070249d","0x901c8201c270252626c093608208009108070809507410360090949925c10","0x936009274094580727409360090a409454070a4093600926c091100701cd8","0xa0024d80242c0251701c2f024d8024950242c01c2d024d80241d0249d01c2c","0xd80241d0249d01c31024d8024270251801c073600901c8201ca00bc2d04009","0x11901c3529033040090d409360090c40945c072900936009254090b0070cc09","0x912007044093600901d1a01c10024d8024820248209407208093600901c09","0x10060d8024820250201c1a054820241a024d8024110251b01c15024d802410","0x9068094140701cd8024150250401c073600904009470073401b0601a05411","0x9d01c0736009340094300701cd80241b024bc01c0736009060094180701cd8","0x1047807094093600904409474072640936009024090b00725c093600901c09","0xd8024072080709c0949c9b024d8208200244201c202541d040d80242526497","0x2c024d80249d0251601c9d024d8024290251501c29024d80249b0244401c07","0x928009360090b00945c070bc0936009254090b0070b409360090740927407","0x93600907409274070c4093600909c094600701cd802407208072802f0b410","0x9408070d4a40cc1002435024d8024310251701ca4024d8024950242c01c33","0x7360090540940c0701cd8024110251c01c1d3401b0601a05411060d802410","0x1d0250c01c0736009340092f00701cd80241b0250601c07360090600941407","0xd8024820242c01c9b024d8024090249d01c25024d8024070241d01c0736009","0x72649708095044d80242909c9b09411480070a409360090680947c0709c09","0x70b40936009274091640701cd802407208070b0094a09d024d82089902457","0x9d01c31024d8024950241d01ca0024d80242f0252201c2f024d80242d02521","0x31044090d409360092800948c07290093600925c090b0070cc093600908009","0xa7024d8024950241d01c37024d80242c0252401c073600901c8201c3529033","0x92ac09360090dc0948c072a4093600925c090b00703409360090800927407","0x10024b201c10024d8024820252901c82024d8024070252501cab2a40d29c11","0x9024091200706c0936009054092640701cd8024110244601c150448236009","0xd8024074680701cd8024180244a01c1806882360093401b208ba01cd0024d8","0x940807080952080908009360090740946c072540936009068091200707409","0x7360090540940c0701cd8024110251c01c1d3401b0601a05411060d802410","0x1d0250c01c0736009340092f00701cd80241b0250601c07360090680941007","0xd8024820242c01c9b024d8024090249d01c25024d8024070241d01c0736009","0x72649708095044d80242909c9b094114ac070a40936009060094a80709c09","0x70b40936009274092840701cd802407208070b0094b09d024d82089902461","0x9d01c31024d8024950241d01ca0024d80242f0252e01c2f024d80242d0252d","0x31044090d40936009280094bc07290093600925c090b0070cc093600908009","0xa7024d8024950241d01c37024d80242c0253001c073600901c8201c3529033","0x92ac09360090dc094bc072a4093600925c090b00703409360090800927407","0xe401c110408236009208094c80720807208d8024070253101cab2a40d29c11","0x182093401c1b024d8024090244801c18024d8024100253301c073600904409","0x939007074d0208d8024070253201c0736009068091280706815208d80241b","0x9925c824d0072640936009054091200725c0936009074094cc0701cd8024d0","0x9b094820249b024d8024200253601c25024d8024950253501c202548236009","0x150250301c07360090440947007074d006c180681504418360090400940807","0x701cd8024d0024bc01c0736009060094140701cd80241a0250401c0736009","0x90b00726c09360090240927407094093600901c090740701cd80241d0250c","0x2025411360090a42726c250453801c29024d80241b0253701c27024d802482","0xd80249d0249a01c073600901c8201c2c025392740936082264091a40726497","0x936009254090740728009360090bc094ec070bc09360090b4094e8070b409","0x35024d8024a00253c01ca4024d8024970242c01c33024d8024200249d01c31","0x925409074070dc09360090b0094f40701cd802407208070d4a40cc3104409","0xd8024370253c01ca9024d8024970242c01c0d024d8024200249d01ca7024d8","0x70400936009208094fc07208093600901c094f8072aca9034a7044092ac09","0x4801c1b024d8024150249901c0736009044091180705411208d802410024b2","0x11a01c073600906009128070601a208d8024d006c822e807340093600902409","0x202548202420024d80241d0251b01c95024d80241a0244801c1d024d802407","0x150250301c07360090440947007074d006c180681504418360090400940807","0x701cd80241b0250601c0736009060094140701cd80241a0250401c0736009","0x90b00726c09360090240927407094093600901c090740701cd80241d0250c","0x2025411360090a42726c250454101c29024d8024d00254001c27024d802482","0xd80249d0249a01c073600901c8201c2c025422740936082264091a40726497","0x936009254090740728009360090bc094ec070bc09360090b4094e8070b409","0x35024d8024a00253c01ca4024d8024970242c01c33024d8024200249d01c31","0x925409074070dc09360090b0094f40701cd802407208070d4a40cc3104409","0xd8024370253c01ca9024d8024970242c01c0d024d8024200249d01ca7024d8","0x947007074d006c1806815044183600904009408072aca9034a7044092ac09","0x736009060094140701cd80241a0250401c07360090540940c0701cd802411","0x927407094093600901c090740701cd8024d0024bc01c073600906c0941807","0x250454401c29024d80241d0254301c27024d8024820242c01c9b024d802409","0x901c8201c2c02545274093608226409250072649708095044d80242909c9b","0x9360090bc0951c070bc09360090b409518070b40936009274092400701cd8","0xa4024d8024970242c01c33024d8024200249d01c31024d8024950241d01ca0","0x90b0095240701cd802407208070d4a40cc31044090d409360092800952007","0xd8024970242c01c0d024d8024200249d01ca7024d8024950241d01c37024d8","0x10208823600901c09528072aca9034a7044092ac09360090dc09520072a409","0x11208d8024180688219c070600936009024091200706809360092080927807","0x7254093600904409120070740936009040092780701cd8024150244a01c15","0x97024d8024d00253601c20024d80241b0253501cd006c82360092541d20867","0x1a0548252c0706809360090240900007054093600901c090740725c2020809","0x1d01c073600901c8201c1b0254d06009360820440953007044102081036009","0x95074d0040d8024970808252c0725c09360090400900007080093600920809","0x936009264182094f01c073600901c8201c250254e26409360822540953007","0x9d024d80241d0240001c29024d8024d00241d01c27024d80249b0255001c9b","0xd802418024e401c073600901c8201c2c27429040090b0093600909c0954407","0xa0024d80241d0240001c2f024d8024d00241d01c2d024d8024250255201c07","0xd80241b0255201c073600901c8201c312802f040090c409360090b40954407","0x9360090cc09544070d409360090400900007290093600920809074070cc09","0x901c0927407074d006c1806815044183600920809408070dc352901002437","0xd8024100249e01c9b024d8024180252a01c25024d8024090242c01c99024d8","0x955429024d8208970255401c9708095040d80242726c252641154c0709c09","0x11a01c07360090b409128070b42c208d8024290255601c073600901c8201c9d","0x90bca02095701ca0024d80241d3401b0b01a05411060ab01c2f024d802407","0xd8024200242c01ca4024d8024950249d01c33024d8024310255801c31024d8","0x110251c01c073600901c8201c370d4a4040090dc09360090cc09564070d409","0x701cd80241b0250601c0736009340092f00701cd80241d0250c01c0736009","0x950249d01ca7024d80249d0255a01c0736009068094100701cd80241502503","0xab2a40d040092ac093600929c09564072a40936009080090b0070340936009","0x82040d80241a054823680706809360090240900007054093600901c0907407","0xd8024820241d01c073600901c8201c1b0255b06009360820440936c0704410","0x95024db01c95074d0040d802497080823680725c0936009040090000708009","0x95780726c0936009264182095d01c073600901c8201c250255c2640936082","0x270255f01c9d024d80241d0240001c29024d8024d00241d01c27024d80249b","0x95800701cd8024180246501c073600901c8201c2c27429040090b00936009","0x2d0255f01ca0024d80241d0240001c2f024d8024d00241d01c2d024d802425","0x1d01c33024d80241b0256001c073600901c8201c312802f040090c40936009","0xa4040090dc09360090cc0957c070d409360090400900007290093600920809","0x726c093600901c09074072541d3401b0601a054183600904009408070dc35","0x7f01c9d024d8024950254301c29024d8024820242c01c27024d8024090249d","0x25024e601c252649708011360090b09d0a42726c15584070b0093600904409","0x182ac070c4a0208d80242d0256301c073600901c8201c2f025620b40936082","0x9290095600729009360090c4332095701c33024d8024a0074d006c1806815","0xd8024990242c01ca7024d8024970249d01c37024d8024200241d01c35024d8","0x940c0701cd802407208072a40d29c37044092a409360090d4095640703409","0x736009340094180701cd80241d024bc01c0736009054094700701cd80241a","0x9074072ac09360090bc095680701cd8024180250401c073600906c0941407","0xab0255901c40024d8024990242c01c3e024d8024970249d01cac024d802420","0x82360090440959007044093600902409000072b8400f8ac044092b80936009","0x82054072096701c073600901c8201c1a025660540936082040095940704082","0x180241d01c1d024d80241b0256901c073600901c8201cd00256806c18208d8","0x97080950400925c0936009074095a807080093600920809000072540936009","0xd00241d01c25024d802499024e501c99024d8024074680701cd80240720807","0x2909c9b040090a40936009094095a80709c0936009208090000726c0936009","0x9000070b0093600901c09074072740936009068093940701cd80240720807","0x183600904009408070bc2d0b0100242f024d80249d0256a01c2d024d802482","0x90b00709c0936009024092740725c093600901d6b01c202541d3401b0601a","0x270456c01c2c024d8024970249901c9d024d80241a0250d01c29024d802482","0xd802407208070bc095b82d024d82089b0256d01c9b09499040d80242c27429","0x70dc0936009094090b0070d409360092640927407280093600901d6f01c07","0x1036009034a70dc350457001c0d024d8024a00249901ca7024d8024180251d","0xd8024075cc0701cd802407208072ac095c8a9024d8208a40257101ca40cc31","0x93600906c0947c0711009360090cc090b00710809360090c409274072b009","0x95d4072b8400f81036009118b2110420457401c46024d8024ac024a501cb2","0x901d7801c4a024d8024075dc0701cd802407208072e8095d848024d8208ae","0x9100090b0072cc09360090f809274072e009360091304a2094f01c4c024d8","0x5514cb30455301cb1024d8024b80249e01c55024d8024d00252a01c53024d8","0x701cd80240720807164095e457024d8208b60255401cb61404e040d8024b1","0x6e01c61024d80241d0253701c5f024d8024500242c01ca3024d80244e0249d","0xd8208a5024e301ca52bcb0040d8024a11845f28c115e807284093600904409","0xd8024af0242c01c69024d8024b00249d01c073600901c8201c650257b27c09","0x981ac9a1a4115f0072600936009054091b8071ac0936009254095000726809","0x17f01c073600901c8201c6f0257e1b80936082270095f407270672781036009","0x901d8001c94024d8024711d48253c071c4093600901d7801c75024d802407","0x9230942095d01c8c024d80248e2408253c07238093600901d7801c90024d8","0xd8024670242c01cdd024d80249e0249d01cdc024d8024070241d01c7f024d8","0xdf378dd370155840736409360091fc091fc0737c09360090800950c0737809","0x73600901c8201ce102581380093608236c093980736cda0008d044d8024d9","0x1013b082360092a40960c0701cd8024eb0244a01ceb38882360090b40960807","0x15601c073600940c091280740d02208d8024480258401c07360094040912807","0x4a01cbc418823600927c096140701cd8025050244a01d05410823600915c09","0xe00256301c073600943409128074350c208d80246e0258601c07360092f009","0x1023b0e2060ab01d16024d8024074680701cd8025150244a01d154508236009","0x119024d8025180255801d18024d80251645c8255c0745c09360094510c41904","0x74700936009368090b00746c0936009000092740746809360092340907407","0xd8024a90258701c073600901c8201d1d4711b468110251d024d80251902559","0x962c0701cd80246e0258a01c07360090b4096240701cd8024480258801c07","0xd80248d0241d01d1e024d8024e10255a01c073600915c096300701cd80249f","0x93600947809564074840936009368090b0074800936009000092740747c09","0x915c096300701cd80249f0258b01c073600901c8201d224852047c1102522","0x10c01c07360090b4096240701cd8024480258801c07360092a40961c0701cd8","0x9e0249d01d24024d8024070241d01d23024d80246f0255a01c073600908009","0x12949524044094a8093600948c09564074a4093600919c090b0074940936009","0xa90258701c073600915c096300701cd8024200250c01c073600901c8201d2a","0x701cd8024150249801c07360090b4096240701cd8024480258801c0736009","0x9274074b4093600901c09074074ac0936009194095680701cd802495024bc","0x12e4b41102530024d80252b0255901d2f024d8024af0242c01d2e024d8024b0","0x961c0701cd802495024bc01c0736009080094300701cd802407208074c12f","0x736009054092600701cd80242d0258901c0736009120096200701cd8024a9","0x9074074c40936009164095680701cd80241d0250601c07360090440926007","0x1310255901d33024d8024500242c01ce4024d80244e0249d01d32024d802407","0xbc01c0736009080094300701cd802407208074d13339132044094d00936009","0xd80242d0258901c07360092a40961c0701cd80241d0250601c073600925409","0x95680701cd8024d00250501c0736009044092600701cd8024150249801c07","0x400242c01d37024d80243e0249d01d36024d8024070241d01d35024d8024ba","0x701cd802407208074e9384dd36044094e809360094d409564074e00936009","0x9340094140701cd80241d0250601c0736009254092f00701cd8024200250c","0x10401c0736009044092600701cd8024150249801c07360090b4096240701cd8","0x310249d01d3c024d8024070241d01d3b024d8024ab0255a01c073600906c09","0x13e4f53c044094fc09360094ec09564074f809360090cc090b0074f40936009","0x1d0250601c0736009254092f00701cd8024200250c01c073600901c8201d3f","0x701cd8024150249801c0736009340094140701cd80241b0250401c0736009","0x70241d01d40024d80242f0255a01c07360090600940c0701cd80241102498","0x950009564075100936009094090b00750c093600926409274075040936009","0x18e01c10024d8024076340701cd8024820251c01d46511435041102546024d8","0x110258f01c15024d802415024d001c15024d80240706007044093600904009","0x7208072541d340106441b0601a040d8208110540901c11640070440936009","0xd8024180242c01c97024d80241a0249d01c20024d80241b0259201c0736009","0x96580701cd8024072080701d95024076500709409360090800964c0726409","0x9b0259301c99024d80241d0242c01c97024d8024d00249d01c9b024d802495","0x8209c091080709c09360090a409660070a409360090940965c070940936009","0x90b409454070b40936009274091100701cd802407208070b0096649d024d8","0xd8024990242c01c31024d8024970249d01ca0024d80242f0251601c2f024d8","0x2c0251801c073600901c8201ca40cc310400929009360092800945c070cc09","0x90d40945c0729c0936009264090b0070dc093600925c09274070d40936009","0x963807040093600901d9a01c07360092080940c07034a70dc100240d024d8","0x90440963c0705409360090540934007054093600901c1801c11024d802410","0x901c8201c95074d00419b06c18068103608204415024070459001c11024d8","0x936009060090b00725c09360090680927407080093600906c096480701cd8","0x950259601c073600901c8201c076700901d9401c25024d8024200259301c99","0x926c0964c072640936009074090b00725c0936009340092740726c0936009","0xd8208270244201c27024d8024290259801c29024d8024250259701c25024d8","0xd80242d0251501c2d024d80249d0244401c073600901c8201c2c0259d27409","0x936009264090b0070c4093600925c092740728009360090bc09458070bc09","0x90b0094600701cd80240720807290330c410024a4024d8024a00251701c33","0xd8024350251701ca7024d8024990242c01c37024d8024970249d01c35024d8","0x901c1801c11024d8024076780701cd8024100250401c0d29c370400903409","0xd8024820242c01c95024d8024090249d01c1d024d8024070241d01c15024d8","0x9708095074156800726409360090440967c0725c0936009054093400708009","0x73600901c8201c9b025a2094093608234009684073401b0601a044d802499","0x70a409360092740969407274093600909c096900709c09360090940968c07","0x70bc09360090b0091640701cd802407208070b4096982c024d82082902457","0x9d01c33024d80241a0241d01c31024d8024a00252201ca0024d80242f02521","0x33044090dc09360090c40948c070d4093600906c090b007290093600906009","0xd024d80241a0241d01ca7024d80242d0252401c073600901c8201c370d4a4","0x92b0093600929c0948c072ac093600906c090b0072a409360090600927407","0xd80241a0241d01c3e024d80249b0252401c073600901c8201cac2aca903411","0x9360090f80948c07108093600906c090b0072b80936009060092740710009","0x901c1801c11024d80240769c0701cd8024100250501c44108ae1001102444","0xd8024820242c01c95024d8024090249d01c1d024d8024070241d01c15024d8","0x9708095074156a00726409360090440967c0725c0936009054093400708009","0x73600901c8201c9b025aa0940936082340096a4073401b0601a044d802499","0x70a40936009274096b407274093600909c096b00709c0936009094096ac07","0x70bc09360090b0092840701cd802407208070b4096b82c024d82082902461","0x9d01c33024d80241a0241d01c31024d8024a00252e01ca0024d80242f0252d","0x33044090dc09360090c4094bc070d4093600906c090b007290093600906009","0xd024d80241a0241d01ca7024d80242d0253001c073600901c8201c370d4a4","0x92b0093600929c094bc072ac093600906c090b0072a409360090600927407","0xd80241a0241d01c3e024d80249b0253001c073600901c8201cac2aca903411","0x9360090f8094bc07108093600906c090b0072b80936009060092740710009","0xb201c10024d802482025b001c82024d802407025af01c44108ae1001102444","0x91200706c0936009054092640701cd8024110244601c15044823600904009","0x74680701cd8024180244a01c1806882360093401b208ba01cd0024d802409","0x7080952080908009360090740946c07254093600906809120070740936009","0x901c0907407054093600901c1801c11024d8024073a00701cd80241002506","0xd802415024d001c20024d8024820242c01c95024d8024090249d01c1d024d8","0xd006c1806811360092649708095074156c40726409360090440967c0725c09","0x27024d802425025b401c073600901c8201c9b025b30940936082340096c807","0x1b70b009360820a4091a4070a40936009274096d807274093600909c096d407","0x728009360090bc094e8070bc09360090b0092680701cd802407208070b409","0x2c01ca4024d8024180249d01c33024d80241a0241d01c31024d8024a00253b","0xd802407208070dc3529033044090dc09360090c4094f0070d4093600906c09","0xa9024d8024180249d01c0d024d80241a0241d01ca7024d80242d0253d01c07","0x7208072b0ab2a40d044092b0093600929c094f0072ac093600906c090b007","0xd8024180249d01c40024d80241a0241d01c3e024d80249b0253d01c0736009","0x7110422b8400440911009360090f8094f007108093600906c090b0072b809","0x901c0907407054093600901c1801c11024d8024076e00701cd802410024bc","0xd802415024d001c20024d8024820242c01c95024d8024090249d01c1d024d8","0xd006c1806811360092649708095074156c40726409360090440967c0725c09","0x27024d802425025b401c073600901c8201c9b025b90940936082340096c807","0x1ba0b009360820a4091a4070a40936009274096d807274093600909c096d407","0x728009360090bc094e8070bc09360090b0092680701cd802407208070b409","0x2c01ca4024d8024180249d01c33024d80241a0241d01c31024d8024a00253b","0xd802407208070dc3529033044090dc09360090c4094f0070d4093600906c09","0xa9024d8024180249d01c0d024d80241a0241d01ca7024d80242d0253d01c07","0x7208072b0ab2a40d044092b0093600929c094f0072ac093600906c090b007","0xd8024180249d01c40024d80241a0241d01c3e024d80249b0253d01c0736009","0x7110422b8400440911009360090f8094f007108093600906c090b0072b809","0x901c0907407054093600901c1801c11024d8024076ec0701cd8024100250c","0xd802415025bc01c20024d8024820242c01c95024d8024090249d01c1d024d8","0x92640967c0726411208d802411025bd01c97024d802497024d001c9705482","0x936082340096a4073401b0601a044d80249925c202541d055a801c99024d8","0x93608209c096fc0709c0936009094096ac0701cd8024072080726c096f825","0x70b4093600901dc101c2c024d8024077040701cd802407208072740970029","0x1c201ca4024d80242d024a501c33024d80242c024a501c31024d80241a0241d","0xd802407208070dc0970c35024d8208a00245701ca00bc8236009290330c410","0x40024d8024180249d01c3e024d80242f0241d01ca7024d8024350245901c07","0x711009360090440967c07108093600905409340072b8093600906c090b007","0x1a901cac2aca903411360092c844108ae1003e069c401cb2024d8024a7024a5","0x1bf01cba024d802446025ab01c073600901c8201c48025c511809360822b009","0x72e00936009128292095d01c073600901c8201c4c025c612809360822e809","0x2c01cb6024d8024a90249d01c50024d80240d0241d01c4e024d8024b8025c7","0xd8024072080701dc9024076500714c093600913809720072cc09360092ac09","0x7140093600903409074071540936009130097280701cd8024290246501c07","0x19401c53024d802455025c801cb3024d8024ab0242c01cb6024d8024a90249d","0xb1024d8024480254901c07360090a4091940701cd8024072080701dc902407","0x72c009360092ac090b00716409360092a4092740715c09360090340907407","0xd8024290246501c073600901c8201caf2c05915c11024af024d8024b102548","0x1d01ca5024d8024370254901c0736009054090680701cd802411025cb01c07","0x952007184093600906c090b00717c0936009060092740728c09360090bc09","0x701cd802411025cb01c073600901c8201ca11845f28c11024a1024d8024a5","0x9274071400936009068090740727c0936009274097280701cd8024150241a","0x53025cc01c53024d80249f025c801cb3024d80241b0242c01cb6024d802418","0x8201c9c025ce19c09360821940925007194093600927809734072780936009","0x92680951c0726809360091a409518071a4093600919c092400701cd802407","0xd8024b30242c01c6e024d8024b60249d01c98024d8024500241d01c6b024d8","0x95240701cd802407208071d46f1b898044091d409360091ac09520071bc09","0xb30242c01c90024d8024b60249d01c94024d8024500241d01c71024d80249c","0x701cd802407208072308e240940440923009360091c409520072380936009","0x1a0241d01c7f024d80249b0254901c0736009054090680701cd802411025cb","0x91fc0952007368093600906c090b007000093600906009274072340936009","0x10208d820882025cf01c82024d8024090241001cdb3680023411024db024d8","0x93600904009748070680936009044097440701cd802407208070540974011","0x901d1a01c073600901c8201c077500901d9401c1b024d80241a025d301c18","0xd80241d025d301c18024d802415025d201c1d024d8024d0025d501cd0024d8","0x93608206c0975807254093600925409000072540936009060091380706c09","0x93600926409464072640936009080097600701cd8024072080725c0975c20","0x823600927429209d901c9d024d8024250249901c29024d8024070241d01c25","0xd80242c025db01c073600901c8201c2d025da0b0093608209c095300709c9b","0x9360090bc09770070c409360092540900007280093600926c09074070bc09","0x926c090740729009360090b4097740701cd802407208070cc312801002433","0x729c370d410024a7024d8024a4025dc01c37024d8024950240001c35024d8","0xd80240d025dd01c0d024d8024074680701cd8024970244a01c073600901c82","0x9360092a409770072b0093600925409000072ac093600901c09074072a409","0x901c0927407054093600901c1801c11024d80240769c070f8ac2ac100243e","0xd8024110259f01c95024d802415024d001c1d024d8024090242c01cd0024d8","0x706c18068103600925c202541d340157780725c0936009040092780708009","0x97889b024d820899025e101c99024d802425025e001c25024d80241b025df","0x1e401c0736009274094140727429208d802482025e301c073600901c8201c27","0x9d01c2f024d80242d025e601c2d024d80242c0a482794070b0093600926c09","0xa0040090cc09360090bc0979c070c40936009060090b007280093600906809","0x9d01ca4024d802427024ea01c0736009208094140701cd802407208070cc31","0x350400929c09360092900979c070dc0936009060090b0070d4093600906809","0x1b024d802407060070601a208d8024110254a01c15024d8024076ec0729c37","0x9906c823600906c096f00725c0936009208090b00708009360090240927407","0x25024d8024250259f01c250548236009054096f40726409360092640934007","0x97a0072541d340103600926c2526497080157780726c09360090680927807","0x70b0097a89d024d820895025e901c07360090a409430070a427208d802410","0x93600901dc101c2d024d8024077040701cd80249d0244a01c073600901c82","0x35024d80242f024a501ca4024d80242d024a501c33024d8024070241d01c2f","0x72080729c097ac37024d8208310245701c3128082360090d4a40cc1070807","0x90dc09164072ac0936009034096c0072a40d208d8024180253201c0736009","0x400259f01cae2b082360092b0097b00710015208d802415025bd01cac024d8","0x9340071081b208d80241b025bc01c3e024d8024ae100827b4071000936009","0x44208d8208ab0f842074d0055ee01c3e024d80243e0258f01c42024d802442","0xd8024a00241d01c4a024d8024077040701cd802407208072e848118107bcb2","0x92d85013810708072d80936009128092940714009360092b0092940713809","0x822e00915c072c809360092c8090b007110093600911009274072e04c208d8","0x92cc091640715409360092a4096c00701cd8024072080714c097c0b3024d8","0x906c093400715c09360092c415209ed01c15024d8024150259f01cb1024d8","0x1f12c059208d82085515c1b2c844055ee01c57024d8024570258f01c1b024d8","0x61024d80245f025f201c5f024d8024074680701cd8024072080728ca52bc10","0x719409360092c0090b00727c0936009164092740728409360091300907407","0xd8024a3025f401c073600901c8201c077cc0901d9401c9e024d802461024e9","0x936009294090b00727c09360092bc09274072840936009130090740719c09","0x270250c01c073600901c8201c077cc0901d9401c9e024d802467024e901c65","0x701cd802415025cb01c073600906c090680701cd8024a9024e401c0736009","0x2c01c9a024d8024440249d01c69024d80244c0241d01c9c024d802453025f5","0xd802407208072606b26869044092600936009270097d8071ac09360092c809","0x90680701cd8024ac024af01c07360092a4093900701cd802415025cb01c07","0x91180927407284093600928009074071b809360092e8097d00701cd80241b","0xd8024a1025f701c9e024d80246e024e901c65024d8024480242c01c9f024d8","0x9360092780977c071c40936009194097e4071d4093600927c097e0071bc09","0x909c094300701cd802415025cb01c073600901c8201c077e80901d9401c94","0x7240093600929c097d40701cd8024180246501c073600906c090680701cd8","0x1f601c7f024d80241d0242c01c8c024d8024d00249d01c8e024d8024a00241d","0x7360090540972c0701cd802407208072347f2308e04409234093600924009","0x90740700009360090b0097d00701cd8024180246501c073600906c0906807","0x24e901c71024d80241d0242c01c75024d8024d00249d01c6f024d802407","0x823680978407368093600936c097800736c09360092500977c072500936009","0xde09c827f0073780936009370097900701cd80240720807374097ecdc024d8","0x91d4092740738009360091bc0907407364093600937c097f40737c0936009","0xeb388e138011024eb024d8024d9025f601ce2024d8024710242c01ce1024d8","0x6f0241d01cec024d8024dd025f501c073600909c094300701cd80240720807","0x93b0097d80740c09360091c4090b00740809360091d409274074040936009","0x82208d820809025cf01c09024d8024070241001d0440d024041102504024d8","0x93600920809748070540936009040097440701cd80240720807044097f810","0x901d1a01c073600901c8201c077fc0901d9401c18024d802415025d301c1a","0xd8024d0025d301c1a024d802411025d201cd0024d80241b025d501c1b024d8","0x9360820600975807074093600907409000070740936009068091380706009","0x93600925c094640725c0936009254097600701cd802407208070800980095","0x27024d8024250260201c9b024d80241d0240001c25024d8024990260101c99","0x70a4093600901d1a01c0736009080091280701cd8024072080709c9b20809","0x820242d024d80249d0260201c2c024d80241d0240001c9d024d80242902603","0x7068093600901c1801c15024d8024110258e01c11024d802407634070b42c","0x18f01c1a024d80241a024d001c073600906c094700706c18208d80248202604","0x725c20254108141d3408236082040150680901c157b807054093600905409","0x934009274070940936009264097c807264093600901d1a01c073600901c82","0x78180901d9401c29024d802425024e901c27024d80241d0242c01c9b024d8","0x90b00726c09360092540927407274093600925c097d00701cd80240720807","0x2d025e001c2d024d802429025df01c29024d80249d024e901c27024d802420","0x2f025e401c073600901c8201ca0026070bc09360820b009784070b00936009","0x9b0249d01ca4024d8024330260801c33024d8024310608239c070c40936009","0xa70dc350400929c093600929009824070dc093600909c090b0070d40936009","0x9b0249d01c0d024d8024a00260a01c0736009060094700701cd80240720807","0xac2aca9040092b0093600903409824072ac093600909c090b0072a40936009","0x982c07068093600901c1801c15024d8024110258e01c11024d80240766807","0x150258f01c1a024d80241a024d001c073600906c0940c0706c18208d802482","0x72080725c20254108301d3408236082040150680901c157b8070540936009","0x93600934009274070940936009264097c807264093600901d1a01c0736009","0x8201c078340901d9401c29024d802425024e901c27024d80241d0242c01c9b","0x9080090b00726c09360092540927407274093600925c097d00701cd802407","0xd80242d025e001c2d024d802429025df01c29024d80249d024e901c27024d8","0xd80242f025e401c073600901c8201ca00260e0bc09360820b009784070b009","0xd80249b0249d01ca4024d8024330261001c33024d8024310608283c070c409","0x8201ca70dc350400929c093600929009844070dc093600909c090b0070d409","0xd80249b0249d01c0d024d8024a00261201c07360090600940c0701cd802407","0x19e01cac2aca9040092b0093600903409844072ac093600909c090b0072a409","0x901c1801c1a024d8024110258e01c15024d8024100252901c11024d802407","0xd802418024d001c073600934009410073401b208d8024820261301c18024d8","0x108509507482360820541a0600901c157b80706809360090680963c0706009","0x726c0936009094097c807094093600901d1a01c073600901c8201c9925c20","0x19401c9d024d80249b024e901c29024d8024950242c01c27024d80241d0249d","0x93600908009274070b00936009264097d00701cd8024072080701e1502407","0x2f024d80249d025df01c9d024d80242c024e901c29024d8024970242c01c27","0x73600901c8201c310261628009360820b409784070b409360090bc0978007","0x35024d8024a40261801ca4024d80243306c8285c070cc09360092800979007","0x903409360090d4098640729c09360090a4090b0070dc093600909c0927407","0xa9024d8024310261a01c073600906c094100701cd80240720807034a70dc10","0x90f809360092a409864072b009360090a4090b0072ac093600909c0927407","0xd8024110258e01c15024d8024100253f01c11024d8024073a0070f8ac2ac10","0x73600934009418073401b208d8024820261b01c18024d8024070600706809","0x820541a0600901c157b80706809360090680963c0706009360090600934007","0x97c807094093600901d1a01c073600901c8201c9925c200421c2541d208d8","0x9b024e901c29024d8024950242c01c27024d80241d0249d01c9b024d802425","0x70b00936009264097d00701cd8024072080701e1d02407650072740936009","0x1df01c9d024d80242c024e901c29024d8024970242c01c27024d8024200249d","0x310261e28009360820b409784070b409360090bc09780070bc093600927409","0x22001ca4024d80243306c8287c070cc0936009280097900701cd80240720807","0x98840729c09360090a4090b0070dc093600909c09274070d4093600929009","0x22201c073600906c094180701cd80240720807034a70dc100240d024d802435","0x9884072b009360090a4090b0072ac093600909c09274072a409360090c409","0x15024d8024100253f01c11024d8024076e0070f8ac2ac100243e024d8024a9","0x73401b208d8024820262301c18024d8024070600706809360090440963807","0x157b80706809360090680963c070600936009060093400701cd8024d0024bc","0x901d1a01c073600901c8201c9925c20042242541d208d8208150681802407","0xd8024950242c01c27024d80241d0249d01c9b024d802425025f201c25024d8","0x97d00701cd8024072080701e250240765007274093600926c093a4070a409","0x2c024e901c29024d8024970242c01c27024d8024200249d01c2c024d802499","0x820b409784070b409360090bc09780070bc09360092740977c072740936009","0x3306c8289c070cc0936009280097900701cd802407208070c409898a0024d8","0x90a4090b0070dc093600909c09274070d40936009290098a0072900936009","0x92f00701cd80240720807034a70dc100240d024d8024350262901ca7024d8","0x90a4090b0072ac093600909c09274072a409360090c4098a80701cd80241b","0x22c024093608201c098ac070f8ac2ac100243e024d8024a90262901cac024d8","0x7044093600904009458070400936009024094540701cd8024072080720809","0x2701c1a024d80240726c0701cd802407208070540902415024d80241102517","0x9024d0024d80241b0251701c1b024d8024180251801c18024d80248206882","0xd00422d06c18068103608205410208090459001c15024d8024110258e01cd0","0x7094093600906c0926407264093600901c090740701cd802407208072541d","0x18024d8024180242c01c1a024d80241a0249d01c9708082360090949920a2e","0x29024d80249b0263101c073600901c8201c270263026c093608225c098bc07","0x70b4093600908009074070b00936009274098cc0727409360090a4098c807","0x1102431024d80242c0263401ca0024d8024180242c01c2f024d80241a0249d","0x70cc093600901c2001c073600909c091280701cd802407208070c4a00bc2d","0x9b01c35024d8024a40cc820940729009360092900926407290093600901e35","0x907407034093600929c098d80729c09360090d4372082701c37024d802407","0xd0263401cac024d8024180242c01cab024d80241a0249d01ca9024d802420","0x71000936009254098dc0701cd802407208070f8ac2aca9044090f80936009","0x9d01c44024d8024070241d01c42024d8024ae0263301cae024d80244002632","0x44044091200936009108098d0071180936009074090b0072c8093600934009","0x9024094840701cd80240720807208098e409024d8208070263801c48118b2","0x7208070540902415024d8024110252301c11024d8024100252201c10024d8","0xd8024180252401c18024d8024820688209c07068093600901c9b01c0736009","0x90249d01cd0024d8024070241d01cd002409340093600906c0948c0706c09","0x20024d001c200408236009040096f0072540936009208090b0070740936009","0xd00563a01c97024d8024970259f01c970448236009044096f4070800936009","0x720807094098f099024d82081b0263b01c1b0601a054113600925c202541d","0x7208070a4098fc27024d82089b0263e01c9b024d8024990263d01c0736009","0xd80242c0258f01c2c024d80249d044827b407274093600901dc101c0736009","0xd80240720807290330c410900a00bc2d040d82082c0401806811640070b009","0x8236009034a7209d901c0d024d8024a00249901ca7024d8024150241d01c07","0x9360820dc09530070bc09360090bc090b0070b409360090b409274070dc35","0xd8024ac0264201cac024d8024a909c8253c0701cd802407208072ac09904a9","0x9360090d409074072b80936009100099100710009360090f80990c070f809","0x46024d8024ae024ee01cb2024d80242f0242c01c44024d80242d0249d01c42","0xd802427024e401c07360092ac091280701cd80240720807118b21104204409","0x2501cba024d8024ba0249901cba024d80240791407120093600901c2001c07","0x24601cb8024d80244a1308209c07130093600901c9b01c4a024d8024ba12082","0x90b0072d809360090b4092740714009360090d4090740713809360092e009","0x73600901c8201c532ccb61401102453024d80244e024ee01cb3024d80242f","0x24401cb1024d8024550264301c55024d8024a40264701c073600909c0939007","0x90b0072c009360090c409274071640936009054090740715c09360092c409","0x73600901c8201ca52bcb016411024a5024d802457024ee01caf024d802433","0x990c0728c09360090a40991c0701cd8024100241a01c07360090440972c07","0x1a0249d01ca1024d8024150241d01c61024d80245f0264401c5f024d8024a3","0x6527ca1044092780936009184093b8071940936009060090b00727c0936009","0x250264601c0736009040090680701cd802411025cb01c073600901c8201c9e","0x9060090b0071a4093600906809274072700936009054090740719c0936009","0x9024d820807025bf01c6b26869270110246b024d802467024ee01c9a024d8","0x11024d8024100252e01c10024d8024090252d01c073600901c8201c8202648","0x7068093600901c9b01c073600901c8201c15024090540936009044094bc07","0x9340093600906c094bc0706c0936009060094c00706009360092081a20827","0x109241b0601a040d8208150408202411640070540936009044096380734009","0x25024d80241b0249901c99024d8024070241d01c073600901c8201c95074d0","0x936009060090b0070680936009068092740725c20208d8024252648292807","0x93600926c099300701cd8024072080709c0992c9b024d820897024eb01c18","0x2d024d8024200241d01c2c024d80249d0264e01c9d024d8024290264d01c29","0x90c409360090b00993c072800936009060090b0070bc09360090680927407","0x33024d8024070800701cd8024270244a01c073600901c8201c312802f0b411","0x70d40936009290332082501ca4024d8024a40249901ca4024d80240794007","0x1d01c0d024d8024a70265101ca7024d8024350dc8209c070dc093600901c9b","0x993c072b00936009060090b0072ac093600906809274072a4093600908009","0x40024d8024950265201c073600901c8201c3e2b0ab2a4110243e024d80240d","0x7110093600901c090740710809360092b809938072b809360091000993407","0x1102448024d8024420264f01c46024d80241d0242c01cb2024d8024d00249d","0x90253a01c073600901c8201c8202654024093608201c0994c07120462c844","0x8201c15024090540936009044094f0070440936009040094ec070400936009","0x9060094f40706009360092081a2082701c1a024d80240726c0701cd802407","0x1104082360822080901c109540734009024d0024d80241b0253c01c1b024d8","0x936009040090740706009360090440995c0701cd802407208070681520a56","0x1a0265a01c073600901c8201c079640901d9401cd0024d8024180265801c1b","0xd80240796c073400936009074099600706c093600905409074070740936009","0xd80249925c82974072640936009254092640725c0936009340099700725409","0xd8024250245901c073600901c8201c9b0265e09409360820800915c0708009","0x93600906c090740727409360090a409488070a4093600909c094840709c09","0xd80249b0252401c073600901c8201c2d0b0820242d024d80249d0252301c2c","0x96f4070c4a0208090c409360090bc0948c07280093600906c09074070bc09","0x7068093600906c18209ed01c1b0548236009054097b00706011208d802411","0xd82081a34082024116400706809360090680963c0734010208d802410025bc","0x9901c29024d8024070241d01c073600901c8201c25264970425f0809507410","0x70740936009074092740709c9b208d80249d0a48276407274093600908009","0x701cd802407208070b4099802c024d8208270254c01c95024d8024950242c","0x929407290093600905409294070cc093600926c09074070bc093600901dc1","0x2610dc09360820c40915c070c4a0208d80243529033041c201c35024d80242f","0xa9024d80240d044827b40703409360090dc091640701cd8024072080729c09","0xae100109883e2b0ab040d8208a90409507411640072a409360092a40963c07","0x1d901c48024d80243e0249901c46024d8024a00241d01c073600901c8201c42","0x72b009360092b0090b0072ac09360092ac09274072c844208d80244811882","0x4c024d8024ba0b08253c0701cd802407208071280998cba024d8208b20254c","0x71400936009138099100713809360092e00990c072e009360091300990807","0xee01c53024d8024ac0242c01cb3024d8024ab0249d01cb6024d8024440241d","0x736009128091280701cd80240720807154532ccb604409154093600914009","0x570249901c57024d802407914072c4093600901c2001c07360090b00939007","0x592c08209c072c0093600901c9b01c59024d8024572c4820940715c0936009","0x92ac092740728c0936009110090740729409360092bc09918072bc0936009","0xa11845f28c11024a1024d8024a5024ee01c61024d8024ac0242c01c5f024d8","0x9f0264301c9f024d8024420264701c07360090b0093900701cd80240720807","0x9100092740719c09360092800907407278093600919409910071940936009","0x9a1a49c19c110249a024d80249e024ee01c69024d8024ae0242c01c9c024d8","0x90440972c0701cd8024100241a01c07360090b0093900701cd80240720807","0x9360090740927407260093600928009074071ac093600929c099180701cd8","0x8201c751bc6e2601102475024d80246b024ee01c6f024d8024950242c01c6e","0x7360090440972c0701cd802415024af01c07360090b4091280701cd802407","0x940249901c94024d802407914071c4093600901c2001c07360090400906807","0x902388209c07238093600901c9b01c90024d8024941c482094072500936009","0x90740927407234093600926c09074071fc093600923009918072300936009","0xdb3680023411024db024d80247f024ee01cda024d8024950242c01c00024d8","0x9040090680701cd802411025cb01c0736009054092bc0701cd80240720807","0x936009374099100737409360093700990c0737009360090940991c0701cd8","0xe0024d8024990242c01cd9024d8024970249d01cdf024d8024070241d01cde","0x8202665024093608201c0999007384e0364df044093840936009378093b807","0x95200704409360090400951c070400936009024095180701cd80240720807","0x1a2082701c1a024d80240726c0701cd802407208070540902415024d802411","0x734009024d0024d80241b0254801c1b024d8024180254901c18024d802482","0x90400976c0701cd80240720807068150441099c1020882360820240720a66","0x79a00901d9401cd0024d802418025dc01c1b024d8024820241d01c18024d8","0xd8024074680701cd80241a024e401c0736009054093900701cd80240720807","0x936009254097700706c093600904409074072540936009074097740707409","0x110253201c970808202497024d8024d00266901c20024d80241b025f701cd0","0x96380734010208d802410025bd01c18024d802415025b001c1a0548236009","0x82360820601b0740901c157b80707482208d802482025bc01c1b024d8024d0","0x901dc101c9b024d80241a025b001c073600901c8201c25264970426a08095","0x90a40963c07254093600925409274070a4093600909c10209ed01c27024d8","0x901c8201ca00bc2d0426b0b09d208d82089b0a48208095055ee01c29024d8","0xa4024d80249d0249d01c33024d802431025f201c31024d8024074680701cd8","0x901c8201c370d4a4040090dc09360090cc093a4070d409360090b0090b007","0x9360090bc090b00703409360090b4092740729c0936009280097d00701cd8","0x90400972c0701cd802407208072aca903410024ab024d8024a7024e901ca9","0x72b00936009094097d00701cd8024820241a01c0736009068093900701cd8","0x10024ae024d8024ac024e901c40024d8024990242c01c3e024d8024970249d","0x9024099b40701cd80240720807208099b009024d820807025e901cae1003e","0x7208070540902415024d8024110266f01c11024d8024100266e01c10024d8","0xd8024180267001c18024d8024820688209c07068093600901c9b01c0736009","0x99c81020882360820240720a7101cd002409340093600906c099bc0706c09","0x27401c1a024d8024820241d01c15024d8024100267301c073600901c8201c11","0x1b024d8024074680701cd8024072080701e750240765007060093600905409","0x70600936009340099d00706809360090440907407340093600906c099d807","0xd8024110258e01c950748202495024d8024180267701c1d024d80241a025f7","0xd802407208072541d340109e01b0601a040d82081504082024116400705409","0x823600909499209d901c25024d80241b0249901c99024d8024070241d01c07","0x93608225c09530070600936009060090b0070680936009068092740725c20","0x9360090a4099ec070a4093600926c099e80701cd8024072080709c099e49b","0x2f024d80241a0249d01c2d024d8024200241d01c2c024d80249d0267c01c9d","0x7208070c4a00bc2d044090c409360090b0099f4072800936009060090b007","0x7290093600901e4501c33024d8024070800701cd8024270244a01c0736009","0x2701c37024d80240726c070d40936009290332082501ca4024d8024a402499","0x9d01ca9024d8024200241d01c0d024d8024a70267e01ca7024d8024350dc82","0xa9044090f80936009034099f4072b00936009060090b0072ac093600906809","0xae024d8024400267b01c40024d8024950267f01c073600901c8201c3e2b0ab","0x72c809360093400927407110093600901c090740710809360092b8099f007","0x72096701c48118b21101102448024d8024420267d01c46024d80241d0242c","0x1d01c15024d8024100256901c073600901c8201c110268004082208d820809","0xd8024072080701e8102407650070600936009054095a807068093600920809","0x706809360090440907407340093600906c093940706c093600901d1a01c07","0x8202495024d8024180268201c1d024d80241a025f701c18024d8024d00256a","0xd8024090244601c073600901c8201c1002684208093608201c09a0c072541d","0x1a024d8024150252301c15024d8024110252201c11024d8024820252101c07","0x2501c18024d8024070800701cd802410024af01c073600901c8201c1a02409","0x12401c1d024d80241b3408209c07340093600901c9b01c1b024d80240906082","0x70446f2388d01c1127c200240908009360092540948c07254093600907409","0x70450d04082024072308e234070446f2388d01c1101c102080901c8c2388d","0x901c8c2388d01c111bc8e234070458b04082024072308e234070446f2388d","0x70446f2388d01c11a14102080901c8c2388d01c111bc8e234070461b04082","0x70468704082024072308e234070446f2388d01c11a18102080901c8c2388d","0x901c8c2388d01c111bc8e234070468804082024072308e234070446f2388d","0x8e2341017c8e23410a28102080901c8c2388d01c111bc8e234070468904082","0x82024072508e2341017c8e23410a300901c1d044820440d20a8b2080901c94","0x28f02407074112081102482a38102080901c982388d01c1117c8e234070468d","0x11a440901c1d044820442720a9004082024072688e234070445f2388d01c11","0x7046930240707411208110b082a48102080901c9c2388d01c1117c8e23407","0x901c9e2388d01c1117c8e234070469404082024072708e234070445f2388d","0x8e23411a5c0901c9f1bc070406f01c82a580901c1d044820442920a9504082","0x8e23407056990240728c6f01c101bc0720a9804082024072848e2341009c5f","0x706a9b024072946f01c101bc0720a9a044102080901ca12388d01c110a45f","0x942388d0404e2388d0429c0541104082024072848e234070442c0b05f2388d","0x8e23407044462388d01c11a7882024072508e234101288e23410a748202407","0x820441020aa004082024072688e23407044572388d01c11a7c102080901c98","0x3e2388d01c11a88102080901c9c2388d01c111088e23407046a10240707411","0x2a404082024072788e23407044532388d01c11a8c102080901c9c2388d01c11","0x15a98102080901cb02388d0402715c8e23411a940901caf1bc070406f01c82","0x8d046a801cb31bc821bc09a9c1104082024072c48e234070442914c8e23407","0x102080901cb82388d0400d1288e23411aa4102080901cb62388d0400d1388e","0x72c88e234100b0422388d046ab04082024072e88e23410024462388d046aa","0x15ab807250092a409ab4102080901cae2388d0402c0f88e23411ab01020809","0x8d01c15ac007260090d409abc11040820240729c8e23407044ac1fc8e23407","0x7f2388d01c15ac807268090c409ac41104082024072908e23407044ac1fc8e","0x9801c820240901c10ad007270090b409acc1104082024072808e23407044ac","0x9d026b60541104082024072908e23407044092b07f2388d01c1aad48202407","0x901c992388d040272b07f2388d056b8024072bc072080d01c82adc0727809","0xac1fc8e23407056bb02407254072080d01c82ae80725c0926409ae41104082","0x980240d20882af40901ca501c820340720abc044102080901cd02388d01c11","0x2be02407"],"sierra_program_debug_info":{"type_names":[[0,"RangeCheck"],[1,"u8"],[2,"core::result::Result::"],[3,"u128"],[4,"Array"],[5,"core::result::Result::>"],[6,"Tuple>>"],[7,"core::panics::Panic"],[8,"Tuple>"],[9,"core::panics::PanicResult::<(core::result::Result::>,)>"],[10,"Unit"],[11,"core::option::Option::"],[12,"Tuple"],[13,"core::panics::PanicResult::<((),)>"],[14,"core::result::Result::<(), core::array::Array::>"],[15,"Box"],[16,"core::option::Option::>"],[17,"core::integer::u256"],[18,"Tuple"],[19,"core::result::Result::<(core::integer::u256, core::integer::u256), core::array::Array::>"],[20,"ContractAddress"],[21,"core::result::Result::>"],[22,"Tuple>>"],[23,"core::panics::PanicResult::<(core::result::Result::>,)>"],[24,"core::result::Result::>"],[25,"Tuple>>"],[26,"core::panics::PanicResult::<(core::result::Result::>,)>"],[27,"core::result::Result::>"],[28,"Tuple>>"],[29,"core::panics::PanicResult::<(core::result::Result::>,)>"],[30,"felt252"],[31,"core::result::Result::>"],[32,"StorageAddress"],[33,"StorageBaseAddress"],[34,"pragma::pool::mock_pool::Pool::token_1::ContractMemberState"],[35,"Tuple"],[36,"core::panics::PanicResult::<(pragma::pool::mock_pool::Pool::token_1::ContractMemberState, ())>"],[37,"pragma::pool::mock_pool::Pool::token_0::ContractMemberState"],[38,"Tuple"],[39,"core::panics::PanicResult::<(pragma::pool::mock_pool::Pool::token_0::ContractMemberState, ())>"],[40,"pragma::pool::mock_pool::Pool::decimals::ContractMemberState"],[41,"Tuple"],[42,"core::panics::PanicResult::<(pragma::pool::mock_pool::Pool::decimals::ContractMemberState, ())>"],[43,"pragma::pool::mock_pool::Pool::symbol::ContractMemberState"],[44,"Tuple"],[45,"core::panics::PanicResult::<(pragma::pool::mock_pool::Pool::symbol::ContractMemberState, ())>"],[46,"pragma::pool::mock_pool::Pool::name::ContractMemberState"],[47,"Tuple"],[48,"core::panics::PanicResult::<(pragma::pool::mock_pool::Pool::name::ContractMemberState, ())>"],[49,"core::option::Option::"],[50,"pragma::pool::mock_pool::Pool::reserves::ContractMemberState"],[51,"Tuple"],[52,"core::panics::PanicResult::<(pragma::pool::mock_pool::Pool::reserves::ContractMemberState, ())>"],[53,"pragma::pool::mock_pool::Pool::total_supply::ContractMemberState"],[54,"Tuple"],[55,"core::panics::PanicResult::<(pragma::pool::mock_pool::Pool::total_supply::ContractMemberState, ())>"],[56,"core::option::Option::"],[57,"core::option::Option::"],[58,"core::option::Option::<(core::integer::u256, core::integer::u256)>"],[59,"pragma::pool::mock_pool::Pool::ContractState"],[60,"Tuple"],[61,"core::panics::PanicResult::<(pragma::pool::mock_pool::Pool::ContractState, ())>"],[62,"core::option::Option::"],[63,"Tuple>"],[64,"core::panics::PanicResult::<((core::integer::u256, core::integer::u256),)>"],[65,"Tuple"],[66,"core::panics::PanicResult::<(core::starknet::contract_address::ContractAddress,)>"],[67,"Tuple"],[68,"core::panics::PanicResult::<(core::integer::u256,)>"],[69,"Tuple"],[70,"core::panics::PanicResult::<(core::integer::u8,)>"],[71,"Snapshot>"],[72,"core::array::Span::"],[73,"Tuple>"],[74,"Tuple"],[75,"core::panics::PanicResult::<(core::felt252,)>"],[76,"BuiltinCosts"],[77,"System"],[78,"core::panics::PanicResult::<(core::array::Span::,)>"],[79,"u32"],[80,"GasBuiltin"]],"libfunc_names":[[0,"revoke_ap_tracking"],[1,"withdraw_gas"],[2,"branch_align"],[3,"struct_deconstruct>"],[4,"array_len"],[5,"snapshot_take"],[6,"drop"],[7,"u32_const<0>"],[8,"rename"],[9,"store_temp"],[10,"store_temp"],[11,"u32_eq"],[12,"array_new"],[13,"felt252_const<7733229381460288120802334208475838166080759535023995805565484692595>"],[14,"store_temp"],[15,"array_append"],[16,"struct_construct"],[17,"struct_construct>>"],[18,"enum_init,)>, 1>"],[19,"store_temp"],[20,"store_temp"],[21,"store_temp,)>>"],[22,"get_builtin_costs"],[23,"store_temp"],[24,"withdraw_gas_all"],[25,"struct_construct"],[26,"struct_construct"],[27,"struct_construct"],[28,"struct_construct"],[29,"struct_construct"],[30,"struct_construct"],[31,"struct_construct"],[32,"struct_construct"],[33,"snapshot_take"],[34,"drop"],[35,"store_temp"],[36,"function_call"],[37,"enum_match>"],[38,"struct_deconstruct>"],[39,"snapshot_take"],[40,"drop"],[41,"store_temp>"],[42,"function_call"],[43,"drop"],[44,"snapshot_take>"],[45,"drop>"],[46,"struct_construct>"],[47,"struct_construct>>"],[48,"enum_init,)>, 0>"],[49,"felt252_const<375233589013918064796019>"],[50,"drop>"],[51,"function_call"],[52,"function_call"],[53,"enum_match>"],[54,"struct_deconstruct>"],[55,"snapshot_take"],[56,"drop"],[57,"store_temp"],[58,"function_call"],[59,"function_call"],[60,"enum_match>"],[61,"struct_deconstruct>"],[62,"snapshot_take"],[63,"drop"],[64,"store_temp"],[65,"function_call"],[66,"function_call"],[67,"enum_match>"],[68,"struct_deconstruct>"],[69,"snapshot_take"],[70,"drop"],[71,"store_temp"],[72,"function_call"],[73,"function_call"],[74,"function_call"],[75,"enum_match>"],[76,"struct_deconstruct>>"],[77,"snapshot_take>"],[78,"drop>"],[79,"store_temp>"],[80,"function_call::serialize>"],[81,"store_temp>"],[82,"function_call"],[83,"enum_match>"],[84,"function_call"],[85,"enum_match>"],[86,"drop>"],[87,"felt252_const<485748461484230571791265682659113160264223489397539653310998840191492913>"],[88,"function_call::deserialize>"],[89,"enum_match>"],[90,"function_call"],[91,"function_call"],[92,"enum_match>"],[93,"function_call"],[94,"felt252_const<485748461484230571791265682659113160264223489397539653310998840191492914>"],[95,"struct_deconstruct"],[96,"drop"],[97,"drop"],[98,"drop"],[99,"drop"],[100,"drop"],[101,"drop"],[102,"store_temp"],[103,"function_call"],[104,"struct_construct>"],[105,"enum_init, 0>"],[106,"store_temp>"],[107,"enum_init, 1>"],[108,"rename"],[109,"struct_construct"],[110,"store_temp"],[111,"drop"],[112,"store_temp"],[113,"function_call"],[114,"store_temp"],[115,"function_call"],[116,"struct_construct>"],[117,"enum_init, 0>"],[118,"store_temp>"],[119,"enum_init, 1>"],[120,"rename"],[121,"u8_to_felt252"],[122,"store_temp"],[123,"function_call"],[124,"struct_construct>"],[125,"enum_init, 0>"],[126,"store_temp>"],[127,"enum_init, 1>"],[128,"dup"],[129,"struct_deconstruct"],[130,"drop"],[131,"store_temp"],[132,"function_call"],[133,"rename>"],[134,"rename"],[135,"store_temp"],[136,"function_call"],[137,"struct_construct>"],[138,"enum_init, 0>"],[139,"store_temp>"],[140,"enum_init, 1>"],[141,"rename"],[142,"contract_address_to_felt252"],[143,"store_temp"],[144,"function_call"],[145,"store_temp"],[146,"function_call"],[147,"struct_construct>>"],[148,"enum_init, 0>"],[149,"store_temp>"],[150,"enum_init, 1>"],[151,"struct_deconstruct>"],[152,"function_call"],[153,"enum_match>"],[154,"struct_construct"],[155,"enum_init, 0>"],[156,"store_temp>"],[157,"enum_init, 1>"],[158,"function_call"],[159,"enum_match>"],[160,"struct_deconstruct>"],[161,"struct_construct>"],[162,"enum_init, 0>"],[163,"store_temp>"],[164,"enum_init, 1>"],[165,"struct_construct>"],[166,"enum_init, 0>"],[167,"store_temp>"],[168,"enum_init, 1>"],[169,"function_call"],[170,"enum_match>"],[171,"struct_deconstruct>"],[172,"function_call"],[173,"enum_match>"],[174,"contract_address_try_from_felt252"],[175,"enum_init, 0>"],[176,"store_temp>"],[177,"enum_init, 1>"],[178,"felt252_const<1481454396321240011604>"],[179,"function_call"],[180,"enum_match>"],[181,"felt252_const<20564>"],[182,"function_call"],[183,"enum_match>"],[184,"u8_const<8>"],[185,"function_call"],[186,"enum_match>"],[187,"u128_const<100>"],[188,"u128_const<0>"],[189,"function_call"],[190,"enum_match>"],[191,"function_call"],[192,"enum_match>"],[193,"u128_const<10000>"],[194,"u128_const<1000>"],[195,"struct_deconstruct>"],[196,"struct_deconstruct>"],[197,"struct_deconstruct>"],[198,"struct_deconstruct>"],[199,"struct_deconstruct>"],[200,"drop>"],[201,"drop>"],[202,"drop>"],[203,"drop>"],[204,"drop>"],[205,"drop>"],[206,"storage_base_address_const<1528802474226268325865027367859591458315299653151958663884057507666229546336>"],[207,"storage_address_from_base"],[208,"store_temp"],[209,"storage_read_syscall"],[210,"enum_init>, 0>"],[211,"store_temp>>"],[212,"jump"],[213,"enum_init>, 1>"],[214,"rename>>"],[215,"function_call::unwrap_syscall>"],[216,"storage_base_address_const<944713526212149105522785400348068751682982210605126537021911324578866405028>"],[217,"storage_base_address_const<134830404806214277570220174593674215737759987247891306080029841794115377321>"],[218,"store_temp"],[219,"function_call"],[220,"enum_match>,)>>"],[221,"struct_deconstruct>>>"],[222,"store_temp>>"],[223,"function_call::unwrap_syscall>"],[224,"storage_base_address_const<603278275252936218847294002513349627170936020082667936993356353388973422646>"],[225,"function_call"],[226,"enum_match>,)>>"],[227,"struct_deconstruct>>>"],[228,"store_temp>>"],[229,"function_call::unwrap_syscall>"],[230,"rename"],[231,"u128_to_felt252"],[232,"storage_base_address_const<364822321257525887739155789192095954216101503738712480123135471616671474562>"],[233,"function_call"],[234,"enum_match>,)>>"],[235,"struct_deconstruct>>>"],[236,"store_temp>>"],[237,"function_call::unwrap_syscall>"],[238,"storage_base_address_const<757466339293145438988016229217366448700052075453954135070965841494077635296>"],[239,"storage_base_address_const<738337137234763042822500087055486634347765724773728104454977800082446796979>"],[240,"dup"],[241,"dup"],[242,"enum_match>>"],[243,"u8_const<1>"],[244,"function_call"],[245,"function_call"],[246,"enum_init>, 0>"],[247,"store_temp>>"],[248,"enum_init>, 1>"],[249,"drop"],[250,"rename>>"],[251,"function_call::unwrap_syscall>"],[252,"array_snapshot_pop_front"],[253,"enum_init>, 0>"],[254,"store_temp>>"],[255,"store_temp>>"],[256,"enum_init>, 1>"],[257,"enum_match>>"],[258,"unbox"],[259,"function_call"],[260,"enum_init, 0>"],[261,"store_temp>"],[262,"enum_init, 1>"],[263,"function_call"],[264,"rename>>"],[265,"function_call::unwrap_syscall>"],[266,"enum_match>"],[267,"snapshot_take"],[268,"struct_deconstruct>"],[269,"struct_construct>"],[270,"enum_init, 0>"],[271,"store_temp>"],[272,"enum_init, 1>"],[273,"snapshot_take"],[274,"enum_match>>"],[275,"dup"],[276,"storage_address_from_base_and_offset"],[277,"storage_write_syscall"],[278,"enum_init>, 0>"],[279,"store_temp>>"],[280,"enum_init>, 1>"],[281,"enum_init, 1>"],[282,"store_temp>"],[283,"rename"],[284,"rename"],[285,"rename"],[286,"struct_construct>"],[287,"enum_init, 0>"],[288,"enum_init, 0>"],[289,"store_temp>"],[290,"enum_init, 1>"],[291,"snapshot_take"],[292,"struct_construct>"],[293,"enum_init, 0>"],[294,"store_temp>"],[295,"enum_init, 1>"],[296,"snapshot_take"],[297,"struct_construct>"],[298,"enum_init, 0>"],[299,"store_temp>"],[300,"enum_init, 1>"],[301,"snapshot_take"],[302,"struct_construct>"],[303,"enum_init, 0>"],[304,"store_temp>"],[305,"enum_init, 1>"],[306,"snapshot_take"],[307,"struct_construct>"],[308,"enum_init, 0>"],[309,"store_temp>"],[310,"enum_init, 1>"],[311,"snapshot_take"],[312,"struct_construct>"],[313,"enum_init, 0>"],[314,"store_temp>"],[315,"enum_init, 1>"],[316,"enum_match>>"],[317,"function_call"],[318,"enum_match>"],[319,"enum_init>, 0>"],[320,"struct_construct>>>"],[321,"enum_init>,)>, 0>"],[322,"store_temp>,)>>"],[323,"felt252_const<110930490496575599150170734222081291576>"],[324,"enum_init>,)>, 1>"],[325,"enum_init>, 1>"],[326,"enum_match>>"],[327,"function_call"],[328,"enum_match>,)>>"],[329,"struct_deconstruct>>>"],[330,"enum_match>>"],[331,"enum_init>, 0>"],[332,"struct_construct>>>"],[333,"enum_init>,)>, 0>"],[334,"store_temp>,)>>"],[335,"felt252_const<476442828812030857794232422692155113556837216824>"],[336,"enum_init>,)>, 1>"],[337,"enum_init>, 1>"],[338,"function_call"],[339,"enum_init>, 0>"],[340,"struct_construct>>>"],[341,"enum_init>,)>, 0>"],[342,"store_temp>,)>>"],[343,"felt252_const<1749165063169615148890104124711417950509560691>"],[344,"enum_init>,)>, 1>"],[345,"enum_init>, 1>"],[346,"enum_match>>"],[347,"u8_overflowing_add"],[348,"enum_init, 0>"],[349,"store_temp>"],[350,"enum_init, 1>"],[351,"felt252_const<608642104203229548495787928534675319>"],[352,"rename>"],[353,"function_call::expect::>"],[354,"enum_match>>"],[355,"u128s_from_felt252"],[356,"rename>"],[357,"struct_construct>"],[358,"enum_init, 0>"],[359,"store_temp>"],[360,"enum_init, 1>"],[361,"u8_try_from_felt252"],[362,"enum_init, 0>"],[363,"store_temp>"],[364,"enum_init, 1>"],[365,"rename>"],[366,"enum_init>, 0>"],[367,"struct_construct>>>"],[368,"enum_init>,)>, 0>"],[369,"store_temp>,)>>"],[370,"enum_init>,)>, 1>"],[371,"enum_init>, 1>"],[372,"rename>"],[373,"enum_match>"]],"user_func_names":[[0,"pragma::pool::mock_pool::Pool::__wrapper_name"],[1,"pragma::pool::mock_pool::Pool::__wrapper_symbol"],[2,"pragma::pool::mock_pool::Pool::__wrapper_decimals"],[3,"pragma::pool::mock_pool::Pool::__wrapper_total_supply"],[4,"pragma::pool::mock_pool::Pool::__wrapper_token_0"],[5,"pragma::pool::mock_pool::Pool::__wrapper_token_1"],[6,"pragma::pool::mock_pool::Pool::__wrapper_get_reserves"],[7,"pragma::pool::mock_pool::Pool::__wrapper_set_total_supply"],[8,"pragma::pool::mock_pool::Pool::__wrapper_set_reserves"],[9,"pragma::pool::mock_pool::Pool::__wrapper_constructor"],[10,"pragma::pool::mock_pool::Pool::IPoolImpl::name"],[11,"core::Felt252Serde::serialize"],[12,"pragma::pool::mock_pool::Pool::IPoolImpl::symbol"],[13,"pragma::pool::mock_pool::Pool::IPoolImpl::decimals"],[14,"core::integer::U8Serde::serialize"],[15,"pragma::pool::mock_pool::Pool::IPoolImpl::total_supply"],[16,"core::integer::u256Serde::serialize"],[17,"pragma::pool::mock_pool::Pool::IPoolImpl::token_0"],[18,"core::starknet::contract_address::ContractAddressSerde::serialize"],[19,"pragma::pool::mock_pool::Pool::IPoolImpl::token_1"],[20,"pragma::pool::mock_pool::Pool::IPoolImpl::get_reserves"],[21,"core::serde::TupleSize2Serde::::serialize"],[22,"core::integer::u256Serde::deserialize"],[23,"pragma::pool::mock_pool::Pool::ISetPoolImpl::set_total_supply"],[24,"core::serde::TupleSize2Serde::::deserialize"],[25,"pragma::pool::mock_pool::Pool::ISetPoolImpl::set_reserves"],[26,"core::starknet::contract_address::ContractAddressSerde::deserialize"],[27,"pragma::pool::mock_pool::Pool::constructor"],[28,"pragma::pool::mock_pool::Pool::name::InternalContractMemberStateImpl::read"],[29,"pragma::pool::mock_pool::Pool::symbol::InternalContractMemberStateImpl::read"],[30,"pragma::pool::mock_pool::Pool::decimals::InternalContractMemberStateImpl::read"],[31,"pragma::pool::mock_pool::Pool::total_supply::InternalContractMemberStateImpl::read"],[32,"core::integer::U128Serde::serialize"],[33,"pragma::pool::mock_pool::Pool::token_0::InternalContractMemberStateImpl::read"],[34,"pragma::pool::mock_pool::Pool::token_1::InternalContractMemberStateImpl::read"],[35,"pragma::pool::mock_pool::Pool::reserves::InternalContractMemberStateImpl::read"],[36,"core::integer::U128Serde::deserialize"],[37,"pragma::pool::mock_pool::Pool::total_supply::InternalContractMemberStateImpl::write"],[38,"pragma::pool::mock_pool::Pool::reserves::InternalContractMemberStateImpl::write"],[39,"core::Felt252Serde::deserialize"],[40,"pragma::pool::mock_pool::Pool::name::InternalContractMemberStateImpl::write"],[41,"pragma::pool::mock_pool::Pool::symbol::InternalContractMemberStateImpl::write"],[42,"pragma::pool::mock_pool::Pool::decimals::InternalContractMemberStateImpl::write"],[43,"pragma::pool::mock_pool::Pool::token_0::InternalContractMemberStateImpl::write"],[44,"pragma::pool::mock_pool::Pool::token_1::InternalContractMemberStateImpl::write"],[45,"core::starknet::SyscallResultTraitImpl::::unwrap_syscall"],[46,"core::starknet::storage_access::StoreU8::read"],[47,"core::starknet::SyscallResultTraitImpl::::unwrap_syscall"],[48,"core::integer::Storeu256::read"],[49,"core::starknet::SyscallResultTraitImpl::::unwrap_syscall"],[50,"core::starknet::storage_access::StoreContractAddress::read"],[51,"core::starknet::SyscallResultTraitImpl::::unwrap_syscall"],[52,"core::integer::U8Add::add"],[53,"core::integer::Storeu256::read_at_offset"],[54,"core::starknet::SyscallResultTraitImpl::<(core::integer::u256, core::integer::u256)>::unwrap_syscall"],[55,"core::integer::u128_try_from_felt252"],[56,"core::integer::Storeu256::write"],[57,"core::starknet::SyscallResultTraitImpl::<()>::unwrap_syscall"],[58,"core::integer::Felt252TryIntoU8::try_into"],[59,"core::starknet::storage_access::StoreU128::read"],[60,"core::starknet::contract_address::Felt252TryIntoContractAddress::try_into"],[61,"core::result::ResultTraitImpl::::expect::"]]},"contract_class_version":"0.1.0","entry_points_by_type":{"EXTERNAL":[{"selector":"0x4c4fb1ab068f6039d5780c68dd0fa2f8742cceb3426d19667778ca7f3518a9","function_idx":2},{"selector":"0xce7b6bfaaa8aeaaddf29401347ece7ea1e62dc96b606abb416173ce5e5e382","function_idx":4},{"selector":"0xda5ed79a351296dc4b247685ec62016cef1d4b553581de1c10828fbd4eb4b6","function_idx":8},{"selector":"0x1557182e4359a1f0c6301278e8f5b35a776ab58d39892581e357578fb287836","function_idx":3},{"selector":"0x1acb5f40be40787cd115a42c316da9ad26cc6a72436967b82f7a6ea298c7ae0","function_idx":5},{"selector":"0x216b05c387bab9ac31918a3e61672f4618601f3c598a2f3f2710f37053e1ea4","function_idx":1},{"selector":"0x3539b27e74dc8cf40e093e2b657711d2c9c8c03f6810b0732f46212f5a78857","function_idx":7},{"selector":"0x361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60","function_idx":0},{"selector":"0x3cb0e1486e633fbe3e2fafe8aedf12b70ca1860e7467ddb75a17858cde39312","function_idx":6}],"L1_HANDLER":[],"CONSTRUCTOR":[{"selector":"0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194","function_idx":9}]},"abi":[{"type":"impl","name":"IPoolImpl","interface_name":"pragma::pool::mock_pool::IPool"},{"type":"struct","name":"core::integer::u256","members":[{"name":"low","type":"core::integer::u128"},{"name":"high","type":"core::integer::u128"}]},{"type":"interface","name":"pragma::pool::mock_pool::IPool","items":[{"type":"function","name":"name","inputs":[],"outputs":[{"type":"core::felt252"}],"state_mutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"type":"core::felt252"}],"state_mutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"type":"core::integer::u8"}],"state_mutability":"view"},{"type":"function","name":"total_supply","inputs":[],"outputs":[{"type":"core::integer::u256"}],"state_mutability":"view"},{"type":"function","name":"token_0","inputs":[],"outputs":[{"type":"core::starknet::contract_address::ContractAddress"}],"state_mutability":"view"},{"type":"function","name":"token_1","inputs":[],"outputs":[{"type":"core::starknet::contract_address::ContractAddress"}],"state_mutability":"view"},{"type":"function","name":"get_reserves","inputs":[],"outputs":[{"type":"(core::integer::u256, core::integer::u256)"}],"state_mutability":"view"}]},{"type":"impl","name":"ISetPoolImpl","interface_name":"pragma::pool::mock_pool::ISetPool"},{"type":"interface","name":"pragma::pool::mock_pool::ISetPool","items":[{"type":"function","name":"set_total_supply","inputs":[{"name":"supply","type":"core::integer::u256"}],"outputs":[],"state_mutability":"external"},{"type":"function","name":"set_reserves","inputs":[{"name":"reserves","type":"(core::integer::u256, core::integer::u256)"}],"outputs":[],"state_mutability":"external"}]},{"type":"constructor","name":"constructor","inputs":[{"name":"token_0","type":"core::starknet::contract_address::ContractAddress"},{"name":"token_1","type":"core::starknet::contract_address::ContractAddress"}]},{"type":"event","name":"pragma::pool::mock_pool::Pool::Event","kind":"enum","variants":[]}]} \ No newline at end of file diff --git a/pragma-sdk/pragma_sdk/onchain/mixins/oracle.py b/pragma-sdk/pragma_sdk/onchain/mixins/oracle.py index 13d5dbc4..8ceed31b 100644 --- a/pragma-sdk/pragma_sdk/onchain/mixins/oracle.py +++ b/pragma-sdk/pragma_sdk/onchain/mixins/oracle.py @@ -630,3 +630,17 @@ async def get_time_since_last_published_spot( diff = int(time.time()) - max_timestamp return diff + + async def is_currency_registered( + self, + currency_id: str, + block_id: Optional[BlockId] = "latest", + ) -> bool: + """ + Check if a currency is registered on the Oracle. + """ + (currency_info,) = await self.oracle.functions["get_currency"].call( + str_to_felt(currency_id), + block_number=block_id, + ) + return bool(currency_info["id"] != 0) diff --git a/pragma-sdk/pyproject.toml b/pragma-sdk/pyproject.toml index 2fbd2ef3..52dc54a4 100644 --- a/pragma-sdk/pyproject.toml +++ b/pragma-sdk/pyproject.toml @@ -26,6 +26,7 @@ requests-mock = "^1.11.0" pydantic = "^2.7.4" python-dotenv = "^1.0.0" pyyaml = "^6.0.1" +redis = {version = "^5.0.7", extras = ["hiredis"]} [tool.poetry.extras] docs = ["sphinx", "enum-tools", "furo", "pallets-sphinx-themes"] @@ -52,6 +53,7 @@ setuptools = "^68.0.0" pytest-rerunfailures = "^12.0" moto = { extras = ["s3", "secretsmanager"], version = "^4.2.5" } boto3 = "^1.28.61" +fakeredis = {version = "^2.26.0", extras=["json"]} [tool.poetry.group.typing.dependencies] mypy = "^1.10" diff --git a/pragma-sdk/tests/integration/client_test.py b/pragma-sdk/tests/integration/client_test.py index 68c9ad73..b8a35008 100644 --- a/pragma-sdk/tests/integration/client_test.py +++ b/pragma-sdk/tests/integration/client_test.py @@ -13,6 +13,7 @@ from pragma_sdk.common.types.entry import FutureEntry, SpotEntry, GenericEntry from pragma_sdk.common.types.asset import Asset from pragma_sdk.common.types.types import DataTypes +from pragma_sdk.common.types.pair import Pair from pragma_sdk.common.utils import str_to_felt, felt_to_str from pragma_sdk.onchain.client import PragmaOnChainClient @@ -25,8 +26,8 @@ PUBLISHER_NAME = "PRAGMA" -ETH_PAIR = str_to_felt("ETH/USD") -BTC_PAIR = str_to_felt("BTC/USD") +ETH_PAIR = Pair.from_tickers("ETH", "USD") +BTC_PAIR = Pair.from_tickers("BTC", "USD") SOURCE_1 = "PRAGMA_1" SOURCE_2 = "PRAGMA_2" @@ -178,6 +179,14 @@ async def test_client_oracle_mixin_spot(pragma_client: PragmaOnChainClient): publisher_name = "PRAGMA" publisher_address = pragma_client.account_address + assert await pragma_client.is_currency_registered( + BTC_PAIR.base_currency.id, "pending" + ) + assert await pragma_client.is_currency_registered( + BTC_PAIR.quote_currency.id, "pending" + ) + assert not (await pragma_client.is_currency_registered("DONOTEXIST", "pending")) + await wait_for_acceptance( await pragma_client.add_publisher(publisher_name, publisher_address) ) @@ -192,7 +201,7 @@ async def test_client_oracle_mixin_spot(pragma_client: PragmaOnChainClient): timestamp = int(time.time()) await wait_for_acceptance( await pragma_client.publish_spot_entry( - BTC_PAIR, + BTC_PAIR.id, 100, timestamp, SOURCE_1, @@ -200,30 +209,32 @@ async def test_client_oracle_mixin_spot(pragma_client: PragmaOnChainClient): volume=int(200 * 100 * 1e8), ) ) - entries = await pragma_client.get_spot_entries(BTC_PAIR, sources=[]) + entries = await pragma_client.get_spot_entries(BTC_PAIR.id, sources=[]) assert entries == [ SpotEntry( - BTC_PAIR, 100, timestamp, SOURCE_1, publisher_name, volume=2000000000000 + BTC_PAIR.id, 100, timestamp, SOURCE_1, publisher_name, volume=2000000000000 ) ] # Get SPOT - res = await pragma_client.get_spot(BTC_PAIR) + res = await pragma_client.get_spot(BTC_PAIR.id) assert res.price == 100 assert res.num_sources_aggregated == 1 assert res.last_updated_timestamp == timestamp assert res.decimals == 8 # Get Decimals - decimals = await pragma_client.get_decimals(Asset(DataTypes.SPOT, BTC_PAIR, None)) + decimals = await pragma_client.get_decimals( + Asset(DataTypes.SPOT, BTC_PAIR.id, None) + ) assert decimals == 8 # Publish many SPOT entries spot_entry_1 = SpotEntry( - ETH_PAIR, 100, timestamp, SOURCE_1, publisher_name, volume=10 + ETH_PAIR.id, 100, timestamp, SOURCE_1, publisher_name, volume=10 ) spot_entry_2 = SpotEntry( - ETH_PAIR, 200, timestamp + 10, SOURCE_1, publisher_name, volume=20 + ETH_PAIR.id, 200, timestamp + 10, SOURCE_1, publisher_name, volume=20 ) invocations = await pragma_client.publish_many( @@ -234,7 +245,7 @@ async def test_client_oracle_mixin_spot(pragma_client: PragmaOnChainClient): unknown_source = "UNKNOWN" try: await pragma_client.get_spot_entries( - ETH_PAIR, sources=[str_to_felt(unknown_source)] + ETH_PAIR.id, sources=[str_to_felt(unknown_source)] ) except ClientError as err: err_msg = "Contract error" # TODO(#000): check error message 04e6f206461746120656e74727920666f756e64 @@ -242,12 +253,12 @@ async def test_client_oracle_mixin_spot(pragma_client: PragmaOnChainClient): raise err # Returns correct entries - entries = await pragma_client.get_spot_entries(ETH_PAIR, sources=[]) + entries = await pragma_client.get_spot_entries(ETH_PAIR.id, sources=[]) assert entries == [spot_entry_2] # Return correct price aggregated - res = await pragma_client.get_spot(ETH_PAIR) + res = await pragma_client.get_spot(ETH_PAIR.id) assert res.price == 200 assert res.num_sources_aggregated == 1 assert res.last_updated_timestamp == timestamp + 10 @@ -255,13 +266,13 @@ async def test_client_oracle_mixin_spot(pragma_client: PragmaOnChainClient): # Fails if timestamp too far in the future (>7min) spot_entry_future = SpotEntry( - ETH_PAIR, 100, timestamp + 450, SOURCE_1, publisher_name, volume=100000000000 + ETH_PAIR.id, 100, timestamp + 450, SOURCE_1, publisher_name, volume=100000000000 ) try: invocations = await pragma_client.publish_many( [spot_entry_future], ) - invocations[-1].wait_for_acceptance() + await invocations[-1].wait_for_acceptance() except TransactionRevertedError as err: err_msg = "Timestamp is in the future" if err_msg not in err.message: @@ -272,17 +283,17 @@ async def test_client_oracle_mixin_spot(pragma_client: PragmaOnChainClient): await pragma_client.add_source_for_publisher(publisher_name, SOURCE_2) ) spot_entry_1 = SpotEntry( - ETH_PAIR, 100, timestamp + 20, SOURCE_1, publisher_name, volume=10 + ETH_PAIR.id, 100, timestamp + 20, SOURCE_1, publisher_name, volume=10 ) spot_entry_2 = SpotEntry( - ETH_PAIR, 200, timestamp + 30, SOURCE_2, publisher_name, volume=20 + ETH_PAIR.id, 200, timestamp + 30, SOURCE_2, publisher_name, volume=20 ) invocations = await pragma_client.publish_many( [spot_entry_1, spot_entry_2], ) await invocations[len(invocations) - 1].wait_for_acceptance() - res = await pragma_client.get_spot(ETH_PAIR) + res = await pragma_client.get_spot(ETH_PAIR.id) assert res.price == 150 assert res.num_sources_aggregated == 2 assert res.last_updated_timestamp == timestamp + 30 @@ -299,7 +310,7 @@ async def test_client_oracle_mixin_future(pragma_client: PragmaOnChainClient): timestamp = int(time.time()) expiry_timestamp = timestamp + 1000 future_entry_1 = FutureEntry( - BTC_PAIR, + BTC_PAIR.id, 1000, timestamp, SOURCE_1, @@ -308,7 +319,7 @@ async def test_client_oracle_mixin_future(pragma_client: PragmaOnChainClient): volume=10000, ) future_entry_2 = FutureEntry( - BTC_PAIR, + BTC_PAIR.id, 2000, timestamp + 100, SOURCE_1, @@ -323,12 +334,12 @@ async def test_client_oracle_mixin_future(pragma_client: PragmaOnChainClient): await invocations[len(invocations) - 1].wait_for_acceptance() # Check entries entries = await pragma_client.get_future_entries( - BTC_PAIR, expiry_timestamp, sources=[] + BTC_PAIR.id, expiry_timestamp, sources=[] ) assert entries == [future_entry_2] # Get FUTURE - res = await pragma_client.get_future(BTC_PAIR, expiry_timestamp) + res = await pragma_client.get_future(BTC_PAIR.id, expiry_timestamp) assert res.price == 2000 assert res.num_sources_aggregated == 1 assert res.last_updated_timestamp == timestamp + 100 @@ -338,10 +349,16 @@ async def test_client_oracle_mixin_future(pragma_client: PragmaOnChainClient): # Add new source and check aggregation timestamp = int(time.time()) future_entry_1 = FutureEntry( - ETH_PAIR, 100, timestamp, SOURCE_1, publisher_name, expiry_timestamp, volume=10 + ETH_PAIR.id, + 100, + timestamp, + SOURCE_1, + publisher_name, + expiry_timestamp, + volume=10, ) future_entry_2 = FutureEntry( - ETH_PAIR, + ETH_PAIR.id, 200, timestamp + 10, SOURCE_2, @@ -354,7 +371,7 @@ async def test_client_oracle_mixin_future(pragma_client: PragmaOnChainClient): [future_entry_1, future_entry_2], ) await invocations[-1].wait_for_acceptance() - res = await pragma_client.get_future(ETH_PAIR, expiry_timestamp) + res = await pragma_client.get_future(ETH_PAIR.id, expiry_timestamp) assert res.price == 150 assert res.num_sources_aggregated == 2 assert res.last_updated_timestamp == timestamp + 10 @@ -362,7 +379,7 @@ async def test_client_oracle_mixin_future(pragma_client: PragmaOnChainClient): # Fails if timestamp too far in the future (>2min) future_entry_future = FutureEntry( - ETH_PAIR, + ETH_PAIR.id, 100, timestamp + 1000, SOURCE_1, @@ -418,10 +435,10 @@ async def test_client_oracle_mixin_get_entry(pragma_client: PragmaOnChainClient) timestamp = int(time.time()) spot_entry = SpotEntry( - ETH_PAIR, 100, timestamp + 40, SOURCE_1, publisher_name, volume=0 + ETH_PAIR.id, 100, timestamp + 40, SOURCE_1, publisher_name, volume=0 ) future_entry = FutureEntry( - ETH_PAIR, + ETH_PAIR.id, 200, timestamp + 20, SOURCE_1, @@ -435,9 +452,9 @@ async def test_client_oracle_mixin_get_entry(pragma_client: PragmaOnChainClient) # Get spot entry published_entry = await pragma_client.get_entry( - ETH_PAIR, DataTypes.SPOT, publisher_name, SOURCE_1 + ETH_PAIR.id, DataTypes.SPOT, publisher_name, SOURCE_1 ) - assert published_entry.pair_id == ETH_PAIR + assert published_entry.pair_id == ETH_PAIR.id assert published_entry.price == 100 assert published_entry.volume == 0 assert published_entry.base.timestamp == timestamp + 40 @@ -446,9 +463,9 @@ async def test_client_oracle_mixin_get_entry(pragma_client: PragmaOnChainClient) # Get future entry published_entry = await pragma_client.get_entry( - ETH_PAIR, DataTypes.FUTURE, publisher_name, SOURCE_1 + ETH_PAIR.id, DataTypes.FUTURE, publisher_name, SOURCE_1 ) - assert published_entry.pair_id == ETH_PAIR + assert published_entry.pair_id == ETH_PAIR.id assert published_entry.price == 200 assert published_entry.volume == 20 assert published_entry.base.timestamp == timestamp + 20 diff --git a/pragma-sdk/tests/integration/constants.py b/pragma-sdk/tests/integration/constants.py index 98155e2e..8e7d78f2 100644 --- a/pragma-sdk/tests/integration/constants.py +++ b/pragma-sdk/tests/integration/constants.py @@ -33,7 +33,7 @@ def find_repo_root(start_directory: Path) -> Path: SUBMODULE_DIR = repo_root / "pragma-oracle" MOCK_DIR = repo_root / "pragma-sdk/tests/integration" / "mock" -CONTRACTS_COMPILED_DIR = SUBMODULE_DIR / "target/dev" +CONTRACTS_COMPILED_DIR = SUBMODULE_DIR / "pragma-oracle" / "target" / "dev" MOCK_COMPILED_DIR = MOCK_DIR / "compiled_contracts" DEPLOYMENTS_DIR = SUBMODULE_DIR / "deployments" diff --git a/pragma-sdk/tests/integration/fixtures/clients.py b/pragma-sdk/tests/integration/fixtures/clients.py index d9b5d148..303e9afa 100644 --- a/pragma-sdk/tests/integration/fixtures/clients.py +++ b/pragma-sdk/tests/integration/fixtures/clients.py @@ -70,8 +70,6 @@ def forked_client(network_config: Dict[str, Any]) -> PragmaOnChainClient: str(1), "--seed", str(1), - "--chain-id", - network.upper(), ] if block_number is not None: command.extend(["--fork-block-number", str(block_number)]) diff --git a/pragma-sdk/tests/unit/common/fetchers/test_generic_lp_redis.py b/pragma-sdk/tests/unit/common/fetchers/test_generic_lp_redis.py new file mode 100644 index 00000000..6a0518fe --- /dev/null +++ b/pragma-sdk/tests/unit/common/fetchers/test_generic_lp_redis.py @@ -0,0 +1,171 @@ +import pytest +import asyncio + +from fakeredis import FakeStrictRedis + +from pragma_sdk.common.fetchers.generic_fetchers.lp_fetcher.redis_manager import ( + LpRedisManager, +) + +MAINNET = "mainnet" +SEPOLIA = "sepolia" +POOL_ADDRESS = "0x068cfffac83830edbc3da6f13a9aa19266b3f5b677a57c58d7742087cf439fdd" +SAMPLE_RESERVES = (1000000, 2000000) +SAMPLE_TOTAL_SUPPLY = 500000 + + +@pytest.fixture +def lp_redis_manager(): + redis_manager = LpRedisManager(host="fake", port="6379") + fake_redis = FakeStrictRedis(server_type="redis") + redis_manager.client = fake_redis + return redis_manager + + +def test_store_pool_data(lp_redis_manager: LpRedisManager): + result = lp_redis_manager.store_pool_data( + MAINNET, POOL_ADDRESS, SAMPLE_RESERVES, SAMPLE_TOTAL_SUPPLY + ) + assert result is True + + reserves = lp_redis_manager.get_latest_n_reserves(MAINNET, POOL_ADDRESS, 1) + total_supply = lp_redis_manager.get_latest_n_total_supply(MAINNET, POOL_ADDRESS, 1) + + assert len(reserves) == 1 + assert reserves[0][0] == SAMPLE_RESERVES[0] + assert reserves[0][1] == SAMPLE_RESERVES[1] + assert len(total_supply) == 1 + assert total_supply[0] == SAMPLE_TOTAL_SUPPLY + + +def test_get_latest_n_reserves(lp_redis_manager: LpRedisManager): + reserves_list = [ + (1000000, 2000000), + (1100000, 2100000), + (1200000, 2200000), + ] + + for reserves in reserves_list: + lp_redis_manager.store_pool_data( + MAINNET, POOL_ADDRESS, reserves, SAMPLE_TOTAL_SUPPLY + ) + + latest_reserves = lp_redis_manager.get_latest_n_reserves(MAINNET, POOL_ADDRESS, 2) + assert len(latest_reserves) == 2 + assert latest_reserves[0][0] == reserves_list[-1][0] + assert latest_reserves[0][1] == reserves_list[-1][1] + assert latest_reserves[1][0] == reserves_list[-2][0] + assert latest_reserves[1][1] == reserves_list[-2][1] + + single_reserve = lp_redis_manager.get_latest_n_reserves(MAINNET, POOL_ADDRESS, 1) + assert len(single_reserve) == 1 + assert single_reserve[0][0] == reserves_list[-1][0] + assert single_reserve[0][1] == reserves_list[-1][1] + + non_existent = lp_redis_manager.get_latest_n_reserves(MAINNET, "0xnonexistent", 1) + assert len(non_existent) == 0 + + with pytest.raises(ValueError): + lp_redis_manager.get_latest_n_reserves(MAINNET, POOL_ADDRESS, 0) + + +def test_get_latest_n_total_supply(lp_redis_manager: LpRedisManager): + total_supply_list = [500000, 510000, 520000] + + for total_supply in total_supply_list: + lp_redis_manager.store_pool_data( + MAINNET, POOL_ADDRESS, SAMPLE_RESERVES, total_supply + ) + + latest_total_supply = lp_redis_manager.get_latest_n_total_supply( + MAINNET, POOL_ADDRESS, 2 + ) + assert len(latest_total_supply) == 2 + assert latest_total_supply[0] == total_supply_list[-1] + assert latest_total_supply[1] == total_supply_list[-2] + + single_total_supply = lp_redis_manager.get_latest_n_total_supply( + MAINNET, POOL_ADDRESS, 1 + ) + assert len(single_total_supply) == 1 + assert single_total_supply[0] == total_supply_list[-1] + + non_existent = lp_redis_manager.get_latest_n_total_supply( + MAINNET, "0xnonexistent", 1 + ) + assert len(non_existent) == 0 + + +def test_lists_max_values(lp_redis_manager: LpRedisManager): + for i in range(500): # More than LISTS_MAX_VALUES + lp_redis_manager.store_pool_data(MAINNET, POOL_ADDRESS, (i, i * 2), i) + + reserves = lp_redis_manager.get_latest_n_reserves(MAINNET, POOL_ADDRESS, 500) + total_supply = lp_redis_manager.get_latest_n_total_supply( + MAINNET, POOL_ADDRESS, 500 + ) + + assert len(reserves) <= 480 + assert len(total_supply) <= 480 + + assert reserves[0][0] == 499 + assert total_supply[0] == 499 + + +def test_storage_across_networks(lp_redis_manager: LpRedisManager): + mainnet_reserves = (1000000, 2000000) + sepolia_reserves = (3000000, 4000000) + + lp_redis_manager.store_pool_data(MAINNET, POOL_ADDRESS, mainnet_reserves, 500000) + lp_redis_manager.store_pool_data(SEPOLIA, POOL_ADDRESS, sepolia_reserves, 600000) + + mainnet_result = lp_redis_manager.get_latest_n_reserves(MAINNET, POOL_ADDRESS, 1) + assert mainnet_result[0][0] == mainnet_reserves[0] + assert mainnet_result[0][1] == mainnet_reserves[1] + + sepolia_result = lp_redis_manager.get_latest_n_reserves(SEPOLIA, POOL_ADDRESS, 1) + assert sepolia_result[0][0] == sepolia_reserves[0] + assert sepolia_result[0][1] == sepolia_reserves[1] + + +@pytest.mark.asyncio +async def test_ttl(lp_redis_manager: LpRedisManager): + lp_redis_manager.time_to_live = 3 + + result = lp_redis_manager.store_pool_data( + MAINNET, + POOL_ADDRESS, + SAMPLE_RESERVES, + SAMPLE_TOTAL_SUPPLY, + ) + assert result is True + + reserves_key = f"{MAINNET}:{POOL_ADDRESS}:reserves" + total_supply_key = f"{MAINNET}:{POOL_ADDRESS}:total_supply" + + assert lp_redis_manager.client.exists(reserves_key) + assert lp_redis_manager.client.exists(total_supply_key) + + reserves_ttl = lp_redis_manager.client.ttl(reserves_key) + total_supply_ttl = lp_redis_manager.client.ttl(total_supply_key) + assert 0 < reserves_ttl <= 3 + assert 0 < total_supply_ttl <= 3 + + result = lp_redis_manager.store_pool_data( + MAINNET, + POOL_ADDRESS, + (2000000, 3000000), + SAMPLE_TOTAL_SUPPLY, + ) + assert result is True + + new_reserves_ttl = lp_redis_manager.client.ttl(reserves_key) + new_total_supply_ttl = lp_redis_manager.client.ttl(total_supply_key) + assert 0 < new_reserves_ttl <= 3 + assert 0 < new_total_supply_ttl <= 3 + + # Wait for expiry + await asyncio.sleep(lp_redis_manager.time_to_live + 1) + + assert not lp_redis_manager.client.exists(reserves_key) + assert not lp_redis_manager.client.exists(total_supply_key) diff --git a/pragma-utils/pragma_utils/logger.py b/pragma-utils/pragma_utils/logger.py index d6fa97f7..5538346a 100644 --- a/pragma-utils/pragma_utils/logger.py +++ b/pragma-utils/pragma_utils/logger.py @@ -1,5 +1,6 @@ import logging from logging import Logger +from sys import stdout def setup_logging(logger: Logger, log_level: str) -> None: @@ -14,6 +15,21 @@ def setup_logging(logger: Logger, log_level: str) -> None: if numeric_log_level is None: raise ValueError(f"Invalid log level: {log_level}") - logging.basicConfig(level=numeric_log_level) + # Configure formatting + formatter = logging.Formatter("[%(asctime)s] %(levelname)s:%(name)s.%(module)s:%(message)s") + + # Configure handlers + for handler in logger.handlers: + handler.setFormatter(formatter) + handler.setLevel(numeric_log_level) + + # If no handlers exist, add a stream handler + if not logger.handlers: + stream_handler = logging.StreamHandler(stdout) + stream_handler.setFormatter(formatter) + stream_handler.setLevel(numeric_log_level) + logger.addHandler(stream_handler) + + # Set logger and root logger levels logger.setLevel(numeric_log_level) logging.getLogger().setLevel(numeric_log_level) diff --git a/pyproject.toml b/pyproject.toml index cd546a7d..815711ff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,8 @@ version_files = [ "merkle-maker/VERSION", "merkle-maker/pyproject.toml:^version", "merkle-maker/merkle_maker/__init__.py:^__version", + "lp-pricer/pyproject.toml:^version", + "lp-pricer/merkle_maker/__init__.py:^__version", ] update_changelog_on_bump = true changelog_incremental = true diff --git a/scripts/projects.sh b/scripts/projects.sh index 93f418a5..de3e5b5d 100644 --- a/scripts/projects.sh +++ b/scripts/projects.sh @@ -1,4 +1,4 @@ #!/bin/sh # all python packages, in topological order, meaning it should be in the order of dependencies -PROJECTS='pragma-utils pragma-sdk price-pusher vrf-listener checkpointer merkle-maker' +PROJECTS='pragma-utils pragma-sdk price-pusher vrf-listener checkpointer merkle-maker lp-pricer' diff --git a/vrf-listener/benchmark/devnet/contracts.py b/vrf-listener/benchmark/devnet/contracts.py index 1b3e5468..500b86e4 100644 --- a/vrf-listener/benchmark/devnet/contracts.py +++ b/vrf-listener/benchmark/devnet/contracts.py @@ -18,7 +18,7 @@ def find_repo_root(start_directory: Path) -> Path: CURRENT_FILE_DIRECTORY = Path(__file__).parent REPO_ROOT = find_repo_root(CURRENT_FILE_DIRECTORY).parent SUBMODULE_DIR = REPO_ROOT / "pragma-oracle" -CONTRACTS_COMPILED_DIR = SUBMODULE_DIR / "target/dev" +CONTRACTS_COMPILED_DIR = SUBMODULE_DIR / "pragma-oracle" / "target" / "dev" def read_contract(file_name: str, *, directory: Optional[Path] = None) -> str: diff --git a/vrf-listener/tests/integration/constants.py b/vrf-listener/tests/integration/constants.py index 8afc8f75..7b9255cc 100644 --- a/vrf-listener/tests/integration/constants.py +++ b/vrf-listener/tests/integration/constants.py @@ -22,7 +22,7 @@ def find_repo_root(start_directory: Path) -> Path: SUBMODULE_DIR = repo_root / "pragma-oracle" MOCK_DIR = repo_root / "pragma-sdk/tests/integration" / "mock" -CONTRACTS_COMPILED_DIR = SUBMODULE_DIR / "target/dev" +CONTRACTS_COMPILED_DIR = SUBMODULE_DIR / "pragma-oracle" / "target" / "dev" MOCK_COMPILED_DIR = MOCK_DIR / "compiled_contracts" DEPLOYMENTS_DIR = SUBMODULE_DIR / "deployments"